新闻中心

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

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

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

3.2DMA传输实现

采用DMA传输能极大的减轻主机处理负担,特别适用于大数据量处理系统。采用DriverWorks提供的KDmaAdapter类可轻松建立一个DMA传输链路,实现DMA读写操作。用于FPGA总线协议模块软件层完成了相关DMA传输的控制,所以驱动程序DMA传输只需子在系统启动DMA传输时,身心相应的内存作为公共缓冲区,用于外部DMA控制器存入数据文件,这里需要调用DriverWorks提供的KCommonDmaBuffer类[10],该类常用函数如表2所示。

VirtaulAddress()函数返回的内核模式地址是提供给驱动程序读写公用缓冲区用的,而进行DMA传输时需要用到缓冲区的物理地址,也即需要写入DMA参数寄存器的是缓冲区的物理地址。

3.3总线中断处理

采集卡一共需要处理三种中断请求,分别是DMA写完成,DMA读完成和错误中断请求。在Driver-Works平台中,KInterrupt类可用于处理硬件中断,其主要函数包括中断寄存器初始化,中断连接函数,实现了将一个中断服务例程连接到一个中断和解除其连接等。

表2KCommonDmaBuffer类主要函数中断处理函数首先在驱动程序构造的函数中调用MEMBER_ISR(class_name,fuction_name),声明中断服务例程为该类的一个成员函数,接着在驱动程序驱动例程中调用InitializeAndConnect(),初始化中断类实例,并与中断服务例程连接起来。

这样就完成了对外部硬件中断的处理,当每次驱动程序检测到硬件产生中断脉冲时,中断服务函数随即被调用,从而转入相应中断处理程序中执行。

4采集卡性能测试

为测试采集系统性能,自行设计了应用软件对采集卡数据传输速率进行统计,在Windows环境下,采用多种数据量进行DMA方式读写。应用端软件根据数设定的数据包大小,申请不同的内存空间,并将虚拟地址映射到FPGA的DMA寄存器。实际测试采集速率结果如图4所示。

图4实际测试数据采集速率

图4实际测试数据采集速率

根据图4的测试结果,总线DMA传输速率与数据块大小相关。当设定系统数据块(即开辟的主机内存)大于32Mb时,采集卡的采集速率稳定在5.6Gb/s.实验结果表明,该系统大幅度地提高了数据交互速度,发挥了总线的优越性能。

5结语

本文应用Xilinx公司的-6芯片设计了 卡,通过调用FPGA内部的E集成协议硬核,配合总线DMA控制器,能够快速可靠地采集外部差分数据,具有解码、整形,存储的功能,是大数据量交互的有效解决方案。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭