当前位置:首页 > > ZYNQ
		


DMA 控制器简介

DMA 控制器 (DMAC) 使用以 CPU_2x 时钟速率运行的 64 位 AXI 主接口来执行与系统存储器和 PL 外设之间的 DMA 数据传输,传输由 DMA 指令执行引擎控制, DMA 引擎在一个小指令集上运行,该指令集提供了一种指定 DMA 传输的灵活方法,这种方法提供了比 DMA 控制器方法更大的灵活性。

DMA 引擎的程序代码由软件写入系统内存区域,控制器使用其 AXI 主接口访问该区域, DMA 引擎指令集包括用于 DMA 传输的指令和用于控制系统的管理指令。

控制器最多可配置 8 个 DMA 通道,每个通道对应一个运行在 DMA 引擎处理器上的线程。当 DMA 线程执行加载或存储指令时,DMA 引擎将内存请求推送到相关的读取或写入队列。

DMA 控制器使用这些队列来缓冲 AXI 读/写事务,控制器包含一个多通道 FIFO (MFIFO),用于在 DMA 传输期间存储数据。

在 DMA 引擎处理器上运行的程序代码将 MFIFO 视为包含一组用于 DMA 读取和写入事务的深度可变的并行 FIFO,程序代码必须管理 MFIFO,以便所有 DMA FIFO 的总深度不超过 1024 字节的 MFIFO。

DMAC 能够在没有处理器干预的情况下移动大量数据,源内存和目标内存可以位于系统中的任何位置(PS 或 PL), DMAC 的存储器映射包括 DDR、OCM、线性寻址 Quad-SPI 读存储器、SMC 存储器和 PL 外设或连接到 M_GP_AXI 接口的存储器。

PS 存储器传输的流量控制方法使用 AXI 互连,对 PL 外设的访问可以使用 AXI 流控制或 DMAC 的 PL 外设请求接口,没有指向 PS I/O 外设 (IOP) 的外设请求接口,对于 PL 外设 AXI 事务,在 CPU 上运行的软件以使用中断或状态轮询的编程 IO 方法使用。

控制器有两组控制和状态寄存器,一组可在安全模式下访问,另一组可在非安全模式下访问。软件通过控制器的 32 位 APB 从接口访问这些寄存器,整个控制器在安全或非安全模式下运行;没有基于通道的模式混合,安全配置更改由 slcr 寄存器控制,需要控制器复位才能生效。

DMA 控制器 特点

DMA 控制器提供:

  • DMA 引擎处理器,具有用于 DMA 传输的灵活指令集:

    • 灵活的分散-聚集内存传输
    • 完全控制源和目标的寻址
    • 定义 AXI 事务属性
    • 管理字节流
  • 八个高速缓存线,每个高速缓存线是四个字宽

  • 八个并发 DMA 通道线程

    • 允许多个线程并行执行
    • 发出最多 8 个读取和最多 8 个写入 AXI 事务的命令
  • 对 PS 中断控制器和 PL 的八个中断

  • DMA 引擎程序代码中的八个事件

  • 128(64 位)字 MFIFO 用于缓冲控制器在传输期间写入或读取的数据

  • 安全

    • 专用的 APB 从机接口,用于安全寄存器访问
    • 整个控制器配置为安全或非安全
  • 内存到内存 DMA 传输

  • 四个 PL 外设请求接口,用于管理进出 PL 逻辑的流量控制

    • 每个接口最多接受四个活动请求

DMA系统视图

DMA 模块的系统视点图如图所示

DMA控制器小结

DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载,应用广泛。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
关闭