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