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