文 豐,杜志美,薛志超,張志龍
(1.中北大學 儀器與電子學院,山西 太原 030051;2.中北大學 電子測試技術(shù)重點實驗室,山西 太原 030051;3.中國運載火箭技術(shù)研究院空間物理重點實驗室,北京 100076)
飛機、輪船等機動平臺上使用的電子設(shè)備越來越多,功能越來越復雜,將各電子設(shè)備有效組合在同一網(wǎng)絡(luò)平臺至關(guān)重要.MIL-STD-1553B是為適應(yīng)飛機飛行過程中通信安全提出的電子系統(tǒng)信息傳輸標準,其優(yōu)越的實時性、高度的數(shù)據(jù)可靠性以及同時可掛載多個終端等優(yōu)勢在飛機電子系統(tǒng)中得到廣泛使用.
MIL-STD-1553B總線上有總線控制器(BC)、遠程終端(RT)和總線監(jiān)視器(MT)3種類型的終端[1,2].以往使用的BU-61580 16位非零等待緩沖模式,外部接口電路簡單,通過主控器對協(xié)議芯片的操作較為方便,但只能實現(xiàn)單一的總線控制器、遠程終端或者總線監(jiān)控器功能;而將BU-61580的連接模式設(shè)置為透明模式時,BU-61580具有外部RAM擴展的功能,同時可與主控器共享RAM接口,提高了數(shù)據(jù)存儲容量和實時性.在芯片價格較為昂貴,電路板空間資源受到限制的情況下,透明模式還使得BU-61580具備遠程終端和總線監(jiān)控器同時工作的功能,實現(xiàn)了資源的合理利用.
1553B總線接口電路包括可編程邏輯器件FPGA、1553B協(xié)議芯片BU-61580、耦合變壓器三部分.
本系統(tǒng)主處理器FPGA采用Spartan-3系列芯片XC3S400,滿足可同時連接并控制總線控制器和總線監(jiān)視器的接口和時序要求,F(xiàn)PGA代碼在ISE14.7編譯環(huán)境下采用硬件描述語言VHDL編寫.BU-61580芯片作為一種全集成化多協(xié)議的接口芯片,由兩個低功耗的雙端收發(fā)器、4 K字靜態(tài)RAM以及直接面向主處理器的緩存接口組成[3].在共用RAM和DMA配置模式下,BU-61580能最大外擴64 K RAM.同時,該芯片集成了3種終端協(xié)議邏輯,各個終端連接到總線上都可形成廣播通道.為保證數(shù)據(jù)的完整性和系統(tǒng)的容錯性,每個終端同時連接到多條總線上,指定一條總線用作通信的主控制總線,其余作為空閑的冗余總線[4].總線結(jié)構(gòu)如圖1 所示.
圖1 1553B標準總線拓撲結(jié)構(gòu)Fig.1 1553B standard bus topology
各終端所發(fā)信息以消息的形式在1553B總線上進行傳輸,每條消息的傳送內(nèi)容有命令字、數(shù)據(jù)字和狀態(tài)字.1553B總線網(wǎng)絡(luò)采用集中控制方式,即由BC向總線上發(fā)送命令.信息的傳輸過程首先由BC通過編碼器將命令字發(fā)送到總線,RT將總線中命令字的地址與自身地址進行比較,決定是否接收該命令字[5].MT并不參與總線消息通信,而是監(jiān)聽總線上傳送的消息,并將它們記錄并保存在存儲器中,供脫機分析使用.BU-61580默認模式采用16 MHz時鐘頻率,設(shè)置配置寄存器#5最高位,將外部時鐘頻率改為12 MHz,在該時鐘工作模式下,時鐘經(jīng)過內(nèi)部倍頻后解碼/編碼器的采樣頻率為24 MHz,相比于 16 MHz 的時鐘采樣率,24 MHz時鐘頻率下解碼/編碼方式的采樣率提高了電路內(nèi)部解碼/編碼器的容錯能力.透明模式接口電路原理圖如圖2 所示.
圖2 透明模式接口電路原理圖Fig.2 Schematic diagram of the transparent mode interface circuit
透明模式的實現(xiàn)需要將BU-61580的輸入引腳TRANSPARENT/BUFFERED置1.在FPGA內(nèi)部開辟容量為4 K字的RAM空間用于擴展.FPGA接收BU-61580的輸出控制信號IOEN、READYD、INT,進而判斷是否可以對其進行有效操作.MEMWR和MEMOE信號用來控制RAM的讀寫.透明模式下FPGA與BU-61580之間的數(shù)據(jù)總線和地址總線具有雙向驅(qū)動的功能,由于FPGA通用I/O引腳是LVTTL邏輯+3.3 V,BU-61580是邏輯+5 V,F(xiàn)PGA的輸出信號可以直接驅(qū)動BU-61580,而不能承受+5 V的輸入電壓[6],因此,需要在BU-61580信號輸出引腳、數(shù)據(jù)總線接口和地址總線接口處采用電平轉(zhuǎn)換芯片SN74LVC2T45和SN74LVTH162245與FPGA之間進行電氣隔離.由于設(shè)備間連接電纜長度要求,總線耦合方式不宜選用直接耦合,從而采用變壓器耦合,選用變壓器型號為B-3226,變壓比為1∶1.79,傳輸距離小于6 m.
總線監(jiān)控器功能是監(jiān)聽總線上傳送的消息,并將它們記錄下來,這就要求對協(xié)議芯片的寄存器和存儲器進行初始化配置,確??偩€監(jiān)控器功能的執(zhí)行,并指定消息命令和數(shù)據(jù)的存儲地址.配置過程中,上位機根據(jù)協(xié)議芯片規(guī)定的配置要求,將數(shù)據(jù)及其對應(yīng)的地址打包發(fā)送,即發(fā)送一個數(shù)據(jù)后再發(fā)送該數(shù)據(jù)對應(yīng)的地址.由于配置過程中總線數(shù)據(jù)的傳輸速率與主機系統(tǒng)總線傳輸速率存在差異,為確保數(shù)據(jù)傳送的準確性和連續(xù)性,在FPGA內(nèi)部為接口電路設(shè)計了可自動讀寫邏輯,分別為容量1 K字節(jié)的下傳FIFO和容量為2 K字節(jié)的上傳FIFO,F(xiàn)PGA內(nèi)部自動讀寫邏輯原理如圖3 所示.
圖3 電路緩存設(shè)計Fig.3 Circuit cache design
BU-61580芯片提供3種不同的總線控制器模式,分別為字監(jiān)控器模式、選擇消息監(jiān)控器模式、RT/選擇消息監(jiān)控器混合模式[7].本設(shè)計采用選擇消息監(jiān)控器模式,該方法極大地減少了主處理器的處理負擔.典型的選擇消息監(jiān)控器模式的存儲器結(jié)構(gòu)如表1 所示[8].
表1 典型的選擇消息監(jiān)控器模式的存儲器結(jié)構(gòu)Tab.1 Typical memory structure for selecting message monitor mode
存儲器固定位置設(shè)置有獨立的命令堆棧指針(Command Stack Pointer)和數(shù)據(jù)堆棧指針(Data Stack Pointer)[9,10],分別用來指向命令堆棧和數(shù)據(jù)堆棧,其中命令堆棧大小為1 K字,存放監(jiān)控消息的描述符;數(shù)據(jù)堆棧大小為2 K字,存放監(jiān)控消息的數(shù)據(jù)字和狀態(tài)字,且相鄰兩條消息的數(shù)據(jù)字和狀態(tài)字在堆棧中無間隔順序存儲.
總線監(jiān)控器啟動后實現(xiàn)對1553B總線上傳送消息的監(jiān)聽.配置中斷屏蔽寄存器采用消息中斷機制,寄存器#2采用電平中斷且中斷狀態(tài)自動清除.當MT監(jiān)聽到總線一條消息傳送完成時,INT引腳會產(chǎn)生中斷請求,輸出為低電平,在FPGA讀取中斷狀態(tài)寄存器后,中斷狀態(tài)清除,輸出恢復為高電平.該中斷機制的選擇有利于FPGA通過判斷INT引腳輸出來判斷總線上是否有消息傳送,避免造成總線消息丟失.當INT輸出為低電平時,F(xiàn)PGA便對BU-61580的存儲單元進行讀取.總線消息數(shù)據(jù)波形和INT輸出變化如圖4 所示.
圖4 總線消息數(shù)據(jù)波形和INT輸出變化Fig.4 Bus message data waveform and INT output changes
在讀取數(shù)據(jù)堆棧時,最初采用的方法是通過命令堆棧描述符中的數(shù)據(jù)塊指針(DATA BLOCK POINTER)來進行尋址,可以正確尋找到該消息對應(yīng)的數(shù)據(jù)塊,但是讀取的數(shù)據(jù)字長度由FPGA控制,較為固定,只能滿足總線上單一消息循環(huán)發(fā)送的情況,而無法滿足多消息發(fā)送的情況.因此,改用初始化命令堆棧指針(f_command_stack_pointer)和數(shù)據(jù)堆棧指針(f_data_stack_pointer)進行尋址,通過與固定地址單元指針command_stack_pointer和data_stack_pointer 進行比較判斷數(shù)據(jù)堆棧讀取是否完成.
由于在實驗過程中,BC將某條消息以一定的時間間隔循環(huán)發(fā)送到總線,而MT的存儲空間有限,會造成命令堆棧和數(shù)據(jù)堆棧的溢出.如果不考慮該情況,上傳到上位機的消息會每隔一段時間出現(xiàn)一次丟失.該消息的丟失主要通過相鄰兩條消息的時間標記字來判斷,因此,需要對初始化指針f_command_stack_pointer和f_data_stack_pointer進行復位.消息數(shù)據(jù)上傳流程圖如圖5 所示.
圖5 消息數(shù)據(jù)上傳流程圖Fig.5 Message data upload flowchart
圖6 所示為MT監(jiān)控到的總線消息信息,該消息由總線控制器BC循環(huán)發(fā)送,遠程終端RT接收,F(xiàn)PGA對MT內(nèi)存單元進行讀取并上傳至上位機顯示.
圖6 MT監(jiān)控到的總線消息信息Fig.6 Bus message information monitored by MT
如圖6 所示,每行記錄一條消息,前4個字為命令堆棧描述符,分別為塊狀態(tài)字、時間標記字、數(shù)據(jù)塊地址和消息命令字,其中塊狀態(tài)字為協(xié)議芯片根據(jù)消息處理結(jié)果更新的單元,此處顯示為8100H;時間標記字記錄每條消息傳送的時間標記,由相鄰兩條消息的時間標記差可計算出消息發(fā)送的時間間隔;數(shù)據(jù)塊地址存儲的是該條消息數(shù)據(jù)字在數(shù)據(jù)堆棧中的起始地址.數(shù)據(jù)堆棧存儲的是數(shù)據(jù)字和狀態(tài)字,在堆棧中無間隔順序存儲,圖中所示消息數(shù)據(jù)字為EB90H,0001H,0002H,0003H,0004H,0005H,0006H,0007H,0008H,0009H,狀態(tài)字為6000H,數(shù)據(jù)長度為11個字,與相鄰兩條消息的數(shù)據(jù)塊首地址差相等,說明MT總線消息的監(jiān)聽完整準確.
本文在1553B傳輸協(xié)議的基礎(chǔ)上,利用可編程邏輯器件FPGA和協(xié)議芯片BU-61580完成透明模式接口電路設(shè)計,運用VHDL硬件描述語言進行編程實現(xiàn)硬件的接口功能,通過上位機的配置實現(xiàn)總線監(jiān)控器功能,該設(shè)計方法靈活,便于操作.透明模式的應(yīng)用可以實現(xiàn)BU-61580外部RAM空間的擴展,在電路板空間資源無法容納兩片BU-61580的情況下,可以采用透明模式利用一片BU-61580實現(xiàn)遠程終端和總線監(jiān)視器同時工作,很大程度上節(jié)約了成本.