文/海灝 夏喜龍
ARINC429規(guī)范由美國航空電子工程委員會(huì)(Airline Electronic Engineering Commission,AEEC) 制定,美國航空無線電公司(Aeronautical Radio Inc.,ARINC)出版的一種民用飛機(jī)機(jī)載總線規(guī)范。其全稱為“數(shù)字信息傳輸系統(tǒng)”(Digital Information Transfer System,DITS),該標(biāo)準(zhǔn)數(shù)據(jù)資源豐富,數(shù)據(jù)精度高,在當(dāng)代航空及其他設(shè)備中得到廣泛應(yīng)用。
ARINC429總線是一種串行標(biāo)準(zhǔn),為面向接口型的單向廣播式傳輸總線,調(diào)制方式采用雙極型歸零三態(tài)碼方式。
ARINC429總線傳輸?shù)幕締挝皇亲?,每個(gè)字由32位組成,1-8位是標(biāo)號(hào)位(LABEL),標(biāo)記出包括在這個(gè)傳送字內(nèi)的信息的類型。
現(xiàn)有傳統(tǒng)的ARINC429總線數(shù)據(jù)接收處理和發(fā)送傳輸?shù)挠布?shí)現(xiàn)方法如圖1所示。CPU負(fù)責(zé)ARINC 429專用協(xié)議芯片的工作模式控制、提取接收數(shù)據(jù)、數(shù)據(jù)解析及發(fā)送數(shù)據(jù)設(shè)置;ARINC429專用協(xié)議芯片按照CPU設(shè)置將總線串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),將來自CPU的數(shù)據(jù)進(jìn)行編碼發(fā)送;驅(qū)動(dòng)組件主要功能將專用協(xié)議芯片的信號(hào)與總線之間進(jìn)行電氣隔離及轉(zhuǎn)換;FPGA/CPLD一般用于邏輯控制,為可選項(xiàng)。
此外,還有一些類似的實(shí)現(xiàn)方式,將ARINC429總線數(shù)據(jù)轉(zhuǎn)換功能用FPGA實(shí)現(xiàn),數(shù)據(jù)處理靈活性及可擴(kuò)展性上更便于數(shù)據(jù)交互。
圖1:ARINC429總線數(shù)據(jù)處理傳統(tǒng)硬件設(shè)計(jì)框圖
圖2:系統(tǒng)總體架構(gòu)圖
現(xiàn)有多種技術(shù)實(shí)現(xiàn)方法在低速、單LABEL號(hào)(每種LABEL對(duì)應(yīng)一種數(shù)據(jù)類型)接收應(yīng)用中問題不大,但在高速、多LABEL號(hào)特別是相鄰數(shù)據(jù)間隔時(shí)間較小的情況下,容易造成數(shù)據(jù)丟失。此外,由于CPU需要依次接收處理總線數(shù)據(jù),包括本機(jī)不需要的數(shù)據(jù),因此造成處理資源的浪費(fèi)。
FPGA技術(shù)發(fā)展迅速、資源豐富、使用方便,具有更大并行度、可定制、可重構(gòu)等優(yōu)勢(shì)。本設(shè)計(jì)基于FPGA和CPU實(shí)現(xiàn),利用FPGA并行處理、處理速度高的特點(diǎn),實(shí)現(xiàn)硬件過濾、編解碼等工作,利用CPU強(qiáng)大的運(yùn)算能力實(shí)現(xiàn)數(shù)據(jù)解析。本設(shè)計(jì)系統(tǒng)總體框架如圖2所示。
各模塊功能如下:
(1)CPU:通過總線控制發(fā)射編碼的通道、速率及發(fā)送信息;控制接收解碼的速率、奇偶校驗(yàn)、LABEL號(hào)過濾,同時(shí)從總線上提取接收數(shù)據(jù)進(jìn)行解析,設(shè)計(jì)選用STM32F746VGT6;
(2)FPGA編解碼:按CPU設(shè)置進(jìn)行編解碼,進(jìn)行LABEL硬件過濾,設(shè)計(jì)選用EP3C120F484I7N;
(3)接收驅(qū)動(dòng):將標(biāo)準(zhǔn)ARINC429信號(hào)轉(zhuǎn)換為3.3VTTL信號(hào),設(shè)計(jì)選用DEI1046;
(4)發(fā)送驅(qū)動(dòng):將3.3VTTL信號(hào)轉(zhuǎn)換為標(biāo)準(zhǔn)ARINC429信號(hào),設(shè)計(jì)選用4片DEI1070。
目前接收通道及發(fā)送通道都設(shè)計(jì)為4路,可根據(jù)需要進(jìn)一步擴(kuò)展。每路接收通道可設(shè)置為2種LABEL過濾。當(dāng)有更多LABEL過濾需求時(shí),可將多路合并,最多可過濾8個(gè)LABEL。同時(shí)也可以按照該架構(gòu)進(jìn)一步擴(kuò)充通道及LABEL過濾,以滿足更多需求。
當(dāng)收到接收數(shù)據(jù)時(shí):
(1)FPGA按照CPU設(shè)置的速率進(jìn)行譯碼;
(2)提取譯碼結(jié)果的LABEL進(jìn)行判斷,是否為本通道接收數(shù)據(jù),如果是,轉(zhuǎn)入下一步;
(3)將數(shù)據(jù)存入增加字頭、校驗(yàn)后存入FIFO。將數(shù)據(jù)指示標(biāo)志寫入接收中斷狀態(tài)寄存器,根據(jù)CPU設(shè)置是否將該標(biāo)志與中斷請(qǐng)求關(guān)聯(lián)。
(4)CPU采用中斷或查詢方式采集中斷狀態(tài)寄存器狀態(tài),當(dāng)發(fā)現(xiàn)有數(shù)據(jù)請(qǐng)求時(shí),依據(jù)優(yōu)先級(jí)讀取相應(yīng)通道信息并進(jìn)行解析。
當(dāng)需要發(fā)送數(shù)據(jù)時(shí):
(1)CPU將需要發(fā)送的字頭、通道、速率、數(shù)據(jù)內(nèi)容及校驗(yàn)數(shù)據(jù)按地址依次發(fā)送給FPGA;
(2)FPGA按照設(shè)置要求編碼并選擇相應(yīng)的通道發(fā)送。
編解碼單元為本系統(tǒng)的核心單元,本單元性能對(duì)系統(tǒng)性能有著重要的影響。
FPGA編解碼單元功能框圖如圖3所示,共有4個(gè)接收通道和4個(gè)發(fā)射通道。
4個(gè)接收通道采用同樣的結(jié)構(gòu),每個(gè)通道分為串并解碼、LABEL過濾及FIFO緩存部分:
(1)串并解碼:將串行數(shù)據(jù)按照接收速率轉(zhuǎn)化為并行數(shù)據(jù);
(2)LABEL過濾:將接收到的數(shù)據(jù)進(jìn)行過濾,如果LABEL號(hào)匹配,則將數(shù)據(jù)傳遞到緩存;
(3)FIFO緩存:將接收數(shù)據(jù)進(jìn)行緩存,設(shè)計(jì)為8級(jí)緩存,每級(jí)有6個(gè)字節(jié),分別包含接收字頭、接收數(shù)據(jù)及接收數(shù)據(jù)校驗(yàn)。
發(fā)射通道由8*7*8FIFO結(jié)構(gòu)及編碼及通道控制單元組成:
(1)FIFO緩存:將來自CPU的數(shù)據(jù)進(jìn)行緩存,緩存有8級(jí),每級(jí)有7個(gè)字節(jié),分別包含發(fā)送字頭、發(fā)送速率及通道選擇、發(fā)送數(shù)據(jù)(4個(gè)字節(jié))及數(shù)據(jù)校驗(yàn);
(2)編碼及通道控制單元:該單元按照FIFO數(shù)據(jù)將數(shù)據(jù)按速率配置及通道選擇編碼并選擇相應(yīng)通道發(fā)送。
本設(shè)計(jì)方案單個(gè)接收通道信號(hào)流及轉(zhuǎn)換如圖4所示,顯示多個(gè)ARINC429高速信號(hào)依次到達(dá)(間隔40us)時(shí),單個(gè)接收通道信號(hào)流及轉(zhuǎn)換過程。到達(dá)的信號(hào)含有目標(biāo)數(shù)據(jù)(LABEL號(hào)為207和244)及非目標(biāo)數(shù)據(jù)(LABEL號(hào)為203和205),可以看出,經(jīng)過LABEL過濾單元,濾除了第一組和第三組非目標(biāo)數(shù)據(jù),并且將目標(biāo)數(shù)據(jù)緩存在FIFO中。
按照ARINC429標(biāo)準(zhǔn),計(jì)算參數(shù)設(shè)定如下:
(1)波特率:100K BPS;
(2)數(shù)據(jù)刷新率(以“A”表示):100ms=0.1s;
(3)數(shù)據(jù)間隔:4個(gè)時(shí)鐘周期/40us;
(4)接收目標(biāo)數(shù)據(jù)(以“B”表示):2個(gè);
(5)單周期數(shù)據(jù)個(gè)數(shù):≥8個(gè);
(6)通道數(shù)目(以“C”表示):1個(gè)。
由于采用了LABEL過濾及接收FIFO技術(shù),計(jì)算時(shí)可不考慮波特率、數(shù)據(jù)間隔、單周期數(shù)據(jù)個(gè)數(shù)。
CPU應(yīng)在FIFO滿前將數(shù)據(jù)讀出,并處理完畢,則CPU處理速度要求由A、B、C及緩存級(jí)別決定(設(shè)計(jì)值為8),關(guān)系如下:
CPU處理速度=B*C/(A*8)=2*1/(0.1*8)=2.5次/S=400ms
在傳統(tǒng)技術(shù)條件下,對(duì)CPU的處理要求的影響參數(shù)為波特率及數(shù)據(jù)間隔,CPU處理速度要求為36個(gè)時(shí)鐘周期=360us。
處理要求差別為=400ms/360us=1111倍。
該設(shè)計(jì)方案已應(yīng)用于某型機(jī)載系統(tǒng),通過使用該設(shè)計(jì)技術(shù)處理高速ARINC429高度數(shù)據(jù),消除了原有的高度碼跳變的故障,提升了系統(tǒng)性能。
圖3:FPGA編解碼單元功能框圖
圖4:?jiǎn)蝹€(gè)接收通道信號(hào)流及轉(zhuǎn)換示意圖
本文詳述了一種基于FPGA的高速ARINC429數(shù)據(jù)處理方法,通過使用FPGA硬件過濾方法,結(jié)合FIFO結(jié)構(gòu),有效的降低了CPU負(fù)荷,消除了丟包現(xiàn)象,經(jīng)計(jì)算,綜合性能提升約1111倍。
該方法已成功應(yīng)用至某型機(jī)載平臺(tái),提升了ARINC429接收性能,該方法可推廣應(yīng)用在高速ARINC429通訊的相關(guān)平臺(tái)中。