AXI DMA简介
-
DMA—直接内存访问—从外设到内存或者从内存到外设,不干涉CPU
-
硬核DMA和DMA软核如何选择
- 硬核—内存到内存、内存到PL(通过GP传输速率低)、内存到IO外设
- 软核—从PL部分将大量数据进行搬运到内存(连接到HP速率更高)
-
传输对象—提供从内存memory到AXI4-Stream外设的高带宽的数据搬移,其可选的S/G功能可以将CPU从数据搬运任务中解放出来
-
AXI DMA接口分析
- AXI4-Lite接口对寄存器做一些配置和获取状态
- MM2S,就是存储器映射到AXI4-Stream
- S2MM,就是AXI4-Stream到存储器映射
-
下图是一个AXI DMA应用在以太网接口外设的框架图
-
接口时钟介绍
- AXI DMA有两种时钟模式—异步和同步
- 同步模式下—运行在单一的时钟源下
- m_axi_sg_aclk, m_axi_mm2s_aclk,m_axi_s2mm_aclk接入同一时钟
- s_axi_lite_aclk连接到更低的时钟源上
- 异步模式—四个时钟源都可以不同,但要满足如下条件
- s_axi_lite_aclk <= m_axi_sg_aclk
- m_axi_sg_aclk <= m_axi_mm2s_aclk or m_axi_s2mm_aclk
- 复位时钟
- axi_resetn至少需要16个慢时钟周期同时要和s_axi_lite_aclk同步
-
配置顺序
- 单一DMA传输模式
- 通过访问DMACR、源地址或者目的地址和长度寄存器发起DMA传输
- 当传输完成后,如果使能了产生中断输出,那么DMASR寄存器相关联的通道位会有效,产生中断
- DMA的MM2S通道的启动顺序
- 开启/使能MM2S通道
- 如果需要的话,可以使能中断
- 写一个有效的源地址到MM2S_SA寄存器(如果没有使能DRE的功能,在指定起始地址时,需要注意字节地址对齐,哪些地址是对齐或者不对齐的,取决于Stream流的数据位宽)
- 写传输的字节数到MM2S_LENGTH寄存器—必须最后一个配置这个寄存器,其他三步寄存器无所谓顺序
- S2MM通道的启动顺序
- 开启/使能S2MM通道
- 如果需要的话,可以使能中断
- 写一个有效的目的地址到S2MM_SA寄存器(如果没有使能DRE的功能,在指定起始地址时,需要注意字节地址对齐,哪些地址是对齐或者不对齐的,取决于Stream流的数据位宽)
- 写传输的字节数到S2MM_LENGTH寄存器—必须最后一个配置这个寄存器,其他三步寄存器无所谓顺序
- 单一模式的缺点—传输地址一旦开始就相对固定,不能更改
- S/G模式
- 他把传输的基本参数,存储在内存中,因此,完全不需要打扰CPU进行
- 这些参数被称为BD
- 在工作时,通过SG接口加载和更新BD中的状态
- 循环DMA模式
- 基于S/G模式
- 单一DMA传输模式