《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的USB接口數據采集系統(tǒng)設計
基于FPGA的USB接口數據采集系統(tǒng)設計
來源:電子技術應用2011年第5期
張思杰,, 趙 泰, 汪振興,, 石 嶺
重慶大學 通信工程學院,, 重慶 400030
摘要: 介紹了一種高速實時數據采集系統(tǒng)的設計。該系統(tǒng)以FPGA作為邏輯控制的核心,,以USB2.0作為與上位機數據傳輸的接口,,能同時支持單端16路和差分8路模擬信號輸入,,最大采樣率為200 kHz,12位的轉換精度。描述了系統(tǒng)的主要組成和FPGA模塊化設計的實現方法,,并給出了其核心模塊的時序仿真波形圖,。
中圖分類號: TP274
文獻標識碼: A
文章編號: 0258-7998(2011)05-0098-03
Design of data acquisition system based on USB and FPGA
Zhang Sijie, Zhao Tai, Wang Zhenxing, Shi Ling
Institute of Communications Engineering, Chongqing University, Chongqing 400030, China
Abstract: This paper introduces a high-speed and real-time data acquisition system. The system can support both single 16-route and differential 8-route analog signals input, with 200 kHz of maximal frequency and 12 bit of conversion accuracy, using FPGA as the core logic control and using USB2.0 as the interface of data transmission with the host computer. The main component of the system and the implementing method of FPGA are described and the simulation waveforms of main modules are presented.
Key words : FPGA; USB2.0; data acquisition; conversion accuracy


    傳統(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.

此內容為AET網站原創(chuàng),未經授權禁止轉載,。