摘 要: 介紹了一種基于FPGA與USB2.0的雙通道實(shí)時(shí)數(shù)據(jù)采集與處理系統(tǒng)。該系統(tǒng)采用XC3S1200E芯片作為核心處理芯片,,CY7C68013作為USB接口芯片,,通過FPGA內(nèi)部的控制模塊控制A/D數(shù)據(jù)轉(zhuǎn)換和USB的數(shù)據(jù)傳輸,并在FPGA內(nèi)部完成數(shù)據(jù)的處理,。實(shí)驗(yàn)證明,,該系統(tǒng)基本能滿足設(shè)計(jì)的要求,計(jì)算出所求粒子的直徑,。
關(guān)鍵詞: 數(shù)據(jù)采集,;A/D;FPGA,;USB2.0
數(shù)據(jù)采集系統(tǒng)正越來越多地應(yīng)用于控制和測(cè)試領(lǐng)域,,在某些特定的領(lǐng)域,數(shù)據(jù)采集系統(tǒng)所起的作用也越來越大[1],。傳統(tǒng)的數(shù)據(jù)采集方法通常采用DSP作為核心芯片,,DSP雖然運(yùn)行速度快,但是不能完成外圍的硬件邏輯控制,。FPGA時(shí)鐘頻率相對(duì)較高且延時(shí)小,,F(xiàn)PGA采用IP內(nèi)核技術(shù),可以集成外圍控制和接口電路[2],。本文根據(jù)項(xiàng)目需要,,設(shè)計(jì)了一種基于FPGA的雙通道、最大采樣率為5 Mb/s的通用數(shù)據(jù)采集與實(shí)時(shí)處理系統(tǒng),。
1 系統(tǒng)方案設(shè)計(jì)
數(shù)據(jù)采集和處理系統(tǒng)主要由信號(hào)調(diào)理電路,、A/D轉(zhuǎn)換器、FPGA和USB四部分組成,,如圖1所示,。
信號(hào)調(diào)理電路的作用是對(duì)所采集的模擬信號(hào)進(jìn)行放大、濾波,,將單路信號(hào)轉(zhuǎn)變?yōu)椴罘中盘?hào),,驅(qū)動(dòng)A/D轉(zhuǎn)換器的正常工作。本文選用TI公司的全差動(dòng)運(yùn)算放大器THS4503,,它是模數(shù)轉(zhuǎn)換器ADS1605的數(shù)據(jù)手冊(cè)中推薦的運(yùn)算放大器[3],。
A/D轉(zhuǎn)換器在FPGA內(nèi)的控制模塊控制下,,將所采集的模擬信號(hào)轉(zhuǎn)換為16 bit的數(shù)字信號(hào),傳入FPGA中進(jìn)行處理,。本系統(tǒng)所采用的模數(shù)轉(zhuǎn)換器為TI公司的ADS1605,。
FPGA芯片采用的是Xilinx公司的Spartan 3E系列中的XC3S1200E。FPGA為本系統(tǒng)的核心部分,,控制A/D轉(zhuǎn)換器的數(shù)據(jù)轉(zhuǎn)換,,并將A/D轉(zhuǎn)換來的數(shù)據(jù)進(jìn)行FFT處理。同時(shí),,F(xiàn)PGA的USB接口控制邏輯查詢CY7C68013是否空閑,,控制USB將處理完的數(shù)據(jù)傳遞給主機(jī),并在PC機(jī)中顯示出來,,實(shí)現(xiàn)數(shù)據(jù)的可視化顯示和人機(jī)接口的互動(dòng),。
CY7C68013是Cypress公司推出的EZ-USB FX2系列的USB接口芯片,其作用是在FPGA的接口控制邏輯下,,把處理完的數(shù)據(jù)傳遞給主機(jī),。
本系統(tǒng)的工作原理為:該系統(tǒng)可以完成兩路中頻信號(hào)的采樣處理,,單路信號(hào)經(jīng)過THS4503后轉(zhuǎn)變?yōu)椴罘中盘?hào),,輸入到模數(shù)轉(zhuǎn)換器中,F(xiàn)PGA中的A/D控制模塊向ADS1605發(fā)送采樣控制指令,,A/D轉(zhuǎn)換器在控制模塊控制下進(jìn)行數(shù)據(jù)采集,,將模擬信號(hào)轉(zhuǎn)換成16 bit的數(shù)據(jù)信號(hào),并依次選通兩片A/D通道,,實(shí)現(xiàn)由A/D轉(zhuǎn)換器到FPGA的雙通道數(shù)據(jù)傳輸,。當(dāng)采集的數(shù)據(jù)達(dá)到處理?xiàng)l件后,相應(yīng)的數(shù)據(jù)在FPGA中進(jìn)行FFT計(jì)算,。計(jì)算完成后,,將處理過的數(shù)據(jù)在FPGA的USB接口控制邏輯下,經(jīng)過USB接口傳遞給主機(jī),,當(dāng)數(shù)據(jù)傳遞完成后,,再進(jìn)行下一次的數(shù)據(jù)采集和處理。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 信號(hào)調(diào)理電路
A/D轉(zhuǎn)換器的前端需要運(yùn)放來驅(qū)動(dòng),,本設(shè)計(jì)中的信號(hào)調(diào)理電路采用TI公司的全差動(dòng)運(yùn)算放大器THS4503,。經(jīng)過信號(hào)調(diào)理電路后,單路信號(hào)轉(zhuǎn)變?yōu)椴罘中盘?hào),,輸入到A/D轉(zhuǎn)換器中,。
全差動(dòng)放大器的特點(diǎn)為:具有高分辨率、高精度以及出色的動(dòng)態(tài)范圍,。THS4503就是一種高精度的全差動(dòng)運(yùn)放,,選擇它作為ADC的緩沖器可以簡化方案的設(shè)計(jì)[4],。
2.2 A/D轉(zhuǎn)換電路
A/D轉(zhuǎn)換電路是系統(tǒng)的重要組成部分,其與FPGA的連接如圖2所示,。
ADS1605是TI生產(chǎn)的一款高采樣率,、高精度、易使用的16 bit ΔΣ模數(shù)轉(zhuǎn)換器,,ADS1605的工作電源為+5 V的模擬電源和+3 V的數(shù)字電源,,獨(dú)立的數(shù)字I/O電源設(shè)計(jì)使芯片可靈活與其他邏輯芯片接口[3]。ADS1605需要外接時(shí)鐘源進(jìn)行工作,。本系統(tǒng)外接頻率為50 MHz的晶振時(shí)鐘源,,經(jīng)過FPGA分頻后,為ADS1605提供正常工作所需的頻率,。
ADS1605在FPGA的控制模塊下正常工作,。ADS1605的控制模塊對(duì)ADS1605的控制進(jìn)程為:
(1)狀態(tài)0:CS、RD置1,,RESET置0,,初始化ADS1605,進(jìn)入狀態(tài)1,。
(2)狀態(tài)1:CS置0,,RD置1,RESET置1,,開始數(shù)據(jù)轉(zhuǎn)換,,進(jìn)入狀態(tài)2。
(3)狀態(tài)2:CS置0,,RD置1,,RESET置1,檢測(cè)DRDY的狀態(tài),,若下降沿來臨,,進(jìn)入狀態(tài)3;否則,,繼續(xù)等待DRDY下降沿的到來,。
(4)狀態(tài)3:CS置0,RD[0]置0,,RESET置1,,輸出一通道轉(zhuǎn)換好的數(shù)據(jù),進(jìn)入狀態(tài)4,。
(5)狀態(tài)4:CS置0,,RD[1]置0,RESET置1,,輸出兩通道轉(zhuǎn)換好的數(shù)據(jù),,進(jìn)入初始狀態(tài),。
2.3 FPGA的設(shè)計(jì)
本系統(tǒng)采用的是Xilinx公司的Spartan 3E系列的XC3S1200E芯片,它更好地利用了90 nm工藝,,擁有的系統(tǒng)門數(shù)達(dá)到120萬,,28個(gè)乘法器,504 KB的塊RAM,,136 KB的分布式RAM,,8個(gè)數(shù)字時(shí)鐘管理模塊,最大可用管腳可達(dá)304個(gè),,它性價(jià)比也較高[2],。
XC3S1200E是基于SRAM工藝的查找表結(jié)構(gòu),它不具備非易失特性,,因此斷電后將丟失內(nèi)部邏輯配置,。在每次上電后,都需要從外部非易失存儲(chǔ)器(如PROM,、Flash存儲(chǔ)器等)中導(dǎo)入配置比特流,。本系統(tǒng)選用的是XCF04S芯片,這是FPGA數(shù)據(jù)手冊(cè)上提供的配置芯片[5],。
FPGA是本系統(tǒng)的核心部分,,構(gòu)成了數(shù)據(jù)采集系統(tǒng)和數(shù)據(jù)傳輸系統(tǒng)的“橋梁”,完成了對(duì)ADS的控制,,并對(duì)采集到的數(shù)據(jù)進(jìn)行存儲(chǔ)和處理,,同時(shí)也完成了對(duì)CY7C68013的控制,。使用FPGA使電路得到了簡化,,不需要額外的分立器件來存儲(chǔ)數(shù)據(jù)。在FPGA內(nèi)部構(gòu)成了以下幾個(gè)模塊,。
(1)兩片F(xiàn)IFO數(shù)據(jù)存儲(chǔ)模塊
FIFO數(shù)據(jù)存儲(chǔ)模塊主要用來存儲(chǔ)A/D轉(zhuǎn)換的數(shù)據(jù),。由于需要同時(shí)采集兩路信號(hào)(一路熒光信號(hào),一路多普勒信號(hào)),,因此需要兩個(gè)FIFO模塊,,這樣易于對(duì)數(shù)據(jù)的存儲(chǔ)和控制。
(2)數(shù)據(jù)處理模塊
本系統(tǒng)需要把采集到的數(shù)據(jù)進(jìn)行處理,,所以數(shù)據(jù)處理模塊是很重要的組成部分,。
在數(shù)據(jù)處理模塊中,首先將一路通道采集到的熒光信號(hào)數(shù)據(jù)進(jìn)行32個(gè)數(shù)據(jù)的求平均操作,,以預(yù)觸發(fā)兩個(gè)通道的信號(hào),,然后再對(duì)一路通道的數(shù)據(jù)進(jìn)行最大值和最小值計(jì)算,通過這兩個(gè)數(shù)據(jù)求出熒光信號(hào)的寬度,。對(duì)另一通道中的多普勒信號(hào)進(jìn)行FFT計(jì)算,。通過兩通道得到的數(shù)據(jù)計(jì)算出所求粒子的直徑,。
(3)控制模塊
控制模塊主要完成對(duì)ADS1605、FIFO存儲(chǔ)模塊和CY7C68013的控制,,這是整個(gè)系統(tǒng)的關(guān)鍵,。控制模塊將產(chǎn)生控制信號(hào),,實(shí)現(xiàn)系統(tǒng)的數(shù)據(jù)采集,、處理和傳輸功能。
(4)分頻倍頻模塊
系統(tǒng)提供的FPGA外部時(shí)鐘頻率為50 MHz,,經(jīng)過分頻倍頻模塊將外部時(shí)鐘轉(zhuǎn)換成各個(gè)芯片工作所需的頻率,。
2.4 USB的設(shè)計(jì)
2.4.1 USB與FPGA的接口設(shè)計(jì)
在USB設(shè)計(jì)中,為了保持較高的傳輸速度,,使用不經(jīng)過CPU的SLAVEFIFO控制模式,。
接口方式如圖3所示:
本系統(tǒng)選用的芯片是Cypress公司的CY7C68013芯片。該模塊的工作過程為:當(dāng)采集的數(shù)據(jù)在FPGA中處理完后,,F(xiàn)PGA根據(jù)SLAVEFIFO的控制時(shí)序產(chǎn)生相應(yīng)的控制信號(hào),,將在FPGA中的數(shù)據(jù)傳輸給EZ-IJSB FX2的內(nèi)部端點(diǎn)FIFO,而當(dāng)內(nèi)部端點(diǎn)存儲(chǔ)滿后,,F(xiàn)X2自動(dòng)將數(shù)據(jù)傳輸?shù)絇C機(jī)上[6],。外部控制器FPGA對(duì)FX2的控制進(jìn)程如下:
(1)IDLE:空閑狀態(tài),此時(shí)如果寫事件發(fā)生,,將轉(zhuǎn)向狀態(tài)1,。
(2)狀態(tài)1:指向IN FIFO,觸發(fā)FIFOADR[1:0],,轉(zhuǎn)向狀態(tài)2,。
(3)狀態(tài)2:如果FIFO滿標(biāo)志為假,則轉(zhuǎn)向狀態(tài)3,;否則,,保持在狀態(tài)2。
(4)狀態(tài)3:驅(qū)動(dòng)數(shù)據(jù)到總線上,,通過觸發(fā)SLWR來寫數(shù)據(jù)到FIFO,,并增加FIFO指針,然后轉(zhuǎn)向狀態(tài)4,。
(5)狀態(tài)4:如果還有數(shù)據(jù)寫,,轉(zhuǎn)向狀態(tài)2,否則,,轉(zhuǎn)向IDLE,。
2.4.2 USB接口芯片固件程序
固件程序是指運(yùn)行設(shè)備CPU中的程序,只有在運(yùn)行該程序的時(shí)候,外設(shè)才能稱為具有給定功能的外圍設(shè)備,。在該系統(tǒng)中,,CY7C68013芯片的固件程序的主要功能就是輔助硬件系統(tǒng)工作,完成對(duì)設(shè)備的初始化,,處理應(yīng)用程序和驅(qū)動(dòng)程序發(fā)送的各種命令和數(shù)據(jù)交換,。
Cypress公司為使用FX2芯片的用戶提供了一個(gè)完整的固件開發(fā)框架,用戶只需要在框架的基礎(chǔ)上提供一個(gè)USB描述符表,,添加其他端點(diǎn)接收和發(fā)送數(shù)據(jù)的通信代碼以及控制外圍電路的程序代碼,,即可完成固件的開發(fā)。該固件所使用的編程工具是Keil公司的C51編譯器[6],。
本文主要介紹了基于Xilinx公司XC3S1200E FPGA的數(shù)據(jù)采集與實(shí)時(shí)處理系統(tǒng),,采用計(jì)算機(jī)的USB接口作為數(shù)據(jù)傳輸接口。本系統(tǒng)利用FPGA內(nèi)部模塊來實(shí)現(xiàn)數(shù)據(jù)處理,,采用Verilog生成的狀態(tài)機(jī)來控制各個(gè)模塊的連接,,實(shí)現(xiàn)數(shù)據(jù)的采集、轉(zhuǎn)換,、處理和傳輸,。本文的創(chuàng)新點(diǎn)在于:利用FPGA生成了各個(gè)接口的控制模塊,并利用FPGA內(nèi)部的IP核完成了對(duì)數(shù)據(jù)的FFT計(jì)算,,簡化了硬件的設(shè)計(jì),,使系統(tǒng)變的簡潔。在應(yīng)用中可以根據(jù)任務(wù)的不同改換內(nèi)部的數(shù)據(jù)處理模塊,,使系統(tǒng)可以靈活地處理各種數(shù)據(jù)采集處理任務(wù),。
參考文獻(xiàn)
[1] 沈蘭蓀.數(shù)據(jù)采集技術(shù)[M].北京:中國科學(xué)技術(shù)大學(xué)出版社,1990.
[2] 田耘,,徐文波,,胡彬.Xilinx ISE design suite 10.x FPGA開發(fā)指南[M].北京:人民郵電出版社,2008.
[3] Texas Instruments. ADS1605 data book.2007.5.
[4] Texas Instruments.THS4503 data book.2004.
[5] Xilinx.Xilinx Spartan-3E FPGA family data sheet,,2009.8.
[6] 薛園園.USB應(yīng)用開發(fā)技術(shù)大全[M].北京:人民郵電出版社,,2007.