采用FPGA的高速數(shù)據(jù)采集系統(tǒng)
2.2 高速存儲與讀取在FPGA里的邏輯實現(xiàn)
在第一節(jié)中我們已說到A/D轉(zhuǎn)換器的數(shù)據(jù)率是125M,16BIT,而本設(shè)計中用的HY57V641620的最高時鐘可達(dá)200M,因此完全可以滿足A/D轉(zhuǎn)換器的速率要求。A/D轉(zhuǎn)換器的數(shù)字輸出已經(jīng)被我們直接存儲到了FPGA的內(nèi)部FIFO當(dāng)中,F(xiàn)IFO是一種先進(jìn)先出的存儲器,被讀出的數(shù)據(jù)就不會在FIFO中存在了。因此,這個FIFO在使用的時候,A/D轉(zhuǎn)換器的數(shù)據(jù)一邊以125M的速度往FIFO寫數(shù)據(jù),一邊用一個速度更高的時鐘,150M的速度往外讀數(shù)據(jù),這樣讀的速度大于寫,因為FIFO有滿和空的標(biāo)志,因此我們用空的標(biāo)志來控制讀FIFO的操作,即空的時候就不讀,這樣,在FIFO端,我們可以保證A/D采集的數(shù)據(jù)無丟失的以150M的速度被讀出。我們用這個150M的時鐘來驅(qū)動一個地址計數(shù)器,如圖4所示。
SYS_CLK就是那個150M的時鐘,地址計數(shù)器的位數(shù)就決定了本次存儲的深度,我們把這個地址計數(shù)器的輸出SD_ADA[22..1]直接接到SDRAM控制器的AVALON的地址端,把FIFO讀出的數(shù)據(jù)直接接到AVALON的數(shù)據(jù)端,把WAIT線接到地址計數(shù)器的使能端來控制,忙的時候就不讓地址計數(shù)器計數(shù),當(dāng)?shù)刂酚嫈?shù)器從0計到SDRAM的最高地址的時候,我們就實現(xiàn)了FIF0的數(shù)據(jù)到SDRAM的傳輸,從而最終實現(xiàn)了A/D轉(zhuǎn)換器的結(jié)果到SDRAM的存儲。至此,我們已完成了高速數(shù)據(jù)到SDRAM的存儲。讀取相對與存儲的過程操作比較簡單,用戶想要調(diào)用SDRAM里的數(shù)據(jù),只需要把自己的處理器的總線接到FPGA的引腳上,在內(nèi)部掛載到SDRAM控制器的AVALON讀取端,圖3中的中間部分,按照總線的操作方式即可讀取相應(yīng)地址里的數(shù)據(jù)。
3 結(jié)束語
本文介紹了一種基于高速A/D轉(zhuǎn)換器,F(xiàn)PGA,SDRAM來實現(xiàn)的控制高速數(shù)據(jù)采集的數(shù)字系統(tǒng),詳細(xì)的介紹了各部分的實現(xiàn)方法。該系統(tǒng)具有速度高,存儲容量大等優(yōu)點,能夠適應(yīng)高速數(shù)據(jù)采集的諸多場合。
評論