《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于NIOSⅡ處理器的MIL-STD-1553B接口卡設(shè)計(jì)
基于NIOSⅡ處理器的MIL-STD-1553B接口卡設(shè)計(jì)
劉 安, 馮金富, 梁曉龍, 楊
摘要: 基于NIOSⅡ處理器搭建了可編程片上系統(tǒng),,在該系統(tǒng)中通過控制HI-6110實(shí)現(xiàn)了MIL-STD-1553B總線協(xié)議,,通過雙口RAM實(shí)現(xiàn)了與PCI總線的通信,。重點(diǎn)論述了NIOSⅡ處理器系統(tǒng)的硬件和軟件設(shè)計(jì),雙口RAM的地址空間劃分,,PCI9054的驅(qū)動(dòng)軟件設(shè)計(jì)。測(cè)試表明,,用本方法設(shè)計(jì)的接口卡能很好地實(shí)現(xiàn)MIL-STD-1553B總線協(xié)議,。
關(guān)鍵詞: NIOS II PCI9054 Altera
Abstract:
Key words :

  摘 要: 基于NIOSⅡ處理器搭建了可編程片上系統(tǒng),在該系統(tǒng)中通過控制HI-6110實(shí)現(xiàn)了MIL-STD-1553B總線協(xié)議,,通過雙口RAM實(shí)現(xiàn)了與PCI總線的通信,。重點(diǎn)論述了NIOSⅡ處理器系統(tǒng)的硬件和軟件設(shè)計(jì),雙口RAM的地址空間劃分,,PCI9054的驅(qū)動(dòng)軟件設(shè)計(jì),。測(cè)試表明,用本方法設(shè)計(jì)的接口卡能很好地實(shí)現(xiàn)MIL-STD-1553B總線協(xié)議,。
  關(guān)鍵詞: 現(xiàn)場(chǎng)可編程門陣列,; NIOSⅡ; MIL-STD-1553B,; PCI9054,; HI-6110

 

  MIL-STD-1553B總線(以下簡(jiǎn)稱1553B總線)是美國(guó)制定的一種軍用串行總線標(biāo)準(zhǔn),國(guó)內(nèi)對(duì)應(yīng)為GJB289A-97,它規(guī)定了數(shù)字式時(shí)分制指令/響應(yīng)型多路傳輸數(shù)據(jù)總線及其接口電子設(shè)備的技術(shù)要求,,同時(shí)規(guī)定了多路傳輸數(shù)據(jù)總線的工作原理和總線上的信息流及需要采用的電氣和功能格式[1],。
  目前,,國(guó)內(nèi)外的1553B板卡大多數(shù)是基于協(xié)議芯片配以相應(yīng)的處理器和存儲(chǔ)器來(lái)實(shí)現(xiàn),硬件電路復(fù)雜,,設(shè)計(jì)難度大,。SOPC(System On Programmable Chip)技術(shù)是由Altera公司提出的,它以IP核為基礎(chǔ),,以硬件描述語(yǔ)言為主要設(shè)計(jì)手段,,包括以32位NIOSⅡ軟核處理器為核心的嵌入式系統(tǒng)的硬件配置、硬件設(shè)計(jì),、硬件仿真,、軟件設(shè)計(jì)、軟件調(diào)試等,。使得由許多IC組成的電子系統(tǒng)集成到一塊FPGA內(nèi)成為可能,,從而大大簡(jiǎn)化了系統(tǒng)的硬件設(shè)計(jì),節(jié)省了大量的系統(tǒng)資源[2],。
1 基于NIOSⅡ處理器的1553B板卡硬件設(shè)計(jì)
  本系統(tǒng)的硬件設(shè)計(jì)主要由三部分構(gòu)成:(1)與主機(jī)通信的PCI控制器PCI9054,,主要實(shí)現(xiàn)DPRAM內(nèi)的數(shù)據(jù)與主機(jī)進(jìn)行通信;(2)基于NIOSⅡ處理器的FPGA設(shè)計(jì),,實(shí)現(xiàn)NIOSⅡ硬件平臺(tái)的搭建,,實(shí)現(xiàn)對(duì)HI-6110的控制,讀出相關(guān)的1553B報(bào)文,,將相關(guān)的控制和數(shù)據(jù)按照特定的格式存儲(chǔ)在DPRAM,,或者從DPRAM中讀出相關(guān)的控制和數(shù)據(jù),實(shí)現(xiàn)對(duì)HI-6110的控制,;(3)1553B接口電路,,主要由HI-6110和相應(yīng)的總線耦合器組成。系統(tǒng)總體結(jié)構(gòu)如圖1所示,。

 


  系統(tǒng)硬件配置如下,。
  (1) NIOSⅡCPU:它是整個(gè)系統(tǒng)的核心部件,本系統(tǒng)選用的是32位NIOSⅡCPU[3],。
  (2) SDRAM:由于本系統(tǒng)復(fù)雜,,軟件代碼比較大,因此必須要擴(kuò)展外部SDRAM,。在NIOSⅡ系統(tǒng)工作時(shí),,SDRAM主要用來(lái)存放運(yùn)行程序和數(shù)據(jù),由于NIOSⅡ?qū)DRAM的操作速度非???,本系統(tǒng)的SDRAM選擇的是MT48LC4M32B2,可以滿足工作在50MHz的NIOSⅡ系統(tǒng)要求。
  (3) Flash:用來(lái)存放用戶程序,,本系統(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ù)交換,。其訪問時(shí)序和SRAM一樣,通過添加SRAM模塊就可以對(duì)DPRAM進(jìn)行訪問,。本系統(tǒng)采用IDT公司的IDT70V28系列DPRAM,,它可以提供64K×16bit的存儲(chǔ)空間。
  (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) 時(shí)鐘模塊:其主要作用是為FPGA模塊提供系統(tǒng)運(yùn)行的工作頻率,,并為HI-6110和PCI9054提供時(shí)鐘。本系統(tǒng)選擇的時(shí)鐘頻率是48MHz,。
  (7) PCI9054:它是PLX公司生產(chǎn)的PCI總線通用接口芯片,符合PCI V2.1和V2.2規(guī)范;在PCI總線端支持32位數(shù)據(jù)寬度,,傳輸速率為33MHz;本地端可以編程實(shí)現(xiàn)8位,、16位、32位的數(shù)據(jù)寬度,傳輸速率最高可達(dá)132MB/s,。本地總線端時(shí)鐘最高可達(dá)50MHz,支持復(fù)用/非復(fù)用的32位地址/數(shù)據(jù),。PCI9054內(nèi)部有6種可編程的FIFO存儲(chǔ)器,以實(shí)現(xiàn)零等待突發(fā)傳輸以及本地總線和PCI總線之間的異步操作。PCI9054工作方式靈活多樣,包括直接主模式,、直接從模式和DMA模式,。本地總線可工作在M、C,、J三種模式[4],。本設(shè)計(jì)采用直接從模式,本地總線工作在C模式,。
  (8) HI-6110:它是由HOLT公司推出的1553B總線協(xié)議處理芯片,,該芯片可以配置成BC、RT、MT,、帶RT的MT四種工作方式,,支持雙冗余總線。內(nèi)含2個(gè)32×16的FIFO,。外部時(shí)鐘可選12MHz或24MHz兩種頻率[5],。
2 基于NIOSⅡ處理器的1553B板卡底層軟件設(shè)計(jì)
2.1 軟件總體設(shè)計(jì)

  將系統(tǒng)硬件生成并下載完畢后,就可以進(jìn)行系統(tǒng)的軟件設(shè)計(jì),。整個(gè)軟件的體系結(jié)構(gòu)如圖2所示,。

 

  在本系統(tǒng)中,NIOSⅡ作為下位機(jī)來(lái)使用,,它通過PCI總線與上位機(jī)進(jìn)行通信,,接收來(lái)自上位機(jī)的命令,并解釋執(zhí)行,。NIOSⅡ的軟件需要完成以下任務(wù):讀寫DPRAM實(shí)現(xiàn)和PCI總線的通信,;控制HI-6110完成1553B數(shù)據(jù)的發(fā)送和接收,實(shí)現(xiàn)1553B總線協(xié)議,。
  在圖2中NIOSⅡ上電或復(fù)位后初始化程序完成整個(gè)系統(tǒng)的初始化,,包括啟動(dòng)定時(shí)器、初始化中斷向量表,,初始化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)容可實(shí)現(xiàn)對(duì)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è)計(jì)采用雙緩沖區(qū)的數(shù)據(jù)儲(chǔ)存策略,,將數(shù)據(jù)區(qū)地址分為RT控制塊和RT數(shù)據(jù)存儲(chǔ)兩個(gè)區(qū),每個(gè)控制塊含有4個(gè)字,,每個(gè)數(shù)據(jù)儲(chǔ)存區(qū)34字節(jié)[6],。具體定義如圖3所示。

 


3 PCI總線設(shè)計(jì)
3.1 EEPROM設(shè)計(jì)
  PCI9054芯片可以支持有EEPROM和無(wú)EEPROM的啟動(dòng)方式,。有EEPROM時(shí),,EEDI/DO的管腳必須上拉;無(wú)EEPROM時(shí),,EEDI/DO的管腳必須下拉,。本系統(tǒng)采用有EEPROM的啟動(dòng)方式。配置芯片選用Microchip Technology公司的93LC46B,。EEPROM主要完成對(duì)本地配置寄存器的初始配置以及一些控制寄存器的配置,,如本地存儲(chǔ)空間到PCI內(nèi)存空間和I/O空間的映射等。根據(jù)設(shè)計(jì)先將PCI9054的各個(gè)參數(shù)寫入93LC46B芯片,,系統(tǒng)上電后PCI9054自動(dòng)將EEPROM芯片中的參數(shù)讀入,,從而初始化PCI9054[7]
3.2 PCI訪問DPRAM設(shè)計(jì)
  本設(shè)計(jì)中,,PCI9054使用地址空間0來(lái)訪問DPRAM,,地址空間0配置為內(nèi)存空間,其地址范圍為1M,。PCI9054工作在PCI從模式、本地總線工作在C模式下訪問內(nèi)存空間可以有幾種方式:Single Write/Read,、Non-Burst Write/Read,、Burst Write/Read。另外通過內(nèi)部Wait State可以添加延時(shí),,本地總線通過Ready#信號(hào)確認(rèn)數(shù)據(jù)讀寫操作,。為了實(shí)現(xiàn)PCI9054與DPRAM數(shù)據(jù)傳輸無(wú)誤,在FPGA內(nèi)編制了讀寫狀態(tài)機(jī)從而實(shí)現(xiàn)兩者之間數(shù)據(jù)傳輸?shù)臅r(shí)序匹配,。狀態(tài)機(jī)核心源代碼如下:
  always @ (posedge PCI_CLK)       //時(shí)鐘,,本系統(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ū)動(dòng)設(shè)計(jì)
  驅(qū)動(dòng)程序采用Jungo公司的WinDriver開發(fā)平臺(tái),。該平臺(tái)的優(yōu)點(diǎn)是:用戶不需要了解操作系統(tǒng)內(nèi)部原理及DDK開發(fā)工具,。另外,WinDriver對(duì)PCI9054提供了專門的開發(fā)框架,,可以大大縮短開發(fā)周期,。
  驅(qū)動(dòng)程序主要由三個(gè)部分組成:初始化硬件、對(duì)硬件資源的訪問和函數(shù)庫(kù)的調(diào)用,。其中,后面兩個(gè)部分對(duì)于不同的硬件基本一致,,不同硬件開發(fā)的區(qū)別在于初始化硬件時(shí)對(duì)硬件資源的鎖定。WinDriver庫(kù)函數(shù)是實(shí)現(xiàn)PCI卡驅(qū)動(dòng)的重要模塊,,利用這些函數(shù)可以對(duì)PCI接口的擴(kuò)展卡進(jìn)行配置,、讀寫,完成驅(qū)動(dòng)的設(shè)計(jì),。例如:
  (1) 函數(shù)WD_Open( ),用來(lái)獲得WinDriver驅(qū)動(dòng)程序的句柄,。該函數(shù)必須在所有其他函數(shù)之前執(zhí)行,用來(lái)打開一個(gè)WinDriver支持的硬件PCI設(shè)備,。
  (2) 函數(shù)WD_CardRegister( ),負(fù)責(zé)選定設(shè)備,且對(duì)該設(shè)備的項(xiàng)目進(jìn)行注冊(cè)和資源分配,。具體完成三個(gè)功能:①映射設(shè)備的物理空間,使之能夠被核心模式的進(jìn)程和用戶模式的應(yīng)用程序所訪問,;②檢查所需存儲(chǔ)器或I/O資源先前是否被注冊(cè)過,,以防設(shè)備沖突;③將有關(guān)中斷請(qǐng)求號(hào),、中斷類型(電平觸發(fā)或邊緣觸發(fā))存儲(chǔ)到WinDriver自定義的數(shù)據(jù)結(jié)構(gòu)中,。
4 系統(tǒng)調(diào)試
  在實(shí)際調(diào)試中,通過JTAG端口,,使用Quartus II的SignalTap II邏輯分析儀可以測(cè)試板卡的運(yùn)行情況,。測(cè)得1553B板卡工作在BC模式下訪問HI-6110,如圖4所示;工作在RT模式下訪問HI-6110,,如圖5所示,;PCI9054讀DPRAM,如圖6所示,。

 

  以NIOSⅡ處理器為核心設(shè)計(jì)并實(shí)現(xiàn)1553B板卡,,采用PCI總線作為主機(jī)和1553B板卡通信。該板卡可實(shí)現(xiàn)BC,、RT,、MT三種模式,,實(shí)現(xiàn)了1553B總線協(xié)議。采用SOPC技術(shù)使得該板卡體積小,,節(jié)省了系統(tǒng)資源,,而且具有很好的系統(tǒng)升級(jí)性能。目前,,該接口卡已成功應(yīng)用于軍隊(duì)某武器控制系統(tǒng)仿真項(xiàng)目中,。

參考文獻(xiàn)
[1]  王勇.航空機(jī)載計(jì)算機(jī)與航空電子總線[M].西安:空軍工程大學(xué)工程學(xué)院,2003.
[2]  潘松,黃繼業(yè).SOPC技術(shù)實(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ì)[J].電子技術(shù)應(yīng)用,,2006,32(11):55-57.
[7]  顏建峰,吳寧.基于PCI總線的DMA高速數(shù)據(jù)傳輸系統(tǒng)[J].電子科技大學(xué)學(xué)報(bào),,2007(10):858-861.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。