ram_style的使用
一.概述
博主在做双令牌桶的算法模块时,用到了比较大的寄存器,综合的时候实现该寄存器是用的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的使用相关推荐
- Vivado 随笔(1) 综合属性之 ram_style rom_style?
目录 背景 正文 相关文献 背景 在很多情况下,我们会定义一个二维数组来作为RAM或者ROM来使用,例如我们在设计一个异步FIFO时,我们需要例化一个双端口RAM来作为FIFO的存储空间,当然我们可以 ...
- FPGA的设计艺术(18)如何使用Verilog中的数组对存储器进行建模?
前言 Verilog中的二维数组很有用,可以使用for以及generate for配合二维数组进行使用,可以代替大量寄存器的场合,其实大量同类寄存器可以使用存储器进行代替,Verilog中可以使用二维 ...
- FPGA之道(66)代码中的约束信息(三)存储器以及寄存器的相关约束
文章目录 前言 存储器的相关约束 ram_extract ram_style rom_extract rom_style 寄存器的相关约束 前言 这是这个话题的第三篇,最重要的前言是本文节选自:< ...
- 关于keep,dont touch和max_fanout的用法建议
一.概述 关于keep = "true",don't touch = "true",max_fanout等命令,项目中只是去用,并没有去了解怎么正确的使用,在翻 ...
- Vivado使用技巧(24):HDL/XDC中设置综合属性
Vivado综合工具支持直接在RTL文件或XDC文件中设置综合属性.如果Vivado识别出设置的属性,会创建与之相关的逻辑电路:如果不能识别设置的属性,会将该属性和值存放在生成的网表中.因为某些属性, ...
- FPGA设计进阶1--XilineFPGA结构(UltraScale)
Reference:xilinx FPGA权威设计指南 1. UltraScale结构特点 UltraScale结构能从20nm平面的FET结构扩展到16nm鳍式的FET晶体管,甚至更高的技术,同时还 ...
- 以Vivado工具为例了解FPGA综合
Vivado设计流程 使用Vivado进行设计开发的步骤如下: 功能设计:使用HDL语言设计.自带或者第三方的IP.嵌入式处理器等. 综合:在综合时可以加入第三方的网表文件和约束文件. 实现:在Viv ...
- Vivado使用:综合篇(三)综合属性
Vivado 开发套件中,Vivado综合能够综合多种类型的属性,大多数情况下,这些属性的使用语法和行为都一样.当使用综合属性时,假如Vivado能够识别该属性,那么就使用这个属性并创建反映已经使用该 ...
- 数字集成电路设计-7-一个简单cpu的设计,实现,仿真与综合
引言 经过对OpenRISC近一年的分析与研究,在此过程中我们了解了计算机体系结构设计相关的主要概念,重要的技术,和基本思想.我觉的,现在我们有必要练练手了. 本小节,我们将设计一个简单的cpu,包括 ...
最新文章
- python真的很厉害吗-python为什么这么牛?Python真有这么好的前景?
- Ubuntu上常用快捷键使用
- C# 创建网站 无法启动与停止的问题
- 三十九、Vue项目上手 | 用户管理系统 实现添加用户功能(中篇)
- pack php 详解_函数pack的使用详解
- 古人把月球叫做广寒宫,古人是怎么知道月球上很冷的?一起来看看
- 国外问答网站Quora数据的爬虫 Java
- BroadcastChannel页面间通讯
- 那个男人 ,他带着Vue3来了~
- python ctp接口_GitHub - keli/ctp-python: 穿透式监管版本CTP接口的Python封装
- python接收前端post数据_python实现通过flask和前端进行数据收发
- NoteExpress 3.2下载
- Geodesic Distance(测地距离)
- QTextEdit添加输入提示语
- The import com. cannot be resolved
- 号码归属地及运营商查询工具
- 大漠多账号循环登录任务自动切换模板大漠绑定后台绑定游戏
- Pr 入门教程 如何使用超级键效果?
- 以太坊(一)——概述
- python教程(从入门到巅峰)1
热门文章
- 163的汉芯专题忒牛了
- bat生成工具(批量 删除文件/复制文件/删除文件夹/重命名文件)
- MacBook 百度网盘|百度云 文件下载路径 自定义文件下载地址
- Nginx报 No input file specified. 的问题解决之路
- [日推荐]『绿豆旅行记账』能帮你省钱的旅行小工具
- html网页div框架代码,div层仿网页框架布局特效代码
- html复制并弹窗提示已复制,js复制操做,复制成功弹出提示框
- redis设置远程链接
- 伯恩PAC人格结构理论(转载)
- 【C语言】求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积