智 丹,石云波,董勝飛,陳艷香,楊志才
(中北大學 電子測試技術國家重點實驗室 儀器科學與動態(tài)測試教育部重點實驗室,太原 030051)
數(shù)據(jù)采集系統(tǒng)是計算機智能儀器與外界物理世界聯(lián)系的橋梁,是獲取信息的重要途徑。通常數(shù)據(jù)采集系統(tǒng)主要通過RS232接口、RS485接口、ISA總線、PCI總線或EPP/ECP實現(xiàn)數(shù)據(jù)傳輸。采用傳統(tǒng)接口的數(shù)據(jù)采集設備存在以下缺陷:安裝麻煩;價格昂貴;受計算機插槽數(shù)量、地址、中斷資源的限制,可擴展性差,而通用串行總線USB的出現(xiàn),很好地解決了這些問題[1]。
USB設備具有即插即用、接口數(shù)目多、數(shù)據(jù)傳輸速率快等優(yōu)點,USB2.0最快可達到480 Mb/s,能夠滿足高速采集系統(tǒng)的要求。如果采用單獨的USB接口芯片,需要研發(fā)者對USB協(xié)議有十分全面的了解,并且能夠熟悉應用才能更好地處理USB總線事務,這無疑加大了編程設計人員的開發(fā)難度、延長了產(chǎn)品的開發(fā)周期[2]。CY7C68013A是一個內(nèi)部嵌入微處理器的USB2.0接口芯片,支持USB2.0協(xié)議,只需要配置訪問一些寄存器和存儲器,就可以完成對USB數(shù)據(jù)口的數(shù)據(jù)傳輸,進而簡化了程序的設計,提高傳輸速率,增強了可靠性。
文中提出了一種基于CY7C68013A和FPGA數(shù)據(jù)采集系統(tǒng)的設計方案,主要完成彈體侵徹試驗中加速度信號的采集存儲,供其試驗后回收原始數(shù)據(jù),通過上位機軟件在PC機讀取彈體侵徹中獲得的原始數(shù)據(jù)并對其進行拆分以及繪圖,進而供試驗后對其數(shù)據(jù)分析,從而對彈體侵徹試驗的各項指標進行評估和驗證。
本文設計的數(shù)據(jù)采集系統(tǒng)主要由前端信號調(diào)理、數(shù)據(jù)采集存儲和數(shù)據(jù)傳輸3大部分組成??刂茊卧捎玫腇PGA是Xilinx公司生產(chǎn)的XC2S30芯片,該芯片擁有高達60個I/O口數(shù)量,216個可編程邏輯模塊,24 KB的雙口RAM。它的內(nèi)核采用低電壓2.5 V供電,有靜態(tài)功耗低、成本低等特點。XCF01S作為它的配置芯片,由外部20 MHz的晶振提供時鐘信號。系統(tǒng)總體設計原理如圖1所示。
圖1 系統(tǒng)結構框圖Fig.1 System structure diagram
系統(tǒng)外部供電采用5 V,經(jīng)電源轉換模塊轉換成 2.5 V、3.3 V 電壓,分別給 FPGA 內(nèi)核、FPGA I/O及其它電路模塊供電。4路傳感器信號先經(jīng)前端信號調(diào)理模塊放大調(diào)理,然后送入數(shù)據(jù)采集模塊。FPGA控制A/D轉換器對輸入模擬信號進行模數(shù)轉換并進行采集,再按照一定的幀格式存儲到Flash芯片中。數(shù)據(jù)傳輸過程中,上位機軟件通過USB口發(fā)送讀數(shù)指令,經(jīng)CY7C68013A以一定的幀格式傳給上位機,將Flash存儲器中的數(shù)據(jù)讀到上位機顯示并分析處理。
前端信號調(diào)理模塊主要由RC高通濾波電路、運算放大電路、電壓跟隨電路組成。
在彈體侵徹試驗中,傳感器信號主要為高頻沖擊信號(>1 kHz),YZ1-和 YZ+為傳感器的差分信號輸入端,在信號輸入端接RC高通濾波電路,可以很好地消除傳感器零位偏差對輸出零位的影響,如圖2所示。
圖2 信號調(diào)理電路Fig.2 Signal conditioning circuit
由于輸入信號比較微弱,需要經(jīng)過運算放大電路對其進行放大后再進行采集。本系統(tǒng)采用ADI公司的AD8226芯片,對信號進行放大調(diào)理。AD8226支持單電源供電,配置方便,僅需要一個外部電阻來設置增益,增益范圍為1~1000,增益為50時,帶寬約為30 kHz。電路中放大倍數(shù)的計算公式為可以通過調(diào)整RG1的阻值來改變電路的放大倍數(shù)。
基準電壓跟隨電路主要是為4路AD8226芯片的REF引腳提供1.25 V的基準電壓,將AD8226的有效輸出范圍調(diào)至0~2.5 V,實現(xiàn)對正負差分信號的有效放大。經(jīng)過AD8226放大的輸出信號進入電壓跟隨電路,可以提高帶載能力,實現(xiàn)前后信號隔離,提高抗干擾能力。接著信號進入RC低通濾波電路去除高頻噪聲之后輸出給A/D轉換器。
本系統(tǒng)數(shù)據(jù)采集采用的是ADI公司的4通道12位A/D轉換芯片AD7934,它采用5 V供電,內(nèi)置1個精確的2.5 V片內(nèi)基準電壓源,可用作模數(shù)轉換的基準電壓源[3]。該芯片擁有1個高寬帶、低噪聲的差分/保持放大器,可以處理高達50 MHz的輸入頻率,采樣的吞吐率可達1.5 MS/s。本設計中利用外部提供的時鐘信號,在20 MHz時鐘工作頻率下,采樣率達150 kHz。AD7934的外圍電路如圖3所示。
圖3 AD7934的外圍電路Fig.3 Peripheral circuit of AD7934
數(shù)據(jù)傳輸采用的是Cypress公司生產(chǎn)的EZUSB FX2LP系列的CY7C68013A,該芯片將USB2.0收發(fā)器、串行接口引擎(SIE)、增強的8051單片機及各種外圍接口集成于一體[4]。擁有480 Mb/s的高速傳輸速率和12 Mb/s的全速傳輸速率,芯片能自動檢測高速主機,并切換到高速模式下。
CY7C68013A的數(shù)據(jù)傳輸有3種不同的工作模式:GPIF主控模式、Slave FIFO模式和Ports模式。其中可編程接口GPIF模式是主機方式,可以通過軟件編程讀寫控制波形,幾乎可以對任何8/16 bit接口的控制器、存儲器和總線進行數(shù)據(jù)的主動讀寫,傳輸速率快,靈活性非常強[5]。本系統(tǒng)采用的就是通過GPIF模式來實現(xiàn)FPGA與外圍設備的數(shù)據(jù)通信。CY7C68013A與FPGA連接圖如圖4所示。
圖4 硬件連接圖Fig.4 Hardware connection diagram
本系統(tǒng)FPGA的程序設計在Xilinx的ISE10.1開發(fā)環(huán)境中用VHDL語言實現(xiàn),F(xiàn)PGA主要程序模塊有A/D采集控制模塊、Flash存儲控制模塊、CY7C68013A傳輸控制模塊等。FPGA與AD的接口程序根據(jù)AD的時鐘輸出信號將AD輸出的數(shù)據(jù)正確存入FPGA的FIFO中,為了便于數(shù)據(jù)的存儲和分離,模擬量經(jīng)AD7934轉換后的數(shù)字量需要按照一定的編碼方式進行編碼,本設計轉換的數(shù)據(jù)采用如表1所示的通訊數(shù)據(jù)幀編碼方式進行編碼。
表1 通訊數(shù)據(jù)幀編碼方式Tab.1 Encoding of communication data frame
由表1可知,一幀數(shù)據(jù)為14個字節(jié),A0為低字節(jié),A13為高字節(jié)。A0~A1為幀頭,用于數(shù)據(jù)處理時判斷數(shù)據(jù)幀的起始位置;A2~A5為幀計數(shù),用來判別采集數(shù)據(jù)的數(shù)據(jù)量和驗證存儲數(shù)據(jù)的完整性;A6~A13字節(jié)為4路數(shù)據(jù),其中2個字節(jié)構成1路數(shù)據(jù),分別對應每個通道采集到的模擬信號。
FPGA將編碼后的數(shù)據(jù)存儲到Flash中,本系統(tǒng)采用的Flash存儲器是SAMSUNG公司生產(chǎn)的K9K8G08U0E,該芯片是一種NAND Flash Memory,具有1 G×8 bit的數(shù)據(jù)存儲空間和256 Mb的空閑空間,空閑空間可以用來存儲壞塊信息及其它分區(qū)劃分信息。FPGA控制Flash數(shù)據(jù)存儲流程如圖5所示。
在FPGA將FIFO中的數(shù)據(jù)存入Flash之前,F(xiàn)PGA先對Flash進行檢測,判斷存儲空間是否有數(shù)據(jù),如果為空則進行寫入,如果有數(shù)據(jù)則停止寫入,并通過LED閃爍警示,這樣可以防止已回收的存儲器由于誤啟動造成侵徹數(shù)據(jù)被覆蓋、丟失。寫入數(shù)據(jù)時,先向Flash寫數(shù)據(jù)命令80H,然后寫入數(shù)據(jù)存入的具體地址,之后執(zhí)行寫入命令10H,此時Flash開始進行寫入數(shù)據(jù)工作,此時R/B信號呈現(xiàn)低電平,表示Flash處于寫數(shù)據(jù)的工作狀態(tài),待R/B信號變?yōu)榈碗娖綍r,表示Flash寫數(shù)據(jù)的工作狀態(tài)結束。最后,讀取狀態(tài)寄存器,如果I/O0=0則說明數(shù)據(jù)寫入成功,反之寫入失敗。
圖5 Flash數(shù)據(jù)存儲流程圖Fig.5 Flow chart of flash data storage
應用程序主要包括動態(tài)鏈接庫和操作界面程序,其中動態(tài)鏈接庫只需調(diào)用DLL68013.dll封裝的API函數(shù),先將DLL68013.dll復制到系統(tǒng)盤的“C:WindowsSystem”下面,然后在Visual Basic的集成編程環(huán)境下的模塊Module中對引用動態(tài)鏈接庫DLL68013.dll的API函數(shù)進行聲明,通過調(diào)用通用驅動程序來完成對外設的控制和通信[6]。操作界面程序采用Visual Basic來編寫完成,所實現(xiàn)的功能包括對USB設備連接、設備檢測、數(shù)據(jù)回讀、數(shù)據(jù)擦除、分析處理等。
利用信號發(fā)生器向4路模擬輸入端輸入1 kHz峰峰值為20 mV的正弦信號,采集系統(tǒng)對此測試信號進行采集、模數(shù)轉換、編幀和存儲,將存儲的數(shù)據(jù)通過USB上傳給上位機,通過上位機軟件對采回的4路數(shù)據(jù)進行分離、分析繪圖,繪圖如圖6所示,可以清楚地看到4路正弦曲線。通過多次連續(xù)的采集和分離數(shù)據(jù)測試,驗證了系統(tǒng)的準確性和可靠性。
圖6 4路數(shù)據(jù)驗證曲線Fig.6 4-way data validation curve
本文基于CY7C68013A和FPGA設計的4路數(shù)據(jù)采集系統(tǒng),能夠對傳感器信號進行實時采集、存儲,通過采用CY7C68013A接口與上位機進行通信,實現(xiàn)了回傳數(shù)據(jù)、存儲、顯示并分析數(shù)據(jù)的功能。通過實驗驗證,該系統(tǒng)具有體積小、傳輸速率快、高采樣率、高可靠性、功耗低等特點,可廣泛應用于彈體侵徹試驗中對加速度信號的采集存儲。
[1]賈寶金.基于USB的數(shù)據(jù)采集系統(tǒng)的研究與設計[D].河北:河北工業(yè)大學,2007.
[2]李俊萍,靳鴻,張艷兵.基于CY7C68013A的存儲器測試臺的USB 通信設計[J].電子器件,2014,37(2):361-366.
[3]楊小勇,葛彥麟,毛瑞娟.基于FPGA+A/D的數(shù)據(jù)采集設計及驗證[J].西安郵電學院學報,2011,16(1):98-102.
[4]吳磊,郭超平,申世濤.基于CY7C68013與FPGA的便攜式數(shù)據(jù)采集系統(tǒng)[J].計算機應用,2012,32(S1):164-166.
[5]付斌,丁月寧,黃勇,等.基于USB的便攜式導彈導航遙測艙數(shù)據(jù)采集系統(tǒng)設計[J].計算機測量與控制,2014,22(3):790-792.
[6]代月松,董力科,孫正席,等.基于CY7C68013A的并口轉USB口數(shù)據(jù)采集系統(tǒng)設計[J].電子設計工程,2011,19(16):42-44.