基于Virtex-6的PCI Express高速采集卡设计
摘要:为了提高数据采集速率,适应大数据量交互处理要求,介绍了一种应用Virtex-6芯片的PCI Express高速采集卡设计。Virtex-6内嵌PCIE协议硬核能完成完整的PCIE分层协议,实现与上位机通信。设计了DMA控制器,作为采集卡数据传输主控,实现基于PCI Express总线的DMA高速数据传输方案。主机软件系统包括驱动程序和应用软件2部分。经实验测试,该采集卡能完成时外部高速数据的实时采集,性能稳定可靠。
关键词:数据采集;PCI Express;FPGA;DMA
随着计算机技术的发展,以及大数据量交互的需要,硬件系统对PC总线传输速率、数据完整性提出了越来越高的应用要求。传统的PCI总线技术虽然经过不断的改进,开发出64 b,66 MHz的并行协议PCI-X标准,但由于并行总线整体设计难度以及造价高昂,主流的PCI技术已经成为限制数据传输系统性能发挥的瓶颈。因此,第3代I/O技术PCI Express总线标准一经推出即成为取代PCI总线的下一代标准,并得到迅速的发展。
PCI Express总线利用串行的连接特点能轻松的将数据整体传输速度提到一个更高的频率,达到远远超出以往PC总线的传输速度,同时保证了数据的完整性。PCI Express连接采用点对点差分传输,可以被配置成最高x32的数据带宽,其中:PCI Express Gen2.0标准的x1通道传输能力达到单向5 Gb/s。PCI Express总线设备可以通过主机桥接器芯片进行基于主机的传输,也可以通过交换器进行多点传输,这极大的拓展了PC总线的开发灵活性。Xilinx公司的Virtex-6系列FPGA芯片内嵌了PCI Express协议硬核,支持x1,x2,x4和x8通道传输,为实现PCI Express总线解决方案单片集成提供了可能。
本文在研究PCI Express协议标准及其接口技术的基础上,设计了基于Virtex-6 FPGA芯片的PCI Express高速数据采集卡,实现了外部系统与PC的数据交互。
1 系统总体设计
PCI Express采集系统组成框图如图1所示。
采集系统以FPGA作为采集卡的控制核心,外部数据经数据接口传入FPGA,FPGA通过内部逻辑对高速数据进行必要的时序控制和相关处理后将数据存储到片外的SDRAM进行缓存,然后采集卡在总线主控DMA控制器的控制下,通过PCIE x8通道将缓存的数据写入计算机内存。上位机由驱动软件识别PCIExpress采集卡,并设置DMA控制寄存器,通过上层应用软件接收硬件电路发送到内存的数据,并在每次传输结束是处理中断。采用DMA模式传输实现了在实时数据高速采集的同时,不影响上位机对数据的处理工作,不仅提高了采集系统整体的采集速度,也保证了数据质量,以及测试分析完整性。
数据接口模块完成外部数据的差分接收,这有利于保证高速数据的传输质量。Virtex-6 FPGA实时接收差分信号,并在Data Processor模块中进行解码然后根据一定时序通过高速FIFO缓存送入外部SDRAM存储模块。PCI Express IP Core为Virtex-6 FPGA内部集成协议硬核,完成数据的分层打包,DMA控制器作为PCI Express总线传输的主控,实现了DMA方式传输。
2 采集卡硬件设计
2.1 基于IP Core的PCI Express接口设计
本采集卡采用Xilinx公司的Virtex-6系列FPGA芯片作为核心控制器。该款FPGA中内置了PCI Express集成模块和RocketIO GTP收发器,提供了符合《PCI Express基本规范v2.0》的PCI-E解决方案,单通道最高设计速度达到5 Gb/s。根据PCI-E总线的分层模型,Virtex-6集成端点模块提供事务层(TL)、数据链路层(DLL)、物理层(PHYMAC)以及配置空间所具有的全部功能。通过使用Xilinx公司提供的PCI Express LogiCORE IP Endpoint Block Plus核,可实现符合PCI-E总线协议的数据传输。Endpoint Block Plus核在内部例化了Virtex-6集成端点模块,实现了集成端点模块和GTP收发器之间的数据传输。集成硬核顶层模块接口组成如图2所示。
Xilinx公司所提供的PCI Express解决方案,遵守了PCIE分层协议标准,从完成对接收的数据进行分层打包,通过PCIE接口与计算机通信。分层传输过程如图3所示。
其中处理层主要是接受从软件层送来的读写请求,并且建立一个请求包传输到数据链路层。作为事务层和物理层之间的接口,数据链路层通过维护链路活跃状态信息、流控制初始化和流控制来确保数据的完整性、数据包的有序性和数据传输的可靠性。物理层位于PCIE结构的最底层,主要实现链路的建立、通路的分配、时钟的编码和并行数据与串行数据的之间的转换。在初始化阶段,在无需固件或操作系统软件的介入下,物理层建立状况状态机通过检测、配置和轮询来协商可用的通道数目和双方的工作频率。
2.2 高速传输实现
作为采集卡数据传输主控,FPGA内部实现了高速数据传输DMA控制操作。为了接收上位机发出的DMA控制命令,系统首先必须分配一定大小的FPGA内部Block RAM用作DMA控制寄存器,在驱动程序的映射下,该Block RAM在采集卡插入系统是会被映射到主机内存空间,于是主机只需访问映射好的内存空间即可实现对FPGA内部控制寄存器的访问。
当系统启动传输时,上位机首先将DMA传输的目的地址写入相应的DMA控制寄存器。在接收到采集命令后,采集卡开始接收外部数据,并对数据进行解码、整形,按顺序将数据依次通过高速FIFO送入外部SDRAM进行缓存。当SDRAM数据有效后,通过触发信号启动DMA传输,DMA控制器将申请从SDRAM中将数据写入到数据发送FIFO,由发送模块将发送数据FIFO中的数据按照Endpoint Block Plus核的事务(TRN)接口的格式提交给IP核,由IP核按照PCI Express总线规范将数据传至FPGA的GTP收发器,GTP收发器直接连接了PCI-E的差分数据传输对,于是通过PCI-E x8通道将数据以DMA方式直接存入主机物理内存中。当存完一个数据包后发出中断消息通知主机上层应用程序处理数据以及将物理内存中的数据转存至硬盘,之后即进入下一个数据包的传输,如此反复,直到收到主机的停止DMA传输命令,即完成当前帧的采集和传输并停止下一帧的采集和传输。
3 PCI Express采集卡驱动设计
本系统驱动程序在Windows XP操作系统下,应用微软公司的Driver Studio平台进行开发。Driver Studio平台提供了驱动程序开发所需的WDM(Windows Driver Mode,Windows驱动程序模型),包括VtoolsD、DriverWorks、DriverNetWorks和SoftICE等开发工具,应用该平台开发降低了驱动程序开发的难度,同时了提高了代码的可靠性。
3.1 硬件驱动
驱动程序对外部硬件的访问是通过DriverWorks提供的2个类来实现的,其中,KioRang类实现对I/O映射芯片的访问,KMemoryRang类实现对内存映射芯片的访问。本系统选择了KMemoryRang完成PCIExpress硬件的访问,主要调用函数如表1所示。
- 高速串行数据链路的自动化一致性测试(04-15)
- 用FPGA构建PCI Express端点器件的最佳平台(03-10)
- 基于PXI Express的NI FlexRIO模块满足自动化测试需求(10-17)
- 基于PCI ExPress总线传输的视频采集系统方案(03-23)
- 利用基于PXI Express的NI FlexRIO模块,满足自动化(07-13)
- 基于PCI Express接口的数据 采集存储系统设计(12-11)