在 Zynq 平台中,AXI DMA(Direct Memory Access)IP 核用于通过 AXI4 总线实现内存与外设之间的高速数据传输。其核心功能是减轻 CPU 负担,通过 DMA 直接搬运数据。以下是关键接口的详细说明:
1. S_AXIS_S2MM
(Slave AXI4-Stream for S2MM)
- 方向: 输入(DMA 作为从设备接收数据)
- 用途: 用于 S2MM(Stream-to-Memory-Map) 方向的数据传输,即从外设(如 ADC、FPGA 逻辑)的流接口接收数据,并写入内存(DDR)。
- 数据流:
外设 →S_AXIS_S2MM
→ DMA → 内存(通过M_AXI_S2MM
)
2. M_AXIS_MM2S
(Master AXI4-Stream for MM2S)
- 方向: 输出(DMA 作为主设备发送数据)
- 用途: 用于 MM2S(Memory-Map-to-Stream) 方向的数据传输,即从内存(DDR)读取数据,并通过流接口发送到外设(如 DAC、FPGA 逻辑)。
- 数据流:
内存 → DMA(通过M_AXI_MM2S
) →M_AXIS_MM2S
→ 外设
3. M_AXI_MM2S
(Master AXI4 Memory-Map for MM2S)
- 方向: 输出(DMA 作为主设备访问内存)
- 用途: 用于 MM2S 方向的内存访问,即 DMA 主动从内存(DDR)读取数据,准备通过
M_AXIS_MM2S
发送到外设。 - 协议: AXI4 Memory-Map(支持突发传输)
- 操作:
DMA →M_AXI_MM2S
→ 内存控制器 → DDR
4. M_AXI_S2MM
(Master AXI4 Memory-Map for S2MM)
- 方向: 输出(DMA 作为主设备访问内存)
- 用途: 用于 S2MM 方向的内存访问,即 DMA 主动将接收到的数据通过
S_AXIS_S2MM
写入内存(DDR)。 - 协议: AXI4 Memory-Map(支持突发传输)
- 操作:
DMA →M_AXI_S2MM
→ 内存控制器 → DDR
关键区别总结
接口 | 类型 | 方向 | 用途 |
---|---|---|---|
S_AXIS_S2MM | AXI4-Stream | 输入 | 接收外设数据,写入内存(S2MM) |
M_AXIS_MM2S | AXI4-Stream | 输出 | 从内存读取数据,发送到外设(MM2S) |
M_AXI_MM2S | AXI4 Memory-Map | 输出 | 从内存读取数据(MM2S 方向) |
M_AXI_S2MM | AXI4 Memory-Map | 输出 | 将数据写入内存(S2MM 方向) |
典型工作流程
-
MM2S 传输(内存 → 外设)
- DMA 通过
M_AXI_MM2S
从 DDR 读取数据。 - 数据通过
M_AXIS_MM2S
流式发送到外设。
- DMA 通过
-
S2MM 传输(外设 → 内存)
- 外设数据通过
S_AXIS_S2MM
输入到 DMA。 - DMA 通过
M_AXI_S2MM
将数据写入 DDR。
- 外设数据通过
注意事项
- AXI4-Stream 用于无地址的高速流数据传输(如 ADC/DAC 数据流)。
- AXI4 Memory-Map 用于有地址的内存访问(如读写 DDR)。
- 确保在 Vivado 中正确连接 AXI Interconnect 和 Stream 接口,并配置 DMA 的寄存器以启动传输。