基于FPGA和BU-65170的1553B遠(yuǎn)程終端設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:為了滿足載荷與衛(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)行通信,方便測(cè)試過程,結(jié)果直觀可見。采用專用測(cè)試板卡Alta ECD54-1553對(duì)系統(tǒng)進(jìn)行測(cè)試,獲得預(yù)期的可靠結(jié)果。FPGA取代傳統(tǒng)CPU來控制1553B通信并集成數(shù)據(jù)傳輸功能,采用Verilog HDL硬件描述語言有利于軟件移植,縮短研發(fā)周期,提高系統(tǒng)可靠性。
關(guān)鍵詞:1553B;FPGA;BU-65170;RS 422
1 1553B概述
MIL-STD-1553B是美國于20世紀(jì)70年提出的一種用于戰(zhàn)機(jī)的時(shí)分控制/命令響應(yīng)式總線。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ò),但不參與總線通信。
由于1553B具有可靠性高、實(shí)時(shí)性好、擴(kuò)展方便等優(yōu)點(diǎn),被廣泛應(yīng)用于飛機(jī)、導(dǎo)彈、衛(wèi)星、艦艇等航空航天和兵器領(lǐng)域。目前,航天系統(tǒng)大多采用DDC公司的BU-61580/BU-65170協(xié)議芯片來實(shí)現(xiàn)1553B通信。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功能。在此研制的某型號(hào)項(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)了RS422通信,這樣不僅方便測(cè)試,使結(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è)信號(hào)管腳,其中主要的控制信號(hào)如表1所示。
Xilinx的Spartan-6系列xc6s1x75芯片擁有74 637個(gè)邏輯單元,11 662個(gè)可配置邏輯模塊,280個(gè)I/O口以及18 KB的Block RAM模塊,同時(shí)擁有豐富的時(shí)鐘管理模塊(CMT)、集成存儲(chǔ)器控制模塊等,數(shù)據(jù)速率高達(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信號(hào)為低電平后,表示D15-D00上已經(jīng)呈現(xiàn)讀取的數(shù)據(jù),或者D15-D00上的數(shù)據(jù)已經(jīng)寫入存儲(chǔ)器或寄存器。BU-65170各信號(hào)配置如表2所示。
分別采用DS26LV32AW和DS26LV31W芯片作為RS 422差分接收器和驅(qū)動(dòng)器,UART設(shè)計(jì)將在邏輯設(shè)計(jì)中詳細(xì)介紹。
3 邏輯設(shè)計(jì)
使用Verilog HDL進(jìn)行編程,在FPGA中實(shí)現(xiàn)所需的功能。邏輯總體框圖如圖3所示,下面分別對(duì)各個(gè)模塊進(jìn)行詳細(xì)介紹。
3.1 讀/寫模塊
根據(jù)芯片手冊(cè)給出的CPU讀寫時(shí)序圖編寫程序,在FPGA中實(shí)現(xiàn)對(duì)BU-65170寄存器和內(nèi)部RAM進(jìn)行讀寫的模塊。讀寫模塊的仿真時(shí)序圖如圖4和圖5所示。
在讀寫過程中,信號(hào)BU_RD_WR為‘1’時(shí)表示對(duì)BU-65170進(jìn)行讀操作,為‘0’時(shí)為寫操作;信號(hào)BU_MEM_REG為‘1’時(shí)表示對(duì)內(nèi)部RAM進(jìn)行讀/寫,為‘0’時(shí)表示對(duì)寄存器進(jìn)行讀/寫。在零等待模式中,信號(hào)BU_STRBD和BU_SELECT(可與BU_STRBD綁定,所以沒有給出)控制著讀/寫操作的開始。
在長STRBD模式下SELECT和STRBD同時(shí)為低電平的第2個(gè)CLK上升沿,內(nèi)部鎖存MEM_REG和RD_WR信號(hào);短STRBD模式下STRBD上升沿內(nèi)部鎖存MEM_REG和RD_WR信號(hào)。考慮到容易滿足時(shí)序要求,采用長STRBD模式。當(dāng)BU-65170鎖存住MEM_REG或RD_WR信號(hào)后,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è)多字讀操作,地址總是早于對(duì)應(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ù)請(qǐng)求自動(dòng)清除。初始化流程如圖6所示,寄存器詳細(xì)配置如表3所示,具體子地址設(shè)置如表4所示。
3.3 時(shí)鐘模塊
使用40 MHz的外部晶振作為FPGA的時(shí)鐘輸入,然后用FPGA自帶DCM模塊分頻得到16 MHz主時(shí)鐘,作為其余模塊的全局時(shí)鐘,仿真和實(shí)際波形測(cè)試表明全局時(shí)鐘穩(wěn)定性良好,滿足系統(tǒng)要求。
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ā)所需的波特率。通過對(duì)于系統(tǒng)時(shí)鐘的分頻,產(chǎn)生波特率為9 600 b/s和153 600的信號(hào)。
接收狀態(tài)機(jī)見圖8。當(dāng)檢測(cè)到起始位時(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ā)送信號(hào)后將需要發(fā)送的數(shù)據(jù)存入緩存,在使能有效和緩存不空的情況下開始傳輸。此時(shí)指針開始計(jì)數(shù),首先發(fā)送起始位‘0’,接著一次發(fā)送8 b數(shù)據(jù),最后發(fā)送停止位‘1’,結(jié)束一次發(fā)送過程。
3.5 主控制器
FPGA中控制與BU-65170通信的主控制狀態(tài)機(jī)如圖9所示。初始化完成后程序進(jìn)入等待狀態(tài)。此時(shí)如果收到中斷信號(hào)(INT=0),則首先讀取中斷寄存器,判斷是否為消息結(jié)束中斷(EOM),如果不是,進(jìn)入錯(cuò)誤狀態(tài),等待BC對(duì)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ù),這與對(duì)BU-65170進(jìn)行讀操作的原理相似。如果上一個(gè)命令字是接收命令,則讀取相應(yīng)子地址對(duì)應(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改為雙緩沖模式。
4 測(cè)試
選用Alta公司的ECD54-1553多功能板卡(能模擬BC\RT\BM)作為BC,與設(shè)計(jì)的RT搭成一個(gè)測(cè)試系統(tǒng),如圖10所示。
首先在ECD54-1553的控制界面中設(shè)置RT地址為21,然后根據(jù)在FPGA邏輯中設(shè)定的RT子地址及傳輸數(shù)據(jù)量進(jìn)行相應(yīng)的設(shè)置,再開啟總線監(jiān)控(BM)功能,測(cè)試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ù)。測(cè)試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ù)。示波器測(cè)得的實(shí)際曼徹斯特Ⅱ型碼波形如圖13,圖14所示。
測(cè)試結(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ì)、測(cè)試過程和結(jié)果。通過引入RS 422接口,更加直觀地觀測(cè)到1553B通信過程,易于調(diào)試。采用FPGA的最大優(yōu)點(diǎn)是能迅速移植代碼,縮減研發(fā)周期。隨著技術(shù)的發(fā)展,對(duì)數(shù)據(jù)傳輸和處理提出了更高的要求,未來可以把控制其他子系統(tǒng)的模塊和數(shù)據(jù)處理功能集成在一塊FPGA芯片中提高集成性,便于開發(fā)和維護(hù)。