文獻標識碼: A
MIL-STD-1553總線是美國國防部制定的一種具有可確定性且傳輸可靠的數據總線,被廣泛應用于軍用飛機,、軍用車輛以及艦載等領域中,。目前,1553B總線接口模塊的實現主要有2種方式:一種是采用專用的協議芯片(如DDC公司的BU-61580,、HOLT公司的HI-6110等),;另一種是采用FPGA與CPU結合實現1553B的協議模塊。
本系統(tǒng)采用后一種方式,,硬件上采用PowerPC芯片PPC405EP與Xilinx的FPGA芯片XC3S200為系統(tǒng)的核心芯片,,使用VHDL語言實現1553B的總線協議。與采用專用的協議芯片實現1553總線接口的方法相比,,該方案的成本很低,,也很容易根據需要進行功能擴展,使用靈活,。
1 1553總線分析
在MIL-STD-1553總線上有總線控制器,、遠程終端和監(jiān)視器3種設備。其中,,最重要的是總線控制器(BC-Bus Controller),,總線上的任何操作都是由BC發(fā)起的(通過發(fā)不同的命令控制總線上的數據傳輸);遠程終端(RT-Remote Terminal)接收BC的命令,,并按命令進行相應數據傳輸,;總線監(jiān)視器(BM-Bus Monitor)對總線上的數據進行接收和存儲。
1553B總線上數據的交互是基于消息機制的,。該標準定義了10種消息傳輸格式,,而這10種傳輸格式都采用前述的3種字類型,總線上的數據傳輸就是采用這10種消息傳輸格式中的一種,。其傳輸過程如下:BC通過總線發(fā)送某種命令字,,所有的RT接收該命令字,并將命令字中的地址域與自己的地址相比較,,相同則接收該命令字,;隨后,,RT對命令字進行解析,根據命令完成相應的操作(接收數據字,、發(fā)送數據字,、同步、自檢等),。這些操作都會產生相應的狀態(tài)字發(fā)送給BC,。BC通過狀態(tài)字來判斷RT是否工作正常。如果RT接收到的命令字中的終端地址是廣播地址,,則所有的RT都接收該命令,,但都不返回狀態(tài)字給BC。
2 系統(tǒng)設計
2.1 系統(tǒng)結構
系統(tǒng)結構如圖1所示,。1553B的協議處理以及編解碼都由FPGA實現,。在同一電路上集成BC、BM和R/T功能,,可以通過軟件設置來選擇所需的功能,。同時,其綜合了通信和測試功能,,既能夠檢測出各種可能出現的錯誤,,又能根據測試要求產生各種錯誤。
CPU芯片采用AMCC公司的PowerPC405EP,。該芯片不僅包括一個高性能的RISC處理器內核,,還有SDRAM控制器、PCI總線接口,、以太網接口,、外部ROM和周邊資源控制及串行口、IIC接口,、通用I/O口等,,支持DMA功能。
系統(tǒng)中的PXI接口是用PowerPC405EP的PCI接口與外部的開關電路擴展實現的,。CPU通過EBC總線與1553模塊通信,,其接口電路由FPGA實現。圖1所示接口電路主要完成通道選擇,、數據環(huán)回等功能,。
2.2 總體方案
1553B總線協議由硬件和軟件配合實現。整體設計思路是:硬件和軟件采用中斷和查詢2種方式,,通過一個共享的數據Buffer進行信息交互,。下面介紹系統(tǒng)整體數據收發(fā)流程。本系統(tǒng)的軟硬件功能就是根據該流程進行分工和實現的,。
2.2.1 數據發(fā)送流程
上層軟件以數據結構的形式將控制和數據信息傳輸給硬件邏輯電路,,硬件電路自動地將數據按照控制信息發(fā)送到1553B總線上,。CPU向硬件邏輯發(fā)送數據時,首先應檢測上次的發(fā)送是否已經結束,。具體方法是:讀通道狀態(tài)寄存器發(fā)送完成位,如果有效,,表示上次發(fā)送已經結束了,。只有檢測到上次發(fā)送結束了,才能進行數據的發(fā)送操作,。硬件電路在將數據發(fā)送完之后,,會產生中斷請求。軟件根據中斷請求去查詢狀態(tài)寄存器,,決定下一步的操作,。傳輸流程簡述如下:
(1)CPU向數據發(fā)送FIFO寫入1個指令字/狀態(tài)字和錯誤控制信息;
(2)CPU向通道控制寄存器寫入發(fā)送使能信號,;
(3)CPU向數據發(fā)送FIFO寫入0~32次數據和錯誤控制信息,;
(4)硬件邏輯檢測到發(fā)送使能信號;
(5)硬件邏輯自動將存儲在FIFO中的數據順序取出,;
(6)硬件邏輯根據錯誤控制信息對數據進行相應處理后將數據發(fā)送到1553B總線上,;
(7)硬件邏輯在發(fā)送消息結束2 μs后,置發(fā)送完成狀態(tài)位,,并產生中斷信號,。
2.2.2 數據接收流程
硬件邏輯接收到1553B總線上的數據后,對該數據進行錯誤檢測,,并將相應的狀態(tài)信息和數據組合起來一起存入到接收FIFO中,。當接收FIFO達到一定容量后,便向CPU產生中斷信號,。CPU對FIFO進行讀操作,,將數據和狀態(tài)取出。接收步驟如下:
(1)硬件邏輯接收總線上的數據,;
(2)硬件邏輯對數據進行錯誤檢測,,產生狀態(tài)信息;
(3)硬件邏輯將數據和狀態(tài)信息寫入接收FIFO中,;
(4)當接收FIFO達到一定容量時便產生中斷信號,;
(5)CPU響應外部中斷;
(6)CPU對FIFO進行讀操作,,將狀態(tài)信息和數據取走,;
(7)CPU對狀態(tài)信息進行解析,決定對數據的處理,。
3 總線編解碼的FPGA實現
本系統(tǒng)中的FPGA芯片采用Xilinx公司的Spartan-3A XC3S200,。該系列產品采用了90 nm工藝,,支持業(yè)界最廣泛的I/O標準(26種),具備獨特的功耗和配置功能以及防克?。╝nti-cloning)安全性優(yōu)勢,。
FPGA的功能全部采用VHDL語言實現,其功能框圖如圖2所示,。其主要完成的工作有:(1)曼徹斯特碼的編解碼,,包括串/并轉換。(2)1553B協議的消息的解析,,包括同步頭的識別,,以及各種錯誤的識別、奇偶校驗等,。(3)1553B協議的消息發(fā)生,,包括同步頭的產生、各種狀態(tài)位的產生以及各種錯誤信息的產生,。(4)與CPU接口的實現,。(5)各種中斷信號的實現。(6)定時和超時控制電路等,。
3.1 總線發(fā)送電路實現
如果沒有注入錯誤的要求,,編碼器的實現就比較簡單,只需要用若干倍1553B的傳輸速率(本設計采用12倍頻)將并行數據轉換為串行數據,,加上相應的同步頭即可,。在硬件上數據發(fā)送電路主要由一個狀態(tài)機、雙口FIFO,、注入錯誤標志寄存器以及控制電路組成,。狀態(tài)機的狀態(tài)圖如圖3所示。復位之后,,該狀態(tài)機在每個時鐘的上升沿都檢測FIFO中是否有數據,,若為空則停留在空閑狀態(tài)。一旦上層軟件通過EBC接口向FIFO寫入數據后,, 硬件電路自動將數據讀出,。進入到同步頭發(fā)送狀態(tài),硬件電路根據命令寄存器的控制字送出相應的串行同步頭,,隨后進入數據發(fā)送狀態(tài),。在每個時鐘沿,移位寄存器將數據寄存器的數據移出,,進行曼碼編碼后發(fā)出,,同時,數據計數器自動加1。當計數值為16時,,則轉入到奇偶校驗狀態(tài),,將異或得到的檢驗位編碼后發(fā)出。
本系統(tǒng)要求具有測試功能,,主要有以下注入錯誤的要求:
(1)EI_BITCOUNT:消息中指定數據的位數錯誤(不為16位),;
(2)EI_PARITY:消息中指定數據的校驗位錯誤;
(3)EI_SYNC:錯誤的同步頭,;
(4)EI_WORDCOUNT:使消息中的數據長度不等于命令字中的長度,;
(5)EI_MIDBIT:指定數據位過零點錯誤,比期望位置延時300 ns,;
(6)EI_MIDSYNC:同步頭的過零點錯誤,比期望位置延時300 ns,;
(7)EI_BIPHASE:整個位時無過零點,。
硬件電路要求在狀態(tài)機中加入對應的電路,檢測錯誤寄存器中的標志位,,并產生對應的錯誤,。
3.2 總線接收電路實現
無論是BC還是RT都需要對收到的數據進行解析。接收電路的主要功能有:曼碼的解碼,、串并轉換,、同步頭檢測、奇偶校驗以及各種錯誤的檢測,。如圖4所示,,狀態(tài)機復位之后進入同步頭搜索狀態(tài)。硬件電路以12倍1553總線傳輸速率的頻率去檢測幾種同步頭,。若收到同步頭,,則將狀態(tài)寄存器中的對應位置位,并轉入數據接收狀態(tài),;否則,,停留在該狀態(tài)下。數據接收狀態(tài)下,,移位寄存器在時鐘沿將經過解碼的數據移入,。在數據計數器計數到16之后轉入到奇偶校驗狀態(tài);之后,,將數據和狀態(tài)寫入到FIFO中,。硬件電路在狀態(tài)機的每個階段都要檢測各種錯誤,如果出錯則回到同步頭搜索狀態(tài),。同時,,產生錯誤標志和中斷信號。
3.3 硬件中斷功能的實現
如上所述,本系統(tǒng)軟件和硬件的通信主要通過中斷和查詢的方式進行信息交互,。硬件電路實現了如下中斷功能:
(1)每收到1個命令/狀態(tài)字產生中斷,;
(2)數據長度計數器中斷和使能。軟件對收到的命令/狀態(tài)字進行解析,,如果有數據準備接收,,將數據長度值寫入數據長度計數器,同時使能計數器,。硬件收到1個數據字,,遞減計數器,直到0產生中斷,,同時禁止該數據計數器中斷,;
(3)接收FIFO半滿或3/4滿產生中斷;
(4)接收FIFO全滿(overflow)產生中斷,;
(5)發(fā)送FIFO為空產生中斷,;
(6)中斷狀態(tài)/使能寄存器;
(7)等待超時中斷(接收數據長度不夠),;
(8)數據計數器中斷處,,打上時間戳;收到每個命令/狀態(tài)字打上時間戳,;發(fā)送的命令/狀態(tài)字的同步頭過零點打上時間戳,。
4 軟件設計
軟件設計包括板載嵌入程序、主機驅動程序設計,。板載嵌入程序和主機驅動程序通過共享PPC外掛內存來完成數據交互,,板載嵌入式程序通過訪問FPGA的寄存器和FIFO來完成硬件操作和數據收發(fā)。其結構如圖5所示,。
主機驅動程序的開發(fā)平臺是LabWindows/CVI,,為用戶提供方便實用的API接口函數及其定義。
嵌入式程序的開發(fā)平臺是Tornado2.2,。該程序主要完成模塊的初始化,、各通道BC\RT\BM的消息解析、中斷服務處理,、與主機交互等功能,。其中消息解析是嵌入式程序的核心部分。
當模塊選項為多功能模塊時,,要求各通道在同一個工作時期可同時作為BC,、BM和最多31個RT進行工作。當被測系統(tǒng)的可得終端有限時,,又希望獲得充足完備的測試,,多功能模塊將提供充足的終端用以測試。為了能同時且正確充當BC、BM,、RT 3個不同的角色,,模塊的嵌入式程序設計引入了可編程邏輯設計的狀態(tài)機設計思想。BC,、BM,、RT各自擁有自己的狀態(tài)機。
5 測試與結論
圖6所示為1553收發(fā)器仿真波形圖,。由于篇幅原因,,只顯示了部分功能。該仿真主要驗證了如下過程:軟件通過EBC總線接口將3個待傳輸數據以及對應的控制字寫入到FIFO中,,經過硬件電路轉換為串行數據輸出到差分輸出端,;輸出再環(huán)回到差分輸入端,經過解碼電路再寫入到FIFO中,,產生中斷信號,,并被軟件通過EBC總線將數據和狀態(tài)讀回。
經過仿真和實際驗證,,本系統(tǒng)滿足1553B總線協議的要求。同時,,該設計已經成為產品,,在實際中得到了應用。
參考文獻
[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.