摘 要: 基于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總線)是美國制定的一種軍用串行總線標準,國內(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)與主機通信的PCI控制器PCI9054,,主要實現(xiàn)DPRAM內(nèi)的數(shù)據(jù)與主機進行通信;(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ù)雜,,軟件代碼比較大,因此必須要擴展外部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具有掉電保護的特性,,但它的存取速度遠遠低于SDRAM。該芯片可配置成8位或16位,,本系統(tǒng)配置為16位,。
(4) DPRAM:主要用于NIOSⅡ處理器與PCI9054之間的數(shù)據(jù)交換。其訪問時序和SRAM一樣,,通過添加SRAM模塊就可以對DPRAM進行訪問。本系統(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)標志總線,。
(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ù)寬度,傳輸速率最高可達132MB/s,。本地總線端時鐘最高可達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)硬件生成并下載完畢后,,就可以進行系統(tǒng)的軟件設(shè)計,。整個軟件的體系結(jié)構(gòu)如圖2所示。
在本系統(tǒng)中,,NIOSⅡ作為下位機來使用,,它通過PCI總線與上位機進行通信,接收來自上位機的命令,并解釋執(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)寄存器等。然后判斷當前的訪問地址,,如果訪問內(nèi)部寄存器,,則根據(jù)地址可以讀寫板卡內(nèi)的寄存器,如:控制寄存器,、RT地址寄存器,、描述表基址寄存器、狀態(tài)寄存器,、當前處理命令寄存器等,;如果是訪問數(shù)據(jù)區(qū),則根據(jù)當前的工作模式分別進入BC,、RT,、MT工作狀態(tài)進行不同的數(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模式下進行介紹,。本設(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#信號確認數(shù)據(jù)讀寫操作,。為了實現(xiàn)PCI9054與DPRAM數(shù)據(jù)傳輸無誤,在FPGA內(nèi)編制了讀寫狀態(tài)機從而實現(xiàn)兩者之間數(shù)據(jù)傳輸?shù)臅r序匹配,。狀態(tài)機核心源代碼如下:
always @ (posedge PCI_CLK) //時鐘,,本系統(tǒng)為48MHz
begin
casex(currentstate) //讀寫狀態(tài)機
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接口的擴展卡進行配置,、讀寫,完成驅(qū)動的設(shè)計,。例如:
(1) 函數(shù)WD_Open( ),用來獲得WinDriver驅(qū)動程序的句柄,。該函數(shù)必須在所有其他函數(shù)之前執(zhí)行,用來打開一個WinDriver支持的硬件PCI設(shè)備,。
(2) 函數(shù)WD_CardRegister( ),負責選定設(shè)備,且對該設(shè)備的項目進行注冊和資源分配,。具體完成三個功能:①映射設(shè)備的物理空間,使之能夠被核心模式的進程和用戶模式的應(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總線作為主機和1553B板卡通信。該板卡可實現(xiàn)BC,、RT,、MT三種模式,實現(xiàn)了1553B總線協(xié)議,。采用SOPC技術(shù)使得該板卡體積小,,節(jié)省了系統(tǒng)資源,而且具有很好的系統(tǒng)升級性能,。目前,,該接口卡已成功應(yīng)用于軍隊某武器控制系統(tǒng)仿真項目中。
參考文獻
[1] 王勇.航空機載計算機與航空電子總線[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.