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传输
异常处理。