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