王水魚,陳 璐
(西安理工大學 自動化與信息工程學院,陜西 西安 710048)
隨著火炮技術的高速發展,新型多高管射自動火炮的不斷涌現,以前的測試系統不能滿足精確測量的要求。為了適應研制和生產的需要,測試系統應當具備一定的彈性,易于根據需要靈活組建。因此,需要一種通用、便攜、數據采集精度高、同步性好、易于使用的設備。
傳統的數據采集系統速度慢、處理功能簡單、采用分立元件、電路非常復雜,而且可靠性差、不易調試、不能良好地滿足特殊要求。針對傳統數據采集系統存在的不足,提出一種基于USB和FPGA技術的多通道同步數據采集系統[2]。首先,本系統既能與計算機連接進行實時數據采集,也能用NAND Flash存儲采集數據進行非實時數據采集;另外,它將FPGA和USB技術應用于火炮動態參數測試系統的數據采集子系統,為提高測量精度,組建靈活測試系統提供了技術支持。同時,該數據采集電路模塊還可以用在其他測試系統,對于民用及工業等方面也有實際意義[1-3]。
系統設計總體框圖如圖1所示。

FPGA選用Altera公司的Cyclone系列芯片EP1C12,系統設計模塊圖如圖2所示。
分頻模塊是將外部時鐘進行分頻設定,得到系統內部AD控制模塊和存儲模塊所需要的時鐘,并為AD芯片提供時鐘信號基準。此模塊采用VHDL語言編程實現,其4分頻時序仿真圖如圖3。分頻模塊的外部時鐘輸入頻率為20 MHz,產生的時鐘頻率為5 MHz。
A/D數據接口控制模塊實現對ADS8364數據的采樣。ADS8364是TI公司的一款高速、低功耗、六路模擬輸入、16位并行輸出的模數轉換器。六路模擬輸入分為三組(A、B和C),每個輸入端都有一個保持信號來實現所有通道的同時采樣與轉換功能,適合于多路采集系統的需要。本模塊對ADS8364的控制引腳有:模擬采樣通道控制信號/HOLDA、/HOLDB、/HOLDC;數據輸出模式以及通道選擇信號 A0、A1和A2;讀控制信號/RD;使用5 MHz時鐘驅動一個20個狀態的狀態機(模為20的計數器)。在計數值為 15時將 HOLDA、HOLDB、HOLDC置0啟動一次數據采樣。在計數值為 2-3、4-5、6-7、8-9、10-11、12-13且相應通道得到使能時,分別發出通道1到通道 6 的通道地址。 在 3、5、7、9、11、13 發出讀信號讀取相應通道的數據。在計數為15時發出采樣完畢信號,指示六通道數據已經采集完畢。AD采樣控制時序如圖4所示。


乒乓控制模塊部分,按照功能將其分為4個轉換狀態 S0、S1、S2、S3。其中狀態 S0為初始化狀態,狀態 S1負責對 SRAM0寫數據,狀態 S2負責對 SRAM1寫數據,從SRAM0讀數據,狀態S3負責對SRAM0寫數據,從SRAM1讀數據。圖5和圖6分別是乒乓控制模塊的狀態轉移圖和乒乓操作時序仿真結果圖。



系統選用三星(SAMSUNG)公司的 NAND Flash芯片K9F2G08,Flash控制器的主要功能是響應PC機命令,根據命令產生相應的時序實現對Flash的操作。完成的操作有:(1)擦除操作:即對Flash進行格式化。(2)寫操作:Flash控制器判斷PC機的寫命令,當PC機發出寫命令時,Flash控制器執行一次寫操作。(3)讀操作:Flash控制器PC機的讀命令,當PC機發出讀命令時,Flash控制器執行一次讀操作。讀出的數據被送往USB。
數據控制模塊用于產生乒乓操作和Flash控制器的地址總線、數據總線和控制總線,是乒乓操作模塊和Flash控制器的橋梁。實現乒乓操作至Flash控制器數據的正確轉移。同時數據控制模塊還負責從Flash控制器讀取數據,并送至USB用于總線交互。

USB接口芯片采用EZ-USBFX2 (CY7C68013),FX2作為USB2.0數據通道來實現與主機的高速通信。FPGA能夠滿足Slave FIFO要求的傳輸時序作為Slave FIFO主控制器。圖7是FX2的狀態轉換圖。
同步Slave FIFO寫時序如下:
IDLE:寫事件發生時,轉到狀態 1;狀態 1:指向 IN FIFO,激活 FIFOADR[1:0],轉向狀態 2;狀態 2:如果 FIFO滿標志為 “假”(FIFO不滿),則轉向狀態3,否則停留在狀態 2;狀態3:傳送總線驅動數據,為 1個 IFCLK激活 SLWR,轉向狀態 4;狀態 4:如果有更多的數據要寫,則轉向狀態2,否則轉向IDLE。
CY7C68013芯片固件程序負責處理PC機發來的各種USB請求,以完成主機與外圍電路間的數據傳輸。固件程序包括3個過程:(1)初始化,處理器和外圍電路的初始化;(2)主函數,完成符合設備特定要求的代碼;(3)中斷處理,處理各種中斷的程序代碼。
Cypress公司的EZ-USB FX2開發套件提供給用戶1個固件函數庫(Ezusb.lib)和固件框架(Framework),兩者均是基于KEIL C51開發的。固件函數庫提供了一系列函數來加速USB固件程序的開發,使用時只需在程序中包含EZUSB.H和EZREGS.H兩個頭文件,并在項目中鏈接Ezusb.lib,就可以直接使用固件庫中的各個函數,固件流程圖如圖8。
USB設備驅動程序的主要功能是使Win32應用程序能正確訪問本數據采集卡的硬件設備。本設計中將CY7C68013的固件代碼存放在上位機上,當系統上電或USB連接時,再將其下載至芯片的RAM中,由增強型8051執行。這一過程需要使用2個驅動程序:一個用于下載芯片的固件程序,另一個用于實現本數據采集卡的具體功能。也可以使用EZ-USB的通用驅動程序,很多USB芯片的廠商都為其USB芯片提供了通用驅動程序,可以滿足大部分系統的需求,用戶可在此基礎上直接進行固件程序的開發[4-6]。

應用程序主要負責讀取系統硬件所輸出的數據采集結果,并實時顯示波形,使用微軟的Visual C++6.0語言編寫Win32應用程序,可根據具體應用進行擴展。按照系統指標要求,應用程序設計主要完成以下功能:設置采樣頻率、控制讀取數據通道、讀取數據、波形顯示等。人機界面原始圖和第二個通道接收到的數據顯示波形如圖 9。

該系統采用 USB2.0接口與計算機連接,利用FPGA完成系統控制。它既能與計算機連接進行實時數據采集,也能用NAND FLASH存儲采集數據。該系統體積小、功耗低,特別適合環境比較復雜下的測試系統,使用靈活方便、適應性強。
實驗表明,本設計可以很好地實現6通道同步采樣,其采樣頻率范圍 0.1 kHz~250 kHz,完成采樣精度16 bit的數據采集。
[1]邱春玲,張廣明,吳振翔.基于DSP和 FPGA的電梯智能數據采集系統的設計.計算機工程與設計,2009,30(7):1577-1579.
[2]范華,譚玉山.兩通道高速數據采集系統[J].電子測量與儀器學報,1996(10):1-2.
[3]嚴雪萍.基于FPGA的高速數據采集系統[J].微計算機信息,2008(1-2):209-211.
[4]CY7C68013 EZ-USB@FX2TM USB microcontroller highspeed USB peripheral controller.Cypress Semiconductor Corporation,2002.
[5]張惠娟.Windows環境下的設備驅動程序設計.西安.西安電子科技大學出版社,2002:19-20,102-103,253-300.
[6]薛園園.USB應用開發技術大全[M].北京:人民郵電出版社,2007.