《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于FPGA的1553B通信模塊的設(shè)計
基于FPGA的1553B通信模塊的設(shè)計
張晴暉1,李俊萩1,段芙蓉2,徐安排1,張宏翔1
1.西南林學(xué)院 計算機科學(xué)系,云南 昆明650224;2.成都縱橫測控技術(shù)有限公司,四川 成都610
摘要: 提出一種將FPGA與PowerPC芯片結(jié)合,實現(xiàn)MIL-STD-1553B通信模塊的技術(shù)方案。詳細(xì)討論了該系統(tǒng)的結(jié)構(gòu)、1553B總線協(xié)議在FPGA上的實現(xiàn)以及系統(tǒng)的軟件結(jié)構(gòu)等關(guān)鍵技術(shù)。該系統(tǒng)方案與采用專用的協(xié)議芯片實現(xiàn)1553總線接口的方法相比,具有更靈活、成本更低、可移植性好等特點。
關(guān)鍵詞: FPGA PowerPC MIL-STD-1553B 1553B總線 CPU
中圖分類號: TP336
文獻標(biāo)識碼: A
Design of 1553B communication module based on FPGA
ZHANG Qing Hui1,LI Jun Qiu1,DUAN Fu Rong2,XU An Pai1,ZHANG Hong Xiang1
1.Dept.of Computer and Information Science, Southwest Forestry College, Kunming 650224,China;2.Chengdu Jovian Measurement & Control Technology Co., Ltd,Chengdu 610041,China
Abstract: A realization technique of the MIL-STD-1553B communication module is presented, which is a combination of FPGA and PowerPC chip. And the key technologies such as the system structure, the implementation of 1553B bus protocol on FPGA and software architecture are discussed in detail. This method is more flexible, lower cost and portability compared with method using 1553B ASIC chips.
Key words : MIL-STD-1553B;FPGA;PowerPC

    MIL-STD-1553總線是美國國防部制定的一種具有可確定性且傳輸可靠的數(shù)據(jù)總線,被廣泛應(yīng)用于軍用飛機、軍用車輛以及艦載等領(lǐng)域中。目前,1553B總線接口模塊的實現(xiàn)主要有2種方式:一種是采用專用的協(xié)議芯片(如DDC公司的BU-61580、HOLT公司的HI-6110等);另一種是采用FPGACPU結(jié)合實現(xiàn)1553B的協(xié)議模塊。
    本系統(tǒng)采用后一種方式,硬件上采用PowerPC芯片PPC405EP與Xilinx的FPGA芯片XC3S200為系統(tǒng)的核心芯片,使用VHDL語言實現(xiàn)1553B的總線協(xié)議。與采用專用的協(xié)議芯片實現(xiàn)1553總線接口的方法相比,該方案的成本很低,也很容易根據(jù)需要進行功能擴展,使用靈活。
1 1553總線分析
    在MIL-STD-1553總線上有總線控制器、遠程終端和監(jiān)視器3種設(shè)備。其中,最重要的是總線控制器(BC-Bus Controller),總線上的任何操作都是由BC發(fā)起的(通過發(fā)不同的命令控制總線上的數(shù)據(jù)傳輸);遠程終端(RT-Remote Terminal)接收BC的命令,并按命令進行相應(yīng)數(shù)據(jù)傳輸;總線監(jiān)視器(BM-Bus Monitor)對總線上的數(shù)據(jù)進行接收和存儲。
    1553B總線上數(shù)據(jù)的交互是基于消息機制的。該標(biāo)準(zhǔn)定義了10種消息傳輸格式,而這10種傳輸格式都采用前述的3種字類型,總線上的數(shù)據(jù)傳輸就是采用這10種消息傳輸格式中的一種。其傳輸過程如下:BC通過總線發(fā)送某種命令字,所有的RT接收該命令字,并將命令字中的地址域與自己的地址相比較,相同則接收該命令字;隨后,RT對命令字進行解析,根據(jù)命令完成相應(yīng)的操作(接收數(shù)據(jù)字、發(fā)送數(shù)據(jù)字、同步、自檢等)。這些操作都會產(chǎn)生相應(yīng)的狀態(tài)字發(fā)送給BC。BC通過狀態(tài)字來判斷RT是否工作正常。如果RT接收到的命令字中的終端地址是廣播地址,則所有的RT都接收該命令,但都不返回狀態(tài)字給BC。
2 系統(tǒng)設(shè)計
2.1 系統(tǒng)結(jié)構(gòu)

    系統(tǒng)結(jié)構(gòu)如圖1所示。1553B的協(xié)議處理以及編解碼都由FPGA實現(xiàn)。在同一電路上集成BC、BM和R/T功能,可以通過軟件設(shè)置來選擇所需的功能。同時,其綜合了通信和測試功能,既能夠檢測出各種可能出現(xiàn)的錯誤,又能根據(jù)測試要求產(chǎn)生各種錯誤。

    CPU芯片采用AMCC公司的PowerPC405EP。該芯片不僅包括一個高性能的RISC處理器內(nèi)核,還有SDRAM控制器、PCI總線接口、以太網(wǎng)接口、外部ROM和周邊資源控制及串行口、IIC接口、通用I/O口等,支持DMA功能。
    系統(tǒng)中的PXI接口是用PowerPC405EP的PCI接口與外部的開關(guān)電路擴展實現(xiàn)的。CPU通過EBC總線與1553模塊通信,其接口電路由FPGA實現(xiàn)。圖1所示接口電路主要完成通道選擇、數(shù)據(jù)環(huán)回等功能。

2.2 總體方案
    1553B總線協(xié)議由硬件和軟件配合實現(xiàn)。整體設(shè)計思路是:硬件和軟件采用中斷和查詢2種方式,通過一個共享的數(shù)據(jù)Buffer進行信息交互。下面介紹系統(tǒng)整體數(shù)據(jù)收發(fā)流程。本系統(tǒng)的軟硬件功能就是根據(jù)該流程進行分工和實現(xiàn)的。
2.2.1 數(shù)據(jù)發(fā)送流程
    上層軟件以數(shù)據(jù)結(jié)構(gòu)的形式將控制和數(shù)據(jù)信息傳輸給硬件邏輯電路,硬件電路自動地將數(shù)據(jù)按照控制信息發(fā)送到1553B總線上。CPU向硬件邏輯發(fā)送數(shù)據(jù)時,首先應(yīng)檢測上次的發(fā)送是否已經(jīng)結(jié)束。具體方法是:讀通道狀態(tài)寄存器發(fā)送完成位,如果有效,表示上次發(fā)送已經(jīng)結(jié)束了。只有檢測到上次發(fā)送結(jié)束了,才能進行數(shù)據(jù)的發(fā)送操作。硬件電路在將數(shù)據(jù)發(fā)送完之后,會產(chǎn)生中斷請求。軟件根據(jù)中斷請求去查詢狀態(tài)寄存器,決定下一步的操作。傳輸流程簡述如下:
    (1)CPU向數(shù)據(jù)發(fā)送FIFO寫入1個指令字/狀態(tài)字和錯誤控制信息;
    (2)CPU向通道控制寄存器寫入發(fā)送使能信號;
    (3)CPU向數(shù)據(jù)發(fā)送FIFO寫入0~32次數(shù)據(jù)和錯誤控制信息;
    (4)硬件邏輯檢測到發(fā)送使能信號;
    (5)硬件邏輯自動將存儲在FIFO中的數(shù)據(jù)順序取出;
    (6)硬件邏輯根據(jù)錯誤控制信息對數(shù)據(jù)進行相應(yīng)處理后將數(shù)據(jù)發(fā)送到1553B總線上;
    (7)硬件邏輯在發(fā)送消息結(jié)束2 μs后,置發(fā)送完成狀態(tài)位,并產(chǎn)生中斷信號。
2.2.2 數(shù)據(jù)接收流程
    硬件邏輯接收到1553B總線上的數(shù)據(jù)后,對該數(shù)據(jù)進行錯誤檢測,并將相應(yīng)的狀態(tài)信息和數(shù)據(jù)組合起來一起存入到接收FIFO中。當(dāng)接收FIFO達到一定容量后,便向CPU產(chǎn)生中斷信號。CPU對FIFO進行讀操作,將數(shù)據(jù)和狀態(tài)取出。接收步驟如下:
    (1)硬件邏輯接收總線上的數(shù)據(jù);
    (2)硬件邏輯對數(shù)據(jù)進行錯誤檢測,產(chǎn)生狀態(tài)信息;
    (3)硬件邏輯將數(shù)據(jù)和狀態(tài)信息寫入接收FIFO中;
    (4)當(dāng)接收FIFO達到一定容量時便產(chǎn)生中斷信號;
    (5)CPU響應(yīng)外部中斷;
    (6)CPU對FIFO進行讀操作,將狀態(tài)信息和數(shù)據(jù)取走;
    (7)CPU對狀態(tài)信息進行解析,決定對數(shù)據(jù)的處理。
3 總線編解碼的FPGA實現(xiàn)
    本系統(tǒng)中的FPGA芯片采用Xilinx公司的Spartan-3A XC3S200。該系列產(chǎn)品采用了90 nm工藝,支持業(yè)界最廣泛的I/O標(biāo)準(zhǔn)(26種),具備獨特的功耗和配置功能以及防克?。╝nti-cloning)安全性優(yōu)勢。
    FPGA的功能全部采用VHDL語言實現(xiàn),其功能框圖如圖2所示。其主要完成的工作有:(1)曼徹斯特碼的編解碼,包括串/并轉(zhuǎn)換。(2)1553B協(xié)議的消息的解析,包括同步頭的識別,以及各種錯誤的識別、奇偶校驗等。(3)1553B協(xié)議的消息發(fā)生,包括同步頭的產(chǎn)生、各種狀態(tài)位的產(chǎn)生以及各種錯誤信息的產(chǎn)生。(4)與CPU接口的實現(xiàn)。(5)各種中斷信號的實現(xiàn)。(6)定時和超時控制電路等。
3.1 總線發(fā)送電路實現(xiàn)
    如果沒有注入錯誤的要求,編碼器的實現(xiàn)就比較簡單,只需要用若干倍1553B的傳輸速率(本設(shè)計采用12倍頻)將并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),加上相應(yīng)的同步頭即可。在硬件上數(shù)據(jù)發(fā)送電路主要由一個狀態(tài)機、雙口FIFO、注入錯誤標(biāo)志寄存器以及控制電路組成。狀態(tài)機的狀態(tài)圖如圖3所示。復(fù)位之后,該狀態(tài)機在每個時鐘的上升沿都檢測FIFO中是否有數(shù)據(jù),若為空則停留在空閑狀態(tài)。一旦上層軟件通過EBC接口向FIFO寫入數(shù)據(jù)后, 硬件電路自動將數(shù)據(jù)讀出。進入到同步頭發(fā)送狀態(tài),硬件電路根據(jù)命令寄存器的控制字送出相應(yīng)的串行同步頭,隨后進入數(shù)據(jù)發(fā)送狀態(tài)。在每個時鐘沿,移位寄存器將數(shù)據(jù)寄存器的數(shù)據(jù)移出,進行曼碼編碼后發(fā)出,同時,數(shù)據(jù)計數(shù)器自動加1。當(dāng)計數(shù)值為16時,則轉(zhuǎn)入到奇偶校驗狀態(tài),將異或得到的檢驗位編碼后發(fā)出。

    本系統(tǒng)要求具有測試功能,主要有以下注入錯誤的要求:
    (1)EI_BITCOUNT:消息中指定數(shù)據(jù)的位數(shù)錯誤(不為16位);
    (2)EI_PARITY:消息中指定數(shù)據(jù)的校驗位錯誤;
    (3)EI_SYNC:錯誤的同步頭;
    (4)EI_WORDCOUNT:使消息中的數(shù)據(jù)長度不等于命令字中的長度;
    (5)EI_MIDBIT:指定數(shù)據(jù)位過零點錯誤,比期望位置延時300 ns;
    (6)EI_MIDSYNC:同步頭的過零點錯誤,比期望位置延時300 ns;
    (7)EI_BIPHASE:整個位時無過零點。
    硬件電路要求在狀態(tài)機中加入對應(yīng)的電路,檢測錯誤寄存器中的標(biāo)志位,并產(chǎn)生對應(yīng)的錯誤。
3.2 總線接收電路實現(xiàn)
    無論是BC還是RT都需要對收到的數(shù)據(jù)進行解析。接收電路的主要功能有:曼碼的解碼、串并轉(zhuǎn)換、同步頭檢測、奇偶校驗以及各種錯誤的檢測。如圖4所示,狀態(tài)機復(fù)位之后進入同步頭搜索狀態(tài)。硬件電路以12倍1553總線傳輸速率的頻率去檢測幾種同步頭。若收到同步頭,則將狀態(tài)寄存器中的對應(yīng)位置位,并轉(zhuǎn)入數(shù)據(jù)接收狀態(tài);否則,停留在該狀態(tài)下。數(shù)據(jù)接收狀態(tài)下,移位寄存器在時鐘沿將經(jīng)過解碼的數(shù)據(jù)移入。在數(shù)據(jù)計數(shù)器計數(shù)到16之后轉(zhuǎn)入到奇偶校驗狀態(tài);之后,將數(shù)據(jù)和狀態(tài)寫入到FIFO中。硬件電路在狀態(tài)機的每個階段都要檢測各種錯誤,如果出錯則回到同步頭搜索狀態(tài)。同時,產(chǎn)生錯誤標(biāo)志和中斷信號。

3.3 硬件中斷功能的實現(xiàn)
    如上所述,本系統(tǒng)軟件和硬件的通信主要通過中斷和查詢的方式進行信息交互。硬件電路實現(xiàn)了如下中斷功能:
    (1)每收到1個命令/狀態(tài)字產(chǎn)生中斷;
    (2)數(shù)據(jù)長度計數(shù)器中斷和使能。軟件對收到的命令/狀態(tài)字進行解析,如果有數(shù)據(jù)準(zhǔn)備接收,將數(shù)據(jù)長度值寫入數(shù)據(jù)長度計數(shù)器,同時使能計數(shù)器。硬件收到1個數(shù)據(jù)字,遞減計數(shù)器,直到0產(chǎn)生中斷,同時禁止該數(shù)據(jù)計數(shù)器中斷;
    (3)接收FIFO半滿或3/4滿產(chǎn)生中斷;
    (4)接收FIFO全滿(overflow)產(chǎn)生中斷;
    (5)發(fā)送FIFO為空產(chǎn)生中斷;
    (6)中斷狀態(tài)/使能寄存器;
    (7)等待超時中斷(接收數(shù)據(jù)長度不夠);
    (8)數(shù)據(jù)計數(shù)器中斷處,打上時間戳;收到每個命令/狀態(tài)字打上時間戳;發(fā)送的命令/狀態(tài)字的同步頭過零點打上時間戳。
4 軟件設(shè)計
    軟件設(shè)計包括板載嵌入程序、主機驅(qū)動程序設(shè)計。板載嵌入程序和主機驅(qū)動程序通過共享PPC外掛內(nèi)存來完成數(shù)據(jù)交互,板載嵌入式程序通過訪問FPGA的寄存器和FIFO來完成硬件操作和數(shù)據(jù)收發(fā)。其結(jié)構(gòu)如圖5所示。

    主機驅(qū)動程序的開發(fā)平臺是LabWindows/CVI,為用戶提供方便實用的API接口函數(shù)及其定義。
    嵌入式程序的開發(fā)平臺是Tornado2.2。該程序主要完成模塊的初始化、各通道BC\RT\BM的消息解析、中斷服務(wù)處理、與主機交互等功能。其中消息解析是嵌入式程序的核心部分。
    當(dāng)模塊選項為多功能模塊時,要求各通道在同一個工作時期可同時作為BC、BM和最多31個RT進行工作。當(dāng)被測系統(tǒng)的可得終端有限時,又希望獲得充足完備的測試,多功能模塊將提供充足的終端用以測試。為了能同時且正確充當(dāng)BC、BM、RT 3個不同的角色,模塊的嵌入式程序設(shè)計引入了可編程邏輯設(shè)計的狀態(tài)機設(shè)計思想。BC、BM、RT各自擁有自己的狀態(tài)機。
5 測試與結(jié)論
    圖6所示為1553收發(fā)器仿真波形圖。由于篇幅原因,只顯示了部分功能。該仿真主要驗證了如下過程:軟件通過EBC總線接口將3個待傳輸數(shù)據(jù)以及對應(yīng)的控制字寫入到FIFO中,經(jīng)過硬件電路轉(zhuǎn)換為串行數(shù)據(jù)輸出到差分輸出端;輸出再環(huán)回到差分輸入端,經(jīng)過解碼電路再寫入到FIFO中,產(chǎn)生中斷信號,并被軟件通過EBC總線將數(shù)據(jù)和狀態(tài)讀回。

    經(jīng)過仿真和實際驗證,本系統(tǒng)滿足1553B總線協(xié)議的要求。同時,該設(shè)計已經(jīng)成為產(chǎn)品,在實際中得到了應(yīng)用。
參考文獻
[1] Condor Engineering Inc.MIL-STD-1 553 Tutorial[Z].2000.
[2] Data Device Corporation.MIL-STD-1 553 DESIGNER′S GUIDE[Z].1998.
[3] Applied Micro Circuits Corporation.PowerPC 405EP Embedded Processor datasheet[EB/OL].http://www.appliedmicro. com/MyAMCC/retrieveDocument/PowerPC/405EP/PPC405EP_DS2003.pdf,2003.
[4] Xilinx INC.Spartan-3 FPGA Family:Complete Data Sheet [EB/OL].http://www.xilinx.com/support/documentation/data_sheets/ds099.pdf,2008.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。