曾鋒 馮宇



摘 要: 針對傳統(tǒng)ARINC429總線電路設計中采用的協(xié)議芯片的方式有擴展性差,占面積大的問題,提出一種基于FPGA的ARINC429協(xié)議電路設計。協(xié)議電路的設計分為接收電路設計和發(fā)送電路設計兩部分,并且對電路進行了仿真和驗證。協(xié)議電路可以通過配置模塊的I/O口,方便地對ARINC429總線通信的波特率、奇偶校驗等參數(shù)進行設置。該協(xié)議采用的獨立的收/發(fā)電路設計可以很方便地進行ARINC429總線通道的擴展。除FPGA外,電路外圍只需要使用總線驅(qū)動電路,從而大大地減少了電路面積。該協(xié)議電路設計通過嚴格的測試,已經(jīng)應用在實際的產(chǎn)品中。
關鍵詞: FPGA; ARINC429總線; 模塊配置; 電路設計
中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2015)18?0092?03
Abstract: For the design way based on ARINC429 protocol chip has poor expansibility and big occupied area in the traditional circuit design of ARINC429 bus, a ARINC429 protocol circuit design base on FPGA is proposed. The design of protocol circuit is divided into two parts (receiving circuit design and transmitting circuit design). The circuit was simulated and verified. Baud rate, parity check parameter and other parameters of the ARINC429 bus communication can be set easily by configuring the I/O interfaces of modules. The extension of ARINC429 bus channel can be realized conveniently by the independent transmitting circuit design and receiving circuit design adopted by this protocol. In addition to FPGA, the peripheral circuit only need to use the bus driver circuit, by which the circuit area is greatly reduced. The circuit design of this protocol has passed the strict test and was used in the products.
Keywords: FPGA; ARINC429 bus; module configuration; circuit design
ARINC429總線是航空電子系統(tǒng)中最常用的通信總線之一。ARINC429總線電路是通過ARINC429總線接收/發(fā)送協(xié)議芯片加驅(qū)動芯片來實現(xiàn)的。協(xié)議芯片占用板卡面積,且每個協(xié)議芯片接收/發(fā)送通道數(shù)量固定,當電路需要多個ARINC429總線通道時,硬件面積占用較大。隨著FPGA的大量應用,可通過在有FPGA的系統(tǒng)中,通過FPGA來實現(xiàn)ARINC429總線協(xié)議[1]。在FPGA中,通過設計通用的、可配置的ARINC429協(xié)議,可以方便地擴展ARINC429通信通道,減少ARINC429協(xié)議芯片的使用,縮小產(chǎn)品尺寸,并且通過配置ARINC429總線,可方便適用于各種要求的ARINC429通信。
1 方案設計
1.1 方案概述
本方案中基于FPGA的ARINC429協(xié)議分為兩部分:發(fā)送部分和接收部分。這兩部分協(xié)議獨立工作,接收協(xié)議和發(fā)送協(xié)議都可以通過對模塊I/O的配置,實現(xiàn)不同的波特率、奇偶校驗,數(shù)據(jù)格式等功能的設置。
由于ARINC429總線由兩條差分線構成,總線上的電平范圍為-5~5 V,見圖1的A(ARINC429),B(ARINC429)。該電平不能與FPGA直接進行接口[2],需要總線接口驅(qū)動芯片進行電平轉(zhuǎn)換后才能與FPGA進行接口。對應轉(zhuǎn)換后的TTL電平見圖1的A(TTL),B(TTL)[3]。
利用本協(xié)議方案的ARINC429的通信電路采用FPGA加外圍驅(qū)動電路的方式實現(xiàn),方案見圖2。其中ARINC429協(xié)議在FPGA內(nèi)部實現(xiàn),外圍使用驅(qū)動芯片,如HI?3182和DEI?1046。ARINC429協(xié)議中每一路的收/發(fā)協(xié)議搭配上一路對應的驅(qū)動芯片,就可以成為一個獨立的ARINC429收/發(fā)通道。
1.2 ARINC429發(fā)送部分
電路框圖如圖3所示,主要由發(fā)送狀態(tài)機、計數(shù)器、奇偶校驗、輸出控制等部分構成。電路CLK使用的是25 MHz時鐘,可以通過設置分頻電路的分頻系數(shù),使得電路工作在不同的ARINC429總線波特率下。
信號ENTX為電路工作的使能信號,“1”為使能發(fā)送功能;信號P為奇偶校驗位的選擇位,默認為“1”奇校驗。外部信號在進入狀態(tài)機前通過D觸發(fā)器進行時鐘同步。發(fā)送狀態(tài)機控制計數(shù)器工作,計數(shù)器的結果返回狀態(tài)機作為狀態(tài)機的輸入控制狀態(tài)機的狀態(tài)跳轉(zhuǎn)。其中Bit計數(shù)器為數(shù)據(jù)位的計數(shù),Gap計數(shù)器為兩個數(shù)據(jù)之間的時間間隔計數(shù)。
發(fā)送狀態(tài)機是整個電路工作的核心。當狀態(tài)機判斷有數(shù)據(jù)需要發(fā)送時,先從數(shù)據(jù)緩沖區(qū)中取數(shù),并存到移位寄存器中。然后根據(jù)預先分頻的時鐘頻率逐位右移輸出。當輸出位為1時,A_OUT和B_OUT分別輸出1和0;輸出位為0時,A_OUT和B_OUT分別輸出0和1。根據(jù)ARINC429的協(xié)議,每一位數(shù)據(jù)前半個周期為數(shù)據(jù),后半個周期輸出同時為0。同時,每移出一位數(shù)據(jù),奇偶校驗電路就會統(tǒng)計移出的“1”的個數(shù),當移位寄存器移到最后一位的時候,發(fā)送狀態(tài)機選擇奇偶校驗電路生成的校驗位進行輸出。發(fā)送完32位數(shù)據(jù)后,最后會等待4個位時的時間,即“GAP”的時間,狀態(tài)機再回到初始狀態(tài)。狀態(tài)機狀態(tài)轉(zhuǎn)換圖見圖4。
1.3 ARINC429接收部分
接收協(xié)議電路如圖5所示,主要由接收狀態(tài)機、計數(shù)器和奇偶校驗等部分組成。接收部分的分頻電路與發(fā)送的電路相同,信號P為奇偶校驗位的選擇位。信號A_IN和信號B_IN 為輸入的ARINC429的TTL電平。信號在進入狀態(tài)機前通過D觸發(fā)器進行時鐘同步。
發(fā)送狀態(tài)機判斷信號A_IN和信號B_IN起始位,開始啟動工作,并對信號A_IN和信號B_IN進行采樣,判斷數(shù)據(jù),完成后將數(shù)據(jù)存入移位寄存器最低位,同時移位寄存器往高位移1位。待Bit計數(shù)器增加后,狀態(tài)機跳回到采樣狀態(tài),進行下一位的數(shù)據(jù)采樣。同時狀態(tài)機控制奇偶校驗電路工作,奇偶校驗電路根據(jù)接收到的值進行“1”的個數(shù)統(tǒng)計。采樣完第32位數(shù)據(jù)時,狀態(tài)機對奇偶校驗位進行判斷,根據(jù)之前奇偶校驗電路的統(tǒng)計結果和采樣到的數(shù)據(jù)進行對比,判斷數(shù)據(jù)是否正確。判斷正確將整個數(shù)據(jù)存入數(shù)據(jù)緩沖區(qū);不正確,則報故障。數(shù)據(jù)接收完成后,置信號Data_Ready有效。發(fā)送狀態(tài)機狀態(tài)轉(zhuǎn)換圖見圖6。
電路經(jīng)分頻后的采樣頻率為ARINC429數(shù)據(jù)傳輸波特率的10倍。接收數(shù)據(jù)時,當兩個差分輸入不相同時,則認為開始接收數(shù)據(jù)。數(shù)據(jù)的每個bit進行3次采樣,如圖7所示。只有三次采樣都符合ARINC429的TTL電平才認為數(shù)據(jù)有效,否則認為數(shù)據(jù)出錯。采樣 1和采樣2對數(shù)據(jù)進行采樣確認,只有2次采樣相同,數(shù)據(jù)才會被采用,存入移位寄存器。采樣3是對數(shù)據(jù)位之間的間隔進行采樣,只有A_IN和B_IN全0才認為正確。以上任何一次采樣出現(xiàn)錯誤,則認為數(shù)據(jù)錯誤。
2 設計仿真
發(fā)送部分的仿真圖如圖8所示(部分截圖),通過編寫testbench對發(fā)送數(shù)據(jù)緩沖區(qū)寫入0~128,寫入數(shù)據(jù)的時鐘為系統(tǒng)時鐘25 MHz,設置ARINC429總線發(fā)送波特率為100 Kb/s,奇校驗,發(fā)送使能。可以看到A_OUT和B_OUT輸出與預期波形一致,確認數(shù)據(jù)發(fā)送正確。
將ARINC429總線發(fā)送的串行數(shù)據(jù)引入串行數(shù)據(jù)輸入端,如圖9所示;讀取接收緩沖RAM的數(shù)據(jù)如圖10所示。輸入的ARINC429總線數(shù)據(jù)波特率為100 Kb/s,輸入數(shù)據(jù)為0~128。從數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù),得到數(shù)據(jù)為0~128,與輸入數(shù)據(jù)一致,數(shù)據(jù)接收正確。
3 電路驗證和結論
本文ARINC429協(xié)議電路的設計基于VerilogHDL語言[4],F(xiàn)PGA型號使用了ACTEL的APA600[5],該電路成功地應用在多個型號產(chǎn)品上,并且隨產(chǎn)品通過了嚴格的測試和驗證?;贔PGA的ARINC429協(xié)議的設計極大地方便了PCB電路的設計,節(jié)省了板卡面積,方便通信通道的擴展。此協(xié)議還可以通過簡單的設置,實現(xiàn)數(shù)據(jù)的交叉,LABEL的識別等功能,具有良好的實用價值。
參考文獻
[1] 王春雷,羅陽,朱智強.某專用429總線接口協(xié)議的FPGA實現(xiàn)[J].航空兵器,2012(1):41?43.
[2] 趙顯紅,何谷惠.基于FPGA的ARINC429機載總線接口[J].現(xiàn)代電子技術,2008,31(10):93?95.
[3] ARINC公司.ARINC429傳輸規(guī)范[EB/OL]. [2012?02?09].http://wenku.baidu.com.
[4] 夏宇聞.Verilog數(shù)字系統(tǒng)設計教程[M].2版.北京:北京航空航天大學出版社,2008.
[5] Actel Corporation. ProASIC?PLUS flash family FPGAs [DB/OL]. [2003?05?30]. http://www.actel.com.
[6] 崔海青,李宏,劉博,等.一種多通道ARINC429總線收發(fā)容錯方法的研究[J].現(xiàn)代電子技術,2013,36(6):125?128.