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