裴峰,吳健,魏海潮,王珺楠
(中北大學(xué) 信息與通信工程學(xué)院,山西 太原,030051)
存儲(chǔ)測(cè)試是指在對(duì)被測(cè)對(duì)象無影響或在允許范圍的條件下,在被測(cè)體內(nèi)置入微型數(shù)據(jù)采集與存儲(chǔ)測(cè)試儀,現(xiàn)場(chǎng)實(shí)時(shí)完成信息的快速采集與記憶,事后回收的記錄儀器[1]。存儲(chǔ)測(cè)試技術(shù)在載人航天測(cè)試、爆炸沖擊波測(cè)試、炮彈膛壓測(cè)試等諸多領(lǐng)域應(yīng)都有廣泛的應(yīng)用[2],目前大多數(shù)的存儲(chǔ)測(cè)試系統(tǒng)都是由CPLD和單片機(jī)配合工作來實(shí)現(xiàn),由于系統(tǒng)包含的器件較多這為系統(tǒng)的設(shè)計(jì)和調(diào)試帶來了很大的難度,而且最終的系統(tǒng)在穩(wěn)定性和可靠性都較差[3]。為了解決上述問題本文設(shè)計(jì)了一種基于單片F(xiàn)PGA的存儲(chǔ)測(cè)試系統(tǒng)。為了實(shí)現(xiàn)整個(gè)系統(tǒng)由單片F(xiàn)PGA來控制,在FPGA內(nèi)部運(yùn)用有限狀態(tài)機(jī)設(shè)計(jì)方法設(shè)計(jì)了一個(gè)針對(duì)FT245RL的數(shù)據(jù)傳輸控制器實(shí)現(xiàn)了過去由單片機(jī)和CPLD配合才能完成的功能。
圖1給出了基于FPGA的存儲(chǔ)測(cè)試系統(tǒng)總體結(jié)構(gòu)圖,本系統(tǒng)采用XILINX公司的XC4VSX25 FPGA作為系統(tǒng)核心控制單元、采用AD公司的AD7492作為系統(tǒng)模數(shù)轉(zhuǎn)換器,采用三星公司的k9k2G8U0M FLASH作為系統(tǒng)數(shù)據(jù)存儲(chǔ)介質(zhì)(存儲(chǔ)空間滿足實(shí)際需要),采用FT245RL芯片作為系統(tǒng)板與上位機(jī)鏈接的通信接口芯片[4-5]。
系統(tǒng)的總體工作流程為:傳感器輸出的模擬信號(hào)經(jīng)過調(diào)理電路調(diào)整到AD可采范圍后AD轉(zhuǎn)換器對(duì)其進(jìn)行轉(zhuǎn)換,F(xiàn)PGA提供AD轉(zhuǎn)換的時(shí)鐘,在一次模數(shù)轉(zhuǎn)換周期內(nèi),AD轉(zhuǎn)換的12位的數(shù)據(jù)分高6位和低6位存儲(chǔ)到FPGA內(nèi)部的FIFO中,最后在FPGA的控制下將FIFO中的數(shù)據(jù)存入FLASH。當(dāng)整個(gè)采集完成后,在需要的時(shí)候就可以通過USB接口將Flash中的數(shù)據(jù)傳輸?shù)缴衔粰C(jī)來顯示和分析。
圖1 基于FPGA的存儲(chǔ)測(cè)試系統(tǒng)結(jié)構(gòu)圖
目前,USB有兩個(gè)規(guī)范,即USB1.1和USB2.0。USB1.1是目前較為普遍的USB規(guī)范,其低速方式的傳輸速率為1.5Mbps,高速方式的傳輸速率為12Mbps(1.5MByte/s)。USB2.0規(guī)范是由USB1.1規(guī)范演變而來的,其理想傳輸速率為480Mbps(60MByte/s),足以滿足大多數(shù)外設(shè)的速率要求[6]。USB是一種復(fù)雜的傳輸協(xié)議,這給USB接口的設(shè)計(jì)和開發(fā)帶來很大難度。文獻(xiàn)[7-8]的研究表明,在應(yīng)用層對(duì)數(shù)據(jù)采集系統(tǒng)進(jìn)行USB接口設(shè)計(jì)時(shí),可以選擇集成USB協(xié)議的專用芯片進(jìn)行二次開發(fā)應(yīng)用,從而降低了系統(tǒng)開發(fā)難度。鑒于此,通過查閱大量資料,本設(shè)計(jì)選用美國(guó)FTDI公司的FT245RL芯片進(jìn)行USB接口的設(shè)計(jì)。
圖2給出了以FPGA和FT245RL為核心器件的USB接口原理框圖。圖2中,F(xiàn)lash是集成于存儲(chǔ)測(cè)試系統(tǒng)中的數(shù)據(jù)存儲(chǔ)器,測(cè)試過程結(jié)束后,F(xiàn)lash中存滿了測(cè)試數(shù)據(jù)。FPGA在USB接口中起到橋梁的作用,其I/O端口37-44與Flash的8bit數(shù)據(jù)位相連,作為數(shù)據(jù)總線。同樣,F(xiàn)PGA的I/O端口97-104與FT245RL中的8bit數(shù)據(jù)位相連,成為另外一條數(shù)據(jù)總線。Flash的片選端CE,命令控制端CLE, 地址控制端ALE,寫控制端WR,讀控制端RE分別和FPGA的I/O端口56、54、55、61、60相連接,而FT245RL中4個(gè)與數(shù)據(jù)傳輸有關(guān)的控制信號(hào)則與FPGA的I/O端口90-93相連??刂菩盘?hào)的方向參照?qǐng)D2中箭頭方向。
圖2 USB接口原理框圖
本文采用有限狀態(tài)機(jī)的方法來設(shè)計(jì)FT245RL控制器,其狀態(tài)轉(zhuǎn)換和控制輸出如圖3所示。在圖3中,系統(tǒng)上電復(fù)位后進(jìn)入初始化狀態(tài),然后CPLD就開始不斷的去讀取FT245RL的RXF端口并判斷其是否為零,當(dāng)RXF=0時(shí)就說明上位機(jī)有數(shù)發(fā)過來然后系統(tǒng)進(jìn)入讀數(shù)狀態(tài),當(dāng)讀取的數(shù)據(jù)和上位機(jī)軟件給出的數(shù)據(jù)(這里設(shè)定這個(gè)數(shù)為85)一致時(shí)系統(tǒng)就開始不斷讀取FT245RL的TXE端口并判斷其是否為零,當(dāng)TXE=0時(shí)就說明可以向FT245RL的FIFO中寫數(shù)了,進(jìn)入寫數(shù)狀態(tài)首先應(yīng)寫入和上位機(jī)約定的數(shù)據(jù)(這里設(shè)定為88)從而表示上位機(jī)發(fā)出的數(shù)據(jù)已經(jīng)正確的收到上位機(jī)和測(cè)試系統(tǒng)已經(jīng)建立起正確的通信,接下來就可以循環(huán)讀取Flash中的數(shù)據(jù)并依據(jù)FT245RL的TXE端口依次將數(shù)據(jù)寫入FT245RL的FIFO中。
圖3 FT245RL控制器狀態(tài)機(jī)狀態(tài)圖
計(jì)算機(jī)端程序采用VB6.0編寫,通過調(diào)用FTDI提供的動(dòng)態(tài)鏈接庫(kù),進(jìn)行讀、寫函數(shù)等的調(diào)用與操作。當(dāng)FT245RL初始化完成后,就可以進(jìn)行數(shù)據(jù)發(fā)送和接收。發(fā)送數(shù)據(jù)時(shí),將數(shù)據(jù)賦值到發(fā)送數(shù)組,調(diào)用發(fā)送函數(shù)FT_Write,然后判斷函數(shù)返回值是否等于1。若為1,說明數(shù)據(jù)發(fā)送成功;若不為1,則需要重新發(fā)送。接收數(shù)據(jù)時(shí),首先需要設(shè)定接收超時(shí)時(shí)間。然后,調(diào)用FT_Getstatus函數(shù)讀取接收緩沖區(qū)的狀態(tài),判斷接收隊(duì)列中是否有數(shù)以及是否滿足設(shè)定的讀取字節(jié)數(shù)閾值。若滿足讀取條件,則調(diào)用讀數(shù)函數(shù)FT_Read,讀取當(dāng)前緩沖區(qū)的數(shù)據(jù)并存入數(shù)組;若不滿足讀取條件,則一直等待,直到滿足讀取條件或產(chǎn)生接收超時(shí)。若產(chǎn)生超時(shí),程序自動(dòng)跳出接收程序,避免陷入死循環(huán)。接收流程如圖4所示。
圖4 上位機(jī)接收流程圖
為了驗(yàn)證本數(shù)據(jù)傳輸控制器及測(cè)試系統(tǒng)的可行性,系統(tǒng)被用來采集了一路最大值5V,最小值0V,頻率為100Hz的正弦信號(hào),如圖5(a)所示。測(cè)試系統(tǒng)在采樣頻率為1MHz的情況下,測(cè)試結(jié)果在FT245RL數(shù)據(jù)傳輸控制器的控制下通過USB接口傳輸?shù)缴衔粰C(jī)的結(jié)果如圖5(b)所示。從圖5(b)可以看出一個(gè)周期內(nèi)采樣點(diǎn)數(shù)為10000,這正好吻合了測(cè)試系統(tǒng)的采樣頻率,測(cè)試結(jié)果幅值和數(shù)據(jù)量上也和被測(cè)信號(hào)一致,而且數(shù)據(jù)曲線平滑噪聲較小。
圖5 正弦波測(cè)試結(jié)果
在FPGA內(nèi)部準(zhǔn)確的實(shí)現(xiàn)針對(duì)FT245RL的數(shù)據(jù)傳輸控制器從而使得整個(gè)存儲(chǔ)測(cè)試系統(tǒng)在一片F(xiàn)PGA的控制下得以實(shí)現(xiàn),經(jīng)過實(shí)驗(yàn)證明該存儲(chǔ)測(cè)試系統(tǒng)實(shí)現(xiàn)簡(jiǎn)單,調(diào)試容易、性能穩(wěn)定可靠、最高采樣率可達(dá)1M/s。
[1]何瑛,朱明武,李永新.膛內(nèi)多路瞬態(tài)信號(hào)存儲(chǔ)測(cè)試技術(shù)[J].儀器儀表學(xué)報(bào),2001,22(3):134-136.
[2]文豐,喬建忠,李艷.高過載存儲(chǔ)測(cè)試中抗過載技術(shù)的研究[J].傳感器與微系統(tǒng),2009, 28(9):31-33.
[3]董健,蔣建偉,萬麗珍.CPLD與單片機(jī)在超壓存儲(chǔ)測(cè)試系統(tǒng)中的應(yīng)用[J].測(cè)試技術(shù)學(xué)報(bào),2005,19(1):44-47.
[4]張海峰.基于FPGA的數(shù)據(jù)采集系統(tǒng)的SOPC實(shí)現(xiàn)[D].鄭州:鄭州大學(xué),2005.
[5]鐘雷.基于FPGA的通用存儲(chǔ)器控制器的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].上海:復(fù)旦大學(xué),2009.
[6]戴向華.USB原理及其在數(shù)據(jù)采集中的應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2004,25(5):840-843.
[7]吳振宇,常玉寶,馮林.基于FPGA和USB2.0的高速數(shù)據(jù)采集系統(tǒng)[J].儀器儀表學(xué)報(bào),2006,27(z1):125-127.
[8]蘇彥鋒,衣曉峰,周榮政,等.USB外設(shè)接口的FPGA[J].儀器儀表學(xué)報(bào),2002,22(19):125-127.