基于PCI Express的双路IEEE 1394b接口卡的设计与实现

时间:2024-12-27 21:10:02 来源:作文网 作者:管理员

摘 要: 在此选用PLX公司的桥芯片PEX8114,设计并实现基于PCIe架构的双路1394b总线接口卡的硬件平台。在该平台上进行基于VxWorks操作系统的1349b驱动开发和主机PCIe接口驱动开发。经过与1394总线测试设备的验证测试,两路1394b总线接口可以实现400 Mb/s的高速数据实时传输,证明了该模块系统应用的可行性和可靠性,对其他通信系统的设计具有参考价值。

关键词: IEEE 1394b; OHCI; PCI Express; 高速串行总线; PowerPC处理器

0 引 言

随着嵌入式控制领域对大容量、高速、实时数据传输需求的不断增长,以IEEE 1349b总线为代表的ภ新一代串行总线应运而生,在工业控制、汽车和航空航天等领域应用越来越广。同时由于总线速率和处理器主频的不断增强,要实现外部高速总线数据的传输和处理,还必须选择与之匹配的主机接口来实现外部总线协议逻辑与处理器的高速互联。采用传统的PCI总线的并行数据传输接口已经无法满足芯片级互连对带宽、成本、灵活性及可靠性的要求。串行点对点的PCI Express(简称PCIe)总线克服了PCI总线在系统带宽、可靠性和可扩展性等方面的固有缺陷。

本文针对PCIe的技术优势,采用PCIe?PCI桥芯片(PEX8114),实现了双路IEEE 1394b总线接口卡。1394链路层接口以高速DMA方式将数据传输到主机,以满足高速实时采集的应用需求。

1 IEEE 1394b总线网络简介

IEEE 1394b通信系统的层次结构见图1。1394节点由主机和1394接口两部分组成。其中驱动和应用软件驻留在主机上,驱动软件以一组标准API函数形式提供给应用程序,应用程☼序通过调用驱动软件完成对1394b模块功能的使用、管理与控制。1394b接口模块主要实现了3个协议层:事务层(Transaction layer)、链路层(LLC)和物理层(PHY)。

1394b通信可以同时支持等时和异步传输模型和服务,可以满足不同应用的要求。异步传输是一种确认的传输方式,用于对数据传输的可靠性要求较高的场合。等时传输是一种无应答的传输方式,强调数据的实时性,特别适合大容量图像和视频数据的传输。

由于IEEE 1394b总线高带宽、低延迟、支持独立于主机的点对点传输、良好的可扩展性和升级能力等特点,使其可以作为航空航天领域设备的互联总线。特别是随着航空电子设备智能化、自动化功能的增强,使基于图像识别、跟踪和测量变得日益重要,大容量高速传输图像数据成为航空电子系统的一个重要特点。所以充分利用IEEE 1394b总线的这些优越性能,适时地将其应用到航空电子统一网络中,可视为解决通信问题的明智选择。

2 系统硬件设计

2.1 PCIe主机接口的实现

实现通用PCIe总线接口主要有以下两种方式:

(2) 可编程逻辑设计方案。现阶段,主流的FPGA和DSP厂商都在其产品中集成了基于PCIe协议的IP核,其优点在于高度集成,节省PCB资源,具有灵活的可编程性,但开发难度比较大,开发周期比较长。

2.2 基本硬件配置

链路层芯片TSB82AA2提供了PCI主机接口和与物理层连接接口,实现CRC校验以及同步服务,该芯片中集成了中断寄存器、发送/接收FIFO和DMA通道控制器。物理层芯片完成物理层功能,实现仲裁机制,对收发信号进行编码/解码。

1394b的链路层?物理层接口交联信号包括PCLK、LCLK_PMC、CTL0?CTL1、D0?D7、LREQ、PINT、LPS以及S5_LKON,具体连接方式如图3所示。

2.4 高速电路与PCB设计

1394b接口卡的PCB设计遵循高速信号布线和信号完整性的要求。PCIe?1394b接口卡主要包括PCIe接口和1394b总线接口两部分高速电路设计。模块设计时主要考虑了以下几点:

(1) 元器件布局合理,应尽量保持1394物理/链路层接口接近,PCIe桥芯片与主机连接器接近,以减少噪声耦合和信号的损耗;

(2) 电源变换芯片的位置应远离晶振、1394物理层、高速信号等敏感区域,并且耦合电容应尽量靠近各芯片的电源管脚,以减少噪声耦合的机会;

(3) 1394物理端口应设计端接网络以实现与线缆传输线的阻抗匹配,并且端接网络尽量靠近物理层芯片的TP管脚;

(4) 1394和PCIe总线都采用差分信号,差分信号对在走线时要求同一组内的差分信号严格等长,组和组之间的信号长度尽量一致,以保证信号编码的对称性;

(6) 其他减少电磁干扰的措施还包括:保证地线回路与信号通路尽量接近,避免地线回路不连续,布线时不使用90°拐角的信号线等。

3 VxWorks环境下驱动的开发

在本文中与该1394b接口卡适配的主机采用飞思卡尔公司的PowerPC8640处理器,移植嵌入式实时操作系统VxWorks5.5,在Tornado环境下开发系统驱动。驱动软件作为应用程序与硬件通信的桥梁,对系统性能有着ค重要影响,可靠的驱动软件是硬件稳定运行的保证。

PCIe?1394b接口卡驱动软件结构图如图4所示,驱动软件主要由主机PCIe接口驱动和IEEE 1394b总线驱动组成。

3.1 主机PCIe接口驱动开发

系统上电后,主机PCIe接口驱动软件对PowerPC8640的PCIe总线控制器和桥芯片PEX8114进行配置,配置完成后,主机就可以访问1394设备。配置流程如图5所示。

首先初始化PowerPC8640的基地址和空间大小。PowerPC8640在内部定义了多个局部存取窗口,按照优先级选取一个窗口作为PCIe的配置窗口,可设置窗口的基地址和窗口大小。然后扫描PCIe链路上的PCIe设备,这时能扫描到PowerPC8640的PCIe设备,通过查看ID号可判定。在扫描到PowerPC8640的PCIe设备后进行PCIe链路训练,查询训练状态。如果状态为0x16,训练通过,PCIe链路正常,可以进行下一步设置;如果不是,则需要检查链路上的异常,出现异常一般需要看物理链接、时钟、以及PCB走线等。训练通过后进行PowerPC8640的PCIEe设备寄存器设置,需要把PowerPC8640的PCIe设备配置为主设备,设置PowerPC8640的PCIe设备为BUS0,点对点连接的设备(PEX8114)为BUS1。

3.2 IEEE 1394b总线驱动设计

3.2.1 1394 OHCI协议

本文基于1394 OHCI协议的驱动程序设计。1394 OHCI是专门针对主机端开发的协议,也是IEEE 1394串行总线链路层协议的一种具体实现方式,并附带一些支持事务层和总线管理层的特性。1394 OHCI还包含高性能DMA数据传输和一个主机总线接口。该接口既可作为主机总线上的主设备,又可作为从设备。作为一个从设备,它译码并响应主机对1394 OHCI内部寄存器的访问。作为一个主设备,采用DMA方式发送(AT DMA)和接收(AR DMA)所有在IEEE 1394协议中规定的数据包,实现1394的异步传输和等时传输。

如图6所示,1394接口卡通过PCI总线把1394 OHCI的寄存器映射到内存,并且内存和1394卡上都有FIFO存储空间作为传输数据的缓存,这样所有对1394寄存器的操作和数据收发都转变成对内存的操作。所有收发数据都驻留在CPU端内存空间中所创建的1394 FIFOs中,当启动发送或接收时,1394链路层芯片的DMA控制器会自动的读取或写入内存中1394 FIFOs中的数据,从而在不需CPU直接参与的情况下,实现了CPU和1394设备之间的数据流搬移,减少软件开销。

3.2.2 设备管理

(2) 物理层操作。物理层操作的驱动程序可以实现对物理层芯片的所有寄存器的读/写访问,从而获取相关总线信息。物理层寄存器的访问是通过一系列的链路层寄存器访问来实现。通过访问物理层寄存器,可以控制和获知总线状态,如发起总线复位,强制根结点等。

(3) 总线操作。所有与总线信息相关的驱动都包含在总线操作的驱动程序中,包括总线拓扑图的生유成,速度图的生成,等时带宽资源的获取、分配以及释放,等时通道资源的获取、分配以及释放,总线管理器ID的获取和强制总线复位发起。

3.2.3 通信管理

通信管理提供异步流的发送和接收,等时接收功能。另外通过异步4 B数据包读/写,异步块数据包读/写的驱动功能完成异步传输。异步包的特点是保证数据的正确到达,他是一种点对点的数据包。异步流包和异步包不同,异步流包采用等时数据包格式,但是在异步周期里发送,这样做的优点是保证数据包的正确传递,同时支持一对多通信。

(1) 异步流包发送。由主机通知链路层芯片该消息数据准备好,根据数据包发送条件判断出该数据包具备发送条件后,配置异步流发送上下文,启动DMA,链路层芯片从主机内存中指定的数据包地址中将数据搬移到链路层芯片的FIFO 缓冲中,然后启动并完成异步流的发送。异步流包发送流程如图8所示。

(2) 异步流包接收。设备在接收到消息之前,首先在设备的初始化时,初始化主机内存中的缓冲区,配置异步流的接收上下文链,启动接收,当设备检测到数据包到达时,物理层芯片根据接收的上下文配置,将和配置的通道号匹配的异步流包上传链路层,链路层启动DMA将接收到的数据直接放在接收上下文指定的主机缓冲区内,然后更新接收的上下文,自动切换到下一个缓冲区对应的上下文。

(3) 等时包发送和接收。OHCI协议规定了至少有8个DMA通道可以用来发送等时数据,每个等时通道在每个等时周期只能发送一个数据包。等时包的发送流程与异步流包的发送路程类似,这里不再赘述。等时包的接收流程,如图9所示。

3.2.4 中断管理

中断管理接口用于实现中断回调接口的注册和注销等功能。任何一次DMA传输完成或退出,芯片都会产生一个中断通知主机,主机通过读取中断事件寄存器来判断发生了何种中断。根据初始化时已经配置好的中断屏蔽寄存器,针对其中使能的每一种中断原因编写相应的中断服务例程,由中断管理接口完成中断例程的挂接。

4 IEEE 1394b总线¡通信测试

图10 IEEE 1394b总线通信的测试环境

5 结 语

本文从航空电子系统大容量信息传输的需求出发,提出航空电子系统基于IEEE 1394b高速串行总线实现数据传输的设想。借助成熟的PCIe互联技术,在板卡上构建了两路1394b通信接口,以PowerPC8640为主机,开发了基于VxWorks操作系统的1349b驱动程序和主机PCIe接口驱动程序。经过实际的通信测试,证明将这种高速串行总线技术应用到航空电子系统中的图像数据通信是可行的。

参考文献

[2] 王齐.PCIExpress体系结构导读[M].北京:机械工业出版社,2011.


热门排行: 教你如何写建议书