《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2011年第5期
張思杰, 趙 泰, 汪振興, 石 嶺
重慶大學(xué) 通信工程學(xué)院, 重慶 400030
摘要: 介紹了一種高速實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)。該系統(tǒng)以FPGA作為邏輯控制的核心,以USB2.0作為與上位機(jī)數(shù)據(jù)傳輸?shù)慕涌冢芡瑫r(shí)支持單端16路和差分8路模擬信號(hào)輸入,最大采樣率為200 kHz,12位的轉(zhuǎn)換精度。描述了系統(tǒng)的主要組成和FPGA模塊化設(shè)計(jì)的實(shí)現(xiàn)方法,并給出了其核心模塊的時(shí)序仿真波形圖。
中圖分類(lèi)號(hào): TP274
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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)中通常采用單片機(jī)或DSP作為控制模塊,控制A/D轉(zhuǎn)換、存儲(chǔ)和其他外圍電路的工作,利用PCI、ISA等接口與上位機(jī)進(jìn)行通信。隨著數(shù)據(jù)采集對(duì)速度、實(shí)時(shí)性、簡(jiǎn)易性的要求越來(lái)越高,傳統(tǒng)數(shù)據(jù)采集系統(tǒng)的弊端也日趨明顯。近年來(lái)隨著FPGA技術(shù)和USB技術(shù)的應(yīng)用深度和廣度的不斷加大,利用FPGA芯片和USB接口設(shè)計(jì)高速數(shù)據(jù)采集系統(tǒng)成為新的研究熱點(diǎn)。FPGA芯片不僅體積小、功耗低、時(shí)鐘頻率高、內(nèi)部時(shí)延小,而且能夠使用VHDL語(yǔ)言來(lái)編程實(shí)現(xiàn)程序的并行執(zhí)行,配置靈活,開(kāi)發(fā)周期短,性能可靠。USB是一種高效、快速、價(jià)格低廉、體積小并支持熱插拔的新型串行通信接口,目前USB2.0的高速傳輸速率能夠達(dá)到480 Mb/s,能夠?qū)崿F(xiàn)數(shù)據(jù)的高速傳輸。
1 系統(tǒng)總體結(jié)構(gòu)
    本設(shè)計(jì)采用FPGA+USB的設(shè)計(jì)思路,利用FPGA芯片作為系統(tǒng)的邏輯控制核心,通過(guò)USB 2.0接口與上位機(jī)通信,實(shí)現(xiàn)單端16路/差分8路模擬數(shù)據(jù)的高速、實(shí)時(shí)、便攜式的采集。本文設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)劃分為A/D轉(zhuǎn)換電路、FPGA采集控制和USB傳輸控制器等若干部分。如圖1所示。

    本數(shù)據(jù)采集系統(tǒng)支持單端16路和差分8路模擬信號(hào)輸入,每路12 bit的轉(zhuǎn)換精度,最高采樣率為200 kHz。主機(jī)應(yīng)用程序首先向USB控制器發(fā)出采樣時(shí)控包,在時(shí)控包中設(shè)置采集通道及其采樣頻率。進(jìn)而USB控制器觸發(fā)FPGA采集信息,F(xiàn)PGA根據(jù)時(shí)控包開(kāi)始啟動(dòng)A/D進(jìn)行模數(shù)轉(zhuǎn)換,轉(zhuǎn)換結(jié)束后,F(xiàn)PGA接受A/D輸出的12 bit串行數(shù)據(jù),并通過(guò)串并轉(zhuǎn)換將它轉(zhuǎn)換成16 bit并行數(shù)據(jù)輸出。然后將采集到的數(shù)據(jù)信息通過(guò)USB控制器發(fā)送給主機(jī),最后由主機(jī)做進(jìn)一步信息處理。
2 主要芯片選型
    本數(shù)據(jù)采集系統(tǒng)用到的主要芯片包括FPGA芯片、A/D轉(zhuǎn)換芯片和USB傳輸控制芯片。
2.1 FPGA芯片的選取
     依據(jù)本系統(tǒng)設(shè)計(jì)的需要選用Altera公司的Cyclone II系列EP2C8Q208C8。該芯片內(nèi)部邏輯單元8 256個(gè),有165 888個(gè)RAM位,182個(gè)可用I/O口,系統(tǒng)時(shí)鐘頻率高于260 MHz,只需要3.3 V和1.2 V的工作電壓,完全能夠滿(mǎn)足設(shè)計(jì)的要求。
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單片機(jī)、4 KB FIFO存儲(chǔ)器以及通用可編程接口(GPIF)、串行接口引擎(SIE)和USB2.0收發(fā)器,可與任何ASIC或DSP進(jìn)行接合,并且還支持所有通用總線(xiàn)標(biāo)準(zhǔn),性?xún)r(jià)比較高。USB2.0協(xié)議提供480 Mb/s的傳輸速度,因此CY7C68013是USB2.0的完整解決方案。
3 系統(tǒng)硬件設(shè)計(jì)方案實(shí)現(xiàn)
3.1 FPGA與ADC及模擬多路開(kāi)關(guān)的電路設(shè)計(jì)

    系統(tǒng)選用8通道模擬多路開(kāi)關(guān)CD4501和SN74LS174集成D觸發(fā)器組合構(gòu)成FPGA信號(hào)采集控制的輸入通道。本系統(tǒng)要求支持單端16路和差分8路模擬信號(hào)輸入,因此使用2片CD4501來(lái)實(shí)現(xiàn)最大16路模擬輸入通道的多路復(fù)用。在選擇單端或差分輸入時(shí),通過(guò)硬件開(kāi)關(guān)來(lái)實(shí)現(xiàn)。在一個(gè)采樣周期內(nèi),選擇哪路模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換由FPGA控制D觸發(fā)器SN74LS174其中的5個(gè)D輸入端的電平高低來(lái)選擇通道實(shí)現(xiàn)。每路模擬信號(hào)都要經(jīng)過(guò)多路模擬開(kāi)關(guān)選擇通道后,再送入A/D芯片的輸入端,如圖2所示。本方案中,FPGA為采樣通道SN74LS174提供30 MHz的時(shí)鐘CLK1及復(fù)位信號(hào)CLR,為A/D芯片提供3 MHz的同步時(shí)鐘信號(hào)DCLK和片選信號(hào)CS,從而使A/D芯片對(duì)相應(yīng)的通道進(jìn)行數(shù)據(jù)轉(zhuǎn)換。

 

 

3.2 FPGA與USB芯片的連接設(shè)計(jì)
    當(dāng)EZ-USB FX2LP工作于Slave FIFO模式時(shí),外圍電路可以像普通FIFO一樣對(duì)EZ-USB FX2LP中的端點(diǎn)數(shù)據(jù)緩沖區(qū)進(jìn)行讀寫(xiě)[2]。本系統(tǒng)采用FPGA作為主控制器,因而,對(duì)USB控制采用Slave FIFO模式,F(xiàn)PGA通過(guò)控制CY7C68013內(nèi)4 KB的FIFO進(jìn)行與上位機(jī)之間的數(shù)據(jù)傳輸。FPGA與USB芯片的硬件連接如圖3所示。

4 系統(tǒng)軟件設(shè)計(jì)
    系統(tǒng)軟件設(shè)計(jì)主要包括FPGA控制邏輯設(shè)計(jì)、USB固件程序設(shè)計(jì)、USB設(shè)備驅(qū)動(dòng)程序和上位機(jī)應(yīng)用程序。
4.1 FPGA設(shè)計(jì)
    FPGA程序的設(shè)計(jì)是整個(gè)采集系統(tǒng)的關(guān)鍵,整體分成三大模塊:分頻采樣控制模塊、通道選擇模塊和USB傳輸控制模塊。以下是各個(gè)模塊設(shè)計(jì)的具體介紹。
4.1.1 分頻采樣控制模塊
    本系統(tǒng)中,F(xiàn)PGA的主時(shí)鐘m_clk由USB芯片輸出的30 MHz頻率提供,由于A/D采樣需要3 MHz的時(shí)鐘頻率,因此首先模塊對(duì)主時(shí)鐘進(jìn)行10分頻得到3 MHz同步時(shí)鐘信號(hào)o_clk。同時(shí),該模塊還要控制數(shù)據(jù)采樣、A/D轉(zhuǎn)換以及數(shù)據(jù)的串并轉(zhuǎn)換。在采樣時(shí)刻到來(lái)時(shí),在同步脈沖o_clk和片選信號(hào)cs(低電平有效)的控制下,依據(jù)ADS7817轉(zhuǎn)換時(shí)序圖進(jìn)行采樣、轉(zhuǎn)換。轉(zhuǎn)換過(guò)程中計(jì)數(shù)o_clk脈沖,每12個(gè)脈沖置位cs為高電平,使結(jié)果僅輸出一次,否則在DOUT端繼續(xù)從最低位到最高位依次輸出轉(zhuǎn)換結(jié)果。in_data是A/D轉(zhuǎn)換后的串行輸出數(shù)據(jù),o_Para是對(duì)in_data經(jīng)過(guò)串并轉(zhuǎn)換后輸出的并行16 bit數(shù)據(jù)。
4.1.2 USB傳輸控制模塊
     該模塊主要負(fù)責(zé)對(duì)USB芯片端點(diǎn)的讀寫(xiě)控制。USB芯片端點(diǎn)FIFO用于數(shù)據(jù)的緩存,一方面存儲(chǔ)上位機(jī)發(fā)出的采集參數(shù)信息,另一方面存儲(chǔ)FPGA輸出的并行16 bit采集數(shù)據(jù)。該模塊通過(guò)判斷端點(diǎn)FIFO的空、滿(mǎn)標(biāo)志位來(lái)對(duì)USB端點(diǎn)2、4、6、8進(jìn)行讀寫(xiě)控制。本系統(tǒng)采用異步FIFO讀、寫(xiě)控制模式,該模塊用狀態(tài)機(jī)來(lái)實(shí)現(xiàn),將讀、寫(xiě)過(guò)程分別分成5個(gè)狀態(tài),異步FIFO讀狀態(tài)機(jī)如圖4所示。

    IDLE:當(dāng)“寫(xiě)”事件發(fā)生時(shí),轉(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ù)到總線(xiàn)上;撤銷(xiāo)激活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]。該模塊通過(guò)產(chǎn)生不同的電平,來(lái)控制集成D觸發(fā)器SN74LS174的其中5個(gè)輸入端,從而達(dá)到選擇通道的目的。
4.2 USB固件程序設(shè)計(jì)
    本系統(tǒng)中數(shù)據(jù)通道分為采集數(shù)據(jù)上傳通道和控制字下傳通道。根據(jù)設(shè)計(jì)需要進(jìn)行配置,配置端點(diǎn)4、6、8為采集數(shù)據(jù)上傳通道,用于從FPGA向主機(jī)傳輸采集數(shù)據(jù),采用塊傳輸模式,512 B 2重緩沖,16 bit數(shù)據(jù)自動(dòng)輸入模式;配置端點(diǎn)2為控制字下傳通道,用于傳送主機(jī)控制字到FPGA,采用塊傳輸模式,512 B 2重緩沖,16 bit自動(dòng)輸出模式。固件程序采用Cypress公司提供的固件程序框架,在其初始化函數(shù)中添加了用戶(hù)配置代碼。改動(dòng)部分代碼如下所示:
    void TD_Init(void)
    {...
         EP2CFG=0xA2;
         EP4CFG=EP6CFG=EP8CFG=0xE2;
        EP2FIFOCFG=0x15;
        EP4FIFOCFG=EP6FIFOCFG=EP6FIFOCFG=0x0D;
     ...
    }
4.3 USB設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)
    Cypress為其EZ-USB系列USB接口芯片提供了一個(gè)完整的開(kāi)發(fā)包,其中包括通用USB驅(qū)動(dòng)程序。本系統(tǒng)按照設(shè)計(jì)要求,在DDK平臺(tái)上修改通用USB驅(qū)動(dòng)程序代碼,生成本系統(tǒng)的驅(qū)動(dòng)程序代碼。
4.4 上位機(jī)應(yīng)用程序設(shè)計(jì)
    上位機(jī)應(yīng)用程序的作用就是提供一個(gè)人機(jī)交互的顯示界面,體現(xiàn)系統(tǒng)的運(yùn)行狀態(tài)。這里采用Microsoft Visual C++ 6.0進(jìn)行上位機(jī)應(yīng)用程序的設(shè)計(jì),程序中采用CYAPI控制函數(shù)類(lèi)。CyAPI控制函數(shù)類(lèi)為EZ-USB FX2LP系列USB接口芯片提供了十分精細(xì)的控制接口[4]。在使用Cypress公司提供的驅(qū)動(dòng)程序基礎(chǔ)上,只需在主機(jī)程序中加入頭文件CyAPI.h和庫(kù)文件CyAPI.lib即可調(diào)用相應(yīng)的控制函數(shù)。
5 FPGA核心模塊仿真
    圖5是針對(duì)分頻采樣控制模塊的仿真時(shí)序。波形結(jié)果顯示該模塊在一個(gè)采樣周期內(nèi)能夠準(zhǔn)確產(chǎn)生同步時(shí)鐘信號(hào)o_clk和片選信號(hào)cs,并且串行輸入數(shù)據(jù)in_data經(jīng)過(guò)串并轉(zhuǎn)換后能夠準(zhǔn)確無(wú)誤地并行輸出。

    本文創(chuàng)新點(diǎn)是設(shè)計(jì)了一款同時(shí)支持單端16路和差分8路模擬信號(hào)輸入、FPGA為核心控制和USB2.0為接口傳輸?shù)亩嗤ǖ?、?shí)時(shí)、高速、便攜式數(shù)據(jù)采集系統(tǒng)。本系統(tǒng)在Altera公司提供的Quartus II 8.0 集成開(kāi)發(fā)環(huán)境下進(jìn)行設(shè)計(jì)、編譯、綜合、優(yōu)化、布局布線(xiàn)、驗(yàn)證和仿真,并成功下載到FPGA芯片中。經(jīng)過(guò)長(zhǎng)時(shí)間的測(cè)試,系統(tǒng)工作穩(wěn)定、性能可靠,說(shuō)明了設(shè)計(jì)結(jié)構(gòu)的合理性,比較適合野外現(xiàn)場(chǎng)數(shù)據(jù)采集的場(chǎng)合。
參考文獻(xiàn)
[1] 劉福奇.FPGA嵌入式項(xiàng)目開(kāi)發(fā)實(shí)戰(zhàn)[M]. 北京:電子工業(yè)出版社,2009.
[2] 薛園園.USB應(yīng)用開(kāi)發(fā)技術(shù)大全[M]. 北京:人民郵電出版社,2007:190-191.
[3] 李艷軍,郭正剛,張志新,等.基于FPGA多通道同步數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007,23(2-2):212-213.
[4] 戴小俊,丁鐵夫,鄭喜鳳. 基于USB和DSP的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2007,33(1):84-86.

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