基于PCI局部总线的1553B总线接口卡设计
摘要:根据1553B数据总线协议及其接口技术要求,设计了一种基于PCI局部总线的1553B总线接口卡。系统使用PLX公司的PCI9052和DDC公司的1553B协议芯片BU-61580,通过FPGA芯片EP1C12B进行PCI协议和1553B协议的转换,使用DSP控制器TMS320F2812作为下位机的主控单元,并编制了接口卡驱动程序,实现了1553B总线和PCI总线的转换。
关键词:PCI局部总线;1553B总线;总线接口卡;数据总线协议
在航电系统的研制初期,通常要先在地面以微型计算机为基础做各种仿真实验。这使得用于各仿真系统的接口板的研制和革新工作便同时成为航电系统发展的一个重点。接口板的主要任务是实现航电系统的数据总线与PC机的数据总线之间的通信功能,这使PC机可以模拟航电系统数据总线上所挂接的实际子系统。PCI(Peripheral Component Interconnect)总线,即外围部件互连总线,是一种先进的高性能32/64位地址数据复用局部总线,可同时支持多组外围设备。PCI局部总线不受制于处理器,为中央处理器及调整外围设备提供一座桥梁,更可作为总线之间的交通指挥员,提高数据吞吐量,具有支持线性突发传输、极小的存取延误、采用总线主控和同步操作、兼容性强等优点。本文设计了一种基于PCI总线的接口板,其服务对象是MIL-STD-1553B总线,并编写其在Windows下的驱动程序。
1 1553B总线协议
MIL-STD-1553B是一个关于数据总线电器特性和协议规范的军事标准,这个标准规定了飞机内部数字式的命令/响应时分制多路数据总线的技术要求,也规定了多路数据总线的操作方式和总线上的信息流的格式以及电气要求。其作用是提供一个在不同系统之间的传输数据和信息的媒介。
1553B数据总线以异步、命令/响应方式执行数据信息的传输,是一种计双工通信方式,它有3种终端类型:总线控制器(BC)、远程终端(RT)和总线监视器(BM)。BC是总线上惟一被安排为执行建立和启动数据传输任务的终端,BC控制数据总线上所有数据信息的传输,任何时候总线上只有一个BC。RT是用户子系统到数据总线上的接口,它在BC的控制下提取数据或吸收数据。MT“监控”总线上的信息传输,以完成对总线上的数据源进行记录和分析,但它本身不参与总线的通信。各终端之间信息传输方式有:BC到RT,RT到BC,RT到RT,广播方式和系统控制方式。1553B数据总线上的信息流由消息组成,一个完整的消息包括命令字、数据字和状态字3种类型。每个字的字长为20 b,其前3位为同步字头,有效信息位是16位,最后一位是奇偶校验位,采用奇校验,消息字采用曼彻斯特Ⅱ型码调制信号,所有消息格式都是基于前面所述的3种字类型。
2 系统设计方案
系统设计分为2个部分:硬件电路的设计和软件驱动程序及应用程序的设计。
2.1 系统硬件设计
系统完整的硬件电路结构如图1所示,主要包括1553B总线接口模块、PCI总线接口模块和逻辑控制模块。系统设计主要实现1553B总线和PCI总线之间的通信,因为在1553B总线上传输的是双极性差分信号,所以要对发送或接收的信号进行电平转换和相应的调制解调,1553B总线接口模块即用来完成数据的组织和编码或解码。PCI总线接口模块完成接口卡与上位机的通信。双端口RAM作为2个模块的数据中继,逻辑控制模块则将这2个模块连接成为一个系统。上位机通过PCI总线接口模块将欲发送的数据存入双端口RAM中,逻辑控制模块根据通信协议将数据送到1553B总线接口模块,1553B总线接口模块将此数据进行组织和编码,发送到1553B主总线上;或1553B总线接口模块从主总线上接收到数据,进行解码并存放在存储器。然后通知上位机,上位机通过PCI总线接口模块从存储器中取出数据以及本次1553B总线操作的状态信息。
2.1.1 1553B总线接口模块设计
1553B总线接口模块主要包括1553B协议芯片、隔离变压器和时钟晶振。1553B协议芯片采用DDC公司的BU-61580,芯片包含2个低功耗的双端收发器、协议逻辑、存储器管理逻辑、处理器接口逻辑及4K×16 b内置共享静态RAM以及直接面向主处理器的缓存接口组成,最多可扩展64K×16 b的外部RAM。协议芯片通过短截线与1553B主总线相连。而在协议芯片与短截线之间需要设置隔离变压器,该隔离变压器将1553B主总线与接口卡直流隔离,防止接口卡上产生的噪声影响1553B主总线上的信号。
BU-61580功能上集成了BC/RT/BM一体化设计,可以编程设置BU-61580的配置寄存器来设定系统的工作方式,例如本系统中,通过软件编程BU-61580配置寄存器1的位15为逻辑“1”,位14为逻辑“0”,可使BU-61580工作于RT方式。内存管理模式可选是BU-61580的RT的一大特点。为了下位机处理器可以方便的存取从给定地址接收有效的、完整的数据块,保证为处理器提供最高程度的数据采样一致连贯性,RT方式的内存管理采用双缓冲模式,该模式下可以有选择地将接收的广播消息分解为非广播消息。具体实现方法是为每一个接收到的消息提供2个32位的数据字块,一个为激活的,另一个为停止的。当前命令结束后,BU-61580自动切换该子地址的数据块的激活区域与停止区域,这样,当向同一子地址发送命令时,如果数据有效并且双缓冲区允许,数据会保存到另一个数据块中,而不会使上一次的数据被覆盖。
与下位机连接方面,BU-61580的接口配置采用16位缓冲模式,它向下位机提供了一个直接共享RAM接口。在该模式下,BU-61580的数据、地址总线与主机的总线地址隔离,并且BU-61580的寻址空间限制在其内部RAM4K字的范围内。
2.1.2 逻辑控制模块设计
PCI总线接口模块与1553B总线接口模块之间的逻辑控制电路通过可编程逻辑器件和DSP实现。可编程逻辑器件采用了Altera公司的EP1C 12B芯片,其主要实现地址译码、数据缓存、逻辑控制、握手连接和与BU-61580的协议转换等功能。EP1C12B芯片内部的RAM资源作为双端口RAM和BU-61580之间的数据通道。下位机主控单元DSP控制器采用TI公司的TMS320F2812,用于控制EP1C12B完成1553B总线接口模块对双端口RAM的数据吞吐。上位机对1553B协议芯片进行操作时,相应的数据信号、地址信号和控制信号通过PCI总线发送到双口RAM中。DSP控制FPGA从双口RAM中取出该地址信号和控制信号进行译码,产生对应的地址信号以及控制信号送到BU-61580。如果操作是向1553B主总线发送数据,则同时将数据信号送到BU-61580的数据线。一次读写操作结束时,BU-61580将输入FPGA的READY信号拉低,通知FPGA读写操作结束。如果有中断产生,则在输入FPGA的INT引脚上产生中断波形(下降沿或低电平)。根据BU-61580输入FPGA的中断信号、握手信号或数据信号等,FPGA相应产生上位机需要的中断信号、握手信号、插入等待信号和数据信号等,送到PCI总线上。
2.1.3 PCI总线接口模块
PCI总线接口模块包括PCI协议芯片及其配置电路。PCI协议定义了严格的电气特性和时序要求,其接口电路实现难度大,采用专用的PCI接口芯片,可以避开复杂的PCI协议的细节设计,大大缩短开发周期。本系统选用的是PLX公司生产的PCI9052接口芯片作为PCI总线控制器,实现接口卡与PCI总线的桥接。
在进行驱动编写前,需要根据功能需求对PCI9052芯片进行相应的配置操作。PCI9052芯片有2类寄存器:PCI配置寄存器和局部总线配置寄存器。PCI配置寄存器的内容反映配置空间的情况,它的配置空间的内容包括PCI设备号DID,制造商号VID、中断号、设备类型号、局部空问基地址、局部空间描述符、片选响应以及局部响应控制CNTRL等信号,这些配置信息在芯片复位时通过串行E2PROM加载。PCI9052会自动根据该E2PROM的状态决定其内部寄存器值。E2PROM中的配置信息的正确与否关系着整个板卡是否能够正常工作。当系统配置成功后,接口卡可被PC机识别,即可进行驱动程序的开发。
2.2 系统软件设计
2.2.1 驱动程序设计
设备驱动程序提供连接到计算机的硬件的软件接口,所要完成的任务是链接应用层和硬件层,使操作系统识别具体硬件,并使用硬件资源。微软公司提供了专门的驱动程序开发工具包Windows XP DDK,但是DDK开发难度较大,周期长,不容易掌握,Numga公司的开发工具Driv er Studio可以大大简化驱动程序的开发过程,它制作的类库封装了DDK的函数,完全兼容所有的DDK函数,它封装了比较底层的繁复操作,减少了对简单接口的复杂操作,专门提供了的开发向导Wizard与微软的Visual C++紧密地集成,驱动程序代码框架只需要在DrivetWorks工具向导程序的指引下,根据硬件的具体参数填写必要步骤即可完成。另外,Driver Wizard还能生成专为特殊设备定制的代码,比如PCI设备,ISA设备等。
驱动程序的基本功能是完成设备的初始化、对端口的读写操作、中断的设备和响应及中断的调用,以及对寄存器和内存的直接读写。在Driver Studio生成的程序框架上,根据具体的要求添加新的类对象和代码,结合接口卡的特点,编写一些特殊的驱动,在VC下编译后即可得到所需的驱动程序。
2.2.2 应用程序设计
Windows系统为用户提供了一些API函数,用于向WDM结构的驱动程序发命令以及进行数据交换,在内核区存在各种与之相对应的处理例程,见表1。
总线 接口卡 设计 1553B 基于 局部 PCI 相关文章:
- PLC、FCS、DCS三大控制系统区别(07-07)
- 为什么要使用CAN总线?(05-31)
- 基于CAN总线的智能家居安防系统设计(10-11)
- 如果CAN总线中节点ID相同会怎样?(08-31)
- 使用QDR-IV设计高性能网络系统之二(06-08)
- CANOpen协议如何保证通讯不丢帧?(06-08)