1、DMA配置与寄存器说明

DMA配置为Direct Register Mode (Simple DMA ),DMA分为两个方向:一是S2MM,即PL to PS;二上MM2S,即PS to PL。DMA通过AXI Lite接口控制数据传输,Lite接口内有两组控制寄存器,分别对应MM2S和S2MM。

接口说明:

  1. S_AXI_LITE为寄存器配置端口,一般是接到APU,由APU控制DMA传输,如果由PL端控制会容易出现将数据写入到已经在使用的内存中,会出现死机的情况。
  2. S_AXIS_S2MM为PL到PS的stream数据传输接口;
  3. M_AXI_MM2S为DMA读内存的端口,一般是连接S_AXI_HP接口,通过S_AXI_HP接口将内存的数据读出来,然后再通过M_AXIS_MM2S接口传输到PL。
  4. M_AXIS_MM2S为传输到PL的Stream接口。

2、S2MM

在DMA简单模式中,S2MM常用的寄存器为DMACR、DA、DA_MSB、LENGTH。

配置流程:

  1. S2MM通道复位,写1到S2MM_DMACR寄存器的bit2(地址34h)。
  2. 写目标地址48h和4Ch,注意地址需要4字节对齐,否则数据将不会全部写入。
  3. 写S2MM_DMACR寄存器,写1到bit0、bit12、bit14,让DMA开始运行,并打开中断输出。
  4. 最后写LENGTH寄存器,长度按字节计算,写入长度后即可开始传输时数。LENGTH寄存器一定要在最后才写。
  5. 拉高tvalid信号,同时输入有效数据,当tready也为高时,DMA接收输入数据。
  6. DMA是突发写的形式,突发长度由DMA自己控制,这个是不可配置的,DMA会将长包分多次传输。
  7. DMA传输完成后,会将中断输出信号拉高,中断信号会一直保持高电平,直到DMA复位或手动清除中断。

3、MM2S

在DMA简单模式中,MM2S常用的寄存器为DMACR、DMASR、SA、SA_MSB、LENGTH。

配置流程:

  1. S2MM通道复位,写1到MM2S_DMACR寄存器的bit2(地址0h)。
  2. 写目标地址18h和1Ch,注意地址需要4字节对齐,否则数据将不会全部写入。
  3. 读MM2S_ DMASR寄存器,查询halted位是否为0,为0则DMA可用,IDLE在空闲时为1。
  4. 写MM2S_DMACR寄存器,写1到bit0、bit12、bit14,让DMA开始运行,并打开中断输出。
  5. 最后写LENGTH寄存器,长度按字节计算,写入长度后即可开始传输时数。LENGTH寄存器一定要在最后才写。
  6. DMA的M_AXI_MM2S接口开始从内存中读数据,读到的数据从M_AXIS_MM2S接口传到PL中。
  7. DMA传输完成后,会将中断输出信号拉高,中断信号会一直保持高电平,直到DMA复位或手动清除中断。
  1. 例子

这是经典的ZYNQ控制DMA的连接方法,DMA模块连接ZYNQ处理器的S_AXI_HP0,S_AXI_HP0经过AXI_Interconnect连接到DMA。为了搞清楚DMA的控制方法,用PL纯逻辑进行控制,在Modelsim中查看MDA的输入输出。

  1. Axi_litr_wr模块为Master模式,对DMA的Lite寄存器进行读写。Lite模块从Vivado的IP封装模板修改而来,模板不是很好用,要修改的地方比较多,容易错。
  2. M_AXIS_S2MM为输入到DMA的数据,经过M_AXI_S2MM端口输出到AXI_BRAM_CTRL_0中,再写入到AXI_BRAM中,AXI_BRAM_CTRL_0是模拟AXI_HP0的写通道,AXI为握手通信协议,因此主从接口都是需要才能正常通信。
  3. M_AXI_MM2S是从PS中读数据,AXI_BRAM_CTRL_1模拟AXI_HP0的读通道(从内存中读数据),读到的数据经过M_AXIS_MM2S输出。

以MM2S为例:

根据上述DMA配置流程配置DMA寄存器,SA寄存器设置为32,LENGTH寄存器设置为256字节。M_AXI_MM2S控制BRAM_CTRL开始读数据,可以看到bram_addr_a也是从32开始,当bram_en_a拉高时开始读数据,读数据从bram_rdata_a输入,输入数据从100开始(给RAM读地址后会有一个周期延迟,因此实际有效数据从101开始)。

M_AXI_MM2S读回的数据从M_AXIS_MM2S接口输出。

数据传输完成后DMA的中断mm2s_introut拉高,最后一个传输数据为164,数据长度与设置长度一致(256/4)。

DMA 驱动C代码:

在zynq7010中以100M的时钟实测,传输速度340MB/s,达到了文档给出的参考值。如果在ZCU9EG中,以128位的DDR4接口,256M传输时钟,速度应该可达到3.2GB/s。

ZYNQ DMA Modelsim仿真与速度测试相关推荐

  1. PYNQ下的DMA传输实现及速度测试

    在成功实现ZCU106开发板的PYNQ镜像生成后(见ZCU106的PYNQ移植),开发板的结构可抽象为下图所示: 我们可以通过在开发板的OS中架设TCP服务器,在上位机PC端进行TCP客户端访问来实现 ...

  2. FPGA学习笔记(五)Testbench(测试平台)文件编写进行Modelsim仿真

    系列文章目录 一.FPGA学习笔记(一)入门背景.软件及时钟约束 二.FPGA学习笔记(二)Verilog语法初步学习(语法篇1) 三.FPGA学习笔记(三) 流水灯入门FPGA设计流程 四.FPGA ...

  3. 【转】xilinx usb下载器 速度高速极限设置 JTAG-SMT2 JTAG-HS2 JTAG-HS3和Platform Cable USB DLC9 DLC10速度测试

    xilinx usb下载器 下载速度极限设置以及高速JTAG-SMT2(HS1 HS2 HS3)和DLC9 DLC10 速度测试 对于一款xilinx的下载器,研发和烧录以及boss都最关心下载速度的 ...

  4. modelsim仿真加速注意点

    下面说一下我的使用方法(我一般是在linux下使用,考虑到大家大部分都使用windows,所以下面举的例子为windows下的使用方法): 1.建立modelsim子目录 2.第一次运行时,还是需要先 ...

  5. ModelSim仿真入门之一:软件介绍

     http://www.cnblogs.com/xd-elegant/p/4093645.html 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤 ...

  6. FPGA开发技巧:Modelsim仿真.do文件详细解析 原创 特权同学

    FPGA开发技巧:Modelsim仿真.do文件详细解析 原创 特权同学 FPGA快乐学习 以<FPGA边码边学 视频教程>"Lesson06 分频计数器设计"中的si ...

  7. Modelsim仿真流程

    Modelsim仿真流程 1. Modelsim简介 略. 2. modelsim仿真流程:modelsim基本的仿真流程包括建立库.建立工程并编译.仿真.调试.但在libero环境中运行models ...

  8. modelsim仿真ROM IP数据输出为0的解决办法

    解决办法:把mif文件放在根目录下,和文件夹db同一级,File name就会直接显示这个文件名字 总结主要问题应该还是出在文件路径 主要参考这篇博客 FPGA的ROM-IP核配置问题 https:/ ...

  9. usb3.0传输速度测试软件,USB3.0与USB2.0的传输速度对比测试

    USB 3.0对多数电脑爱好者都已经不陌生,发布也有段时间了,多数朋友大概都还只知道USB 3.0接口传送数据能力比USB 2.0接口快很多,但到底有多快,可能就很少人知道了.下面小编就为大家介绍一下 ...

最新文章

  1. python datetime 加一个月_Python 如何计算当前时间减少或增加一个月
  2. Python打开文件,将list、numpy数组内容写入txt文件中
  3. 用DriverStudio开发USB驱动程序
  4. 阮一峰react demo代码研究的学习笔记 - ReactMount.render
  5. Android开发之动态添加WebView实现进度条标题栏展示效果
  6. 数据结构之遍历二叉树
  7. mysql 最近5分钟_如何5分钟实现一个最简单的MySQL代理服务器?
  8. 火星舱如何备份oracle_倒计时!火星,我们来了
  9. 91. php 命名空间(1)
  10. 软考信息系统项目管理师真题及答案之案例分析
  11. 扬天t4900d u盘linux,联想扬天T4900d台式电脑u盘启动设置方法
  12. 小狼毫 Rime 输入法任务导向式常用参数修改指南
  13. aip pytesseract识别图片中的文字
  14. Seaborn使用violinplot函数可视化分组小提琴图(violin plot)、使用inner函数设置在小提琴图中使用虚线显示分位数位置(inner = ‘quartile‘)
  15. APP服务器与Web服务器的区别是什么?
  16. 软件性能测试需要什么资质,性能测试CNAS资质软件验收测试报告
  17. ORB-Mono原理梳理
  18. 何为Agile,何为Scrum
  19. Vue 项目飞鸟头条后台管理系统
  20. 百度万亿流量的转发引擎BFE开源了!

热门文章

  1. 工具篇:git cherry-pick
  2. 天梯赛:L2-027 名人堂与代金券 (25 分)
  3. 软件工程学导论第一章-软件工程学概述
  4. 产品挖掘,促使用户产生利润
  5. pureftpd 配置 mysql_pureftpd+mysql验证的安装配置文档
  6. r720 服务器换固态装系统,联想解决R720在Raid模式下重装Win10系统无法识别固态硬盘的问题...
  7. 2023年计算机视觉与模式识别国际会议(CCVPR 2023)
  8. 停电后wifi服务器无响应,停电后路由器连不上网(图文)
  9. qt 设置中英文切换
  10. css行高包含哪些,详解CSS行高