王寅超,鄭正奇
(華東師范大學 信息科學與技術學院,上海 200241)
數據采集技術在工業測量與控制,自動化測試等領域有著廣泛的應用,筆者以多通道測距雷達信號的采集為研究背景,開發了一種以FPGA為核心的多通道數據采集系統,由于FPGA采用硬件描述語言進行模塊化編程,在無需對系統硬件做任何調整的情況下便可對系統功能進行修改和升級。
將USB2.0接口作為系統的數據接口,將各通道的采樣數據發送至上位機,既保證了采樣數據的傳輸速度,又使該系統具備了即插即用的特性,還可使用VC、LabVIEW等多種程序語言進行上位機程序的編寫,提高了軟件開發的靈活性。
本數據采集系統最多可以對8路模擬信號進行采樣,其系統框圖如圖1所示。

圖1 系統框圖Fig.1 System block diagram
AD轉換器件選用AD公司的AD7829[1],其最高采樣率為2 MSPS,采樣位數8位,數據接口類型為并口,有8路模擬信號輸入并自帶模擬開關以及采樣保持電路,內部參考電壓為2.5 V。
USB接口芯片采用Cypress公司的CY7C68013A[2],內置增強型8 051處理器和USB2.0引擎,向下兼容USB 1.1協議,并具有GPIF接口可與多種外設相連。使用keil3作為USB固件的開發平臺。
FPGA選擇Altera公司的EP1C12Q240C8[3],具有兩個PLL,12 060個邏輯單元,可以實現復雜的邏輯功能,并能構建一定深度的緩存空間。FPGA的程序使用Verilog硬件描述語言在QuartusII平臺下編寫。
本設計中通過FPGA產生AD7829的采樣控制邏輯[4],并通過在FPGA中構建一定深度的FIFO來實現采樣數據的緩沖。
AD7829的采樣邏輯如圖2所示。

圖2 AD7829的采樣時序邏輯Fig.2 AD7829 parallel port timing diagram
FPGA對于AD采樣的控制邏輯按照圖2的時序要求來設計[5],主要分為兩個模塊:帶PWM功能的采樣時鐘發生模塊和采樣過程控制模塊,具體工作過程如下:首先由FPGA產生頻率為2 MHz、占空比為80%的采樣頻率來啟動AD7829的模數轉化,然后FPGA在每次接收到AD7829反饋的轉換完成信號EOC后,分別控制CS,RD的狀態,從而得到每次轉換的有效數據。
在每次轉換過程中FPGA通過控制AD7829的模擬開關控制位A0-A2(二進制000-111分別對應AD7829的1-8通道)來選擇當前轉換的模擬通道,在本設計中,FPGA在每次模數轉換完成后對模擬開關控制位進行加1操作,從而實現了對8通道信號的輪流采集。由于本系統采樣時鐘為2 MHz,因此8路信號的單路采樣率為250 KSPS。若要對采集的通道總數進行更改,只需對FPGA邏輯中控制通道模擬開關的部分稍作修改即可。
AD采樣邏輯的FPGA仿真時序如圖3所示。

圖3 FPGA仿真時序Fig.3 FPGA simulation timing diagram
利用QuartusII提供的IP核,在FPGA中構建一塊異步FIFO作為采樣數據的緩存器[5]。在每次得到的有效采樣數據后,FPGA將8位轉換數據與其對應的通道號碼 (A0-A2)進行拼接后存入該異步 FIFO中(見圖3中的data_add),等待通過USB接口發送到上位機進行進一步的數字信號處理。
在本設計中異步FIFO的寫入時鐘 (見圖3中的fifowdclk)根據AD7829的采樣邏輯而產生,以保證寫入時鐘上升沿到來時,AD7829的數據線處于有效數據狀態,因此其頻率與系統的采樣頻率相同,也為2 MHz,而異步FIFO的讀取時鐘高達48 MHz(由CY7C68013A的 IFCLK提供),因此只要設置合適的FIFO深度和讀取時機就可以避免出現異步FIFO溢出的情況,從而確保多通道采樣數據能夠被及時發送至上位機。
本設計中采用USB2.0接口傳輸AD采樣得到的數據,USB2.0接口在高速模式下的最大傳輸速率高達480 Mb/s,完全滿足本數據采集系統對傳輸速率的要求,且能夠通過相應的設備驅動進行自動配置,實現即插即用。
USB接口芯片選用CY7C68013A,在FPGA數據采集模塊和上位機之間建立通信。
通用可編程接口(GPIF)是CY7C68013A內部端點FIFO的主控制器[6],它的作用是將USB端點FIFO與外設FIFO進行邏輯連接,從而控制數據的讀寫操作。
在本設計中,CY7C68013A與FPGA通過GPIF接口相連,如圖4所示,其中FIFO_RCLK和REN#分別是構建在FPGA內部的異步FIFO的讀取時鐘和讀使能信號,具體工作過程如下:通過AD采樣得到的有效數據存儲在FPGA內的異步FIFO中,當FIFO達到半滿狀態時,FPGA產生一個Data_Ready信號通知CY7C68013A通過GPIF接口將這些數據讀入其USB端點的內部FIFO中。

圖4 GPIF硬件連接Fig.4 GPIF hardware connection
USB固件通過Keil3軟件進行編寫,Cypress公司提供固件工程的基本架構[7],在多數情況下,只需在此架構中添加功能代碼就可以實現相應的功能。
而對于包含GPIF接口控制的固件設計來說,還需要使用Cypress公司提供的 GPIF Designer軟件,根據不同外設的特定時序要求,對GPIF接口的讀寫時序進行設置,生成GPIF波形文件并導出相應的.C文件,添加到固件工程中,并對其進行調用,以實現GPIF波形的設計功能。
在本設計中,固件程序檢測FPGA的Data_Ready信號,一旦該信號為高電平則通過啟動預先設置好的GPIF波形邏輯,將FPGA內異步FIFO的數據讀入USB端點的FIFO中,并進行發送,實現了AD采樣數據向上位機的傳輸。
通過Cypress公司提供的調試軟件Cypress USB Console,可對CY7C68013A進行固件下載和簡單的調試,同時此軟件還提供適用于CY7C68013A的驅動程序,以及豐富的API函數,使用VC編寫上位機程序的時只需將CyAPI.h和CyAPI.l ib添加到MFC工程中[7],便可直接調用這些API函數,對USB接口的數據讀寫操作進行控制,從而大大降低了編寫上位機程序的難度和周期。
此外,還可以利用LabVIEW的VISA軟件,根據固件中配置的VenderID和ProductID直接生成適用于LabVIEW程序的USB驅動,從而在本數據采集系統和LabVIEW之間建立通信,直接利用LabVIEW編寫上位機程序。
本系統使用FPGA控制數據采集和緩存,以USB2.0作為數據傳輸接口,實現了單路最高采樣率達250 KSPS(8路情況下)的多通道數據采集和發送功能,經實驗驗證可以對多路測距雷達信號進行采集。
同時,該系統也具有較強的通用性和擴展性,通過使用采樣率和采樣精度更高的AD轉換器件,并對FPGA邏輯進行升級,便可使其適用于更為廣泛的數據采集場合。
[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]王金明.數字系統設計與Verilog HDL[M].北京:電子工業出版社,2009.
[5]于亞萍,錢建平.基于FPGA數據采集系統的研究[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的高速數據采集方案設計[J].儀表技術,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原理與工程開發[M].2版.北京:國防工業出版社,2007.