Xilinx XDMA说明和测试

这篇具有很好参考价值的文章主要介绍了Xilinx XDMA说明和测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 测试工程

使用Vivado创建的XDMA测试工程如下图所示,XDMA IP的设置如下,其它保持默认。XDMA的AXI、AXI Lite和AXI Bypass都接BRAM,每个BRAM的地址设置如下图。该工程可从Github下载,使用的FPGA板卡为浪潮的F37X加速器,运行工程目录下的run.sh执行run.tcl即可完成工程的创建和编译。注意AXI Lite接口需要连接,如果不连接重启失败,可能是系统重启时XDMA的驱动需要通过AXI Lite接口读取配置信息。

  • PCIe Block Location: PCIE4C X1Y0
  • Lane Width: X16
  • Maximum Link Speed: 8.0GT/s
  • Reference Clock Frequency: 100MHz
  • AXI Data Width: 512bit
  • AXI Clock Frequency: 250
  • Vendor ID: 10EE
  • Device ID: 903F
  • 勾选PCIe to AXI Lite Master Interface和64bit Enable
  • 勾选PCIe to DMA Interface和64bit Enable
  • 勾选PCIe to DMA Bypass Interface和64bit Enable

Xilinx XDMA说明和测试
Xilinx XDMA说明和测试

2 驱动安装

本节主要介绍XDMA驱动的源文件、编译和安装过程。

2.1 源文件说明

1.下载地址:DMA驱动下载
2.文件说明

文件 说明
include 编译依赖文件
tests 测试文件
load_driver:加载驱动
run_test.sh:执行DMA测试
dma_memory_mapped_test:MM测试调用的脚本
dma_streaming_test.sh:Stream测试调用的脚本
data:测试数据
tools 工具文件
reg_rw.c:AXI Lite和AXI Bypass通道读写寄存器工具
dma_to_device.c:AXI通道写寄存器工具
dma_from_device.c:AXI通道读寄存器工具
xdma 驱动源文件
xdma_mod.c:添加新设备的Vendor ID和Device ID
readme.txt 说明文件
RELEASE 版本说明
COPYING 权限
LICENSE 证书

2.2 驱动编译安装

1.驱动编译:在xdma中执行sudo make install命令编译驱动,生成xmda.ko文件。
2.编译工具:在tools中执行make命令编译工程,生成reg_rw、dma_to_device、dma_from_device可执行文件。
3.驱动加载:在tests中执行sudo ./load_driver.sh加载驱动
4.如果需要增加设备ID,需要修改xdma/xdma_mod.c文件,在”pci_device_id“结构体下增加PCI_DEVICE的Vendor ID和Device ID。

3 测试说明

本节介绍XDMA的测试结果。

3.1 设备管理

1.下载FPGA程序,重新启动系统,执行sudo ./load_driver.sh加载驱动,显示如下说明驱动加载和设备识别成功。执行rmmod xdma可卸载驱动。
Xilinx XDMA说明和测试
2.执行lsmod | grep xdma查看xdma驱动是否成功加载。
Xilinx XDMA说明和测试
3.执行ls /dev/xdma*查看xdma设备是否存在。xdma0_h2c_0是AXI主机到卡的通道,xdma0_c2h_0是AXI卡到主机的通道,因为XDMA IP中只启用了一个H2C和C2H通道,所以这儿只有一个。xdma0_user是AXI Lite通道,xdma0_bypass是AXI Bypass通道,xdma0_contorl是PCIe 配置空间的读写通道,xdma0_event_*是16个用户中断,在IP核配置时使能了才有用。
Xilinx XDMA说明和测试
4.当主机系统中有两块加速卡,都下载了XDMA工程,执行ls /dev/xdma*会列出如下两个设备,直接使用脚本run_test.sh进行测试会失败。
Xilinx XDMA说明和测试
5.使用命令lspci -vd 1bd4:可查看设备的信息,其中1bd4是XDMA IP设置时设置的Vendor ID。“Memory at e0000000…”指示BAR0上AXI Lite通道的存储空间,可以在IP设置时进行修改。“Memory at f0000000…”指示BAR2上AXI通道的存储空间。不同设置下各通道占据的BAR空间位置如下图所示。
Xilinx XDMA说明和测试
Xilinx XDMA说明和测试

3.2 数据读写

1.reg_rw工具,执行reg_rw -h可查看使用说明

reg_rw <device> <address> <type> <data>
--<device>: ls /dev/xdma*中的设备
--<address>: 寄存器地址
--<type>: 数据类型:b(byte)-8字节;h(halfword)-16字节;w(word)-32字节
--<data>: 写入数据,如果没有这一项,则表示读取数据

1.1 写入数据
Xilinx XDMA说明和测试
Xilinx XDMA说明和测试
1.2读出数据
Xilinx XDMA说明和测试
Xilinx XDMA说明和测试

2.dma_to_device,执行./dma_to_device -h可查看使用说明

dma-to-device [OPTIONS]
-d:ls /dev/xdma*中的设备
-f:发送给卡的数据文件
-w:从卡中读数据写入的文件
-s:发送数据的字节数
-a:寄存器地址
-c:传输次数
-o:offset
-k:aperture

Xilinx XDMA说明和测试
Xilinx XDMA说明和测试
3.dma_from_device,执行./dma_from_device -h可查看使用说明

dma-from-device [OPTIONS]
-d:ls /dev/xdma*中的设备
-f:发送给卡的数据文件
-w:从卡中读数据写入的文件
-s:发送数据的字节数
-a:寄存器地址
-c:传输次数
-o:offset
-k:aperture

Xilinx XDMA说明和测试
Xilinx XDMA说明和测试

3.3 测试结果

执行tests文件夹下的脚本run_test.sh完成对XDMA的测试,整个测试流程包括查询使能通道、确定接口方式(MM or ST),根据接口方式调用脚本dma_memory_mapped_test.sh或者dma_streaming_test。dma_memory_mapped_test.sh和dma_streaming_test脚本首先使用dma_to_device命令发送测试数据到BRAM,然后使用dma_from_device命令从BRAM中取出数据,最后对比两个文件的数据是否一致。测试记过如下图所示。
Xilinx XDMA说明和测试文章来源地址https://www.toymoban.com/news/detail-419827.html

到了这里,关于Xilinx XDMA说明和测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • xilinx XDMA

    xdma 是 xilinx 提供的 Pcie 总线桥的IP核,类似于硬件的透传模块;该 ip 核主要作用是将pcie总线转换成axi总线,可以通过该模块直接操作 axi 总线上设备寄存器。模块最新好像可以支持 pcie x16 接口。当前介绍的只支持 x4。 分成两个部分,具体大致如下: 左侧 Pcie 总线 相关 右侧

    2024年02月08日
    浏览(25)
  • Xilinx QDMA说明和测试

    使用QDMA的Example工程,该工程可从Github下载,使用的FPGA板卡为浪潮的F37X加速器,运行工程目录下的run.sh执行run.tcl即可完成工程的创建和编译。 本节主要介绍QDMA驱动的源文件、编译和安装过程。 1.下载地址:DMA驱动下载 2.文件说明 文件 说明 apps 应用文件 docs 说明文件 drive

    2024年02月14日
    浏览(50)
  • Xilinx PCIe XDMA IP中断

    IRQ Module Legacy Interrupts (1)usr_irq_req拉高导致中断发送到PCIe Host,可以同时拉高多个bit; (2)等到ack后,相应的usr_irq_req才可以拉低; 第一个 ack 表示 INT 消息已经被发送到了 PCIe block ; (3) 经过 (2) 后 ,FPGA XDMA 内的 interrupt pending register 将会拉高 , 等待 ISR 的查和处理

    2024年01月16日
    浏览(27)
  • Xilinx XDMA 上位机应用程序控制逻辑

    1. 驱动安装的参数 关于驱动的编译和安装这里就不多讲了,无非就是make 和 insmod 。这里讲一下驱动安装时,控制驱动属性的几个参数: 1.中断模式 中断模式分为三种,MSIX是最新的中断模式,老版本的内核可能不支持。就比如说我的内核。如果不指定驱动安装额中断参数,那

    2024年02月09日
    浏览(37)
  • Vivado SDK工程创建指南

    在完成工程创建后,详见: Vivado使用指南 第一步先选择主页左侧菜单栏中的模块创建,如下图所示: 可自定义模块名称,然后选择ok即可。 输入zynq后,双击该IP核完成创建。 最后我们可以得到如下图所示模块: 接着双击该IP核进行设置,我们可以看到ZYNQ模块的结构框图。

    2023年04月08日
    浏览(30)
  • Xilinx FPGA开发环境vivado使用流程

    第一步:点击Add Sources按钮 第二步:选择add or create design sources按钮,即添加设计文件 第三步:选择create file 文件新建完成后: 此时可以定义I/O端口,我们选择自己在程序中编写。 第四步:在编辑器中编写verilog程序 XDC文件里主要是完成管脚的约束,时钟的约束,以及组的约

    2024年02月03日
    浏览(49)
  • VIVADO2022 sdk 工程创建流程

    正点原子uart历程复现 create block design(起名 为System) - open block design - +号/IP catalog 中搜索zynq 双击打开, 将和pl相关的时钟都干掉 再auto 布线一下 把herarchy中的sources 中的system.bd右键、 无脑下一步导出 如果不能无脑下一步,生成遇到错误,找其他的工程试试,大概率工程的问

    2024年02月14日
    浏览(32)
  • Vivado工程创建、仿真、下载与固化全流程

    本文以一个简单工程为例,介绍使用Vivado新建工程、代码的编写、Testbench代码的编写、波形仿真分析、引脚约束、生成bit流文件、通过JTAG将网表下载到开发板、程序的固化与下载全流程。 选自 野火《FPGA Verilog开发实战指南——基于Xilinx Artix7》

    2024年02月02日
    浏览(31)
  • xilinx FPGA 乘法器ip核(multipler)的使用(VHDL&Vivado)

    一、创建除法ip核  可以选择两个变量数相乘,也可以选择一个变量输入数据和一个常数相乘 可以选择mult(dsp资源)或者lut(fpga资源) 可以选择速度优先或者面积优先 可以自己选择输出位宽 还有时钟使能和复位功能  二、编写VHDL程序:声明和例化乘法器ip核 三、编写仿真程

    2024年02月11日
    浏览(51)
  • Xilinx FPGA未使用管脚上下拉状态配置(ISE和Vivado环境)

    ISE开发环境 ISE开发环境,可在如下Bit流文件生成选项中配置。 右键点击 Generate Programming File ,选择 Process Properties , 在弹出的窗口选择 Configuration Options-Unused Pin ,选择 Pull Down、Pull Up或者Float 。 可以看到,除了未使用管脚,一些系统管脚,比如JTAG,Program、Done管脚等等都可

    2024年02月06日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包