文章目录
- [AXI DMA](#AXI DMA)
-
- [Read Channel(读通道)](#Read Channel(读通道))
- [Write Channel(写通道)](#Write Channel(写通道))
- [# 其他选项](# 其他选项)
- [Scatter Gather Engine](#Scatter Gather Engine)
AXI DMA
配置项 | 说明 |
---|---|
Component Name (axi_dma) | DMA组件的名称,可以自定义。 |
Enable Asynchronous Clocks | 允许DMA在不同时钟域之间工作,适用于不同频率的模块。 |
Enable Scatter Gather Engine | 启用SG,DMA可处理不连续内存块的数据传输。 |
Enable Micro DMA | 启用微DMA,适合资源需求低的应用场景。 |
Enable Multi Channel Support | 启用多通道支持,允许DMA处理多个数据通道。 |
Enable Control / Status Stream | 启用控制/状态流,DMA可生成控制和状态信号的AXI流接口。 |
Width of Buffer Length Register (8-26 bits) | 指定描述数据传输长度的寄存器宽度,范围为8-26位,当前为14位。 |
Address Width (32-64 bits) | AXI地址的宽度,可选32位或64位,当前为32位。 |
Read Channel(读通道)
配置项 | 说明 |
---|---|
Enable Read Channel | 启用DMA的读通道,从存储器读取数据传输到外设。 |
Number of Channels | 读通道的数量 |
Memory Map Data Width | AXI内存映射数据宽度 |
Stream Data Width | AXI流数据宽度 |
Max Burst Size | 每次传输的最大突发数据量 |
Write Channel(写通道)
配置项 | 说明 |
---|---|
Enable Write Channel | 启用DMA的写通道,将数据从外设传输到内存。 |
Number of Channels | 写通道的数量,当前设置为1个。 |
Memory Map Data Width | AXI内存映射数据宽度,当前为32位。 |
Stream Data Width | AXI流数据宽度,当前为8位。 |
Max Burst Size | 每次传输的最大突发数据量,当前设置为256。 |
Allow Unaligned Transfers | 允许未对齐的数据传输,适用于未严格对齐的数据传输场景。 |
# 其他选项
配置项 | 说明 |
---|---|
Enable Single AXI4 Data Interface | 使用单一的AXI4数据接口。 |
Use RxLength In Status Stream | 在状态流中包含接收数据长度。 |
Scatter Gather Engine
Scatter-Gather Engine 是一种DMA(Direct Memory Access)模式,在这种模式下,DMA控制器能够处理不连续的内存块的数据传输。简单来说,它允许数据分散(scatter)在不同的内存区域内,但能够聚集(gather)到连续的外设设备或其他内存区域,反之亦然。
特点
效率高:在大多数应用场景下,数据并不总是连续的。Scatter-Gather模式可以一次性处理多个不连续的内存区域,避免了传统DMA对连续内存的严格要求,从而提高了传输效率。
控制灵活:使用一个描述符链表(descriptor list)来描述多个内存块的地址和大小。DMA读取这些描述符,依次进行数据传输。
适用于大数据传输:特别适合网络通信、音视频处理等需要传输大数据的场景。
工作流程
准备描述符表:描述符表中包含源地址、目标地址、数据传输的长度、以及其他控制信息。
DMA读取描述符表:DMA根据描述符表中的信息,将数据从源地址读取并传输到目标地址。
自动处理多个块:当一个描述符的传输完成后,DMA会自动读取下一个描述符,继续传输。