Zynq-7000系列DMA控制器简介
扫描二维码
随时随地手机看文章
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 的大量中断负载,应用广泛。





