手把手教你FPGA存儲(chǔ)器項(xiàng)使用DRAM
某些FPGA終端,包含板載的、可以動(dòng)態(tài)隨機(jī)訪問的存儲(chǔ)塊(DRAM),這些存儲(chǔ)塊可以在FPGA VI中直接訪問,速率非常高。
本文引用地址:http://butianyuan.cn/article/201710/365206.htmDRAM可以用來緩存大批量的數(shù)據(jù),而且速度可以非常快。針對(duì)一些特殊應(yīng)用,比如:瞬時(shí)帶寬非常高,而且有要保存原始數(shù)據(jù)的時(shí)候,就可以用DRAM做一個(gè)大的FIFO緩沖。
DRAM的大小每塊板卡可能不同,一般在官網(wǎng)中對(duì)應(yīng)板卡的說明中都會(huì)標(biāo)明DRAM的大小(如果有DRAM的話)。比如,PXIe-7966R就有512M的DRAM空間。
http://sine.ni.com/nips/cds/view/p/lang/zhs/nid/210272
PXIe-7966R擁有512M的板載內(nèi)存(DDR2)
不同的板卡板載內(nèi)存大小不同,同時(shí)DDR系列也可能不同,7976R擁有高達(dá)2GB的板載緩存,且為DDR3,容量更大且速度更快。
http://sine.ni.com/nips/cds/view/p/lang/zhs/nid/212692
PXIe-7976R擁有2GB的板載內(nèi)存(DDR3)
本文將以PXIe-7966R為例,手把手教大家使用DRAM Bank。
FPGA存儲(chǔ)器項(xiàng)使用DRAM
步驟一:將FPGA終端添加到項(xiàng)目中
配置之前,先將FPGA終端添加到項(xiàng)目中,在FPGA終端的屬性對(duì)話框中選擇“Mode” LabVIEW FPGA Memories,如下圖。
DRAM配置Mode
步驟二:配置為LabVIEW FPGA Memory
在LabVIEW FPGA中Memory的主要特點(diǎn)是可以用來按地址存儲(chǔ)索引數(shù)據(jù),與FIFO的先進(jìn)先出而言,各有自己的適用范圍。
把DRAM配置成Memory之后,可以在FPGA終端上面,“右鍵”創(chuàng)建Memory,并在彈出的對(duì)話框中的“Implementation”中選擇“DRAM”;在DRAM bank中可以選擇是Bank0還是Bank1,對(duì)于7966R而言,每個(gè)Bank有256M。
對(duì)參數(shù)進(jìn)行配置
步驟三:設(shè)置Memory參數(shù)
1)設(shè)置需要的點(diǎn)數(shù)
系統(tǒng)會(huì)依據(jù)設(shè)置的值計(jì)算出一個(gè)實(shí)際分配的元素?cái)?shù)目,同時(shí)可以關(guān)注剩余的DRAM大小有多少。
2)設(shè)置Data type
可以設(shè)置Memory的數(shù)據(jù)類型。數(shù)據(jù)類型可以選擇的各種常用的數(shù)據(jù)類型,同時(shí)也可以設(shè)置為“Customer Control”,特別要注意的是“數(shù)據(jù)的最大位寬”。
Data type參數(shù)設(shè)置
DRAM中每個(gè)訪問單元是獨(dú)立的,設(shè)置的元素個(gè)數(shù)相同,數(shù)據(jù)類型不同的時(shí)候,配置的Memory在DRAM Bank中占用的空間是相同的。所以,為了能夠最大限度的使用DRAM中的空間,可以在這里設(shè)置Customer Control,然后選擇一個(gè)含有兩個(gè)U64元素的簇(2個(gè)U64剛好占用128位帶寬),如下圖所示。
配置DRAM Bank的數(shù)據(jù)類型
步驟四:訪問DRAM
Memory中的數(shù)據(jù)訪問是依據(jù)地址訪問的,具體讀寫方式可以參考幫助文檔。由于Memory中訪問是依據(jù)地址來操作的,因此,在程序中可以將一段地址以“環(huán)形”方式反復(fù)讀寫,這個(gè)也是在緩存數(shù)據(jù)時(shí)候經(jīng)常用到的。比如:在FPGA中實(shí)現(xiàn)“參考觸發(fā)”方式的數(shù)據(jù)采集,就需要緩存一部分?jǐn)?shù)據(jù),并以環(huán)形FIFO的方式進(jìn)行讀寫,保證緩沖區(qū)中的數(shù)據(jù)是最新的一段。
使用DRAM進(jìn)行編程,以下為示例,提供參考:分別是環(huán)形方式寫數(shù)據(jù)到FIFO中和環(huán)形方式讀取FIFO中的數(shù)據(jù)。
讀取DRAM數(shù)據(jù)
向DRAM寫入數(shù)據(jù)
或者也可以在范例查找器中直接搜索,參考范例如下
DRAM Memory使用范例
參考鏈接:
在NIFlexRIO中使用DRAM
http://www.ni.com/white-paper/14571/zhs/
訪問DRAM(FPGA模塊)
http://zone.ni.com/reference/zhs-XX/help/371599N-0118/lvfpgaconcepts/fpg...
高效使用DRAM和NI CompactRIO
http://zone.ni.com/reference/zhs-XX/help/373197K-0118/cserieshelp/dram_u...
評(píng)論