一.概述

博主在做双令牌桶的算法模块时,用到了比较大的寄存器,综合的时候实现该寄存器是用的LUT资源和FF触发器,FF触发器板子资源够用,但是LUT资源不够用,所以就想着用BRAM实现这个寄存器块,但是模块中有3组这样的寄存器,只有一组寄存器对时序要求不高,比较宽松的时序要求让我首先对它下手。小记以下遇到的问题。

二.使用及代码

对于没有用BRAM实现的结果。该模块LUT资源使用11000多,FF触发器使用2600多。

模块中用到了这样的寄存器,reg [31:0] counting_drop_red [127:0]。如果想要将这个reg改为BRAM,那么就要编写符合RAM规范的代码并且使用综合命令ram_style="block",如果要使用DRAM也类似。以下是该寄存器对应的BRAM代码。值得一提的是,我一开始引入复位对RAM进行清0操作,可是这是不符合RAM规范的,所以查看综合结果,并没有看到该寄存器综合成BRAM,然后改成初始值{default:0}的形式,才综合成BRAM。

module CountArray_as_RAM(input clk,input ena,input wea,input [4:0]addra,input [31:0]dina,input enb,input [4:0]addrb,// input rst,output reg [31:0]doutb
);  (* ram_style="block" *)reg [31:0] counting_drop_red [31:0] = {default:0};always @(posedge clk)begin //写if (ena)beginif (wea) counting_drop_red[addra] <= dina;end
end                                                                      always @(posedge clk)if (enb) doutb <= counting_drop_red[addrb];  //读endmodule

下图是现在的资源使用量:LUT+FF触发器+BRAM。

        总结:可以看到LUT资源使用明显减少,FF触发器资源明显减少,实现这个寄存器的LUT和FF触发器被BRAM资源代替。

ram_style的使用相关推荐

  1. Vivado 随笔(1) 综合属性之 ram_style rom_style?

    目录 背景 正文 相关文献 背景 在很多情况下,我们会定义一个二维数组来作为RAM或者ROM来使用,例如我们在设计一个异步FIFO时,我们需要例化一个双端口RAM来作为FIFO的存储空间,当然我们可以 ...

  2. FPGA的设计艺术(18)如何使用Verilog中的数组对存储器进行建模?

    前言 Verilog中的二维数组很有用,可以使用for以及generate for配合二维数组进行使用,可以代替大量寄存器的场合,其实大量同类寄存器可以使用存储器进行代替,Verilog中可以使用二维 ...

  3. FPGA之道(66)代码中的约束信息(三)存储器以及寄存器的相关约束

    文章目录 前言 存储器的相关约束 ram_extract ram_style rom_extract rom_style 寄存器的相关约束 前言 这是这个话题的第三篇,最重要的前言是本文节选自:< ...

  4. 关于keep,dont touch和max_fanout的用法建议

    一.概述 关于keep = "true",don't touch = "true",max_fanout等命令,项目中只是去用,并没有去了解怎么正确的使用,在翻 ...

  5. Vivado使用技巧(24):HDL/XDC中设置综合属性

    Vivado综合工具支持直接在RTL文件或XDC文件中设置综合属性.如果Vivado识别出设置的属性,会创建与之相关的逻辑电路:如果不能识别设置的属性,会将该属性和值存放在生成的网表中.因为某些属性, ...

  6. FPGA设计进阶1--XilineFPGA结构(UltraScale)

    Reference:xilinx FPGA权威设计指南 1. UltraScale结构特点 UltraScale结构能从20nm平面的FET结构扩展到16nm鳍式的FET晶体管,甚至更高的技术,同时还 ...

  7. 以Vivado工具为例了解FPGA综合

    Vivado设计流程 使用Vivado进行设计开发的步骤如下: 功能设计:使用HDL语言设计.自带或者第三方的IP.嵌入式处理器等. 综合:在综合时可以加入第三方的网表文件和约束文件. 实现:在Viv ...

  8. Vivado使用:综合篇(三)综合属性

    Vivado 开发套件中,Vivado综合能够综合多种类型的属性,大多数情况下,这些属性的使用语法和行为都一样.当使用综合属性时,假如Vivado能够识别该属性,那么就使用这个属性并创建反映已经使用该 ...

  9. 数字集成电路设计-7-一个简单cpu的设计,实现,仿真与综合

    引言 经过对OpenRISC近一年的分析与研究,在此过程中我们了解了计算机体系结构设计相关的主要概念,重要的技术,和基本思想.我觉的,现在我们有必要练练手了. 本小节,我们将设计一个简单的cpu,包括 ...

最新文章

  1. python真的很厉害吗-python为什么这么牛?Python真有这么好的前景?
  2. Ubuntu上常用快捷键使用
  3. C# 创建网站 无法启动与停止的问题
  4. 三十九、Vue项目上手 | 用户管理系统 实现添加用户功能(中篇)
  5. pack php 详解_函数pack的使用详解
  6. 古人把月球叫做广寒宫,古人是怎么知道月球上很冷的?一起来看看
  7. 国外问答网站Quora数据的爬虫 Java
  8. BroadcastChannel页面间通讯
  9. 那个男人 ,他带着Vue3来了~
  10. python ctp接口_GitHub - keli/ctp-python: 穿透式监管版本CTP接口的Python封装
  11. python接收前端post数据_python实现通过flask和前端进行数据收发
  12. NoteExpress 3.2下载
  13. Geodesic Distance(测地距离)
  14. QTextEdit添加输入提示语
  15. The import com. cannot be resolved
  16. 号码归属地及运营商查询工具
  17. 大漠多账号循环登录任务自动切换模板大漠绑定后台绑定游戏
  18. Pr 入门教程 如何使用超级键效果?
  19. 以太坊(一)——概述
  20. python教程(从入门到巅峰)1

热门文章

  1. 163的汉芯专题忒牛了
  2. bat生成工具(批量 删除文件/复制文件/删除文件夹/重命名文件)
  3. MacBook 百度网盘|百度云 文件下载路径 自定义文件下载地址
  4. Nginx报 No input file specified. 的问题解决之路
  5. [日推荐]『绿豆旅行记账』能帮你省钱的旅行小工具
  6. html网页div框架代码,div层仿网页框架布局特效代码
  7. html复制并弹窗提示已复制,js复制操做,复制成功弹出提示框
  8. redis设置远程链接
  9. 伯恩PAC人格结构理论(转载)
  10. 【C语言】求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积