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