無(wú)論是7系列FPGA、UltraScale還是UltraScale Plus系列FPGA,都包含Block RAM(BRAM),但只有UltraScale Plus芯片有UltraRAM也就是我們所說(shuō)的URAM。BRAM和URAM都是重要的片上存儲(chǔ)資源,但兩者還是有些顯著的區(qū)別。
容量
BRAM的容量為36Kb,且可當(dāng)作兩個(gè)獨(dú)立的18Kb BRAM使用。對(duì)于一個(gè)36Kb的BRAM,其最能達(dá)到的最大位寬為72bit。
URAM容量為288Kb,一個(gè)URAM深度為4K(4×1024),寬度為72bit。
BRAM 有兩個(gè)時(shí)鐘,在 RAMB36E2 的 Primitive 聲明中就可以看到這兩個(gè)時(shí)鐘 CLKARDCLK 和 CLKBWRCLK 。
URAM 只有一個(gè)時(shí)鐘,在 URAM288 的 Primitive 聲明中可以看到該時(shí)鐘 CLK 。盡管在使用 XPM_MEMORY 實(shí)例化 URAM 時(shí)可以看到 clka 和 clkb ,但這兩個(gè)端口最終都連接到 URAM 的物理端口 CLK 上。
初始值
BRAM 的初始值是可以設(shè)定的,無(wú)論 BRAM 是單端口、簡(jiǎn)單雙端口還是真雙端口都可以通過(guò) COE 文件設(shè)定其初始值。而 URAM 的初始值只能為0,且無(wú)法更改,換言之,其初始值是不可設(shè)定的。這也就意味著 BRAM 可以配置成 ROM 而 URAM 不可以。
工作模式
BRAM 可配置為單端口、簡(jiǎn)單雙端口和真雙端口,但對(duì)于 URAM,不能簡(jiǎn)單地將這三種模式映射過(guò)來(lái),其工作行為如下圖所示??梢钥吹?,A/B端口不是獨(dú)立的,例如,A端口讀而B端口寫同一地址,讀出的是該地址原有數(shù)據(jù);A端口寫而B端口讀同一地址,讀出的是新寫入的數(shù)據(jù)。
圖片來(lái)源:Table 2-6, ug573
實(shí)例化方式
對(duì)于 BRAM,可采用原語(yǔ)、XPM_MEMORY、RTL代碼或者IP Core的方式進(jìn)行實(shí)例化,
但 URAM 目前只支持原語(yǔ)、XPM_MEMORY 和 RTL 代碼的方式。相比而言,XPM_MEMORY 的方式更為快捷,也是Xilinx建議的方式。
級(jí)聯(lián)方式
BRAM和URAM都可級(jí)聯(lián),只是級(jí)聯(lián)方式不同。在使用BRAM時(shí),我們只需要設(shè)定寬度和深度,并根據(jù)時(shí)鐘頻率合理選擇Latency,也就是選擇是否需要使用BRAM自帶的輸出寄存器或Slice中的寄存器。而URAM提供了專門的級(jí)聯(lián)寄存器,同樣需要根據(jù)時(shí)鐘頻率合理選擇Latency,此時(shí)會(huì)影響到級(jí)聯(lián)寄存器的使用。如下圖所示,是4個(gè)URAM的級(jí)聯(lián)情形。
審核編輯 黃昊宇
-
BRAM
+關(guān)注
關(guān)注
0文章
41瀏覽量
10970
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論