基于FPGA的高速實時數(shù)據(jù)采集系統(tǒng)設(shè)計
掃描二維碼
隨時隨地手機看文章
摘 要:設(shè)計一款基于FPGA的高速實時數(shù)據(jù)采集系統(tǒng),該系統(tǒng)采用FPGA作為控制器,主要完成通道選擇控制及增益設(shè)置、A/D轉(zhuǎn)換控制、數(shù)據(jù)緩沖異步FIFO三部分功能。系統(tǒng)采用Verilog HDL語言,通過軟件編程控制硬件實現(xiàn)通道的選擇和可編程增益放大器放大倍數(shù)的設(shè)置,利用FPGA內(nèi)部自帶的RAM設(shè)計16位的FIFO,實現(xiàn)數(shù)據(jù)的緩沖存儲。這種基于FPGA的同步采集、實時讀取采集數(shù)據(jù)的方案,可以提高系統(tǒng)采集和傳輸速度。系統(tǒng)的仿真驗證結(jié)果顯示,所設(shè)計的高速實時數(shù)據(jù)采集系統(tǒng)達(dá)到了預(yù)期的功能。
關(guān)鍵詞:數(shù)據(jù)采集系統(tǒng);FPGA;DSP;FIFO
O 引 言
隨著信息技術(shù)的飛速發(fā)展,各種數(shù)據(jù)的實時采集和處理在現(xiàn)代工業(yè)控制和科學(xué)研究中已成為必不可少的部分。在信號測量、圖像處理、音頻信號處理等一些高速、高精度的測量中都需要進行高性能的數(shù)據(jù)采集。
傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)往往采用單片機或數(shù)字信號處理器(DSP)作為控制器,控制模/數(shù)轉(zhuǎn)換器(ADC)、存儲器和其他外圍電路的工作。但由于單片機本身的指令周期以及處理速度的影響,其時鐘頻率較低,各種功能都要靠軟件的運行來實現(xiàn),軟件運行時間在整個采樣時間中占有很大的比例,效率較低,很難滿足系統(tǒng)對數(shù)據(jù)采集系統(tǒng)實時性和同步性的要求。然而基于DSP的數(shù)據(jù)采集系統(tǒng),雖然處理速度快,但成本較高,過于頻繁的中斷會使CPU的效率降低,響應(yīng)速度變差。
采用可編程邏輯器件設(shè)計數(shù)據(jù)采集系統(tǒng),具有開發(fā)周期短,集成度高,功耗低,工作頻率高,設(shè)計費用低,編程配置靈活等一系列優(yōu)點。此外,還可以在FPGA芯片內(nèi)進行采集控制、緩沖、處理、傳輸控制、通信。但采用FPGA作為數(shù)據(jù)采集系統(tǒng)的控制器也存在一些問題,主要是一般都要外掛數(shù)據(jù)緩沖區(qū),降低了系統(tǒng)的傳輸速度,同時增加了成本。這里給出一種基于FPGA的同步采集、實時讀取采集數(shù)據(jù)的數(shù)據(jù)采集方案,提高了系統(tǒng)采集和傳輸速度。FPGA作為數(shù)據(jù)采集系統(tǒng)的控制器,其主要完成通道選擇控制、增益設(shè)置、A/D轉(zhuǎn)換控制、數(shù)據(jù)緩沖異步FIFO四部分功能。
l 主要器件的選取
1.1 可編程增益放大器的選取
由于傳感器輸出的信號一般比較微弱,為了能利用模/數(shù)轉(zhuǎn)換器的滿量程分辨率,需要將傳感器輸出的微弱信號放大,由于每個通道輸出的信號一般不同,所以對每個通道提供的放大倍數(shù)也要不同。選用可編程增益放大器PGA202/203級聯(lián)來為各個通道提供不同的放大倍數(shù)。PGA202/203是增益可數(shù)字控制的單片集成放大器,其中PGA202的增益范為1,10,100,1 000(10進制);PGA203的增益范為1,2,4,8(二進制)。采用PGA202/203級聯(lián)可實現(xiàn)1~8 000等16種不同的放大倍數(shù),完全能滿足對不同信號采用不同的放大倍數(shù)以及對較寬范圍內(nèi)信號的檢測要求以及微弱信號的采集的要求。
1.2 A/D轉(zhuǎn)換器的選取
A/D轉(zhuǎn)換器決定數(shù)據(jù)采集系統(tǒng)的精度和分辨率,所以A/D轉(zhuǎn)換器的選取尤為重要。選取A/D轉(zhuǎn)換器需要考慮的因數(shù)主要有分辨率、精度、速度、電源要求、接口及轉(zhuǎn)換器的類型等。
因逐次逼近型A/D轉(zhuǎn)換器具有轉(zhuǎn)換速度快,精度較高,靈活和價格適中的特點,因此綜合考慮精度、速度和成本后,選用選用TI公司生產(chǎn)的專門用于數(shù)據(jù)采集系統(tǒng)的逐次逼近型16位A/D轉(zhuǎn)換器ADS8322。其主要性能指標(biāo)如下:分辨率為16位;采樣率最大為500 kHz;內(nèi)帶2.5 V的基準(zhǔn)源;單極性輸入;內(nèi)帶采樣保持器;低功耗;在采樣率為500 kHz時,功耗為85 mw;16位數(shù)據(jù)并行輸出。ADS8322的最小時鐘周期為100 ns;最大采集時間為0.4μs;最大轉(zhuǎn)換時間為1.6μs;最大數(shù)據(jù)通過率為500 kHz。從由ADS8322的性能指標(biāo)可以看出,ADS8322非常適合用于高速、高精度的數(shù)據(jù)采集系統(tǒng)中。
1.3 FPGA芯片的選取
FPGA主要用于控制整個系統(tǒng)協(xié)調(diào)工作。作為數(shù)據(jù)采集系統(tǒng)的控制器,主要負(fù)責(zé)控制A/D工作轉(zhuǎn)換、通道選擇、增益設(shè)置、作為數(shù)據(jù)采集系統(tǒng)的緩沖存儲器等。綜合考慮芯片性能和成本,選用A1tera公司的新一代低成本FPGA-CycloneⅡ系列EP2C50F484芯片,CycloneⅡFPGA是基于StratixⅡ的90 nm工藝推出的低成本FPGA。其在cyclone的基礎(chǔ)上增加了硬的DSP塊,最大的CycloneⅡ規(guī)模是Cyclone的3倍,在芯片總體性能上要優(yōu)于Cyclone系列器件。EP2C50F484芯片具有50 528個邏輯單元,86個嵌入式18×18乘法器模塊,4個鎖相環(huán),129個。M4K RAM,4個時鐘控制塊,16個全局時鐘網(wǎng)絡(luò),總的RAM空間為594 432位,最大用戶可用I/O引腳數(shù)294個。使得CycloneⅡ適合用于復(fù)雜邏輯以及有存儲、緩沖功能的數(shù)據(jù)采集系統(tǒng)中。
2 系統(tǒng)整體結(jié)構(gòu)
系統(tǒng)整體框圖如圖1所示。
整個系統(tǒng)由信號調(diào)理、采集轉(zhuǎn)換、定時和邏輯控制、緩沖存儲、以及高速數(shù)據(jù)傳輸接口等部分組成。信號調(diào)理電路主要包括信號放大和信號濾波電路,因為傳感器輸出的信號通常比較微弱,為了能充分利用A/D轉(zhuǎn)換器的滿量程分辨率,就需要對輸入信號進行放大。由于對不同的輸入信號一般需要不同的放大倍數(shù),所以信號放大選用可編程增益放大器來完成??删幊淘鲆娣糯笃鞯姆糯蟊稊?shù)由FPGA編程控制;信號濾波則根據(jù)香農(nóng)定理的要求??紤]到A/D的轉(zhuǎn)換速率,對輸入信號的帶寬進行限制,以防止采樣信號產(chǎn)生“混疊現(xiàn)象”;采集轉(zhuǎn)換是用ADS8322轉(zhuǎn)換芯片完成模擬信號的數(shù)字化;定時和邏輯以及緩沖存儲都由FPGA來完成。FPGA主要負(fù)責(zé)采集通道的選擇、可編程增益放大倍數(shù)的控制、A/D轉(zhuǎn)換器的控制、采集數(shù)據(jù)的緩沖存儲等任務(wù)。高速數(shù)據(jù)傳輸總線選用USB總線,uSB總線可即插即用。uSB 2.0協(xié)議中,數(shù)據(jù)傳輸速率最大可達(dá)480 Mb/s,這完全能滿足高速數(shù)據(jù)采集和傳輸?shù)囊蟆?br /> 基于Verilog設(shè)計的自動數(shù)據(jù)采集系統(tǒng)由硬件控制A/D轉(zhuǎn)換器以及自動向FIFO存儲器中存儲數(shù)據(jù)。采樣頻率由FPGA的輸出時鐘決定,當(dāng)FIFO中的數(shù)據(jù)寫滿時,F(xiàn)IFO的滿標(biāo)志(FULL)置1,數(shù)據(jù)通過USB總線傳輸?shù)接嬎銠C進行存儲,以待后續(xù)處理。由于先存入FIFO的數(shù)據(jù)先輸出,所以采集不會中斷,從而能實現(xiàn)連續(xù)的實時數(shù)據(jù)采集和實時數(shù)據(jù)處理。
3 仿真驗證結(jié)果
3.1 通道選擇及放大倍數(shù)設(shè)置
通道選擇采用8選1數(shù)據(jù)選擇器來完成,通過輸入信號b[2:0]的不同組合選擇不同的通道(Charmel);通過PGA202/203的級聯(lián),在PGA202/PGA203的放大倍數(shù)控制端a3a2/a1a0不同組合時,設(shè)置不同的放大倍數(shù)。例如,在a3a2 a1 a0=0000,設(shè)置增益gain為1;在a3 a2 al a0=0001,設(shè)置增益gain為2;在…a3a2al a0=11ll時,設(shè)置增益gain為8 000。增益gain可以從l~8 000設(shè)置,如波形圖2中所示。較大范圍增益的設(shè)置可實現(xiàn)對較寬范圍內(nèi)信號的檢測以及微弱信號的采集。在Modelsim SE 6.1b軟件中進行了FPGA控制通道選擇及增益設(shè)置的仿真,仿真波形如圖2所示。
3.2 FPGA控制ADS8322轉(zhuǎn)換的設(shè)計
根據(jù)ADS8322的工作轉(zhuǎn)換時序圖,用VerilogHDL編寫了FPGA控制ADS8322轉(zhuǎn)換的程序。在QuartusⅡ7.2軟件中進行了編譯綜合;在ModelsimSE 6.1b中進行了波形仿真,其仿真波形如圖3所示。由仿真波形可以看出,其完全符合ADS8322的工作時序。
3.3 存儲和傳輸模塊設(shè)計
FPGA內(nèi)部自帶594 432位的RAM可作為數(shù)據(jù)緩沖存儲器,這樣可以充分利用FPGA的資源,提高系統(tǒng)的運行速度和節(jié)約系統(tǒng)成本,EP2C50F484芯片最大可用I/O引腳數(shù)達(dá)294個,用Verilog語言在EP2C50F484內(nèi)部設(shè)計一個異步的FIFO(先入先出存儲器)。在設(shè)計異步FIFO時,不可能僅靠設(shè)置一個計數(shù)器來記錄FIFO剩余空間的增減,因為不可能讓兩個不同時鐘控制同一個變量。所以必須通過比較讀寫指針來確定FIFO是空、是滿,還是處于其他狀態(tài)。由于在空狀態(tài)和滿狀態(tài)時,讀指針和寫指針都相同,所以采取在每個指針前增加1個比特位來區(qū)別空狀態(tài)和滿狀態(tài)的方法。如果寫指針遞增到超出了FIFO的末地址,新增加的比特位就改變1次,讀指針也一樣。這樣,如果就兩個指針的最高位不同,就表示FIFO處于滿狀態(tài);如果兩個指針完全相同,就表示處于空狀態(tài)。
3.3.1 FIFO指針的設(shè)計
如果FIFO指針的增減采用二進制計數(shù)方式,在計數(shù)器增或減1時,就有可能出現(xiàn)不只1個比特位發(fā)生變化(如1011~1100)的情況,在一個時鐘沿同步多個變化的信號比較困難?;谶@個問題,采用格雷碼計數(shù)法來改變指針,在每次時鐘轉(zhuǎn)換時只改變指針的1個比特位。
3.3.2 FIFO的軟件程序
FIFO的軟件程序由5個程序模塊組成,即頂層模塊(fifo)、存儲模塊(fifomem)、讀指針同步模塊(sync_r)、寫指針同步模塊(sync_w)和空狀態(tài)判斷模塊(r_empty)、滿狀態(tài)判斷模塊(w_full)。每個模塊均采用vetilog語言編程,在QuartusⅡ7.2中完成編譯和綜合,并在ModelSim SE 6.1b進行波形仿真。存儲模塊的仿真波形如圖4所示,由波形可以看出,先進入存儲器的數(shù)據(jù)(wdata)先輸出;讀地址(radder)和寫地址(wadder)可以相同也可以不同。由仿真波形可看出,設(shè)計的FIFO達(dá)到了預(yù)期的功能。
4 結(jié) 語
實現(xiàn)了基于FPGA的高速實時數(shù)據(jù)采集系統(tǒng)設(shè)計。采用FPGA作為數(shù)據(jù)采集系統(tǒng)的控制核心,通過軟件編程控制硬件實現(xiàn)通道的選擇;通過可編程增益放大器實現(xiàn)放大倍數(shù)的控制;利用FPGA控制實現(xiàn)A/D轉(zhuǎn)換,并給出控制轉(zhuǎn)換波形。由此可見,控制波形完全符合ADS8322的轉(zhuǎn)換時序,達(dá)到設(shè)計的目的。利用FPGA內(nèi)部的自帶RAM來設(shè)計16位的FIFO,可實現(xiàn)數(shù)據(jù)的緩沖存儲,充分利用系統(tǒng)資源,節(jié)約系統(tǒng)成本,具有良好的可移植性和可擴展性,便于調(diào)試和修改。此外,基于先入先出存儲器(FIFO)的先人先出特性,可以實現(xiàn)數(shù)據(jù)的實時高速采集。在高速實時數(shù)據(jù)采集方面有較好的應(yīng)用前景。