王寅超,鄭正奇
(華東師范大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 200241)
數(shù)據(jù)采集技術(shù)在工業(yè)測量與控制,自動(dòng)化測試等領(lǐng)域有著廣泛的應(yīng)用,筆者以多通道測距雷達(dá)信號(hào)的采集為研究背景,開發(fā)了一種以FPGA為核心的多通道數(shù)據(jù)采集系統(tǒng),由于FPGA采用硬件描述語言進(jìn)行模塊化編程,在無需對系統(tǒng)硬件做任何調(diào)整的情況下便可對系統(tǒng)功能進(jìn)行修改和升級。
將USB2.0接口作為系統(tǒng)的數(shù)據(jù)接口,將各通道的采樣數(shù)據(jù)發(fā)送至上位機(jī),既保證了采樣數(shù)據(jù)的傳輸速度,又使該系統(tǒng)具備了即插即用的特性,還可使用VC、LabVIEW等多種程序語言進(jìn)行上位機(jī)程序的編寫,提高了軟件開發(fā)的靈活性。
本數(shù)據(jù)采集系統(tǒng)最多可以對8路模擬信號(hào)進(jìn)行采樣,其系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)框圖Fig.1 System block diagram
AD轉(zhuǎn)換器件選用AD公司的AD7829[1],其最高采樣率為2 MSPS,采樣位數(shù)8位,數(shù)據(jù)接口類型為并口,有8路模擬信號(hào)輸入并自帶模擬開關(guān)以及采樣保持電路,內(nèi)部參考電壓為2.5 V。
USB接口芯片采用Cypress公司的CY7C68013A[2],內(nèi)置增強(qiáng)型8 051處理器和USB2.0引擎,向下兼容USB 1.1協(xié)議,并具有GPIF接口可與多種外設(shè)相連。使用keil3作為USB固件的開發(fā)平臺(tái)。
FPGA選擇Altera公司的EP1C12Q240C8[3],具有兩個(gè)PLL,12 060個(gè)邏輯單元,可以實(shí)現(xiàn)復(fù)雜的邏輯功能,并能構(gòu)建一定深度的緩存空間。FPGA的程序使用Verilog硬件描述語言在QuartusII平臺(tái)下編寫。
本設(shè)計(jì)中通過FPGA產(chǎn)生AD7829的采樣控制邏輯[4],并通過在FPGA中構(gòu)建一定深度的FIFO來實(shí)現(xiàn)采樣數(shù)據(jù)的緩沖。
AD7829的采樣邏輯如圖2所示。
圖2 AD7829的采樣時(shí)序邏輯Fig.2 AD7829 parallel port timing diagram
FPGA對于AD采樣的控制邏輯按照圖2的時(shí)序要求來設(shè)計(jì)[5],主要分為兩個(gè)模塊:帶PWM功能的采樣時(shí)鐘發(fā)生模塊和采樣過程控制模塊,具體工作過程如下:首先由FPGA產(chǎn)生頻率為2 MHz、占空比為80%的采樣頻率來啟動(dòng)AD7829的模數(shù)轉(zhuǎn)化,然后FPGA在每次接收到AD7829反饋的轉(zhuǎn)換完成信號(hào)EOC后,分別控制CS,RD的狀態(tài),從而得到每次轉(zhuǎn)換的有效數(shù)據(jù)。
在每次轉(zhuǎn)換過程中FPGA通過控制AD7829的模擬開關(guān)控制位A0-A2(二進(jìn)制000-111分別對應(yīng)AD7829的1-8通道)來選擇當(dāng)前轉(zhuǎn)換的模擬通道,在本設(shè)計(jì)中,F(xiàn)PGA在每次模數(shù)轉(zhuǎn)換完成后對模擬開關(guān)控制位進(jìn)行加1操作,從而實(shí)現(xiàn)了對8通道信號(hào)的輪流采集。由于本系統(tǒng)采樣時(shí)鐘為2 MHz,因此8路信號(hào)的單路采樣率為250 KSPS。若要對采集的通道總數(shù)進(jìn)行更改,只需對FPGA邏輯中控制通道模擬開關(guān)的部分稍作修改即可。
AD采樣邏輯的FPGA仿真時(shí)序如圖3所示。
圖3 FPGA仿真時(shí)序Fig.3 FPGA simulation timing diagram
利用QuartusII提供的IP核,在FPGA中構(gòu)建一塊異步FIFO作為采樣數(shù)據(jù)的緩存器[5]。在每次得到的有效采樣數(shù)據(jù)后,F(xiàn)PGA將8位轉(zhuǎn)換數(shù)據(jù)與其對應(yīng)的通道號(hào)碼 (A0-A2)進(jìn)行拼接后存入該異步 FIFO中(見圖3中的data_add),等待通過USB接口發(fā)送到上位機(jī)進(jìn)行進(jìn)一步的數(shù)字信號(hào)處理。
在本設(shè)計(jì)中異步FIFO的寫入時(shí)鐘 (見圖3中的fifowdclk)根據(jù)AD7829的采樣邏輯而產(chǎn)生,以保證寫入時(shí)鐘上升沿到來時(shí),AD7829的數(shù)據(jù)線處于有效數(shù)據(jù)狀態(tài),因此其頻率與系統(tǒng)的采樣頻率相同,也為2 MHz,而異步FIFO的讀取時(shí)鐘高達(dá)48 MHz(由CY7C68013A的 IFCLK提供),因此只要設(shè)置合適的FIFO深度和讀取時(shí)機(jī)就可以避免出現(xiàn)異步FIFO溢出的情況,從而確保多通道采樣數(shù)據(jù)能夠被及時(shí)發(fā)送至上位機(jī)。
本設(shè)計(jì)中采用USB2.0接口傳輸AD采樣得到的數(shù)據(jù),USB2.0接口在高速模式下的最大傳輸速率高達(dá)480 Mb/s,完全滿足本數(shù)據(jù)采集系統(tǒng)對傳輸速率的要求,且能夠通過相應(yīng)的設(shè)備驅(qū)動(dòng)進(jìn)行自動(dòng)配置,實(shí)現(xiàn)即插即用。
USB接口芯片選用CY7C68013A,在FPGA數(shù)據(jù)采集模塊和上位機(jī)之間建立通信。
通用可編程接口(GPIF)是CY7C68013A內(nèi)部端點(diǎn)FIFO的主控制器[6],它的作用是將USB端點(diǎn)FIFO與外設(shè)FIFO進(jìn)行邏輯連接,從而控制數(shù)據(jù)的讀寫操作。
在本設(shè)計(jì)中,CY7C68013A與FPGA通過GPIF接口相連,如圖4所示,其中FIFO_RCLK和REN#分別是構(gòu)建在FPGA內(nèi)部的異步FIFO的讀取時(shí)鐘和讀使能信號(hào),具體工作過程如下:通過AD采樣得到的有效數(shù)據(jù)存儲(chǔ)在FPGA內(nèi)的異步FIFO中,當(dāng)FIFO達(dá)到半滿狀態(tài)時(shí),F(xiàn)PGA產(chǎn)生一個(gè)Data_Ready信號(hào)通知CY7C68013A通過GPIF接口將這些數(shù)據(jù)讀入其USB端點(diǎn)的內(nèi)部FIFO中。
圖4 GPIF硬件連接Fig.4 GPIF hardware connection
USB固件通過Keil3軟件進(jìn)行編寫,Cypress公司提供固件工程的基本架構(gòu)[7],在多數(shù)情況下,只需在此架構(gòu)中添加功能代碼就可以實(shí)現(xiàn)相應(yīng)的功能。
而對于包含GPIF接口控制的固件設(shè)計(jì)來說,還需要使用Cypress公司提供的 GPIF Designer軟件,根據(jù)不同外設(shè)的特定時(shí)序要求,對GPIF接口的讀寫時(shí)序進(jìn)行設(shè)置,生成GPIF波形文件并導(dǎo)出相應(yīng)的.C文件,添加到固件工程中,并對其進(jìn)行調(diào)用,以實(shí)現(xiàn)GPIF波形的設(shè)計(jì)功能。
在本設(shè)計(jì)中,固件程序檢測FPGA的Data_Ready信號(hào),一旦該信號(hào)為高電平則通過啟動(dòng)預(yù)先設(shè)置好的GPIF波形邏輯,將FPGA內(nèi)異步FIFO的數(shù)據(jù)讀入U(xiǎn)SB端點(diǎn)的FIFO中,并進(jìn)行發(fā)送,實(shí)現(xiàn)了AD采樣數(shù)據(jù)向上位機(jī)的傳輸。
通過Cypress公司提供的調(diào)試軟件Cypress USB Console,可對CY7C68013A進(jìn)行固件下載和簡單的調(diào)試,同時(shí)此軟件還提供適用于CY7C68013A的驅(qū)動(dòng)程序,以及豐富的API函數(shù),使用VC編寫上位機(jī)程序的時(shí)只需將CyAPI.h和CyAPI.l ib添加到MFC工程中[7],便可直接調(diào)用這些API函數(shù),對USB接口的數(shù)據(jù)讀寫操作進(jìn)行控制,從而大大降低了編寫上位機(jī)程序的難度和周期。
此外,還可以利用LabVIEW的VISA軟件,根據(jù)固件中配置的VenderID和ProductID直接生成適用于LabVIEW程序的USB驅(qū)動(dòng),從而在本數(shù)據(jù)采集系統(tǒng)和LabVIEW之間建立通信,直接利用LabVIEW編寫上位機(jī)程序。
本系統(tǒng)使用FPGA控制數(shù)據(jù)采集和緩存,以USB2.0作為數(shù)據(jù)傳輸接口,實(shí)現(xiàn)了單路最高采樣率達(dá)250 KSPS(8路情況下)的多通道數(shù)據(jù)采集和發(fā)送功能,經(jīng)實(shí)驗(yàn)驗(yàn)證可以對多路測距雷達(dá)信號(hào)進(jìn)行采集。
同時(shí),該系統(tǒng)也具有較強(qiáng)的通用性和擴(kuò)展性,通過使用采樣率和采樣精度更高的AD轉(zhuǎn)換器件,并對FPGA邏輯進(jìn)行升級,便可使其適用于更為廣泛的數(shù)據(jù)采集場合。
[1]Analog Device.AD7822/AD7825AD7829 datasheet[EB/OL].(2006).http://www.analog.com/static/imported-files/data_sheets/AD7822_7825_7829.pdf.
[2]Cypress Semiconductor.EZ-USB FX2 Technical Reference Manual [EB/OL].[2011-09-15].http://www.cypress.com/docID=27095.
[3]Altera Corporation.Cyclone Device Handbook[EB/OL].[2011-09 -15].http://www.altera.com.cn/literature/hb/cyc/cyc_c5v1.pdf.
[4]王金明.數(shù)字系統(tǒng)設(shè)計(jì)與Verilog HDL[M].北京:電子工業(yè)出版社,2009.
[5]于亞萍,錢建平.基于FPGA數(shù)據(jù)采集系統(tǒng)的研究[J].工業(yè)控制計(jì)算機(jī),2007,20(7):33-34.
YU Ya-ping,QIAN Jian-ping.Data acquisition system research based FPGA [J].Industrial Control Computer,2007,20(7):33-34.
[6]荊蕾,黃惟公,徐鵬,等.基于GPIF的高速數(shù)據(jù)采集方案設(shè)計(jì)[J].儀表技術(shù),2007(12):23-24+27.
JING Lei,HUANG Wei-gong,XU Peng,et al.A design of high speed sampling based on GPIF[J].Instrumentation Technology,2007(12):23-24+27.
[7]李英偉,王成儒,練秋生,等.USB2.0原理與工程開發(fā)[M].2版.北京:國防工業(yè)出版社,2007.