王水魚(yú),陳 璐
(西安理工大學(xué) 自動(dòng)化與信息工程學(xué)院,陜西 西安 710048)
隨著火炮技術(shù)的高速發(fā)展,新型多高管射自動(dòng)火炮的不斷涌現(xiàn),以前的測(cè)試系統(tǒng)不能滿(mǎn)足精確測(cè)量的要求。為了適應(yīng)研制和生產(chǎn)的需要,測(cè)試系統(tǒng)應(yīng)當(dāng)具備一定的彈性,易于根據(jù)需要靈活組建。因此,需要一種通用、便攜、數(shù)據(jù)采集精度高、同步性好、易于使用的設(shè)備。
傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)速度慢、處理功能簡(jiǎn)單、采用分立元件、電路非常復(fù)雜,而且可靠性差、不易調(diào)試、不能良好地滿(mǎn)足特殊要求。針對(duì)傳統(tǒng)數(shù)據(jù)采集系統(tǒng)存在的不足,提出一種基于USB和FPGA技術(shù)的多通道同步數(shù)據(jù)采集系統(tǒng)[2]。首先,本系統(tǒng)既能與計(jì)算機(jī)連接進(jìn)行實(shí)時(shí)數(shù)據(jù)采集,也能用NAND Flash存儲(chǔ)采集數(shù)據(jù)進(jìn)行非實(shí)時(shí)數(shù)據(jù)采集;另外,它將FPGA和USB技術(shù)應(yīng)用于火炮動(dòng)態(tài)參數(shù)測(cè)試系統(tǒng)的數(shù)據(jù)采集子系統(tǒng),為提高測(cè)量精度,組建靈活測(cè)試系統(tǒng)提供了技術(shù)支持。同時(shí),該數(shù)據(jù)采集電路模塊還可以用在其他測(cè)試系統(tǒng),對(duì)于民用及工業(yè)等方面也有實(shí)際意義[1-3]。
系統(tǒng)設(shè)計(jì)總體框圖如圖1所示。
FPGA選用Altera公司的Cyclone系列芯片EP1C12,系統(tǒng)設(shè)計(jì)模塊圖如圖2所示。
分頻模塊是將外部時(shí)鐘進(jìn)行分頻設(shè)定,得到系統(tǒng)內(nèi)部AD控制模塊和存儲(chǔ)模塊所需要的時(shí)鐘,并為AD芯片提供時(shí)鐘信號(hào)基準(zhǔn)。此模塊采用VHDL語(yǔ)言編程實(shí)現(xiàn),其4分頻時(shí)序仿真圖如圖3。分頻模塊的外部時(shí)鐘輸入頻率為20 MHz,產(chǎn)生的時(shí)鐘頻率為5 MHz。
A/D數(shù)據(jù)接口控制模塊實(shí)現(xiàn)對(duì)ADS8364數(shù)據(jù)的采樣。ADS8364是TI公司的一款高速、低功耗、六路模擬輸入、16位并行輸出的模數(shù)轉(zhuǎn)換器。六路模擬輸入分為三組(A、B和C),每個(gè)輸入端都有一個(gè)保持信號(hào)來(lái)實(shí)現(xiàn)所有通道的同時(shí)采樣與轉(zhuǎn)換功能,適合于多路采集系統(tǒng)的需要。本模塊對(duì)ADS8364的控制引腳有:模擬采樣通道控制信號(hào)/HOLDA、/HOLDB、/HOLDC;數(shù)據(jù)輸出模式以及通道選擇信號(hào) A0、A1和A2;讀控制信號(hào)/RD;使用5 MHz時(shí)鐘驅(qū)動(dòng)一個(gè)20個(gè)狀態(tài)的狀態(tài)機(jī)(模為20的計(jì)數(shù)器)。在計(jì)數(shù)值為 15時(shí)將 HOLDA、HOLDB、HOLDC置0啟動(dòng)一次數(shù)據(jù)采樣。在計(jì)數(shù)值為 2-3、4-5、6-7、8-9、10-11、12-13且相應(yīng)通道得到使能時(shí),分別發(fā)出通道1到通道 6 的通道地址。 在 3、5、7、9、11、13 發(fā)出讀信號(hào)讀取相應(yīng)通道的數(shù)據(jù)。在計(jì)數(shù)為15時(shí)發(fā)出采樣完畢信號(hào),指示六通道數(shù)據(jù)已經(jīng)采集完畢。AD采樣控制時(shí)序如圖4所示。
乒乓控制模塊部分,按照功能將其分為4個(gè)轉(zhuǎn)換狀態(tài) S0、S1、S2、S3。其中狀態(tài) S0為初始化狀態(tài),狀態(tài) S1負(fù)責(zé)對(duì) SRAM0寫(xiě)數(shù)據(jù),狀態(tài) S2負(fù)責(zé)對(duì) SRAM1寫(xiě)數(shù)據(jù),從SRAM0讀數(shù)據(jù),狀態(tài)S3負(fù)責(zé)對(duì)SRAM0寫(xiě)數(shù)據(jù),從SRAM1讀數(shù)據(jù)。圖5和圖6分別是乒乓控制模塊的狀態(tài)轉(zhuǎn)移圖和乒乓操作時(shí)序仿真結(jié)果圖。
系統(tǒng)選用三星(SAMSUNG)公司的 NAND Flash芯片K9F2G08,F(xiàn)lash控制器的主要功能是響應(yīng)PC機(jī)命令,根據(jù)命令產(chǎn)生相應(yīng)的時(shí)序?qū)崿F(xiàn)對(duì)Flash的操作。完成的操作有:(1)擦除操作:即對(duì)Flash進(jìn)行格式化。(2)寫(xiě)操作:Flash控制器判斷PC機(jī)的寫(xiě)命令,當(dāng)PC機(jī)發(fā)出寫(xiě)命令時(shí),F(xiàn)lash控制器執(zhí)行一次寫(xiě)操作。(3)讀操作:Flash控制器PC機(jī)的讀命令,當(dāng)PC機(jī)發(fā)出讀命令時(shí),F(xiàn)lash控制器執(zhí)行一次讀操作。讀出的數(shù)據(jù)被送往USB。
數(shù)據(jù)控制模塊用于產(chǎn)生乒乓操作和Flash控制器的地址總線、數(shù)據(jù)總線和控制總線,是乒乓操作模塊和Flash控制器的橋梁。實(shí)現(xiàn)乒乓操作至Flash控制器數(shù)據(jù)的正確轉(zhuǎn)移。同時(shí)數(shù)據(jù)控制模塊還負(fù)責(zé)從Flash控制器讀取數(shù)據(jù),并送至USB用于總線交互。
USB接口芯片采用EZ-USBFX2 (CY7C68013),F(xiàn)X2作為USB2.0數(shù)據(jù)通道來(lái)實(shí)現(xiàn)與主機(jī)的高速通信。FPGA能夠滿(mǎn)足Slave FIFO要求的傳輸時(shí)序作為Slave FIFO主控制器。圖7是FX2的狀態(tài)轉(zhuǎn)換圖。
同步Slave FIFO寫(xiě)時(shí)序如下:
IDLE:寫(xiě)事件發(fā)生時(shí),轉(zhuǎn)到狀態(tài) 1;狀態(tài) 1:指向 IN FIFO,激活 FIFOADR[1:0],轉(zhuǎn)向狀態(tài) 2;狀態(tài) 2:如果 FIFO滿(mǎn)標(biāo)志為 “假”(FIFO不滿(mǎn)),則轉(zhuǎn)向狀態(tài)3,否則停留在狀態(tài) 2;狀態(tài)3:傳送總線驅(qū)動(dòng)數(shù)據(jù),為 1個(gè) IFCLK激活 SLWR,轉(zhuǎn)向狀態(tài) 4;狀態(tài) 4:如果有更多的數(shù)據(jù)要寫(xiě),則轉(zhuǎn)向狀態(tài)2,否則轉(zhuǎn)向IDLE。
CY7C68013芯片固件程序負(fù)責(zé)處理PC機(jī)發(fā)來(lái)的各種USB請(qǐng)求,以完成主機(jī)與外圍電路間的數(shù)據(jù)傳輸。固件程序包括3個(gè)過(guò)程:(1)初始化,處理器和外圍電路的初始化;(2)主函數(shù),完成符合設(shè)備特定要求的代碼;(3)中斷處理,處理各種中斷的程序代碼。
Cypress公司的EZ-USB FX2開(kāi)發(fā)套件提供給用戶(hù)1個(gè)固件函數(shù)庫(kù)(Ezusb.lib)和固件框架(Framework),兩者均是基于KEIL C51開(kāi)發(fā)的。固件函數(shù)庫(kù)提供了一系列函數(shù)來(lái)加速USB固件程序的開(kāi)發(fā),使用時(shí)只需在程序中包含EZUSB.H和EZREGS.H兩個(gè)頭文件,并在項(xiàng)目中鏈接Ezusb.lib,就可以直接使用固件庫(kù)中的各個(gè)函數(shù),固件流程圖如圖8。
USB設(shè)備驅(qū)動(dòng)程序的主要功能是使Win32應(yīng)用程序能正確訪問(wèn)本數(shù)據(jù)采集卡的硬件設(shè)備。本設(shè)計(jì)中將CY7C68013的固件代碼存放在上位機(jī)上,當(dāng)系統(tǒng)上電或USB連接時(shí),再將其下載至芯片的RAM中,由增強(qiáng)型8051執(zhí)行。這一過(guò)程需要使用2個(gè)驅(qū)動(dòng)程序:一個(gè)用于下載芯片的固件程序,另一個(gè)用于實(shí)現(xiàn)本數(shù)據(jù)采集卡的具體功能。也可以使用EZ-USB的通用驅(qū)動(dòng)程序,很多USB芯片的廠商都為其USB芯片提供了通用驅(qū)動(dòng)程序,可以滿(mǎn)足大部分系統(tǒng)的需求,用戶(hù)可在此基礎(chǔ)上直接進(jìn)行固件程序的開(kāi)發(fā)[4-6]。
應(yīng)用程序主要負(fù)責(zé)讀取系統(tǒng)硬件所輸出的數(shù)據(jù)采集結(jié)果,并實(shí)時(shí)顯示波形,使用微軟的Visual C++6.0語(yǔ)言編寫(xiě)Win32應(yīng)用程序,可根據(jù)具體應(yīng)用進(jìn)行擴(kuò)展。按照系統(tǒng)指標(biāo)要求,應(yīng)用程序設(shè)計(jì)主要完成以下功能:設(shè)置采樣頻率、控制讀取數(shù)據(jù)通道、讀取數(shù)據(jù)、波形顯示等。人機(jī)界面原始圖和第二個(gè)通道接收到的數(shù)據(jù)顯示波形如圖 9。
該系統(tǒng)采用 USB2.0接口與計(jì)算機(jī)連接,利用FPGA完成系統(tǒng)控制。它既能與計(jì)算機(jī)連接進(jìn)行實(shí)時(shí)數(shù)據(jù)采集,也能用NAND FLASH存儲(chǔ)采集數(shù)據(jù)。該系統(tǒng)體積小、功耗低,特別適合環(huán)境比較復(fù)雜下的測(cè)試系統(tǒng),使用靈活方便、適應(yīng)性強(qiáng)。
實(shí)驗(yàn)表明,本設(shè)計(jì)可以很好地實(shí)現(xiàn)6通道同步采樣,其采樣頻率范圍 0.1 kHz~250 kHz,完成采樣精度16 bit的數(shù)據(jù)采集。
[1]邱春玲,張廣明,吳振翔.基于DSP和 FPGA的電梯智能數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì).計(jì)算機(jī)工程與設(shè)計(jì),2009,30(7):1577-1579.
[2]范華,譚玉山.兩通道高速數(shù)據(jù)采集系統(tǒng)[J].電子測(cè)量與儀器學(xué)報(bào),1996(10):1-2.
[3]嚴(yán)雪萍.基于FPGA的高速數(shù)據(jù)采集系統(tǒng)[J].微計(jì)算機(jī)信息,2008(1-2):209-211.
[4]CY7C68013 EZ-USB@FX2TM USB microcontroller highspeed USB peripheral controller.Cypress Semiconductor Corporation,2002.
[5]張惠娟.Windows環(huán)境下的設(shè)備驅(qū)動(dòng)程序設(shè)計(jì).西安.西安電子科技大學(xué)出版社,2002:19-20,102-103,253-300.
[6]薛園園.USB應(yīng)用開(kāi)發(fā)技術(shù)大全[M].北京:人民郵電出版社,2007.