姜 磊,黃建國,李 力
(電子科技大學(xué)自動化工程學(xué)院,四川 成都 611731)
目前,數(shù)據(jù)采集系統(tǒng)大多采用DSP作為核心控制芯片,控制ADC、存儲器和其他外圍電路工作。但是DSP的各種功能要靠軟件的運行來實現(xiàn),執(zhí)行的速度和效率較低,軟件運行時間在整個采樣時間中占很大的比例。而FPGA(現(xiàn)場可編程門陣列)有著DSP無法比擬的優(yōu)勢。FPGA時鐘頻率高,內(nèi)部延時小,全部控制邏輯由硬件完成,速度快,效率高。該文設(shè)計了一種基于FPGA的中頻數(shù)據(jù)采集系統(tǒng),實現(xiàn)了FPGA內(nèi)部邏輯設(shè)計在中頻采集系統(tǒng)中的應(yīng)用。
該中頻采集系統(tǒng)用于對前端下變頻模塊輸出的中頻調(diào)制信號進行高速數(shù)據(jù)采集,同時實現(xiàn)數(shù)據(jù)的總線上傳,即將數(shù)據(jù)通過CPCI總線上傳給計算機進行數(shù)據(jù)處理與分析。其硬件系統(tǒng)構(gòu)成主要包括信號調(diào)理通道、模數(shù)轉(zhuǎn)換電路、FPGA控制電路、存儲電路、CPCI接口電路、晶振電路以及電源管理電路等。控制計算機通過CPCI總線與FPGA進行通信,將控制命令發(fā)送給FPGA。FPGA的譯碼控制邏輯收到傳來的數(shù)據(jù)后,讀取控制數(shù)據(jù),以確定要執(zhí)行的操作,如信號衰減、信號放大、開始采集等。在FPGA內(nèi)部邏輯的控制下,數(shù)據(jù)存入存儲器,并通過總線送到上位機待分析處理。系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
該中頻采集系統(tǒng)采用FPGA作為整個系統(tǒng)的控制核心。CycloneII EP2C35F672I8是Altera公司生產(chǎn)的一款具有較高性價比的FPGA芯片,它采用Stratix架構(gòu),使用90 nm工藝生產(chǎn),具有33216個LE,105個M4K單元,4個PLL以及14DQS/DQ8模塊。另外,其I/O管腳可以直接與系統(tǒng)中使用的其他芯片相連而不需要進行電平轉(zhuǎn)換。該款FPGA的內(nèi)部資源以及管腳數(shù)量能夠完全滿足此案的設(shè)計需求,故選用該款FPGA作為主控邏輯芯片。
信號調(diào)理通道可以實現(xiàn)對信號10 dB、20 dB的衰減和10倍放大,可通過FPGA進行控制,將信號調(diào)理在ADC轉(zhuǎn)換的電壓范圍內(nèi)。ADC選用ADI公司推出的高速、低功耗的AD9430,采樣時鐘最高可達210MHz,分辨率12位,支持差分輸入電壓,范圍為-768~+768 mV。存儲器采用了Micron公司的DDR SDRAM芯片MT46V32M16。MT46V32M16為16位數(shù)據(jù)寬度,存儲容量為512 Mb,差分時鐘輸入,突發(fā)傳輸長度可配置為2,4,8,最低工作頻率為75MHz。CPCI接口芯片選用PCI9054。
圖1 中頻采集系統(tǒng)硬件結(jié)構(gòu)示意圖
作為整個系統(tǒng)的控制核心,F(xiàn)PGA起著前端通道控制、數(shù)據(jù)緩存、數(shù)據(jù)存儲控制、總線接口控制的作用。FPGA通過CPCI總線接口接收來自上位機發(fā)送的命令,控制前端信號調(diào)理通道,使信號調(diào)整在ADC檢測的范圍內(nèi)。上位機發(fā)送開始采集的命令后,F(xiàn)PGA開始將ADC采集到的數(shù)據(jù)讀入內(nèi)部,但是由于前端ADC輸出的數(shù)據(jù)流為200MB/s的12位數(shù)據(jù),這與后端的DDR SDRAM存儲器240 MB/s的存儲速率不匹配,不能直接存儲,所以先將數(shù)據(jù)在FPGA內(nèi)部FIFO中做緩存,同時內(nèi)部的DDR SDRAM控制模塊將緩存的數(shù)據(jù)存入外部DDR SDRAM中,一共存儲64MB不間斷的數(shù)據(jù)。當外部存儲器存滿后,將發(fā)送滿信號給上位機,告知上位機數(shù)據(jù)可以讀取。這時,上位機就會發(fā)送讀數(shù)據(jù)命令。同樣,存儲器讀數(shù)據(jù)的速率與CPCI總線40 MHz傳輸?shù)乃俾什黄ヅ?,F(xiàn)PGA也將存儲器中的數(shù)據(jù)分若干次讀進內(nèi)部的緩存FIFO中,每次FIFO寫滿后發(fā)中斷給上位機,上位機接收到中斷后就使用DMA方式將數(shù)據(jù)從FPGA緩存FIFO中讀出數(shù)據(jù),直到將存儲器中的數(shù)據(jù)讀完為止,整個數(shù)據(jù)采集過程結(jié)束。FPGA內(nèi)部總體邏輯示意圖如圖2所示。
上位機對硬件電路的操作都是通過對PCI9054進行地址譯碼實現(xiàn)的,所以首先要分配地址空間,以區(qū)分對硬件中不同功能電路的操作。操作人員通過上位機把相應(yīng)的操作命令發(fā)下來,經(jīng)過PCI9054橋接芯片后送給FPGA內(nèi)部的地址譯碼電路,地址譯碼電路將相應(yīng)的操作命令轉(zhuǎn)換為對應(yīng)的控制信號送給相應(yīng)的功能電路,實現(xiàn)對模塊的控制。設(shè)計中利用可編程邏輯器件實現(xiàn)地址譯碼電路的設(shè)計。
數(shù)據(jù)緩存是數(shù)據(jù)流處理上一個關(guān)鍵的部分,是實現(xiàn)數(shù)據(jù)流無縫存儲的前提。由于前端ADC采集速率達200MHz,存儲器不能實時將數(shù)據(jù)存儲,需將數(shù)據(jù)先做緩存處理。該采集系統(tǒng)的數(shù)據(jù)緩存采用“乒乓操作”。乒乓操作是在輸入數(shù)據(jù)流選擇單元和輸出數(shù)據(jù)流選擇單元按節(jié)拍相互配合切換,將經(jīng)過緩沖的數(shù)據(jù)流沒有時間停頓地送到運算處理單元,進行運算和處理。把乒乓操作模塊當作一個整體,站在這個模塊的兩端看數(shù)據(jù),輸入數(shù)據(jù)流和輸出數(shù)據(jù)流都是連續(xù)不斷的,沒有任何停頓,因此非常適合對數(shù)據(jù)流進行流水線式處理。
該設(shè)計中采用異步FIFO作為數(shù)據(jù)緩存單元,來匹配乒乓操作前后端數(shù)據(jù)流速率不同的問題。如圖3所示,實際電路中將前端ADC采集的200MHz的數(shù)據(jù)流,降頻為兩個100MHz的數(shù)據(jù)流,每個100MHz的數(shù)據(jù)流需要兩個FIFO進行乒乓操作,故電路中需要4個異步FIFO進行乒乓操作,其中每個FIFO的大小設(shè)置為4K×12bit。調(diào)試中需要注意的是數(shù)據(jù)的切換及銜接問題,保證數(shù)據(jù)流的連續(xù)性。乒乓操作仿真波形圖如圖4所示。其中為了仿真方便,異步FIFO的大小設(shè)置為32×12 bit,數(shù)據(jù)經(jīng)過乒乓操作緩沖后輸出是連續(xù)的。
圖2 FPGA邏輯示意圖
圖3 乒乓操作示意圖
圖4 乒乓操作時序仿真波形圖
數(shù)據(jù)存儲是該設(shè)計的重點和難點,也是數(shù)據(jù)采集的核心部分,F(xiàn)PGA邏輯實現(xiàn)主要由DDR SDRAM控制器和接口模塊組成。DDR SDRAM控制器的功能是根據(jù)DDR SDRAM的工作原理,控制DDR SDRAM正確的工作,將前端AD采集的數(shù)據(jù)正確的存入DDR SDRAM中,并能夠正確的讀入上位機進行分析。存儲器控制模塊主要包括初始化模塊、外部刷新模塊、主控制模塊、地址產(chǎn)生模塊及命令產(chǎn)生模塊5個部分。其結(jié)構(gòu)框圖如圖5所示。
圖5 DDR SDRAM控制器組成框圖
初始化操作主要確定DDR SDRAM的CAS潛伏期(CL)、突發(fā)傳輸模式、突發(fā)長度(BL)等。刷新模塊根據(jù)DDR SDRAM工作時鐘為120 MHz的情況設(shè)計為兩種刷新模式,一種是空閑狀態(tài)的短刷新,刷新時間83μs;另一種為讀寫滿4行的長刷新,刷新時間為333μs。這樣的設(shè)計完全滿足DDR SDRAM手冊規(guī)定的64ms對所有行刷新一次的要求。主控模塊主要完成DDR SDRAM的讀寫控制。在對DDR SDRAM進行讀寫操作之前,都要經(jīng)過激活狀態(tài),然后經(jīng)過所要求的時間延遲后轉(zhuǎn)入寫或者讀的狀態(tài),當一行讀寫完畢后,進入預(yù)充電狀態(tài)。如果沒有完成預(yù)設(shè)的讀寫深度,則再度重復(fù)進入激活狀態(tài),打開下一行,重復(fù)這一過程;如果達到了預(yù)設(shè)的讀寫深度,則轉(zhuǎn)入長刷新狀態(tài),刷新結(jié)束后,如果外部有讀寫請求,就轉(zhuǎn)入激活狀態(tài),重復(fù)上面的過程。所不同的是,在對DDR SDRAM進行寫操作時,寫深度為4行,即寫滿4行后進行一次長刷新;對DDR SDRAM進行讀操作時,讀深度為2行。
Altera公司的FPGA內(nèi)部有專門的DDR SDRAM接口電路,并且其開發(fā)工具QuartusII軟件也提供了宏功能模塊alt_dq和alt_dqs,用戶只需要正確的設(shè)置參數(shù),就可以生成所需要的接口模塊,并且可以更好地滿足DDR SDRAM的時序要求。
數(shù)據(jù)及控制信號通過CPCI總線與上位機進行連接。其中控制信號與數(shù)據(jù)的傳輸方式有所不同,控制信號使用CPCI總線的單次寫方式,而采集數(shù)據(jù)由于數(shù)據(jù)量較大,不能采用單次讀的方式,需要使用CPCI總線的DMA數(shù)據(jù)傳輸模式。進行DMA數(shù)據(jù)模式傳輸是PCI9054的一大特點。DMA是Direct Memory Access(直接內(nèi)存訪問)的縮寫,是一種不通過CPU而直接從內(nèi)存進行數(shù)據(jù)傳輸?shù)臄?shù)據(jù)交換模式,可以大大節(jié)省系統(tǒng)資源。
圖6 DMA傳輸時序圖
圖7 數(shù)據(jù)采集波形
圖8 中頻信號解調(diào)結(jié)果
當數(shù)據(jù)寫滿外部DDR SDRAM存儲器后,數(shù)據(jù)狀態(tài)寄存器置1,通知上位機數(shù)據(jù)已準備好,可以讀取上位機則發(fā)出讀命令給DDR SDRAM控制器。DDR SDRAM控制器接收到讀命令后,從DDR SDRAM存儲器中讀取數(shù)據(jù)寫到FPGA內(nèi)部的緩存FIFO中,緩存FIFO大小設(shè)置為1K×32bit。待緩存FIFO寫滿后發(fā)出中斷給上位機,上位機接收到FIFO的滿中斷就開始以DMA數(shù)據(jù)傳輸模式傳輸數(shù)據(jù),DMA設(shè)置傳輸數(shù)據(jù)大小為1K×32bit,由于是對FIFO操作,可以忽略地址信號。當數(shù)據(jù)傳輸完畢時,停止DMA傳輸,DDR SDRAM控制器檢測到FIFO空信號后又繼續(xù)從DDR SDRAM存儲器中再讀取1K×32bit的數(shù)據(jù)存入FIFO,重復(fù)之前的操作,直到將存儲器中64M×8bit的數(shù)據(jù)全部讀完,上位機停止讀數(shù)據(jù)的操作。圖6為使用QuartusII中SignalTapII工具采集的DMA傳輸時序圖。
在實際的實驗中,輸入信號使用Agilent的E4438C矢量信號源模擬60 MHz的中頻調(diào)制信號,調(diào)制方式為 ASK 方式,脈寬為 4 μs,周期為 20 μs,信號功率為10 dB。上層軟件設(shè)置前端固定衰減10 dB,然后發(fā)出采集命令。待底層硬件采集完成后,上層軟件自動將數(shù)據(jù)通過CPCI總線讀入計算機的內(nèi)存中并進行顯示與分析。圖7是通過上層軟件顯示的采集到的ASK調(diào)制信號波形結(jié)果。圖8是上層軟件使用采集數(shù)據(jù)對中頻信號解調(diào)的結(jié)果。實驗結(jié)果說明,該系統(tǒng)較好地完成了大容量中頻數(shù)據(jù)采集的功能,可以滿足上層軟件分析的需要。
該設(shè)計以一片Alatra公司的FPGA芯片EP2C35F672I8為核心,配以外圍的信號調(diào)理電路、模數(shù)轉(zhuǎn)換電路、存儲電路、CPCI接口電路,實現(xiàn)了中頻調(diào)制信號的數(shù)據(jù)采集及存儲,并完成了與上位計算機的通信。該系統(tǒng)控制邏輯全部在一片F(xiàn)PGA芯片內(nèi)部實現(xiàn)的,發(fā)揮了FPGA的優(yōu)勢,提高了系統(tǒng)的穩(wěn)定性、集成度,增強了抗干擾能力。利用多片ADC器件流水采樣的方法,完全可以實現(xiàn)更高速更大容量信號的數(shù)據(jù)采集,這在高速大容量數(shù)據(jù)處理中具有較大的實用價值。
[1] 馮 萍,李秀華.基于FPGA的高速高精度數(shù)據(jù)采集系統(tǒng)的研究[J].中國科技信息,2008(21):105-106.
[2] 張會新,吳學(xué)慶,蔣紹鳳,等.基于FPGA的多通道同步數(shù)據(jù)采集存儲系統(tǒng)[J].電子設(shè)計工程,2009,17(7):68-70.
[3] 王 超.FPGA在實時信號采集系統(tǒng)中的應(yīng)用[J].計量與測試技術(shù),2008,35(5):47-49.
[4]王 鈿,卓興旺.基于Verilog HDL的數(shù)字系統(tǒng)應(yīng)用設(shè)計[M].北京:國防工業(yè)出版社,2006.
[5] 吳繼華,王 誠.Altera FPGA/CPLD設(shè)計(基礎(chǔ)篇)[M].北京:人民郵電出版社,2005.
[6] 吳繼華,王 誠.Altera FPGA/CPLD設(shè)計(高級篇)[M].北京:人民郵電出版社,2005.
[7] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].北京:北京航空航天大學(xué)出版社,2008.
[8] 林 生,金京林.數(shù)字設(shè)計原理與實踐[M].北京:機械工業(yè)出版社,2003.
[9]李廣軍,林水生.微機系統(tǒng)原理與接口技術(shù)[M].成都:成都電子科技大學(xué)出版社,2005.
[10]馬明建.數(shù)據(jù)采集與處理技術(shù)[M].西安:西安交通大學(xué)出版社,2006.