張弟,江志東,高偉偉,彭海軍
(海軍航空大學青島校區,山東 青島 266041)
MIL-STD-1553B 總線是一種時分制多路復用數據總線[1],采用指令/響應型的通信協議及雙冗余總線結構[2]。協議是20 世紀70 年代由美國空軍提出[3],總線網絡拓撲中控制權歸總線控制器(BC)所獨有[4],遠程終端(RT)通過識別終端地址來響應BC 命令,使得數據實時有序傳輸。由于它的高可靠性、實時性和強抗干擾性[5-6],已經在航空航天等軍事領域有著廣泛的應用[6]。
在1553B 總線的教學中,總線上消息的格式、通信原理以及消息的調度對于學員來說較為抽象,1553B 總線學習缺乏感性認識的問題日漸突出,學生需要總線消息格式的可視化展示、通信時序的定量分析、總線通信的網絡構建等。
現有的實驗設備,在進行驗證性實驗時,需要學員在實驗前將實驗例程燒寫到設備中,對沒有任何單片機開發經驗的學員而言,操作比較復雜,而且仿真器工作狀態不穩定,導致實驗效率低,故障率高;在進行二次開發時,由于代碼的可讀性低,學員編程實現的難度大。該設計采用一體化程序架構,將軟件固化在Flash 中,通過串口助手直接設置平臺的終端類型以及需要進行的實驗類別,操作簡單且不需要反復燒寫程序,可以提高操作的效率,并且程序的可讀性和實驗的可操作性增強,可以更好地服務1553B 總線教學。
仿真平臺能夠實現對1553B 總線協議從編碼實驗、原理實驗到綜合實驗等驗證性實驗的支持,還可以為用戶進行二次開發提供軟硬件支持。
仿真平臺設計了兩塊對稱的MBI 板,每塊MBI板上都包括主控模塊、串口通信模塊、1553B 收發電路,如圖1所示。1553B 總線有3 種工作模式:總線控制器(BC)、遠程終端(RT)、總線監視器(BM),每塊MBI 板都具備這3 種工作模式。

圖1 仿真平臺硬件設計方案
平臺軟件固化在Flash 中,相關的數據存儲在DPRAM 中。用戶能夠通過串口設定平臺的終端類型、實驗類型等;平臺能夠獨立實現點對點的消息格式實驗和通信原理實驗,也可以完成多個平臺組網進行綜合性實驗;該設計將硬件驅動進行封裝,將數據塊鏈表中數據進行具體定義,軟件可讀性增強,留有相應的軟件接口,通過改變軟件接口中的參數,就可以調整網絡內消息的調度,如圖2 所示。

圖2 1553B仿真平臺組網
1553B 總線仿真平臺的設計旨在輔助1553B 總線通信原理教學,因此,平臺的硬件設計要具備實時性和可靠性,并要具備豐富的測試資源,以便學員進行不同測試點的檢測和驗證。
主控模塊采用HKS1553BCRT,該芯片采用SoC架構,是一款通用化、低功耗的通信處理芯片[7],將“處理器芯片+多個存儲器芯片+1553B 協議處理芯片+定時器”以單芯片的形式提供給用戶使用[8]。目前HKS1553BCRT 已經廣泛應用于1553B 總線通信模塊和仿真平臺的設計[9-11]。
平臺采用供電電壓為+5 V,電源電路將外部電源引入的5 V 電壓進行電壓轉換分別得到3.3 V、2.5 V、1.8 V 和1.2 V 電壓,為各個模塊供電;兩片HKS1553 BCRT 芯片的主機接口全部連接至FPGA 處理器的IO 管腳,將PCI 總線接口轉化為USB 接口[12]。同時USB 驅動芯片FT232H 也與FPGA 處理器相連接,FPGA 能夠通過讀寫FT232H 端口的緩隊列進行數據交換,USB 接口能夠通過USB 傳輸線與PC 機進行通信。PC 機上有上位機軟件,通過USB 接口實現與實驗箱交互。
為了增加開發實驗的豐富性,實驗箱設計時將HKS1553BCRT 芯片的GPIO 接口進行了擴展,設計了8 路LED 燈、4 路離散量模擬輸入接口、一個蜂鳴器和8 段數碼管等;平臺上兩片HKS1553BCRT 芯片各配置一片32 Mbit 的Flash 存儲器用來固化程序和MBI 總線操作實驗。
1553B 總線收發電路采用雙冗余設計,如圖3 所示。電路基于HI-1573 芯片搭建總線的通信接口模塊,HI-1573 是低功耗雙向CMOS 芯片滿足1553B 收發要求,其功能是實現+3.3 V 差分電平與1553B 總線電平的匹配轉換[13]。數據的收發還需經過變壓器和耦合器,變壓器采用M21038/27-26。該設計的兩個LED 燈指示HKS1553BCRT 芯片被配置成BC 或RT 模式,指示燈通過GPIO 6 端口和GPIO 7 端口進行驅動,可以讓用戶直接看到芯片配置的狀態。

圖3 1553B總線收發器電路
串口通信電路一路為RS232;另一路為RS422 和RS485,這兩路通過軟件控制使能端選擇進行422 通信或485 通信,用于實現平臺與上位機之間的交互。
平臺采用一體化的軟件架構,能夠實現MBI 板的初始化、地址重映射、與上位機交互,總線控制器(BC)和遠程終端(RT)等功能。該設計將BC 功能和RT 功能集成在一個軟件框架內,學員可以通過PC機與平臺進行交互,選擇MBI 板運行的終端類型進行實驗。主函數流程如圖4 所示。

圖4 主函數流程圖
系統上電,先完成初始化,初始化包括雙端口存儲器配置、串口參數配置、軟件復位寄存器清零、DPRAM 清零以及串口收發寄存和FIFO 清零;隨后通過串口向上位機發送終端類型選擇選項的消息,并通過串口讀取用戶選擇字符,用戶輸入字符1 選擇BC 模式,用戶輸入字符0 選擇RT 模式,進而進入相應終端軟件的運行。
總線控制器負責傳輸信息和管理總線信息傳輸[14]。用戶通過上位機選擇平臺作為BC 使用時,運行BC 軟件,作為總線的控制中心,實現實驗類型選擇、10 種實驗的完成以及軟件復位等功能。
3.1.1 消息鏈表的建立
為了滿足1553B 標準中BC 功能的實現,需要在內部寄存器和外部存儲器中建立BC 的命令塊結構。BC 的命令字都有一個命令塊與之對應,命令塊位于外部存儲器DPRAM 中,由頭指針、控制字、兩個命令字、數據列表指針、兩個狀態字和一個尾指針8個字構成,如圖5 所示。

圖5 BC命令塊結構
兩個命令字第一個是接收命令字,第二個是發送命令字。數據指針指向命令塊消息的數據在存儲器中的起始位置。每個消息的相應數據必須連續存放。狀態字1,包含RT 響應的狀態字。狀態字2 包含RT-RT 傳送中接收RT 的狀態字。對于不是RTRT 傳送的消息,該位置不起作用。尾指針包含下一個命令塊的開始地址。
命令塊從DPRAM 偏移地址為0x80 的存儲單元開始存放,前一命令塊的尾指針指向下一命令塊的頭指針,形成命令塊鏈表。
3.1.2 軟件實現
BC 軟件結構如圖6 所示。首先通過串口打印實驗類型選項,通過串口讀取用戶選擇的字符,根據用戶選擇,運行相應實驗的函數,運行結束,通過串口打印函數運行的反饋信息。

圖6 BC軟件架構
發送命令塊時,BC 將命令塊的起始地址在DT中斷中寫入寄存器rBlkAddrReg,自動讀取命令列表,自動發送到總線上。時間間隔計時器DT 是HKS1553BCRT 芯片的毫秒級定時器,計數長度為8位。ARM7TDMI 處理器可通過rLOADDT 寄存器對DT 進行加載,當給DT 加載非零值時,DT 開始遞減,遞減到零,DT 分別向ARM7TDMI 和子系統主機發送一個中斷信號,并自動加載上一次的加載值,重新開始計數;當給DT 加載零時,DT 停止計數,不產生中斷。1553B 通信綜合實驗的大小周期調度都通過計時器控制。比如綜合實驗rLOADDT 寄存器值設為0x32,則DT 中斷周期50 ms,再通過周期計數的設計,實現100 ms 的任務周期控制,100 ms 內,所有消息被發送一次,按照固定周期收發數據。
以綜合實驗為例,其程序流程如圖7 所示。首先設置不同消息的周期控制數,通過數據加載函數完成不同消息的命令塊中控制字及數據字的加載;完成數據加載后,加載DT 值并進行中斷初始化;通過DT 中斷服務程序,實現BC 命令塊的發送;最后從RT-BC 數據緩沖區(DPRAM 中)讀取并打印收到的消息數據。

圖7 綜合實驗程序流程
DT 中斷服務程序可以分為非周期性消息處理和周期性消息發送兩部分,處理流程如圖8(a)、(b)所示。周期性消息的收發是按固定周期進行的,不同的消息設置了不同的周期控制數,每進入一次DT 中斷,每種消息的周期計數值加一,當周期計數值與周期控制值相等時,選擇通道,將命令塊頭指針寫入rBlk AddrReg寄存器,啟動使能,自動完成命令塊的發送。

圖8 DT中斷服務程序流程圖
BC 軟件在接收數據時,通過bc_revedata()函數訪問RT 到BC 的數據緩沖區,將數據存入變量,然后進行解析和顯示即可。
3.2.1 RT描述塊
RT 接收塊和發送塊是基于描述塊的相關參數進行配置,每個描述塊包括4 個字:控制字、消息狀態表指針、數據表指針和一個留待擴充的字,如圖9所示。

圖9 RT描述塊
每個子地址有一個接收描述塊和發送描述塊,因此RT 配置了31 個接收塊和發送塊。描述塊位于DPRAM 中,按照子地址的順序依次排列。通過描述塊中的索引功能,可以緩沖收發消息。
3.2.2 軟件實現
當平臺作為RT 時,BC 的命令塊到了,狀態機會自動發送相應的狀態字,RT 只需要讀取和解析數據。RT 接收數據流程如圖10 所示。

圖10 RT接收數據流程
1553B 協議處理芯片會自動將收到的數據存入對應子地址的數據緩沖區,當RT軟件讀取數據時,查詢接收塊,通過readdrv(busn,ln,len,*message)函數訪問數據緩沖區*(mbiad+recd+i*4+2)=datap,將緩沖區的數據讀入變量,然后進行進一步的解析和顯示。
RT 發送數據時,首先關閉MBI 的命令響應,執行setfuncdrv(busn,func)函數將MBI 板設置為RT 狀態,并選擇通道;向串口打印RT 地址設置消息,并通過串口回讀用戶設置;通過mbi_init_drv()函數加載輸出輸入表設置RT 地址,設置成功,執行initdrv()函數,將數據寫入DPRAM 中;將發送描述塊的地址寫入rBlkAddrReg 寄存器,并啟動發送,最后加載DT值,如圖11 所示。

圖11 RT發送數據流程
設計的平臺實現并能夠滿足多層級教學的驗證性實驗、設計性實驗和綜合性實驗,包括編碼實驗、數據傳輸實驗、廣播消息實驗、方式消息實驗和綜合實驗。
數據傳輸實驗包括BC 傳輸到RT、RT 傳輸到BC、RT 傳輸到RT 和消息時間特性實驗,通過串口助手進行人機交互并利用示波器檢測總線上的波形,將3 套實驗箱進行級聯,結合部分消息定義,可模擬典型航空電子系統中子任務的消息調度。
以RT-RT 數據傳輸實驗為例,將平臺通過串口助手交互,一端設置為BC 工作模式,其余設置為RT工作模式[15],測得波形如圖12 所示。

圖12 RT-RT數據傳輸實驗波形
1553B總線字長20位,數據有效位16位[16-18]。BC先向RT1 和RT2 分別發送命令字0x0827 和0x1447,命令字解析如下:

RT1 收到接收命令后,狀態機自動回復BC 一個狀態字;RT2 收到發送命令字,向RT1 發送7 個數據字;RT1 通過讀接收緩沖區接收數據,數據接收完,狀態機向BC 發送狀態字,通信過程結束。通過波形可以看出這一過程字的交換,加深學生對1553B 總線通信過程的認識。
文中設計采用一體化的軟件架構,實現了3 個層次10種實驗類型的功能,并且留有二次開發的軟件接口,使得實驗的穩定性、操作的友好性大幅度提高。