文獻標識碼: A
文章編號: 0258-7998(2011)05-0098-03
傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)中通常采用單片機或DSP作為控制模塊,控制A/D轉(zhuǎn)換,、存儲和其他外圍電路的工作,,利用PCI、ISA等接口與上位機進行通信,。隨著數(shù)據(jù)采集對速度,、實時性、簡易性的要求越來越高,,傳統(tǒng)數(shù)據(jù)采集系統(tǒng)的弊端也日趨明顯,。近年來隨著FPGA技術(shù)和USB技術(shù)的應(yīng)用深度和廣度的不斷加大,利用FPGA芯片和USB接口設(shè)計高速數(shù)據(jù)采集系統(tǒng)成為新的研究熱點,。FPGA芯片不僅體積小,、功耗低、時鐘頻率高,、內(nèi)部時延小,,而且能夠使用VHDL語言來編程實現(xiàn)程序的并行執(zhí)行,配置靈活,,開發(fā)周期短,,性能可靠。USB是一種高效,、快速、價格低廉,、體積小并支持熱插拔的新型串行通信接口,目前USB2.0的高速傳輸速率能夠達到480 Mb/s,,能夠?qū)崿F(xiàn)數(shù)據(jù)的高速傳輸。
1 系統(tǒng)總體結(jié)構(gòu)
本設(shè)計采用FPGA+USB的設(shè)計思路,利用FPGA芯片作為系統(tǒng)的邏輯控制核心,,通過USB 2.0接口與上位機通信,,實現(xiàn)單端16路/差分8路模擬數(shù)據(jù)的高速、實時,、便攜式的采集,。本文設(shè)計的數(shù)據(jù)采集系統(tǒng)劃分為A/D轉(zhuǎn)換電路、FPGA采集控制和USB傳輸控制器等若干部分,。如圖1所示,。
本數(shù)據(jù)采集系統(tǒng)支持單端16路和差分8路模擬信號輸入,每路12 bit的轉(zhuǎn)換精度,最高采樣率為200 kHz。主機應(yīng)用程序首先向USB控制器發(fā)出采樣時控包,,在時控包中設(shè)置采集通道及其采樣頻率,。進而USB控制器觸發(fā)FPGA采集信息,F(xiàn)PGA根據(jù)時控包開始啟動A/D進行模數(shù)轉(zhuǎn)換,轉(zhuǎn)換結(jié)束后,,F(xiàn)PGA接受A/D輸出的12 bit串行數(shù)據(jù),,并通過串并轉(zhuǎn)換將它轉(zhuǎn)換成16 bit并行數(shù)據(jù)輸出。然后將采集到的數(shù)據(jù)信息通過USB控制器發(fā)送給主機,最后由主機做進一步信息處理,。
2 主要芯片選型
本數(shù)據(jù)采集系統(tǒng)用到的主要芯片包括FPGA芯片,、A/D轉(zhuǎn)換芯片和USB傳輸控制芯片。
2.1 FPGA芯片的選取
依據(jù)本系統(tǒng)設(shè)計的需要選用Altera公司的Cyclone II系列EP2C8Q208C8,。該芯片內(nèi)部邏輯單元8 256個,,有165 888個RAM位,182個可用I/O口,,系統(tǒng)時鐘頻率高于260 MHz,,只需要3.3 V和1.2 V的工作電壓,完全能夠滿足設(shè)計的要求,。
2.2 ADC轉(zhuǎn)換芯片的選取
考慮到系統(tǒng)的采樣率,、分辨率、通道數(shù)等要求,,本系統(tǒng)選用德州儀器公司(TI)的ADS7817模數(shù)轉(zhuǎn)換器,。該器件是12位的低功耗、高阻抗全差分模擬輸入,、具有串行輸出接口的模數(shù)轉(zhuǎn)換器,,內(nèi)部基準電壓范圍為100 mV~2.5 V,最高采樣率200 kHz,相應(yīng)輸入分辨率范圍49 μV~1.22 mV,。
2.3 USB傳輸控制芯片的選取[1]
本系統(tǒng)選用CYPRESS公司的USB2.0外設(shè)控制器EZ-USB FX2 CY7C68013-56,。該芯片包括帶8.5 KB片上RAM的高速8051單片機、4 KB FIFO存儲器以及通用可編程接口(GPIF),、串行接口引擎(SIE)和USB2.0收發(fā)器,,可與任何ASIC或DSP進行接合,并且還支持所有通用總線標準,,性價比較高,。USB2.0協(xié)議提供480 Mb/s的傳輸速度,因此CY7C68013是USB2.0的完整解決方案。
3 系統(tǒng)硬件設(shè)計方案實現(xiàn)
3.1 FPGA與ADC及模擬多路開關(guān)的電路設(shè)計
系統(tǒng)選用8通道模擬多路開關(guān)CD4501和SN74LS174集成D觸發(fā)器組合構(gòu)成FPGA信號采集控制的輸入通道,。本系統(tǒng)要求支持單端16路和差分8路模擬信號輸入,,因此使用2片CD4501來實現(xiàn)最大16路模擬輸入通道的多路復(fù)用。在選擇單端或差分輸入時,,通過硬件開關(guān)來實現(xiàn),。在一個采樣周期內(nèi),選擇哪路模擬信號進行A/D轉(zhuǎn)換由FPGA控制D觸發(fā)器SN74LS174其中的5個D輸入端的電平高低來選擇通道實現(xiàn),。每路模擬信號都要經(jīng)過多路模擬開關(guān)選擇通道后,,再送入A/D芯片的輸入端,如圖2所示。本方案中,FPGA為采樣通道SN74LS174提供30 MHz的時鐘CLK1及復(fù)位信號CLR,,為A/D芯片提供3 MHz的同步時鐘信號DCLK和片選信號CS,從而使A/D芯片對相應(yīng)的通道進行數(shù)據(jù)轉(zhuǎn)換,。
3.2 FPGA與USB芯片的連接設(shè)計
當(dāng)EZ-USB FX2LP工作于Slave FIFO模式時,,外圍電路可以像普通FIFO一樣對EZ-USB FX2LP中的端點數(shù)據(jù)緩沖區(qū)進行讀寫[2]。本系統(tǒng)采用FPGA作為主控制器,,因而,,對USB控制采用Slave FIFO模式,F(xiàn)PGA通過控制CY7C68013內(nèi)4 KB的FIFO進行與上位機之間的數(shù)據(jù)傳輸,。FPGA與USB芯片的硬件連接如圖3所示,。
4 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件設(shè)計主要包括FPGA控制邏輯設(shè)計、USB固件程序設(shè)計,、USB設(shè)備驅(qū)動程序和上位機應(yīng)用程序,。
4.1 FPGA設(shè)計
FPGA程序的設(shè)計是整個采集系統(tǒng)的關(guān)鍵,整體分成三大模塊:分頻采樣控制模塊,、通道選擇模塊和USB傳輸控制模塊,。以下是各個模塊設(shè)計的具體介紹。
4.1.1 分頻采樣控制模塊
本系統(tǒng)中,,F(xiàn)PGA的主時鐘m_clk由USB芯片輸出的30 MHz頻率提供,,由于A/D采樣需要3 MHz的時鐘頻率,因此首先模塊對主時鐘進行10分頻得到3 MHz同步時鐘信號o_clk,。同時,,該模塊還要控制數(shù)據(jù)采樣、A/D轉(zhuǎn)換以及數(shù)據(jù)的串并轉(zhuǎn)換,。在采樣時刻到來時,,在同步脈沖o_clk和片選信號cs(低電平有效)的控制下,依據(jù)ADS7817轉(zhuǎn)換時序圖進行采樣,、轉(zhuǎn)換,。轉(zhuǎn)換過程中計數(shù)o_clk脈沖,每12個脈沖置位cs為高電平,使結(jié)果僅輸出一次,,否則在DOUT端繼續(xù)從最低位到最高位依次輸出轉(zhuǎn)換結(jié)果。in_data是A/D轉(zhuǎn)換后的串行輸出數(shù)據(jù),,o_Para是對in_data經(jīng)過串并轉(zhuǎn)換后輸出的并行16 bit數(shù)據(jù),。
4.1.2 USB傳輸控制模塊
該模塊主要負責(zé)對USB芯片端點的讀寫控制。USB芯片端點FIFO用于數(shù)據(jù)的緩存,一方面存儲上位機發(fā)出的采集參數(shù)信息,,另一方面存儲FPGA輸出的并行16 bit采集數(shù)據(jù),。該模塊通過判斷端點FIFO的空、滿標志位來對USB端點2,、4,、6、8進行讀寫控制,。本系統(tǒng)采用異步FIFO讀,、寫控制模式,,該模塊用狀態(tài)機來實現(xiàn),將讀,、寫過程分別分成5個狀態(tài),,異步FIFO讀狀態(tài)機如圖4所示。
IDLE:當(dāng)“寫”事件發(fā)生時,,轉(zhuǎn)到狀態(tài)1,。
狀態(tài)1:指向OUT FIFO,激活FIFOADR[1:0],,轉(zhuǎn)向狀態(tài)2,。
狀態(tài)2:激活SLOE,如果FIFO空標志為“假”(FIFO 不空),,則轉(zhuǎn)向狀態(tài)3,;否則停留在狀態(tài)2。
狀態(tài)3:激活SLOE,,SLRD,,傳送數(shù)據(jù)到總線上;撤銷激活SLRD(指針加1)和SLOE,,轉(zhuǎn)向狀態(tài)4,。
狀態(tài)4:如果有更多的數(shù)據(jù)要求,則轉(zhuǎn)向狀態(tài)2,;否則轉(zhuǎn)向IDLE,。
4.1.3 通道選擇模塊
該模塊主要負責(zé)系統(tǒng)通道的選通,根據(jù)得到的采集參數(shù)信息選擇相應(yīng)的通道進行數(shù)據(jù)采集[3],。該模塊通過產(chǎn)生不同的電平,,來控制集成D觸發(fā)器SN74LS174的其中5個輸入端,從而達到選擇通道的目的,。
4.2 USB固件程序設(shè)計
本系統(tǒng)中數(shù)據(jù)通道分為采集數(shù)據(jù)上傳通道和控制字下傳通道,。根據(jù)設(shè)計需要進行配置,配置端點4,、6,、8為采集數(shù)據(jù)上傳通道,用于從FPGA向主機傳輸采集數(shù)據(jù),,采用塊傳輸模式,,512 B 2重緩沖,16 bit數(shù)據(jù)自動輸入模式,;配置端點2為控制字下傳通道,,用于傳送主機控制字到FPGA,采用塊傳輸模式,,512 B 2重緩沖,,16 bit自動輸出模式,。固件程序采用Cypress公司提供的固件程序框架,在其初始化函數(shù)中添加了用戶配置代碼,。改動部分代碼如下所示:
void TD_Init(void)
{...
EP2CFG=0xA2;
EP4CFG=EP6CFG=EP8CFG=0xE2;
EP2FIFOCFG=0x15;
EP4FIFOCFG=EP6FIFOCFG=EP6FIFOCFG=0x0D;
...
}
4.3 USB設(shè)備驅(qū)動程序設(shè)計
Cypress為其EZ-USB系列USB接口芯片提供了一個完整的開發(fā)包,,其中包括通用USB驅(qū)動程序。本系統(tǒng)按照設(shè)計要求,,在DDK平臺上修改通用USB驅(qū)動程序代碼,,生成本系統(tǒng)的驅(qū)動程序代碼。
4.4 上位機應(yīng)用程序設(shè)計
上位機應(yīng)用程序的作用就是提供一個人機交互的顯示界面,體現(xiàn)系統(tǒng)的運行狀態(tài),。這里采用Microsoft Visual C++ 6.0進行上位機應(yīng)用程序的設(shè)計,程序中采用CYAPI控制函數(shù)類,。CyAPI控制函數(shù)類為EZ-USB FX2LP系列USB接口芯片提供了十分精細的控制接口[4]。在使用Cypress公司提供的驅(qū)動程序基礎(chǔ)上,,只需在主機程序中加入頭文件CyAPI.h和庫文件CyAPI.lib即可調(diào)用相應(yīng)的控制函數(shù),。
5 FPGA核心模塊仿真
圖5是針對分頻采樣控制模塊的仿真時序。波形結(jié)果顯示該模塊在一個采樣周期內(nèi)能夠準確產(chǎn)生同步時鐘信號o_clk和片選信號cs,,并且串行輸入數(shù)據(jù)in_data經(jīng)過串并轉(zhuǎn)換后能夠準確無誤地并行輸出,。
本文創(chuàng)新點是設(shè)計了一款同時支持單端16路和差分8路模擬信號輸入、FPGA為核心控制和USB2.0為接口傳輸?shù)亩嗤ǖ?、實時,、高速、便攜式數(shù)據(jù)采集系統(tǒng),。本系統(tǒng)在Altera公司提供的Quartus II 8.0 集成開發(fā)環(huán)境下進行設(shè)計,、編譯、綜合,、優(yōu)化,、布局布線、驗證和仿真,,并成功下載到FPGA芯片中,。經(jīng)過長時間的測試,系統(tǒng)工作穩(wěn)定,、性能可靠,,說明了設(shè)計結(jié)構(gòu)的合理性,比較適合野外現(xiàn)場數(shù)據(jù)采集的場合,。
參考文獻
[1] 劉福奇.FPGA嵌入式項目開發(fā)實戰(zhàn)[M]. 北京:電子工業(yè)出版社,,2009.
[2] 薛園園.USB應(yīng)用開發(fā)技術(shù)大全[M]. 北京:人民郵電出版社,,2007:190-191.
[3] 李艷軍,,郭正剛,張志新,等.基于FPGA多通道同步數(shù)據(jù)采集系統(tǒng)設(shè)計[J].微計算機信息,,2007,,23(2-2):212-213.
[4] 戴小俊,,丁鐵夫,鄭喜鳳. 基于USB和DSP的數(shù)據(jù)采集系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,,2007,,33(1):84-86.