《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計
基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計
來源:電子技術(shù)應(yīng)用2011年第5期
張思杰, 趙 泰, 汪振興, 石 嶺
重慶大學(xué) 通信工程學(xué)院, 重慶 400030
摘要: 介紹了一種高速實時數(shù)據(jù)采集系統(tǒng)的設(shè)計。該系統(tǒng)以FPGA作為邏輯控制的核心,以USB2.0作為與上位機數(shù)據(jù)傳輸?shù)慕涌?,能同時支持單端16路和差分8路模擬信號輸入,最大采樣率為200 kHz,12位的轉(zhuǎn)換精度。描述了系統(tǒng)的主要組成和FPGA模塊化設(shè)計的實現(xiàn)方法,并給出了其核心模塊的時序仿真波形圖。
中圖分類號: TP274
文獻(xiàn)標(biāo)識碼: 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)的數(shù)據(jù)采集系統(tǒng)中通常采用單片機或DSP作為控制模塊,控制A/D轉(zhuǎn)換、存儲和其他外圍電路的工作,利用PCI、ISA等接口與上位機進(jìn)行通信。隨著數(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的高速傳輸速率能夠達(dá)到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è)置采集通道及其采樣頻率。進(jìn)而USB控制器觸發(fā)FPGA采集信息,F(xiàn)PGA根據(jù)時控包開始啟動A/D進(jìn)行模數(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ā)送給主機,最后由主機做進(jìn)一步信息處理。
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)部基準(zhǔn)電壓范圍為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進(jìn)行接合,并且還支持所有通用總線標(biāo)準(zhǔn),性價比較高。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),選擇哪路模擬信號進(jìn)行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)的通道進(jìn)行數(shù)據(jù)轉(zhuǎn)換。

 

 

3.2 FPGA與USB芯片的連接設(shè)計
    當(dāng)EZ-USB FX2LP工作于Slave FIFO模式時,外圍電路可以像普通FIFO一樣對EZ-USB FX2LP中的端點數(shù)據(jù)緩沖區(qū)進(jìn)行讀寫[2]。本系統(tǒng)采用FPGA作為主控制器,因而,對USB控制采用Slave FIFO模式,F(xiàn)PGA通過控制CY7C68013內(nèi)4 KB的FIFO進(jìn)行與上位機之間的數(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的時鐘頻率,因此首先模塊對主時鐘進(jìn)行10分頻得到3 MHz同步時鐘信號o_clk。同時,該模塊還要控制數(shù)據(jù)采樣、A/D轉(zhuǎn)換以及數(shù)據(jù)的串并轉(zhuǎn)換。在采樣時刻到來時,在同步脈沖o_clk和片選信號cs(低電平有效)的控制下,依據(jù)ADS7817轉(zhuǎn)換時序圖進(jì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傳輸控制模塊
     該模塊主要負(fù)責(zé)對USB芯片端點的讀寫控制。USB芯片端點FIFO用于數(shù)據(jù)的緩存,一方面存儲上位機發(fā)出的采集參數(shù)信息,另一方面存儲FPGA輸出的并行16 bit采集數(shù)據(jù)。該模塊通過判斷端點FIFO的空、滿標(biāo)志位來對USB端點2、4、6、8進(jìn)行讀寫控制。本系統(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空標(biāo)志為“假”(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 通道選擇模塊
    該模塊主要負(fù)責(zé)系統(tǒng)通道的選通,根據(jù)得到的采集參數(shù)信息選擇相應(yīng)的通道進(jìn)行數(shù)據(jù)采集[3]。該模塊通過產(chǎn)生不同的電平,來控制集成D觸發(fā)器SN74LS174的其中5個輸入端,從而達(dá)到選擇通道的目的。
4.2 USB固件程序設(shè)計
    本系統(tǒng)中數(shù)據(jù)通道分為采集數(shù)據(jù)上傳通道和控制字下傳通道。根據(jù)設(shè)計需要進(jìn)行配置,配置端點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進(jìn)行上位機應(yīng)用程序的設(shè)計,程序中采用CYAPI控制函數(shù)類。CyAPI控制函數(shù)類為EZ-USB FX2LP系列USB接口芯片提供了十分精細(xì)的控制接口[4]。在使用Cypress公司提供的驅(qū)動程序基礎(chǔ)上,只需在主機程序中加入頭文件CyAPI.h和庫文件CyAPI.lib即可調(diào)用相應(yīng)的控制函數(shù)。
5 FPGA核心模塊仿真
    圖5是針對分頻采樣控制模塊的仿真時序。波形結(jié)果顯示該模塊在一個采樣周期內(nèi)能夠準(zhǔn)確產(chǎn)生同步時鐘信號o_clk和片選信號cs,并且串行輸入數(shù)據(jù)in_data經(jīng)過串并轉(zhuǎn)換后能夠準(zhǔn)確無誤地并行輸出。

    本文創(chuàng)新點是設(shè)計了一款同時支持單端16路和差分8路模擬信號輸入、FPGA為核心控制和USB2.0為接口傳輸?shù)亩嗤ǖ馈崟r、高速、便攜式數(shù)據(jù)采集系統(tǒng)。本系統(tǒng)在Altera公司提供的Quartus II 8.0 集成開發(fā)環(huán)境下進(jìn)行設(shè)計、編譯、綜合、優(yōu)化、布局布線、驗證和仿真,并成功下載到FPGA芯片中。經(jīng)過長時間的測試,系統(tǒng)工作穩(wěn)定、性能可靠,說明了設(shè)計結(jié)構(gòu)的合理性,比較適合野外現(xiàn)場數(shù)據(jù)采集的場合。
參考文獻(xiàn)
[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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。