作者:碎碎思,来源:<span id="profileBt"><a href="https://mp.weixin.qq.com/s?__biz=Mzg4ODA5NzM1Nw==&mid=2247487700&idx=1&…微信公众号</a></span>
<strong>DMA内部寄存器的读写方式</strong>
基于AXI的DMA对内部寄存器的读写有着相同的方式。在普通传输模式下,DMA内部的寄存器都是由处理器通过AXI-Lite总线进行读写的;但基于AXI总线的三种DMA,都增加了S/G传输模式,它卸载了处理器对寄存器的读写,通过独立的S/G读写通道对存储着命令描述符的内存进行访问读取、处理描述符,然后更新描述符写入内存。
<strong>几种应用DMA的场合</strong>
<center><img src="http://xilinx.eetrend.com/files/2020-09/%E5%8D%9A%E5%AE%A2/100053004-10…; alt=""></center>
<strong>几种应用DMA的典型应用</strong>
<strong> (1) AXI DMA</strong>
<center><img src="http://xilinx.eetrend.com/files/2020-09/%E5%8D%9A%E5%AE%A2/100053004-10…; alt=""></center>
<p align="center"><strong>图4‑40 AXI DMA应用</strong></p>
在系统中,AXI DMA与处理器等其他设备通过AXI Interconnect互联。系统处理器通过AXI4-lite接口访问DMA内部寄存器,向其写入配置信息,然后根据配置信息,高效的进行数据传输;DMA也可以启动S/G传输模式,通过独立的AXI S/G通道从DDR中获取描述符信息,然后协调以太网和DDR间的数据传输;独立的控制和状态流通道,提供相关的包信息;DMA的中断与系统中断控制器相连。
<strong> (2) AXI Centralized DMA</strong>
<center><img src="http://xilinx.eetrend.com/files/2020-09/%E5%8D%9A%E5%AE%A2/100053004-10…; alt=""></center>
<p align="center"><strong>图4‑41 AXI CDMA</strong></p>
在此系统中,AXI CDMA与处理器等设备通过AXI Interconmect互联。CDMA控制着一个内存映射空间到另一个内存映射空间的数据传输。
<strong>(3) AXI Video DMA</strong>
<center><img src="http://xilinx.eetrend.com/files/2020-09/%E5%8D%9A%E5%AE%A2/100053004-10…; alt=""></center>
<p align="center"><strong>图4‑42 AXI VDMA</strong></p>
在此系统中,AXI VDMA与处理器等其他设备通过AXI Interconnect互联。系统处理器通过AXI4-lite接口访问VDMA内部寄存器,向其写入配置信息,然后根据配置信息,高效的进行数据传输;VDMA也可以启动S/G传输模式,通过独立的AXI S/G通道从DDR中获取描述符信息,然后调控Video IP和DDR间的数据传输;VDMA的双中断与系统中断控制器相连。
<strong>Scatter-gather DMA 与 block DMA</strong>
传统的block DMA 一次只能传输物理上连续的一个块的数据, 完成传输后发起中断。而scatter-gather DMA允许一次传输多个物理上不连续的块,完成传输后只发起一次中断。
传统的block DMA像这样:
<center><img src="http://xilinx.eetrend.com/files/2020-09/%E5%8D%9A%E5%AE%A2/100053004-10…; alt=""></center>
先进的scatter-gather DMA像这样:
<center><img src="http://xilinx.eetrend.com/files/2020-09/%E5%8D%9A%E5%AE%A2/100053004-10…; alt=""></center>
这样做的好处是直观的,大大减少了中断的次数,提高了数据传输的效率。