王越濤,趙冬青,武慧軍
(1.中北大學儀器與電子學院,山西太原 030051;2.中北大學電子測試技術與重點實驗室,山西 太原 030051)
為提高現代飛行控制系統運行過程中的通信效率,適應數量不斷增加的內部電子通信設備,提出了MIL-STD-1553B“數字時分制命令/響應多路復用數據總線”的電子信息系統傳輸標準。
在設計系統時選用B61580S3 國產協議芯片,通過芯片內置的16 位非零等待緩沖模式來實現RT/MT功能。相比16 位透明模式[1]將電路內部的存儲器旁路而使用外部存儲器,雖具有外部擴展、存儲容量更大的優點,但由于透明模式對外部存儲器有特定要求,使用不當很容易發生協議或主機的存儲訪問失敗,因此選用具有程序設計簡潔、實時性高的16 位緩沖模式。在目前芯片價格不斷上漲、電路板空間資源受到限制的情況下,使用FPGA 配合協議芯片實現遠程終端與總線監控器功能,降低了生產成本,資源得到了合理利用。
總線接口電路主要由可編程邏輯器件FPGA、協議芯片B61580S3、電平轉換芯片和1553B 耦合變壓器四部分構成。
1553B 的協議主硬件系統采用XC6SLX150_FGG484 型號的FPGA 芯片,利用VHDL 對FPGA 的功能做行為描述。協議芯片內部配備有地址鎖存器和雙向的數據緩沖電路,有利于其與處理器FPGA總線進行數據交互;4kB×16 位的靜態存儲器容量足夠滿足1553B 總線傳輸需求。主機具有可編程的中斷結構,通過中斷信號為FPGA 預留出一段時間,由協議芯片中斷狀態寄存器對消息類型進行判斷,進而執行下一步的消息處理操作。同時,由于芯片可配置為BC(Bus Controller)、RT(Remote Terminal)、MT(Monitor Terminal)三種模式[2-3],每種模式都可作為廣播通路,因此,為保證數據的完整性和系統的容錯率,將BUS_A 作為主總線通路,BUS_B 為冗余通路。1553B 標準總線拓撲結構如圖1 所示。

圖1 1553B標準總線拓撲結構
由于FPGA 為3.3 V 邏輯高電平,協議芯片采用5 V 的TTL 邏輯電平且可向下兼容至最高2 V 電壓,因而FPGA 可向協議芯片直接傳輸,反之則會引起電流倒灌[4-5]將FPGA 燒毀,故在協議芯片向FPGA傳輸的信號引腳上增加電平轉換芯片具有一定的必要性。
將終端RT 接入總線時,使用曼徹斯特碼[6]有利于數據傳輸的快速穩定,所以1553B 總線內部采用此碼進行串行傳輸[7]。由于接口電路耦合方式有直接與間接兩種,而間接耦合具有故障隔離特性,一路終端故障并不會影響整個總線網絡,因此采用匝數比為1∶1.79 的變壓器耦合。相比于直接耦合,在變壓器引腳根部焊接隔離電阻和終端電阻,故耦合時具有較高的噪聲抑制性能和電氣隔離特性[8]。電氣隔離提高了短截線阻抗匹配,降低了終端發生故障時對1553B 總線的影響,提升了可靠性,保障了設備的安全。圖2 所示是為實現RT/MT 功能所設計的16位緩沖模式1553B 總線接口電路原理圖。

圖2 總線接口電路原理圖
1553B 總線采用中央集權方式響應,由總線控制器發出命令,各RT 比較命令字中的地址與自身地址,若相同則發出響應,執行BC 后續的操作,相異則忽略此命令[9]。與RT 模式不同,MT 僅對總線上的消息進行監控并上傳至存儲器存儲區。相比12 MHz頻率時鐘,協議芯片采用較高頻率的16 MHz[10]頻率時鐘,高的采樣頻率將極大提高其電路內部編碼器和解碼器的容錯能力。
由于總線上各個終端的地址不同,因此對協議芯片的地址配置引腳RTAD4-RTAD0 置高或低,達到對協議芯片地址配置的目的。當工作在緩沖模式時,TRAN/BUFF 引腳置低,16/8 和ZERO_WAIT 引腳置高[11],此時芯片將使用內部緩沖區對數據進行緩沖,隨后存入存儲器供脫機分析使用。
發送數據時,協議芯片會將待發送數據根據數據類型自動添加相應同步頭[12],計算奇偶校驗結果,待數據處理為20 位的曼徹斯特標準Ⅱ型編碼后,串行發送至總線。接收數據時,總線控制器與各終端交互的串行數據信息被采集至協議芯片內部,FPGA通過中斷類型將協議芯片配置為對應模式,并為其子地址分配空間;在協議芯片篩選出數據有效信息后,FPGA 執行后續操作,最后將解碼后的數據存入緩沖FIFO[13]。
協議芯片B61580S3 內部具有十分方便的中斷機制。通過協議芯片的中斷和對消息類型的識別,MT 可完成消息的有序歸類,為RT/MT 的實現提供了可能。
初始化時,芯片處在等待中斷信號狀態[14],等待總線通信的發生;當通信發生時,芯片內部產生下降沿觸發的中斷請求脈沖,通過INT 引腳向FPGA 發送中斷請求信號,同時中斷狀態寄存器會自動判斷中斷狀態并保存;FPGA 讀取并判斷中斷狀態寄存器的第0、1、4 位,以確定該幀消息位的中斷類型,之后將中斷信號的結果存入寄存器,待后續執行消息時使用。FPGA 對中斷類型進行判斷,若為RT 中斷,則協議芯片置為遠程終端RT 模式,由中斷狀態寄存器為FPGA 指出具體指令類型;若為MT 中斷,則芯片置為監控器MT 模式,并將監控數據存入緩存FIFO。中斷處理流程如圖3 所示。

圖3 中斷處理流程圖
通過讀取狀態寄存器的中斷標志信息,確定為MT 中斷時,協議芯片將進行MT 工作流程。MT 的任務是將消息的指令字、數據字、狀態字從協議芯片內有序取出并全部存入存儲器內部緩存FIFO。當收到消息后,協議芯片將根據字標志位的不同自動識別字類型并做相應存儲[15]:指令字存入指令堆棧,數據字及狀態字作為數據塊,先后被存入數據堆棧。初始化階段,FPGA 自動配置數據堆棧和指令堆棧的首地址,并為其分別分配足夠的空間來存放指針。初始化完成后,消息將按照堆棧指針所指向的地址依次存儲。若存滿,則指針跳回初始地址,將原有數據覆蓋,繼續循環存儲。
消息執行時,協議芯片將數據塊存入數據堆棧,指令字被存入指令堆棧[16]。當消息執行完畢,FPGA分別讀取存放在存儲器地址為“0102H”和“0103H”內的指令堆棧指針與數據堆棧指針。之后,FPGA 依據指針指向,依次逆序讀取指令堆棧中存放的四種信息與數據堆棧中的數據塊,并將所讀取的信息一同存入緩存FIFO[17]。至此,該次MT 工作結束,等待下次數據的到來。編幀后,FPGA 將FIFO 中的消息下發至記錄器供脫機分析使用。
由BC 下發的指令字分為方式代碼指令與一般指令兩種,一般指令用來傳輸數據,方式代碼指令用于數據流的管理。當終端處于RT 模式下時,需要對指令字的類別做出判斷并執行對應操作。
1553B 總線協議有多種5 位方式代碼指令,該終端僅使用其中兩種,即00011B 和10001B。如圖4 所示,當總線控制器發送方式代碼指令00011B 時,終端將進行自檢,FPGA 啟動測試電路對自身進行測試檢查,并將檢查后的結果存于狀態寄存器中。在BC端發送完自檢結果回讀指令后,測試結果被讀取并發送至接口寄存器,由BC 獲取結果。

圖4 自檢指令及狀態反饋
圖5 為利用示波器在1553B 總線上抓取的時間同步指令及狀態反饋波形圖。當進行時間同步操作時,BC 將指令字與數據字先后下發至RT 終端,協議芯片在收到字后,將執行解析到的方式代碼指令10001B,同時數據字被存至定時器標簽中進行RT 同步,2 μs 后同步完成并在BC 的狀態回讀指令發送后獲取結果。

圖5 時間同步指令及狀態反饋
測試臺作為總線控制器BC 對終端RT 下發測試指令,RT 對所收到的命令進行響應,MT 監控到的消息集如圖6 所示。

圖6 總線監控器消息集
消息集每行記錄一條80 字的消息。第一條是測試臺上位機模擬總線控制器BC 下發的自檢指令,EB90H 為消息頭,0001H 為消息計數,B7E3H 為方式指令,第7 至第14 字依次為數據塊指針、時間標簽字、塊狀態字和有效數據個數。由于自檢指令未發送數據字,且數據塊指針處于初始化狀態,故數據塊指針為0000H,有效數據個數為0,并以DDDDH 作為填充。第二至第四條分別為自檢狀態反饋、時間同步命令下發及狀態反饋,與預定結果保持一致,表明遠程終端RT 的功能得到實現。
第五條及以后的消息是上位機下發的測試數據,A8A0H 為命令字,數據以FDB1H 和8540H 為頭部,0000H、0001H、0002H 依次遞增被監控并存入存儲器FIFO 中。每條消息的數據塊指針地址與上一條始終相差0020H,表明數據被準確無誤地進行了存儲。綜上可知,MT 監控到了包括RT 模式在內總線上的所有消息,RT/MT 的功能得到了實現。
文中基于1553B 總線通信協議,直接利用B615 80S3 協議芯片,避免了繁瑣的協議設計;在VIVADO環境下編寫的VHDL 硬件描述語言,對硬件接口電路進行描述編程、仿真燒錄,實現了1553B 總線接口功能;經過上位機軟件對芯片功能的測試,表明該設計方法靈活可靠,單片協議芯片設計時系統更簡單、效率更高、功耗更小,生產成本得到大幅降低。