0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA的BRAM資源使用優(yōu)化策略

CHANBAEK ? 來(lái)源:FPGA入門到精通 ? 作者:未可知摩爾 ? 2023-08-30 16:12 ? 次閱讀

FPGA的BRAM和LUT等資源都是有限的,在FPGA開發(fā)過(guò)程中,可能經(jīng)常遇到BRAM或者LUT資源不夠用的情況。

一般建議BRAM和LUT資源的消耗不要超過(guò)80%,當(dāng)然高端一點(diǎn)的FPGA芯片也可以放寬到90%,超過(guò)這個(gè)限制,可能就會(huì)出現(xiàn)時(shí)序違例較嚴(yán)重的情況,導(dǎo)致上板運(yùn)行出現(xiàn)異常的情況。

今天分享一下BRAM資源使用優(yōu)化策略,以Vivado的 Block Memory Generator為例 。

1、Distribute BRAM或URAM 替代BRAM

存儲(chǔ)深度和寬度較小,且LUT資源或URAM有富裕,可以用“Distribute BRAM”或“URAM”來(lái)替代。

這里需要注意使用的FPGA芯片型號(hào),是否帶URAM資源。

  • (* ram_style = "block" *)表示用Block RAM實(shí)現(xiàn)
  • (* ram_style = "reg" *)表示用寄存器實(shí)現(xiàn)
  • (* ram_style = "distributed" *)表示用分布式 RAM實(shí)現(xiàn)
  • (* ram_style = "uram" *)表示用uram實(shí)現(xiàn)

這里給出代碼示例:

// 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 存儲(chǔ)器  
(* ram_style = "block" *)reg [7:0] ram[63:0];  

// 時(shí)鐘上升沿寫入  
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

如果工程中,有兩個(gè)以上的ROM或RAM使用的是相同的數(shù)據(jù),可以使用雙口替代單口模式,資源消耗是一樣的,這樣就可以節(jié)省一個(gè)或多個(gè)ROM IP。

這里對(duì)比一下“數(shù)據(jù)寬度為32,存儲(chǔ)深度為1024”的單口和雙口模式下的資源消耗。

圖片

圖片

3、合理的數(shù)據(jù)寬度和深度設(shè)置

要想FPGA BRAM資源消耗優(yōu)化,更關(guān)鍵的是優(yōu)化FPGA工程的緩存大小設(shè)計(jì),計(jì)算理論上緩存數(shù)據(jù)的位寬和最大深度,選擇出合適的參數(shù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598921
  • 芯片
    +關(guān)注

    關(guān)注

    450

    文章

    49636

    瀏覽量

    417162
  • ROM
    ROM
    +關(guān)注

    關(guān)注

    4

    文章

    539

    瀏覽量

    85433
  • 資源
    +關(guān)注

    關(guān)注

    0

    文章

    59

    瀏覽量

    17732
  • BRAM
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    10914
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA ZYNQ Ultrascale+ MPSOC教程】33.BRAM實(shí)現(xiàn)PS與PL交互

    有時(shí)CPU需要與PL進(jìn)行小批量的數(shù)據(jù)交換,可以通過(guò)BRAM模塊,也就是Block RAM實(shí)現(xiàn)此要求。本章通過(guò)Zynq的GP Master接口讀寫PL端的BRAM,實(shí)現(xiàn)與PL的交互。在本實(shí)驗(yàn)中加入了自定義的FPGA程序,并利用AX
    的頭像 發(fā)表于 02-22 13:51 ?7951次閱讀
    【<b class='flag-5'>FPGA</b> ZYNQ Ultrascale+ MPSOC教程】33.<b class='flag-5'>BRAM</b>實(shí)現(xiàn)PS與PL交互

    FPGA設(shè)計(jì)中BRAM的知識(shí)科普

    FPGA設(shè)計(jì)中,BRAM是一項(xiàng)非常關(guān)鍵的內(nèi)置存儲(chǔ)資源,FPGA開發(fā)需要熟練使用BRAM,今天再?gòu)?fù)習(xí)一下B
    發(fā)表于 08-15 15:44 ?4224次閱讀
    <b class='flag-5'>FPGA</b>設(shè)計(jì)中<b class='flag-5'>BRAM</b>的知識(shí)科普

    FPGA資源優(yōu)化方法

    各位大神,小弟最近在做一個(gè)項(xiàng)目,由于之前選用的FPGA資源不夠,現(xiàn)在需要將程序的資源占用率降下來(lái)。經(jīng)過(guò)我的冥思苦想,也找不到好的方法,不知道各位大神平時(shí)工作中降低資源利用率的方法有哪些
    發(fā)表于 04-04 00:32

    【InTime試用體驗(yàn)】使用簡(jiǎn)易、策略選擇精確度高的一款時(shí)序優(yōu)化軟件

    解決FPGA時(shí)序優(yōu)化問(wèn)題的軟件。InTime 內(nèi)嵌學(xué)習(xí)引擎,可以智能分析FPGA設(shè)計(jì),為綜合和布局布線提供更優(yōu)的策略組合。同時(shí),根據(jù)對(duì)器件、設(shè)計(jì)和工具特點(diǎn)的了解,以及獨(dú)有的算法,InT
    發(fā)表于 07-05 11:00

    URAM和BRAM的區(qū)別是什么

      無(wú)論是7系列FPGA、UltraScale還是UltraScale Plus系列FPGA,都包含Block RAM(BRAM),但只有UltraScale Plus芯片有UltraRAM也就
    發(fā)表于 12-23 16:57

    FPGA設(shè)計(jì)應(yīng)用及優(yōu)化策略有哪些?

    EDA技術(shù)具有什么特征?FPGA是什么原理?FPGA設(shè)計(jì)應(yīng)用及優(yōu)化策略基于VHDL的FPGA系統(tǒng)行為級(jí)設(shè)計(jì)
    發(fā)表于 04-15 06:33

    FPGA實(shí)現(xiàn)基于Vivado的BRAM IP核的使用

    的使用。 ? ? BRAMFPGA定制的RAM資源,有著較大的存儲(chǔ)空間,且在日常的工程中使用較為頻繁。BRAM以陣列的方式排布于FPGA
    的頭像 發(fā)表于 12-29 15:59 ?1.1w次閱讀

    使用FPGA調(diào)用RAM資源的詳細(xì)說(shuō)明

    FPGA可以調(diào)用分布式RAM和塊RAM兩種RAM,當(dāng)我們編寫verilog代碼的時(shí)候如果合理的編寫就可以使我們想要的RAM被綜合成BRAM(Block RAM)或者DRAM(Distributed
    發(fā)表于 12-30 16:27 ?9次下載

    FPGA布局及資源優(yōu)化

    DDR3。 2.FPGA架構(gòu)設(shè)計(jì)問(wèn)題 我們知道,FPGA片上分布著各種資源,如時(shí)鐘,serdes,RAM,LUT,IO等。在進(jìn)行FPGA規(guī)劃時(shí)候,應(yīng)當(dāng)需要知道項(xiàng)目設(shè)計(jì)需求,以及需求各
    的頭像 發(fā)表于 01-07 10:15 ?5015次閱讀
    <b class='flag-5'>FPGA</b>布局及<b class='flag-5'>資源</b><b class='flag-5'>優(yōu)化</b>

    時(shí)序分析的優(yōu)化策略詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA的時(shí)序分析的優(yōu)化策略詳細(xì)說(shuō)明。
    發(fā)表于 01-14 16:03 ?17次下載
    時(shí)序分析的<b class='flag-5'>優(yōu)化</b><b class='flag-5'>策略</b>詳細(xì)說(shuō)明

    時(shí)序分析的優(yōu)化策略詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA的時(shí)序分析的優(yōu)化策略詳細(xì)說(shuō)明。
    發(fā)表于 01-14 16:03 ?19次下載
    時(shí)序分析的<b class='flag-5'>優(yōu)化</b><b class='flag-5'>策略</b>詳細(xì)說(shuō)明

    URAM和BRAM有哪些區(qū)別

    無(wú)論是7系列FPGA、UltraScale還是UltraScale Plus系列FPGA,都包含Block RAM(BRAM),但只有UltraScale Plus芯片有UltraRAM也就是我們所說(shuō)的URAM。
    的頭像 發(fā)表于 07-25 17:54 ?5500次閱讀
    URAM和<b class='flag-5'>BRAM</b>有哪些區(qū)別

    URAM和BRAM有什么區(qū)別

    無(wú)論是7系列FPGA、UltraScale還是UltraScale Plus系列FPGA,都包含Block RAM(BRAM),但只有UltraScale Plus芯片有UltraRAM也就是我們所說(shuō)的URAM。
    發(fā)表于 01-27 06:55 ?12次下載
    URAM和<b class='flag-5'>BRAM</b>有什么區(qū)別

    FPGA實(shí)現(xiàn)基于Vivado的BRAM IP核的使用

    定制的RAM資源,有著較大的存儲(chǔ)空間,且在日常的工程中使用較為頻繁。BRAM以陣列的方式排布于FPGA的內(nèi)部,是FPGA實(shí)現(xiàn)各種存儲(chǔ)功能的主要部分,是真正的雙讀/寫端口的同步的RAM。
    的頭像 發(fā)表于 12-05 15:05 ?1257次閱讀

    基于FPGA設(shè)計(jì)的BRAM內(nèi)部結(jié)構(gòu)

    再看末級(jí)觸發(fā)器對(duì)BRAM時(shí)序性能的影響,下圖依次展示了7系列FPGA、UltraScale+和Versal芯片在未使用和使用末級(jí)觸發(fā)器兩種情形下時(shí)鐘到輸出的延遲。
    發(fā)表于 04-25 10:42 ?297次閱讀
    基于<b class='flag-5'>FPGA</b>設(shè)計(jì)的<b class='flag-5'>BRAM</b>內(nèi)部結(jié)構(gòu)