郝曉明,李 杰,2*,胡陳君,石璽文,陳 偉
(1.中北大學(xué)電子測試技術(shù)國防科技重點實驗室,太原 030051;2.中北大學(xué)儀器科學(xué)與動態(tài)測試教育部重點實驗室,太原 030051;3.山西北方惠豐機(jī)電有限公司科研設(shè)計二所,山西長治 046012)
基于FPGA的彈載數(shù)據(jù)回讀系統(tǒng)設(shè)計*
郝曉明1,李 杰1,2*,胡陳君1,石璽文1,陳 偉3
(1.中北大學(xué)電子測試技術(shù)國防科技重點實驗室,太原 030051;2.中北大學(xué)儀器科學(xué)與動態(tài)測試教育部重點實驗室,太原 030051;3.山西北方惠豐機(jī)電有限公司科研設(shè)計二所,山西長治 046012)
慣性傳感器在各種導(dǎo)彈武器中的廣泛應(yīng)用,使得采集存儲系統(tǒng)成為彈體飛行參數(shù)測量中不可或缺的存儲設(shè)備?;诓杉鎯ο到y(tǒng)數(shù)據(jù)讀取的需要,設(shè)計了一種基于FPGA的彈載數(shù)據(jù)回讀系統(tǒng)。本系統(tǒng)以FPGA為控制核心,F(xiàn)T245BL芯片為USB控制芯片,F(xiàn)PGA模擬的FIFO為數(shù)據(jù)緩存,從而實現(xiàn)數(shù)據(jù)的傳輸。試驗驗證表明,該回讀系統(tǒng)能夠很好地完成數(shù)據(jù)傳輸工作,且傳輸數(shù)據(jù)迅速、準(zhǔn)確,無錯幀與丟幀現(xiàn)象,具備一定的工程實用價值。
慣性導(dǎo)航;數(shù)據(jù)回讀;FPGA;USB;FIFO
隨著慣性傳感器的發(fā)展,MEMS慣性導(dǎo)航成為各種導(dǎo)彈導(dǎo)航首選系統(tǒng)。例如火箭彈常采用低成本的MEMS慣性器件測量其飛行姿態(tài)[1-2]。而出于隱蔽性和安全性的考慮,炮彈飛行過程中慣性傳感器所采集記錄的數(shù)據(jù)信息不可能實時地傳輸?shù)缴衔粰C(jī)進(jìn)行處理與顯示,需要先將數(shù)據(jù)存儲到FLASH存儲器中,回收后再將數(shù)據(jù)回讀到上位機(jī)進(jìn)行處理再現(xiàn)。
傳統(tǒng)的數(shù)據(jù)傳輸系統(tǒng)由于傳輸速度低或安裝不方便等問題已不能滿足科研與生產(chǎn)過程的需求[3],而USB具有支持熱插拔,使用靈活,傳輸速率快,易于擴(kuò)展的特點,優(yōu)于其它的數(shù)據(jù)傳輸方式[4-5]。文獻(xiàn)[6-7]提到的 USB控制芯片CY7C68013,數(shù)據(jù)傳輸速度快,應(yīng)用廣泛,但固件程序和驅(qū)動程序的編寫復(fù)雜,需要經(jīng)驗豐富的專業(yè)人士才能完成設(shè)計。
炮彈從上電裝膛到飛行落地時間很短,F(xiàn)LASH存儲器中記錄的有效數(shù)據(jù)很少,用USB 2.0的傳輸速度就可以在短時間內(nèi)讀取。本文正是針對上述情況設(shè)計了一種簡易的基于FPGA的彈載數(shù)據(jù)回讀系統(tǒng)。
該系統(tǒng)主要由三個模塊構(gòu)成:電源模塊,F(xiàn)PGA模塊,F(xiàn)T245BL模塊。系統(tǒng)設(shè)計圖如圖1所示。
圖1 系統(tǒng)設(shè)計圖
FPGA為控制芯片,讀取上位機(jī)命令,控制FT245BL的轉(zhuǎn)換和傳輸。上電后FPGA處于待命狀態(tài),上位機(jī)發(fā)送命令給FPGA,F(xiàn)PGA接到命令后,根據(jù)通訊協(xié)議判斷命令內(nèi)容,然后根據(jù)命令內(nèi)容進(jìn)行相應(yīng)操作。若收到讀取命令,F(xiàn)PGA將會從FLASH中讀取數(shù)據(jù),經(jīng)過FPGA的FIFO緩存后送入FT245BL中進(jìn)行并串轉(zhuǎn)換,然后通過USB接口上傳到上位機(jī)。
整個硬件電路分為三個模塊:電源模塊,F(xiàn)PGA控制模塊,F(xiàn)T245BL轉(zhuǎn)換模塊。
2.1 電源模塊
USB供電方式有總線供電和自供電兩種方式??偩€供電時突然加大電壓會產(chǎn)生大電流燒毀器件,所以需要用電壓轉(zhuǎn)換器,MOS管等使電流緩慢增大,但電流逐漸增大會加大磁場效應(yīng),所以還要加磁珠來減小噪聲和電磁干擾;而從USB口自供電設(shè)計簡單,如圖2所示,USB電源線電壓為5 V,提供的最大電流為500 mA,不用考慮電壓和磁場問題。當(dāng)USB總線連接到主機(jī)時,USB主線電壓變高,RESET電壓變高,導(dǎo)致RSTOUT電壓變高,所以USB DP管腳接一個1.5K的上拉電阻連到RSTOUT引腳,鉗位到高電平,驅(qū)動能力增加,芯片迅速連接到主機(jī)。
所以設(shè)計整個系統(tǒng)的供電由USB口提供+5 V電壓,由于FPGA的I/O口需要+3.3 V供電,內(nèi)核需要+2.5 V供電,所以選用了一片電源轉(zhuǎn)換芯片MAX8882把+5 V電壓轉(zhuǎn)換為+3.3 V和+2.5 V。
圖2 系統(tǒng)供電設(shè)計圖
數(shù)字電路中,如果電源線和地線上的噪聲不進(jìn)行濾波,就會耦合到有用信號上,形成電磁干擾,所以每一個電源都要加4個1 μF的接地電容進(jìn)行濾波。
USB接口的信號地與保護(hù)地要分割開,它們之間可以用一個大電阻并聯(lián)一個耐壓值較高的電容來連接。如圖3所示。
圖3 USB供電與接地電路
2.2 FPGA模塊
主控芯片選取XILINX公司的FPGA芯片XC2S30,F(xiàn)PGA為復(fù)雜邏輯控制提供了豐富的門陣列資源,具有高速,低功耗,高集成度的特點,設(shè)計的產(chǎn)品具有體積小,重量輕,集成度高,功耗低的特點,使產(chǎn)品具有更好的性價比和競爭力,設(shè)計周期縮短,設(shè)計費用和風(fēng)險降低[8]。這款FPGA芯片內(nèi)核供電電壓2.5 V,I/O口供電電壓3.3 V,芯片功耗低,解決了發(fā)熱量大的問題;而且芯片擁有30 000個系統(tǒng)門,216個可編程邏輯模塊,92個I/O口,內(nèi)部集成6個雙口RAM,共24 kbit,能夠滿足本次設(shè)計要求。
FPGA可以嚴(yán)格的控制時序,使系統(tǒng)高速運(yùn)行,所以用FPGA內(nèi)部來進(jìn)行初始化,復(fù)位和判斷調(diào)用各個模塊單元[9]。FPGA配置主要包括時鐘單元,程序下載單元,指示燈單元。時鐘單元采用20M有源晶振產(chǎn)生主時鐘,通過軟件分頻提供給其它器件進(jìn)行工作;程序下載單元考慮到JTAG鏈的完整性、電源電壓的設(shè)置以及CCLK信號所以采用主串模式連接;指示燈單元用兩個指示燈來顯示上電成功和擦除成功。
2.3 FT245模塊
USB接口芯片選取的是FTDI公司的FT245BL芯片[10]。傳統(tǒng)的USB接口設(shè)計需要對USB的標(biāo)準(zhǔn),固件編程,驅(qū)動程序的開發(fā)等有很深入的了解,工作量大,開發(fā)周期長,有豐富設(shè)計經(jīng)驗的人員才能完成這項任務(wù),而FT245BL芯片內(nèi)部只有一個單獨的USB 2.0串行接口引擎(SIE)和FIFO收發(fā)緩沖區(qū),在芯片上有完整的USB協(xié)議,無需外擴(kuò)程序固件,而且FTDI公司提供驅(qū)動程序,我們只需進(jìn)行必要的硬件設(shè)計和簡單的軟件編程便可應(yīng)用。所以選用FT245BL。
FTDI公司對FT245BL的設(shè)計建議使用外擴(kuò)EEPROM芯片93C46來存放FT245BL芯片的設(shè)備描述符,但考慮到EEPROM只是存放原始設(shè)備制造商提供的PID,VID和設(shè)備描述符等,而在本次設(shè)計中,只使用設(shè)備默認(rèn)值就可以正常使用,為了最簡化設(shè)計,去除了EEPROM的設(shè)計。
系統(tǒng)軟件分為兩個模塊:FT245BL控制模塊,F(xiàn)LASH控制模塊。如圖4所示。
圖4 系統(tǒng)軟件設(shè)計圖
3.1 FT245BL控制模塊
FT245BL控制模塊主要分為兩單元:通信協(xié)議判斷,F(xiàn)IFO緩存。
3.1.1 通信協(xié)議
FPGA在與上位機(jī)通信之前,需要先與上位機(jī)規(guī)定好通信協(xié)議,根據(jù)通信協(xié)議,上位機(jī)作為主設(shè)備,F(xiàn)PGA作為從設(shè)備,F(xiàn)PGA根據(jù)通信協(xié)議響應(yīng)上位機(jī)發(fā)出的命令,從而實現(xiàn)上位機(jī)通過USB讀取FPGA內(nèi)FIFO數(shù)據(jù)[11]。系統(tǒng)和上位機(jī)約定的命令字[12]為:
讀數(shù)命令:&25&5E&77&A6
擦除命令:&25&5E&44&A3
停止讀數(shù)命令:&25&5E&66&A5
命令字是以16進(jìn)制數(shù)編寫,當(dāng)FPGA接收到命令字后將16進(jìn)制轉(zhuǎn)換為2進(jìn)制識別。開始上電后FPGA處于等待狀態(tài),當(dāng)接收到上位機(jī)傳遞來的命令字后,中斷當(dāng)前操作,然后根據(jù)命令字執(zhí)行相應(yīng)的操作。
3.1.2 FIFO緩存單元
這款FPGA中內(nèi)置了1 kbit×8 bit的RAM可用于FIFO緩存。由于FLASH中數(shù)據(jù)需要一頁一頁讀取,當(dāng)翻頁時需要重新寫入控制字和地址,所以為了不發(fā)生丟失數(shù)據(jù)的情況,需要將數(shù)據(jù)在FIFO中緩存,再送入FT245中。
在進(jìn)行數(shù)據(jù)緩存時,系統(tǒng)采用分層處理,分為兩層緩沖區(qū),分別是數(shù)據(jù)接收緩沖區(qū)和數(shù)據(jù)發(fā)送緩沖區(qū)[13]。數(shù)據(jù)接收緩存區(qū)接收從FLASH中傳來的數(shù)據(jù),接收一幀后將數(shù)據(jù)送入數(shù)據(jù)發(fā)送緩沖區(qū)。
FIFO,即先進(jìn)先出,目的是對數(shù)據(jù)進(jìn)行緩存,不使數(shù)據(jù)發(fā)生丟失。主要流程是:FIFO中寫入一幀數(shù)據(jù),寫地址計數(shù)加一,F(xiàn)IFO往外送出(被讀取)一幀數(shù)據(jù),讀地址計數(shù)加一;比較兩個地址之間的差值,
若寫地址大于讀地址,則
Offset<=(wrcont-rdcont);
若讀地址大于寫地址,則
Offset<=("1111111110"-(rdcont-wrcont));
若寫地址等于讀地址,則
Offset<="0000000000";
其中,wrcont為寫地址計數(shù),rdcont為讀地址計數(shù),Offset為FIFO中數(shù)據(jù)容量。計算FIFO中數(shù)據(jù)的容量,設(shè)計一個標(biāo)志位f_half,若數(shù)據(jù)容量占FIFO總?cè)萘恳话胍陨?,則標(biāo)志位置1,停止向FIFO中寫入數(shù)據(jù);若數(shù)據(jù)容量不到FIFO總?cè)萘恳话?,則標(biāo)志位置0,繼續(xù)寫入數(shù)據(jù);若Offset為0,則表示當(dāng)前FIFO為空,可以向FIFO中寫入數(shù)據(jù);因為若FIFO存滿1K再向FT245BL中發(fā)送數(shù)據(jù),就有可能造成系統(tǒng)自動掉電后,部分寫入FPGA中的數(shù)據(jù)沒有及時發(fā)送給FT245BL,從而造成數(shù)據(jù)丟失,所以設(shè)計只要FIFO不為空,就持續(xù)向FT245BL中發(fā)送數(shù)據(jù)[14]。
在vhdl語言中,經(jīng)常要用到變量和信號兩種數(shù)據(jù)對象。變量的賦值是立即發(fā)生的,很容易進(jìn)行仿真,信號是進(jìn)程被掛起時賦值,具有延遲特性,更符合實際的硬件特性,所以實際應(yīng)用時多使用信號在電路內(nèi)部進(jìn)行傳遞,只有在描述一些用信號很難描述的算法時才會使用變量[15]。
由于wrcont,rdcont,offset,f_half都是信號,更接近硬件的實際情況,需要一定的延遲,數(shù)據(jù)因延遲傳輸可能在FIFO中滿溢,從而造成的數(shù)據(jù)丟失。所以用"1111111110"代替"1111111111"作為FIFO總?cè)萘坑嬎鉌IFO中數(shù)據(jù)的容量,而且半滿就停止向FIFO中寫入數(shù)據(jù)。
3.2 FLASH控制模塊
FLASH控制模塊主要分為三單元:讀取,擦除,停止讀數(shù)。
FPGA對命令字進(jìn)行識別判斷后,執(zhí)行下相應(yīng)的操作:讀取,擦除,停止讀數(shù)。狀態(tài)轉(zhuǎn)換圖如圖5所示,eselec為選擇操作信號。
3.2.1 FLASH讀取單元
當(dāng)FPGA得到讀取命令后,就將數(shù)據(jù)從FLASH中取出,放入其內(nèi)部的FIFO中,將數(shù)據(jù)從FLASH中讀取到其內(nèi)部FIFO中;FPGA內(nèi)部FIFO中存有數(shù)據(jù)時,會向FT245BL發(fā)送數(shù)據(jù),使FT245BL的發(fā)送緩存器接收數(shù)據(jù),然后通過串行接口引擎(SIE)將8位并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),通過USB口的差分形式傳輸?shù)缴衔粰C(jī)。
圖5 FPGA中狀態(tài)轉(zhuǎn)換圖
FT245BL中有128 byte的接收緩存FIFO和384 byte的發(fā)送緩存FIFO與FPGA的FIFO相連接。
當(dāng)FT245BL接收到來自上位機(jī)的命令后,寫入接收FIFO,接收FIFO不為空時,接收信號RXF置低,表示接收區(qū)FIFO有數(shù)據(jù),可以進(jìn)行讀取,在RD信號由高變低后,命令數(shù)據(jù)被掛在端口上,當(dāng)數(shù)據(jù)被FPGA讀取后,RD信號由低變高,表示一個字節(jié)讀取完成,接收信號RXF有短暫的升高表示FT245BL在處理讀操作,然后變?yōu)榈碗娖奖硎究梢宰x取下一字節(jié)。之后循環(huán)操作直到數(shù)據(jù)全部讀取完畢,接收信號RXF置高。讀時序如圖6所示。
圖6 FT245BL讀時序圖
當(dāng)FT245BL接收到來自FPGA FIFO中的數(shù)據(jù)后,此時發(fā)送信號為低,表示可以向發(fā)送FIFO中寫入數(shù)據(jù),當(dāng)寫信號置高時,數(shù)據(jù)放置在FT245BL的端口,當(dāng)寫信號由高變低時,數(shù)據(jù)寫入發(fā)送FIFO。當(dāng)FIFO中數(shù)據(jù)寫滿或正在寫時,TXE信號置高,停止寫入數(shù)據(jù)。FT245BL寫時序如圖7所示。
圖7 FT245BL寫時序圖
3.2.2 FLASH擦除單元
當(dāng)FPGA得到擦除命令,F(xiàn)PGA就擦除FLASH中的所有數(shù)據(jù),擦除完成后將信息反饋給上位機(jī),并點亮擦除完成指示燈(電路圖如圖8,D1為上電指示燈,D2為擦除完成指示燈)。
圖8 上電與擦除完成指示燈
3.2.3 FLASH停止讀數(shù)單元
當(dāng)FPGA得到停止讀數(shù)命令,就停止一切操作并回到復(fù)位狀態(tài)。
本系統(tǒng)進(jìn)行了實物焊接與調(diào)試。實物圖如圖9所示。
圖9 實物圖
采用VB程序編寫的上位機(jī)軟件進(jìn)行測試,測試結(jié)果如圖10所示。由結(jié)果可以看出,本系統(tǒng)在讀取143.603 Mbyte的數(shù)據(jù)時用時為157 s,讀數(shù)速度為0.915 Mbyte/s左右,而FT245BL芯片規(guī)定的傳輸速度為1 Mbyte/s,傳輸速率為規(guī)定速度的91.5%。經(jīng)過檢驗,讀取的數(shù)據(jù)沒有出現(xiàn)丟失,錯誤等現(xiàn)象,說明本系統(tǒng)具有很好的數(shù)據(jù)讀取穩(wěn)定性,可靠性,完全可以應(yīng)用于彈載等需要回讀的試驗中。
圖10 測試結(jié)果
本文介紹了一種基于FPGA的彈載數(shù)據(jù)回讀系統(tǒng),該系統(tǒng)采用FPGA作為核心控制器,充分發(fā)揮了FPGA可編程能力強(qiáng)的特點;采用FPGA內(nèi)部的FIFO作為緩存,保證了數(shù)據(jù)的完整性;確定了與上位機(jī)的通信協(xié)議,保證了傳輸?shù)母咝?;使用FTDI公司的FT245BL芯片,不使用EEPROM,設(shè)計簡單。測試表明該套系統(tǒng)實用性強(qiáng),可以滿足一般的工程型應(yīng)用。
[1] 董進(jìn)龍,莫波.典型彈道下的火箭彈MEMS-INS/GNSS組合導(dǎo)航姿態(tài)誤差可觀性分析[J].兵工學(xué)報,2014,3(56):850-856.
[2] 盧曉東,周軍,賀元軍.直接側(cè)向力控制火箭彈的微機(jī)電系統(tǒng)速率陀螺濾波方法[J].兵工學(xué)報,2011,32(12):1456-1461.
[3] 呂超,張玉霞,王立欣.USB接口高速數(shù)據(jù)傳輸?shù)膶崿F(xiàn)[J].計算機(jī)測量與控制,2009,17(5):1003-1005.
[4] 胡亞琦,李煒,楊棟.基于USB2.0的振動監(jiān)測系統(tǒng)的研究與設(shè)計[J].計算機(jī)測量與控制,2012,20(7):1809-1811.
[5] 代月松.USB3.0在存儲測試系統(tǒng)中的研究[D].太原:中北大學(xué),2013.
[6] 劉吉,楊德偉,文懷濤,等.基于USB通信的FPGA高速數(shù)據(jù)采集系統(tǒng)[J].現(xiàn)代電子技術(shù),2011,34(10):186-192.
[7] 高貝.基于USB2.0的數(shù)據(jù)傳輸系統(tǒng)設(shè)計[D].西安:西安電子科技大學(xué),2011.
[8] 王紅亮,黃洋文.基于FPGA的可程控多路信號源設(shè)計[J].火力與指揮控制,2010,35(6):97-99.
[9] 劉雙紅,張海龍,靳搖鴻,等.基于FPGA和WSN的TNT爆炸時刻采集及存儲系統(tǒng)[J].傳感技術(shù)學(xué)報,2013,26(7):1009-1013.
[10]FT245BL.Datasheet [EB/OL].http://wenku.baidu.com/view/ e8b0563610661ed9ad51f39a.html.
[11]黃土琛,宮輝,邵貝貝.基于USB和FPGA的多功能數(shù)據(jù)采集系統(tǒng)[J].原子能科學(xué)技術(shù),2013,47(11):2172-2176.
[12]柯艷,李杰,孔祥雷,等.基于USB 2.0的多路數(shù)據(jù)采集系統(tǒng)上位機(jī)軟件設(shè)計[J].測試技術(shù)學(xué)報,2010,24(4):351-356.
[13]楊海波,徐元欣,徐搖文,等.水下移動平臺數(shù)據(jù)采集和傳輸系統(tǒng)設(shè)計[J].傳感技術(shù)學(xué)報,2014,27(3):361-367.
[14]李杰,馬幸,劉俊,等.小型慣導(dǎo)系統(tǒng)數(shù)據(jù)實時采集處理與存儲設(shè)計[J].中國慣性技術(shù)學(xué)報,2008,16(3):274-277.
[15]楊丹,張樹林.VHDL中信號與變量的教學(xué)體會[J].電子電氣教學(xué)學(xué)報,2006,28(3):30-35.
郝曉明(1988-),男,河北邢臺人,現(xiàn)中北大學(xué)在讀碩士研究生,主要從事微系統(tǒng)集成、慣性測量方向的研究;
李 杰(1976-),男,教授,博士生導(dǎo)師?,F(xiàn)在中北大學(xué)電子測試技術(shù)國家重點實驗室工作,目前的主要研究方向為微系統(tǒng)集成理論與技術(shù)、慣性感知與控制技術(shù)、組合導(dǎo)航理論、計算幾何及智能信息處理等,Lijie@nuc.edu cn。
DesigningofReadoutSystemforMissile-LoadedDataBasedonFPGA*
HAO Xiaoming1,LI Jie1,2*,HU Chenjun1,ShI Xiwen1,CHEN Wei3
(1.North University of China Science and Technology on Electronic Test&Measurement Laboratory,Taiyuan 030051,China;2.Key Laboratory of Instrumentation Science&Dynamic Measurement(North University of China),Ministry of Education,Taiyuan 030051,China;3.Shanxi North Huifeng Mechanical&Electronic Co.Ltd No.2 Academic Institution,Changzhi Shanxi 046012,China)
Wide use of inertial sensors in various kinds of missile weapons makes it indispensible for data acquisition and storage system in flight parameter measurement of projectile.Based on the need for data reading of acquisition and storage system,designed a kind of FPGA-based data reading system.By adopting FPGA as the core control,F(xiàn)T245BL as USB control chip,F(xiàn)IFO simulated by FPGA as data cache,this system completes the function of data transmission.The experiment shows that this data reading system is able to complete the function of data transmission quickly and accurately without frame error or frame losing,having engineering practical value.
inertial navigation;data transmission;FPGA;USB;FIFO EEACC:1265A
TN108.7
A
1004-1699(2015)07-1023-05
10.3969/j.issn.1004-1699.2015.07.014
項目來源:武器裝備探索研究項目(7131017)
2014-12-08 修改日期:2015-03-27