《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的1553B通信模塊的設(shè)計(jì)
基于FPGA的1553B通信模塊的設(shè)計(jì)
張晴暉1,,李俊萩1,,段芙蓉2,,徐安排1,,張宏翔1
1.西南林學(xué)院 計(jì)算機(jī)科學(xué)系,云南 昆明650224,;2.成都縱橫測(cè)控技術(shù)有限公司,,四川 成都610
摘要: 提出一種將FPGA與PowerPC芯片結(jié)合,實(shí)現(xiàn)MIL-STD-1553B通信模塊的技術(shù)方案,。詳細(xì)討論了該系統(tǒng)的結(jié)構(gòu),、1553B總線協(xié)議在FPGA上的實(shí)現(xiàn)以及系統(tǒng)的軟件結(jié)構(gòu)等關(guān)鍵技術(shù)。該系統(tǒng)方案與采用專用的協(xié)議芯片實(shí)現(xiàn)1553總線接口的方法相比,,具有更靈活,、成本更低、可移植性好等特點(diǎn),。
關(guān)鍵詞: FPGA PowerPC MIL-STD-1553B 1553B總線 CPU
中圖分類號(hào): TP336
文獻(xiàn)標(biāo)識(shí)碼: 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總線是美國(guó)國(guó)防部制定的一種具有可確定性且傳輸可靠的數(shù)據(jù)總線,,被廣泛應(yīng)用于軍用飛機(jī)、軍用車輛以及艦載等領(lǐng)域中,。目前,,1553B總線接口模塊的實(shí)現(xiàn)主要有2種方式:一種是采用專用的協(xié)議芯片(如DDC公司的BU-61580、HOLT公司的HI-6110等),;另一種是采用FPGACPU結(jié)合實(shí)現(xiàn)1553B的協(xié)議模塊,。
    本系統(tǒng)采用后一種方式,硬件上采用PowerPC芯片PPC405EP與Xilinx的FPGA芯片XC3S200為系統(tǒng)的核心芯片,,使用VHDL語(yǔ)言實(shí)現(xiàn)1553B的總線協(xié)議,。與采用專用的協(xié)議芯片實(shí)現(xiàn)1553總線接口的方法相比,該方案的成本很低,,也很容易根據(jù)需要進(jìn)行功能擴(kuò)展,,使用靈活,。
1 1553總線分析
    在MIL-STD-1553總線上有總線控制器、遠(yuǎn)程終端和監(jiān)視器3種設(shè)備,。其中,,最重要的是總線控制器(BC-Bus Controller),總線上的任何操作都是由BC發(fā)起的(通過(guò)發(fā)不同的命令控制總線上的數(shù)據(jù)傳輸),;遠(yuǎn)程終端(RT-Remote Terminal)接收BC的命令,,并按命令進(jìn)行相應(yīng)數(shù)據(jù)傳輸;總線監(jiān)視器(BM-Bus Monitor)對(duì)總線上的數(shù)據(jù)進(jìn)行接收和存儲(chǔ),。
    1553B總線上數(shù)據(jù)的交互是基于消息機(jī)制的,。該標(biāo)準(zhǔn)定義了10種消息傳輸格式,而這10種傳輸格式都采用前述的3種字類型,,總線上的數(shù)據(jù)傳輸就是采用這10種消息傳輸格式中的一種,。其傳輸過(guò)程如下:BC通過(guò)總線發(fā)送某種命令字,所有的RT接收該命令字,,并將命令字中的地址域與自己的地址相比較,,相同則接收該命令字;隨后,,RT對(duì)命令字進(jìn)行解析,,根據(jù)命令完成相應(yīng)的操作(接收數(shù)據(jù)字、發(fā)送數(shù)據(jù)字,、同步,、自檢等)。這些操作都會(huì)產(chǎn)生相應(yīng)的狀態(tài)字發(fā)送給BC,。BC通過(guò)狀態(tài)字來(lái)判斷RT是否工作正常,。如果RT接收到的命令字中的終端地址是廣播地址,則所有的RT都接收該命令,,但都不返回狀態(tài)字給BC,。
2 系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)結(jié)構(gòu)

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

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

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

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

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

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

    經(jīng)過(guò)仿真和實(shí)際驗(yàn)證,,本系統(tǒng)滿足1553B總線協(xié)議的要求,。同時(shí),該設(shè)計(jì)已經(jīng)成為產(chǎn)品,,在實(shí)際中得到了應(yīng)用,。
參考文獻(xiàn)
[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)載,。