zynq DMA控制器

Zynq-7000系列器件PS端的DMA控制器采用ARM的IP核DMA-330(PL-330)实现。

特点:

 1.8个独立的通道,4个可用于PL—PS间数据管理,每个通道有1024Byte的MFIFO

2.使用CPU_2x 时钟搬运数据,CPU_2x = (CPU frq/6)*2

3.执行自定义内存区域内的DMA指令运行DMA

4. AHB控制寄存器支持安全和非安全模式

5.每个通道内置4字Cache

6. 可以访问SoC的以下映射物理地址:

DDR、OCM、PL、Linear QSPI Read、SMC和M_AXI_GP设备

DMA控制器可以访问连接到Central Interconnect上的所有设备,并提供了四个通道的外设管理接口可用于控制PL的数据搬运。

DMA控制器由指令加速引擎,AXI Master数据接口,AXI APB寄存器访问接口以及可以连接到PL的外设请求接口,数据缓冲FIFO和控制及状态产生单元组成。

MA控制器通过DMA指令执行引擎执行自己的指令,并将执行状态通过APB总线和中断等形式反馈给CPU,达到数据搬运不占用CPU的目的。

MA控制器共有八个通道,其中四个通道负责互联到Central Interconnectcun存储单元上的数据搬运;四个数据通道为外设请求接口,可用于PL AXI互联接口的数据访问管理。

 每个DMA通道都执行自己的指令,拥有自己的独立线程,通道间互不影响。指令执行引擎有自己独立的Cache。

DMAGO启动DMA

DMASEV事件信号

DMAKILL终止进程

1.编程启动DMA通道

2.将程序存储在系统内存中

使用DMAC上的一个APB接口编写DMAGO指令

3.DBGSTATUS寄存器以确保调试是空闲的,即DBGSTATUS位为0。

4.写dmac,DBGINST0寄存器

a. DMAGO的指令字节0编码。

b. DMAGO的指令字节1编码。

c.调试线程位到0。这将选择DMA管理器。参考调试指令-0

5.写DMAC DBGINST1指令

6,。写0给dmac DBGCMD寄存器

 

Programming Guide for DMA Controller

DMA控制器编程分为以下几个部分:

 DMA控制器初始化

组织DMA引擎执行代码

启动或停止DMA传输

异常处理。

                                                                

原文地址:https://www.cnblogs.com/hcr1995/p/9975489.html