Vivado AXI DataMover IP核

本文详细解读了Vivado中的AXIDataMoverIP核的配置,包括基本、高级选项,以及命令和状态接口的参数含义。作者通过实例和手册解释了工作原理,对FPGA开发人员理解和应用这一功能有指导价值。

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


参考文档:pg022

一、DMA简介

DMA(直接存储访问)是用硬件实现存储器与存储器之间或存储器与IO设备之间直接进行高速数据传输。

使用 DMA时, CPU向DMA 控制器发出一个存储传输请求,这样当 DMA 控制器在传输的时候,CPU 执行其它操作,传输操作完成时DMA以中断的方式通知 CPU。

为了发起传输事务,DMA必须控制器必须得到:源地址、目的地址、传输长度。

DMA的传输过程:

  1. 为了配置用DMA传输数据到存储器,处理器发出一条DMA命令;
  2. DMA控制器把数据从外设传输到存储器或从存储器到存储器,而让CPU腾出手来做其它操作;
  3. 数据传输完成后,向CPU发出一个中断来告诉它DM传输可以关闭了;
    在这里插入图片描述

二、AXI DataMover IP核的配置

参考:P41~P44

2.1 Basic

在这里插入图片描述
Enable MM2S:启用PS向PL传输数据的功能
Enable S2MM:启用PL向PS传输数据的功能
Channel Type:

  • Full:允许将通道配置为所有可能的组合和高级功能
  • Basic:限制了一些特性并让通道仅用于32位或64位宽的数据

Width of BTT field:命令接口中BTT字段的宽度

Enable xCache and xUser:需要更改缓存和用户信号时使能

Enable S2MM Control Signals:使能后将显示S2MM接口的所有控制和状态信号

Address Width:配置命令接口中SADDR字段的宽度

2.2 Advanced

在这里插入图片描述
Enable Asynchronous Clocks:使能命令、状态流接口和存储映射接口异步时钟

Allow Unaligned Transfers :使能DRE,允许内存映射数据通道上的数据重新排列到字节(8位)级别。如果启用了DRE,则数据写入/读出可以从任何Buffer Address偏移量开始,并且读取的数据是对齐的,以便读取的第一个字节是AXI4-Stream上输出的第一个有效字节。

Enable Indeterminate BTT Mode :当传输命令发送到DataMover S2MM命令输入时、输入S2MM流通道上接收的字节数未知时需使能,使能后存储和转发选项不可用。

Enable Store and Forward:使能后可确保在存储和转发FIFO中存在请求传输所需的所有数据之前,不会将传输发送到AXI4写地址通道。

三、接口

参考:P14~P18
AXIS数据宽度必须小于等于各自通道的AXI4数据宽度。
在这里插入图片描述

接口意义
S_AXIS_S2MM输入的数据流接口
S_AXIS_S2MM_CMD输入的S2MM命令接口
M_AXIS_S2MM_STS输出的S2MM状态接口
M_AXI_S2MM输出的存储器映射接口数据
m_axis_s2mm_cmdsts_awclkS2MM的命令和状态时钟
s2mm_errS2MM错误输出

3.1 命令接口

📄使用IP核时,要先写命令再写数据,并且写完命令后要等待足够长时间,再开始写数据。

在这里插入图片描述

📄命令接口是一个AXI4-Stream接口,因此总位数应该是8的整数倍。例如,如果地址空间配置为33位,则命令中的地址部分应该填充为40位。这是为了确保符合axis4 - stream协议,AXI Datamover将在内部忽略填充位
📄命令格式允许指定从1字节到8,388,607字节(7FFFFF十六进制字节)的单次数据传输。DataMover自动将大型传输分解为符合AXI4协议要求的中间突发(子传输)。下表介绍了部分字段的含义,更多细节可参考P18~P20

字段意义
xCACHE出现在MM2S或S2MM的AXI_stream额外标识信号
xUSER出现在MM2S或S2MM的AXI_stream额外标识信号
TAG传输标识,该字段是用户分配给命令接口的任意值
SADDR传输的起始地址,应设置为8的整数倍,根据具体配置
DRR一般不使用,可设置为全0
EOF帧结束标识,使能后在最后一次数据传输时会拉高tlast信号
DSA一般不使用,可设置为全0
Type设置AXI4访问类型,置1表示INCR模式,地址自增,置0表示固定地址模式,访问同一个地址的数据
BTT要传输的总字节数,可以从1到8388607字节,超出该范围会导致INTERR

3.2 状态接口

在这里插入图片描述

📄该接口将传输状态转发给用户逻辑。除了在不确定模式下启用S2MM外,状态字的宽度固定为8位。
📄状态接口数据的各位表示成功或失败的原因,当状态信号的值为80(十六进制)时,代表datamover数据搬运成功;如果实际传输的数据量和指令中描述的数据量大小不匹配,状态信号的值为10,表明数据量不对;如果指令中给出的地址和后续存储器地址不匹配,状态信号的值为20,表明找不到相应地址而出错。各字段具体含义,可参考P21~P23

字段意义
TAG传输标识
INTERR内部错误,BTT设置错误或传输数据量与配置的BTT不符时会出现
DECERR传输地址错误
SLVERR从设备错误
OKAY传输完成,只有该位为1,其它位都为0时才表明此次传输正确
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hi小瑞同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值