采用FPGA的高速數(shù)據(jù)采集系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
隨著科學(xué)技術(shù)的發(fā)展,數(shù)據(jù)采集技術(shù)進(jìn)入到越來(lái)越多的領(lǐng)域。目前,已廣泛應(yīng)用于通信,圖像處理,軍事應(yīng)用,消費(fèi)電子,智能控制等方面。傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)一般都是采用單片機(jī)作為處理器,控制A/D轉(zhuǎn)換器,存儲(chǔ)器及其他外圍電路的工作。這種方式的優(yōu)點(diǎn)是系統(tǒng)的工作基本都是用單片機(jī)來(lái)完成,實(shí)現(xiàn)起來(lái)較為方便,只需對(duì)處理器進(jìn)行編程即可。但隨著數(shù)據(jù)采集進(jìn)入的領(lǐng)域越來(lái)越復(fù)雜,對(duì)數(shù)據(jù)采集的速度和深度都有了更高的要求。傳統(tǒng)的單片機(jī)由于時(shí)鐘頻率較低,外設(shè)速度慢等缺點(diǎn)已經(jīng)大大的限制了數(shù)據(jù)采集的速度和性能。而FPGA與單片機(jī)相比,有著頻率高,內(nèi)部延時(shí)小,內(nèi)部存儲(chǔ)容量大等優(yōu)點(diǎn),比單片機(jī)更適應(yīng)與高速數(shù)據(jù)采集的場(chǎng)合。因此,本文介紹了一種基于FPGA來(lái)實(shí)現(xiàn)高速數(shù)據(jù)采集的方法,A/D轉(zhuǎn)換器使用AD公司的AD9481,F(xiàn)PGA使用ALTERA公司的EP2C5Q208,存儲(chǔ)器使用HYNIX公司的HY57V641620。系統(tǒng)框圖如圖1所示。
l 高速A/D與FPGA接口的實(shí)現(xiàn)
本文采用的AD轉(zhuǎn)換器是ADI公司的AD9481,AD9481是一款典型的高速AD轉(zhuǎn)換器,其高達(dá)250MSPS的采樣率,適用于高速數(shù)據(jù)采集的場(chǎng)合。因?yàn)锳D9481需要250M的基于PECL標(biāo)準(zhǔn)的差分時(shí)鐘才能工作在250MSPS,因此本設(shè)計(jì)采用摩托羅拉公司的MCl00LVEL16這一時(shí)鐘芯片來(lái)提供250M的差分時(shí)鐘,它只需要輸入單端CMOS電平的250M時(shí)鐘便可以輸出符合AD9481要求的250M差分時(shí)鐘。單端時(shí)鐘由FPGA的鎖相環(huán)對(duì)有源晶振輸入的時(shí)鐘進(jìn)行倍頻輸出。但是這么高的時(shí)鐘在線路板中是一個(gè)潛在的威脅,它既容易干擾其他器件,又容易被其他器件干擾。AD9481的數(shù)字輸出屬于并行接口,2個(gè)250MSPS,8位數(shù)據(jù)輸出組合形成125MSPS,16位的數(shù)據(jù)流,如此高速的數(shù)據(jù)傳輸與存儲(chǔ)容易使數(shù)字系統(tǒng)中出現(xiàn)競(jìng)爭(zhēng)冒險(xiǎn)和亞穩(wěn)態(tài),因此首先在AD的數(shù)據(jù)輸出引腳和FPGA的輸入引腳之間串聯(lián)100歐姆的電阻,用來(lái)削弱高速數(shù)據(jù)線在O,1之間變換產(chǎn)生的毛刺和數(shù)據(jù)線之間的干擾。其次,在FPGA內(nèi)部對(duì)AD的數(shù)據(jù)線和鎖存時(shí)鐘的使用應(yīng)嚴(yán)格按照器件手冊(cè)上的建立時(shí)間和保持時(shí)間來(lái)設(shè)計(jì),否則容易產(chǎn)生亞穩(wěn)態(tài)。
該設(shè)計(jì)選用的FPGA是EP2C5Q208,它是ALTERA公司的CYCLONE2系列的一款低成本FPGA,適用于中小型設(shè)計(jì)。擁有多達(dá)4608的邏輯單元,119808 bit的內(nèi)部RAM,支持ALTERA公司的SOPC,NIOSII,本設(shè)計(jì)通過(guò)EP2C5Q208的內(nèi)部RAM來(lái)做AD高速數(shù)據(jù)傳輸?shù)木彌_,AD過(guò)來(lái)的高速數(shù)據(jù)通過(guò)鎖存時(shí)鐘完成對(duì)FIF0的寫操作。如圖2所示,AD_DB[15..O]是AD的數(shù)據(jù)線,ADB_DCOB是AD的鎖存時(shí)鐘。
2 高速大容量存儲(chǔ)的實(shí)現(xiàn)
2.1 FPGA與高速存儲(chǔ)器接口的實(shí)現(xiàn)
高速數(shù)據(jù)采集一般都需要大容量的存儲(chǔ),從而更能完整的記錄所需要的數(shù)據(jù),捕捉突發(fā)信號(hào)的能力也更強(qiáng)。傳統(tǒng)的數(shù)據(jù)采集由于速度低,容量小,一般都采用SRAM,SRAM的特點(diǎn)是控制相對(duì)簡(jiǎn)單。但隨著高速數(shù)據(jù)采集的發(fā)展,SRAM無(wú)論在速度上還是容量上都越來(lái)越無(wú)法滿足人們的需要。SDRAM由于具有速度高,存儲(chǔ)容量大,價(jià)格便宜等優(yōu)點(diǎn),越來(lái)越多的被應(yīng)用于高速數(shù)據(jù)采集的場(chǎng)合。SDRAM即同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器。同步指的是時(shí)鐘頻率與系統(tǒng)時(shí)鐘頻率相同并且內(nèi)部的命令的發(fā)送與傳輸都以它為基準(zhǔn);動(dòng)態(tài)是指存儲(chǔ)陣列需要不斷的刷新來(lái)保證數(shù)據(jù)的不丟失;隨機(jī)是指數(shù)據(jù)不是線性依次的存儲(chǔ),而是指定地址進(jìn)行數(shù)據(jù)的讀寫。由此可見SDRAM的速度能達(dá)到很高,但SDRAM的缺點(diǎn)是控制起來(lái)相對(duì)麻煩,由于本身設(shè)計(jì)上的一些特點(diǎn),它需要不斷刷新,預(yù)充電等操作,因此讓使用者感到非常麻煩。
本設(shè)計(jì)介紹了一種基于ALTERA公司的SOPC系統(tǒng)來(lái)實(shí)現(xiàn)SDRAM存儲(chǔ)的方法,SOPC的全名是即片上可編程系統(tǒng),或者說(shuō)是基于大規(guī)模的FPGA的單片系統(tǒng)。簡(jiǎn)單來(lái)講,在一片F(xiàn)PGA上,只要資源足夠,用戶可以根據(jù)自己的需要構(gòu)建自己的CPU或者外設(shè),ALTERA公司給用戶提供了豐富的外設(shè),包括串口,PIO,定時(shí)器,F(xiàn)LASH控制器,SDRAM控制器,網(wǎng)絡(luò)接口等。這些外設(shè)都是ALTERA公司自己用硬件描述語(yǔ)言實(shí)現(xiàn)的IP核,性能好,通用性高,用戶只需要打開SOPC這個(gè)選項(xiàng),然后在里邊挑選自己需要的外設(shè)就可以。因此,本設(shè)計(jì)利用SOPC建立一個(gè)SDRAM控制器,本設(shè)計(jì)用的SDRAM是HYNIX公司的HY57V641620,這是一款具有64MBIT容量16位寬的SDRAM,最高工作時(shí)鐘可達(dá)200M。因?yàn)槊總€(gè)廠家的不同型號(hào)的SDRAM在參數(shù)上會(huì)有相應(yīng)的差異,因此ALTERA的公司的SDRAM控制器給用戶提供了簡(jiǎn)單易行的使用方法,用戶在創(chuàng)建的時(shí)候只需要在相應(yīng)參數(shù)的位置按照自己使用的SDRAM的具體參數(shù)修改即可。比如預(yù)充電,刷新周期,潛伏期這些參數(shù)要按照使用的型號(hào)進(jìn)行修改,否則可能會(huì)造成數(shù)據(jù)的傳輸錯(cuò)誤或其他的問(wèn)題。
為了讓SDRAM控制器以及其他外設(shè)的IP核在使用起來(lái)更加方便,ALTERA公司又推出了AVALON總線,這種總線是一種相對(duì)簡(jiǎn)單的總線結(jié)構(gòu),主要用于連接外設(shè)與處理器,與外設(shè)一起組成一個(gè)控制器,方便外部處理器的使用,協(xié)議簡(jiǎn)單,占用邏輯單元少,同步操作,集成度更高,避免了復(fù)雜的時(shí)序分析問(wèn)題。
本設(shè)計(jì)建立了一個(gè)SDRAM與AVALON總線的結(jié)合體,如圖3所示。右下端是SDRAM的控制引腳,用戶只需要把這些引腳與使用的sDRAM的相應(yīng)引腳逐個(gè)相連即可,中間的部分就是AVALON總線的輸出輸入端,用戶只需要對(duì)AVALON端的地址,數(shù)據(jù)線上操作,AVALON總線便會(huì)完成對(duì)SDRAM的操作,可見使用起來(lái)比較方便。WAIT端的信號(hào)會(huì)告知用戶SDRAM在忙還是空閑狀態(tài),當(dāng)WAIT為高的時(shí)候,用戶不能對(duì)AVA—LON操作,否則操作也是無(wú)效,當(dāng)WAIT為低,用戶才可以。最上邊的CLK信號(hào)是這個(gè)SDRAM控制器的同步時(shí)鐘,這個(gè)時(shí)鐘需要與SDRAM的輸入時(shí)鐘一樣大,而且SDRAM的控制時(shí)鐘與這個(gè)時(shí)鐘最好用FPGA內(nèi)部鎖相環(huán)的2個(gè)輸出來(lái)控制,本設(shè)計(jì)用的EP2C5Q208的同一個(gè)鎖相環(huán)有C0、Cl、C2三個(gè)輸出,C2用于外部管教輸出,本設(shè)計(jì)把C2連到SDRAM的時(shí)鐘輸入端,CO在FPGA內(nèi)部連到此SDRAM控制器的CLK端,因?yàn)榇鎯?chǔ)器想工作的可靠,數(shù)據(jù)準(zhǔn)確就需要滿足存儲(chǔ)器的建立時(shí)間和保持時(shí)間,而無(wú)論是FPGA內(nèi)部還是線路板都會(huì)對(duì)SDRAM的普通引腳和時(shí)鐘腳之間的相位產(chǎn)生影響,因此需要對(duì)FPGA內(nèi)部進(jìn)行仿真,線路板仿真,得出他們之間的相差,然后調(diào)節(jié)CO與C2之間在鎖相環(huán)里的相差,從而進(jìn)行補(bǔ)償,本設(shè)計(jì)中C2一C0=60°。
2.2 高速存儲(chǔ)與讀取在FPGA里的邏輯實(shí)現(xiàn)
在第一節(jié)中我們已說(shuō)到A/D轉(zhuǎn)換器的數(shù)據(jù)率是125M,16BIT,而本設(shè)計(jì)中用的HY57V641620的最高時(shí)鐘可達(dá)200M,因此完全可以滿足A/D轉(zhuǎn)換器的速率要求。A/D轉(zhuǎn)換器的數(shù)字輸出已經(jīng)被我們直接存儲(chǔ)到了FPGA的內(nèi)部FIFO當(dāng)中,F(xiàn)IFO是一種先進(jìn)先出的存儲(chǔ)器,被讀出的數(shù)據(jù)就不會(huì)在FIFO中存在了。因此,這個(gè)FIFO在使用的時(shí)候,A/D轉(zhuǎn)換器的數(shù)據(jù)一邊以125M的速度往FIFO寫數(shù)據(jù),一邊用一個(gè)速度更高的時(shí)鐘,150M的速度往外讀數(shù)據(jù),這樣讀的速度大于寫,因?yàn)镕IFO有滿和空的標(biāo)志,因此我們用空的標(biāo)志來(lái)控制讀FIFO的操作,即空的時(shí)候就不讀,這樣,在FIFO端,我們可以保證A/D采集的數(shù)據(jù)無(wú)丟失的以150M的速度被讀出。我們用這個(gè)150M的時(shí)鐘來(lái)驅(qū)動(dòng)一個(gè)地址計(jì)數(shù)器,如圖4所示。
SYS_CLK就是那個(gè)150M的時(shí)鐘,地址計(jì)數(shù)器的位數(shù)就決定了本次存儲(chǔ)的深度,我們把這個(gè)地址計(jì)數(shù)器的輸出SD_ADA[22..1]直接接到SDRAM控制器的AVALON的地址端,把FIFO讀出的數(shù)據(jù)直接接到AVALON的數(shù)據(jù)端,把WAIT線接到地址計(jì)數(shù)器的使能端來(lái)控制,忙的時(shí)候就不讓地址計(jì)數(shù)器計(jì)數(shù),當(dāng)?shù)刂酚?jì)數(shù)器從0計(jì)到SDRAM的最高地址的時(shí)候,我們就實(shí)現(xiàn)了FIF0的數(shù)據(jù)到SDRAM的傳輸,從而最終實(shí)現(xiàn)了A/D轉(zhuǎn)換器的結(jié)果到SDRAM的存儲(chǔ)。至此,我們已完成了高速數(shù)據(jù)到SDRAM的存儲(chǔ)。讀取相對(duì)與存儲(chǔ)的過(guò)程操作比較簡(jiǎn)單,用戶想要調(diào)用SDRAM里的數(shù)據(jù),只需要把自己的處理器的總線接到FPGA的引腳上,在內(nèi)部掛載到SDRAM控制器的AVALON讀取端,圖3中的中間部分,按照總線的操作方式即可讀取相應(yīng)地址里的數(shù)據(jù)。
3 結(jié)束語(yǔ)
本文介紹了一種基于高速A/D轉(zhuǎn)換器,FPGA,SDRAM來(lái)實(shí)現(xiàn)的控制高速數(shù)據(jù)采集的數(shù)字系統(tǒng),詳細(xì)的介紹了各部分的實(shí)現(xiàn)方法。該系統(tǒng)具有速度高,存儲(chǔ)容量大等優(yōu)點(diǎn),能夠適應(yīng)高速數(shù)據(jù)采集的諸多場(chǎng)合。