曹雄伟,朱 岩,史国庆
(西北工业大学 陕西 西安 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.