新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

作者: 時(shí)間:2011-07-22 來源:網(wǎng)絡(luò) 收藏

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

基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

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í)刻到來時(shí),在同步脈沖o_clk和片選信號(hào)cs(低電平有效)的控制下,依據(jù)ADS7817轉(zhuǎn)換時(shí)序圖進(jìn)行采樣、轉(zhuǎn)換。轉(zhuǎn)換過程中計(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)過串并轉(zhuǎn)換后輸出的并行16 bit數(shù)據(jù)。


4.1.2 USB傳輸控制模塊
  該模塊主要負(fù)責(zé)對(duì)USB芯片端點(diǎn)的讀寫控制。USB芯片端點(diǎn)FIFO用于數(shù)據(jù)的緩存,一方面存儲(chǔ)上位機(jī)發(fā)出的采集參數(shù)信息,另一方面存儲(chǔ)FPGA輸出的并行16 bit采集數(shù)據(jù)。該模塊通過判斷端點(diǎn)FIFO的空、滿標(biāo)志位來對(duì)USB端點(diǎn)2、4、6、8進(jìn)行讀寫控制。本系統(tǒng)采用異步FIFO讀、寫控制模式,該模塊用狀態(tài)機(jī)來實(shí)現(xiàn),將讀、寫過程分別分成5個(gè)狀態(tài),異步FIFO讀狀態(tài)機(jī)如圖4所示。

基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

IDLE:當(dāng)“寫”事件發(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ù)到總線上;撤銷激活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)行[3]。該模塊通過產(chǎn)生不同的電平,來控制集成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ù)中添加了用戶配置代碼。改動(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è)完整的開發(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ù)類。CyAPI控制函數(shù)類為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)過串并轉(zhuǎn)換后能夠準(zhǔn)確無誤地并行輸出。

基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

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


上一頁 1 2 下一頁

關(guān)鍵詞: FPGA USB2.0 數(shù)據(jù)采集

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉