起始工程是原来的helloworld 工程,若有不清楚,那就先实验了helloworld,再来开始这个实验。

http://www.fpgadeveloper.com/2014/08/using-the-axi-dma-in-vivado.html 是主要参考资料,详细原理请参考原文。

原文实验是Vivado 2014, 我的验证测试是在 Vivado 2018.2.

实验内容是用 AXI DMA 存取DDR 内存的数据,给一个ip 应用, 这里简单为 AXI4-FIFO,然后构成一个回路。写数据,然后校核数据,如果一致就表示成功。

1:添加 AXI DMA

在 Vivado 中打开原来的helloworld 工程,Save As 本工程的名字 RDddr,作为工程起点。

打开原理图, 在其中 Add IP,选择 AXI Direct Memory Access,

加入后,点击 ‘Run Connection Automation

下拉菜单中选择  /axi_dma_0/S_AXI_LITE

更改zynq 7000 的设置 , 选择 PS_PL Configuration, 选择 HP Slave AxI Interface, 勾选第一个HP0

自动连接:点击 ‘Run Connection Automation

2:添加 FIFO

ADD IP , 选择 'AXI4-Stream Data FIFO’

连线:fifo 的 M_AXIS => dma 的 S_AXIS_S2MM

fifo 的  S_AXIS => dma的 M_AXIS_MM2S

清除 dma 的 AXI-Streaming status and control ports,因为本实验没有用到这2个,所以清除,如果你的ip 用到就要保留。

3:连接dma 的中断到 PS

dma 的 mm2s_introut’ 和  ‘s2mm_introut 需要连接到ps

使能 ps 的 pl-ps 中断:

添加一个 ip , Concat, 然后连线, mm2s_introut’ 和  ‘s2mm_introut 分别到  Concat的 2个输入In0和 In1,concat 的输出到 ps 的  ‘IRQ_F2P’口

连线也可如下操作,选择 s2mm_introut, 然后 右键,选择 Make Connecton,然后出现如下对话框, 选择 In0

Connection 才对吧,但他是 Connecton。

4:后续处理

Tools->Validate 校验下原理图,应该没错。然后可以 原理图图标 Regenerate Layout,更改布局清楚一些。

产生流文件, 输出硬件Export Hardware, Launch SDK。

5:SDK 编程

在 SDK 里 新建一个工程, helloworld,我们就让他显示 helloworld。 编译测试都没问题了。

下面我们修改代码。在你的系统里 找到如下文件, ()里内容要修改版本号, 实在不行,你在 Xilinx 目录下 搜索。

C:\Xilinx\SDK\(version)\data\embeddedsw\XilinxProcessorIPLib\drivers\axidma_v(ver)\examples\xaxidma_example_sg_poll.c

把这个文件里的内容替换掉你原来helloworld 的内容,并保存。 调试运行,应该如下显示:

--- Entering main() --- 
Successfully ran AXI DMA SG Polling Example
--- Exiting main() ---

那个目录下还要几个文件,你也可替换试试。

至于读写的位置 在dma 程序段设置,你看看代码吧。 而我们设计的ip 就替换掉 fifo 这个ip,这个是我们真正的应用。

本文介绍到此。

Vivado 中如何使用 AXI DMA, PL 访问 DDR相关推荐

  1. ZYNQ学习之路11.AXI DMA

    一. AXI DMA简介 AXI DMA IP核提供了AXI4内存之间或AXI4-Stream IP之间的内存直接访问,可选为分散收集工作模式,初始化,状态和管理寄存器等通过AXI4-Lite 从机几 ...

  2. AXI三种接口及DMA DDR XDMA介绍(应用于vivado中的ip调用)

    一.AXI--高级可扩展接口(UG1037) 参考资源: [SDK篇_58~62_AXI接口简介[Xilinx]+[Vivado]+[AXI4总线]+[FPGA]-哔哩哔哩] 关于AXI握手过程都讲解 ...

  3. vivado中ZYNQ详解(主要用于PS和PL之间的工作衔接)

    可进qq群进行相关Verilog知识交流:1073030956 AXI的理解 AXI(Advanced extensible Interface)协议主要描述了Master设备和Slave设备之间的数 ...

  4. zcu104 AXI DMA速度测试总结

    一.前言 好久没有认真的写一些技术博客了,工作半年了,最近两个月好像才慢慢的恢复过来了,不能摸鱼了,2020年,自己的生活中会有很多可见的变化,要快速成长啊,具备与之匹配的技术和能力啊. 二.PL侧工 ...

  5. ZYNQ小实验:1.利用AXI DMA loop 环路测试

    前言: 一个基本的 DMA 环路搭建,通过 PS 端控制 DMA 对 DDR 数据的读写和校验,完成环路测试 基本流程: PS 端 ARM 将数据发送给 DDR. PS 控制 DMA,使 DMA 通过 ...

  6. ZYNQ-使用AXI DMA IP进行环路测试

    学习内容 前文对AXI DMA IP进行了简介,本文使用AXI DMA IP进行环路测试. 开发环境 vivado 18.3&SDK,PYNQ-Z2开发板. 系统框图 本次工程使用ZYNQ开发 ...

  7. AXI DMA DRIVER 阶段性 kernel driver 构建并测试(三 )

    可以使用file_operators 绑定 dma 特定的操作模式 ,明天就可以加上寄存器 整体测试 >>> 为应用层程序的打印 根据这个物理地址的打印,是分配成功了, 总感觉哪里还 ...

  8. ZYNQ7 AXI DMA IP核应用测试

    ZYNQ7 AXI DMA IP核应用 硬件环境搭建 Vivado新建工程(2018.2为例) 添加IP核 配置IP核参数 ZYNQ7: 调节时钟频率为100M 添加HP接口用于DMA和DDR交互 添 ...

  9. ZU9 AXI DMA使用问题-收发数据过程和时序关系AXISTREAM FIFO - GTH结合问题

    首先参考如下文章,给了我很大启发,我这部分复位确实是按照环路做的,避开了坑.而我的设计中PL端时钟和PS端不是一个时钟,就出现了各种问题 ZYNQ AXI DMA使用问题_AE_小良的博客-CSDN博 ...

最新文章

  1. IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置[完整修正实用版]
  2. java抽象的理解_Java中抽象类的理解
  3. STM32 地址偏移问题及怎么运用
  4. python使用ffmpeg截取视频段
  5. SAP Spartacus forms.scss的引用问题
  6. scss里的继承操作符@extend
  7. android音频杂音问题_Android 音视频去回声、降噪(Android音频采集及回音消除)(转)...
  8. jsondataobjects
  9. 给自己的网站添加复制提示代码
  10. XSD详解三 - 复合元素+总结篇
  11. unity使用VideoPlayer播放视频
  12. rimworld简单机器人mod_rimworld分类技能机器人mod
  13. Linux(ubuntu)内容整理(常用命令)
  14. 双注入法/开路短路法
  15. 实训任务04 MapReduce编程入门
  16. 【转载】使用theano进行深度学习实践(一) - CSDN博客
  17. 电脑公司 GHOST WIN7 SP1 旗舰版
  18. 当面试官问Webpack的时候他想知道什么
  19. 切克闹!Java8新特性之方法引用
  20. 2021年金属非金属矿井通风免费试题及金属非金属矿井通风考试总结

热门文章

  1. 趣头条怎样赚钱快,趣头条赚钱是真的吗?
  2. Snowflake 简单介绍与使用
  3. 2022年大厂Android高级面试题分享,安卓Apk安装过程
  4. mysql的4表联查讲解,MySQL的多表联查
  5. Python学习笔记#4:快速生成二维矩阵的方法
  6. ITK Action handlers
  7. Cloud2.0时代排位赛争夺加剧,紫光云光速入场
  8. 全场景AI推理引擎MindSpore Lite, 助力HMS Core视频编辑服务打造更智能的剪辑体验
  9. 一加7pro何时发布android10,一加7Pro 5G升级Android10时间确认:就在2020年第一季度 zt...
  10. 人工智能在物流数据分析中的应用:基于人工智能的物流智能监控与分析