新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于Virtex 6的PCI Express高速采集卡设计

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

作者:时间:2013-02-22来源:网络收藏

在初始化阶段,在无需固件或操作系统软件的介入下,物理层建立状况状态机通过检测、配置和轮询来协商可用的通道数目和双方的工作频率。

图2集成硬核顶层模块接口组成框图

图2集成硬核顶层模块接口组成框图

图3PCIExpress分层传输过程

图3分层传输过程

2.2高速传输实现

作为采集卡数据传输主控,FPGA内部实现了高速数据传输DMA控制操作。为了接收上位机发出的DMA控制命令,系统首先必须分配一定大小的FPGA内部BlockRAM用作DMA控制寄存器,在驱动程序的映射下,该BlockRAM在采集卡插入系统是会被映射到主机内存空间,于是主机只需访问映射好的内存空间即可实现对FPGA内部控制寄存器的访问。

当系统启动传输时,上位机首先将DMA传输的目的地址写入相应的DMA控制寄存器。在接收到采集命令后,采集卡开始接收外部数据,并对数据进行解码、整形,按顺序将数据依次通过高速FIFO送入外部SDRAM进行缓存。当SDRAM数据有效后,通过触发信号启动DMA传输,DMA控制器将申请从SDRAM中将数据写入到数据发送FIFO,由发送模块将发送数据FIFO中的数据按照EndpointBlockPlus核的事务(TRN)接口的格式提交给IP核,由IP核按照总线规范将数据传至FPGA的GTP收发器,GTP收发器直接连接了-E的差分数据传输对,于是通过PCI-Ex8通道将数据以DMA方式直接存入主机物理内存中[5,7-8]。当存完一个数据包后发出中断消息通知主机上层应用程序处理数据以及将物理内存中的数据转存至硬盘,之后即进入下一个数据包的传输,如此反复,直到收到主机的停止DMA传输命令,即完成当前帧的采集和传输并停止下一帧的采集和传输。

3PCI采集卡驱动设计

本系统驱动程序在WindowsXP操作系统下,应用微软公司的DriverStudio平台进行开发。DriverStudio平台提供了驱动程序开发所需的WDM(Windows DriverMode,Windows驱动程序模型),包括VtoolsD、DriverWorks、DriverNetWorks和SoftICE等开发工具,应用该平台开发降低了驱动程序开发的难度,同时了提高了代码的可靠性[9]。

3.1硬件驱动驱动程序

对外部硬件的访问是通过DriverWorks提供的2个类来实现的,其中,KioRang类实现对I/O映射芯片的访问,KMemoryRang类实现对内存映射芯片的访问。本系统选择了KMemoryRang完成PCI Express硬件的访问,主要调用函数如表1所示。

表1

KMemoryRang类主要函数初始化KMemoryRang类的操作是在驱动程序启动例程中执行的,主要执行程序如下:NTSTATUSPCIeDevice(KIrpI)

{…

PCM_RESOURCE_LIST pResListRaw=I.AllocatedResources();PCM_RESOURCE_LIST pResListTranslated=I.TranslatedResources();m_MemoryRange.Initialize(pResListTranslated,pResListRaw,0);…

}当驱动程序完成初始化时,应用端软件将通过inb()和outb()等函数对外部硬件电路进行访问,读写数据。



评论


相关推荐

技术专区

关闭