摘 要:提出了一種利用FPGA技術(shù)解決ARINC429通信的實(shí)現(xiàn)方案,該方案不僅使國(guó)內(nèi)的ARINC429通信設(shè)備擺脫了對(duì)國(guó)外ASIC電路的依賴,還降低了設(shè)備成本,并且克服了國(guó)外ASIC電路的不足,實(shí)現(xiàn)了任意長(zhǎng)度數(shù)據(jù)幀的群收和群發(fā)功能,具有較好的應(yīng)用前景。利用該方案研制的ARINC429數(shù)據(jù)通信卡,已成功應(yīng)用于空空導(dǎo)彈測(cè)控設(shè)備中。
關(guān)鍵詞:FPGA;ARINC429;VHDL語(yǔ)言;ASIC電路
中圖分類號(hào):TN919文獻(xiàn)標(biāo)識(shí)碼:B文章編號(hào):1004373X(2008)1901003
Realization of ARINC429 Communications Based on FPGA Technology
LUO Yanqiang,CHEN Lei
(China Airborne Missile Academy,Luoyang,471009,China)
Abstract:A scheme for solving ARINC429 communications based on FPGA technology is proposed in this paper.This scheme not only gets rid of depending on overseas ASIC circuit,but also overcomes shortages of overseas ASIC circuit and achievesthe function of group-transmiting and group-receiving for any length data frame with cheap cost.Based on this scheme,ARINC429 communications card is developed which has been applied to the airborne missile test and control equipment successfully.
Keywords:FPGA;ARINC429;VHDL language;ASIC circuit
ARINC429規(guī)范是由美國(guó)航空電子工程學(xué)會(huì)(Airlines Electronic Engineering Committee)提出,主要用于航空電子系統(tǒng)之間數(shù)字信息交換的一種工業(yè)標(biāo)準(zhǔn)。目前ARINC429通信設(shè)備普遍采用美國(guó)Harris公司的ARINC429協(xié)議電路,該ASIC電路價(jià)格昂貴,同時(shí)數(shù)據(jù)接收只能單字緩存,數(shù)據(jù)發(fā)送最多支持連續(xù)8個(gè)字群發(fā),因而在數(shù)據(jù)幀群收和群發(fā)的應(yīng)用中增加了控制軟件實(shí)時(shí)性的要求。隨著微電子技術(shù)的快速發(fā)展,F(xiàn)PGA的規(guī)模正在成倍增長(zhǎng),而價(jià)格卻在大幅度下降,利用大規(guī)模、價(jià)廉的FPGA替代ASIC正在成為一種設(shè)計(jì)趨勢(shì)。在國(guó)防領(lǐng)域,這種替代設(shè)計(jì)在提高了產(chǎn)品性價(jià)比的同時(shí),還避免了西方國(guó)家在敏感領(lǐng)域?qū)?guó)內(nèi)的器材禁運(yùn)。本文所討論的內(nèi)容就是基于FPGA技術(shù)實(shí)現(xiàn)ARINC429數(shù)據(jù)通信,該方案克服了專用協(xié)議電路的不足,實(shí)現(xiàn)了任意長(zhǎng)度數(shù)據(jù)幀的群收和群發(fā)功能。
1 實(shí)現(xiàn)方案
ARINC429通信包括數(shù)據(jù)接收和發(fā)送兩個(gè)完全獨(dú)立的過(guò)程,分別由各自模塊完成相應(yīng)的功能。
1.1 接收功能實(shí)現(xiàn)方案
ARINC429總線數(shù)據(jù)是一種雙極性歸零碼型,分A、B兩路信號(hào)差分輸入。利用光耦將差分信號(hào)分離為兩路TTL信號(hào)DataA和DataB,如圖1所示。進(jìn)一步分析DataA和DataB兩路信號(hào)不難發(fā)現(xiàn):它們不僅包含“0”、“1”碼元信息,還包含位時(shí)鐘信息及數(shù)據(jù)字和數(shù)據(jù)幀結(jié)束信息。接收模塊就是從這兩路信號(hào)中提取必要的信息,從而分離出每一個(gè)數(shù)據(jù)字和數(shù)據(jù)幀,并轉(zhuǎn)化為易于計(jì)算機(jī)讀取的并行數(shù)據(jù)。本設(shè)計(jì)利用FPGA內(nèi)部的RAM作為接收緩沖區(qū),完成數(shù)據(jù)的單字接收或多字群收,緩沖區(qū)的深度決定最大群收數(shù)據(jù)幀大小。
接收電路組成如圖2所示。外部時(shí)鐘是數(shù)倍于輸入數(shù)據(jù)速率的高倍時(shí)鐘,用于捕捉DataA和DataB信號(hào)最穩(wěn)定有效的中間時(shí)刻,作為觸發(fā)器置數(shù)、清零的同步時(shí)鐘輸入。觸發(fā)器的輸出即為所接收的429數(shù)據(jù)串形電平碼,經(jīng)串并轉(zhuǎn)換后形成并行數(shù)據(jù)。字檢測(cè)電路判別接收到的429數(shù)據(jù)是否完整,若完整,則依次寫入接收緩沖區(qū)內(nèi),同時(shí)輸出字接收結(jié)束標(biāo)志信息,否則,丟棄該不完整數(shù)據(jù)。幀檢測(cè)電路監(jiān)測(cè)輸入數(shù)據(jù)空閑位是否超出指定值,若超出,即判斷為群收數(shù)據(jù)幀接收結(jié)束,并輸出該信息。外部設(shè)備可以利用這兩個(gè)標(biāo)志實(shí)時(shí)從緩沖區(qū)讀取數(shù)據(jù)。
字/幀檢測(cè)電路的設(shè)計(jì)借鑒了計(jì)算機(jī)看門狗原理:利用分離出的輸入數(shù)據(jù)位時(shí)鐘作為計(jì)數(shù)器的清零脈沖,當(dāng)有數(shù)據(jù)輸入時(shí),該計(jì)數(shù)器被位時(shí)鐘信號(hào)定時(shí)清零;沒(méi)有輸入數(shù)據(jù)時(shí)也沒(méi)有位時(shí)鐘,計(jì)數(shù)值不被清零,并累加到設(shè)定的門限值,由此檢測(cè)出字/幀結(jié)束狀態(tài)。下面列出字/幀檢測(cè)模塊的VHDL語(yǔ)言實(shí)現(xiàn)程序:
…
constant N1,N2:integer;--定義字間隔和幀間隔的門限值
begin
process(clk,clr,rbclk)
variable count:integer range 0 to N2;
begin
if (clr=′1′) then count:=0;WordEnd<=′0′;BlockEnd<=′0′;
--初始化字結(jié)束標(biāo)志信號(hào)WordEnd和幀結(jié)束標(biāo)志信號(hào)BlockEnd
elsif(clk=′1′ and clk′event) then
-- 有接收數(shù)據(jù)位時(shí)鐘rbclk時(shí),計(jì)數(shù)值清零,否則計(jì)數(shù)值累加
if rbclk=′0′ then
count:=count+1;
else count:=0;
end if;
if count=N1 then WordEnd <=′1′;-- 計(jì)數(shù)值到達(dá)字間隔門限值時(shí)輸出字結(jié)束標(biāo)志
elsif count=N2 then count:=N2;BlockEnd <=′1′;
-- 計(jì)數(shù)值到達(dá)幀間隔門限值時(shí)輸出數(shù)據(jù)幀結(jié)束標(biāo)志
else WordEnd <=′0′;BlockEnd <=′0′;
end if;
end if;
end process;
…
從以上程序可以看出,在接收緩沖區(qū)容量范圍內(nèi),電路對(duì)數(shù)據(jù)幀的大小完全自適應(yīng),由于引入外部高倍時(shí)鐘,允許輸入數(shù)據(jù)速率存在一定范圍的偏差。
1.2 發(fā)送功能實(shí)現(xiàn)方案
利用FPGA內(nèi)部的另一段RAM作為發(fā)送緩沖區(qū),429數(shù)據(jù)可以單字發(fā)送或數(shù)據(jù)幀群發(fā),群發(fā)數(shù)據(jù)幀的大小取決于發(fā)送緩沖區(qū)的深度。外部設(shè)備將待發(fā)送的數(shù)據(jù)寫入發(fā)送緩沖區(qū),然后向FPGA寫控制字啟動(dòng)或停止發(fā)送。在發(fā)送過(guò)程中,電路同時(shí)輸出字輸出結(jié)束和幀輸出結(jié)束標(biāo)志信息,外部設(shè)備利用此信息可以實(shí)時(shí)更新發(fā)送內(nèi)容。奇偶校驗(yàn)電路自動(dòng)判別輸出位的奇偶狀態(tài),并將最后形成的奇偶校驗(yàn)位填入每個(gè)字的最后一位。字/幀間隔形成電路在輸出數(shù)據(jù)字與字之間形成4位低電平間隔,數(shù)據(jù)幀之間保持零電平狀態(tài)。差分信號(hào)分離電路將發(fā)送數(shù)據(jù)按照設(shè)定速率形成兩路TTL電平差分信號(hào),最后經(jīng)外部電平變換電路形成符合ARINC429規(guī)范的數(shù)據(jù)格式輸出。發(fā)送電路組成框圖如圖3所示。
以上各模塊功能清晰,這里不再逐一詳述。下面討論差分信號(hào)分離電路的設(shè)計(jì)方案:圖4電路將并串轉(zhuǎn)換后的串行信號(hào)data和位時(shí)鐘bclk及字/幀間隔信號(hào)clk[CD#*2]1作為輸入,產(chǎn)生兩路差分信號(hào)。由于輸入信號(hào)在各自路徑存在不同延時(shí),輸出端信號(hào)429A和429B會(huì)產(chǎn)生競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象,因此不能直接作為輸出信號(hào)。本設(shè)計(jì)利用電路中的高倍時(shí)鐘消除競(jìng)爭(zhēng)冒險(xiǎn)的影響,如圖5所示,clk20為20倍位時(shí)鐘頻率的高倍時(shí)鐘,該電路可以消除寬度在兩個(gè)高倍時(shí)鐘周期以內(nèi)的尖脈沖信號(hào)。圖6為增加消除競(jìng)爭(zhēng)冒險(xiǎn)邏輯后輸出信號(hào)的時(shí)序仿真波形。
2 ARINC429數(shù)據(jù)通信卡設(shè)計(jì)
本方案FPGA選用Altera公司的FLEX10K20器件。利用FLEX10K20內(nèi)部嵌有6×2 048 b容量的RAM,平均分配作為ARINC429數(shù)據(jù)的接收和發(fā)送緩沖區(qū),這樣群收和群發(fā)的數(shù)據(jù)幀長(zhǎng)度最大可達(dá)192字(32 b/字)。筆者以本方案設(shè)計(jì)的FPGA電路為核心,研制成功基于PC總線的ARINC429通信卡。該卡的接收和發(fā)送位速率、字長(zhǎng)、數(shù)據(jù)幀大小、奇/偶校驗(yàn)和發(fā)送周期等參數(shù)可由軟件設(shè)定。由于FPGA承擔(dān)了數(shù)據(jù)通信中的實(shí)時(shí)控制任務(wù),因而對(duì)控制軟件的實(shí)時(shí)性沒(méi)有要求,也不需要增加任何板上微處理器控制。電路中所有接口邏輯和控制邏輯全部集成在一片F(xiàn)PGA內(nèi),F(xiàn)PGA外圍只需要光耦、電平變換電路等少量器件,實(shí)現(xiàn)了SoC(System on a Chip)片上系統(tǒng)。目前該電路正在應(yīng)用于空空導(dǎo)彈測(cè)控設(shè)備中。
3 結(jié) 語(yǔ)
本文提出的基于FPGA技術(shù)實(shí)現(xiàn)ARINC429通信的一種解決方案,克服了國(guó)外ASIC電路的不足,實(shí)現(xiàn)了任意長(zhǎng)度數(shù)據(jù)幀的群收和群發(fā)功能,提高了產(chǎn)品性價(jià)比。該方案在航空或民用ARINC429通信設(shè)備中具有較好的應(yīng)用前景。
參考文獻(xiàn)
[1]ARINC Specification 429-9.MARK33 Digital Information Transfer System[S].2000.
[2]M4K429RTx User′s Manual[R].Excalibur System Inc.2006
[3]Altera Corporation.FLEX10K Embedded Programmable Logic Device Family Data Sheet[R].2001.
[4]胡振華.VHDL與FPGA設(shè)計(jì)[M].北京:中國(guó)鐵道出版社,2003.
[5]于英民,于佳.計(jì)算機(jī)接口技術(shù)[M].北京:電子工業(yè)出版社,2004.
[6]王育堅(jiān).Visual C++面向?qū)ο缶幊探坛蹋跰].北京:清華大學(xué)出版社,2003.
[7]顧世哲,武君勝.ARINC429測(cè)試系統(tǒng)設(shè)計(jì)與總線數(shù)據(jù)描述方法研究[J].航空計(jì)算技術(shù),2006,36(3):22-24.
作者簡(jiǎn)介 羅艷強(qiáng) 男,1970年出生,河南信陽(yáng)人,高級(jí)工程師。研究方向?yàn)楹娇胀ㄐ畔到y(tǒng)設(shè)計(jì)。
陳 雷 男,1963年出生,安徽濉溪人,研究員。研究方向?yàn)橛?jì)算機(jī)系統(tǒng)設(shè)計(jì)與應(yīng)用。