曹雄偉,朱 巖,史國(guó)慶
(西北工業(yè)大學(xué) 陜西 西安 710129)
在航電系統(tǒng)的研制初期,通常人們都要先在地面以微型計(jì)算機(jī)為基礎(chǔ)做各種仿真實(shí)驗(yàn)。這使得用于各仿真系統(tǒng)的接口卡的研制和革新工作便成為航電系統(tǒng)發(fā)展的一個(gè)重點(diǎn)。接口卡的主要任務(wù)是實(shí)現(xiàn)航電系統(tǒng)的數(shù)據(jù)總線與PC機(jī)的數(shù)據(jù)總線之間的通訊功能,這使得人們可以在PC機(jī)上模擬航電系統(tǒng)數(shù)據(jù)總線上所掛接的實(shí)際子系統(tǒng)。
PCI(peripheral component interconnect)局部總線數(shù)據(jù)傳輸率為132 MB/s,可同時(shí)支持多組外設(shè),不受制于處理器,具有并行和資源鎖定功能,是通用的I/O接口部件標(biāo)準(zhǔn)。DSP與單片機(jī)相比,具有更快的運(yùn)行速度,更豐富的軟件和硬件資源;FPGA的時(shí)序嚴(yán)格,速度較快,可編程性好,適合于實(shí)現(xiàn)譯碼和專門(mén)電路。DSP+FPGA系統(tǒng)最大優(yōu)點(diǎn)是結(jié)構(gòu)靈活,有較強(qiáng)的通用性,適合于模塊化設(shè)計(jì),能提高算法效率,縮短開(kāi)發(fā)周期,易維護(hù)和擴(kuò)展系統(tǒng)。在以往的文獻(xiàn)中,對(duì)于嵌入式CPU的選用一般都選用的是單片機(jī),邏輯控制、時(shí)序控制、地址譯碼一般都是用分立元件實(shí)現(xiàn)的,而本文設(shè)計(jì)的基于DSP和FPGA的ARINC429總線接口卡,綜合了DSP和FPGA的各種優(yōu)點(diǎn),且接口卡應(yīng)用的協(xié)議芯片都是專用協(xié)議芯片,數(shù)據(jù)傳輸速度快、吞吐量大,板卡體積小、穩(wěn)定性高[1-2]。
ARINC429是機(jī)載電子設(shè)備之間進(jìn)行數(shù)據(jù)傳輸約定的一種標(biāo)準(zhǔn),它規(guī)定了航空運(yùn)輸工業(yè)航空電子系統(tǒng)生產(chǎn)部門(mén)對(duì)部件、通用設(shè)計(jì)、結(jié)構(gòu)及實(shí)驗(yàn)規(guī)范的要求,保證在航線上使用滿意和有必要的互換性,使那些影響設(shè)備互換性的物理和電氣特性達(dá)到最大程度的標(biāo)準(zhǔn)化,完善系統(tǒng)要求以求達(dá)到地面和機(jī)載設(shè)備的兼容性等。
ARINC429為單向傳輸總線,總線上只許有一個(gè)發(fā)送器,但可以有多個(gè)接收器,最多為20個(gè)接收器。信息只能從通信設(shè)備的發(fā)送口輸出,經(jīng)傳輸總線傳至與它相連的需要該信息的其他設(shè)備的接收口。在兩個(gè)設(shè)備間需要雙向傳輸時(shí),則在每個(gè)方向各用一根獨(dú)立的傳輸總線。ARINC429通信采用雙極性歸零制的三態(tài)調(diào)制方式BNR碼,即調(diào)制狀態(tài)由 “高“,“零”和“低”狀態(tài)組成的三電平調(diào)制狀態(tài)組成。系統(tǒng)高速工作狀態(tài)的速率為100 kb/s,低速工作時(shí)速率為12.5 kb/s[1]。
文中設(shè)計(jì)的ARINC429總線接口卡主要是完成PCI總線與ARINC429總線之間的通信。當(dāng)PC機(jī)接收數(shù)據(jù)時(shí),首先,ARICN429總線接口芯片從ARINC429總線上采集數(shù)據(jù),解碼、鎖存數(shù)據(jù),等待DSP讀取。然后,DSP讀取到ARICN429總線接口芯片采集到的數(shù)據(jù)后將其存到雙口RAM中等待PC機(jī)讀取。最后,PC機(jī)通過(guò)PCI接口芯片從雙口RAM中讀取到ARINC429總線接口芯片從429總線上采集到的數(shù)據(jù);當(dāng)PC機(jī)發(fā)送數(shù)據(jù)時(shí),首先,PC機(jī)將要發(fā)送的數(shù)據(jù)通過(guò)PCI接口芯片寫(xiě)到雙口RAM中,等待DSP讀取。然后,DSP從雙口RAM中讀取數(shù)據(jù)并將數(shù)據(jù)寫(xiě)入到ARINC429總線接口芯片的輸入寄存器中,等待發(fā)送。最后,ARICN429總線接口芯片將數(shù)據(jù)編碼、發(fā)送到ARINC429總線上[5-6]。系統(tǒng)的硬件電路結(jié)構(gòu)框圖如圖1所示。圖中FPGA主要完成地址譯碼、時(shí)序控制等功能。系統(tǒng)硬件電路主要由3部分組成:PCI接口模塊、ARINC429接口模塊、PCI和ARINC429之間的接口模塊。
圖1 系統(tǒng)的硬件電路結(jié)構(gòu)框圖Fig.1 Structure diagram of the hardware system
2.1.1 PCI接口模塊
接口卡與主機(jī)PCI總線的接口是通過(guò)PCI專用接口芯片PCI9052來(lái)實(shí)現(xiàn)的。PCI9052是PLX公司開(kāi)發(fā)的低價(jià)位PCI總線目標(biāo)接口電路,功耗低,采用PQFP型160引腳封裝,符合 PCI2.1規(guī)范,它的局部總線(LOCAL BUS)可以通過(guò)編程設(shè)置為8/16/32位的(非)復(fù)用總線,數(shù)據(jù)傳送率可達(dá)到132Mb/s,提供了ISA接口,可以使ISA適配器迅速、低成本地轉(zhuǎn)換到PCI總線上。由于PCI9052提供了和PCI總線信號(hào)相一致的接口信號(hào)引腳,所以只需要根據(jù)接口卡功能的需求將相關(guān)的信號(hào)引腳對(duì)應(yīng)連接起來(lái)即可。值得注意的是,PCI9052必須連接一個(gè)EEPROM來(lái)設(shè)置內(nèi)部寄存器。上電時(shí),PCI總線的RST#信號(hào)將PCI9052的內(nèi)部寄存器設(shè)置為缺省值,同時(shí),PCI9052輸出局部復(fù)位信號(hào)(LRESET#),并且檢查EEPROM是否存在。如果設(shè)備上裝有EEPROM,且EEPROM的第一個(gè)16字非FFFFH,那么,PCI9052根據(jù)EEPROM內(nèi)容設(shè)置內(nèi)部寄存器,否則設(shè)為缺省值。PCI9052與EEPROM的電路連接如圖2所示。
圖2 PCI9052與EEPROM的電路連接Fig.2 Connection between PCI9052 and EEPROM
2.1.2 ARINC429接口模塊
接口卡與ARINC429總線的接口是通過(guò)ARINC429總線專用接口芯片HS3282來(lái)實(shí)現(xiàn)的。HS3282是一款面向ARINC429總線、以及類似ARINC429編碼時(shí)分多路數(shù)據(jù)傳輸協(xié)議的高性能CMOS型接口芯片,能夠直接與ARINC429總線的外部連接器連接。當(dāng)發(fā)送數(shù)據(jù)時(shí),HS3282一般和驅(qū)動(dòng)芯片HS3182配合使用來(lái)將HS3282輸出的邏輯電平轉(zhuǎn)換為符合ARINC429傳輸規(guī)范的差分電平[4]。接口卡與ARINC429總線的接口電路如圖3所示。
圖3 接口卡與ARINC429總線的接口電路Fig.3 Interface circuit between interface card and ARINC429 bus
2.1.3 PCI和ARINC429之間的接口模塊
PCI和ARINC429之間的接口模塊主要是實(shí)現(xiàn)PCI協(xié)議與ARINC429協(xié)議的轉(zhuǎn)換。這部分電路主要是通過(guò)DSP與FPGA實(shí)現(xiàn)的。電路分為PCI9052與DSP之間的接口和DSP與HS3282之間的接口。
2.1.3.1 PCI9052與DSP之間的接口
PCI9052與DSP的電路連接是通過(guò)雙口RAM作為數(shù)據(jù)中繼、FPGA進(jìn)行邏輯控制來(lái)實(shí)現(xiàn)的。雙口RAM連接在DSP的外部接口上,被分配在外部接口的區(qū)域2,作為DSP的外部存儲(chǔ)器,當(dāng)DSP讀寫(xiě)雙口RAM時(shí),就會(huì)通過(guò)信號(hào)來(lái)使能雙口RAM,然后進(jìn)行相應(yīng)的數(shù)據(jù)讀寫(xiě)操作,至于PCI9052對(duì)雙口RAM的控制,則是通過(guò)片選信號(hào)UESR2/CS2#和USER3/CS3#來(lái)實(shí)現(xiàn)的。電路連接如圖4所示,這里雙口RAM選用的是IDT7028PF,F(xiàn)PGA選用的是Altera公司的EP1C12,DSP選用的是TI公司的TMS320F2812。
圖4 PCI9052與DSP之間的接口電路Fig.4 Interface circuit between PCI9052 and DSP
2.1.3.2 DSP與HS3282之間的接口
DSP與HS3282之間的電路連接主要涉及到邏輯控制、地址譯碼、中斷控制等方面,這些都是通過(guò)FPGA來(lái)實(shí)現(xiàn)的。邏輯控制的功能在于對(duì)DSP對(duì)HS3282的控制,利用DSP的讀、寫(xiě)控制信號(hào)、地址信號(hào)和外部接口的片選信號(hào),通過(guò)FPGA 的 邏 輯 運(yùn) 算 來(lái) 控 制 HS3282 的 SEL、、、、、等控制信號(hào),實(shí)現(xiàn)DSP對(duì)接口芯片HS3282的讀寫(xiě)操作;地址譯碼的功能在于當(dāng)?shù)刂房偩€上出現(xiàn)預(yù)定的地址,且讀信號(hào)或?qū)懶盘?hào)有效時(shí),能夠?qū)S3282的接收器鎖存器進(jìn)行讀數(shù)據(jù)或?qū)?shù)據(jù)寫(xiě)入到HS3282發(fā)送器的FIFO中。中斷管理的功能在于實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)母咝?,在HS3282的中斷管理中,有兩種類型的中斷:TX/R表明數(shù)據(jù)發(fā)送結(jié)束,兩個(gè)分別表明不同的接收器已完成數(shù)據(jù)的接收,如果DSP接收到中斷,將從接收器讀取數(shù)據(jù),并進(jìn)行相應(yīng)的處理;如果接收到中斷,就將數(shù)據(jù)寫(xiě)入到發(fā)送器FIFO中,進(jìn)行發(fā)送操作。當(dāng)DSP讀取數(shù)據(jù)時(shí),首先設(shè)置數(shù)據(jù)選擇信號(hào)線SEL為邏輯 “0”,并且產(chǎn)生讀允許脈沖信號(hào),這樣DSP就能讀取第一個(gè)數(shù)據(jù)字,然后設(shè)置數(shù)據(jù)選擇信號(hào)線為邏輯“1”,并且再次產(chǎn)生讀允許脈沖信號(hào),DSP就能讀取第二個(gè)數(shù)據(jù)字。當(dāng)DSP發(fā)送數(shù)據(jù)時(shí),首先通過(guò)、將數(shù)據(jù)裝入FIFO,當(dāng)ENTX信號(hào)有效時(shí),HS3282將數(shù)據(jù)發(fā)送出去。這里信號(hào)是通過(guò)地址線的最低有效位來(lái)控制的,、、、是通過(guò)讀寫(xiě)信號(hào)線和地址總線來(lái)控制的。另外,在本設(shè)計(jì)中,由1個(gè)24 MHz的晶振給FPGA提供時(shí)鐘信號(hào)源。由FPGA提供給DSP一個(gè)24 MHz的工作時(shí)鐘。同時(shí),通過(guò)分頻電路FPGA可以分別提供給HS3282的工作時(shí)鐘分別有 1 MHz、500 kHz、250 kHz、125 kHz 分別可以產(chǎn)生 100 k、50 k、25 k、12.5 k 4種429通信速率,滿足不同外部設(shè)備的要求[3]。DSP與HS3282之間的接口電路連接如圖5所示。這里DSP通過(guò)外部接口來(lái)對(duì)HS3282進(jìn)行讀寫(xiě)操作,HS3282被分配在區(qū)域0和區(qū)域1,DSP通過(guò)片選信號(hào)來(lái)分別選通雙口RAM和HS3282。
圖5 DSP與HS3282之間的接口電路Fig.5 Interface circuit between DSP and HS3282
本接口卡的軟件主要由兩部分組成:DSP數(shù)據(jù)收發(fā)程序、PCI驅(qū)動(dòng)程序。
2.2.1 DSP數(shù)據(jù)收發(fā)程序
DSP數(shù)據(jù)收發(fā)程序主要完成ARINC數(shù)據(jù)的收發(fā),接口卡的數(shù)據(jù)收發(fā)程序主要是通過(guò)中斷來(lái)完成的。如果DSP接收到D/R中斷,將從接收器讀取數(shù)據(jù),并進(jìn)行相應(yīng)的處理;如果接收到TX/R中斷,就將數(shù)據(jù)寫(xiě)入到發(fā)送器FIFO中,進(jìn)行發(fā)送操作。DSP數(shù)據(jù)收發(fā)程序流程圖如圖6所示。
圖6 DSP數(shù)據(jù)收發(fā)程序流程圖Fig.6 Flow chart of the data transceiver program
2.2.2 PCI驅(qū)動(dòng)程序
由于Windows應(yīng)用程序運(yùn)行在保護(hù)模式下,他們不能直接訪問(wèn)硬件,所以Windows應(yīng)用程序想要訪問(wèn)硬件就要通過(guò)驅(qū)動(dòng)程序來(lái)訪問(wèn),所以必須為接口卡編寫(xiě)PCI設(shè)備驅(qū)動(dòng)程序。驅(qū)動(dòng)程序主要完成設(shè)備初始化、對(duì)設(shè)備端口和內(nèi)存、寄存器的讀寫(xiě)操作。接口卡使用的PCI設(shè)備驅(qū)動(dòng)程序是微軟公司推出的WDM驅(qū)動(dòng)程序。對(duì)于WDM驅(qū)動(dòng)程序,微軟公司提供了專門(mén)的驅(qū)動(dòng)程序開(kāi)發(fā)包Windows XP DDK,但是DDK開(kāi)發(fā)難度較大,周期長(zhǎng),不容易掌握,所以本文采用Numga公司提供的開(kāi)發(fā)工具Driver Studio來(lái)實(shí)現(xiàn)。Driver Studio制作的類庫(kù)封裝了DDK函數(shù),提供的開(kāi)發(fā)向?qū)Э梢陨纱a框架,與Visual C++完全兼容,大大簡(jiǎn)化了WDM驅(qū)動(dòng)程序的編寫(xiě)。
文中設(shè)計(jì)的ARINC429總線接口卡,分別使用PCI9052和HS3282作為PCI總線和ARINC429總線的接口芯片,使用FPGA進(jìn)行邏輯控制、時(shí)序控制,提高了系統(tǒng)的集成度、穩(wěn)定性。數(shù)據(jù)收發(fā)過(guò)程由卡上的DSP控制,無(wú)需占用計(jì)算機(jī)資源,具有高速、可靠、實(shí)時(shí)性好的優(yōu)點(diǎn)。接口卡已在某綜合航電測(cè)試系統(tǒng)中得到應(yīng)用,能夠滿足測(cè)試系統(tǒng)的需求,有很高的實(shí)用價(jià)值。
[1]支超有.機(jī)載數(shù)據(jù)總線技術(shù)及其應(yīng)用[M].北京:國(guó)防工業(yè)出版社,2006.
[2]孫麗明.TMS320F2812原理及其C語(yǔ)言程序開(kāi)發(fā)[M].北京:清華大學(xué)出版社,2008.
[3]史國(guó)慶,高曉光,吳勇,等.基于PCI總線的ARINC429總線接口板硬件設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,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總線接口設(shè)計(jì)[J].航空計(jì)算技術(shù),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]張華強(qiáng),郭小娟,張慶榮.基于DSP的ARINC429總線接口卡的設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)量與測(cè)試技術(shù),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嵌入式智能接口板硬件設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算機(jī)工程與設(shè)計(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.