Vivado综合生成BRAM及与LUTRAM的区别

这篇具有很好参考价值的文章主要介绍了Vivado综合生成BRAM及与LUTRAM的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 使用vivado中的BRAM可以通过例化Block Memory Generator这一ip并进行相关的设定。

  • 另外可以通过直接编写符合BRAM规范的代码,借助综合工具直接将其综合为BRAM。这时需要通过(*ram_style="block"*)array进行修饰。

  • 下面给出一种看似可以综合为BRAM的示例。

module LUTRAM #( parameter ADDR_WIDTH = 32,
                 parameter DATA_WIDTH = 32,
                 parameter DEPTH = 1024)
                (
                input logic clk,
                input logic rst_n,
                //read port
                input logic re,
                input logic [ADDR_WIDTH-1:0] rd_addr,
                output logic [DATA_WIDTH-1:0] rd_data,
                //write port
                input logic we,
                input logic [ADDR_WIDTH-1:0] wr_addr,
                input logic [DATA_WIDTH-1:0] wr_data
                );

    (*ram_style="block"*)logic [DATA_WIDTH-1:0] bram [0:DEPTH-1];
    //read
    always_ff@(posedge clk, negedge rst_n)
    begin
        if(!rst_n)
            rd_data <= 0;
        else if(re)
            rd_data <= bram[rd_addr];
        else
            rd_data <= 0;
    end
    //write
    always_ff @(posedge clk)
    begin
        if(we)
            bram[wr_addr]<=wr_data;
    end
endmodule
  • 上述代码虽然用(*ram_style="block"*)array进行了修饰,再综合时却没有消耗BRAM资源,而是消耗了LUTRAM资源。
    lutram和bram区别,FPGA,Vivado,FPGA

  • 查看Vivado的官方手册ug901可知,对于Distributed RAM(LUTRAM)和Dedicated Block RAM(BRAM),二者都是写同步的。主要区别在于读数据,前者为异步,后者为同步的。
    lutram和bram区别,FPGA,Vivado,FPGA

  • 到这里也就清楚了为什么上方的代码会被工具综合为LUTRAM,最小的改动只需将negedge rst_n去掉即可。
    ※ 区别于(*ram_style="block"*),若要生成LUTRAM,相应的修饰应为(* ram_style="distributed" *)

  • 最后贴出官方手册中给出的简易双端口BRAM的一种示例代码
    lutram和bram区别,FPGA,Vivado,FPGA文章来源地址https://www.toymoban.com/news/detail-557940.html

到了这里,关于Vivado综合生成BRAM及与LUTRAM的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA | BRAM和DRAM

    Block ram 由一定数量固定大小的存储块构成的,使用 BLOCK RAM 资源不占用额外的逻辑资源,并且速度快。 但是 使用的时候消耗的 BLOCK RAM 资源是其块大小的整数倍 。如 Xilinx公司的结构中每个 BRAM 有 36Kbit 的容量,既可以作为一个 36Kbit 的存储器使用,也可以拆分为两个独立的

    2024年02月12日
    浏览(44)
  • FPGA — BRAM学习笔记—读写操作

    使用软件: Vivado 开发板: EGO1采用Xilinx Artix-7系列XC7A35T-1CSG324C FPGA BRAM 即块 RAM, 是 FPGA 的固有硬件资源。 另一种形式的 RAM 是分布RAM(Distribution RAM), 是由 FPGA 逻辑资源查找表 LUT 拼起来的 。这两种 RAM 最本质的区别是 块RAM 默认输入有寄存器 ,所以它在读、写使能信号后的 下个

    2024年02月01日
    浏览(71)
  • VIM 编辑器: Bram Moolenaar

        VIM 用了很长时间, 个人的 VIM 配置文件差不多10年没有更新了。以前写程序的时候, 编辑都用这个。 linux kernel, boost规模的代码都不在话下。现在虽然代码写的少了,依然是我打开文件的首选。     现在用手机了,配个蓝牙键盘就可以随时随地撸代码。     纪念下

    2024年02月13日
    浏览(34)
  • PS和PL使用BRAM进行数据交互

    BRAM(Block RAM)是 PL 部分的存储器阵列,PS 和 PL 通过对 BRAM 进行读写操作,来实现数据的交互。在 PL 中,通过输出时钟、地址、读写控制等信号来对 BRAM 进行读写操作。而在 PS 中,处理器并不需要直接驱动 BRAM 的端口,而是通过 AXI BRAM 控制器来对 BRAM 进行读写操作。AXI BR

    2024年02月02日
    浏览(38)
  • 【FPGA/数字IC】Multiport RAM,多读多写寄存器-——基于FPGA BRAM的多端口地址查找表与FPGA BRAM的资源分析

    目录 背景 手写Multiport Ram Multiport RAM 代码方案 资源评估 Multiport RAM 资源利用的优化 资源评估 防止读写冲突的组合逻辑设计(写优先) 仿真和时序 单口写数据 单端口读数据 多口读相同数据 多口同时读不同数据 背景         在多端口交换机的设计中,交换机的每个端口

    2024年04月26日
    浏览(44)
  • [FPGA IP系列] 2分钟了解FPGA中的BRAM

    FPGA设计中,BRAM是一项非常关键的内置存储资源,FPGA开发需要熟练使用BRAM,今天再复习一下BRAM的知识,包括BRAM的定义、组成、应用等等。 RAM是Random Access Memory,也就是随机访问数据存储器,RAM的内部是一个一个小内存单元(可以看成是一个小格子)组成。 每个内存单元都对应

    2024年02月12日
    浏览(49)
  • [FPGA IP系列] BRAM IP参数配置与使用示例

    FPGA开发中使用频率非常高的两个IP就是FIFO和BRAM,上一篇文章中已经详细介绍了Vivado FIFO IP,今天我们来聊一聊BRAM IP。 本文将详细介绍Vivado中BRAM IP的配置方式和使用技巧。 1、打开BRAM IP核 在Vivado的IP Catalog中找到Block Memory Generator IP核,双击打开参数配置界面。 2、配置BRAM I

    2024年02月04日
    浏览(46)
  • FPGA原理与结构(8)——块RAM(Block RAM,BRAM)

    系列文章目录:FPGA原理与结构(0)——目录与传送门         大家对于RAM应该并不陌生,RAM就是一张可读可写的存储表,它经常被拿来与ROM进行对比,相比之下,ROM只可读。而在FPGA中,RAM一般可以分成两种,一种是使用LUT资源组成的分布式RAM(DRAM),另一种就是块RAM(B

    2024年02月08日
    浏览(37)
  • 【FPGA】AXI4-Lite总线读写BRAM

    AXI协议基础知识 。这篇博客比较详细地介绍了AXI总线,并且罗列了所有的通道和端口,写代码的时候可以方便地进行查表。 AXI总线,AXI_BRAM读写仿真测试 。 这篇文章为代码的书写提供大致的思路,比如状态机和时序的控制问题,可以参考。 双向握手机制的实质是: 数据接

    2024年02月15日
    浏览(74)
  • ZYNQ学习笔记(四):PL与PS数据交互——基于BRAM IP 核的(PS端读写+PL端读)控制实验

    说起PS、PL数据交互,常见的有IO方式:MIO EMIO GPIO,还有利用BRAM或FIFO等,在上一篇文章ZYNQ学习笔记(三):PL与PS数据交互—— UART串口+AXI GPIO控制DDS IP核输出实验咱们学会了如何利用AXI GPIO IP核来实现PS(写)与PL(读)的数据交互,那么这篇文章来学习如何使用BRAM~ 本次实验

    2024年02月05日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包