劉 江
(中國西南電子技術研究所,成都 610036)
HB6096航空總線是我國在國外ARINC429航空總線基礎上發(fā)布的國內航空電子設備總線傳輸協(xié)議,其數據傳輸方式及傳輸電平與ARINC429基本相同,是一種單向點對多廣播模式高速差分信號[1]。
國內傳統(tǒng)HB6096總線接口設計主要依靠國外ARINC429專用集成電路實現。這些專用集成電路不僅面臨國外技術封鎖,還存在接口單一、集成度低的問題。隨著我國航空工業(yè)的發(fā)展,越來越多的機載設備掛接在系統(tǒng)總線上,這時候傳統(tǒng)的HB6096接口設計方案已不能滿足小型化、高集成度及國產化設計需求。
為提高硬件集成度,本文立足于國產化設計思路,依據HB6096總線傳輸標準,根據設計需求,基于FPGA實現了多通道HB6096航空總線接口設計,并給出了總體設計方案、硬件、軟件詳細設計方法及測試結果。
HB6096總線協(xié)議標準是我國航空工業(yè)部在1986年發(fā)布的SZ-01數字信息傳輸系統(tǒng)。協(xié)議要求每傳輸完成一個32位的數字字之后,以傳輸周期間至少5位的時間間隔為基準,緊跟該字間隔后要發(fā)送的第一位的起點即為新字的起點[2],而ARINC429則要求4位的時間間隔[3]??偩€數據傳輸依靠兩根差分信號線完成,速率分為高速工作狀態(tài)(位速度100×103bit/s)及低速工作狀態(tài)(位速度12~14.5×103bit/s),并且要求高速率和低速率信息不在同一傳輸總線上傳輸。
HB6096總線調制方式采用雙極性歸零制的三態(tài)碼調制方式,即調制信號由“高”、“零”和“低”狀態(tài)組成的三電平狀態(tài)調制。A、B端總線電平狀態(tài)及轉換為TTL電平后對應的邏輯狀態(tài)關系如圖1所示。
圖1 HB6096總線傳輸電平及數據轉換關系Fig.1 The voltage of HB6096 bus and data conversion
要求總線接口模塊能接收、發(fā)送多路HB6096總線數據,接口模塊通過設備內并行總線實現通信。
(1)HB6096總線要求
1)8路HB6096總線接收接口;
2)5路HB6096總線輸出接口;
3)傳輸速率:100 kbit/s或12.5 kbit/s;
4)緩存要求:每個HB6096總線通道(接收或發(fā)送)緩存不小于1 024 byte。
(2)設備內自定義總線接口
1)16位數據總線;
2)16位地址總線;
3)讀 、寫 、片選 、中斷 、復位信號 。
因HB6096傳輸電平與ARINC429基本相同,國內傳統(tǒng)的HB6096多通道總線接口設計大多借用ARINC429設計方案,即采用處理器加進口協(xié)議芯片,如文獻[4]采用CPLD和DSP相結合的方式,提出了一種2片DEI1016芯片并行工作的方案并實現。兩芯片共構成2收4發(fā)6路429通道,采用中斷方式并行高速運行;或如文獻[5]基于SOPC技術,以NiosII軟核處理器為系統(tǒng)核心,并配合ARINC429通信協(xié)議芯片HS3282和HS3182實現對429總線數據的收發(fā)。
本設計方案立足國產化設計,由FPGA完成HB6096協(xié)議解析,每個總線通道(接收或發(fā)送)緩存均由FPGA內部RAM生成,每個通道設計一個狀態(tài)機進行獨立管理,由控制內核完成與設備內并行總線的數據訪問,即基于FPGA實現多通道HB6096航空總線數據收發(fā)。
硬件主要由電源、時鐘、調試接口、FPGA、電平轉換電路、隔離驅動電路等組成,硬件原理框圖如圖2所示。
圖2 硬件原理框圖Fig.2 Schematic block diagram of hardware
硬件核心FPGA采用ACTEL公司的A3P1000。設計要求8個接收通道,5個發(fā)送通道,每個通道緩存要求1 024 byte,一共需用(8+5)×1 024=104 kbit。A3P1000內部 RAM 資源是144 kbit,滿足設計需求。
外圍方案是:隔離驅動采用164245系列芯片完成TTL到LVTTL電平的轉換與隔離;接收通道的電平轉換芯片采用HOLT公司的HI-8588,發(fā)送通道的電平轉換芯片采用HOLT公司的HI-8585;系統(tǒng)時鐘50MHz;電源使用+5 V、+12 V、-12 V電壓滿足HB6096電平轉換芯片的使用。
HB6096數據是32位串行數據,設備內部數據總線為16位并行數據,需要將HB6096串行數據拆分為兩包16位的并行數據。接收通道采用16位寬度、512位深度的DPRAM,發(fā)送通道采用32位寬度、256位深度FIFO。每個接收通道分配一個DPRAM,每個發(fā)送通道分配一個FIFO緩存,各個通道相互獨立,由狀態(tài)機負責運行工作。當外部CPU需要對模塊進行數據讀出、寫入時由控制內核完成相關地址映射、寄存器讀寫工作。
整個軟件的功能結構框圖如圖3所示。
圖3 軟件功能結構框圖Fig.3 Block diagram of software configuration
軟件語言采用VHDL,編譯環(huán)境采用ACTEL公司產品適用的Libero9.1版本。
6.2.1 32位串并轉換器
根據圖1所示雙極性歸零碼的特性,32位串并轉換器采用A與B異或作為數據采集的觸發(fā)信號。外部CPU根據系統(tǒng)實際使用情況,通過模塊間自定義總線配置速率寄存器,設置分頻器參數,生成相應10 MHz或1.25 MHz的采樣時鐘,以100倍的采樣速率對A端和B端的信號同時進行采集。數據采集分為兩次校驗:單bit采集數據必須滿足A和B的異或關系,即A為邏輯“1”時B必須為邏輯“0”,B為邏輯“1”時A必須為邏輯“0”;32 bit數據采集完成后再進行奇偶數據校驗,校驗不通過的數據直接拋棄。兩次校驗通過后按照相應協(xié)議格式對32 bit的并行數據進行轉換,轉換完成后將32 bit數據送入鎖存器,置相關標志位,并做好下一包總線數據采集準備。
6.2.2 DPRAM寫狀態(tài)機
DPRAM寫狀態(tài)機的流程如圖4所示。
圖4 DPRAM寫狀態(tài)機流程圖Fig.4 The flow chart of state machine for writing DPRAM
圖4說明如下:
STEP0:等待;
STEP1:置 CS、WR 有效,將低 16位數據送DPRAM,將虛擬地址+地址指針值送DPRAM;
STEP2:置 CS、WR 無效;
STEP3:置 CS、WR 有效,將高 16位數據送DPRAM,將虛擬地址+地址指針+1值送DPRAM;
STEP4:置 CS、WR 無效;
STEP5:地址指針累加。
在串并轉換成功標位RX_SIGN置有效后,啟動數據拆分及DPRAM寫狀態(tài)機。將32位并行數據從鎖存讀出并拆分為 2包16位的并行數據。根據DPRAM的寫數據時序,將虛擬的片選、寫等控制信號置有效,然后按照先寫低位,再寫高位的方式,通過分配的虛擬地址,分兩次將一包HB6096數據寫入DPRAM雙口。每寫入一組16 bit的數據后,地址指針自動加1,確保數據能夠進行累進存儲,每寫完一包HB6096數據地址指針實際累積加2。當存儲到第512個數據(實際上是第256個HB6096數據)時,將地址指針自動清零。第513個數據來后,將原來存儲的第1包數據進行覆蓋存儲。
6.2.3 DPRAM存儲
根據產品設計要求,結合FPGA的RAM資源,在數據量不大的情況下,我們采用DPRAM環(huán)形存儲的方式,即當存儲BUFFER裝滿之后,重復寫入該段存儲空間,覆蓋之前的數據。DPRAM環(huán)形存儲器結構如圖5所示。
圖5 DPR AM環(huán)形存儲器結構Fig.5 Architecture of circular DPRAM
圖5說明如下:
(1)每個通道配置DPRAM環(huán)形存儲器1 kbyte,寬度為16位,深度512位;
(2)每一包HB6096數據先寫16 bit低位,再寫16 bit高位;
(3)每寫入一包HB6096數據,接收器地址指針自動加2;
(4)當存儲第256包HB6096數據后,地址指針清零;
(5)當存儲第257包HB6096數據時,該包數據將覆蓋之前接收到的第一包數據。
拋棄傳統(tǒng)外部掛接雙口芯片而在FPGA內部開辟DPRAM的優(yōu)點是:節(jié)約印制板空間,節(jié)約成本,抗干擾能力強,存儲速度快,最重要的是可以實現多通道數據獨立并行處理。每個通道設計一個狀態(tài)機進行獨立管理,將數據寫入對應通道的DPRAM,完全實現多通道的并行運行。此種方案比外掛一個DPRAM芯片然后再依靠處理器或控制內核去管理各個通道,依次逐個寫入各個通道接收數據要合理有效得多,也避免了各通道滿負荷運行時的數據堵塞。這也是本方案的創(chuàng)新之處。
控制內核是整個總線接口模塊的數據傳輸、協(xié)調控制單元,整個控制內核主要分為寄存器配置、總線接收地址指針讀取、總線數據接收讀取、總線數據發(fā)送寫入。
控制內核通過對各個接收通道、發(fā)送通道統(tǒng)一進行地址編碼分配、接口映射,可實現與外部處理器進行總線訪問。上電后,外部處理器先配置各個接收、發(fā)送通道的HB6096總線傳輸速率。當接收通道收到數據后,對應接收通道地址指針轉動??刂苾群丝上駽PU處理器發(fā)送中斷信號,也可以由CPU處理器以主動方式查詢各個接收通道的地址指針值。當CPU發(fā)現接收地址指針偏移后,計算偏移量,得出接收到了多少包總線數據,然后將該段數據讀出。當需要發(fā)送數據時,CPU通過控制內核先查詢該通道的FIFO存儲器是否已經存滿。若可以繼續(xù)寫入數據,則通過控制內核的發(fā)送通道地址映射,將發(fā)送數據寫入對應FIFO。
由于發(fā)送數據是外部處理器為主動模式,每一包HB6096數據均依照對應發(fā)送通道進行發(fā)送,因此只需要對每一個發(fā)送通道的地址進行標記。每次往該通道發(fā)送數據,只需往該通道的地址寫入數據就可以。因此,發(fā)送緩存采用基于PIPELINE管道結構的FIFO緩存更合理。
6.4.1 寫FIFO狀態(tài)機
根據設計要求,采用 32×256的 FIFO滿足1 kbyte要求。詳細設計如下:以發(fā)送1通道為例,設置TX1-ADDR地址為發(fā)送1通道的數據位低位,TX1-ADDR+1為數據位高位地址。CPU寫入數據時,先寫入低16位數據到寄存器,再寫入高16位數據送入寄存器,同時給出該通道數據已組合好的標志位CPU-WR1。利用此標志位,產生符合FIFO時序的寫信號,將32位HB6096數據一次寫入FIFO。
其他發(fā)送通道類似。
6.4.2 讀FIFO狀態(tài)機
讀FIFO狀態(tài)機采用FIFO緩存在存入數據后狀態(tài)標志位的跳變信號作為啟動信號,再根據FIFO的讀時序,產生相應的片選、讀信號,將數據讀出。讀FIFO狀態(tài)機需要注意的是,狀態(tài)機在讀數前,需要先檢查32位并串轉換器的忙標志位信號。如果并串轉換器處于忙狀態(tài),說明上一包HB6096數據還沒有發(fā)送完成,需要等待;如果已經轉換完成,證明上一包數據已發(fā)送,才可以讀取下一包數據。
6.4.3 32位并串轉換器
32位并行數據從FIFO中讀出來后,利用發(fā)送控制寄存器,將發(fā)送數據的傳輸速率以及發(fā)送數據的奇、偶校驗方式信息傳遞給32位并串轉換器。轉換器根據寄存器配置信息選擇分頻時鐘及數據校驗方式,然后對32位并口數據按照100 kHz或12.5 kHz時鐘,結合協(xié)議要求進行格式轉換及編碼工作。編碼工作開始后置忙標志位,表明轉換器正處于發(fā)送工作狀態(tài),禁止再從FIFO讀數,防止數據丟失。直到32位數據已轉換完成,并按照HB6096總線要求設置5個比特位的時間間隔后,再將忙標志位置為無效,啟動讀FIFO狀態(tài)機讀出下一包數據。
采用旋極公司Arinc429接口板及ArincTools通信測試軟件,結合CPU處理器TORNADO軟件,分別對本模塊的發(fā)送和接收通道進行測試。
測試發(fā)送性能時,ArincTools軟件處于接收狀態(tài),利用測試程序使5個發(fā)送通道全部打開,每個通道同時發(fā)送100萬包HB6096數據,通信速率100 kbit/s。檢測結果顯示本模塊所有發(fā)送通道均無數據錯誤或丟失。發(fā)送通道測試結果如圖6所示。
圖6 發(fā)送通道測試結果Fig.6 The test result of sending channels
測試接收性能時,ArincTools軟件處于發(fā)送狀態(tài),8個發(fā)送通道全部打開,每個通道同時發(fā)送100萬包HB6096數據,通信速率100 kbit/s。檢測結果顯示本模塊所有接收通道均無數據錯誤或丟失。接收通道測試結果如圖7所示。
圖7 接收通道測試結果Fig.7 The test result of receiving channels
本文從工程應用角度,基于FPGA設計了8路HB6096總線接收及5路HB6096總線輸出的總線接口,硬件資源開銷小,系統(tǒng)滿足設計需求,軟件設計構架合理。目前該設計已成功應用于某機型HB6096航空總線接口模塊,經模擬測試及高低溫等各項環(huán)境試驗條件驗證,模塊時序工作正常,穩(wěn)定可靠。
此設計方案摒棄了傳統(tǒng)HB6096總線數據處理依賴國外進口ARINC429總線集成協(xié)議芯片辦法,實現了國產化設計;摒棄了采用ARINC429集成芯片只能單、雙路收發(fā)的局限性,實現了多通道的數據收發(fā);每個通道配置獨立的緩存,實現了多通道的獨立并行運轉,節(jié)約資源,高效穩(wěn)定;采用CPU主動查詢方式讀取接收數據,保證了多路總線數據的穩(wěn)定接收,避免了可能出現的掉數問題。該設計思路還可拓展應用于國內1553B等航空總線多通道接口國產化設計。
[1] 張楨,孫沛.基于FPGA的ARINC429總線通訊板設計[J].航空計算技術,2010,40(4):112-115.ZHANG Zhen,SU N Pei.Design of Multi-channel ARINC 429 Communication Board Based on FPGA[J].Aeronautical Computing Technique,2010,40(4):112-115.(in Chinese)
[2] HB6096-86SZ-01,數字信息傳輸系統(tǒng)[S].HB6096-86SZ-01,Digital information transfer system for the standards of aeronautic industry department of the prc[S].(in Chinese)
[3] ARINC specification 429P3-19,mark 33 digital information transfer system(dits)-part 3-file data transfer techniques[S].
[4] 宋桂華,趙偉,劉建業(yè).多路ARINC429數據傳輸的設計與實現[J].微處理機,2009,30(3):116-118.SONG Gui-hua,ZHAO Wei,LIU Jian-ye.Design and Realization of Multi-channel ARINC 429 Data Transmission Technique[J].Microprocessors,2009,30(3):116-118.(in Chinese)
[5] 陳東,韓治中,梁勇.基于 SOPC的ARINC429總線接口設計[J].工業(yè)儀表與自動化裝置,2010(1):30-33.CHEN Dong,HAN Zhi-zhong,LIANG Yong.The design of ARINC429 data bus interface based on SOPC[J].Industrial Instrumentation&Automation,2010(1):30-33.(in Chinese)