关于Xilinx PCIE DMA的问答

很久没上博客园了,但由于之前在博客园写了几篇关于PCIE DMA的文章,很多同学给我发消息询问相关知识点,之前有空的时候都是语音一小时跟人细讲,最近由于工作繁忙,有回复不周的,敬请谅解。综合大家提出的问题,对其中几个有代表性的问题,在这里做一下统一回复。

问:PCIE DMA主要用来做什么?

答:PCIE DMA主要用来解决数据在FPGA和PC之间高速通信的问题

问:学习PCIe,应该从什么地方起步?

答:分研究型和应用型,研究型从XAPP1052起步,应用型从XDMA起步

问:XILINX提供了三种PCIE IP核,各有什么区别?

答:第一种 7 Series Integrated Block for PCI Express,这个是最基础的PCIE硬核,实现的是PCIE的物理层、链路层和事务层,提供给用户的是以AXIS接口定义的TLP包。用户如果要往PC发数据,就要在逻辑端组好MEM_WR事务包送到AXIS接口上,同样要从PC获取数据,就要发送MEM_RD事务包,然后获取到COMPLETE事务包,再从COMPLETE事务包中提取出数据。要用这个IP核,需要对PCIE协议有清楚的理解,如果你只是想用PCIE传输数据,又不想去深究协议,那么建议您使用其余两个IP核。第二种 AXI Memory Mapped To PCI Express,这个是本人最喜欢用的PCIE IP核,它的作用就是一座桥,一座FPGA端直通上位机内存的桥,用户如需读写上位机内存空间,只需要操作这个IP核的S_AXI接口,就可以像读写普通AXI接口的BRAM/DDR一样读写上位机内存,对于采集卡而言,FPGA收到AD数据后,只需要根据上位机配下来的写内存地址寄存器,就可以将数据以 AXI Memory接口标准发往上位机,然后产生中断让CPU从相应内存地址去取数据就好了,这种IP就省却了组事务层包的烦恼,你只要把数据发上去就好了,组包的事IP会解决。第三种 DMA/Bridge Subsystem for PCI Express (PCIe),俗称XDMA,这个IP核更狠,不但把事务层的组包解包做了,还把DMA的事也一块儿做了,俗称傻瓜式PCIe传输,为了彻底解放逻辑工程师,它甚至把PC端的驱动都帮你写好了,一经推出就是受到了广大FPGA工程师的欢迎。

问:XDMA那么好用,它有什么局限吗?

答:XDMA是好用,但却是把双刃剑,使用过的工程师会发现这个XDMA只有M_AXI接口,没有像上述第二个PCIE IP一样的S_AXI接口,这说明什么问题?说明所有的PCIE读写请求只能由上位机发起!FPGA端无法主动发起读写请求。有人问为啥要做成这样,我认为可能是为了系统稳定,控制权必须牢牢掌握在官方驱动手里。要是任由FPGA主动访问内存,分分钟就死机了。又有同学问,为啥AXI Memory Mapped To PCI Express这个IP核可以由FPGA主动发起读写请求,那是因为用这个IP的人都是自己写驱动的,这些高级玩家不会傻到把不能访问的地址空间分配给FPGA。

问:XDMA的效率怎么样?

答:XDMA效率其实还可以,实测传输带宽大约在满带宽的70%-80%左右。

问:XDMA官方驱动好用吗?

答:BUG有一些,但基本可用。本人试用过16 17 18三个版本的驱动,目前相对稳定的是18版本。Linux驱动主要问题在中断处理上,硬件触发了中断,驱动也进了中断服务程序,但进去后却找不到对应的用户中断,所以需要在硬件端增加中断持续时间,本人给出的建议是一直拉着中断直到上位机识别到用户中断后,通过写寄存器来清中断。还有不要听信用户手册上的建议,用AXI_LITE接口来配置用户侧的寄存器,因为驱动上这个接口读写延迟非常不稳定,亲测从几微秒到几毫秒都有!建议使用BYPASS接口来配置寄存器。WIN驱动上bug就更多了,网上随便一搜就能搜到。本人稍微改动了一些代码,目前在MM模式下读写效率还是可以的,也在70%-80%。

问:XDMA可以用来做高速数据采集卡吗?

答:可以,但有较多限制。首先需要有高速的板载DDR,最好上DDR4,因为数据需要先进到板载DDR做缓存,然后触发中断,让CPU发起DMA读请求,把数据从板载DDR读到上位机内存。如果是连续数据采集,意味着FPGA要不间断得写DDR,同时PC也在不间断得读DDR,试想250M时钟128位宽的采样数据,进DDR的速率是4GB/s,出DDR的速率是4GB/s,同时读写也就是要达到8GB/s的吞吐率,请问你的板载DDR准备好了吗?其次CPU不能太烂,因为是高速采集卡,数据不间断采集的时候中断是很频繁的,CPU要是中断处理不过来会很麻烦,而且CPU要是不行,后端数据来不及处理,那么在FPGA板载DDR的地方就会出现进数据快,出数据慢的问题,丢数据就在所难免。最后FPGA器件等级也很重要,器件等级越高,XDMA支持的PCIe传输带宽就越大,目前最高16x gen3,传输带宽越大,CPU就能更快得把数据从板载DDR中取走,避免数据覆盖。目前本人在KC705开发板上可以做到2.5GB/s连续采集,基本可以满足大部分高速采集卡传输需求。

关于Xilinx PCIE DMA的问答的更多相关文章

  1. PCIE DMA实现

    基于Spartan-6, Virtex-5/Virtex-6/Virtex-7/7 Series FPGA PCI Express Block Endpoint模块设计PCI Express Endp ...

  2. 基于Camera Link和PCIe DMA的多通道视频采集和显示系统

    基于Camera Link和PCIe DMA的多通道视频采集和显示系统 在主机端PCIe驱动的控制和调度下,视频采集与显示系统可以同时完成对多个Camera Link接口视频采集以及Camera Li ...

  3. 基于JESD204B和PCIe DMA的多通道数据采集和回放系统

    基于JESD204B和PCIe DMA的多通道数据采集和回放系统 在主机端PCIe驱动的控制和调度下,数据采集与回放系统可以同时完成对多个JESD204B接口AD数据的采集以及JESD204B接口DA ...

  4. 基于PCIe DMA的多通道数据采集和回放IP

    基于PCIe DMA的多通道数据采集和回放IP 在主机端PCIe驱动的控制和调度下,数据采集与回放IP Core可以同时完成对多个通道数据的采集以及回放驱动工作,既可采用行缓存机制(无需帧缓存,无需D ...

  5. 基于PCIe DMA的8通道视频采集&显示IP,兼容V4L2

    基于PCIe DMA的8通道视频采集&显示IP,兼容V4L2 Video Capture&Display IP for V4L2 在主机端视频设备内核驱动V4L2 的控制和调度下,Vi ...

  6. 如何使用xilinx pcie的源代码

    采用xilinx公司的ml555开发板,软件开发环境是ISE13.2 步骤:一,建立一个ISE工程:BMDforPCIE工程的建立方法:bmd_sx50t文件夹包含BMD Desin for the ...

  7. pcie dma的玩法

    There is some issue with the implement script. So I took the manual steps. 1. Created the pcie core ...

  8. PCIE_DMA实例五:基于XILINX XDMA的PCIE高速采集卡

    PCIE_DMA实例五:基于XILINX XDMA的PCIE高速采集卡 一:前言 这一年关于PCIE高速采集卡的业务量激增,究其原因,发现百度"xilinx pcie dma",出 ...

  9. Xilinx FPGA 的PCIE 设计

    写在前面 近两年来和几个单位接触下来,发现PCIe还是一个比较常用的,有些难度的案例,主要是涉及面比较广,需要了解逻辑设计.高速总线.Linux和Windows的驱动设计等相关知识. 这篇文章主要针对 ...

随机推荐

  1. YOLO v3算法介绍

    图片来自https://towardsdatascience.com/yolo-v3-object-detection-with-keras-461d2cfccef6 数据前处理 输入的图片维数:(4 ...

  2. ent orm笔记1---快速尝鲜

    前几天看到消息Facebook孵化的ORM ent转为正式项目,出去好奇,简单体验了一下,使用上自己感觉比GORM好用,于是打算把官方的文档进行整理,也算是学习一下如何使用. 安装 ent orm 需 ...

  3. C语言基础练习——打印乘法口诀表

    C语言基础练习--打印乘法口诀表 JERRY_Z. ~ 2020 / 8 / 26 转载请注明出处! 代码: /* * @Author: JERRY_Z. * @Date: 2020-08-26 16 ...

  4. FJOI2020 游记

    Day -1 啥都不会,药丸 看了看统考题,好难,爆零的节奏 文化课OI双爆炸 尽力吧 Day 0 花三个多小时才到考场 福州真的好热 签到 在小礼堂待了一会,顺便给手机充了电 四点试机,今年用了新系 ...

  5. [SCOI2013]摩托车交易 题解

    思路分析 为了让交易额尽量大,显然我们需要尽量多地买入.对于每个城市,到达这个城市时携带的黄金受到几个条件的影响:之前卖出的黄金,之前能买入的最多的黄金,前一个城市到当前城市的路径上的最小边权.既然不 ...

  6. WPF新手快速入门系列 1.布局

    [概要] 该系列文章主要描述,新手如何快速上手做wpf开发.看过网上部分的教程,主要讲述的是介绍控件.这并没有问题,但是没有把自己的使用经验也完整的描述出来. 所以特此编写此系列文章希望能帮助到,因为 ...

  7. MarkDown编辑器中改变文本字体颜色大小

    法一 有点类似前端里 <font face="微软雅黑" size=4 color=red>输入的文字</font> 其中 face对应字体 size 大小 ...

  8. [PyTorch 学习笔记] 4.1 权值初始化

    本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson4/grad_vanish_explod.py 在搭建好网络 ...

  9. vue 中PDF实现在线浏览,禁止下载,打印

    需求:在线浏览pdf文件,并且禁止掉用户下载打印的效果. 分析:普通的iframe.embed标签都只能实现在线浏览pdf的功能,无法禁止掉工具栏的下载打印功能.只能尝试使用插件,pdfobject. ...

  10. 攻防世界——web新手练习区解题总结<3>(9-12题)

    第九题simple_php: 看题目说是php代码,那必定要用到php的知识,让我们先获取在线场景,得到如下网页 仔细看这个代码,意思大概是: 1.当a==0且a为真时输出flag1 2.当b为数字退 ...