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