許波強 袁維力 趙亞軍/ 陜西凌云電器集團有限公司
ARINC429總線控制器HI-3582接口設計
許波強 袁維力 趙亞軍/ 陜西凌云電器集團有限公司
本文簡要介紹了ARINC429總線和HI-3582總線控制器的特點,結合工程實際,給出了基于FPGA的ARINC429總線控制器HI-3582接口設計思路和方法。
ARINC429總線;FPGA;狀態機
ARINC429總線是美國航空無線電公司制定的民用航空數字總線傳輸標準,它規定了使用該總線的航空電子設備的信息流向和基本數據字的格式。ARINC429總線為單向傳輸總線,信息只能從通信設備的發送口輸出,經傳輸總線傳至與它相連的需要該信息的其他設備的接收口。在需要兩個通信設備間雙向傳輸時,則在每個方向各用一根獨立的傳輸總線。ARINC429通信采用雙極性歸零制的三態碼調制方式,具有接口方便、數據傳輸可靠的特點,目前已廣泛應用于導航定位系統、通信系統等機載電子設備中。本文結合工程實際,介紹了HOLT公司推出的ARINC429總線控制器芯片HI-3582的特點,并給出了基于FPGA的接口設計思路和方法。
HOLT INTEGRATED CIRCUITS公司生產的HI-3582是一款性能價格比較高的ARINC429協議芯片。該器件的主要特點有:
● 符合ARINC429總線協議;
● 3.3V邏輯電平工作,可直接與LVTTL電平接口;
● 具有獨立的雙向接收器和發送器接口;
● 無需驅動,可直接連接ARINC429總線;
● 可編程識別標牌,每個接收器具有16個標牌存儲單元;
● 對接收的數據可進行奇偶狀態校驗;并可對發送數據奇偶狀態進行設置;
目前實現與HI-3582的接口通用的方案是采用單片機或DSP直接控制接收和發送數據。該方案的缺點是:由于HI-3582的離散控制信號較多,需要占用大量通用I/O端口,這在系統通用IO資源緊張的情況下,實現較為復雜;并且當數據量較大、發送及雙接收通道同時工作時占用系統處理時間較長,影響系統工作效率,且容易造成數據丟失。為此本文提出了采用FPGA與HI-3582進行接口設計,利用FPGA豐富的I/O接口,將HI-3582芯片上所有和FPGA有關的接口管腳都以IO的形式直接連接,在FPGA內建立狀態控制機制,實現對HI-3582芯片的數據收發控制處理。該設計能極大減少對單片機或DSP的I/O資源占用,提高了單片機/DSP的工作效率;同時提高了對HI-3582芯片中斷請求的響應速度。
2.2.1 軟件整體設計。
本設計中ARINC429總線傳輸速率采用12.5k低速率,數據的更新由DSP通過地址線、數據線完成。
設計采用在FPGA內部建立一個發送FIFO緩存和一個接收FIFO緩存,分別用來存儲DSP傳來的待發送數據和兩路ARINC429總線接收到的數據。在發送FIFO不為空時啟動數據的發送,產生HI-3582的發送時序。接收數據時,FPGA依次根據HI-3582的接收狀態標志D/R1、D/R2判斷并讀取數據,當D/R1或D/R2為低電平時啟動數據接收,產生HI-3582的接收時序讀取HI-3582相應接收緩沖器中的數據,再將讀取到的數寫入接收FIFO。當FIFO緩沖器中的存儲數據量達到編程設置的觸發深度時,產生DSP中斷信號通知DSP讀取數據。
2.2.2 數據讀寫狀態機的設計。
由于對HI-3582的讀寫操作具有嚴格的邏輯順序和時序關系,非常適合采用狀態機來描述;所以本設計采用有限狀態機來實現讀寫HI-3582數據。圖2為讀寫HI-3582數據的狀態轉移圖。
IDE:初始化控制寄存器。當系統上電或復位時首先進入寫控制寄存器狀態,通過產生CWSTR控制時序對HI-3582控制寄存器進行初始化;
S0:收發控制。檢測HI-3582發送空閑標志TXR及發送FIFO數據標志empty,如果TXR為高電平說明HI-3582發送處于空閑狀態,發送FIFO標志empty為低電平,說明有數據要發送,進入讀數據操作狀態,否則檢測HI-3582接收狀態標志D/R1、D/R2,如果D/R1為低電平,進入讀取接收通道1數據狀態,如果D/R2為低電平,進入讀取接收通道2數據狀態;
S1:讀取發送數據。產生一個FIFO讀信號,讀取一個待發送的429數據字,進入發送數據時序;
S2:發送控制。依次控制PL1、PL2、ENTX產生HI-3582所需的發送控制時序,將數據發送出去。發送結束后返回收發控制狀態;
S3:接收控制1。依次控制SEL、EN1產生HI-3582所需的接收控制時序,讀取接收通道1一個接收數據字,進入緩存接收數據狀態;
S4:接收控制2。依次控制SEL、EN2產生HI-3582所需的接收控制時序,讀取接收通道2一個接收數據字,進入緩存接收數據狀態;
S5:緩存接收數據。產生一個FIFO寫信號,將讀取的429數據字寫入接收FIFO,并檢測FIFO中存儲數據量是否達到編程設置的觸發深度,當滿足編程設置的觸發深度時,產生中斷信號,通知DSP讀取數據。結束后返回收發控制狀態。

圖1 發送和接收ARINC429數據的狀態轉移圖
2.2.3 收發控制時序設計。
對HI-3582進行讀操作時,由于本設計中ARINC429總線采用12.5k低速率,在FPGA中用1MHz時鐘同步一個計數器,在第一個時鐘上升沿置SEL為低,HI-3582數據線為高阻;在第二個時鐘上升沿置EN1為低,并將HI-3582數據線上的值賦給32位臨時寄存器低16位;在第三個時鐘上升沿置SEL、EN1為高,HI-3582數據線為高阻;在第四個時鐘上升沿置EN1為低,并將HI-3582數據線上的值賦給32位臨時寄存器高16位;在第五個時鐘的上升沿置EN1為高;到第六個時鐘的上升沿FIFO的寫信號置低,產生一個FIFO寫脈沖將臨時寄存器值寫入FIFO。這樣讀取一個ARINC429數據字的有效時間為6個時鐘周期(6us),完全滿足其讀時序的要求。
同樣,對HI-3582進行寫操作時,按照上述方法產生PL1,PL2、ENTX時序啟動發送操作,并檢測TXR為高時繼續發送下一個ARINC429數據字。
按照本文介紹的方法,在Xilinx公司Virtex?-4 系列FPGA芯片XC4VLX40-FFG668的基礎上已成功實現與HI-3582的ARINC429航空總線接口設計,并已應用到實際設備中,滿足系統要求。
[1]SZ-01數字信息傳輸系統,HB6096-86,中華人民共和國航空工業部標準.
[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,Fourth Edition.