曹雄偉,朱 巖,史國慶
(西北工業大學 陜西 西安 710129)
在航電系統的研制初期,通常人們都要先在地面以微型計算機為基礎做各種仿真實驗。這使得用于各仿真系統的接口卡的研制和革新工作便成為航電系統發展的一個重點。接口卡的主要任務是實現航電系統的數據總線與PC機的數據總線之間的通訊功能,這使得人們可以在PC機上模擬航電系統數據總線上所掛接的實際子系統。
PCI(peripheral component interconnect)局部總線數據傳輸率為132 MB/s,可同時支持多組外設,不受制于處理器,具有并行和資源鎖定功能,是通用的I/O接口部件標準。DSP與單片機相比,具有更快的運行速度,更豐富的軟件和硬件資源;FPGA的時序嚴格,速度較快,可編程性好,適合于實現譯碼和專門電路。DSP+FPGA系統最大優點是結構靈活,有較強的通用性,適合于模塊化設計,能提高算法效率,縮短開發周期,易維護和擴展系統。在以往的文獻中,對于嵌入式CPU的選用一般都選用的是單片機,邏輯控制、時序控制、地址譯碼一般都是用分立元件實現的,而本文設計的基于DSP和FPGA的ARINC429總線接口卡,綜合了DSP和FPGA的各種優點,且接口卡應用的協議芯片都是專用協議芯片,數據傳輸速度快、吞吐量大,板卡體積小、穩定性高[1-2]。
ARINC429是機載電子設備之間進行數據傳輸約定的一種標準,它規定了航空運輸工業航空電子系統生產部門對部件、通用設計、結構及實驗規范的要求,保證在航線上使用滿意和有必要的互換性,使那些影響設備互換性的物理和電氣特性達到最大程度的標準化,完善系統要求以求達到地面和機載設備的兼容性等。
ARINC429為單向傳輸總線,總線上只許有一個發送器,但可以有多個接收器,最多為20個接收器。信息只能從通信設備的發送口輸出,經傳輸總線傳至與它相連的需要該信息的其他設備的接收口。在兩個設備間需要雙向傳輸時,則在每個方向各用一根獨立的傳輸總線。ARINC429通信采用雙極性歸零制的三態調制方式BNR碼,即調制狀態由 “高“,“零”和“低”狀態組成的三電平調制狀態組成。系統高速工作狀態的速率為100 kb/s,低速工作時速率為12.5 kb/s[1]。
文中設計的ARINC429總線接口卡主要是完成PCI總線與ARINC429總線之間的通信。當PC機接收數據時,首先,ARICN429總線接口芯片從ARINC429總線上采集數據,解碼、鎖存數據,等待DSP讀取。然后,DSP讀取到ARICN429總線接口芯片采集到的數據后將其存到雙口RAM中等待PC機讀取。最后,PC機通過PCI接口芯片從雙口RAM中讀取到ARINC429總線接口芯片從429總線上采集到的數據;當PC機發送數據時,首先,PC機將要發送的數據通過PCI接口芯片寫到雙口RAM中,等待DSP讀取。然后,DSP從雙口RAM中讀取數據并將數據寫入到ARINC429總線接口芯片的輸入寄存器中,等待發送。最后,ARICN429總線接口芯片將數據編碼、發送到ARINC429總線上[5-6]。系統的硬件電路結構框圖如圖1所示。圖中FPGA主要完成地址譯碼、時序控制等功能。系統硬件電路主要由3部分組成:PCI接口模塊、ARINC429接口模塊、PCI和ARINC429之間的接口模塊。

圖1 系統的硬件電路結構框圖Fig.1 Structure diagram of the hardware system
2.1.1 PCI接口模塊
接口卡與主機PCI總線的接口是通過PCI專用接口芯片PCI9052來實現的。PCI9052是PLX公司開發的低價位PCI總線目標接口電路,功耗低,采用PQFP型160引腳封裝,符合 PCI2.1規范,它的局部總線(LOCAL BUS)可以通過編程設置為8/16/32位的(非)復用總線,數據傳送率可達到132Mb/s,提供了ISA接口,可以使ISA適配器迅速、低成本地轉換到PCI總線上。由于PCI9052提供了和PCI總線信號相一致的接口信號引腳,所以只需要根據接口卡功能的需求將相關的信號引腳對應連接起來即可。值得注意的是,PCI9052必須連接一個EEPROM來設置內部寄存器。上電時,PCI總線的RST#信號將PCI9052的內部寄存器設置為缺省值,同時,PCI9052輸出局部復位信號(LRESET#),并且檢查EEPROM是否存在。如果設備上裝有EEPROM,且EEPROM的第一個16字非FFFFH,那么,PCI9052根據EEPROM內容設置內部寄存器,否則設為缺省值。PCI9052與EEPROM的電路連接如圖2所示。

圖2 PCI9052與EEPROM的電路連接Fig.2 Connection between PCI9052 and EEPROM
2.1.2 ARINC429接口模塊
接口卡與ARINC429總線的接口是通過ARINC429總線專用接口芯片HS3282來實現的。HS3282是一款面向ARINC429總線、以及類似ARINC429編碼時分多路數據傳輸協議的高性能CMOS型接口芯片,能夠直接與ARINC429總線的外部連接器連接。當發送數據時,HS3282一般和驅動芯片HS3182配合使用來將HS3282輸出的邏輯電平轉換為符合ARINC429傳輸規范的差分電平[4]。接口卡與ARINC429總線的接口電路如圖3所示。

圖3 接口卡與ARINC429總線的接口電路Fig.3 Interface circuit between interface card and ARINC429 bus
2.1.3 PCI和ARINC429之間的接口模塊
PCI和ARINC429之間的接口模塊主要是實現PCI協議與ARINC429協議的轉換。這部分電路主要是通過DSP與FPGA實現的。電路分為PCI9052與DSP之間的接口和DSP與HS3282之間的接口。
2.1.3.1 PCI9052與DSP之間的接口
PCI9052與DSP的電路連接是通過雙口RAM作為數據中繼、FPGA進行邏輯控制來實現的。雙口RAM連接在DSP的外部接口上,被分配在外部接口的區域2,作為DSP的外部存儲器,當DSP讀寫雙口RAM時,就會通過信號來使能雙口RAM,然后進行相應的數據讀寫操作,至于PCI9052對雙口RAM的控制,則是通過片選信號UESR2/CS2#和USER3/CS3#來實現的。電路連接如圖4所示,這里雙口RAM選用的是IDT7028PF,FPGA選用的是Altera公司的EP1C12,DSP選用的是TI公司的TMS320F2812。

圖4 PCI9052與DSP之間的接口電路Fig.4 Interface circuit between PCI9052 and DSP
2.1.3.2 DSP與HS3282之間的接口
DSP與HS3282之間的電路連接主要涉及到邏輯控制、地址譯碼、中斷控制等方面,這些都是通過FPGA來實現的。邏輯控制的功能在于對DSP對HS3282的控制,利用DSP的讀、寫控制信號、地址信號和外部接口的片選信號,通過FPGA 的 邏 輯 運 算 來 控 制 HS3282 的 SEL、、、、、等控制信號,實現DSP對接口芯片HS3282的讀寫操作;地址譯碼的功能在于當地址總線上出現預定的地址,且讀信號或寫信號有效時,能夠對HS3282的接收器鎖存器進行讀數據或將數據寫入到HS3282發送器的FIFO中。中斷管理的功能在于實現數據傳輸的高效性,在HS3282的中斷管理中,有兩種類型的中斷:TX/R表明數據發送結束,兩個分別表明不同的接收器已完成數據的接收,如果DSP接收到中斷,將從接收器讀取數據,并進行相應的處理;如果接收到中斷,就將數據寫入到發送器FIFO中,進行發送操作。當DSP讀取數據時,首先設置數據選擇信號線SEL為邏輯 “0”,并且產生讀允許脈沖信號,這樣DSP就能讀取第一個數據字,然后設置數據選擇信號線為邏輯“1”,并且再次產生讀允許脈沖信號,DSP就能讀取第二個數據字。當DSP發送數據時,首先通過、將數據裝入FIFO,當ENTX信號有效時,HS3282將數據發送出去。這里信號是通過地址線的最低有效位來控制的,、、、是通過讀寫信號線和地址總線來控制的。另外,在本設計中,由1個24 MHz的晶振給FPGA提供時鐘信號源。由FPGA提供給DSP一個24 MHz的工作時鐘。同時,通過分頻電路FPGA可以分別提供給HS3282的工作時鐘分別有 1 MHz、500 kHz、250 kHz、125 kHz 分別可以產生 100 k、50 k、25 k、12.5 k 4種429通信速率,滿足不同外部設備的要求[3]。DSP與HS3282之間的接口電路連接如圖5所示。這里DSP通過外部接口來對HS3282進行讀寫操作,HS3282被分配在區域0和區域1,DSP通過片選信號來分別選通雙口RAM和HS3282。

圖5 DSP與HS3282之間的接口電路Fig.5 Interface circuit between DSP and HS3282
本接口卡的軟件主要由兩部分組成:DSP數據收發程序、PCI驅動程序。
2.2.1 DSP數據收發程序
DSP數據收發程序主要完成ARINC數據的收發,接口卡的數據收發程序主要是通過中斷來完成的。如果DSP接收到D/R中斷,將從接收器讀取數據,并進行相應的處理;如果接收到TX/R中斷,就將數據寫入到發送器FIFO中,進行發送操作。DSP數據收發程序流程圖如圖6所示。

圖6 DSP數據收發程序流程圖Fig.6 Flow chart of the data transceiver program
2.2.2 PCI驅動程序
由于Windows應用程序運行在保護模式下,他們不能直接訪問硬件,所以Windows應用程序想要訪問硬件就要通過驅動程序來訪問,所以必須為接口卡編寫PCI設備驅動程序。驅動程序主要完成設備初始化、對設備端口和內存、寄存器的讀寫操作。接口卡使用的PCI設備驅動程序是微軟公司推出的WDM驅動程序。對于WDM驅動程序,微軟公司提供了專門的驅動程序開發包Windows XP DDK,但是DDK開發難度較大,周期長,不容易掌握,所以本文采用Numga公司提供的開發工具Driver Studio來實現。Driver Studio制作的類庫封裝了DDK函數,提供的開發向導可以生成代碼框架,與Visual C++完全兼容,大大簡化了WDM驅動程序的編寫。
文中設計的ARINC429總線接口卡,分別使用PCI9052和HS3282作為PCI總線和ARINC429總線的接口芯片,使用FPGA進行邏輯控制、時序控制,提高了系統的集成度、穩定性。數據收發過程由卡上的DSP控制,無需占用計算機資源,具有高速、可靠、實時性好的優點。接口卡已在某綜合航電測試系統中得到應用,能夠滿足測試系統的需求,有很高的實用價值。
[1]支超有.機載數據總線技術及其應用[M].北京:國防工業出版社,2006.
[2]孫麗明.TMS320F2812原理及其C語言程序開發[M].北京:清華大學出版社,2008.
[3]史國慶,高曉光,吳勇,等.基于PCI總線的ARINC429總線接口板硬件設計與實現[J].計算機測量與控制,2010,18(1):28-29.
SHI Guo-qing,GAO Xiao-guang,WU Yong,et al.Hardware design and realization of ARINC429 bus interface board based on PCI bus[J].Computer Measurement&Control,2010,18(1):28-29.
[4]張怡,劉利杰,張航,等.基于DSP的ARINC429總線接口設計[J].航空計算技術,2008,38(1):105-107.
ZHANG Yi,LIU Li-jie,ZHANG Hang,et al.Design of ARINC429 BUS interface based on DSP[J].Aeronautical Computing Technique,2008,38(1):105-107.
[5]張華強,郭小娟,張慶榮.基于DSP的ARINC429總線接口卡的設計與實現 [J].計量與測試技術,2008,35 (10):36-40.
ZHANG Hua-qiang,GUO Xiao-juan,ZHANG Qing-rong.Design and realization of ARINC429 bus interface card based on DSP[J].Metrology&Measurement Technique,2008,35(10):36-40.
[6]韓沖,翟正軍,羊天德,等.基于DSP的ARINC429嵌入式智能接口板硬件設計與實現 [J].計算機工程與設計,2006,17(27):3133-3135.
HAN Chong,ZHAI Zheng-jun,YANG Tian-de,et al.Design and realization of embeded intelligent interface card of ARINC429 bus based on DSP[J].Computer Engineering and Design,2006,17(27):3133-3135.