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

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

3天内不再提示

ZYNQ中DMA与AXI4总线

FPGA之家 来源:FPGA之家 作者:FPGA之家 2020-11-02 11:27 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

ZYNQ中DMA与AXI4总线

为什么在ZYNQ中DMA和AXI联系这么密切?通过上面的介绍我们知道ZYNQ中基本是以AXI总线完成相关功能的:

图4‑34连接 PS 和 PL 的 AXI 互联和接口的构架

在ZYNQ中,支持AXI-Lite,AXI4和AXI-Stream三种总线,但PS与PL之间的接口却只支持前两种,AXI-Stream只能在PL中实现,不能直接和PS相连,必须通过AXI-Lite或AXI4转接。PS与PL之间的物理接口有9个,包括4个AXI-GP接口和4个AXI-HP接口、1个AXI-ACP接口。

Xilinx提供的从AXI到AXI-Stream转换的IP核有:AXI-DMA,AXI-Datamover,AXI-FIFO-MM2S以及AXI-vDMA等

AXI-DMA:实现从PS内存到PL高速传输高速通道AXI-HP<---->AXI-Stream的转换

AXI-FIFO-MM2S:实现从PS内存到PL通用传输通道AXI-GP<----->AXI-Stream的转换

AXI-Datamover:实现从PS内存到PL高速传输高速通道AXI-HP<---->AXI-Stream的转换,只不过这次是完全由PL控制的,PS是完全被动的。

AXI-VDMA:实现从PS内存到PL高速传输高速通道AXI-HP<---->AXI-Stream的转换,只不过是专门针对视频、图像等二维数据的。

除了上面的还有一个AXI-CDMA IP核,这个是由PL完成的将数据从内存的一个位置搬移到另一个位置,无需CPU来插手。

上面的IP是完成总线协议转换,如果需要做某些处理(如变换、迭代、训练……),则需要生成一个自定义Stream类型IP,与上面的Stream接口连接起来,实现数据输入输出。用户的功能在自定义Stream类型IP中实现。

综上,在ZYNQ中DMA和AXI是不可分割的两者,所以介绍DMA也是必须的。

1.1.1DMA简介

DMA是一种内存访问技术,允许某些计算机内部的硬件子系统可以独立的直接读写内存,而不需要CPU介入处理,从而不需要CPU的大量中断负载,否则,CPU需要从来源把每一片段的数据复制到寄存器,然后在把他们再次写回到新的地方,在这个时间里,CPU就无法执行其他的任务。

DMA是一种快速数据传送方式,通常用来传送数据量较多的数据块。使用DMA时,CPU向DMA控制器发送一个存储器传输请求,这样当DMA控制器在传输的时候,CPU执行其他的操作,传输完成时DMA以中断的方式通知CPU。

DMA传输过程的示意图为:

图4‑35DMA传输过程的示意图

DMA的传输过程为:

1、为了配置用DMA传输数据到存储器,处理器(Cortex-A9)发出一条指令。

2、DMA控制器把数据从外设传输到存储器或者从存储器传输到存储器,从而较少CPU处理的事务量。

3、输出传输完成后,向CPU发出一个中断通知DMA传输可以关闭。

为了发起传输事务,DMA控制器必须得到以下信息:

(1)、源地址——数据被读出的地址

(2)、目的地址——数据被写入的地址

(3)、传输长度——应传输的字节数

我们可以理解,无论是程序控制方式还是中断控制方式,数据的传输都必须经过处理器。而在一个嵌入式微处理器为主控的应用系统中,当有大量数据在存储器和外设之间传输时,采用程序控制方式显然不合适,但是若采用中断控制方式,会造成中断次数过于频繁,不仅速度上不去,还需要处理器及时干预进行处理,大大降低了工作的效率。

然而,使用DMA的好处就是它不需要CPU的干预而直接服务外设,这样CPU就可以去处理别的事务,从而提高系统的效率,对于慢速设备,其作用只是降低CPU的使用率,但对于高速设备,它不只是降低CPU的使用率,而且能大大提高硬件设备的吞吐量。因为对于这种设备,CPU直接供应数据的速度太低。因CPU只能一个总线周期最多存取一次总线,而且对于处理器,它不能把内存中A地址的值直接搬到B地址。它只能先把A地址的值搬到一个寄存器,然后再从这个寄存器搬到B地址。也就是说,对于处理器,要花费两个总线周期才能将A地址的值送到B地址。而DMA就不同了,一般系统中的DMA都有突发(Burst)传输的能力,在这种模式下,DMA能一次传输几个甚至几十个字节的数据,所以使用DMA能使设备的吞吐能力大为增强。

鉴于上面的优势,系统中使用DMA是必要的,能够提高数据吞吐量,减轻了CPU的负担,使得整个系统的性能得到提高。

说了这么多优点,那么DMA缺点是什么呢?DMA传送期间CPU被挂起,部分或完全失去对系统总线的控制,这可能会影响CPU对中断请求的及时响应与处理。因此,在一些小系统或速度要求不高、数据传输量不大的系统中,一般并不用DMA方式。因为DMA允许外设直接访问内存,从而形成对总线的独占。这在实时性强的硬实时系统嵌入式开发中将会造成中断延时过长。

DMAC为DMA控制器

DMA传送虽然脱离CPU的控制,但并不是说DMA传送不需要进行控制和管理。通常是采用DMA控制器来取代CPU,负责DMA传送的全过程控制。目前DMA控制器都是可编程的大规模集成芯片。

图4‑36DMAC结构

DMA控制器是内存储器同外设之间进行高速数据传送时的硬件控制电路,是一种实现直接数据传送的专用处理器,它必须能取代在程序控制传送中由CPU和软件所完成的各项功能。它的主要功能是:

(1)DMAC同外设之间有一对联络信号线--外设的DMA请求信号DREQ以及 DMAC向外设发出的DMA响应信号DACK;(如下图)
(2)DMAC在接收到DREQ后,同CPU之间也有一对联络信号线--DMAC向CPU 发出总线请求信号(HOLD或BUSRQ),CPU在当前总线周期结束后向DMAC发出总线响应信号(HLDA或BUSAK),DMAC接管对总线的控制权,进入DMA操作方式;
(3)能发出地址信息,对存储器寻址,并修改地址指针,DMAC内部必须有能自动加1或减1的地址寄存器;
(4)能决定传送的字节数,并能判断DMA传送是否结束。DMA内部必须有能自动减1的字计数寄存器,计数结束产生终止计数信号;
(5)能发出DMA结束信号,释放总线,使CPU恢复总线控制权;
(6)能发出读、写控制信号,包括存储器访问信号和I/O访问信号。DMAC内部必须有时序和读写控制逻辑。

图4‑37DMAC在DMA中的作用示意图(一)

图4‑38DMAC在DMA中的作用示意图(二)

责任编辑:xj

原文标题:ZYNQ中DMA与AXI4总线-DMA简介

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

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

    关注

    3

    文章

    577

    浏览量

    105370
  • AXI总线
    +关注

    关注

    0

    文章

    68

    浏览量

    14719
  • Zynq
    +关注

    关注

    10

    文章

    625

    浏览量

    49245

原文标题:ZYNQ中DMA与AXI4总线-DMA简介

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    利用开源uart2axi4实现串口访问axi总线

    microblaze和jtag-to-axi(jtag2axi)虽然也提供了访问axi总线的能力,但是依赖于xilinx平台。而uart-to-ax
    的头像 发表于 12-02 10:05 1613次阅读
    利用开源uart2<b class='flag-5'>axi4</b>实现串口访问<b class='flag-5'>axi</b><b class='flag-5'>总线</b>

    基于AXI DMA IP核的DDR数据存储与PS端读取

    添加Zynq Processing System IP核,配置DDR控制器和时钟。7000系列的Zynq可以参考正点原子DMA回环测试设置。
    的头像 发表于 11-24 09:25 2685次阅读
    基于<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b> IP核的DDR数据存储与PS端读取

    使用AXI4接口IP核进行DDR读写测试

    本章的实验任务是在 PL 端自定义一个 AXI4 接口的 IP 核,通过 AXI_HP 接口对 PS 端 DDR3 进行读写测试,读写的内存大小是 4K 字节。
    的头像 发表于 11-24 09:19 2869次阅读
    使用<b class='flag-5'>AXI4</b>接口IP核进行DDR读写测试

    RDMA设计4:技术需求分析2

    开发。设计基于纯逻辑电路,可以脱离 MCU 控制独立运行,兼容 SoC 环境与纯逻辑环境。 (4)使用标准 AXI 总线接口,设计使用标准化的 AXI4
    发表于 11-24 09:09

    Xilinx高性能NVMe Host控制器IP+PCIe 3.0软核控制器IP,纯逻辑实现,AXI4AXI4-Stream DMA接口,支持PCIe 3.0和4.0

    )读写、DMA读写和数据擦除功能,提供用户一个简单高效的接口实现高性能存储解决方案。NVMe AXI4 Host Controller IP读写的顺序传输长度是RTL运行时动态可配置的,最小
    发表于 11-14 22:40

    NVMe高速传输之摆脱XDMA设计23:UVM验证平台

    NVMe over PCIe采用 AXI4-Lite 接口、AXI4 接口和 PCIe3.0X4 接口,其中AXI4-Lite 和 AXI4
    的头像 发表于 08-25 18:53 2703次阅读
    NVMe高速传输之摆脱XDMA设计23:UVM验证平台

    RDMA简介8之AXI分析

    AXI4 总线是第四代 AXI 总线,其定义了三种总线接口,分别为:AXI4
    的头像 发表于 06-24 23:22 466次阅读
    RDMA简介8之<b class='flag-5'>AXI</b>分析

    RDMA简介9之AXI 总线协议分析2

    ​ 这里以功能完备的 AXI4 接口举例说明 AXI4 总线的相关特点。AXI4 总线采用读写通道分离且数据通道与控制通道分离的方式,这样的
    发表于 06-24 18:02

    RDMA简介8之AXI 总线协议分析1

    AXI 总线是一种高速片内互连总线,其定义于由 ARM 公司推出的 AMBA 协议,主要用于高性能、高带宽、低延迟、易集成的片内互连需求。AXI4
    发表于 06-24 18:00

    NVMe IP之AXI4总线分析

    1AXI4总线协议 AXI4总线协议是由ARM公司提出的一种片内总线协议 ,旨在实现SOC各模
    发表于 06-02 23:05

    NVMe简介之AXI总线

    NVMe需要用AXI总线进行高速传输。而AXI总线是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)协议
    的头像 发表于 05-21 09:29 591次阅读
    NVMe简介之<b class='flag-5'>AXI</b><b class='flag-5'>总线</b>

    NVMe协议简介之AXI总线

    高性能、高带宽、低延时的片内互连需求。AXI4总线则是AXI总线的第四代版本,主要包含三种类型的接口,分别是面向高性能地址映射通信的AXI4
    发表于 05-17 10:27

    一文详解AXI DMA技术

    AXI直接数值存取(Drect Memory Access,DMA)IP核在AXI4内存映射和AXI4流IP接口之间提供高带宽的直接内存访问。DMA
    的头像 发表于 04-03 09:32 2084次阅读
    一文详解<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b>技术

    AXI接口FIFO简介

    AXI接口FIFO是从Native接口FIFO派生而来的。AXI内存映射接口提供了三种样式:AXI4AXI3和AXI4-Lite。除了Na
    的头像 发表于 03-17 10:31 1787次阅读
    <b class='flag-5'>AXI</b>接口FIFO简介

    ZYNQ基础---AXI DMA使用

    前言 在ZYNQ中进行PL-PS数据交互的时候,经常会使用到DMA,其实在前面的ZYNQ学习当中,也有学习过DMA的使用,那就是通过使用自定义的IP,完成HP接口向内存写入和读取数据的
    的头像 发表于 01-06 11:13 3600次阅读
    <b class='flag-5'>ZYNQ</b>基础---<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b>使用