Xilinx PCIe XDMA使用指南

FPGA开发圈 2021-05-28 12:00
    1. 为什么使用PCIe传输

          在FPGA需要和处理器打交道时,无论是X86,还是PowerPC,以及一些嵌入式的ARM等,对外的接口常见如下表。

    接口

    最大速率

    USB

    USB2.0   480Mbps, USB3.0  5Gbps(USB2.0 速率的10倍)

    Ethernet

    1Gbps

    PCIe

    X8 Gen1 双向各16Gbps,X8 Gen2 双向各32Gbps

    PCI

    2.112Gbps@66Mhz*32位

    SATA/PATA

    SATA II 3.0Gbps, SATA III 6.0Gbps

    RapidIO

    5Gbps x4链路

    其中,USB需要外部的PHY对接FPGA,而且需要firmware;以太网走到TCP才会保证不丢数据;PCI逐渐淘汰了,占用引脚多,而且带宽有限;SATA侧重存储,其协议的局限性比较高;RapidIO在一些场合使用,结构可以做到Full Mesh结构,但是这些年发展速度比较慢。
    而PCIe具备如下优点:

    A. 带宽高,目前FPGA有PCIe Gen3 x16,或者PCIe Gen4 x8,链路速度可以达到128Gbps;

    B. FPGA直连,不需要外部PHY;
    C. 协议保证数据无误传输,两级CRC,重传机制,保证数据无误;
    D. 软件生态丰富,各种系统原生支持,通过简单的驱动就可以完成数据交互;
    E. 在PCIe之上的协议逐渐增多,例如NVMe是基于PCIe的上层协议;

        Xilinx从15年前,V4系列开始,一直在PCIe的解决方案上深耕,提供众多的应用方案级的解决方案,方便用户专注于自己的应用。早期,Xilinx提供的有Application Notes,例如XAPP859,XAPP1052等,构建了基本的双向数据传输。当时一些第三方公司,类似于PLDA,NwLogic也出针对Xilinx FPGA的PCIe传输方案。

后来,Xilinx团队2017年附近推出XDMA解决方案,并持续增加功能、修正Bug,到目前为止,XDMA已经成为一个功能强大、成熟稳定的Xilinx FPGA解决方案。功能上涵盖了SG功能,AXI-Lite功能,多通道分离,AXI-MM和AXI-Stream支持等。稳定性上,经过4年的逐步完善,目前已经有众多的客户基于这套方案实现产品,涵盖医疗、电力、通讯、数据中心等各种应用。
最重要的是,XDMA是免费的!!!

2. XDMA IP配置实例

Xilinx XDMA支持的系列包括7系列,UltraScale系列,UltraScale+系列各种系列,界面配置基本相同。这里以KU040的一个板子做例程,其他系列可以参考。Vivado使用2018.3,Vivado的版本,做XDMA,建议尽量使用新一些的版本。详细的说明,参考Xilinx的文档PG195,下面主要摘取影响使用的关键部分。

配置IP


第一页,IP基本配置。

红色框根据实际板卡硬件来选择,Lane Width是物理的位宽;Link Speed是希望运行在那个速率。速率和位宽越高,最终的带宽就越高,对应FPGA内的资源和频率也相对多一些。
绿色框是选择接口方式,AXI Memory Mapped选择用户接口是AXI内存映射的接口,常见用于对接DDR、RAM等有地址寻址的外设。AXI Stream的用户接口是流接口,类似于一段数据包,FIFO流等。IP只能支持其中一种选择,不能说多通道混合使用不同的用户接口,所以用户需要分析自己的数据接入方式,慎重选择。
常见的,例如ADC采集,如果带DDR,则可以把ADC暂存在DDR中,XDMA使用AXI-MM的方式读取DDR数据;也可以ADC通过FIFO缓存后,XDMA使用AXI-Stream读取FIFO,不过需要注意ADC速度非常高的时候容易溢出。
例如,读取外部网络报文,报文长短不一,使用AXI-Stream接口方式比较合适。

第二页,VID,DID,Class等选择。

如果没有特殊的需要,这一页可以不变。尤其是Vendor ID,Device ID,尽量不修改,因为Xilinx提供的驱动是对应这些VID,DID的。

第三页,PCIe BAR空间。

红色框,PCIe to AXI Lite Master Interface可以选择上。通常,这个接口可以用作寄存器接口。上位机需要控制板卡内的用户寄存器,可以通过这个接口扩展。
通常来说,寄存器接口尽量对齐,比如常用32bit寄存器。

第四页,杂项

需要关注的是用户中断数量,是从用户层通知CPU的中断。注意,XDMA本身的操作中断不算在内,这里是用户产生的中断。

 

第五页,DMA通道选择

需要关注的是红色框,读写通道数量选择,根据实际的业务来选择。例如有4路ADC数据传输,可以选择C2H为4,当然,也可以4路ADC数据在FPGA内合并后成1路,然后只选择C2H为1 。

生成example design例程

上一步IP配置后,在生成的IP上,右键点击,选择打开open example design。

生成的例程,如果选择是AXI-MM的用户接口,那么这个接口对接的是AXI接口形式的Block RAM,上位机可以读/写这片RAM。如果选择的是AXI-Stream接口,例程中将Stream读写环回,上位机写下去的内容再读回去。
此外,第三页BAR空间如果勾选了PCIeto AXI Lite Master Interface,例程中会额外多出来一个AXI接口的Block RAM。如果需要,可以将这块修改为寄存器接口。
修改约束引脚后,生成bit文件,下载到FPGA中,并重启电脑,注意这里说的是重启电脑,不是关机再开机。电脑重启的开始,BIOS会重新扫描PCIe设备,才能被CPU枚举。


3. Block Design下快速构建XDMA Subsystem

上面的例程,例化一个IP,然后打开example design的方式。实际使用,可以用block design快速构建XDMA的设计。
下面举例,快速构建一个XDMA到DDR4传输的设计。

 

1. 新建block design,加入XDMA IP和DDR4 MIG IP。XDMA配置参考上面描述的内容,DDR4根据板卡实际的选择配置。

2. 连接关系很简单,XDMA的M_AXI接口通过AXI_Interconnect连接DDR4,这里AXI_Interconnect起到时钟域转换的作用。

3. 地址分配,将DDR4的空间分配到XDMA中即可。

4. 生成block design的wrapper,修改正确的引脚约束后,生成bit文件。下载到FPGA后重启电脑。
Block Design的方式,适用于快速构建比较复杂的设计,例如包含DDR4,Datamover等各种基于AXI互联的IP。

4. 驱动和软件应用

通过pci utility查看设备

pci utility工具,用于查看PCIe设备各种属性的工具。Linux系统默认自带了pci utility工具,windows下也有对应版本,在GitHub上搜索。

 

lspci命令,列举所有pci和pcie设备:

红色框,即上面配置的XDMA example design。 
lspci -vv -s 02:00.0 命令,详细列出位于02:00.0槽位的Xilinx设备详细信息。

这里把一些信息列举下来:

A. Region 0,这个是上面PCIe to AXI Lite Master Interface选择的空间。Region 1,这个是XDMA IP自身内部寄存器空间,不用关心。
B. MaxPayload size是256字节,是系统协商的,不能修改。MaxReadReq是最大请求字节,协商后是512字节。
C. LnkCap字段,是协商后的PCIe链路状态,上面写的速度是8G,位宽是x4。PCIe IP上选择的是8G,这个目前协商到了。位宽选择x8,实际是x4,因为这个机箱用的一个x4PCIe延长线,限制了适配到x8位宽。
D. LnkCtl2,显示设备最大能支持到8G的链路速度。

  

5. 驱动安装,Linux环境

Linux的驱动在GitHub上,https://github.com/Xilinx/dma_ip_drivers,下载到宿主机。
readme.txt中有驱动使用说明,目录结构、安装使用等。tests目录下有安装脚本,测试脚本等。

 

5.1. 驱动安装

tests目录下,sh load_driver.sh即安装驱动,安装成功会提示。

安装完毕,查看/dev目录下,多出来一些xdma0开头的设备。

文件目录分别说明下
A. _c2h_x,是card to host的设备,板卡向CPU传输数据的时候使用这个设备;
B.  _h2c_x,是host to card的设备,CPU向板卡发送数据的时候使用这个设备;
C. _control,是XDMA的内部寄存器控制设备,一般用户不需要使用;
D. _user,是PCIe to AXI Lite Master Interface选择的空间;
E. _event_x,是IP配置第四页,选择的用户层中断对应的设备;

 

5.2 软件测试,Linux环境

如果IP配置选择AXI-Memory Map,参考dma_memory_mapped_test.sh,这个脚本写入一段数据到BlockRAM中,然后读出对比。
如果IP配置选择AXI-Stream接口,参考dma_streaming_test.sh,脚本写入一段数据,回环后读回校验。
上述两个例子,用下面的命令测试。
sh dma_memory_mapped_test.sh 1024 1 1 1

Block Design下,DDR4显示已经校准完毕。使用dma_memory_mapped_test.sh测试,数据写入DDR4,然后再从DDR4读回。


FAQ

1. Windows下安装驱动,安装后驱动有一个感叹号,不能正常使用。
      Windows从Win764bit开始,安装驱动必须的签名,Win7的签名和Win10的签名还不同。Xilinx提供的Windows驱动不包括驱动签名,安装的时候就出现感叹号。
       这个问题可以百度下,开机的时候选择禁止驱动签名。或者购买微软的签名即可。

例如下图,是一个公司购买了签名,签名这个驱动后的状态,可以直接安装好驱动。

2. Linux下,Stream模式接收溢出。

IP设置为Stream模式,默认Linux上有循环Buffer来处理接收的数据。如果Stream接收的速率太高,超过驱动和应用能处理的范围,就会出现溢出的问题。出现溢出后,驱动里做了错误恢复,一段数据就丢掉了。

如果您有PCIe、XDMA问题需要讨论,请联系我们:
simonyang@comtech.com.cn
charlesxu@comtech.com.cn

关注我们

FPGA开发圈 这里介绍、交流、有关FPGA开发资料(文档下载,技术解答等),提升FPGA应用能力。
评论
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 123浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 211浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 172浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 147浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 126浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 128浏览
  • 本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。关闭selinux修改此文件("+"号为修改内容)device/rockchip/common/BoardConfig.mkBOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG_ARGS :=BOARD_PREBUILT_DTB
    Industio_触觉智能 2025-01-08 00:06 100浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 80浏览
  • 「他明明跟我同梯进来,为什么就是升得比我快?」许多人都有这样的疑问:明明就战绩也不比隔壁同事差,升迁之路却比别人苦。其实,之间的差异就在于「领导力」。並非必须当管理者才需要「领导力」,而是散发领导力特质的人,才更容易被晓明。许多领导力和特质,都可以通过努力和学习获得,因此就算不是天生的领导者,也能成为一个具备领导魅力的人,进而被老板看见,向你伸出升迁的橘子枝。领导力是什么?领导力是一种能力或特质,甚至可以说是一种「影响力」。好的领导者通常具备影响和鼓励他人的能力,并导引他们朝着共同的目标和愿景前
    优思学院 2025-01-08 14:54 82浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 238浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 113浏览
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 92浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 161浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 96浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦