Xilinx XDMA说明和测试-MM

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

在这里插入图片描述
在这里插入图片描述

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可卸载驱动。
在这里插入图片描述
2.执行lsmod | grep xdma查看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核配置时使能了才有用。
在这里插入图片描述
4.当主机系统中有两块加速卡,都下载了XDMA工程,执行ls /dev/xdma*会列出如下两个设备,直接使用脚本run_test.sh进行测试会失败。
在这里插入图片描述
5.使用命令lspci -vd 1bd4:可查看设备的信息,其中1bd4是XDMA IP设置时设置的Vendor ID。“Memory at e0000000…”指示BAR0上AXI Lite通道的存储空间,可以在IP设置时进行修改。“Memory at f0000000…”指示BAR2上AXI通道的存储空间。不同设置下各通道占据的BAR空间位置如下图所示。
在这里插入图片描述
在这里插入图片描述

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 写入数据
在这里插入图片描述
在这里插入图片描述
1.2读出数据
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
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

在这里插入图片描述
在这里插入图片描述

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中取出数据,最后对比两个文件的数据是否一致。测试记过如下图所示。
在这里插入图片描述

  • 47
    点赞
  • 139
    收藏
    觉得还不错? 一键收藏
  • 41
    评论
Xilinx XDMA是一种高性能的PCIe总线接口IP核,可用于数据传输和处理。对于进行Xilinx XDMA测试,以下是一些关键点和步骤。 首先,我们需要准备测试环境。我们需要一块支持PCIe接口的Xilinx FPGA开发板,并连接上测试设备,如计算机或其他外部设备。我们还需要安装好Xilinx Vivado和Xilinx SDK工具,以便进行IP核的配置和测试。 接下来,我们需要进行IP核的配置。在Vivado中创建一个新工程,并添加XDMA IP核。根据实际需求和接口要求,我们可以进行IP核的参数设置和端口配置。然后,生成并导出IP核的RTL设计,以便后续工程的使用。 完成IP核配置后,我们可以进行XDMA测试的编程和调试。使用Xilinx SDK工具,我们可以创建一个新的应用程序工程,并将IP核RTL文件添加到工程中。在代码中,我们可以使用相关函数和接口来初始化和配置XDMA IP核,并进行数据传输和处理。我们还可以添加一些测试代码,以验证IP核的性能和功能。 测试代码完成后,我们可以使用Vivado工具来进行仿真和调试。通过仿真,我们可以验证代码的正确性和功能。我们可以使用测试负载来模拟和生成不同的数据传输和处理场景,以评估IP核的性能。在仿真过程中,我们可以监测和分析各个信号和接口的波形和时序,以确保设计的正确性和稳定性。 最后,我们可以进行硬件验证和性能测试。将程序下载到开发板中,通过连接计算机或其他外部设备,我们可以实际测试XDMA IP核的性能和功能。我们可以使用性能测试软件和工具来对IP核进行吞吐量和延迟的测试,并评估其是否符合实际需求和规格要求。 通过以上步骤,我们可以进行Xilinx XDMA测试。通过配置IP核、编写测试代码、进行仿真和硬件验证,我们可以确保IP核的正确性、性能和稳定性,为后续的应用开发和部署提供可靠的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值