文獻(xiàn)標(biāo)識(shí)碼: A
MIL-STD-1553總線是美國(guó)國(guó)防部制定的一種具有可確定性且傳輸可靠的數(shù)據(jù)總線,,被廣泛應(yīng)用于軍用飛機(jī)、軍用車輛以及艦載等領(lǐng)域中,。目前,,1553B總線接口模塊的實(shí)現(xiàn)主要有2種方式:一種是采用專用的協(xié)議芯片(如DDC公司的BU-61580、HOLT公司的HI-6110等),;另一種是采用FPGA與CPU結(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.