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