打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
BRAM资源不够用?不怕!这里有FPGA BRAM省资源小秘招!

FPGA的BRAM和LUT等资源都是有限的,在FPGA开发过程中,可能经常遇到BRAM或者LUT资源不够用的情况。

一般建议BRAM和LUT资源的消耗不要超过80%,当然高端一点的FPGA芯片也可以放宽到90%,超过这个限制,可能就会出现时序违例较严重的情况,导致上板运行出现异常的情况。

今天分享一下BRAM资源使用优化策略,以Vivado的 Block Memory Generator为例 。

1、Distribute BRAM或URAM 替代BRAM

存储深度和宽度较小,且LUT资源或URAM有富裕,可以用“Distribute BRAM”或“URAM”来替代。

这里需要注意使用的FPGA芯片型号,是否带URAM资源。

  • (* ram_style = 'block' *)表示用Block RAM实现

  • (* ram_style = 'reg' *)表示用寄存器实现

  • (* ram_style = 'distributed' *)表示用分布式 RAM实现

  • (* ram_style = 'uram' *)表示用uram实现

这里给出代码示例:

// FPGA 双口 RAM
module dual_port_ram(
input clk,
input [7:0] data_in,
input [5:0] wr_addr,
input wr_en,

input [5:0] rd_addr,
output reg [7:0] data_out
);

// 声明双口 RAM 存储器
(* ram_style = 'block' *)reg [7:0] ram[63:0];

// 时钟上升沿写入
always @(posedge clk) begin
if (wr_en)
ram[wr_addr] <= data_in;
end

// 读取;
always @(posedge clk) begin
data_out <= ram[rd_addr];
end

endmodule

2、双口ROM替代单口ROM

如果工程中,有两个以上的ROM或RAM使用的是相同的数据,可以使用双口替代单口模式,资源消耗是一样的,这样就可以节省一个或多个ROM IP。

这里对比一下“数据宽度为32,存储深度为1024”的单口和双口模式下的资源消耗。

3、合理的数据宽度和深度设置

要想FPGA BRAM资源消耗优化,更关键的是优化FPGA工程的缓存大小设计,计算理论上缓存数据的位宽和最大深度,选择出合适的参数。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
FPGA名词相关Ⅱ
FPGA芯片结构(可编程输入输出单元IOB/可配置逻辑块CLB/数字时钟管理模块DCM/ 嵌入式块RAM(BRAM)/丰富的布线资源/ 底层内嵌功能单元/内嵌专用硬核)
单口RAM、伪双口RAM、双口RAM与FIFO的区别
FPGA时序分析--wns和tns是inf怎么解决
Nios II中使用onchip ram 出现can not place all ram cell in design的问题
一种高阶音频均衡滤波器的设计实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服