【摘要】本課題設(shè)計了一套基于FPGA和USB2.0的便攜高速數(shù)據(jù)采集系統(tǒng),以FPGA最小片上系統(tǒng)為控制核心,對A/D轉(zhuǎn)換芯片TLC5510和USB2.0接口芯片CY7C68013的控制,來實現(xiàn)對信號的高速采集和傳輸。
【關(guān)鍵詞】數(shù)據(jù)采集;FPGA;USB2.0;A/D轉(zhuǎn)換
一、引言
近年來,對于數(shù)據(jù)采集系統(tǒng)的要求與日俱增,現(xiàn)代數(shù)據(jù)采集系統(tǒng)已經(jīng)從傳統(tǒng)的試驗測量中的數(shù)據(jù)采集與處理跨入到工業(yè)與過程控制。它已成為現(xiàn)代工業(yè)自動化的不可缺少的一個組成部分。
本課題是對EDA技術(shù)的應(yīng)用,即利用EDA工具實現(xiàn)基于FPGA的數(shù)據(jù)采集。本文按照EDA開發(fā)流程,采用Verilog語言對FPGA進(jìn)行編程來實現(xiàn)數(shù)據(jù)采集和傳輸?shù)墓δ?。用Verilog語言編寫代碼,進(jìn)行時序仿真,各模塊都在邏輯綜合工具QuartusⅡ下進(jìn)行綜合,并編程下載到FPGA芯片Cyclone IV系列EP4CE30F23C6芯片,經(jīng)A/D轉(zhuǎn)換器將模擬數(shù)據(jù)轉(zhuǎn)換成數(shù)字?jǐn)?shù)據(jù),再通過USB2.0接口電路送入PC機(jī)輸出。
二、系統(tǒng)總體設(shè)計
該系統(tǒng)主要由FPGA控制模塊、A/D轉(zhuǎn)換、USB接口部分組成,如圖1所示。
A/D轉(zhuǎn)換器將所要采集的模擬信號轉(zhuǎn)換成數(shù)字信號,由FPGA接收、緩沖、存儲,經(jīng)USB2.0端口傳回至主機(jī)工作站。高速A/D轉(zhuǎn)換器采用轉(zhuǎn)換速率為20MHz的TLC5510。
FPGA利用內(nèi)部的SRAM提供數(shù)據(jù)輸入/輸出的雙緩沖功能。采用雙緩沖的原因同USB中的大端點(diǎn)所配置的雙緩沖類似,均是防止數(shù)據(jù)的溢出和保證數(shù)據(jù)傳輸?shù)倪B續(xù)性。本文選用Altera公司的Cyclone系列芯片EP4CE30F23C6。
CY7C68013是Cypress公司推出的EZ-USB FX2系列智能USB接口芯片。其作用是把A/D轉(zhuǎn)換器采集的數(shù)據(jù)以高速的數(shù)據(jù)序列形式發(fā)送到主機(jī)。其中,USB2.0端口提供一個能和計算機(jī)連接的數(shù)據(jù)傳輸接口。
系統(tǒng)工作過程為:A/D轉(zhuǎn)換器在FPGA的ADC接口控制電路控制下,把模擬信號轉(zhuǎn)換成數(shù)字信號,并將指定通道的采樣數(shù)據(jù)存入FPGA內(nèi)部FIFO緩存。同時,F(xiàn)PGA的USB接口控制邏輯查詢CY7C68013是否空閑,如果空閑,那么由FPGA的USB接口控制邏輯將指定通道的采樣結(jié)果,從FPGA內(nèi)部FIFO緩存送入CY7C68013的內(nèi)部FIFO。當(dāng)內(nèi)部的FIFO容量達(dá)到一定程度后,CY7C68013自動將數(shù)據(jù)打包傳送到PC機(jī)。由于固件程序把CY7C68013設(shè)置為特定的自動模式,因此CY7C68013把數(shù)據(jù)送往PC機(jī)期間的所有操作無需CY7C68013中CPU的干預(yù),從而保證足夠的數(shù)據(jù)傳輸速率。采樣過程中FPGA的USB接口控制邏輯依次取走批量數(shù)據(jù),在USB接口打包傳送時A/D轉(zhuǎn)換持續(xù)進(jìn)行,F(xiàn)PGA內(nèi)部FIFO也被持續(xù)寫入轉(zhuǎn)換結(jié)果。
圖1 系統(tǒng)總體框圖
三、硬件設(shè)計
本系統(tǒng)的硬件主要分為兩個部分:A/D轉(zhuǎn)換芯片TLC5510和FPGA構(gòu)成的數(shù)據(jù)采集模塊,另一部分由FPGA和USB控制芯片CY7C68013構(gòu)成的數(shù)據(jù)傳輸模塊。
(1)數(shù)據(jù)采集模塊
經(jīng)過處理后的信號進(jìn)入模數(shù)轉(zhuǎn)換電路,選用的高速A/D芯片是TI公司的TLC5510。它是一種采用CMOS工藝制造的8位高阻抗并行A/D芯片,能提供的最小采樣率為20MSPS。由于TLC5510采用了半閃速結(jié)構(gòu)及CMOS工藝,因而大大減少了器件中比較器的數(shù)量,而且在高速轉(zhuǎn)換的同時能夠保持較低的功耗。TLC5510與FPGA的接口電路如圖2所示。
FPGA提供TLC5510 20MHz的工作時鐘和使能輸出信號OE,低電平有效。模擬信號經(jīng)過TLC5510轉(zhuǎn)換成數(shù)字信號后,將采樣數(shù)據(jù)傳給FPGA的FIFO保存。
圖2 FPGA與TLC5510的接口電路圖
(2)數(shù)據(jù)傳輸模塊
在數(shù)據(jù)傳輸模塊中,采用的是Cypress公司的EZ-USB FX2芯片CY7C68013。這是一款性能較高的USB2.0微控制器。在單芯片上集成了USB2.0收發(fā)器、SIE(串行接口引擎)、增強(qiáng)的8051微控制器和可編程的外圍接口。
為了保證較高的傳輸速度,使用不經(jīng)過CPU的SLAVE FIFO(從FIFO)控制工作模式。在該方式下FX2的CPU不直接參與USB數(shù)據(jù)處理,而是簡單地把FX2作為USB和外部數(shù)據(jù)處理邏輯之間的通道,數(shù)據(jù)流并不經(jīng)過CPU,而是通過FX2的FIFO直接傳輸。FIFO由外部控制器控制,外部控制器可像普通FIFO一樣對FX2的多層緩沖FIFO進(jìn)行讀寫;與此同時,F(xiàn)IFO提供外部控制器所需的時序信號、握手和輸出使能等信號。
在本設(shè)計中,采用Slave FIFO從機(jī)方式實現(xiàn)FPGA對FX2的控制。CY7C68013與FPGA的連接示意圖如圖3所示。修改FX2芯片提供的基本固件程序,設(shè)置端點(diǎn)EP2為輸出端點(diǎn),大小為1KB,F(xiàn)lagA為EP2緩存的空標(biāo)志,低電平有效;端點(diǎn)EP6為輸入端點(diǎn),大小為1KB,F(xiàn)lagC為EP6緩存的滿標(biāo)志,低電平有效。
模塊的基本工作過程為:當(dāng)A/D采樣數(shù)據(jù)存儲滿FPGA中的FIFO后,F(xiàn)PGA根據(jù)SLAVE FIFO的控制時序產(chǎn)生相應(yīng)的控制信號,將在FIFO中的數(shù)據(jù)傳輸給FX2的內(nèi)部端點(diǎn)FIFO,而當(dāng)內(nèi)部端點(diǎn)存儲滿后,F(xiàn)X2自動將數(shù)據(jù)傳輸?shù)絇C。外部控制器FPGA對FX2的控制進(jìn)程如下:
①分配FIFOAddr[1:0]=10,F(xiàn)IFO指針指向輸入端點(diǎn),檢查FIFO的滿標(biāo)志是否為1,假如Full=1,表示FIFO不滿,轉(zhuǎn)到②,否則保持在①;
圖3 CY7C68013與FPGA連接示意圖
②把外部數(shù)據(jù)indata放在FD上,同時將SLWR拉高,以使FIFO指針自動加1,然后轉(zhuǎn)到③;
③假如有更多的數(shù)據(jù)要傳輸,轉(zhuǎn)到②,否則轉(zhuǎn)到①。
四、軟件設(shè)計
數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計包括三個部分:FX2的固件程序,USB的驅(qū)動程序,F(xiàn)PGA控制模塊。
(1)EZ-USB FX2的固件設(shè)計
固件程序是指運(yùn)行在設(shè)備CPU中的程序。只有在該程序運(yùn)行時,外設(shè)才能稱為具有給定功能的外圍設(shè)備。Cypress公司為FX2固件開發(fā)提供了一個固件庫和固件框架,都是在Keil C51集成開發(fā)環(huán)境下開發(fā)的。固件庫提供了一些常量、數(shù)據(jù)結(jié)構(gòu)、宏、函數(shù)來簡化用戶對芯片的使用。固件框架實現(xiàn)了初始化芯片、處理USB標(biāo)準(zhǔn)設(shè)備請求以及掛起狀態(tài)下的電源管理等功能。該框架不添加任何代碼,編譯后生成的.HEX文件載入芯片就能和主機(jī)進(jìn)行基本的USB通信。用戶主要的工作就是選擇適合的傳輸方式,添加需要使用的端點(diǎn),在框架預(yù)留的地方添加初始化代碼和完成特定功能的代碼。這樣大大簡化了用戶對程序的編寫,在不十分了解USB2.0協(xié)議的情況下,也能通過代碼的編寫,實現(xiàn)USB的傳輸功能。
(2)USB的驅(qū)動程序
該系統(tǒng)需要通用驅(qū)動程序和下載固件的驅(qū)動程序。通用驅(qū)動程序完成與外設(shè)和用戶程序的通信及控制;而下載固件的驅(qū)動程序則只負(fù)責(zé)在外設(shè)連接USB總線后把特定的固件程序下載到FX2的RAM中,使FX2的CPU重啟,模擬斷開與USB總線連接,完成對外設(shè)的重新設(shè)置。FX2根據(jù)新的設(shè)置安裝通用驅(qū)動程序,重新枚舉外設(shè)為一個新的USB外設(shè)。
在Windows操作平臺下,當(dāng)有新的設(shè)備接入時,操作系統(tǒng)就會依據(jù)設(shè)備回送的有關(guān)信息自動的調(diào)用相應(yīng)的設(shè)備驅(qū)動程序。
(3)FPGA控制模塊。
在本系統(tǒng)中,F(xiàn)PGA構(gòu)成了數(shù)據(jù)采集系統(tǒng)和數(shù)據(jù)傳輸系統(tǒng)的橋梁,完成對TLC5510的控制和數(shù)據(jù)的存儲,同時也完成對EZ-USB FX2單片機(jī)的控制。因此在FPGA中需要構(gòu)成3個模塊:FIFO數(shù)據(jù)存儲模塊、控制模塊、時鐘分頻模塊。
FIFO數(shù)據(jù)存儲模塊主要完成對A/D轉(zhuǎn)換數(shù)據(jù)的存儲。每個FIFO存儲模塊的存儲容量定位2048B,可通過Mega Wizard工具來調(diào)用。
控制模塊要完成對TLC5510、FIFO存儲模塊和EZ-USB FX2的控制,這是整個系統(tǒng)的關(guān)鍵。根據(jù)系統(tǒng)實現(xiàn)的功能和各個模塊的控制時序,控制模塊將產(chǎn)生相應(yīng)的控制信號,實現(xiàn)系統(tǒng)的采集和存儲的功能。
系統(tǒng)提供的FPGA外部時鐘頻率為50MHz,通過分頻模塊產(chǎn)生TLC5510的最大采樣工作頻率20MHz。
五、結(jié)論
基于FPGA和USB2.0的數(shù)據(jù)采集系統(tǒng)滿足現(xiàn)代高速設(shè)備對傳輸速度的要求,解決了傳輸速度慢的瓶頸。通過FPGA的模塊設(shè)計、EZ-USB FX2的固件設(shè)計和上層應(yīng)用程序設(shè)計,實現(xiàn)了整個系統(tǒng)的數(shù)據(jù)采集與傳輸。
參考文獻(xiàn)
[1]劉克剛,陳曦,王衛(wèi)兵,等.復(fù)雜電子系統(tǒng)設(shè)計與實踐[M].北京:電子工業(yè)出版社,2010.
[2]潘松.EDA技術(shù)實用教程[M].北京:科學(xué)出版社,2006.3.
[3]齊洪喜.基于FPD&ASIC的專用USB接口設(shè)計與實現(xiàn)[D].山東大學(xué),2006.
作者簡介:馬玲(1981—),女,湖北武漢人,華中科技大學(xué)武昌分校講師,主要從事通信專業(yè)的教學(xué)與研究工作。