基于NIOSⅡ處理器的MIL-STD-1553B接口卡設(shè)計
摘 要: 基于NIOSⅡ處理器搭建了可編程片上系統(tǒng),在該系統(tǒng)中通過控制HI-6110實現(xiàn)了MIL-STD-1553B總線協(xié)議,通過雙口RAM實現(xiàn)了與PCI總線的通信。重點論述了NIOSⅡ處理器系統(tǒng)的硬件和軟件設(shè)計,雙口RAM的地址空間劃分,PCI9054的驅(qū)動軟件設(shè)計。測試表明,用本方法設(shè)計的接口卡能很好地實現(xiàn)MIL-STD-1553B總線協(xié)議。
關(guān)鍵詞: 現(xiàn)場可編程門陣列; NIOSⅡ; MIL-STD-1553B; PCI9054; HI-6110
MIL-STD-1553B總線(以下簡稱1553B總線)是美國制定的一種軍用串行總線標(biāo)準(zhǔn),國內(nèi)對應(yīng)為GJB289A-97,它規(guī)定了數(shù)字式時分制指令/響應(yīng)型多路傳輸數(shù)據(jù)總線及其接口電子設(shè)備的技術(shù)要求,同時規(guī)定了多路傳輸數(shù)據(jù)總線的工作原理和總線上的信息流及需要采用的電氣和功能格式[1]。
目前,國內(nèi)外的1553B板卡大多數(shù)是基于協(xié)議芯片配以相應(yīng)的處理器和存儲器來實現(xiàn),硬件電路復(fù)雜,設(shè)計難度大。SOPC(System On Programmable Chip)技術(shù)是由Altera公司提出的,它以IP核為基礎(chǔ),以硬件描述語言為主要設(shè)計手段,包括以32位NIOSⅡ軟核處理器為核心的嵌入式系統(tǒng)的硬件配置、硬件設(shè)計、硬件仿真、軟件設(shè)計、軟件調(diào)試等。使得由許多IC組成的電子系統(tǒng)集成到一塊FPGA內(nèi)成為可能,從而大大簡化了系統(tǒng)的硬件設(shè)計,節(jié)省了大量的系統(tǒng)資源[2]。
1 基于NIOSⅡ處理器的1553B板卡硬件設(shè)計
本系統(tǒng)的硬件設(shè)計主要由三部分構(gòu)成:(1)與主機(jī)通信的PCI控制器PCI9054,主要實現(xiàn)DPRAM內(nèi)的數(shù)據(jù)與主機(jī)進(jìn)行通信;(2)基于NIOSⅡ處理器的FPGA設(shè)計,實現(xiàn)NIOSⅡ硬件平臺的搭建,實現(xiàn)對HI-6110的控制,讀出相關(guān)的1553B報文,將相關(guān)的控制和數(shù)據(jù)按照特定的格式存儲在DPRAM,或者從DPRAM中讀出相關(guān)的控制和數(shù)據(jù),實現(xiàn)對HI-6110的控制;(3)1553B接口電路,主要由HI-6110和相應(yīng)的總線耦合器組成。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
系統(tǒng)硬件配置如下。
(1) NIOSⅡCPU:它是整個系統(tǒng)的核心部件,本系統(tǒng)選用的是32位NIOSⅡCPU[3]。
(2) SDRAM:由于本系統(tǒng)復(fù)雜,軟件代碼比較大,因此必須要擴(kuò)展外部SDRAM。在NIOSⅡ系統(tǒng)工作時,SDRAM主要用來存放運行程序和數(shù)據(jù),由于NIOSⅡ?qū)DRAM的操作速度非???,本系統(tǒng)的SDRAM選擇的是MT48LC4M32B2,可以滿足工作在50MHz的NIOSⅡ系統(tǒng)要求。
(3) Flash:用來存放用戶程序,本系統(tǒng)選用的是AM29LV128M。與SDRAM相比較,F(xiàn)lash具有掉電保護(hù)的特性,但它的存取速度遠(yuǎn)遠(yuǎn)低于SDRAM。該芯片可配置成8位或16位,本系統(tǒng)配置為16位。
(4) DPRAM:主要用于NIOSⅡ處理器與PCI9054之間的數(shù)據(jù)交換。其訪問時序和SRAM一樣,通過添加SRAM模塊就可以對DPRAM進(jìn)行訪問。本系統(tǒng)采用IDT公司的IDT70V28系列DPRAM,它可以提供64K×16bit的存儲空間。
(5) PIO:主要完成NIOSⅡ處理器和HI-6110之間的數(shù)據(jù)、地址、控制信息傳輸。其中Pio_DataIn和Pio_DataOut是16位的數(shù)據(jù)總線,Pio_Addr是16位地址總線,Pio_Ctl是8位控制總線,Pio_StatusFlag是8位狀態(tài)標(biāo)志總線。
(6) 時鐘模塊:其主要作用是為FPGA模塊提供系統(tǒng)運行的工作頻率,并為HI-6110和PCI9054提供時鐘。本系統(tǒng)選擇的時鐘頻率是48MHz。
(7) PCI9054:它是PLX公司生產(chǎn)的PCI總線通用接口芯片,符合PCI V2.1和V2.2規(guī)范;在PCI總線端支持32位數(shù)據(jù)寬度,傳輸速率為33MHz;本地端可以編程實現(xiàn)8位、16位、32位的數(shù)據(jù)寬度,傳輸速率最高可達(dá)132MB/s。本地總線端時鐘最高可達(dá)50MHz,支持復(fù)用/非復(fù)用的32位地址/數(shù)據(jù)。PCI9054內(nèi)部有6種可編程的FIFO存儲器,以實現(xiàn)零等待突發(fā)傳輸以及本地總線和PCI總線之間的異步操作。PCI9054工作方式靈活多樣,包括直接主模式、直接從模式和DMA模式。本地總線可工作在M、C、J三種模式[4]。本設(shè)計采用直接從模式,本地總線工作在C模式。
(8) HI-6110:它是由HOLT公司推出的1553B總線協(xié)議處理芯片,該芯片可以配置成BC、RT、MT、帶RT的MT四種工作方式,支持雙冗余總線。內(nèi)含2個32×16的FIFO。外部時鐘可選12MHz或24MHz兩種頻率[5]。
2 基于NIOSⅡ處理器的1553B板卡底層軟件設(shè)計
2.1 軟件總體設(shè)計
將系統(tǒng)硬件生成并下載完畢后,就可以進(jìn)行系統(tǒng)的軟件設(shè)計。整個軟件的體系結(jié)構(gòu)如圖2所示。
在本系統(tǒng)中,NIOSⅡ作為下位機(jī)來使用,它通過PCI總線與上位機(jī)進(jìn)行通信,接收來自上位機(jī)的命令,并解釋執(zhí)行。NIOSⅡ的軟件需要完成以下任務(wù):讀寫DPRAM實現(xiàn)和PCI總線的通信;控制HI-6110完成1553B數(shù)據(jù)的發(fā)送和接收,實現(xiàn)1553B總線協(xié)議。
在圖2中NIOSⅡ上電或復(fù)位后初始化程序完成整個系統(tǒng)的初始化,包括啟動定時器、初始化中斷向量表,初始化DPRAM內(nèi)容、初始化HI-6110內(nèi)寄存器等。然后判斷當(dāng)前的訪問地址,如果訪問內(nèi)部寄存器,則根據(jù)地址可以讀寫板卡內(nèi)的寄存器,如:控制寄存器、RT地址寄存器、描述表基址寄存器、狀態(tài)寄存器、當(dāng)前處理命令寄存器等;如果是訪問數(shù)據(jù)區(qū),則根據(jù)當(dāng)前的工作模式分別進(jìn)入BC、RT、MT工作狀態(tài)進(jìn)行不同的數(shù)據(jù)處理,如果數(shù)據(jù)處理正確則寫相應(yīng)的寄存器和數(shù)據(jù)區(qū),轉(zhuǎn)入讀下一條訪問地址。
2.2 1553B板卡地址劃分
1553B板卡的地址分為兩部分:內(nèi)部寄存器和數(shù)據(jù)區(qū)。內(nèi)部寄存器主要包含控制寄存器和狀態(tài)寄存器,通過控制寄存器的不同內(nèi)容可實現(xiàn)對1553B板卡的控制,通過讀狀態(tài)寄存器的內(nèi)容可以獲得1553B板卡內(nèi)的通信狀態(tài),內(nèi)部寄存器的地址空間為:0x0000~0x00FF;數(shù)據(jù)區(qū)根據(jù)1553B的操作模式不同,分為三種類型,即BC模式、RT模式、MT模式,其地址空間為:0x0100~0xFFFF。下面僅以1553B板卡工作在RT模式下進(jìn)行介紹。本設(shè)計采用雙緩沖區(qū)的數(shù)據(jù)儲存策略,將數(shù)據(jù)區(qū)地址分為RT控制塊和RT數(shù)據(jù)存儲兩個區(qū),每個控制塊含有4個字,每個數(shù)據(jù)儲存區(qū)34字節(jié)[6]。具體定義如圖3所示。
3 PCI總線設(shè)計
3.1 EEPROM設(shè)計
PCI9054芯片可以支持有EEPROM和無EEPROM的啟動方式。有EEPROM時,EEDI/DO的管腳必須上拉;無EEPROM時,EEDI/DO的管腳必須下拉。本系統(tǒng)采用有EEPROM的啟動方式。配置芯片選用Microchip Technology公司的93LC46B。EEPROM主要完成對本地配置寄存器的初始配置以及一些控制寄存器的配置,如本地存儲空間到PCI內(nèi)存空間和I/O空間的映射等。根據(jù)設(shè)計先將PCI9054的各個參數(shù)寫入93LC46B芯片,系統(tǒng)上電后PCI9054自動將EEPROM芯片中的參數(shù)讀入,從而初始化PCI9054[7]。
3.2 PCI訪問DPRAM設(shè)計
本設(shè)計中,PCI9054使用地址空間0來訪問DPRAM,地址空間0配置為內(nèi)存空間,其地址范圍為1M。PCI9054工作在PCI從模式、本地總線工作在C模式下訪問內(nèi)存空間可以有幾種方式:Single Write/Read、Non-Burst Write/Read、Burst Write/Read。另外通過內(nèi)部Wait State可以添加延時,本地總線通過Ready#信號確認(rèn)數(shù)據(jù)讀寫操作。為了實現(xiàn)PCI9054與DPRAM數(shù)據(jù)傳輸無誤,在FPGA內(nèi)編制了讀寫狀態(tài)機(jī)從而實現(xiàn)兩者之間數(shù)據(jù)傳輸?shù)臅r序匹配。狀態(tài)機(jī)核心源代碼如下:
always @ (posedge PCI_CLK) //時鐘,本系統(tǒng)為48MHz
begin
casex(currentstate) //讀寫狀態(tài)機(jī)
s0:
begin
if (!PCI_ADS && (PCI_ADDR<=16'hFFFF))
// PCI_ADS為0表示傳輸
begin //開始,地址小于128K
PCI_READY=1'b0;
Write_DPRAM=PCI_LWDRD;
……
currentstate = s1;
end
else
currentstate = s0;
end
s1:
begin
if (!PCI_BLAST) //PCI_BLAST為0,表示停止Burst
//Write/Read,轉(zhuǎn)入狀態(tài)0;否則為1,
begin //表示Burst Write/Read
PCI_READY=1'b1;
……
currentstate = s0;
end
else if (PCI_BLAST)
begin
PCI_READY=1'b0;
Write_DPRAM=PCI_LWDRD;
……
end
default:currentstate=s0;
endcase
3.3 PCI驅(qū)動設(shè)計
驅(qū)動程序采用Jungo公司的WinDriver開發(fā)平臺。該平臺的優(yōu)點是:用戶不需要了解操作系統(tǒng)內(nèi)部原理及DDK開發(fā)工具。另外,WinDriver對PCI9054提供了專門的開發(fā)框架,可以大大縮短開發(fā)周期。
驅(qū)動程序主要由三個部分組成:初始化硬件、對硬件資源的訪問和函數(shù)庫的調(diào)用。其中,后面兩個部分對于不同的硬件基本一致,不同硬件開發(fā)的區(qū)別在于初始化硬件時對硬件資源的鎖定。WinDriver庫函數(shù)是實現(xiàn)PCI卡驅(qū)動的重要模塊,利用這些函數(shù)可以對PCI接口的擴(kuò)展卡進(jìn)行配置、讀寫,完成驅(qū)動的設(shè)計。例如:
(1) 函數(shù)WD_Open( ),用來獲得WinDriver驅(qū)動程序的句柄。該函數(shù)必須在所有其他函數(shù)之前執(zhí)行,用來打開一個WinDriver支持的硬件PCI設(shè)備。
(2) 函數(shù)WD_CardRegister( ),負(fù)責(zé)選定設(shè)備,且對該設(shè)備的項目進(jìn)行注冊和資源分配。具體完成三個功能:①映射設(shè)備的物理空間,使之能夠被核心模式的進(jìn)程和用戶模式的應(yīng)用程序所訪問;②檢查所需存儲器或I/O資源先前是否被注冊過,以防設(shè)備沖突;③將有關(guān)中斷請求號、中斷類型(電平觸發(fā)或邊緣觸發(fā))存儲到WinDriver自定義的數(shù)據(jù)結(jié)構(gòu)中。
4 系統(tǒng)調(diào)試
在實際調(diào)試中,通過JTAG端口,使用Quartus II的SignalTap II邏輯分析儀可以測試板卡的運行情況。測得1553B板卡工作在BC模式下訪問HI-6110,如圖4所示;工作在RT模式下訪問HI-6110,如圖5所示;PCI9054讀DPRAM,如圖6所示。
以NIOSⅡ處理器為核心設(shè)計并實現(xiàn)1553B板卡,采用PCI總線作為主機(jī)和1553B板卡通信。該板卡可實現(xiàn)BC、RT、MT三種模式,實現(xiàn)了1553B總線協(xié)議。采用SOPC技術(shù)使得該板卡體積小,節(jié)省了系統(tǒng)資源,而且具有很好的系統(tǒng)升級性能。目前,該接口卡已成功應(yīng)用于軍隊某武器控制系統(tǒng)仿真項目中。
參考文獻(xiàn)
[1] 王勇.航空機(jī)載計算機(jī)與航空電子總線[M].西安:空軍工程大學(xué)工程學(xué)院,2003.
[2] 潘松,黃繼業(yè).SOPC技術(shù)實用教程[M]. 北京:清華大學(xué)出版社,2005.
[3] Altera Corporation. NIOS Ⅱprocessor reference handbook[DB/OL].http://www.altera.com.cn/literature/hb/qts/n2cpu_nii5v1.pdf. 2007.
[4] Plx Technology. PCI 9054 data book V2.1, 2007[DB/OL].http//www. plxtech. com.2007.
[5] HOLT INC. HI-6110 mil-std-1553/mil-std-1760 BC/RT/MT message processor[DB/OL]. http//www. holtic.com.2007.
[6] 鄧青海,景小寧,劉安. 基于USB的多通道俄制串行總線接口卡設(shè)計[J].電子技術(shù)應(yīng)用,2006,32(11):55-57.
[7] 顏建峰,吳寧.基于PCI總線的DMA高速數(shù)據(jù)傳輸系統(tǒng)[J].電子科技大學(xué)學(xué)報,2007(10):858-861.