0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PCIE XDMA开发环境搭建以及环路测试

FPGA设计论坛 来源:FPGA设计论坛 2025-01-13 09:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.1 课程介绍

这一章开始主要介绍 XILINX FPGA PICE IP XDMA IP的使用。XDMA IP使用部分教程分LINUX 篇和WINDOWS篇两个部分。通过实战,面向应用,提供给大家 XILINX FPGA PCIE 应用解决方案。

本教程以MZ7035FA作为样机测试。在正式开始教程内容前,有必要把MZ7035FA开发板的特点说明下。这是一款高性价比的FPGA开发板。带PCIE接口SFP通信接口,3路千兆以太网口,2路SATA接口,1路HDMI输出,1路串口,1路TF卡接口。支持MSXBO(米联客)FEP标准扩展接口。采用的CPU型号为XC7Z035-FFG676。PL端搭载32bit 1024MB DDR3内存,PS端搭载32bit 1024MB DDR3内存,FPGA读写DDR支持的最大数据时钟为1600M,可以进行很多复杂的开发任务。

1.2 XDMA 概述

Xilinx 提供的DMASubsystem for PCIExpressIP是一个高性能,可配置的适用于PCIE2.0,PCIE3.0 的SG 模式 DMA,提供用户可选择的 AXI4 接口或者 AXI4-Stream接口。一般情况下配置成 AXI4 接口可以加入到系统总线互联,适用于大数据量异步传输,通常情况都会使用到 DDR,AXI4-Stream 接口适用于低延迟数据流传输。

XDMA 是SGDMA,并非Block DMA,SG 模式下,主机会把要传输的数据组成链表的形式,然后将链表首地址通过BAR 传送给XDMA,XDMA 会根据链表结构首地址依次完成链表所指定的传输任务。

dd0ba102-cf08-11ef-9310-92fbcf53809c.png

1.3 XDMA 提供如下接口:

AXI4、AXI4-Stream,必须选择其中一个,用来数据传输

AXI4-Lite Master,可选,用来实现PCIE BAR 地址到AXI4-Lite 寄存器地址的映射,可用来读写用户逻辑寄

存器

AXI4-Lite Slave,可选,用来将XDMA 内部寄存器开放给用户逻辑,用户逻辑可以通过此接口访问XDMA

内部寄存器,不会映射到BAR

AXI4 Bypass 接口,可选,用来实现PCIE 直通用户逻辑访问,可用于低延迟数据传输

1.4 XDMA IP 配置

Mode:配置模式,选择 Advanced 高级配置

Lane Width:MZ7035 支持X4

Max Link Speed:选择5.0GT/s 即PCIE2.0

Reference Clock :100MHZ,参考时钟 100M

DMA Interface Option:接口选择 AXI4 接口

AXI Data Width:128bit,即 AXI4 数据总线宽度为128bit

AXI Clock :125M,即AXI4 接口时钟为 125MHZ

dd23845c-cf08-11ef-9310-92fbcf53809c.png

PCIE ID 配置

我们配置成Memory controller 让IP 自动选择VID 等

dd36b66c-cf08-11ef-9310-92fbcf53809c.png

PCIE BAR 配置,这里面的配置比较重要

首先使能PCIE to AXI Lite Master Interface ,这样可以在主机一侧通过PCIE 来访问用户逻辑侧寄存器或者其他AXI4-Lite 总线设备

映射空间选择 1M,当然用户也可以根据实际需要来自定义大小。

PCIE to AXI Translation:这个设置比较重要,通常情况下,主机侧PCIE BAR 地址与用户逻辑侧地址是不一样的,这个设置就是进行BAR 地址到AXI 地址的转换,比如主机一侧 BAR 地址为0,IP 里面转换设置为0x80000000,则主机访问 BAR 地址0 转换到AXI LIte 总线地址就是0x80000000

PCIE to DMA Interface :选择64bit 使能

DMA Bypass 暂时不用

dd4dfe62-cf08-11ef-9310-92fbcf53809c.png

PCIE 中断设置

User Interrupts:用户中断,XDMA 提供16 条中断线给用户逻辑,这里面可以配置使用几条中断线。

Legacy Interrupt:XDMA 支持 Legacy 中断

选择MSI 中断

注意:MSI 中断和 MSI-X 中断只能选择一个,否则会报错,如果选择了 MSI 中断,则可以选择 Legacy 中断,如果选择了 MSI-X 中断,那么 MSI 必须取消选择,同时Legacy 也必须选择None。此 IP 对于7 系列设置有这么个问题,如果使用Ultrascale 系列,则可以全部选择

dd65c736-cf08-11ef-9310-92fbcf53809c.png

配置DMA 相关内容

Number of DMA Read Channel(H2C)和Number of DMA Write Channel(C2H)通道数,对于PCIE2.0 来说最大只能选择 2,也就是 XDMA 可以提供最多两个独立的写通道和两个独立的读通道,独立的通道对于实际应用中有很大的作用,在带宽允许的前提前,一个PCIE 可以实现多种不同的传输功能,并且互不影响。这里我们选择1

Number of Request IDs for Read (Write)channel :这个是每个通道设置允许最大的 outstanding 数量,按照默认即可

dd7be4e4-cf08-11ef-9310-92fbcf53809c.png

配置完成以后,点击Run Block Auto,可以看到之前的配置信息,如果有发现和目标配置不一样的,需要手动修改,点击OK,完成配置

dd914d52-cf08-11ef-9310-92fbcf53809c.png

ddad736a-cf08-11ef-9310-92fbcf53809c.png

配置完成以后,VIVADO 会自动进行必要的连接

ddbb43fa-cf08-11ef-9310-92fbcf53809c.png

到此为止,XDMA IP 配置就完成了只要再进行时钟和 GTP 约束即可。

1.5 MIG 7 SERIES 的配置

Step1:任单击 IP Catalog,选取 Memory Interface Generator(MIG 7 series)IP 添加到 Block design。双击 MIG 7 SERIES ,对这个 IP 进行配置。

ddd8355a-cf08-11ef-9310-92fbcf53809c.png

双击生成的IP核

dde32e38-cf08-11ef-9310-92fbcf53809c.png

单击NEXT

ddf7f804-cf08-11ef-9310-92fbcf53809c.png

继续单击NEXT

de0aaa44-cf08-11ef-9310-92fbcf53809c.png

选择DDR3 单击NEXT

de245cfa-cf08-11ef-9310-92fbcf53809c.png

设置MIG 内核时钟频率为、内存型号、内存的数据位宽

de443d72-cf08-11ef-9310-92fbcf53809c.png

设置MIG AXI4 最大支持的位宽,对于2片DDR 最大位宽为256bit

de6412be-cf08-11ef-9310-92fbcf53809c.png

设置输入频率

de7a379c-cf08-11ef-9310-92fbcf53809c.png

系统和参考时钟时钟选择no buffer,MIG低电平复位

de935c0e-cf08-11ef-9310-92fbcf53809c.png

Step9:终端阻抗选择50hms,设置DCI

deb3aec8-cf08-11ef-9310-92fbcf53809c.png

选择Fixed Pin Out

decdd24e-cf08-11ef-9310-92fbcf53809c.png

根据原理图手动填写PIN 脚定义,或者选择Read XDC/UCF直接读入pin脚定义,本课程下提供了MZ7035.ucf 的DDR 配置文件,直接读入既可。

dee2adea-cf08-11ef-9310-92fbcf53809c.png

填写完成后,先单击Validate再单击NEXT

deff0fd0-cf08-11ef-9310-92fbcf53809c.png

继续单击NEXT

df2418c0-cf08-11ef-9310-92fbcf53809c.png

继续单击NEXT

df31b5de-cf08-11ef-9310-92fbcf53809c.png

继续单击NEXT

df53b530-cf08-11ef-9310-92fbcf53809c.png

继续单击NEXT

df633d48-cf08-11ef-9310-92fbcf53809c.png

最后单击Generate,至此MIG的配置完成

df7baf5e-cf08-11ef-9310-92fbcf53809c.png

1.6基础测试系统搭建

我们的测试目标是进行PCIE AXI4总线与外设进行读写操作,PCIE AXI4-Lite 总线进行用户逻辑寄存器或者其他 AXI4-Lite 总线设备访问操作。AXI4总线上挂载到MIG控制器DDR上去,实现对DDR的读写控制。

为此搭建系统为下图所示:

df92039e-cf08-11ef-9310-92fbcf53809c.png

进行地址分配:

这里我们把挂在M_AXI上的DDR地址分配从0开始(对于widnows系统必须为0), M_AXI是需要进行DMA操作的。而M_AXI_LITE挂载的BRAM是需要进行BAR空间操作,所以地址设置为0x80000000和XMDA IP里面设置的地址对应。

dfac3408-cf08-11ef-9310-92fbcf53809c.png

1.7LINUX下驱动程序编译安装测试1.7.1 驱动编译和安装(下必须重新编译)

官方驱动包选择 2017 版本以后的,注意 2016 版本的有 BUG!!!

在终端进入到xdma 目录,输入make ,进行驱动编译

dfbf257c-cf08-11ef-9310-92fbcf53809c.png

执行以下指令:

- Change directory to the driver directory.

cd driver

- Compile the kernel module driver.

make

- Change directory to the tests directory.

cd tests

- Compile the provided example software.

make

- Copy the provided driver rules from the etc directory to the

/etc/ directory on your system.

cp ../etc/udev/rules.d/* /etc/udev/rules.d/

关于驱动加载,这里有两点要说明一下,首先是在驱动加载之前,如果检测到系统中已经加载过驱动,那么它会将已经加载的驱动卸载,然后再加载。然后就是PCIe DMA的工作方式可以通过加载驱动传输参数进行修改。默认情况下DMA工作在中断模式,可以通过修改load_driver.sh脚本改为轮循模式如下图所示,但是可能驱动有问题,实际测试轮询模式有些程序无法正常执行,所以建议大家不要使用轮询模式。

dfdaf7d4-cf08-11ef-9310-92fbcf53809c.png

在准备加载驱动前,确保你的开发板已经下载PCIE工程的bit文件,而且已经重启过电脑。好了,现在加载驱动。

./load_driver.sh

如下显示驱动安装成功

dff26e8c-cf08-11ef-9310-92fbcf53809c.png

在终端执行命令:

./dma_from_device -d /dev/xdma0_c2h_0 -f ./test.bin-s 4096-a 0 -c 1

e00730ec-cf08-11ef-9310-92fbcf53809c.png

./dma_to_device -d /dev/xdma0_h2c_0 -f ./test.bin-s 4096-a0-c 1

e048d920-cf08-11ef-9310-92fbcf53809c.png

-d:device 设备.

-f:file 文件

-s:size 大小

-a:addr 起始地址

-c:count

这两个操作分别是从板卡读 4096 Bytes 数据到文件 test.bin 以及从 test.bin 读出4096 Bytes 数据发送给板卡。

原文链接;

https://openatomworkshop.csdn.net/674532733a01316874d81597.html

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PCIe
    +关注

    关注

    16

    文章

    1420

    浏览量

    87547
  • 环路测试
    +关注

    关注

    0

    文章

    9

    浏览量

    6059

原文标题:PCIE XDMA 开发环境搭建以及环路测试

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【米尔-Xilinx XC7A100T FPGA开发板试用】+02.PCIE接口测试(zmj)

    通信速率可高达 5G bit 带宽。本例程中通过利用 XILINX 的 XDMA IP 来实现 PCIE 的发送和接收速度测试。 1.1参考电路 米尔-Xilinx XC7A100T FPGA
    发表于 11-12 16:05

    ZYNQ调用XDMA PCIE IP同时读写PS DDR,导致蓝屏问题。

    你好!我在ZYNQ 7015里(或者7035)调用XDMA PCIE IP 从上位机HOST PC通过PCIE接口给ZYNQ的PS DDR发送数据(XDMA
    发表于 11-21 10:35

    开发环境搭建教程

    android Windows系统下开发环境搭建
    发表于 03-22 17:42 0次下载

    本地测试环境搭建

    本文主要介绍了本地测试环境搭建搭建一个本地测试环境无疑是个明智的选择,再结合GitHub、Jen
    的头像 发表于 01-31 16:01 3332次阅读
    本地<b class='flag-5'>测试</b><b class='flag-5'>环境</b><b class='flag-5'>搭建</b>

    测试环境搭建和维护_软硬件测试环境

     测试环境搭建,每个公司都有不一样的流程和方法。一种是运维或者开发负责搭建和维护,另一种是测试
    的头像 发表于 01-31 18:30 7444次阅读
    <b class='flag-5'>测试</b><b class='flag-5'>环境</b>的<b class='flag-5'>搭建</b>和维护_软硬件<b class='flag-5'>测试</b><b class='flag-5'>环境</b>

    搭建测试环境常用linux命令_linux下web测试环境搭建

    本文主要介绍的是搭建测试环境常用的一些linux命令以及linux下web测试环境
    的头像 发表于 01-31 18:41 1.2w次阅读
    <b class='flag-5'>搭建</b><b class='flag-5'>测试</b><b class='flag-5'>环境</b>常用linux命令_linux下web<b class='flag-5'>测试</b><b class='flag-5'>环境</b>的<b class='flag-5'>搭建</b>

    如何搭建鸿蒙开发环境

    开发某一个平台的程序,那么首先要搭建出本地开发环境,那么如何搭建鸿蒙开发
    的头像 发表于 02-24 11:25 4572次阅读
    如何<b class='flag-5'>搭建</b>鸿蒙<b class='flag-5'>开发</b><b class='flag-5'>环境</b>

    Digispark开发环境搭建

    Digispark开发环境搭建
    发表于 11-15 20:51 16次下载
    Digispark<b class='flag-5'>开发</b><b class='flag-5'>环境</b><b class='flag-5'>搭建</b>

    STM32 搭建开发环境

    STM32 搭建开发环境
    发表于 12-08 14:36 21次下载
    STM32 <b class='flag-5'>搭建</b><b class='flag-5'>开发</b><b class='flag-5'>环境</b>

    XDMA/PCIE IP的定制和Block Design的搭建

    IP,基于这些IP我们设置不需要知道TLP包的组包原理我们便可以把PCIE使用起来。这篇博客我们主要把FPGA作为endpoint来进行讲解,当然也对作为root port进行简单的描述。我们使用的主要IP是XDMA,主要参考资料是米联客。如果对IP的使用感觉到疑惑可以
    的头像 发表于 06-01 15:52 1.5w次阅读

    高频探针如何搭建测试环境及下针

    在高频测试领域,搭建适合的测试环境以及正确下针对于确保准确的测量结果至关重要。
    的头像 发表于 05-29 18:25 2527次阅读

    基于FPGA的PCIE通信测试

    本文介绍一个FPGA开源项目:PCIE通信。该工程围绕Vivado软件中提供的PCIE通信IP核XDMA IP建立。Xilinx提供了XDMA的开源驱动程序,可在Windows系统或者
    的头像 发表于 09-04 16:45 6836次阅读
    基于FPGA的<b class='flag-5'>PCIE</b>通信<b class='flag-5'>测试</b>

    PyTorch深度学习开发环境搭建指南

    PyTorch作为一种流行的深度学习框架,其开发环境搭建对于深度学习研究者和开发者来说至关重要。在Windows操作系统上搭建PyTorc
    的头像 发表于 07-16 18:29 3634次阅读

    如何搭建企业AI开发环境

    搭建企业AI开发环境是一个复杂而细致的过程,涉及硬件选择、操作系统配置、软件安装、工具选用以及实践等多个方面。下面,AI部落小编将详细介绍如何搭建
    的头像 发表于 12-20 10:37 1245次阅读

    NVMe IP over PCIe 4.0:摆脱XDMA,实现超高速!

    基于NVMe加速引擎,它直接放弃XDMA,改为深度结合PCIe,通过高速传输机制开发。同时利用UVM验证平台验证,有效提升工作效率。
    的头像 发表于 04-16 14:57 804次阅读
    NVMe IP over <b class='flag-5'>PCIe</b> 4.0:摆脱<b class='flag-5'>XDMA</b>,实现超高速!