ARINC429總線廣泛應用于商務運輸航空領域,如空中客車A310/A320、A330/A340飛機,波音公司727、737、747、757和767飛機,麥道公司MD-11飛機等。它采用異步雙極性歸零碼進行數據的編碼,并通過雙絞線傳輸,具有很強的抗干擾性能。目前市場上的ARINC429總線接口設計一般都采用專用接口芯片,如Device Engineering公司的DEI-1016,INTERSIL公司的HS-3282等,這些專用芯片價格昂貴,且路數有限,使用非常不靈活。本設計將ALTERA公司的FPGA芯片應用于ARINC429標準數據傳輸,并完成了與計算機USB接口的通信,有效縮小了系統體積并降低了成本,同時也增加了系統配置的靈活度。 ARINC429總線數據 ARINC429數據總線協議規定一個數據字由32位組成,以脈沖形式發送,采用雙極性歸零碼,碼速率為12.5kb/s或100kb/s。電氣特性為:高電平(+10V)為邏輯1;低電平(-10V)為邏輯0;0電平(0V)發送自身時鐘脈沖,字與字之間以一定間隔(不少于4位)分開,以此間隔作為字同步。一個32位的數據字由五部分組成:標志位(LABEL),用于標識傳輸數據的信息類型;源/目的標識碼(S/D),用于判斷在一個多系統中的源系統;數據區(DATA);符號/狀態位(SSM),用于標識數據字的特征或數據發生器的狀態;奇偶校驗位(PARITY),ARINC429數字信息傳輸使用奇校驗。 FPGA內部邏輯設計 根據ARINC429總線協議,要完成數據的收發以及對USB總線接口的邏輯控制, FPGA 芯片應完成的邏輯功能框圖如圖1所示,其中虛線框中是FPGA實現的部分。 發送器 發送器結構如圖2所示,由緩沖存儲器、信號發生器和發送控制邏輯三部分構成,用于將來自總線接口通信模塊的32位429格式數據轉換成調制前的兩路串行數據,即圖2中TTL0和TTL1。其中使用緩存是為了提高數據傳輸速度,用戶向緩存寫進想要發送的多個32位數據字后,就可以通過entx信號控制數據從緩存連續不斷地讀出,并經過信號發生器轉換成串行數據后送給總線驅動電路。在這里,緩存是直接調用ALTERA提供的LPM_FIFO+宏功能模塊來實現的。 信號發生器由位計數器、字間隔計數器、碼元調制、移位寄存器以及相應的控制邏輯組成,結構如圖3所示。其中,位數計數器用來控制429數字字的位數,字間隔計數器用于產生字間隔。在本設計中,采用狀態機來實現信號發生器的功能,共分3個狀態: a)IDLE:初始狀態,當復位或是發送完一個32位數后進入該狀態,在該狀態完成字間隔的產生,并用移位寄存器的load信號來鎖存待轉換數據,并在至少四位字間隔后進入TRANS狀態,否則等到直到有新數據載入。 b)TRANS:進行數據的并串轉換,同時進行奇偶校驗,即每產生一位串行數據就進行一次異或運算,并由位數計數器控制計到31時就進入PARITY狀態。 c)PARITY:輸出奇偶校驗位并回到IDLE狀態。 碼元調制是在信號busy的有效區間內,將串行輸出數據serial_data與時鐘做邏輯運算得到的TTL0和TTL1(如圖4)送至外部調制電路,并轉換為429總線規范要求的雙極性歸零信號。其verilog語言描述如下: always @(busy,clk_tx,serial_data) begin if (busy) begin TTL1發送控制邏輯用于協調緩存和信號發生器之間的數據傳遞。在緩存非空、busy無效(信號發生器狀態機處于TRANS狀態下busy有效)的條件下,一旦允許轉換信號entx有效,便開啟緩存的讀使能rden,并產生轉換數據的裝載信號load,以完成緩存數據的自動轉換和發送。 接收器 雙極性的ARINC429 信號通過解調電路轉換為兩路TTL 信號,TTL1和TTL0。后經接收器轉換成32位并行數據供主機讀取。接收器結構如圖5所示。為使數據接收具有一定的抗干擾能力,本設計采用一個16倍于碼速率的高速時鐘對數據進行檢測。同步字頭檢測模塊對高速時鐘進行計數,當計數值計滿64(對應4位字間隔),即產生一個位接收允許信號rec_en,該信號啟動位檢測模塊。位檢測模塊對TTL0和TTL1信號進行監控,一旦兩路串行數據中任一路為高,則標志有效數據開始發送。位檢測模塊對每一位數據進行三次檢測,在碼元的前半周期檢測兩次,后半周期檢測一次,只有這三次檢測都符合429信號標準才能被視為有效數據,否則報錯并自動丟棄。字檢測模塊將正確檢出的位轉換為并行數據并做奇偶校驗和SDI校驗,校驗正確后數據被鎖存,并產生接收完成信號rec_done向主機發出中斷請求。 時鐘發生器 時鐘發生器對外部晶振(本設計采用的是12.8MHz的時鐘頻率)分頻產生100kHz和12.5kHz高低速率兩個發送時鐘,以及16倍于發送時鐘頻率的接收時鐘,高低速率可通過控制寄存器中相應位來選擇。在本設計中遵循同步設計原則,不是將分頻時鐘直接當時鐘用,而是采用了時鐘使能的方法,將分頻時鐘作為觸發器的使能控制。本設計的關鍵部分都采用了狀態機的方式,將分頻時鐘用做狀態機狀態間相互轉換的先決條件,從而實現了在整個設計中只有一個全局時鐘,避免了時鐘“滿天飛”的問題。 USB總線接口通信模塊 USB接口控制邏輯完成以下任務:通過對USB協議處理芯片本地端的地址譯碼完成429總線接口的各種操作,如配置控制寄存器、寫數據發送緩存以及讀接收數據等。當主機要發送數據時,接口通信模塊將收到的8位數據按照429數字字的編碼格式組裝成32位數據,并產生控制信號。將組裝好的32位數據寫入發送器的緩存中,之后根據總線譯碼,產生自動發送控制信號,通知發送器進行自動轉換和發送。同樣地,當接收完一個32位數據時,將這個32位數拆分成4個8位寄存器供主機讀取,它們中的一個對應標志位(LABEL),另外有兩個對應數據區(DATA),最后一個包含了數據字中剩余部分的信息。 仿真與驗證 本設計采用ModelSim SE 6.1b,對經過quartus6.0綜合布局布線后的設計進行時序仿真驗證。圖6和圖7分別為發送模塊和接收模塊在ModelSim中的時序仿真圖。 圖6中data為要發送的并行32位ARINC429數據0x5a5a5a5a,mclk為全局時鐘信號,clk_tx和clk_tx_en分別是發送時鐘(占空比為50%)和同頻的發送時鐘使能信號,aout、bout即上文中發送器的輸出TTL1、TTL0,busy表示正在進行轉換。圖7中mclk為全局時鐘信號,ckl_rx_en是接收時鐘使能信號,_429ain、_429bin為接收器的輸入TTL1、TTL0,dout為收到的ARINC429數據0x75555555,以并行32位數據格式存入寄存器中,rec_done為接收完一個429數據發出的中斷信號。由時序仿真結果可以看出,FPGA可以正確實現ARINC429數據的發送和接收。 在后期板級調試中,將自制板卡與現在市場上出售的429總線接口卡進行對接通信的方法來驗證,證明了本設計的FPGA協議處理和驅動電路工作無誤,可以正確進行429數據的收發,完成429總線的數據通訊。 結束語 本設計采用了ALTERA公司的FPGA芯片EP2C5Q208和CYPRESS公司的USB協議處理芯片CY7C68013以及外圍的調制解調電路,實現了4路收發的429總線數據傳輸接口,并完成了與上位計算機的通信。該系統大部分功能都是在同一FPGA芯片內部實現的,發揮了FPGA的優勢,提高了系統的穩定性、集成度,并增強了抗干擾能力。利用FPGA的可重配置性,可以實現更多路ARINC429信號的接收與發送,可以大大降低重量、體積及成本,這在機載航空總線數據處理中具有較大的實用價值。 |