基于Virtex-6的PCI Express高速采集卡设计

时间:2013-04-22来源:网络

b.JPG


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所示。

c.JPG


初始化KMemoryRang类的操作是在驱动程序启动例程中执行的,主要执行程序如下:
d.JPG
当驱动程序完成初始化时,应用端软件将通过inb()和outb()等函数对外部硬件电路进行访问,读写数据。

1 2 3

关键词: Express Virtex PCI 高速采集

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版