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