AXI-DMA

这篇具有很好参考价值的文章主要介绍了AXI-DMA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

         AXI-DMA:实现数据从PS内存到PL的高速传输。    

         Zynq芯片有4个高速接口 HP 口,接口时序是 AXI 时序,需要通过AXI 的时序把数据写入到 HP 口,HP 口实际是跟 ARM 的 DDR3 的控制器互联的,这样的话,就能把 FPGA 这一侧的数据写入到 ARM 的内存里面去,这个过程叫做 DMA。

        DMA介绍:

        DMA直接存储器访问,无需CPU介入,提高数据的访问速率。因为CPU一个总线周期最多对总线进行一次读写操作,对于CPU处理器,如果要把内存中A地址的数据搬移到B地址,需要先将A地址的数据取出并放入寄存器,再从寄存器取出数据放入B地址,需要花费两个总线周期。而DMA可直接进行A地址到B地址的数据搬移。DMA在进行数据的传输期间,CPU被挂起,会失去对系统总线的控制,会影响CPU对中断请求的及时响应与处理。因此,DMA一般应用于速度要求高,数据传输量偏大的系统中。

        DMAC为DMA控制器,DMAC取代CPU,控制DMA传输。

        DMAC功能:

        1. DMA请求,DMAC响应;

        2. DMAC向CPU发起总线请求,CPU响应该信号;

        3. DMAC接管对总线的控制权,进行DMA操作;

        4.  DMA传输结束,发出结束信号,释放总线,CPU恢复对总线的控制权;

        AXI介绍:

        AXI协议是基于burst的传输,burst突发不能超过4KB,不然就会访问到其他外设,会出现一个外设响应,而另一个外设并无响应,就会导致此笔burst交易无法完成。AXI协议定义了5个独立的传输通道:写地址、写数据、写响应、读地址、读数据;并且每个通道都有自己的握手协议。

        信道间握手关系:

AXI-DMA

         INFORMATION为要传递的数据,数据的提供方会输出 VALID 信号,数据的接收方要提供 READY 信号,当 VALID 与 READY 信号共同有效的时候,也即会采集到 information,也即只有在 T3的时候才会采集到。也就是 VALID 与 READY 握手的一个机制,一旦VALID 信号拉高,必须等待READY 有效之后才能拉低。若 READY 还未拉高,VALID 就拉低,这样就违背协议了。 

        Master设备和Slave设备通过interconnect组成的系统如下图,AXI总线作为其中的interface,实现数据通信。

AXI-DMA

        为防止死锁,在读写传输事务上,AXI信号遵循了一定的依赖关系;

        1. VALID不能依赖READY;

        2. AXI接口可以等待检测到VALID才断言对应的READY,也可以检测到VALID之前就断言READY;

        AXI写时序依赖关系:

AXI-DMA

         AXI读时序依赖关系:

AXI-DMA

 双箭头表示:前后有依赖关系,前面发生了,后面才会发生。

         AXI outstanding:因为AXI数据传输是基于握手传输,即上一次传输完才进行下一次传输,读操作:读地址命令 -> 等待读数据返回        以此循环;写操作:写地址命令 -> 写数据 -> 等待写响应返回        以此循环;这期间可能会产生气泡。而outstanding模式,读操作:可以连续发N个读地址命令,这期间如果读数据没有返回,则等待;如果有数据返回,返回几个数据,就可以接着发几个地址;写操作:可以连续发N组写地址命令,这期间如果没有写响应返回,则等待,如果有写响应返回,返回几个,就可以接着发几组写地址命令。

        AXI总线是基于握手协议进行传输,需要同时等到主机的VALID和从机的READY信号有效才能进行传输,并且地址和数据的传输是分离的;而outstanding就是发出去的地址数据,未处理的地址可以先存放在AXI综合性的缓存里,等待以此传输事物完成后,无需再握手,即可立即进行下一次的传输,所以outstanding本质上是为了实现数据的流水线传输。

        对AXI而言,因为读写分离,所以outstanding分为读outstanding和写outstanding。

        AXI的写响应信号是一个Burst传输完成之后返回一个写响应信号,并非每次握手传输完成之后返回,并且在数据传输完成之后,读写双方都会有LAST信号产生,用以标识最后一笔数据传输完成。

        AXI突发写时序:

AXI-DMA

         AXI突发读时序:

AXI-DMA

 文章来源地址https://www.toymoban.com/news/detail-403163.html

到了这里,关于AXI-DMA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA基于AXI 1G/2.5G Ethernet Subsystem实现UDP通信DMA传输 提供工程源码和技术支持

    目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,连基本的问题排查机制都不具备,这样的代

    2024年02月10日
    浏览(33)
  • AXI DMA IP核使用说明

    AXI DMA提供内存和AXI4-Stream 目标外设之间的高带宽直接内存访问。DMA除了配置为直接DMA模式外,还可以配置为scatter/gather(S/G)模式,S/G模式减轻CPU负担。 为了掌握对DMA的使用方法,需要对DMA IP核有足够的了解。这篇文章主要对AXI DMA IP 核的使用进行简单的说明,接下来详细论

    2024年02月13日
    浏览(34)
  • zynq 使用AXI_dma 传输==pl到ps,linux驱动开发,应用层处理DMA数据

    在使用zynq输出处理时,会使用到pl和ps的数据传输,可供使用的方案有多种,由于我们的数据量较大打算,因此使用用以下两种方案处理: 1.使用pl直接写ddr3, 2.使用dma, 本次详细介绍使用axi_dma如何将pl的数据在linux应用层接收数据并处理,以及遇到的问题 fpga工程,我们使用

    2024年02月03日
    浏览(41)
  • ZYNQ AXI_DMA_UDP以太网传输(二)问题记录

    上一篇文章只是简单的记录一下调试成功的代码 但调试成功这个过程很痛苦,踩了很多坑,特此记录,留眼以后查看 参考博客 xilinx dma调试笔记 ZYNQ AXI DMA调试细节 在调试过程中出现这类问题基本上都是这一句代码出了问题: 再往里面跳可以看见这样一个函数,在正点原子提

    2024年03月14日
    浏览(53)
  • AXI三种接口及DMA DDR XDMA介绍(应用于vivado中的ip调用)

    参考资源: 【SDK篇_58~62_AXI接口简介【Xilinx】+【Vivado】+【AXI4总线】+【FPGA】-哔哩哔哩】 关于AXI握手过程都讲解的很细致 ug1037(三种AXI的介绍,相关AXI IP的介绍) IHI0022D(握手过程的详细介绍) FPGA_HP:AXI4的学习与使用1——基础知识积累 这个博主写的其他内容也不错 从零学

    2024年01月24日
    浏览(34)
  • 基于STM32F103C8T6的高速DMA传输多通道ADC数据

    ADC在STM32系列单片机的使用中占用着很大的比例,常见的案例是通过ADC单次转换电压值,这种方式的缺陷在于转换效率不高。一般的单片机带有ADC1和ADC2两个ADC转换,单次转换需要执行一定的程序,想得到结果需要耗费一些时间在赋值,调用中断上面。在此基础上,为了提高转

    2024年02月11日
    浏览(45)
  • ZYNQ使用AXI DMA(Scatter/Gather)模式进行PL与PS数据交互附源码(ps端移植freertos或者裸机)

    AXI DMA 操作需要先提供一个在内存中驻留的不变空间,用于存储需要进行的DMA操作。形容这“每一次操作”的东西叫做Buffer Descriptor,缩写叫BD,这些BD是连接成链表的形式的,因为BD会动态增加,而预先分配存储BD的空间是恒定的,因此BD被连成一个环(BD Ring),其实就是一个循

    2024年02月09日
    浏览(29)
  • Linux——内存和DMA

    目录 本章目标: 一、内存组织 二、按页分配内存 三、slab分配器 四、不连续内存页分配 五、per-CPU变量           在前面的所有例子中,我们使用的都是全局变量或在栈上分配的内存。本章我们将先讨论如何动态分配内存和per-CPU变量。类似于 ARM 这样的体系结构,操作硬

    2024年02月07日
    浏览(30)
  • 【正点原子FPGA连载】第二十一章AXI DMA环路测试 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html DMA(Direct Memory Access,直接存储器访问)是计算机科学中的一种内存访问技术。它允许某些计算机内部的硬件子系

    2024年02月16日
    浏览(48)
  • STM32 hal库使用笔记(四)DMA—内存到内存/内存到外设

    目录 一、简介 1.DMA简介 2.一些概念 3.工作原理 二、HAL库的配置 1.时钟树的设置 2.DMA配置 2.1 内存到内存(代码对应3.1) 2.2 内存到外设(代码对应3.2) 三、代码编写 一、简介 1.DMA简介     DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之

    2024年02月04日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包