基于NIOSII的ARINC429總線(xiàn)接口板研究
隨著(zhù)數字技術(shù)和計算機技術(shù)的不斷發(fā)展,越來(lái)越多的航空電子設備采用了數字化技術(shù),從而使數字傳輸成為信息傳輸的主要途徑。ARINC429是航空電子系統中最常見(jiàn)的通訊總線(xiàn)之一,廣泛用于波音(Boeing)系列、歐洲空中客車(chē)(Airbus)等機種。目前國內機載電子大多采用專(zhuān)用測試設備,系統通用性不高,增加了檢測成本。本文介紹的ARINC429接口板設計靈活、工作可靠、有效地節約了成本,可以緩解當前ARINC429設備檢測難的窘境,有廣闊的應用前景。
本文引用地址:http://dyxdggzs.com/article/201612/329543.htm2 系統總體設計
Altera公司在2004年發(fā)布了支持CycloneⅡFPGA系列的NIOSⅡ嵌入式微處理器。它是一款通用的RISC結構32位CPU,在軟件SoPC的基礎上添加NIOSⅡ軟核和相應的外圍接口。對設計進(jìn)行綜合,下載到FPGA中就可以設計一個(gè)具有特定功能的嵌入式處理器。本設計采用Altera公司的FPGA—EP2C35,引人嵌入式軟核處理器NIOSⅡ作為系統的主控制器,結合ARINC429專(zhuān)用器件和其他外圍設備實(shí)現數據的收發(fā)功能。
ARINC429接口板由數據收發(fā)、存儲器擴展、監控、PCI總線(xiàn)接口等模塊組成。NIOSⅡ控制協(xié)議器件HS3282完成發(fā)送數據緩存和串并轉換(接收時(shí)串行轉換為并行,發(fā)送時(shí)并行轉換為串行),HS3182作為3282的驅動(dòng)器完成差分信號轉換及傳輸速率調節。PC機通過(guò)PCI總線(xiàn)與接口板通信,實(shí)現對發(fā)送、接收數據的處理和顯示。NIOSⅡ自帶的定時(shí)器可以設置為Watchdog。系統上電后啟動(dòng)運行,當主程序因外界干擾產(chǎn)生跑飛時(shí)對系統進(jìn)行軟件復位,增強了系統的抗干擾能力。系統整體結構圖如圖1所示。

3 硬件設計
3.1 ARINC429總線(xiàn)規范
ARINC429總線(xiàn)規范又稱(chēng)MARK33數字式信息傳輸系統(DITS:Digital Information Transfer System),它是專(zhuān)用于航空電子系統的航空工業(yè)標準,數據通過(guò)一對單向、差分耦合、雙絞屏蔽線(xiàn)傳輸,本質(zhì)屬于串行通訊范疇??偩€(xiàn)上只允許有一個(gè)發(fā)送器,但最多允許有20個(gè)接收器。數據字有25 bits和32 bits兩種,以雙極歸零碼的形式發(fā)送。數據脈沖有三種電平,即高電平,邏輯1(6.5 V~13 V);中電平(-2.5 V~2.5 V);低電平,邏輯O(-13 V~6.5 V)。中電平為發(fā)送自身時(shí)鐘脈沖。字與字之間以一定間隔(4位)分開(kāi),此間隔作為字同步。ARINC429的傳輸速率為12.5 kb/s(低速)或者100 kb/s(高速),傳輸協(xié)議比較簡(jiǎn)單,屬于點(diǎn)對點(diǎn)的傳輸協(xié)議。
3.2 HS3282與HS3182接口電路
HS3282和HS3182是美國Harris公司推出的高性能CMOS總線(xiàn)接口電路,能夠滿(mǎn)足ARINC429總線(xiàn)的規范要求及類(lèi)似的編碼定時(shí)多路串行數據傳輸協(xié)議。目前,絕大多數ARINC429總線(xiàn)接口電路都由它們來(lái)實(shí)現。HS3282是由兩個(gè)接收器和一個(gè)發(fā)送器組成,接收器和發(fā)送器分別獨立工作。兩個(gè)獨立的接收器直接與ARINC429總線(xiàn)相連,當接收到一個(gè)數據字后產(chǎn)生相應的讀請求信號,等待外部命令對數據的讀取。發(fā)送器主要由先進(jìn)先出(FIFO)存儲器和定時(shí)電路組成,FIFO存儲器可以保存8個(gè)32位數據字,定時(shí)電路按照ARINC規范的要求分隔每個(gè)Arinc字,并自動(dòng)產(chǎn)生奇偶校驗位。外部提供的工作時(shí)鐘一般為1 MHz,通過(guò)軟件控制可以使HS3282的接收和發(fā)送模塊工作在不同的速率(100kb/s或者12.5 kb/s),從而使器件的通用性更強。需要注意的是波特率不同時(shí),驅動(dòng)器HS2182的CA、CB端的外接電容也應該不同,高速傳輸(100 kb/s)時(shí),CA、CB端應該外接75 pF的電容,低速傳輸(12.5 kb/s)時(shí),CA、CB端則應外接300 pF的電容。HS3282和HS3182的連接示意圖如圖2所示。

3.3 PCI總線(xiàn)接口設計
PCI總線(xiàn)是Intel公司推出的一種高性能局部總線(xiàn),其數據總線(xiàn)為32位,且可擴展成64位,最大數據傳輸速率為128 Mb/s~256 Mb/s,遠遠大于ISA總線(xiàn)5 Mb/s的傳輸速度,是目前微機系統廣泛使用的一種總線(xiàn)。PCI總線(xiàn)協(xié)議比較復雜,一般采用兩種方式:
(1)采用可編程邏輯器件來(lái)設計控制接口。它的優(yōu)點(diǎn)是比較靈活,用戶(hù)可以根據自身的需要開(kāi)發(fā)出適合于特定功能的電路,而不必實(shí)現PCI的全部功能。但是控制接口設計難度較大,開(kāi)發(fā)周期長(cháng),成本高。
(2)采用專(zhuān)用PCI接口電路,例如AMCC公司的AMCCS5920,PLX公司的PCI9054等。通過(guò)專(zhuān)用電路可以實(shí)現完整的PCI主控模塊和目標模塊的功能。將復雜的PCI總線(xiàn)接口轉換為相對簡(jiǎn)單的用戶(hù)接口。用戶(hù)只要設計轉換后的總線(xiàn)接口即可。專(zhuān)用接口電路具有較低的成本和通用性,能夠有效降低接口設計的難度,縮短開(kāi)發(fā)時(shí)間,并能獲得較好的數據傳輸性能。
雖然Altera公司也為NIOSⅡ處理器提供了方便使用的PCI核,但是價(jià)格昂貴。本設計中采用PLX公司的專(zhuān)用接口電路PCI9054,使其工作在C模式下。為了降低開(kāi)發(fā)難度,采用一種較為簡(jiǎn)便的通信方式:在NIOSⅡ與PCI橋間插入雙口RAM,一端地址數據線(xiàn)接NIOSⅡ。另一端接PCI9054。通過(guò)雙口RAM轉接數據.將雙口RAM分為上下兩個(gè)半區,PCI橋與NIOSⅡ對雙口RAM交叉訪(fǎng)問(wèn),可以大大削弱PCI的時(shí)序要求。只需少量的信號通過(guò)FPGA來(lái)實(shí)現邏輯轉換.而無(wú)需總線(xiàn)仲裁,這種方式具有時(shí)序簡(jiǎn)單、控制信號較少、編程簡(jiǎn)單,應用方便等特點(diǎn)。
3.4 NIOSⅡ及外圍接口電路設計
ALtera公司的QuartusⅡ軟件是一個(gè)完整的多平臺設計環(huán)境。具有分析、綜合、布線(xiàn)、功耗估計等功能,能滿(mǎn)足各種特定設計的需要,為可編程片上系統(SoPC)提供全面的設計環(huán)境。采用其中的SoPC Builder可在圖形化界面內定制一個(gè)NIOSⅡ嵌入式系統.配合NIOSⅡ的軟件開(kāi)發(fā)工具NIOSⅡIDE,可以方便地開(kāi)發(fā)從硬件到軟件的完整系統,大大提高了設計效率。
硬件設計步驟如下:
1)在SoPC Builder軟件中定制CPU軟核。配置CPU硬件選項,如指令緩存等;增加外圍設備接口,如數據存儲器RAM接口、程序存儲器Flash接口、JTAG調試口、HS3282接口模塊等,添加外設如PCI總線(xiàn)接口、Watchdog等。
2)定義處理器上電復位地址。這里指定復位地址為外部Flash。系統在復位后會(huì )自動(dòng)從外部Flash將用戶(hù)指令讀取到片內RAM中執行。
3)添加用戶(hù)自定義指令,NIOSⅡ允許用戶(hù)定制多達256個(gè)自定義指令。采用自定義指令可以用硬件來(lái)實(shí)現計算量較大的指令。對于頻繁調用的指令可以有效地節省運算時(shí)間。本設計中將ARINC429數據的拼接和拆分用自定義指令來(lái)實(shí)現。
4)在FPGA內完成NIOSⅡ與HS3282接口模塊、NIOSⅡ與PCI總線(xiàn)的接口模塊及復位電路等。
5)系統編譯完成后使用QuartusⅡ 5.0軟件和ByteBlasterⅡ下載電纜通過(guò)PC機在線(xiàn)配置FPGA,軟件設計完成后若調試通過(guò)就可以將FPGA的配置數據下載到FPGA的配置器件中。
硬件框圖如圖3所示。

4 軟件設計
4.1 ARINC429數據的接收與發(fā)送
系統上電后應該先初始化HS3282。外部工作時(shí)鐘為1MHz,內部接收和發(fā)送速率可設置為外部時(shí)鐘的1/10或1/80,即100 kb/s或12.5 kb/s。設置ARINC429數據字格式為32位或者25位。采用中斷的方式接收數據,HS3282有兩個(gè)接收器,當有一個(gè)數據字到來(lái)后。相應的接收數據有效標志DR變?yōu)榈碗娖?向主控制器發(fā)送讀數據請求。讀取接收數據時(shí),將SEL置為0,然后給相應的EN引腳送入一定寬度的負脈沖信號,接收第一個(gè)16位字。此后把SEL置1,再給EN引腳送入一個(gè)負脈沖信號,接收第二個(gè)16位字。如果處理器忽略了該請求,則下一個(gè)接收數據會(huì )覆蓋前一個(gè)數據。HS3282的數據字為16位.因此一個(gè)ARINC數據字(32位)要分兩次才能讀出。發(fā)送數據時(shí)要先將數據寫(xiě)入HS3282的內部FIFO中,向FIFO寫(xiě)操作過(guò)程中,當PL1由低電平跳變到高電平時(shí).低16位數據寫(xiě)入FIFO的輸入寄存器的低16位;當PL2由低電平跳變到高電平時(shí).高16位數據寫(xiě)入FIFO輸入寄存器的高16位,同時(shí)將輸入寄存器的內容寫(xiě)入FIFO單元,連續操作8次便可將FIFO寫(xiě)滿(mǎn)。第一個(gè)數據字寫(xiě)入后TX/R由高變低。FIFO寫(xiě)滿(mǎn)后,通過(guò)啟動(dòng)發(fā)送使能信號ENTX.HS-3282便可將這8個(gè)數據字串行發(fā)送。當然也可以根據實(shí)際需要每次發(fā)送小于8個(gè)數據字。當FIFO為空時(shí),TX/R由低變高,禁止發(fā)送使能信號。向FIFO重新寫(xiě)入數據。
4.2 NIOSⅡ軟件開(kāi)發(fā)
NIOSⅡ的軟件開(kāi)發(fā)是在HAL (hardware abstraction layer)的基礎上進(jìn)行的。HAL系統庫是一個(gè)輕量級的運行環(huán)境.提供了與硬件通訊的簡(jiǎn)單設備驅動(dòng)程序。它還集成了ANSIC標準庫,這些API允許設計者用標準C函數(例如:printf,fopen,fwrite等)去存取設備。HAL類(lèi)似于A(yíng)RM系統中的BSP(board—support package),提供了一個(gè)一致的設備存取界面。SoPC Builder和NIOSII IDE緊密集成,在SoPC Builder生成硬件系統以后.NIOSⅡIDE能夠自動(dòng)生成對應的客戶(hù)HAL系統庫。更新硬件系統設置以后.NIOSⅡIDE能自動(dòng)更新HAL的驅動(dòng)設置。
軟件設計步驟如下:
1)在NIOSⅡIDE中創(chuàng )建軟件項目,NIOSⅡIDE會(huì )根據用戶(hù)在SoPC Builder中的硬件配置自動(dòng)生成用戶(hù)HAL系統庫.如系統頭文件和初始化文件等。
2)利用用戶(hù)HAL系統庫在NIOSⅡIDE開(kāi)發(fā)環(huán)境下編寫(xiě)程序源代碼C/C++程序,編譯調試代碼,調試完畢后用NIOSⅡIDE提供的Flash軟件Flash Programmer將生成的可執行文件燒寫(xiě)到Flash中。
在FPGA產(chǎn)品開(kāi)發(fā)中嵌入NIOSⅡ軟核微處理器具有高度集成的特點(diǎn)。本設計不僅在FPGA內集成了一個(gè)CPU,而且集成了CPU周邊的硬件邏輯和外部設備接口,以及整個(gè)系統設計的邏輯譯碼電路。達到高度集成的目的。本系統的特點(diǎn)是:
1)NIOSⅡ嵌入式微處理器成本低。開(kāi)發(fā)周期短,提高了產(chǎn)品的性?xún)r(jià)比和研發(fā)速度。
2)采用可編程邏輯器件使系統具有可升級和可擴展性,不僅可以更改FPGA的內部設計.還可以對NIOSⅡ的軟件進(jìn)行更新升級,靈活地滿(mǎn)足不同的需求。
5 結束語(yǔ)
采用SoPC開(kāi)發(fā)產(chǎn)品可縮短開(kāi)發(fā)時(shí)間,增加系統的靈活性,減小PCB板的體積和布線(xiàn)難度,其設計方式正在受到越來(lái)越多設計者的重視。本文介紹的系統達到了預期目的,完成了基于NIOSⅡ軟核微處理器的應用設計,可以很方便的應用于PCI總線(xiàn)微處理器中。隨著(zhù)新一代NIOS軟核處理器的推出。嵌入式系統的性能將更加強大,基于NIOSⅡ的開(kāi)發(fā)將繼續推進(jìn)系統在各個(gè)技術(shù)領(lǐng)域的應用和技術(shù)的創(chuàng )新。
評論