摘要:為了滿足載荷與衛(wèi)星進行可靠通信的目的,設計并實現了基于FPGA和BU-65170協議芯片的1553B遠程終端。自行設計了用于控制BU-65170的主控制狀態(tài)機,采用16位零等待緩沖接口模式,使用單消息和雙緩沖模式進行消息傳輸。創(chuàng)新性地引入RS 422總線與1553B總線進行通信,方便測試過程,結果直觀可見。采用專用測試板卡Alta ECD54-1553對系統(tǒng)進行測試,獲得預期的可靠結果。FPGA取代傳統(tǒng)CPU來控制1553B通信并集成數據傳輸功能,采用Verilog HDL硬件描述語言有利于軟件移植,縮短研發(fā)周期,提高系統(tǒng)可靠性。
關鍵詞:1553B;FPGA;BU-65170;RS 422
1 1553B概述
MIL-STD-1553B是美國于20世紀70年提出的一種用于戰(zhàn)機的時分控制/命令響應式總線。1553B的網絡拓撲結構如圖1所示,它最多可以掛載32個終端,所有消息共享一條線路,通過采用冗余設計,另一條線路始終處于熱備份狀態(tài),大大提高了可靠性。其字長20 b,數據有效長度16 b,最大信息量長度為32個字,傳輸速度為1 Mb/s,傳輸方式為半雙工方式,采用曼徹斯特Ⅱ型碼。1553B的3種終端類型為:
(1)總線控制器(Bus Controller),總線系統(tǒng)中惟一被安排為執(zhí)行建立和啟動數據傳輸任務的終端。
(2)遠程終端(Remote Terminal),子系統(tǒng)到總線的接口,在BC的控制下實現命令、數據的接收和發(fā)送。
(3)總線監(jiān)視器(Bus Monitor),能記錄總線上的所有數據,方便備份和查錯,但不參與總線通信。
由于1553B具有可靠性高、實時性好、擴展方便等優(yōu)點,被廣泛應用于飛機、導彈、衛(wèi)星、艦艇等航空航天和兵器領域。目前,航天系統(tǒng)大多采用DDC公司的BU-61580/BU-65170協議芯片來實現1553B通信。BU-61580是一款多協議集成接口芯片,由兩個低功耗雙端收發(fā)器、協議邏輯、存儲器管理邏輯、處理器接口邏輯及4K×16 B內置共享靜態(tài)RAM以及直接面向主處理器的緩存接口組成,能完全實現1553B標準所規(guī)定的所有信息傳輸方式。BU-61580和BU-65170的區(qū)別在于前者集成了BC/RT/BM功能,后者只能實現RT功能。在此研制的某型號項目作為一個子系統(tǒng),只要求實現RT功能。因此,選用了BU-65170作為1553B協議芯片。
一般采用CPU來控制BU-65170實現1553B通信,然而CPU只能順序地執(zhí)行命令,系統(tǒng)硬件不擴展的情況下,難以實現更加復雜的數據處理和控制。隨著航天載荷小型化的要求,數據的運算處理,系統(tǒng)的運行控制及通信,更多地采用FPGA實現,這樣就可以把所有功能集成在一片FPGA芯片中,還能實現代碼的重復利用,提高研發(fā)效率。本文采用Xilinx xc6slx75控制BU-65170實現1553B通信,同時因工程項目需要又用FPGA實現了RS422通信,這樣不僅方便測試,使結果直觀可見,還使整個系統(tǒng)事實上成為了1553B總線和RS 422總線適配器。只要稍稍修改代碼,就可以在保留數據處理的功能下將系統(tǒng)移植應用到采用其他通信方式(如RS 232,LVDS等)的子系統(tǒng)上。
2 硬件設計
BU-65170共有70個信號管腳,其中主要的控制信號如表1所示。
Xilinx的Spartan-6系列xc6s1x75芯片擁有74 637個邏輯單元,11 662個可配置邏輯模塊,280個I/O口以及18 KB的Block RAM模塊,同時擁有豐富的時鐘管理模塊(CMT)、集成存儲器控制模塊等,數據速率高達800 Mb/s。采用XCF32P Flash芯片作為FPGA的PROM,使用MASTER配置模式,這樣在每次上電時程序都會寫入到FPGA中。由于FPGA的I/O口是3.3 V邏輯,而BU-65170是+5 V邏輯,所以需要采用電平轉換芯片74LVX3245進行FPGA和BU-65170之間的邏輯電平轉換。系統(tǒng)的硬件連接如圖2所示。
BU-65170有4種接口模式可以選擇,采用16位零等待模式。在此模式下,FPGA接收到BU-65170的READYn信號為低電平后,表示D15-D00上已經呈現讀取的數據,或者D15-D00上的數據已經寫入存儲器或寄存器。BU-65170各信號配置如表2所示。
分別采用DS26LV32AW和DS26LV31W芯片作為RS 422差分接收器和驅動器,UART設計將在邏輯設計中詳細介紹。
3 邏輯設計
使用Verilog HDL進行編程,在FPGA中實現所需的功能。邏輯總體框圖如圖3所示,下面分別對各個模塊進行詳細介紹。
3.1 讀/寫模塊
根據芯片手冊給出的CPU讀寫時序圖編寫程序,在FPGA中實現對BU-65170寄存器和內部RAM進行讀寫的模塊。讀寫模塊的仿真時序圖如圖4和圖5所示。
在讀寫過程中,信號BU_RD_WR為‘1’時表示對BU-65170進行讀操作,為‘0’時為寫操作;信號BU_MEM_REG為‘1’時表示對內部RAM進行讀/寫,為‘0’時表示對寄存器進行讀/寫。在零等待模式中,信號BU_STRBD和BU_SELECT(可與BU_STRBD綁定,所以沒有給出)控制著讀/寫操作的開始。
在長STRBD模式下SELECT和STRBD同時為低電平的第2個CLK上升沿,內部鎖存MEM_REG和RD_WR信號;短STRBD模式下STRBD上升沿內部鎖存MEM_REG和RD_WR信號??紤]到容易滿足時序要求,采用長STRBD模式。當BU-65170鎖存住MEM_REG或RD_WR信號后,BU_READY會出現一個上升沿,緊接著當BU_READY出現下降沿時,表示BU-65170內部傳送周期已經結束。
在16位零等待模式下,寫一個內部存儲單元或寄存器時,只需執(zhí)行一次寫操作,使該字的地址和數據呈現在地址總線和數據總線上即可。而讀一個內部存儲單元或寄存器時,需要進行兩次讀操作。第一次讀時,要讀單元的地址和位置出現在A13-A00和MEM_REG上,這個周期獨處的數據應忽略掉;第二次讀時,相應的數據會出現在數據總線上。
因此,如果FPGA要執(zhí)行一個多字讀操作,地址總是早于對應的讀出數據,在同一個周期上,地址總線上出現下一個字的地址,數據總線上出現前一個字的讀出數據。
3.2 配置模塊
BU-65170有17個寄存器,通過配置這些寄存器來選擇工作模式和具體功能。選擇增強模式、增強中斷使能模式,使能RT子地址控制字中斷,服務請求自動清除。初始化流程如圖6所示,寄存器詳細配置如表3所示,具體子地址設置如表4所示。
3.3 時鐘模塊
使用40 MHz的外部晶振作為FPGA的時鐘輸入,然后用FPGA自帶DCM模塊分頻得到16 MHz主時鐘,作為其余模塊的全局時鐘,仿真和實際波形測試表明全局時鐘穩(wěn)定性良好,滿足系統(tǒng)要求。
3.4 RS 422控制及UART模塊
RS 422模塊實現了RS 422通信功能,一方面滿足了工程要求;另一方面也使調試1553B系統(tǒng)變得方便明了,因為1553B發(fā)送過來的數據可以立即通過RS 422轉RS 232接口顯示在PC機上,同理,可以通過PC機發(fā)送數據到1553B的總線控制器。1553B總線接收數據的過程如下:RS 422端口發(fā)送數據到FPGA,將數據緩存在FIFO中,RT接收到發(fā)送命令后,FPGA把FIFO中的數據寫入RT相應的發(fā)送子地址,最后再由RT發(fā)送給BC。類似地,1553B總線發(fā)送數據的過程如下:RT接收到接收命令后,FPGA立刻把數據從相應子地址讀出,并傳送給RS 422模塊,再通過UART將數據發(fā)出。
UART采用10位異步通信方式,即1個起始位,8個數據位,1個停止位,如圖7所示,波特率為9 600 b/s。RS 422控制模塊內部包含一個分頻模塊,將產生RS 422接口定義中的收發(fā)所需的波特率。通過對于系統(tǒng)時鐘的分頻,產生波特率為9 600 b/s和153 600的信號。
接收狀態(tài)機見圖8。當檢測到起始位時,首先檢驗起始位是否正確,如果正確,立即采樣數據位,否則就返回空閑狀態(tài)。當采樣計數器計到8后判斷下一位是否為停止位,若不是,則丟棄數據并進入空閑狀態(tài);若是,則把數據存入寄存器后進入空閑狀態(tài),結束一次成功的接收。為了提高正確率,還采用三模冗余算法。UART發(fā)送過程與接收類似,在收到發(fā)送信號后將需要發(fā)送的數據存入緩存,在使能有效和緩存不空的情況下開始傳輸。此時指針開始計數,首先發(fā)送起始位‘0’,接著一次發(fā)送8 b數據,最后發(fā)送停止位‘1’,結束一次發(fā)送過程。
3.5 主控制器
FPGA中控制與BU-65170通信的主控制狀態(tài)機如圖9所示。初始化完成后程序進入等待狀態(tài)。此時如果收到中斷信號(INT=0),則首先讀取中斷寄存器,判斷是否為消息結束中斷(EOM),如果不是,進入錯誤狀態(tài),等待BC對RT進行檢查或重啟RT;如果是消息結束中斷,則繼續(xù)讀取上一個命令字,若是發(fā)送命令,則從FIFO中讀取28 B的狀態(tài)信息數據,接著向相應的發(fā)送子地址數據塊填寫數據,在RT收到下一個發(fā)送命令后,BC從相應子地址讀取上一條數據,這與對BU-65170進行讀操作的原理相似。如果上一個命令字是接收命令,則讀取相應子地址對應的數據塊,然后讀取具體命令內容,再根據命令進行相應的處理,最后回到等待狀態(tài)。
接收子地址1工作在雙緩沖模式,用于接收BC發(fā)送的廣播時間碼,加載到每一條從RT發(fā)送到BC的狀態(tài)信息的頭部。雙緩沖模式可以使FPGA訪問指定子地址剛接收到的消息,RT將接收的數據字交替存儲到數據塊0和數據塊1中。當FPGA需要訪問接收子地址1內的消息時,首先將其改成單消息模式,讀取數據塊地址,并將其bit5的值取反得到“非活躍”數據塊的地址,讀取其上的最新時間碼后再將接收子地址1改為雙緩沖模式。
4 測試
選用Alta公司的ECD54-1553多功能板卡(能模擬BC\RT\BM)作為BC,與設計的RT搭成一個測試系統(tǒng),如圖10所示。
首先在ECD54-1553的控制界面中設置RT地址為21,然后根據在FPGA邏輯中設定的RT子地址及傳輸數據量進行相應的設置,再開啟總線監(jiān)控(BM)功能,測試RT→BC的過程如圖11所示。設置RT地址為21、發(fā)送子地址為6、數據量為32個字(2 B標志位+28 B數據+2 B保留位);通過串口調試助手從PC機向RS 422發(fā)送28 B數據;經過FPGA處理后傳送給1553B總線控制器,BM顯示總線控制器正確收到從RS 422發(fā)來的數據。測試BC→RT的過程如圖12所示。
設置RT地址為21、接收子地址為4、數據量為2個字;由BC發(fā)送2個字的數據12FE 42DF;串口調試助手顯示RS 422正確接收到BC發(fā)送過來的數據。示波器測得的實際曼徹斯特Ⅱ型碼波形如圖13,圖14所示。
測試結果表明RT能正確、穩(wěn)定地跟BC進行通信,達到工程項目所需的要求。
5 結語
本文設計了基于FPGA和BU-65170的1553B遠程終端,實現1553B通信。詳細介紹了硬件連接、BU-65170芯片配置、FPGA邏輯模塊、UART設計、測試過程和結果。通過引入RS 422接口,更加直觀地觀測到1553B通信過程,易于調試。采用FPGA的最大優(yōu)點是能迅速移植代碼,縮減研發(fā)周期。隨著技術的發(fā)展,對數據傳輸和處理提出了更高的要求,未來可以把控制其他子系統(tǒng)的模塊和數據處理功能集成在一塊FPGA芯片中提高集成性,便于開發(fā)和維護。