唐建,鄧涵
(1.中國兵器工業第58研究所 四川 綿陽621000;2.西南科技大學 四川 綿陽621000)
計算機技術與應用
基于FPGA和HI6110的多通道1553B MT設計及實現
唐建1,鄧涵2
(1.中國兵器工業第58研究所 四川 綿陽621000;2.西南科技大學 四川 綿陽621000)
針對傳統MIL-STD-1553B總線體積大、成本高的缺點,提出了一種基于FPGA和HI6110的多通道1553B MT設計方案。該方案將數據打包緩存在SDRAM中,外部設備通過PCI總線讀取SDRAM中的總線監視數據,并通過PCI接口對模塊進行配置,實現監視的啟動、停止、RT地址設置等。文中首先介紹了HI6110芯片功能特點,然后詳細描述了總線譯碼與轉換、HI6110接口邏輯與訪問仲裁、HI6110狀態監控與總線切換、信息幀獲取與緩存、內部功能寄存器等FPGA內部功能模塊及實現方法。應用結果表明:該方案具有低成本、集成高、方便擴展等優點。
1553B;HI6110;FPGA;總線監控器
MIL-STD-1553B總線已廣泛應用于航空航天等領域中,實現火力控制、雷達、導航等設備之間高可靠的互聯通信[1]。1553B總線有BC、RT、MT 3種功能節點。MT(Monitor Terminal,總線監控節點)可以對總線上所有的通訊行為及數據進行監視,可有效地獲得總線的工作狀態,以保證總線可靠運行,是總線搭建中必不可少的功能節點。在通常的設計方案中,MT節點一般都是由BU-61580模塊實現[2-3],無論是DDC還是國產兼容產品(XX-61580),該類模塊體積大、成本較高的缺點。

圖1 3通道1553B總線MT模塊
MT模塊將消息幀加上時間戳、總線通道標識等數據打包緩存在SDRAM中。外部設備通過PCI總線讀取SDRAM中的總線監視數據,并通過PCI接口實現監視的啟動、停止、RT地址設置等模塊配置。MT模塊功能框圖如圖1所示。
HI6110完成1553B總線信號的解碼、協議解析,將正確的消息幀緩存在芯片內部,并通知FPGA。FPGA根據HI6110發送的信號,進行BUS A/B切換、幀緩沖讀取等操作,將消息幀、當前HI6110芯片的寄存器狀態信息、時間戳等存儲在內部RAM緩沖隊列中,并通知處理器PPC405EP。PPC405EP讀取RAM中的數據包隊列,并解析數據包中的寄存器值,對消息幀進行分類、標記、錯誤指示等處理,最后將消息幀存儲到容量更大的SDRAM中,等待PCI總線上的Master設備讀取。
HI6110芯片是HOLT公司生產的一款MIL-STD-1553B協議芯片芯片。采用CMOS工藝,單3.3 V供電,典型功耗僅為1 W[4]。其基本功能為:
1)可配置為BC/RT/MT模式。
2)芯片內部集成消息緩沖器(32字);
3)雙通道差分收發器,具備曼徹斯特編解碼及變壓器驅動功能;
4)兼容MIL-STD-1553B Notice 2和MIL-STD-1760標準。
5)有軍檔產品,工作溫度為-55~+125℃。
與BU-61580模塊相比,該芯片具有體積小、功耗低、價格便宜等的優點。但芯片唯一不足是芯片內部僅有1個消息幀緩沖器[5]。為保證信息處理的及時性,需要在HI6110外接一顆專用的處理器對芯片輸出的信號及時響應,當芯片配置為MT模式且總線活動頻繁時,芯片內部的消息緩沖如果不能及時處理,就會造成監控信息的丟失。本方案使用FPGA代替專用處理器,及時讀取消息幀并緩存在FPGA內部RAM中,有效地避免了HI6110幀緩沖的溢出。
FPGA采用 Xilinx公司的 Spartan3芯片 XC3S400-5FT256I[6],采用3.3 V和1.8 V電源供電,BGA256封裝,外形尺寸為17×17 mm。
為了保證每片HI6110能被及時響應,將每一片HI6110 與FPGA單獨連接,這樣還可以減少總線復用邏輯,也能保證內部功能邏輯的相對獨立性。FPGA內部邏輯按照模塊化設計,采用VHDL/Verilog描述語言,整個設計采用自頂而下的設計方法,使用ISE+ModelSim軟件進行設計與仿真[7-10]。其邏輯功能框圖如圖2所示。

圖2 FPGA邏輯功能框圖
3.1總線譯碼與轉換
PPC405處理器帶有并行局部總線LocalBus,該部分邏輯對LocalBus總線的地址進行譯碼分配,為每個通道分配一定的尋址空間,并且又把每個通道訪問空間分為3個區域,對應著內部的3條總線,分別是對內部雙口RAM緩存的訪問總線HDM,對內部功能寄存器的訪問總線HFM,以及對HI6110寄存器的訪問總線HB。
另外,為了便于FPGA內部控制及訪問仲裁,將處理器的LocalBus總線[11]進行了轉換,將讀寫數據分離,并將總線實現為請求/應答模式。內部總線僅有 ADDR,RDATA,WDATA,BUSREQ,ACK,RW信號。
3.2HI6110接口邏輯與訪問仲裁
HI6110芯片的主機接口為16位并行總線接口,使用CSn, RnW,STRn,RA[2:0]和D[15:0]信號來實現外部對HI6110功能寄存器的訪問。與內部總RnW,STRn,RA[2:0]和D[15:0]信號來實現外部對HI6110功能寄存器的訪問。與內部總線信號并不完全一致,而且總線讀寫訪問的時序也有較大差異,需要進行接口訪問邏輯的轉換。

圖3 總線譯碼轉換時序圖

圖4 HI6110接口邏輯及仲裁訪問時序圖
另外,當HI6110監視到有效的消息幀時,FPGA邏輯中的幀獲取與緩存模塊需要占用HI6110的總線接口,對寄存器進行訪問。因此需要將PPC處理器的訪問與幀獲取模塊的訪問進行仲裁。仲裁原則為:當訪問BUSREQ同時發起時,PPC處理器訪問具有優先僅,此時幀獲取模塊的總線請求會被掛起,直到PPC處理器的訪問完成后才能被處理響應。
3.3HI6110狀態監控與總線切換
依照HI6110芯片的工作特點,當1553B總線上出現了有效的幀信號時,芯片會通過有效信號RCVA/B或RCVCMDA/B來表示是AB通道中哪個通道中有信息幀,并指出該幀信號為數據幀還是命令幀。此時,主機應根據RCV 和RCVCMD信號的狀態,對HI6110的控制寄存器操作,寫入正確的控制字,配置好工作通道,才能保證總線上的信號被正確的獲取并解碼。本設計中,主機的角色由FPGA來充當,內部采用狀態機來實現。其工作狀態圖如圖5所示。

圖5 總線監視與A/B冗余切換邏輯狀態圖
當FPGA監控到RCV或者RCVCMD信號發生了變化,狀態機由IDLE狀態遷移到RCV后再轉變為READ狀態,發起對HI6110的讀操作,將控制寄存器值讀出,若當前收到的是命令幀,那么還需要遷移到WAIT_RCV狀態中等待控制器發出有效的RCV信號,然后將讀回的控制寄存器值的總線選擇位置為正確的值,發起對HI6110控制寄存器的寫操作,從而完成AB總線的切換工作。接下來,狀態機判斷FFEMPTY信號,該信號表示HI6110內部的幀緩存是否有數據。若不為空,則進入RFIFO狀態將緩存中的數據一一讀出,直到緩存被讀空 (FFEMPTY=1)為止,然后狀態機轉變為REGCAP狀態,等待done=1并回到IDLE狀態,done信號為1表示當前總線活動中所有HI6110寄存器的值已經全部被讀取并保存完畢。
3.4信息幀獲取與緩存
在FPGA內部使用BRAM塊實現了一個512x16bit的雙口RAM[12],用于完成信息幀的緩存以及PPC主機與內部幀獲取模塊之間的數據交換。為了防止雙口RAM數據訪問的沖突,避免數據出錯,將整個RAM分為8個數據塊,形成一個環形的緩沖區,循環寫入。每個塊共64字,其數據格式定義如表1所示:
幀獲取模塊在監測到總線上的每一次總線活動后,將當前時間、當前HI6110寄存器的值以及數據FIFO中的數據按上述格式寫入到數據塊中,然后將FLAG標識置為0x55AA,表示一個信息已準備好,PPC處理器通過HDM總線把數據塊讀取后,將FLAG標識置為0x0000,表示該數據塊可被再次寫入。內部邏輯仍采用有限狀態機來實現,狀態圖如圖如示。

表1 環形緩存存儲塊數據定義與分配

圖6 幀獲取模塊功能狀態圖
如圖6所示,rcvint信號是工作在MT模式的HI6110芯片監測到總線上有幀時產生的,同時該信號還將內部的計數器值記錄下來做為時間戳。內部邏輯在 rcvint=1后進入CHK_FLG狀態,檢查雙口RAM中是否有可用的空閑數據塊。若有的話首先將時間戳寫入,然后是寫入控制字CW,接下來是讀取HI6110的數據FIFO,當FIFO中有數據時就讀出并寫入RAM中,直到當valmess=1或者error=1時,才表示總線上信息幀已完成。接下來是讀取其它寄存器,包括狀態寄存器、錯誤寄存器、信息幀寄存器、子地址寄存器等。最后是寫入HI6110控制器的FIFO中數據個數,然后將FLAG置為有效。這樣就完成了一個信息的處理。在對HI6110進行寄存器的讀取時,有一點需要注意,讀取的地址順序最好是按照0x00,0x01,0x02,0x06進行,模擬主機軟件的處理流程進行,否則可能會造成讀取的寄存器不正確。
3.5內部功能寄存器
該功能模塊實現了幾個功能寄存器,主要用于完成時間戳的初始化,讀取中斷狀態、復位HI6110以及對HI6110輸出的信號如RCV、VALMESS、ERROR等信號變化進行統計計數,配合PPC405上的軟件完成雙口RAM中數據的讀取,并進行一定的比對和檢查。
3.6中斷產生及數據傳輸
FPGA邏輯產生了2類中斷,第1種是RCV中斷,也即是當1553B總線上一旦有了數據幀時就產生中斷。第2種是VALMESS或ERROR中斷,這種中斷是在1553B總線上一幀數據傳送完畢后才產生。

圖7 VALMESS及ERROR信號產生示意圖
從圖7可以清楚的了解到這2種中斷的差異[3]。在實際應用中,響應RCV中斷來操作雙口RAM,以保證有空余的緩沖塊供內部幀獲取邏輯使用。而使用VALMESS中斷來讀取最新的幀數據。
3.7資源占用
使用Xilinx 9.1進行綜合、布局布線,各項設置為默認值default。3通道實現占用資源如表2所示。

表2 FPGA資源占用情況
PPC405EP處理器運行vxWorks 5.5多任務實時操作系統[13-15]。上電進入操作系統后,首先進行初始化工作,完成如下工作:
1)初始化HI6110,使其工作在MT模式下。
2)對FPGA初始化,對內部雙口RAM進行初始化;
3)根據系統時間,設置時間戳;
4)初始化處理器中斷控制器,掛接中斷服務函數;
5)初始化PCI接口,完成PCI空間內存映射等工作;
6)創建并啟動上位機命令處理任務;主要實現對上位機命令的解析,完成對總線監控的啟動、停止、狀態報告、時間同步等功能;
7)創建數據幀處理任務;主要實現對從雙口RAM讀取數據幀,對數據幀進行處理,打包,傳輸等功能。
初始化工作完成后,上位機會通過PCI總線與PPC405處理器交換信息,完成內部計時器的初始化,然后啟動總線監控。當所監控的總線有總線活動時,FPGA會自動完成信息幀的讀取并緩存在內部雙口RAM中,然后向PPC處理器發起中斷。中斷服務程序響應中斷,讀取雙口RAM中的數據,經過數據幀處理任務的再次處理,將數據包存放在處理器的SDRAM中,然后再通知上位機,利用PCI總線的高速性能將多個通道的1553B監控數據傳輸到上位機中。
文中實現了一個CPCI 3U的板卡,PPC405EP處理器運行頻率為300 MHz,內存容量128 MB,對3路1553B總線同時進行了長時間的監控,未出現掉幀,錯幀的現象。實踐證明,使用FPGA和HI6110芯片組建的1553B總線MT模塊,具有成本較低,體積小的特點。另外,利用FPGA內部邏輯自動完成總線切換、數據緩存等功能,還極大地降低了對處理器性能的要求。
[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總線設計[J].信息技術,2014(2):194-197.
[3]周遠林,吳忠,丑武勝.基于BU-61580的1553B總線接口設計[J].計算機工程與應用,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]陳偉,嚴發寶,張京,等.一種基于HI6110的1553B BM板卡設計方法[J].兵工自動化,2011,30(9):81-82.
[6]Spartan-3 FPGA Family Data Sheet.Xilinx[DB/OL].2013.7. http://www.xilinx.com.
[7]王誠,薛小剛,鐘信潮.FPGA/CPLD設計工具—Xilinx ISE 5.x使用詳解[M].北京:人民郵電出版社,2003.
[8]邊計年,薛寵熙.用VHDL設計電子線路[M].北京:清華大學出版社,2001.
[9]MiChael D.Ciletti,等.Verilog VHDL高級數字設計[M].張雅綺,李鏘等,譯.北京:電子工業出版社,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在電力監測系統中的應用[J].電子設計工程,2007(10):29-33.
[14]師于杰.基于vxWorks實時系統的CompactPCI平臺高可用系統研究[D].西安電子科技大學,2006.
[15]武華,劉軍偉.基于VxWorks的多任務程序設計[J].計算機技術與發展,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稿件編號:201605065
國家自然科學基金項目(61133016)
唐 建(1978—),男,四川射洪人,碩士,高級工程師。研究方向:嵌入式計算機應用。