許波強+袁維力+趙亞軍
【摘 要】本文簡要介紹了ARINC429總線和HI-3582總線控制器的特點,結(jié)合工程實際,給出了基于FPGA的ARINC429總線控制器HI-3582接口設(shè)計思路和方法。
【關(guān)鍵詞】 ARINC429總線;FPGA;狀態(tài)機
引言
ARINC429總線是美國航空無線電公司制定的民用航空數(shù)字總線傳輸標(biāo)準(zhǔn),它規(guī)定了使用該總線的航空電子設(shè)備的信息流向和基本數(shù)據(jù)字的格式。ARINC429總線為單向傳輸總線,信息只能從通信設(shè)備的發(fā)送口輸出,經(jīng)傳輸總線傳至與它相連的需要該信息的其他設(shè)備的接收口。在需要兩個通信設(shè)備間雙向傳輸時,則在每個方向各用一根獨立的傳輸總線。ARINC429通信采用雙極性歸零制的三態(tài)碼調(diào)制方式,具有接口方便、數(shù)據(jù)傳輸可靠的特點,目前已廣泛應(yīng)用于導(dǎo)航定位系統(tǒng)、通信系統(tǒng)等機載電子設(shè)備中。本文結(jié)合工程實際,介紹了HOLT公司推出的ARINC429總線控制器芯片HI-3582的特點,并給出了基于FPGA的接口設(shè)計思路和方法。
1 .HI-3582總線控制器簡介
HOLT INTEGRATED CIRCUITS公司生產(chǎn)的HI-3582是一款性能價格比較高的ARINC429協(xié)議芯片。該器件的主要特點有:
符合ARINC429總線協(xié)議;
3.3V邏輯電平工作,可直接與LVTTL電平接口;
具有獨立的雙向接收器和發(fā)送器接口;
無需驅(qū)動,可直接連接ARINC429總線;
可編程識別標(biāo)牌,每個接收器具有16個標(biāo)牌存儲單元;
對接收的數(shù)據(jù)可進行奇偶狀態(tài)校驗;并可對發(fā)送數(shù)據(jù)奇偶狀態(tài)進行設(shè)置;
2 .FPGA與HI-3582的接口設(shè)計
2.1 接口原理介紹
目前實現(xiàn)與HI-3582的接口通用的方案是采用單片機或DSP直接控制接收和發(fā)送數(shù)據(jù)。該方案的缺點是:由于HI-3582的離散控制信號較多,需要占用大量通用I/O端口,這在系統(tǒng)通用IO資源緊張的情況下,實現(xiàn)較為復(fù)雜;并且當(dāng)數(shù)據(jù)量較大、發(fā)送及雙接收通道同時工作時占用系統(tǒng)處理時間較長,影響系統(tǒng)工作效率,且容易造成數(shù)據(jù)丟失。為此本文提出了采用FPGA與HI-3582進行接口設(shè)計,利用FPGA豐富的I/O接口,將HI-3582芯片上所有和FPGA有關(guān)的接口管腳都以IO的形式直接連接,在FPGA內(nèi)建立狀態(tài)控制機制,實現(xiàn)對HI-3582芯片的數(shù)據(jù)收發(fā)控制處理。該設(shè)計能極大減少對單片機或DSP的I/O資源占用,提高了單片機/DSP的工作效率;同時提高了對HI-3582芯片中斷請求的響應(yīng)速度。
2.2 軟件設(shè)計及實現(xiàn)
2.2.1 軟件整體設(shè)計。
本設(shè)計中ARINC429總線傳輸速率采用12.5k低速率,數(shù)據(jù)的更新由DSP通過地址線、數(shù)據(jù)線完成。
設(shè)計采用在FPGA內(nèi)部建立一個發(fā)送FIFO緩存和一個接收FIFO緩存,分別用來存儲DSP傳來的待發(fā)送數(shù)據(jù)和兩路ARINC429總線接收到的數(shù)據(jù)。在發(fā)送FIFO不為空時啟動數(shù)據(jù)的發(fā)送,產(chǎn)生HI-3582的發(fā)送時序。接收數(shù)據(jù)時,F(xiàn)PGA依次根據(jù)HI-3582的接收狀態(tài)標(biāo)志D/R1、D/R2判斷并讀取數(shù)據(jù),當(dāng)D/R1或D/R2為低電平時啟動數(shù)據(jù)接收,產(chǎn)生HI-3582的接收時序讀取HI-3582相應(yīng)接收緩沖器中的數(shù)據(jù),再將讀取到的數(shù)寫入接收FIFO。當(dāng)FIFO緩沖器中的存儲數(shù)據(jù)量達(dá)到編程設(shè)置的觸發(fā)深度時,產(chǎn)生DSP中斷信號通知DSP讀取數(shù)據(jù)。
2.2.2 數(shù)據(jù)讀寫狀態(tài)機的設(shè)計。
由于對HI-3582的讀寫操作具有嚴(yán)格的邏輯順序和時序關(guān)系,非常適合采用狀態(tài)機來描述;所以本設(shè)計采用有限狀態(tài)機來實現(xiàn)讀寫HI-3582數(shù)據(jù)。圖2為讀寫HI-3582數(shù)據(jù)的狀態(tài)轉(zhuǎn)移圖。
IDE:初始化控制寄存器。當(dāng)系統(tǒng)上電或復(fù)位時首先進入寫控制寄存器狀態(tài),通過產(chǎn)生CWSTR控制時序?qū)I-3582控制寄存器進行初始化;
S0:收發(fā)控制。檢測HI-3582發(fā)送空閑標(biāo)志TXR及發(fā)送FIFO數(shù)據(jù)標(biāo)志empty,如果TXR為高電平說明HI-3582發(fā)送處于空閑狀態(tài),發(fā)送FIFO標(biāo)志empty為低電平,說明有數(shù)據(jù)要發(fā)送,進入讀數(shù)據(jù)操作狀態(tài),否則檢測HI-3582接收狀態(tài)標(biāo)志D/R1、D/R2,如果D/R1為低電平,進入讀取接收通道1數(shù)據(jù)狀態(tài),如果D/R2為低電平,進入讀取接收通道2數(shù)據(jù)狀態(tài);
S1:讀取發(fā)送數(shù)據(jù)。產(chǎn)生一個FIFO讀信號,讀取一個待發(fā)送的429數(shù)據(jù)字,進入發(fā)送數(shù)據(jù)時序;
S2:發(fā)送控制。依次控制PL1、PL2、ENTX產(chǎn)生HI-3582所需的發(fā)送控制時序,將數(shù)據(jù)發(fā)送出去。發(fā)送結(jié)束后返回收發(fā)控制狀態(tài);
S3:接收控制1。依次控制SEL、EN1產(chǎn)生HI-3582所需的接收控制時序,讀取接收通道1一個接收數(shù)據(jù)字,進入緩存接收數(shù)據(jù)狀態(tài);
S4:接收控制2。依次控制SEL、EN2產(chǎn)生HI-3582所需的接收控制時序,讀取接收通道2一個接收數(shù)據(jù)字,進入緩存接收數(shù)據(jù)狀態(tài);
S5:緩存接收數(shù)據(jù)。產(chǎn)生一個FIFO寫信號,將讀取的429數(shù)據(jù)字寫入接收FIFO,并檢測FIFO中存儲數(shù)據(jù)量是否達(dá)到編程設(shè)置的觸發(fā)深度,當(dāng)滿足編程設(shè)置的觸發(fā)深度時,產(chǎn)生中斷信號,通知DSP讀取數(shù)據(jù)。結(jié)束后返回收發(fā)控制狀態(tài)。
2.2.3 收發(fā)控制時序設(shè)計。
對HI-3582進行讀操作時,由于本設(shè)計中ARINC429總線采用12.5k低速率,在FPGA中用1MHz時鐘同步一個計數(shù)器,在第一個時鐘上升沿置SEL為低,HI-3582數(shù)據(jù)線為高阻;在第二個時鐘上升沿置EN1為低,并將HI-3582數(shù)據(jù)線上的值賦給32位臨時寄存器低16位;在第三個時鐘上升沿置SEL、EN1為高,HI-3582數(shù)據(jù)線為高阻;在第四個時鐘上升沿置EN1為低,并將HI-3582數(shù)據(jù)線上的值賦給32位臨時寄存器高16位;在第五個時鐘的上升沿置EN1為高;到第六個時鐘的上升沿FIFO的寫信號置低,產(chǎn)生一個FIFO寫脈沖將臨時寄存器值寫入FIFO。這樣讀取一個ARINC429數(shù)據(jù)字的有效時間為6個時鐘周期(6us),完全滿足其讀時序的要求。
同樣,對HI-3582進行寫操作時,按照上述方法產(chǎn)生PL1,PL2、ENTX時序啟動發(fā)送操作,并檢測TXR為高時繼續(xù)發(fā)送下一個ARINC429數(shù)據(jù)字。
3. 結(jié)論
按照本文介紹的方法, 在Xilinx公司Virtex?-4 系列FPGA芯片XC4VLX40-FFG668的基礎(chǔ)上已成功實現(xiàn)與HI-3582的ARINC429航空總線接口設(shè)計,并已應(yīng)用到實際設(shè)備中,滿足系統(tǒng)要求。
參考文獻:
[1] SZ-01數(shù)字信息傳輸系統(tǒng),HB6096-86,中華人民共和國航空工業(yè)部標(biāo)準(zhǔn).
[2]HI-3582, ARINC 429 System on a Chip, HOLT INTEGRATED CIRCUITS.
[3] Virtex-4 User Guide, UG070 (v2.3) August 10, 2007.
[4] VHDL:Programming by Example,Douglas L.Perry,F(xiàn)ourth Edition.endprint