范毅 李明華
【摘要】 ? ?本文介紹了一種基于FPGA的PCI接口ARINC429適配器的設(shè)計(jì)、實(shí)現(xiàn),采用PLX提供的基礎(chǔ)驅(qū)動(dòng)封裝了功能函數(shù)庫(kù),并在Labview下進(jìn)行了測(cè)試。
【關(guān)鍵字】 ? ?ARINC429 ? ?PCI ? ?FPGA ? ?PLX ? ?Labview
Design and implementation of PCI interface ARINC429 adapter based on FPGA
FAN Yi,LI Ming Hua
(Xian Institute of Aeronautical Computing Technology for Aeronautical Industry,Xian Shannxi 710068 China)
Abstract:This paper introduces the design and implementation of a PCI interface ARINC429 adapter based on FPGA,F(xiàn)unctional libraries are encapsulated using the underlying drivers provided by PLX and tested under Labview.
Keywords:ARINC429、PCI、FPGA、PLX、Labview
一、概述
為實(shí)現(xiàn)ARINC429總線的自動(dòng)測(cè)試,需要具有大數(shù)據(jù)量連續(xù)發(fā)送和自動(dòng)接收能力的模塊,且該模塊應(yīng)便于與測(cè)試上位系統(tǒng)連接。
模塊實(shí)現(xiàn)8路ARINC-429信號(hào)的接收和4路ARINC-429信號(hào)的發(fā)送。同時(shí)為每路ARINC-429信號(hào)提供1K幀(1幀32byte)的循環(huán)緩沖區(qū)。
二、總體思路
考慮實(shí)現(xiàn)的便捷和可靠,ARINC429部分采用標(biāo)準(zhǔn)協(xié)議芯片實(shí)現(xiàn),采用標(biāo)準(zhǔn)協(xié)議芯片實(shí)現(xiàn)可避免因數(shù)據(jù)編碼等原因影響測(cè)試可靠性,縮短開(kāi)發(fā)和調(diào)試周期;與上位機(jī)采用PCI接口連接,接口使用專用橋接芯片;內(nèi)部數(shù)據(jù)流控制采用FPGA實(shí)現(xiàn)。
2.1 ARINC429總線
ARINC429總線協(xié)議是美國(guó)航空電子工程委員會(huì)(Airlines Engineering Committee)于1977年7月提出的,并于同年同月發(fā)表并獲得批準(zhǔn)使用。它的全稱是數(shù)字式 信息傳輸系統(tǒng)DITS。協(xié)議標(biāo)準(zhǔn)規(guī)定了航空電子設(shè)備及有關(guān)系統(tǒng)間的數(shù)字信息傳輸要求。ARINC429廣泛應(yīng)用在先進(jìn)的民航客機(jī)以及俄制軍用飛機(jī)中。我國(guó)與之對(duì)應(yīng)的標(biāo)準(zhǔn)是HB6096-SZ-01。
ARINC429總線結(jié)構(gòu)簡(jiǎn)單、性能穩(wěn)定,抗干擾性強(qiáng)。最大的優(yōu)勢(shì)在于可靠性高,這是由于非集中控制、傳輸可靠、錯(cuò)誤隔離性好。
2.2 ?PCI總線
PCI是Peripheral Component Interconnect(外設(shè)部件互連標(biāo)準(zhǔn))的縮寫(xiě),使用較為廣泛。PCI總線是一種同步的獨(dú)立于處理器的32位或64位局部總線,最高工作頻率為33MHz,峰值速度在32位時(shí)為132MB/s,64位時(shí)為264MB/s,總線規(guī)范由PCISIG發(fā)布。ISA總線相比,PCI總線具有高速、支持即插即用、可靠性較高、擴(kuò)展性較好等顯著的優(yōu)點(diǎn),但也存在規(guī)范嚴(yán)格、使用復(fù)雜等缺點(diǎn),因此在實(shí)際設(shè)計(jì)和開(kāi)發(fā)過(guò)程中,一般使用專用芯片實(shí)現(xiàn)從PCI總線到Local Bus的轉(zhuǎn)換,從而簡(jiǎn)化開(kāi)發(fā)工作,也可使用對(duì)應(yīng)的IP核,進(jìn)一步縮減期間數(shù)量,提高集成度,目前主流FPGA廠商都提供了免費(fèi)的PCI橋IP核。
2.3 FPGA
FPGA(Field Programmable Gate Array)是在PAL、GAL等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。FPGA在復(fù)雜時(shí)序邏輯的實(shí)現(xiàn)上具有先天的優(yōu)勢(shì),同時(shí)具備硬件電路并行運(yùn)行的特點(diǎn)。
三、系統(tǒng)結(jié)構(gòu)及模塊功能設(shè)計(jì)
3.1系統(tǒng)結(jié)構(gòu)
系統(tǒng)硬件框圖如圖1所示,由3個(gè)模塊組成,分別為PCI接口(包括PCI橋接芯片和配置芯片)、FPGA、SRAM、ARINC429接口(包括ARINC429協(xié)議芯片和ARINC429電平芯片)。
PCI接口接收上位發(fā)來(lái)的配置和控制數(shù)據(jù),并傳遞給FPGA內(nèi)的控制邏輯;FPGA內(nèi)的邏輯根據(jù)配置和控制數(shù)據(jù)進(jìn)行ARINC429協(xié)議芯片的初始化,并對(duì)接收和發(fā)送緩沖區(qū)進(jìn)行初始化;需要發(fā)送數(shù)據(jù)時(shí),上位將需要發(fā)送的數(shù)據(jù)寫(xiě)入發(fā)送緩沖,并通過(guò)控制寄存器啟動(dòng)發(fā)送,通過(guò)讀取發(fā)送狀寄存器了解發(fā)送情況,通過(guò)控制寄存器可實(shí)現(xiàn)循環(huán)和單個(gè)數(shù)據(jù)重復(fù)發(fā)送;接收在完成配置后根據(jù)ARINC429協(xié)議芯片的接收中斷自動(dòng)進(jìn)行,并按照先后順序存儲(chǔ)在接收緩沖區(qū),模塊不產(chǎn)生中斷,上位機(jī)可讀取接收狀態(tài)寄存器了解接收情況,邏輯采用VerilogHDL設(shè)計(jì)實(shí)現(xiàn)[1]。
本設(shè)計(jì)中,PCI橋接芯片選擇Broadcom(原PLX)公司的PCI9052,該芯片為PCI從設(shè)備接口橋芯片,可方便的將PCI轉(zhuǎn)化為ISA(Local Bus),PCI總線符合PCI 規(guī)范r2.1;FPGA使用Xilinx公司Spartan6系列的XC6SLX25(FT);ARINC429的協(xié)議芯片時(shí)使用4片HoltIC公司的HI3282,每片HI3282集成1路發(fā)送和2路接收,自帶接收電平轉(zhuǎn)換,發(fā)送電平轉(zhuǎn)換芯片使用HI-8585。
3.2 FPGA內(nèi)功能劃分
如圖2所示,F(xiàn)PGA內(nèi)邏輯分為L(zhǎng)ocal Bus控制邏輯、接收邏輯、發(fā)送邏輯、ARINC429協(xié)議芯片控制邏輯和SRAM控制邏輯。
3.2.1 Local Bus控制邏輯
Local Bus控制邏輯內(nèi)包含Local Bus信號(hào)的譯碼和系統(tǒng)控制和狀態(tài)寄存器,譯碼用于選定內(nèi)部邏輯功能,系統(tǒng)控制和狀態(tài)寄存器定義如表1和表2。
3.2.2發(fā)送邏輯
發(fā)送邏輯根據(jù)發(fā)送控制寄存器啟動(dòng)發(fā)送,并將發(fā)送相關(guān)的狀態(tài)(主要是ARINC429協(xié)議芯片接收相關(guān)輸出)保存掃發(fā)送狀態(tài)寄存器。啟動(dòng)發(fā)送后,根據(jù)發(fā)送緩沖區(qū)地址和狀態(tài)寄存器內(nèi)相關(guān)位,自動(dòng)完成從SRAM讀取數(shù)據(jù)、寫(xiě)入HI-3282發(fā)送緩沖、等待發(fā)送完成、再次取數(shù)(地址指針可通過(guò)寄存器獲得)的循環(huán),直至完成緩沖區(qū)內(nèi)所有數(shù)據(jù)發(fā)送。
上位機(jī)在發(fā)送前首先需要完成ARINC429協(xié)議芯片的初始化,初始化由Local Bus控制邏輯直接操作ARINC429協(xié)議芯片完成。完成初始化后,設(shè)定發(fā)送緩沖區(qū)起始地址及大?。ㄍㄟ^(guò)寄存器),隨后將數(shù)據(jù)寫(xiě)入緩沖區(qū)對(duì)應(yīng)地址(完成緩沖區(qū)起始地址及大小設(shè)置后,設(shè)置立即生效),通過(guò)設(shè)置發(fā)送控制寄存器啟動(dòng)發(fā)送。涉及的寄存器見(jiàn)下表。
3.2.3 接收邏輯
接收邏輯監(jiān)控4片HI3282上8個(gè)通道的Drin信號(hào),當(dāng)該信號(hào)有效時(shí),啟動(dòng)自動(dòng)接收邏輯,將ARINC429協(xié)議芯片內(nèi)的數(shù)據(jù)轉(zhuǎn)存至SRAM。
在使用自動(dòng)接收邏輯前,需配置接收緩沖區(qū)起始地址及大小。
3.2.4 SRAM控制邏輯
SRAM控制邏輯完成訪問(wèn)仲裁和SRAM控制。Local Bus控制邏輯、接收邏輯、發(fā)送邏輯均可訪問(wèn)SRAM,優(yōu)先級(jí)從高到低為:接收邏輯、發(fā)送邏輯、Local Bus控制邏輯,當(dāng)高優(yōu)先級(jí)邏輯訪問(wèn)時(shí),低優(yōu)先級(jí)的訪問(wèn)將被忽略,因此在進(jìn)行操作前應(yīng)確認(rèn)模塊工作狀態(tài),以免出現(xiàn)無(wú)效操作。
3.3 PCI總線接口
PCI9052可通過(guò)串行EEPROM配置,也可由上位機(jī)進(jìn)行配置。
本設(shè)計(jì)中結(jié)合兩種方式,EEPROM用于模塊識(shí)別,上位機(jī)對(duì)Local Bus相關(guān)寄存器進(jìn)行配置,以方便軟件編程和調(diào)試。
3.4 ARINC429總線接口
由4片HI3282和4片HI8585組成,ARINC429協(xié)議芯片完全由FPGA控制,包括基礎(chǔ)時(shí)鐘及復(fù)位信號(hào)。
四、驅(qū)動(dòng)開(kāi)發(fā)與模塊測(cè)試
4.1 驅(qū)動(dòng)軟件
PCI9052提供配套的軟件驅(qū)動(dòng)包(內(nèi)含調(diào)試工具PLXmon),在進(jìn)行快速測(cè)試和驅(qū)動(dòng)軟件開(kāi)發(fā)時(shí),可使用該工具包進(jìn)行[2]。PLXmon軟件界面見(jiàn)下圖3。
軟件開(kāi)發(fā)包提供標(biāo)準(zhǔn)PCI函數(shù)庫(kù)(針對(duì)不同類型的橋片有不同函數(shù)),通過(guò)調(diào)用標(biāo)準(zhǔn)函數(shù)可快速實(shí)現(xiàn)功能。下表6是用于操作模塊的專用函數(shù)[3]。
4.2 系統(tǒng)測(cè)試
測(cè)試分為兩步,首先進(jìn)行自回繞測(cè)試,自發(fā)自收以驗(yàn)證功能;隨后與目標(biāo)被測(cè)件進(jìn)行連接,進(jìn)行連續(xù)接收測(cè)試(測(cè)試中只需接收)。為方便測(cè)試,使用Labview編制測(cè)試用軟件,監(jiān)控測(cè)試并記錄數(shù)據(jù)[4]。軟件界面如下圖。
測(cè)試項(xiàng)及結(jié)果如下表7。
五、結(jié)束語(yǔ)
本文基于FPGA設(shè)計(jì)了可自動(dòng)大量緩存接收數(shù)據(jù)的PCI接口ARINC429總線適配器。經(jīng)過(guò)長(zhǎng)時(shí)間測(cè)試,模塊工作穩(wěn)定,自動(dòng)接收功能可大量緩存接收數(shù)據(jù),為自動(dòng)測(cè)試ARINC429 總線提供了便利。
參考文獻(xiàn)
[1] [美]Samir Palnitkar,Verilog HDL數(shù)字設(shè)計(jì)與綜合(第二版),電子工業(yè)出版社,2004.
[2] 丁高磊、王新艷,PLX9052的配置及驅(qū)動(dòng)開(kāi)發(fā),計(jì)算機(jī)與信息技術(shù),2007(22),51-52.
[3] 熊松,基于PCI總線的數(shù)據(jù)采集卡的實(shí)現(xiàn),東南大學(xué),碩士學(xué)位論文,20020601.
[4] 嚴(yán)雨、夏寧,Labview入門(mén)與實(shí)戰(zhàn)開(kāi)發(fā)100例(第三版),電子工業(yè)出版社,2017.
范毅,19790620,男,陜西咸陽(yáng),漢;大學(xué)本科;工程師;計(jì)算機(jī)應(yīng)用