Vivado 中如何使用 AXI DMA, PL 访问 DDR
起始工程是原来的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相关推荐
- ZYNQ学习之路11.AXI DMA
一. AXI DMA简介 AXI DMA IP核提供了AXI4内存之间或AXI4-Stream IP之间的内存直接访问,可选为分散收集工作模式,初始化,状态和管理寄存器等通过AXI4-Lite 从机几 ...
- AXI三种接口及DMA DDR XDMA介绍(应用于vivado中的ip调用)
一.AXI--高级可扩展接口(UG1037) 参考资源: [SDK篇_58~62_AXI接口简介[Xilinx]+[Vivado]+[AXI4总线]+[FPGA]-哔哩哔哩] 关于AXI握手过程都讲解 ...
- vivado中ZYNQ详解(主要用于PS和PL之间的工作衔接)
可进qq群进行相关Verilog知识交流:1073030956 AXI的理解 AXI(Advanced extensible Interface)协议主要描述了Master设备和Slave设备之间的数 ...
- zcu104 AXI DMA速度测试总结
一.前言 好久没有认真的写一些技术博客了,工作半年了,最近两个月好像才慢慢的恢复过来了,不能摸鱼了,2020年,自己的生活中会有很多可见的变化,要快速成长啊,具备与之匹配的技术和能力啊. 二.PL侧工 ...
- ZYNQ小实验:1.利用AXI DMA loop 环路测试
前言: 一个基本的 DMA 环路搭建,通过 PS 端控制 DMA 对 DDR 数据的读写和校验,完成环路测试 基本流程: PS 端 ARM 将数据发送给 DDR. PS 控制 DMA,使 DMA 通过 ...
- ZYNQ-使用AXI DMA IP进行环路测试
学习内容 前文对AXI DMA IP进行了简介,本文使用AXI DMA IP进行环路测试. 开发环境 vivado 18.3&SDK,PYNQ-Z2开发板. 系统框图 本次工程使用ZYNQ开发 ...
- AXI DMA DRIVER 阶段性 kernel driver 构建并测试(三 )
可以使用file_operators 绑定 dma 特定的操作模式 ,明天就可以加上寄存器 整体测试 >>> 为应用层程序的打印 根据这个物理地址的打印,是分配成功了, 总感觉哪里还 ...
- ZYNQ7 AXI DMA IP核应用测试
ZYNQ7 AXI DMA IP核应用 硬件环境搭建 Vivado新建工程(2018.2为例) 添加IP核 配置IP核参数 ZYNQ7: 调节时钟频率为100M 添加HP接口用于DMA和DDR交互 添 ...
- ZU9 AXI DMA使用问题-收发数据过程和时序关系AXISTREAM FIFO - GTH结合问题
首先参考如下文章,给了我很大启发,我这部分复位确实是按照环路做的,避开了坑.而我的设计中PL端时钟和PS端不是一个时钟,就出现了各种问题 ZYNQ AXI DMA使用问题_AE_小良的博客-CSDN博 ...
最新文章
- IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置[完整修正实用版]
- java抽象的理解_Java中抽象类的理解
- STM32 地址偏移问题及怎么运用
- python使用ffmpeg截取视频段
- SAP Spartacus forms.scss的引用问题
- scss里的继承操作符@extend
- android音频杂音问题_Android 音视频去回声、降噪(Android音频采集及回音消除)(转)...
- jsondataobjects
- 给自己的网站添加复制提示代码
- XSD详解三 - 复合元素+总结篇
- unity使用VideoPlayer播放视频
- rimworld简单机器人mod_rimworld分类技能机器人mod
- Linux(ubuntu)内容整理(常用命令)
- 双注入法/开路短路法
- 实训任务04 MapReduce编程入门
- 【转载】使用theano进行深度学习实践(一) - CSDN博客
- 电脑公司 GHOST WIN7 SP1 旗舰版
- 当面试官问Webpack的时候他想知道什么
- 切克闹!Java8新特性之方法引用
- 2021年金属非金属矿井通风免费试题及金属非金属矿井通风考试总结
热门文章
- 趣头条怎样赚钱快,趣头条赚钱是真的吗?
- Snowflake 简单介绍与使用
- 2022年大厂Android高级面试题分享,安卓Apk安装过程
- mysql的4表联查讲解,MySQL的多表联查
- Python学习笔记#4:快速生成二维矩阵的方法
- ITK Action handlers
- Cloud2.0时代排位赛争夺加剧,紫光云光速入场
- 全场景AI推理引擎MindSpore Lite, 助力HMS Core视频编辑服务打造更智能的剪辑体验
- 一加7pro何时发布android10,一加7Pro 5G升级Android10时间确认:就在2020年第一季度 zt...
- 人工智能在物流数据分析中的应用:基于人工智能的物流智能监控与分析