AXI DMA IP核使用说明

AXIDMAIP核提供高带宽内存到AXI4-Stream外设的DMA服务,支持直接DMA和scatter/gather模式。文章介绍了其结构,包括MM2S和S2MM通道,以及S/G模式下的描述符工作原理。此外,还详细阐述了时钟、复位、寄存器配置和多通道模式的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AXI DMA提供内存和AXI4-Stream 目标外设之间的高带宽直接内存访问。DMA除了配置为直接DMA模式外,还可以配置为scatter/gather(S/G)模式,S/G模式减轻CPU负担。

为了掌握对DMA的使用方法,需要对DMA IP核有足够的了解。这篇文章主要对AXI DMA IP 核的使用进行简单的说明,接下来详细论述,首先是 AXI DMA IP核的结构图,如下所示:

1 AXI DMA IP核结构图

AXI DMA IP核结构图
在上图中,DMA 能够实现的功能有:
(1) 内存到AXI4S(AXI4-Stream)是通过AXI4 Read Master 到 AXI4 memory-mapped to stream (MM2S) Master;
AXI4S到内存是 AXI stream to memory-mapped (S2MM) Slave到AXI4 Write Master,在S/G模式下,MM2S和S2MM可以实现最多16个通道的数据传输。
(2) 提供byte级数据重对齐,允许从内存任何位置访问数据;
(3) MM2S通道提供 AXI4 Control Stream 控制流,S2MM提供状态流;
(4) S/G 模式允许访问和更新内存中的 buffer描述符(buffer descriptors, bd)
(5) AXI4接口支持32, 64, 128, 256, 512 和 1024 位的数据传输;
(6) AXI4S 接口支持8, 16, 32, 64, 128, 256, 512 和 1024位的数据传输。

在此先说明一下S/G模式
S/G 模式:DMA操作需要在内存中驻留的数据结构保存DMA操作列表,列表描述为描述符链,任一描述符有指向下一描述符的指针,最后一个描述符指向第一个描述符。描述符的存在可以实现数据报头和数据内从在内存中不同位置,获取报头和获取数据相互独立,增加吞吐量。
在 MM2S 通道上使用帧起始位(TXSOF)和帧结束位(TXEOF)描述内存中的数据包长度,当DMA获取TXSOF位设置的描述符时,触发包的开始。数据包继续获取后续描述符,直到获取一个设置了TXEOF位的描述符。
在S2MM通道上,DMA使用RXSOF 和 RXEOF标记描述符。

2 AXI DMA IP接口

了解IP核的结构后,就需要了解IP核的使用方法,首先介绍下IP核的接口资源。
AXI DMA IP核的接口如下图所示:
在这里插入图片描述
下面详细介绍接口功能:

s_axi_lite_aclk: AXI4-Lite时钟;
m_axi_sg_aclk: S/G模式时钟;
m_axi_mm2s_aclk: MM2S通道时钟;
m_axi_s2mm_aclk: S2MM通道时钟;

axi_resetn: 复位
mm2s_introut:	MM2S通道中断;
s2mm_introut: S2MM通道中断;
axi_dma_tstvec: 提供调试使用;

s_axi_lite_*AXI4-Lite接口;

AXI4存储器读接口
m_axi_mm2s_*MM2S通道读接口;

AXI4S 接口
mm2s_prmry_reset_out_n: MM2S通道数据流设备的复位输出;
m_axis_mm2s_*MM2SAXI4S接口;

AXI4控制接口
mm2s_cntrl_reset_out_n:MM2S通道控制的复位输出;
m_axis_mm2s_cntrl_*MM2SAXI4控制接口;

AXI4存储器写接口
m_axi_s2mm_*S2MM 通道写接口;


s2mm_prmry_reset_out_n: S2MM 通道数据流设备的复位输出;
s_axis_s2mm_*S2MMAXI4S接口;


s2mm_sts_reset_out_n: S2MM 通道状态的复位输出;
s_axis_s2mm_sts_*S2MMAXI4状态接口;

S/G读接口
m_axi_sg_*S/G读接口
m_axi_sg*S/G写接口

1 寄存器说明

对于上面某些控制接口或者状态接口,比如中断接口来说,DMA传输过程中或许不需要产生中断,所以DMA的某些寄存器可以通过用户配置,实现功能选择。DMA的同一地址空间中寄存器对于不同的传输模式,其功能也不相同,下面详细介绍寄存器功能:

1 MM2S寄存器

S/G模式下寄存器地址

寄存器地址 名称 描述
00h MM2S_DMACR run/stop状态控制,1是
04h MM2S_DMASR MM2S DMA状态寄存器
08h MM2S_CURDESC MM2S当前描述符指针。地址的低32位。
0Ch MM2S_CURDESC_MSB MM2S当前描述符指针。地址的高32位。
10h MM2S_TAILDESC MM2S结尾描述符指针。地址低32位
14h MM2S_TAILDESC_MSB MM2S结尾描述符指针。地址高32位
2Ch SG_CTL S/G模式控制
30h S2MM_DMACR S2MM DMA控制寄存器
34h S2MM_DMASR S2MM DMA状态寄存器
38h S2MM_CURDESC S2MM当前描述符指针。地址的低32位。
3Ch S2MM_CURDESC_
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值