基于FPGA技術(shù)的存儲(chǔ)器設(shè)計(jì)及其應(yīng)用
不同的存儲(chǔ)器根據(jù)各自特點(diǎn),應(yīng)用場(chǎng)合也不盡相同。ROM存儲(chǔ)器主要用來(lái)存儲(chǔ)“常量”,如系統(tǒng)參數(shù)、波形發(fā)生器的信源等。先進(jìn)先出FIFO存儲(chǔ)器可用于信號(hào)的實(shí)時(shí)不間斷采集,存儲(chǔ)、緩沖兩個(gè)異步時(shí)鐘之間的數(shù)據(jù)傳輸?shù)取?/p>
ROM、FIFO等存儲(chǔ)器的調(diào)用庫(kù)函數(shù)構(gòu)造方法與雙端口RAM的構(gòu)造方法類似,在mega-lpm庫(kù)中調(diào)用相應(yīng)的模塊單元即可。其中ROM存儲(chǔ)器在庫(kù)中是LPM_ROM模塊,F(xiàn)IFO存儲(chǔ)器在庫(kù)中有CSFIFO、DCFIFO、LPM_FIFO、LPM__FIFO_DC、SCFIFO、SFIFO共六種。需要說(shuō)明的是由于ROM在實(shí)際系統(tǒng)運(yùn)行時(shí)的不可寫入性,在ROM構(gòu)造過(guò)程中要對(duì)ROM存儲(chǔ)器進(jìn)行數(shù)據(jù)初始化。這一操作是通過(guò)設(shè)置PLM_FILE項(xiàng)完成的。在引腳/參數(shù)設(shè)置窗口的Parameters參數(shù)設(shè)置處選擇該項(xiàng),再通過(guò)ParameterValue項(xiàng)確定相應(yīng)的數(shù)據(jù)初始化文件(*.mif)即可。下面是VHDL格式的ROM數(shù)據(jù)初始化文件(文件可用任何文本編輯器實(shí)現(xiàn)):
雙端口RAM在高速數(shù)據(jù)采集中的應(yīng)用
利用傳統(tǒng)方法設(shè)計(jì)的高速數(shù)據(jù)采集系統(tǒng)由于集成度低、電路復(fù)雜,高速運(yùn)行電路干擾大,電路可靠性低,難以滿足高速數(shù)據(jù)采集工作的要求。應(yīng)用FPGA可以把數(shù)據(jù)采集電路中的數(shù)據(jù)緩存、控制時(shí)序邏輯、地址譯碼、總線接口等電路全部集成進(jìn)一片芯片中,高集成性增強(qiáng)了系統(tǒng)的穩(wěn)定性,為高速數(shù)據(jù)采集提供了理想的解決方案。下面以一個(gè)高速數(shù)據(jù)采集系統(tǒng)為例介紹雙端口RAM的應(yīng)用。
該系統(tǒng)要求實(shí)現(xiàn)對(duì)頻率為5MHz的信號(hào)進(jìn)行采樣,系統(tǒng)的計(jì)算處理需要對(duì)信號(hào)進(jìn)行波形分析,信號(hào)采樣時(shí)間為25μs。根據(jù)設(shè)計(jì)要求,為保證采樣波形不失真,A/D采樣頻率用80MHz,采樣精度為8位數(shù)據(jù)寬度。計(jì)算得出存儲(chǔ)容量需要2K字節(jié)。
根據(jù)設(shè)計(jì)要求,雙端口RAM的LPM_WIDTH參數(shù)設(shè)置為8,LPM_WIDTHAD參數(shù)設(shè)置為11(211=2048),使用讀寫使能端及讀寫時(shí)鐘。ADCLK、WRCLK和地址發(fā)生器的計(jì)數(shù)頻率為80MHz。
A/D轉(zhuǎn)換值對(duì)雙端口RAM的寫時(shí)序?yàn)轫樞驅(qū)懛绞?,每完成一次A/D轉(zhuǎn)換,存儲(chǔ)一次數(shù)據(jù),地址加1指向下一單元,因此寫地址發(fā)生器(RAM_CONTROL)采用遞增計(jì)數(shù)器實(shí)現(xiàn),計(jì)數(shù)頻率與ADCLK、WRCLK一致以保證數(shù)據(jù)寫入時(shí)序的正確性。寫操作時(shí)序由地址和時(shí)鐘發(fā)生器、A/D轉(zhuǎn)換時(shí)鐘和雙端口RAM的寫時(shí)鐘產(chǎn)生。停止采樣時(shí)AD_STOP有效,寫地址發(fā)生器停止計(jì)數(shù),同時(shí)停止對(duì)RAM的寫操作。將地址發(fā)生器的計(jì)數(shù)值接至DSP總線可以獲取采樣的首尾指針。地址發(fā)生器單元一般用(VHDL)語(yǔ)言編程實(shí)現(xiàn),然后生成符號(hào)文件RAM_CONTROL在上層文件調(diào)用。其部分VHDL語(yǔ)言程序如下:
對(duì)雙端口RAM的讀操作采用存儲(chǔ)器映像方式,其讀出端口接DSP的外擴(kuò)RAM總線,DSP可隨機(jī)讀取雙端口RAM的任一單元數(shù)據(jù),以方便波形分析。 由于LPM_RAM_DP模塊的讀端數(shù)據(jù)總線q不具有三態(tài)特性,因此調(diào)用三態(tài)緩沖器74244,通過(guò)其將輸出數(shù)據(jù)連接到DSP數(shù)據(jù)總線上。
在高速數(shù)據(jù)采集電路中,數(shù)據(jù)緩存也可以用FIFO或單端口RAM實(shí)現(xiàn)。用FIFO進(jìn)行數(shù)據(jù)緩存,由于其已經(jīng)把地址發(fā)生部分集成在模塊單元內(nèi),因此省去了一部分程序編寫,但是DSP卻不能任意地訪問(wèn)FIFO的存儲(chǔ)單元,只能是順序?qū)懭耄x出數(shù)據(jù),這樣設(shè)計(jì),系統(tǒng)的靈活性就大大降低。如果DSP的分析計(jì)算需要特定單元的數(shù)據(jù),則系統(tǒng)的效率和速度會(huì)因?yàn)闊o(wú)效數(shù)據(jù)的讀取而降低。使用單端口RAM進(jìn)行數(shù)據(jù)緩存同樣存在一些問(wèn)題。由RAM側(cè)看,DSP和A/D轉(zhuǎn)換器是掛在一條總線上的,當(dāng)從RAM向DSP傳輸數(shù)據(jù)的時(shí)候,A/D轉(zhuǎn)換器就不能有數(shù)據(jù)傳到該總線上,否則會(huì)產(chǎn)生總線沖突,引起芯片損壞。解決這個(gè)問(wèn)題就需要增加電路。應(yīng)用雙端口RAM就不存在這個(gè)問(wèn)題,而且使系統(tǒng)結(jié)構(gòu)劃分更明確,符合模塊化設(shè)計(jì)思想。
結(jié)語(yǔ)
綜上所述,利用FPGA芯片的高速工作特性,以及其內(nèi)部集成嵌入式陣列和大規(guī)模邏輯陣列的特點(diǎn),設(shè)計(jì)存儲(chǔ)器,三態(tài)緩存器、地址發(fā)生器、以及復(fù)雜的時(shí)序邏輯電路等,應(yīng)用于高速數(shù)據(jù)采集電路中可以使電路大大簡(jiǎn)化,性能提高。同時(shí)由于FPGA可實(shí)現(xiàn)在系統(tǒng)編程(ISP),使系統(tǒng)具有可在線更新、升級(jí)容易等特點(diǎn),是一種較為理想的系統(tǒng)及電路實(shí)現(xiàn)方法。
評(píng)論