唐建,鄧涵
(1.中國(guó)兵器工業(yè)第58研究所 四川 綿陽(yáng)621000;2.西南科技大學(xué) 四川 綿陽(yáng)621000)
計(jì)算機(jī)技術(shù)與應(yīng)用
基于FPGA和HI6110的多通道1553B MT設(shè)計(jì)及實(shí)現(xiàn)
唐建1,鄧涵2
(1.中國(guó)兵器工業(yè)第58研究所 四川 綿陽(yáng)621000;2.西南科技大學(xué) 四川 綿陽(yáng)621000)
針對(duì)傳統(tǒng)MIL-STD-1553B總線(xiàn)體積大、成本高的缺點(diǎn),提出了一種基于FPGA和HI6110的多通道1553B MT設(shè)計(jì)方案。該方案將數(shù)據(jù)打包緩存在SDRAM中,外部設(shè)備通過(guò)PCI總線(xiàn)讀取SDRAM中的總線(xiàn)監(jiān)視數(shù)據(jù),并通過(guò)PCI接口對(duì)模塊進(jìn)行配置,實(shí)現(xiàn)監(jiān)視的啟動(dòng)、停止、RT地址設(shè)置等。文中首先介紹了HI6110芯片功能特點(diǎn),然后詳細(xì)描述了總線(xiàn)譯碼與轉(zhuǎn)換、HI6110接口邏輯與訪(fǎng)問(wèn)仲裁、HI6110狀態(tài)監(jiān)控與總線(xiàn)切換、信息幀獲取與緩存、內(nèi)部功能寄存器等FPGA內(nèi)部功能模塊及實(shí)現(xiàn)方法。應(yīng)用結(jié)果表明:該方案具有低成本、集成高、方便擴(kuò)展等優(yōu)點(diǎn)。
1553B;HI6110;FPGA;總線(xiàn)監(jiān)控器
MIL-STD-1553B總線(xiàn)已廣泛應(yīng)用于航空航天等領(lǐng)域中,實(shí)現(xiàn)火力控制、雷達(dá)、導(dǎo)航等設(shè)備之間高可靠的互聯(lián)通信[1]。1553B總線(xiàn)有BC、RT、MT 3種功能節(jié)點(diǎn)。MT(Monitor Terminal,總線(xiàn)監(jiān)控節(jié)點(diǎn))可以對(duì)總線(xiàn)上所有的通訊行為及數(shù)據(jù)進(jìn)行監(jiān)視,可有效地獲得總線(xiàn)的工作狀態(tài),以保證總線(xiàn)可靠運(yùn)行,是總線(xiàn)搭建中必不可少的功能節(jié)點(diǎn)。在通常的設(shè)計(jì)方案中,MT節(jié)點(diǎn)一般都是由BU-61580模塊實(shí)現(xiàn)[2-3],無(wú)論是DDC還是國(guó)產(chǎn)兼容產(chǎn)品(XX-61580),該類(lèi)模塊體積大、成本較高的缺點(diǎn)。
圖1 3通道1553B總線(xiàn)MT模塊
MT模塊將消息幀加上時(shí)間戳、總線(xiàn)通道標(biāo)識(shí)等數(shù)據(jù)打包緩存在SDRAM中。外部設(shè)備通過(guò)PCI總線(xiàn)讀取SDRAM中的總線(xiàn)監(jiān)視數(shù)據(jù),并通過(guò)PCI接口實(shí)現(xiàn)監(jiān)視的啟動(dòng)、停止、RT地址設(shè)置等模塊配置。MT模塊功能框圖如圖1所示。
HI6110完成1553B總線(xiàn)信號(hào)的解碼、協(xié)議解析,將正確的消息幀緩存在芯片內(nèi)部,并通知FPGA。FPGA根據(jù)HI6110發(fā)送的信號(hào),進(jìn)行BUS A/B切換、幀緩沖讀取等操作,將消息幀、當(dāng)前HI6110芯片的寄存器狀態(tài)信息、時(shí)間戳等存儲(chǔ)在內(nèi)部RAM緩沖隊(duì)列中,并通知處理器PPC405EP。PPC405EP讀取RAM中的數(shù)據(jù)包隊(duì)列,并解析數(shù)據(jù)包中的寄存器值,對(duì)消息幀進(jìn)行分類(lèi)、標(biāo)記、錯(cuò)誤指示等處理,最后將消息幀存儲(chǔ)到容量更大的SDRAM中,等待PCI總線(xiàn)上的Master設(shè)備讀取。
HI6110芯片是HOLT公司生產(chǎn)的一款MIL-STD-1553B協(xié)議芯片芯片。采用CMOS工藝,單3.3 V供電,典型功耗僅為1 W[4]。其基本功能為:
1)可配置為BC/RT/MT模式。
2)芯片內(nèi)部集成消息緩沖器(32字);
3)雙通道差分收發(fā)器,具備曼徹斯特編解碼及變壓器驅(qū)動(dòng)功能;
4)兼容MIL-STD-1553B Notice 2和MIL-STD-1760標(biāo)準(zhǔn)。
5)有軍檔產(chǎn)品,工作溫度為-55~+125℃。
與BU-61580模塊相比,該芯片具有體積小、功耗低、價(jià)格便宜等的優(yōu)點(diǎn)。但芯片唯一不足是芯片內(nèi)部?jī)H有1個(gè)消息幀緩沖器[5]。為保證信息處理的及時(shí)性,需要在HI6110外接一顆專(zhuān)用的處理器對(duì)芯片輸出的信號(hào)及時(shí)響應(yīng),當(dāng)芯片配置為MT模式且總線(xiàn)活動(dòng)頻繁時(shí),芯片內(nèi)部的消息緩沖如果不能及時(shí)處理,就會(huì)造成監(jiān)控信息的丟失。本方案使用FPGA代替專(zhuān)用處理器,及時(shí)讀取消息幀并緩存在FPGA內(nèi)部RAM中,有效地避免了HI6110幀緩沖的溢出。
FPGA采用 Xilinx公司的 Spartan3芯片 XC3S400-5FT256I[6],采用3.3 V和1.8 V電源供電,BGA256封裝,外形尺寸為17×17 mm。
為了保證每片HI6110能被及時(shí)響應(yīng),將每一片HI6110 與FPGA單獨(dú)連接,這樣還可以減少總線(xiàn)復(fù)用邏輯,也能保證內(nèi)部功能邏輯的相對(duì)獨(dú)立性。FPGA內(nèi)部邏輯按照模塊化設(shè)計(jì),采用VHDL/Verilog描述語(yǔ)言,整個(gè)設(shè)計(jì)采用自頂而下的設(shè)計(jì)方法,使用ISE+ModelSim軟件進(jìn)行設(shè)計(jì)與仿真[7-10]。其邏輯功能框圖如圖2所示。
圖2 FPGA邏輯功能框圖
3.1總線(xiàn)譯碼與轉(zhuǎn)換
PPC405處理器帶有并行局部總線(xiàn)LocalBus,該部分邏輯對(duì)LocalBus總線(xiàn)的地址進(jìn)行譯碼分配,為每個(gè)通道分配一定的尋址空間,并且又把每個(gè)通道訪(fǎng)問(wèn)空間分為3個(gè)區(qū)域,對(duì)應(yīng)著內(nèi)部的3條總線(xiàn),分別是對(duì)內(nèi)部雙口RAM緩存的訪(fǎng)問(wèn)總線(xiàn)HDM,對(duì)內(nèi)部功能寄存器的訪(fǎng)問(wèn)總線(xiàn)HFM,以及對(duì)HI6110寄存器的訪(fǎng)問(wèn)總線(xiàn)HB。
另外,為了便于FPGA內(nèi)部控制及訪(fǎng)問(wèn)仲裁,將處理器的LocalBus總線(xiàn)[11]進(jìn)行了轉(zhuǎn)換,將讀寫(xiě)數(shù)據(jù)分離,并將總線(xiàn)實(shí)現(xiàn)為請(qǐng)求/應(yīng)答模式。內(nèi)部總線(xiàn)僅有 ADDR,RDATA,WDATA,BUSREQ,ACK,RW信號(hào)。
3.2HI6110接口邏輯與訪(fǎng)問(wèn)仲裁
HI6110芯片的主機(jī)接口為16位并行總線(xiàn)接口,使用CSn, RnW,STRn,RA[2:0]和D[15:0]信號(hào)來(lái)實(shí)現(xiàn)外部對(duì)HI6110功能寄存器的訪(fǎng)問(wèn)。與內(nèi)部總RnW,STRn,RA[2:0]和D[15:0]信號(hào)來(lái)實(shí)現(xiàn)外部對(duì)HI6110功能寄存器的訪(fǎng)問(wèn)。與內(nèi)部總線(xiàn)信號(hào)并不完全一致,而且總線(xiàn)讀寫(xiě)訪(fǎng)問(wèn)的時(shí)序也有較大差異,需要進(jìn)行接口訪(fǎng)問(wèn)邏輯的轉(zhuǎn)換。
圖3 總線(xiàn)譯碼轉(zhuǎn)換時(shí)序圖
圖4 HI6110接口邏輯及仲裁訪(fǎng)問(wèn)時(shí)序圖
另外,當(dāng)HI6110監(jiān)視到有效的消息幀時(shí),F(xiàn)PGA邏輯中的幀獲取與緩存模塊需要占用HI6110的總線(xiàn)接口,對(duì)寄存器進(jìn)行訪(fǎng)問(wèn)。因此需要將PPC處理器的訪(fǎng)問(wèn)與幀獲取模塊的訪(fǎng)問(wèn)進(jìn)行仲裁。仲裁原則為:當(dāng)訪(fǎng)問(wèn)BUSREQ同時(shí)發(fā)起時(shí),PPC處理器訪(fǎng)問(wèn)具有優(yōu)先僅,此時(shí)幀獲取模塊的總線(xiàn)請(qǐng)求會(huì)被掛起,直到PPC處理器的訪(fǎng)問(wèn)完成后才能被處理響應(yīng)。
3.3HI6110狀態(tài)監(jiān)控與總線(xiàn)切換
依照HI6110芯片的工作特點(diǎn),當(dāng)1553B總線(xiàn)上出現(xiàn)了有效的幀信號(hào)時(shí),芯片會(huì)通過(guò)有效信號(hào)RCVA/B或RCVCMDA/B來(lái)表示是AB通道中哪個(gè)通道中有信息幀,并指出該幀信號(hào)為數(shù)據(jù)幀還是命令幀。此時(shí),主機(jī)應(yīng)根據(jù)RCV 和RCVCMD信號(hào)的狀態(tài),對(duì)HI6110的控制寄存器操作,寫(xiě)入正確的控制字,配置好工作通道,才能保證總線(xiàn)上的信號(hào)被正確的獲取并解碼。本設(shè)計(jì)中,主機(jī)的角色由FPGA來(lái)充當(dāng),內(nèi)部采用狀態(tài)機(jī)來(lái)實(shí)現(xiàn)。其工作狀態(tài)圖如圖5所示。
圖5 總線(xiàn)監(jiān)視與A/B冗余切換邏輯狀態(tài)圖
當(dāng)FPGA監(jiān)控到RCV或者RCVCMD信號(hào)發(fā)生了變化,狀態(tài)機(jī)由IDLE狀態(tài)遷移到RCV后再轉(zhuǎn)變?yōu)镽EAD狀態(tài),發(fā)起對(duì)HI6110的讀操作,將控制寄存器值讀出,若當(dāng)前收到的是命令幀,那么還需要遷移到WAIT_RCV狀態(tài)中等待控制器發(fā)出有效的RCV信號(hào),然后將讀回的控制寄存器值的總線(xiàn)選擇位置為正確的值,發(fā)起對(duì)HI6110控制寄存器的寫(xiě)操作,從而完成AB總線(xiàn)的切換工作。接下來(lái),狀態(tài)機(jī)判斷FFEMPTY信號(hào),該信號(hào)表示HI6110內(nèi)部的幀緩存是否有數(shù)據(jù)。若不為空,則進(jìn)入RFIFO狀態(tài)將緩存中的數(shù)據(jù)一一讀出,直到緩存被讀空 (FFEMPTY=1)為止,然后狀態(tài)機(jī)轉(zhuǎn)變?yōu)镽EGCAP狀態(tài),等待done=1并回到IDLE狀態(tài),done信號(hào)為1表示當(dāng)前總線(xiàn)活動(dòng)中所有HI6110寄存器的值已經(jīng)全部被讀取并保存完畢。
3.4信息幀獲取與緩存
在FPGA內(nèi)部使用BRAM塊實(shí)現(xiàn)了一個(gè)512x16bit的雙口RAM[12],用于完成信息幀的緩存以及PPC主機(jī)與內(nèi)部幀獲取模塊之間的數(shù)據(jù)交換。為了防止雙口RAM數(shù)據(jù)訪(fǎng)問(wèn)的沖突,避免數(shù)據(jù)出錯(cuò),將整個(gè)RAM分為8個(gè)數(shù)據(jù)塊,形成一個(gè)環(huán)形的緩沖區(qū),循環(huán)寫(xiě)入。每個(gè)塊共64字,其數(shù)據(jù)格式定義如表1所示:
幀獲取模塊在監(jiān)測(cè)到總線(xiàn)上的每一次總線(xiàn)活動(dòng)后,將當(dāng)前時(shí)間、當(dāng)前HI6110寄存器的值以及數(shù)據(jù)FIFO中的數(shù)據(jù)按上述格式寫(xiě)入到數(shù)據(jù)塊中,然后將FLAG標(biāo)識(shí)置為0x55AA,表示一個(gè)信息已準(zhǔn)備好,PPC處理器通過(guò)HDM總線(xiàn)把數(shù)據(jù)塊讀取后,將FLAG標(biāo)識(shí)置為0x0000,表示該數(shù)據(jù)塊可被再次寫(xiě)入。內(nèi)部邏輯仍采用有限狀態(tài)機(jī)來(lái)實(shí)現(xiàn),狀態(tài)圖如圖如示。
表1 環(huán)形緩存存儲(chǔ)塊數(shù)據(jù)定義與分配
圖6 幀獲取模塊功能狀態(tài)圖
如圖6所示,rcvint信號(hào)是工作在MT模式的HI6110芯片監(jiān)測(cè)到總線(xiàn)上有幀時(shí)產(chǎn)生的,同時(shí)該信號(hào)還將內(nèi)部的計(jì)數(shù)器值記錄下來(lái)做為時(shí)間戳。內(nèi)部邏輯在 rcvint=1后進(jìn)入CHK_FLG狀態(tài),檢查雙口RAM中是否有可用的空閑數(shù)據(jù)塊。若有的話(huà)首先將時(shí)間戳寫(xiě)入,然后是寫(xiě)入控制字CW,接下來(lái)是讀取HI6110的數(shù)據(jù)FIFO,當(dāng)FIFO中有數(shù)據(jù)時(shí)就讀出并寫(xiě)入RAM中,直到當(dāng)valmess=1或者error=1時(shí),才表示總線(xiàn)上信息幀已完成。接下來(lái)是讀取其它寄存器,包括狀態(tài)寄存器、錯(cuò)誤寄存器、信息幀寄存器、子地址寄存器等。最后是寫(xiě)入HI6110控制器的FIFO中數(shù)據(jù)個(gè)數(shù),然后將FLAG置為有效。這樣就完成了一個(gè)信息的處理。在對(duì)HI6110進(jìn)行寄存器的讀取時(shí),有一點(diǎn)需要注意,讀取的地址順序最好是按照0x00,0x01,0x02,0x06進(jìn)行,模擬主機(jī)軟件的處理流程進(jìn)行,否則可能會(huì)造成讀取的寄存器不正確。
3.5內(nèi)部功能寄存器
該功能模塊實(shí)現(xiàn)了幾個(gè)功能寄存器,主要用于完成時(shí)間戳的初始化,讀取中斷狀態(tài)、復(fù)位HI6110以及對(duì)HI6110輸出的信號(hào)如RCV、VALMESS、ERROR等信號(hào)變化進(jìn)行統(tǒng)計(jì)計(jì)數(shù),配合PPC405上的軟件完成雙口RAM中數(shù)據(jù)的讀取,并進(jìn)行一定的比對(duì)和檢查。
3.6中斷產(chǎn)生及數(shù)據(jù)傳輸
FPGA邏輯產(chǎn)生了2類(lèi)中斷,第1種是RCV中斷,也即是當(dāng)1553B總線(xiàn)上一旦有了數(shù)據(jù)幀時(shí)就產(chǎn)生中斷。第2種是VALMESS或ERROR中斷,這種中斷是在1553B總線(xiàn)上一幀數(shù)據(jù)傳送完畢后才產(chǎn)生。
圖7 VALMESS及ERROR信號(hào)產(chǎn)生示意圖
從圖7可以清楚的了解到這2種中斷的差異[3]。在實(shí)際應(yīng)用中,響應(yīng)RCV中斷來(lái)操作雙口RAM,以保證有空余的緩沖塊供內(nèi)部幀獲取邏輯使用。而使用VALMESS中斷來(lái)讀取最新的幀數(shù)據(jù)。
3.7資源占用
使用Xilinx 9.1進(jìn)行綜合、布局布線(xiàn),各項(xiàng)設(shè)置為默認(rèn)值default。3通道實(shí)現(xiàn)占用資源如表2所示。
表2 FPGA資源占用情況
PPC405EP處理器運(yùn)行vxWorks 5.5多任務(wù)實(shí)時(shí)操作系統(tǒng)[13-15]。上電進(jìn)入操作系統(tǒng)后,首先進(jìn)行初始化工作,完成如下工作:
1)初始化HI6110,使其工作在MT模式下。
2)對(duì)FPGA初始化,對(duì)內(nèi)部雙口RAM進(jìn)行初始化;
3)根據(jù)系統(tǒng)時(shí)間,設(shè)置時(shí)間戳;
4)初始化處理器中斷控制器,掛接中斷服務(wù)函數(shù);
5)初始化PCI接口,完成PCI空間內(nèi)存映射等工作;
6)創(chuàng)建并啟動(dòng)上位機(jī)命令處理任務(wù);主要實(shí)現(xiàn)對(duì)上位機(jī)命令的解析,完成對(duì)總線(xiàn)監(jiān)控的啟動(dòng)、停止、狀態(tài)報(bào)告、時(shí)間同步等功能;
7)創(chuàng)建數(shù)據(jù)幀處理任務(wù);主要實(shí)現(xiàn)對(duì)從雙口RAM讀取數(shù)據(jù)幀,對(duì)數(shù)據(jù)幀進(jìn)行處理,打包,傳輸?shù)裙δ堋?/p>
初始化工作完成后,上位機(jī)會(huì)通過(guò)PCI總線(xiàn)與PPC405處理器交換信息,完成內(nèi)部計(jì)時(shí)器的初始化,然后啟動(dòng)總線(xiàn)監(jiān)控。當(dāng)所監(jiān)控的總線(xiàn)有總線(xiàn)活動(dòng)時(shí),F(xiàn)PGA會(huì)自動(dòng)完成信息幀的讀取并緩存在內(nèi)部雙口RAM中,然后向PPC處理器發(fā)起中斷。中斷服務(wù)程序響應(yīng)中斷,讀取雙口RAM中的數(shù)據(jù),經(jīng)過(guò)數(shù)據(jù)幀處理任務(wù)的再次處理,將數(shù)據(jù)包存放在處理器的SDRAM中,然后再通知上位機(jī),利用PCI總線(xiàn)的高速性能將多個(gè)通道的1553B監(jiān)控?cái)?shù)據(jù)傳輸?shù)缴衔粰C(jī)中。
文中實(shí)現(xiàn)了一個(gè)CPCI 3U的板卡,PPC405EP處理器運(yùn)行頻率為300 MHz,內(nèi)存容量128 MB,對(duì)3路1553B總線(xiàn)同時(shí)進(jìn)行了長(zhǎng)時(shí)間的監(jiān)控,未出現(xiàn)掉幀,錯(cuò)幀的現(xiàn)象。實(shí)踐證明,使用FPGA和HI6110芯片組建的1553B總線(xiàn)MT模塊,具有成本較低,體積小的特點(diǎn)。另外,利用FPGA內(nèi)部邏輯自動(dòng)完成總線(xiàn)切換、數(shù)據(jù)緩存等功能,還極大地降低了對(duì)處理器性能的要求。
[1]MIL-STD-1553 Designer's Guide.sixth edition[DB/OL]. ILC Data Device Corporation(DDC).1998.http://www.ddcweb.com.
[2]鄧林,戎蒙恬.基于BU-61580的MIL-STD-1553B總線(xiàn)設(shè)計(jì)[J].信息技術(shù),2014(2):194-197.
[3]周遠(yuǎn)林,吳忠,丑武勝.基于BU-61580的1553B總線(xiàn)接口設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,2010,46(35):65-68.
[4]HI6110 MIL-STD-1553/MIL-STD-1760 BC/RT/MT Message Processor.Rev.S[DB/OL].HOLT Integrated Circuits Inc.2013. 09.http://www.holtic.com.
[5]陳偉,嚴(yán)發(fā)寶,張京,等.一種基于HI6110的1553B BM板卡設(shè)計(jì)方法[J].兵工自動(dòng)化,2011,30(9):81-82.
[6]Spartan-3 FPGA Family Data Sheet.Xilinx[DB/OL].2013.7. http://www.xilinx.com.
[7]王誠(chéng),薛小剛,鐘信潮.FPGA/CPLD設(shè)計(jì)工具—Xilinx ISE 5.x使用詳解[M].北京:人民郵電出版社,2003.
[8]邊計(jì)年,薛寵熙.用VHDL設(shè)計(jì)電子線(xiàn)路[M].北京:清華大學(xué)出版社,2001.
[9]MiChael D.Ciletti,等.Verilog VHDL高級(jí)數(shù)字設(shè)計(jì)[M].張雅綺,李鏘等,譯.北京:電子工業(yè)出版社,2005.
[10]ModelSim SE User's Manual,v10.2[DB/OL].Mentor Graphics Corporation.2013.2.http://www.mentor.com.
[11]PPC405EP PowerPC 405EP Embedded Processor Data Sheet [DB/OL].AMCC.2007.9.http://www.apm.com.
[12]LogiCORE FIFO Generator v3.2 User Guide[DB/OL].Xilinx. 2006.9.http://www.xilinx.com.
[13]朱江,王耀南,許海霞.PPC405EP在電力監(jiān)測(cè)系統(tǒng)中的應(yīng)用[J].電子設(shè)計(jì)工程,2007(10):29-33.
[14]師于杰.基于vxWorks實(shí)時(shí)系統(tǒng)的CompactPCI平臺(tái)高可用系統(tǒng)研究[D].西安電子科技大學(xué),2006.
[15]武華,劉軍偉.基于VxWorks的多任務(wù)程序設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(9):88-91.
Design and implementation of multi-channel 1553B MT based on FPGA and HI6110
TANG Jian1,DENG Han2
(1.No.58 Research Institute of China Ordnance Industries,Mianyang 621000,China;2.Southwest University of Science and Technology,Mianyang 621000,China)
According to the traditional MIL-STD-1553B with large volume,high cost of shortcomings,a multi-channel 1553B MT based on FPGA and HI6110 is proposed.The data is cached in SDRAM;external devices read the data in SDRAM,and configuration the module through PCI BUS,which realize monitoring start,stop,RT ID Settings,etc.This paper first introduces the HI6110 chip function characteristics,and then describes in detail BUS decoding and transformation,HI6110 interface logic and access to the arbitration,HI6110 condition monitoring and bus switching,information acquisition and caching,internal function registers such as the FPGA function module and realization method.The application shows that the design has the advantages of low cost,high integration and easy to extend,etc.
1553B;HI6110;FPGA;Monitor Terminal(MT)
TN02
A
1674-6236(2016)16-0001-04
2016-05-08稿件編號(hào):201605065
國(guó)家自然科學(xué)基金項(xiàng)目(61133016)
唐 建(1978—),男,四川射洪人,碩士,高級(jí)工程師。研究方向:嵌入式計(jì)算機(jī)應(yīng)用。