摘 要: 1553B總線以其可靠性高、實時性好、使用靈活等優(yōu)點,廣泛應(yīng)用于現(xiàn)代飛機、導(dǎo)彈、衛(wèi)星、艦艇、坦克等航空、航天、兵器領(lǐng)域,并且逐漸擴展到地鐵交通控制等民用領(lǐng)域。而在實際使用過程中,1553B總線由于接口配置復(fù)雜,無法直接與PC進行通信,使得系統(tǒng)的安裝調(diào)試存在困難。利用NIOS II軟核處理器面向用戶、靈活定制的特性和USB接口方便、支持熱插拔的優(yōu)點,給出了一種在FPGA上已經(jīng)實現(xiàn)的1553B總線測試系統(tǒng)設(shè)計方法。整個系統(tǒng)硬件設(shè)計簡單,軟件設(shè)計穩(wěn)定可靠,可應(yīng)用于1553B系統(tǒng)調(diào)試和測試以及各種仿真實驗中。
關(guān)鍵詞: NIOS II軟核處理器;1553B;USB;測試系統(tǒng)
0 引言
MIL-STD-1553B由美國在20世紀70年代提出,具有可靠性高、實時性好、靈活性強的特點,已經(jīng)發(fā)展成國際公認的數(shù)據(jù)總線標準,廣泛應(yīng)用于現(xiàn)代飛機、導(dǎo)彈、衛(wèi)星、艦艇、坦克等航空、航天、兵器領(lǐng)域,并且逐漸擴展到地鐵交通控制等民用領(lǐng)域。我國從20世紀90年代初開始引進1553B數(shù)據(jù)總線,經(jīng)過十多年的發(fā)展,1553B已經(jīng)成為國內(nèi)航空航天的主要航電總線之一。國內(nèi)一些研究機構(gòu)也通過不斷努力,已經(jīng)有能力研制生產(chǎn)出符合1553B標準的接口芯片,本文在設(shè)計中即采用了中國電子科技集團公司第58研究所自主研發(fā)的JBU61580作為1553B總線通信控制器,其與DDC公司的同型號芯片BU61580完全兼容,支持插拔替換,具有總線控制(BC)、遠程終端(RT)和監(jiān)測終端(MT)三大功能[1]。
1 系統(tǒng)硬件設(shè)計
系統(tǒng)采用Altera公司Cyclone Ⅱ系列的FPGA(EP2C8Q208C8)作為主控芯片,內(nèi)嵌NIOS Ⅱ軟核處理器,輸入時鐘為20 MHz,由PLL倍頻出兩個100 MHz時鐘分別提供給NIOS Ⅱ軟核處理器和外接的SDRAM使用。USB接口部分采用CH375芯片,1553B接口部分采用JBU61580芯片,均利用SoPC Builder支持的用戶自定義元件定制時序轉(zhuǎn)換邏輯,以提高接口芯片的讀寫速度,而NIOS Ⅱ則負責(zé)兩者之間的數(shù)據(jù)解析和交換。
1.1 總體設(shè)計思想
硬件原理框圖如圖1所示,整個系統(tǒng)可以分為5個部分:(1)系統(tǒng)核心模塊:NIOS Ⅱ處理器;(2)處理器外圍支持電路:時鐘單元及SDRAM控制器;(3)程序下載調(diào)試模塊:JTAG接口控制器和異步通信接口(UART用于打印調(diào)試信息);(4)系統(tǒng)內(nèi)部外設(shè)模塊:諸如系統(tǒng)ID、定時器、用戶自定制邏輯等;(5)系統(tǒng)外圍設(shè)備:EPCS存儲器、CH375、JBU61580。
1.2 系統(tǒng)外圍接口設(shè)計
1.2.1 EPCS接口
系統(tǒng)采用Altera專用的配置芯片EPCS4存儲FPGA的配置數(shù)據(jù)和NIOS Ⅱ的程序,EPCS4總共有4 Mbit的存儲空間,分成8個64 KB的塊,并通過專用電路接口與FPGA連接[2]。FPGA的配置數(shù)據(jù)從EPCS4中偏移地址為0的地方開始存放,緊接著FPGA的配置數(shù)據(jù)就是NIOS Ⅱ的程序,也就是說FPGA的配置數(shù)據(jù)和NIOS Ⅱ的程序從EPCS4的低端地址開始存放,而在本設(shè)計中只占用了不到4個塊的存儲空間,所以高端塊的存儲空間可以用來存放JBU61580的配置數(shù)據(jù)。
1.2.2 CH375接口
CH375是一個USB總線的通用設(shè)備接口芯片,工作在全速模式,兼容USB2.0,其內(nèi)置了USB通信中的底層協(xié)議,具有省事的內(nèi)置固件模式和靈活的外置固件模式[3]。在內(nèi)置固件模式下,屏蔽了相關(guān)的USB協(xié)議,自動完成標準的USB枚舉配置過程,完全不需要本地端控制器作任何處理,簡化了NIOS Ⅱ的固件編程。本設(shè)計中CH375芯片只負責(zé)數(shù)據(jù)的交換,接收上位機下傳的數(shù)據(jù)和NIOS Ⅱ上傳的數(shù)據(jù)。CH375的8位數(shù)據(jù)總線、4線控制信號讀選通、寫選通、片選輸入、中斷輸出通過SoPC自定制邏輯連接到Avalon系統(tǒng)互連結(jié)構(gòu)。
1.2.3 JBU61580接口
JBU61580工作在16位緩沖非零等待模式下,工作電壓為5 V,在3.3 V電壓下工作的FPGA不能與其直接相連,中間需要接總線驅(qū)動器245芯片進行電平轉(zhuǎn)換。JBU61580的寄存器和存儲器的讀寫控制有兩種方法:一是用PIO口來模擬JBU61580的讀寫時序,此方法的優(yōu)點是實現(xiàn)簡單,擴展性強,但讀寫速度比較慢,不利于系統(tǒng)的模塊化與集成;二是根據(jù)HDL語言定制符合JBU61580的時序控制邏輯,以訪問內(nèi)存的方式來讀寫JBU61580的寄存器和存儲器,此方法實現(xiàn)稍微復(fù)雜,但是可以極大地提高JBU61580的數(shù)據(jù)讀寫速度。本設(shè)計中即采用了第二種方法。
2 軟件系統(tǒng)設(shè)計
由于JBU61580工作在16位緩沖模式,而CH375只有8位數(shù)據(jù)總線,因此上位機程序要與NIOS Ⅱ約定相同的數(shù)據(jù)封裝格式。上位機將JBU61580的16位地址和數(shù)據(jù)信息以及一些傳輸控制指令拆分成8位數(shù)據(jù),經(jīng)過USB總線傳輸,NIOS Ⅱ收到之后再重新解析成16位的地址和數(shù)據(jù)。在配置數(shù)據(jù)全部傳送完成之后,NIOS Ⅱ再根據(jù)控制指令來配置JBU61580,使其工作在指令要求的模式(BC、RT或MT)下。另外NIOS Ⅱ還將根據(jù)上位機的指令決定是否將配置數(shù)據(jù)寫入EPCS中,使得單板在上電復(fù)位之后不需要再從上位機獲得配置數(shù)據(jù),從而可以離線工作。處于離線工作狀態(tài),NIOS Ⅱ還應(yīng)實時監(jiān)測CH375的中斷信號,以便接收上位機的控制指令進入聯(lián)機工作模式。同樣,若NIOS Ⅱ需要上傳JBU61580的通信數(shù)據(jù),也要將讀取的16位數(shù)據(jù)拆分成兩個8位數(shù)據(jù),再寫入CH375的上傳端點中,上位機取走數(shù)據(jù)之后同樣按照約定的封裝格式將解析成16位的數(shù)據(jù)顯示出來。
軟件系統(tǒng)設(shè)計分為NIOS Ⅱ固件程序和上位機程序。NIOS Ⅱ固件程序又分為固件主程序、中斷處理程序、數(shù)據(jù)包解析程序。上位機程序則包括BC模式接口及傳輸控制、RT模式接口及傳輸控制、MT接口及傳輸控制3個部分。
2.1 NIOS Ⅱ固件程序
2.1.1 固件主程序
固件主程序主要負責(zé)系統(tǒng)初始化及流程控制。初始化主要包括CH375的工作狀態(tài)測試、工作模式選擇,JBU61580的初始復(fù)位,讀取并判斷EPCS4配置存儲器的高位地址特征字符以確認是否需要單板離線工作等。在初始化之后進入主循環(huán),實時監(jiān)視USB接口和1553B接口的中斷信號。
2.1.2 中斷處理程序
中斷處理程序包括CH375中斷處理程序和JBU61580中斷處理程序。由于1553B接口的實時要求性高,因此在SoPC系統(tǒng)搭建過程中,JBU61580的中斷優(yōu)先級要高于CH375的中斷優(yōu)先級。
在CH375中斷處理程序中首先讀取中斷狀態(tài),判斷中斷類型,再進入相對應(yīng)的中斷類型處理程序。如果是批量端點接收到數(shù)據(jù),則讀取緩沖區(qū)的數(shù)據(jù),并置位中斷下傳標志,退出中斷[4]。如果是批量端點發(fā)送完數(shù)據(jù),則應(yīng)置位中斷上傳標志,退出中斷。其流程如圖2所示。
在JBU61580的中斷處理程序中,由于存在BC、RT、MT 3種不同的工作模式[5],則分別對應(yīng)了不同的中斷處理程序。以RT模式為例,當(dāng)JBU61580接收到來自1553B總線的與本地址相關(guān)的消息時,若符合中斷條件,將產(chǎn)生中斷。由NIOS Ⅱ進行處理,中斷處理程序中首先讀取JBU61580的中斷狀態(tài)寄存器,判斷是否是干擾引起的誤中斷,讀消息描述符中的消息塊狀態(tài)字,判斷是否是非法指令;讀RT狀態(tài)字寄存器,判斷是否是子地址忙;讀取RT上次命令寄存器,獲取命令字;根據(jù)消息描述符中的數(shù)據(jù)塊指針,找到數(shù)據(jù)塊并保存數(shù)據(jù)至消息塊的結(jié)構(gòu)體中[6]。其流程如圖3所示。
2.1.3 數(shù)據(jù)包解析程序
數(shù)據(jù)包解析程序負責(zé)解析上位機下傳的8位數(shù)據(jù)及傳輸控制指令,遵從上位機封裝數(shù)據(jù)的協(xié)定,解析出配置JUB61580的16位地址和對應(yīng)的數(shù)據(jù),以及一些如啟動、復(fù)位等必要的控制指令。另外數(shù)據(jù)包解析程序還要將從JBU61580讀取的16位通信數(shù)據(jù)分拆封裝成8位數(shù)據(jù)寫到CH375的批量上傳端口,等待上位機取走。數(shù)據(jù)包解析程序如圖4所示。
2.2 上位機設(shè)計
CH375在計算機端提供了應(yīng)用層接口,應(yīng)用層接口是由CH375動態(tài)鏈接庫DLL提供的面向功能應(yīng)用的API。用戶可以在上位機軟件中直接調(diào)用這些API,極大地減少了編寫USB設(shè)備驅(qū)動的工作量。CH375動態(tài)鏈接庫提供的API包括:設(shè)備管理API、數(shù)據(jù)傳輸API、中斷處理API。上位機的程序可以分成下傳數(shù)據(jù)和上傳數(shù)據(jù)兩部分,下傳數(shù)據(jù)調(diào)用CH375WriteData()函數(shù)來實現(xiàn),上傳數(shù)據(jù)調(diào)用CH375ReadData()函數(shù)來實現(xiàn)。由于CH375芯片的上傳緩沖區(qū)和下傳緩沖區(qū)只有64 B,故一次的數(shù)據(jù)傳輸不能超過64 B。整個上位機軟件采用VB2008編寫,圖5是RT控制接口界面。
3 結(jié)論
按照本文的方法已經(jīng)成功實現(xiàn)了通過USB實時控制JBU61580的1553B總線接口測試系統(tǒng),整個系統(tǒng)硬件設(shè)計簡單,軟件設(shè)計穩(wěn)定可靠,可應(yīng)用于1553B系統(tǒng)調(diào)試和測試以及各種仿真實驗中。
參考文獻
[1] 周遠林,吳忠,丑武勝.基于BU-61580的1553B總線接口設(shè)計[J].計算機工程與應(yīng)用,2010,46(35):65-68.
[2] 任承志,宋克非,王淑榮.基于BU65170與單片機系統(tǒng)的RT設(shè)計與實現(xiàn)[J].微計算機信息,2006,22(6-2):18-20.
[3] 雷勇,吳勇,潘莉.基于USB的1553總線通用接口研究[J].計算機測量與控制,2010,18(4):861-864.
[4] DDC. MIL-STD-1553B Designer′s Guide[S]. 1998.
[5] Condor Engineering Inc. MIL-STD-1553 Protocol Tutorial[S]. 2004
[6] 黃長春,徐抒巖.基于DSP的1553B總線系統(tǒng)設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2010(8):4-7.