摘要: 為了滿足載荷與衛星進行可靠通信的目的,設計并實現了基于FPGA和BU?65170協議芯片的1553B遠程終端。自行設計了用于控制BU?65170的主控制狀態機,采用16位零等待緩沖接口模式,使用單消息和雙緩沖模式進行消息傳輸。創新性地引入RS 422總線與1553B總線進行通信,方便測試過程,結果直觀可見。采用專用測試板卡Alta ECD54?1553對系統進行測試,獲得預期的可靠結果。FPGA取代傳統CPU來控制1553B通信并集成數據傳輸功能,采用Verilog HDL硬件描述語言有利于軟件移植,縮短研發周期,提高系統可靠性。
關鍵詞: 1553B; FPGA; BU?65170; RS 422
中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2013)14?0065?05
Design and realization of 1553B remote terminal based on FPGA and BU?65170
SHI Lin?feng, WANG Bin?yong, HE Zhi?ping, CHEN Kai
(Shanghai Institute of Technical Physics, Chinese Academy of Sciences, Shanghai 200083, China)
Abstract: In order to realize reliable communication between payload and satellite platform, a 1553B remote terminal was designed based on FPGA and BU?65170. A FSM was designed to control BU?65170. The 16?bit zero latency buffering interface mode and single message/double buffering mode are adopted to transmite messages. RS?422 is used to communicate with 1553B for the convenient testing. In the test, an exclusive testing card Alta ECD54?1553 was employed, and a correct result was obtained. All of the control and data processing functions are centralized in FPGA instead of CPU. Verilog HDL is used for software transportation, RD cycle reduction and reliability improvement.
Keywords: 1553B; FPGA; BU?65170; RS?422
1 1553B概述
MIL?STD?1553B是美國于20世紀70年提出的一種用于戰機的時分控制/命令響應式總線[1]。1553B的網絡拓撲結構如圖1所示,它最多可以掛載32個終端,所有消息共享一條線路,通過采用冗余設計,另一條線路始終處于熱備份狀態,大大提高了可靠性。其字長20 b,數據有效長度16 b,最大信息量長度為32個字,傳輸速度為1 Mb/s,傳輸方式為半雙工方式,采用曼徹斯特Ⅱ型碼。1553B的3種終端類型為:
(1)總線控制器(Bus Controller),總線系統中惟一被安排為執行建立和啟動數據傳輸任務的終端。
(2)遠程終端(Remote Terminal),子系統到總線的接口,在BC的控制下實現命令、數據的接收和發送。
(3)總線監視器(Bus Monitor),能記錄總線上的所有數據,方便備份和查錯,但不參與總線通信[2]。
圖1 1553B網絡拓撲結構
由于1553B具有可靠性高、實時性好、擴展方便等優點,被廣泛應用于飛機、導彈、衛星、艦艇等航空航天和兵器領域[3]。目前,航天系統大多采用DDC公司的BU?61580/BU?65170協議芯片來實現1553B通信[4]。BU?61580是一款多協議集成接口芯片,由兩個低功耗雙端收發器、協議邏輯、存儲器管理邏輯、處理器接口邏輯及4K×16 B內置共享靜態RAM以及直接面向主處理器的緩存接口組成,能完全實現1553B標準所規定的所有信息傳輸方式。BU?61580和BU?65170的區別在于前者集成了BC/RT/BM功能,后者只能實現RT功能[5]。在此研制的某型號項目作為一個子系統,只要求實現RT功能。因此,選用了BU?65170作為1553B協議芯片。
一般采用CPU來控制BU?65170實現1553B通信,然而CPU只能順序地執行命令,系統硬件不擴展的情況下,難以實現更加復雜的數據處理和控制。隨著航天載荷小型化的要求,數據的運算處理,系統的運行控制及通信,更多地采用FPGA實現,這樣就可以把所有功能集成在一片FPGA芯片中,還能實現代碼的重復利用,提高研發效率。本文采用Xilinx xc6slx75 控制BU?65170實現1553B通信,同時因工程項目需要又用FPGA實現了RS 422通信,這樣不僅方便測試,使結果直觀可見,還使整個系統事實上成為了1553B總線和RS 422總線適配器。只要稍稍修改代碼,就可以在保留數據處理的功能下將系統移植應用到采用其他通信方式(如RS 232,LVDS等)的子系統上。
2 硬件設計
BU?65170共有70個信號管腳,其中主要的控制信號如表1所示。
表1 BU?65170主要控制信號
Xilinx的Spartan?6系列xc6slx75芯片擁有74 637個邏輯單元,11 662個可配置邏輯模塊,280個I/O口以及18 KB的Block RAM模塊,同時擁有豐富的時鐘管理模塊(CMT)、集成存儲器控制模塊等,數據速率[6]高達800 Mb/s。采用XCF32P Flash芯片作為FPGA的PROM,使用MASTER配置模式,這樣在每次上電時程序都會寫入到FPGA中。由于FPGA的I/O口是3.3 V邏輯,而BU?65170是+5 V邏輯,所以需要采用電平轉換芯片74LVX3245進行FPGA和BU?65170之間的邏輯電平轉換。系統的硬件連接如圖2所示。
BU?65170有4種接口模式可以選擇,采用16位零等待模式。在此模式下,FPGA接收到BU?65170的READYn信號為低電平后,表示D15?D00上已經呈現讀取的數據,或者D15?D00上的數據已經寫入存儲器或寄存器。BU?65170各信號配置如表2所示。
表2 BU?65170各信號配置
分別采用DS26LV32AW和DS26LV31W芯片作為RS 422差分接收器和驅動器,UART設計將在邏輯設計中詳細介紹。
3 邏輯設計
使用Verilog HDL進行編程[7],在FPGA中實現所需的功能。邏輯總體框圖如圖3所示,下面分別對各個模塊進行詳細介紹。
圖3 FPGA邏輯框圖
3.1 讀/寫模塊
根據芯片手冊給出的CPU讀寫時序圖編寫程序,在FPGA中實現對BU?65170寄存器和內部RAM進行讀寫的模塊。讀寫模塊的仿真時序圖如圖4和圖5所示。
圖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位零等待模式下,寫一個內部存儲單元或寄存器時,只需執行一次寫操作,使該字的地址和數據呈現在地址總線和數據總線上即可。而讀一個內部存儲單元或寄存器時,需要進行兩次讀操作。第一次讀時,要讀單元的地址和位置出現在A13?A00和MEM_REG上,這個周期獨處的數據應忽略掉;第二次讀時,相應的數據會出現在數據總線上。
因此,如果FPGA要執行一個多字讀操作,地址總是早于對應的讀出數據,在同一個周期上,地址總線上出現下一個字的地址,數據總線上出現前一個字的讀出數據。
3.2 配置模塊
BU?65170有17個寄存器,通過配置這些寄存器來選擇工作模式和具體功能。選擇增強模式、增強中斷使能模式,使能RT子地址控制字中斷,服務請求自動清除。初始化流程如圖6所示,寄存器詳細配置如表3所示,具體子地址設置如表4所示。
3.3 時鐘模塊
使用40 MHz的外部晶振作為FPGA的時鐘輸入,然后用FPGA自帶DCM模塊分頻得到16 MHz主時鐘[8],作為其余模塊的全局時鐘,仿真和實際波形測試表明全局時鐘穩定性良好,滿足系統要求。
圖6 初始化流程
表3 寄存器配置
表4 子地址設置
3.4 RS 422控制及UART模塊
RS 422模塊實現了RS 422通信功能,一方面滿足了工程要求;另一方面也使調試1553B系統變得方便明了,因為1553B發送過來的數據可以立即通過RS 422轉RS 232接口顯示在PC機上,同理,可以通過PC機發送數據到1553B的總線控制器。1553B總線接收數據的過程如下:RS 422端口發送數據到FPGA,將數據緩存在FIFO中,RT接收到發送命令后,FPGA把FIFO中的數據寫入RT相應的發送子地址,最后再由RT發送給BC。類似地,1553B總線發送數據的過程如下:RT接收到接收命令后,FPGA立刻把數據從相應子地址讀出,并傳送給RS 422模塊,再通過UART將數據發出。
UART采用10位異步通信方式,即1個起始位,8個數據位,1個停止位,如圖7所示,波特率為9 600 b/s。RS 422控制模塊內部包含一個分頻模塊,將產生RS 422接口定義中的收發所需的波特率。通過對于系統時鐘的分頻,產生波特率為9 600 b/s和153 600的信號[9]。
圖7 RS 422數據格式
接收狀態機見圖8。當檢測到起始位時,首先檢驗起始位是否正確,如果正確,立即采樣數據位,否則就返回空閑狀態。當采樣計數器計到8后判斷下一位是否為停止位,若不是,則丟棄數據并進入空閑狀態;若是,則把數據存入寄存器后進入空閑狀態,結束一次成功的接收。為了提高正確率,還采用三模冗余算法。UART發送過程與接收類似,在收到發送信號后將需要發送的數據存入緩存,在使能有效和緩存不空的情況下開始傳輸。此時指針開始計數,首先發送起始位‘0’,接著一次發送8 b數據,最后發送停止位‘1’,結束一次發送過程。
圖8 UART接收狀態機
3.5 主控制器
FPGA中控制與BU?65170通信的主控制狀態機如圖9所示。初始化完成后程序進入等待狀態。此時如果收到中斷信號(INT=0),則首先讀取中斷寄存器,判斷是否為消息結束中斷(EOM),如果不是,進入錯誤狀態,等待BC對RT進行檢查或重啟RT;如果是消息結束中斷,則繼續讀取上一個命令字,若是發送命令,則從FIFO中讀取28 B的狀態信息數據,接著向相應的發送子地址數據塊填寫數據,在RT收到下一個發送命令后,BC從相應子地址讀取上一條數據,這與對BU?65170進行讀操作的原理相似。如果上一個命令字是接收命令,則讀取相應子地址對應的數據塊,然后讀取具體命令內容,再根據命令進行相應的處理,最后回到等待狀態。
接收子地址1工作在雙緩沖模式,用于接收BC發送的廣播時間碼,加載到每一條從RT發送到BC的狀態信息的頭部。雙緩沖模式可以使FPGA訪問指定子地址剛接收到的消息,RT將接收的數據字交替存儲到數據塊0和數據塊1中。當FPGA需要訪問接收子地址1內的消息時,首先將其改成單消息模式,讀取數據塊地址,并將其bit5的值取反得到“非活躍”數據塊的地址,讀取其上的最新時間碼后再將接收子地址1改為雙緩沖模式。
圖9 主控制狀態機
4 測 試
選用Alta公司的ECD54?1553多功能板卡(能模擬BC\RT\BM)作為BC,與設計的RT搭成一個測試系統,如圖10所示。
圖10 測試系統
首先在ECD54?1553的控制界面中設置RT地址為21,然后根據在FPGA邏輯中設定的RT子地址及傳輸數據量進行相應的設置,再開啟總線監控(BM)功能[10],測試RT→BC的過程如圖11所示。設置RT地址為21、發送子地址為6、數據量為32個字(2 B標志位+28 B數據+2 B保留位);通過串口調試助手從PC機向RS 422發送28 B數據;經過FPGA處理后傳送給1553B總線控制器,BM顯示總線控制器正確收到從RS 422發來的數據。測試BC→RT的過程如圖12所示。
設置RT地址為21、接收子地址為4、數據量為2個字;由BC發送2個字的數據12FE 42DF;串口調試助手顯示RS 422正確接收到BC發送過來的數據。示波器測得的實際曼徹斯特Ⅱ型碼波形如圖13,圖14所示。
圖13 RT→BC示波器實測圖
圖14 BC→RT示波器實測圖
測試結果表明RT能正確、穩定地跟BC進行通信,達到工程項目所需的要求。
5 結 語
本文設計了基于FPGA和BU?65170的1553B遠程終端,實現1553B通信。詳細介紹了硬件連接、BU?65170芯片配置、FPGA邏輯模塊、UART設計、測試過程和結果。通過引入RS 422接口,更加直觀地觀測到1553B通信過程,易于調試。采用FPGA的最大優點是能迅速移植代碼,縮減研發周期。隨著技術的發展,對數據傳輸和處理提出了更高的要求,未來可以把控制其他子系統的模塊和數據處理功能集成在一塊FPGA芯片中,提高集成性,便于開發和維護。
參考文獻
[1] Department of Defense. Military standard aircraft internal time division command/response multiplex data bus [S]. US: Department of Defense, 1978.
[2] DDC. MIL?STD?1553 designer’s guide [S]. US: DDC, 1998.
[3] 張豫榕.1553B總線原理及其應用[J].現代電子工程,2004(7):9?11.
[4] 李娜,李占明,劉防動.基于BU?61580設計的1553B總線板卡[J].電子科技,2011,24(5):59?61.
[5] DDC. ACE/Mini?ACE series BC/RT/MT advanced communicationengine integrated 1553 terminal user’s guide [S]. New York:Data Device Corp, 1999.
[6] Xilinx. Spartan?6 Family overview [R]. US: Xilinx, 2011.
[7] 夏宇聞.Verilog 數字系統設計教程[M].北京:北京航空航天大學出版社,2003.
[8] Xilinx. Spartan?6 FPGA clocking resources [R]. US: Xilinx, 2012.
[9] 孟志華.利用FPGA實現UART的設計[J].電子工程師,2007(4):14?16.
[10] Alta Data Technologies LLC. AltaView software user’s manual [M]. [S.l.]: Alta Data Technologies LLC, 2011.