0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA的BRAM资源使用优化策略

CHANBAEK 来源:FPGA入门到精通 作者:未可知摩尔 2023-08-30 16:12 次阅读

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工程的缓存大小设计,计算理论上缓存数据的位宽和最大深度,选择出合适的参数

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21324

    浏览量

    593214
  • 芯片
    +关注

    关注

    447

    文章

    47796

    浏览量

    409161
  • ROM
    ROM
    +关注

    关注

    4

    文章

    525

    浏览量

    84817
  • 资源
    +关注

    关注

    0

    文章

    58

    浏览量

    17527
  • BRAM
    +关注

    关注

    0

    文章

    40

    浏览量

    10885
收藏 人收藏

    评论

    相关推荐

    FPGA设计中BRAM的知识科普

    FPGA设计中,BRAM是一项非常关键的内置存储资源FPGA开发需要熟练使用BRAM,今天再复习一下B
    发表于 08-15 15:44 2341次阅读
    <b class='flag-5'>FPGA</b>设计中<b class='flag-5'>BRAM</b>的知识科普

    浅析FPGA的功耗问题

    的负载。2)资源使用效率优化资源使用效率优化是介绍一些在使用FPGA内部的一些资源
    发表于 08-21 15:31

    FPGA资源优化方法

    各位大神,小弟最近在做一个项目,由于之前选用的FPGA资源不够,现在需要将程序的资源占用率降下来。经过我的冥思苦想,也找不到好的方法,不知道各位大神平时工作中降低资源利用率的方法有哪些
    发表于 04-04 00:32

    【InTime试用体验】使用简易、策略选择精确度高的一款时序优化软件

    解决FPGA时序优化问题的软件。InTime 内嵌学习引擎,可以智能分析FPGA设计,为综合和布局布线提供更优的策略组合。同时,根据对器件、设计和工具特点的了解,以及独有的算法,InT
    发表于 07-05 11:00

    怎么从Virtex 6的FPGA中取出BRAM转储

    大家好请任何人告诉我。是否有任何方法可以从Virtex 6的FPGA中取出BRAM转储。提前致谢问候Vir_1602以上来自于谷歌翻译以下为原文Hi all would anyone please
    发表于 03-20 15:37

    如何正确使用FPGA的时钟资源

     把握DCM、PLL、PMCD和MMCM知识是稳健可靠的时钟设计策略的基础。赛灵思在其FPGA中提供了丰富的时钟资源,大多数设计人员在他们的FPGA设计中或多或少都会用到。不过对
    发表于 09-18 08:26

    URAM和BRAM的区别是什么

      无论是7系列FPGA、UltraScale还是UltraScale Plus系列FPGA,都包含Block RAM(BRAM),但只有UltraScale Plus芯片有UltraRAM也就
    发表于 12-23 16:57

    FPGA设计应用及优化策略有哪些?

    EDA技术具有什么特征?FPGA是什么原理?FPGA设计应用及优化策略基于VHDL的FPGA系统行为级设计
    发表于 04-15 06:33

    基于FPGA的机载显示系统架构

    本文设计一种基于FPGA的机载显示系统架构,能够实现2D图形绘制,构成各种飞行参数画面,同时叠加外景视频图像。BRAM资源占用方面,视频旋转算法需要279个36Kb的BRAM;DDR3
    发表于 11-18 03:03 1775次阅读

    FPGA实现基于Vivado的BRAM IP核的使用

    核的使用。     BRAMFPGA定制的RAM资源,有着较大的存储空间,且在日常的工程中使用较为频繁。BRAM以阵列的方式排布于FPGA
    的头像 发表于 12-29 15:59 9834次阅读

    URAM和BRAM有哪些区别

    无论是7系列FPGA、UltraScale还是UltraScale Plus系列FPGA,都包含Block RAM(BRAM),但只有UltraScale Plus芯片有UltraRAM也就是我们所说的URAM。
    的头像 发表于 07-25 17:54 4688次阅读
    URAM和<b class='flag-5'>BRAM</b>有哪些区别

    URAM和BRAM有什么区别

    无论是7系列FPGA、UltraScale还是UltraScale Plus系列FPGA,都包含Block RAM(BRAM),但只有UltraScale Plus芯片有UltraRAM也就是我们所说的URAM。
    发表于 01-27 06:55 12次下载
    URAM和<b class='flag-5'>BRAM</b>有什么区别

    Vivado中BRAM IP的配置方式和使用技巧

    FPGA开发中使用频率非常高的两个IP就是FIFO和BRAM,上一篇文章中已经详细介绍了Vivado FIFO IP,今天我们来聊一聊BRAM IP。
    的头像 发表于 08-29 16:41 3002次阅读
    Vivado中<b class='flag-5'>BRAM</b> IP的配置方式和使用技巧

    FPGA实现基于Vivado的BRAM IP核的使用

    定制的RAM资源,有着较大的存储空间,且在日常的工程中使用较为频繁。BRAM以阵列的方式排布于FPGA的内部,是FPGA实现各种存储功能的主要部分,是真正的双读/写端口的同步的RAM。
    的头像 发表于 12-05 15:05 518次阅读

    基于FPGA设计的BRAM内部结构

    再看末级触发器对BRAM时序性能的影响,下图依次展示了7系列FPGA、UltraScale+和Versal芯片在未使用和使用末级触发器两种情形下时钟到输出的延迟。
    发表于 04-25 10:42 45次阅读
    基于<b class='flag-5'>FPGA</b>设计的<b class='flag-5'>BRAM</b>内部结构