馬豪凡 薛志遠
摘要:根據(jù)1553B總線在空空導(dǎo)彈上的應(yīng)用,提出一種基于FPGA的1553B總線協(xié)議設(shè)計與實現(xiàn)方法。分析了1553B總線在空空導(dǎo)彈上的通信需求,對1553B總線協(xié)議進行設(shè)計,給出了1553B總線解碼、編碼、命令字處理等關(guān)鍵技術(shù)的設(shè)計方法,最終實現(xiàn)了空空導(dǎo)彈1553B總線通訊。經(jīng)驗證,1553B總線協(xié)議滿足空空導(dǎo)彈通訊需求,且運行穩(wěn)定。
關(guān)鍵詞:1553B總線協(xié)議;空空導(dǎo)彈;FPGA;芯片
中圖分類號:TP368.11
文獻標(biāo)識碼:A
DOI:10.15913/j .cnki.kj ycx.2019.11.023
1553B總線是航空電子系統(tǒng)常用的數(shù)據(jù)總線,是空空導(dǎo)彈與載機通信采用的主要通訊總線,目前中國空空導(dǎo)彈研究院的1553B設(shè)計多采用協(xié)議芯片方式,協(xié)議芯片價格昂貴,且體積偏大。FPGA(現(xiàn)場可編程門陣列)內(nèi)部集成大量可編程器件門電路,具有設(shè)計靈活、可重構(gòu)、并行性好等優(yōu)點,是空空導(dǎo)彈核心處理芯片。本文通過在FPGA上實現(xiàn)1553B協(xié)議替代協(xié)議芯片的方法,提高了1553B總線設(shè)計的靈活性,減少了電路設(shè)計的成本與面積。
本文分析了空空導(dǎo)彈與載機之間的通訊需求,總結(jié)出基于空空導(dǎo)彈的1553B總線協(xié)議功能和指標(biāo),編寫了1553B總線協(xié)議邏輯,并通過了測試驗證。
1
1553B總線設(shè)計功能要求
1.1 空空導(dǎo)彈1553B總線通訊需求
導(dǎo)彈使用1553B總線與載機進行通訊,載機需要向?qū)棽樵兤鋬?nèi)部數(shù)據(jù)更新情況,并能夠控制接收導(dǎo)彈內(nèi)部數(shù)據(jù)和發(fā)送消息字給導(dǎo)彈。每個消息都是以數(shù)據(jù)字的形式進行傳輸,最多包含30個數(shù)據(jù)字[1]。
1553B總線系統(tǒng)由總線控制器(BC)、遠程終端(RT)和總線監(jiān)視器(BM)組成,載機與導(dǎo)彈在1553B總線系統(tǒng)中分別為BC和RT。載機與導(dǎo)彈通訊過程為:載機通過外圍接口對導(dǎo)彈RT地址進行設(shè)置,以命令字和數(shù)據(jù)字的形式向?qū)棸l(fā)送信息;導(dǎo)彈以狀態(tài)字響應(yīng)載機的命令;載機以讀取矢量字的方式查詢導(dǎo)彈的數(shù)據(jù)變化,并通過命令字要求導(dǎo)彈發(fā)送數(shù)據(jù),同時導(dǎo)彈根據(jù)內(nèi)部數(shù)據(jù)對矢量字進行置數(shù),以方便載機知悉導(dǎo)彈內(nèi)部數(shù)據(jù)變化[2]。
1.2 1553B總線通信需求分析
根據(jù)對空空導(dǎo)彈1553B通訊需求描述,總結(jié)出空空導(dǎo)彈1553B總線功能要求[1]:①具備響應(yīng)BC命令字和數(shù)據(jù)字發(fā)送和接收功能的RT端;②能夠通過外圍接口對RT地址進行設(shè)置;③接收空間子地址應(yīng)不少于10個,每個子地址能夠存儲至少30個數(shù)據(jù)字;④發(fā)送空間子地址應(yīng)不少于10個,每個子地址能夠存儲至少30個數(shù)據(jù)字;⑤能夠響應(yīng)載機的方式代碼發(fā)送矢量字。
1.3 1553B協(xié)議邏輯設(shè)計
本文采用Xilinx公司的7K325T芯片,使用ISE14.7編譯環(huán)境進行邏輯設(shè)計。考慮到空空導(dǎo)彈通訊需求與所實現(xiàn)1553B總線的通用性,本設(shè)計具備除了正常響應(yīng)BC端的命令字外,同時具備數(shù)據(jù)總線、地址總線和控制總線,能夠供CPU對RT端進行設(shè)置、讀寫數(shù)據(jù)和矢量字[3]。發(fā)送空間和接收空間各具有30個子地址,提供每個子地址32個16 bit存儲空間,發(fā)送和接收空間示意圖如圖1所示。
基于空空導(dǎo)彈1553B總線的整體方案如圖2所示,分為四個部分[4]:接收模塊解碼曼徹斯特碼,識別接收到的命令字和數(shù)據(jù)字,并進行緩存;RT處理器對接收模塊的一幀消息進行校驗,根據(jù)命令字的類型對存儲空間進行操作,完成數(shù)據(jù)存儲或者發(fā)送;存儲空間存儲接收數(shù)據(jù)、發(fā)送數(shù)據(jù)、矢量字、RT地址等信息,并具備并行接口與CPU進行通信;發(fā)送模塊在規(guī)定時間內(nèi)發(fā)送相應(yīng)的消息字。
1.3.1 接收模塊
曼徹斯特碼外部輸入接收模塊,經(jīng)過預(yù)處理后,輸入解碼模塊,解碼模塊首先進行同步字頭檢測,解析出命令字和數(shù)據(jù)字,并進行奇偶校驗,根據(jù)消息字類型存入相應(yīng)的FIFO中,F(xiàn)IFO輸出命令字和數(shù)據(jù)字個數(shù)給RT處理器[5],接收模塊設(shè)計如圖3所示。在1553B總線傳輸過程中,高電平會出現(xiàn)衰減延時情況,本設(shè)計為保證曼徹斯特碼解碼的可靠性,對輸入信號進行預(yù)處理,如圖4所示。
預(yù)處理模塊在P端和N端兩個信號的上升沿進行信號翻轉(zhuǎn),得出整形之后的曼徹斯特碼[6]。
曼徹斯特碼雙極編碼信號I/O解碼為邏輯1,雙極編碼信號O/I解碼為邏輯0,如圖5所示。
1553B信號的傳輸速率為1 Mb/s,本設(shè)計在解碼過程中采用8 MHz時鐘,每位數(shù)據(jù)采8個點,提高解碼的可靠性。首先識別同步字頭,之后根據(jù)時序?qū)ν阶诸^后面數(shù)據(jù)進行提取。在設(shè)計中采用datasftreg[0:4]和sync_sftreg[0: 23]兩個寄存器,將預(yù)處理后信號通過8 MHz時鐘由高位到低位依次轉(zhuǎn)入data_sftreg寄存器中,同時data_sftreg[0]將數(shù)據(jù)按照[23]到[o]的順序依次存人sync_sftreg寄存器中,當(dāng)data_sftreg[3]和data_sftreg[4]為異或時,對sync_sftreg寄存器進行檢測,若sync_sftreg[0: 11]全為1,sync_sftreg[12:23]全為O,則說明消息字為命令字;反之,為數(shù)據(jù)字。該部分巧妙地使用了同步字頭占用三位字長且高低電平各占一半,同時在下一位數(shù)據(jù)來臨時必存在高低電平的特點,準(zhǔn)確地檢測到同步字頭。根據(jù)檢測到同步字頭的時序,對后續(xù)數(shù)據(jù)進行延時7個時鐘檢測,并取反,準(zhǔn)確得到所解碼的數(shù)據(jù)。將得到的消息字依照類型存人響應(yīng)FIFO中,等待RT處理器處理。
1.3.2 RT處理器
1553B總線協(xié)議具有很嚴(yán)格的傳輸機制,RT處理器對接收模塊的命令字進行解析,做出相應(yīng)的響應(yīng)。在16位的命令字中包含了RT地址、子地址、發(fā)送接收、數(shù)據(jù)個數(shù)、方式代碼等多種信息,如圖6所示。
RT處理器對命令字進行解析,并生成狀態(tài)字和存儲空間的控制指令。如圖7所示,根據(jù)命令字所解析的內(nèi)容,RT處理器對RT地址是否正確、RT執(zhí)行接收/發(fā)送命令、命令字是子地址/方式代碼形式、接收數(shù)據(jù)字個數(shù)與命令字中要求數(shù)據(jù)個數(shù)是否一致等內(nèi)容進行判斷,并將相應(yīng)控制指令的輸出至存儲模塊,根據(jù)校驗結(jié)果生成狀態(tài)字,在判斷消息正確傳輸之后產(chǎn)生中斷。
1.3.3 存儲模塊
存儲模塊主要完成兩項內(nèi)容:識別RT處理器的控制指令,對存儲空間進行操作;與CPU進行數(shù)據(jù)通訊。
如圖8所示,存儲模塊若接收接收指令,按照子地址與數(shù)據(jù)字個數(shù)將接收模塊的數(shù)據(jù)存儲到相應(yīng)接收空間;若接收發(fā)送指令,按照子地址與數(shù)據(jù)字個數(shù)將發(fā)送空間相應(yīng)地址數(shù)據(jù)發(fā)送至發(fā)送模塊;若為方式代碼命令,發(fā)送矢量字至發(fā)送模塊。
總線接口支持TI公司的EMIF接口[4],可以對RT地址進行設(shè)置,對矢量字進行置數(shù),讀取接收空間數(shù)據(jù),并發(fā)送空間的數(shù)據(jù)存儲[3]。
1.3.4 發(fā)送模塊
發(fā)送模塊主要由FIFO模塊、發(fā)送控制器與曼徹斯特碼編碼組成,如圖9所示。首先存儲模塊將狀態(tài)字與消息字按照先后順序?qū)懭隖IFO,F(xiàn)IFO將輸出非空信號;之后發(fā)送控制器從FIFO中讀取數(shù)據(jù),并對數(shù)據(jù)進行按照協(xié)議發(fā)送消息字時間周期把數(shù)據(jù)發(fā)送到曼徹斯特碼編碼器中;最后曼徹斯特碼編碼器以2 MHz時鐘對數(shù)據(jù)進行編碼,若數(shù)據(jù)為邏輯1,編碼器將P端編譯為1/O,若數(shù)據(jù)為邏輯0,編碼器將輸出P端O/1;N端輸出反之[7]。
2 仿真測試
本項目測試分為兩個階段,第一階段為邏輯上的仿真測試,第二階段為硬件電路測試。
2.1 仿真測試
編譯環(huán)境采用的Xilinx公司的ISE開發(fā)軟件,仿真軟件采用modelsim軟件。仿真測試軟件仿照1553B總線BC端,發(fā)送相應(yīng)命令字和數(shù)據(jù)字,檢測1553B協(xié)議RT端輸出是否符合要求,本次共做了3次仿真測試。
測試一:仿真激勵發(fā)送接收數(shù)據(jù)指令的命令字和一個數(shù)據(jù)字以及對相應(yīng)地址進行讀取。激勵發(fā)出命令字1OO1O_010000 00001 1,該命令字表示往地址為18的RT端子地址為16的空間發(fā)送一個數(shù)據(jù)字,緊接著后面發(fā)送數(shù)據(jù)字1001001000000001_1,如圖10所示。
測試二:仿真激勵發(fā)送發(fā)送數(shù)據(jù)指令的命令字,觀測RT的響應(yīng)和發(fā)送的數(shù)據(jù)。激勵發(fā)出命令字IOOI0 1 10000_00011 1,該命令字表示地址為18的RT端,將子地址為16的三個數(shù)據(jù)發(fā)送到BC端,如圖11所示。
測試三:仿真激勵在矢量字空間寫數(shù)據(jù),發(fā)送命令字。其中,所發(fā)送的命令字為10010 1 00000 10000 1,該命令字采用方式代碼的形式,是地址為18的RT端發(fā)送矢量字,如圖12所示。
通過仿真波形可以看出,RT端能夠正確地識別BC所發(fā)的命令字,并響應(yīng)相應(yīng)數(shù)據(jù)。
2.2 硬件測試
1553B總線硬件測試環(huán)境如圖13所示。設(shè)計電路通過DSP仿真器與PC端連接,通過耦合器與1553B測試盒子連接,1553B測試盒與PC端連接,構(gòu)成一個閉環(huán)。PC端對1553B測試盒的BC端、RT地址、子地址、傳輸類型進行設(shè)置,通過TI公司CCS軟件對DSP進行傳輸數(shù)據(jù)讀寫,以此方式對傳輸過程進行驗證。
PC通過上位機軟件對1553B測試盒設(shè)置,設(shè)置RT地址為18,設(shè)置BC發(fā)送數(shù)據(jù),設(shè)置為隨機數(shù)據(jù),循環(huán)向RT端發(fā)送命令字和數(shù)據(jù)字,通過對照BC發(fā)送的數(shù)據(jù)和CCS讀取數(shù)據(jù),本文設(shè)計的1553B總線傳輸數(shù)據(jù)正常,滿足空空導(dǎo)彈通訊需求。
3 總結(jié)
本文根據(jù)空空導(dǎo)彈與載機之間的通訊需求,完成基于FPGA的1553B總線協(xié)議RT端設(shè)計。仿真測試表明,該設(shè)計滿足基于空空導(dǎo)彈的通訊需求,且能夠穩(wěn)定運行。該設(shè)計方法靈活性高,為之后空空導(dǎo)彈低成本、一體化、小型化設(shè)計提供有效支持。
參考文獻:
[1]易凡,雷杰.1553B總線在某制導(dǎo)控制系統(tǒng)中的設(shè)計與實現(xiàn)[J].航空兵器,2011(2):61-64.
[2]陳亮,劉麗霞,劉經(jīng)宇.基于1553B協(xié)議的導(dǎo)彈控制系統(tǒng)信息流設(shè)計探討[J]。計算機測量與控制,2012,20(8):2180-2182, 2196.
[3]孫濤,張華春.基于1553B協(xié)議的總線控制器和遠程終端的FPGA實現(xiàn)[J].中國科學(xué)院大學(xué)學(xué)報,2010,27(4): 523-529.
[4]方晨.1553B總線協(xié)議控制器設(shè)計[D].哈爾濱:哈爾濱工業(yè)大學(xué),2010.
[5]滕明暉,張瑞峰.基于1553B總線協(xié)議的解碼器設(shè)計與FPGA實現(xiàn)[J].電子技術(shù),2011,38 (3): 27-29.
[6]潘亮,司斌,張從霞,等.基于FPGA的1553B總線曼徹斯特編解碼器設(shè)計與實現(xiàn)[J].航空兵器,2018(2): 83-88.
[7]解彥.基于FPGA的1553B遠置終端IP核的設(shè)計與實現(xiàn)[D].北京:中國科學(xué)院研究生院(空間科學(xué)與應(yīng)用研究中心),2011.