01_Xilinx Datamover IP使用教程(一)

DataMover

参考链接

pg022

从 IP 开始,学习数字逻辑:DataMover 基础篇

从 IP 开始,学习数字逻辑:DataMover 进阶篇

一、IP简介

1.什么是DataMover

什么是DataMover?简单从字面意义理解,就是数据搬运,实际来讲,DataMover是DMA(Direct Memory Access,直接内存访问)的一种。即在数据存储中,DMA可以在不需要CPU干预的情况下下,就可以进行数据的搬移,包括但不限于数据从外部存储(DDR)搬运到内部存储(寄存器),或者反之。

DataMover是DMA的一种,和DMA的区别在于,DMA还是由CPU来分配任务的,但是DataMover是FPGA通过逻辑命令总线(cmd)发出命令进行数据搬运。

2.DataMover的端口

和DMA类似,DataMover也分读写端口,下图分别为读写通道的接口示意图:

在这里插入图片描述
在这里插入图片描述

以读通道为例,可以看到DataMover共有4路AXI4(AXIS)接口,其中Status为状态输出端口,一路AIXS接口为发布命令接口,一路AXIS数据输出接口(即从DDR中取出的数据)以及一路AXI4接口。

当通过DataMover读取外部存储设备(例如DDR)的数据时,都是通过AXI4接口访问的。DDR在FPGA上是以MIG IP方式访问,除了提供Native接口方式访问外,还提供一个AXI4 Slave接口。可以将DataMover的Master接口连接到MIG的Slave接口上进行数据读写。

3.DataMover的命令

DataMover是由逻辑进行控制, 控制方式即为通过控制AXIS_CMD总线输入命令。

DataMover命令实际就是操作IP读写操作的起始地址传输字节长度。命令格式如下图所示:(一般地址宽度为32bit,即命令长度72bit);

在这里插入图片描述

这段命令长度实际为80bit,多了高8bit,具体含义参见pg022

通常只需关注这些关键字段:

  • BTT:Byte to Transfer:传输字节长度;

  • SADDR: start address:起始地址;

  • Type: 突发传输类型,这个字段在过去的 IP 核版本中没有启用(ISE 时代),默认为 incr;

    • 字段为1时,突发传输类型为 incr ,数据会保存在以起始地址开始递增的地址中;
    • 字段为 0 时:突发传输类型为 fixed, 数据均保存在起始地址中,覆盖旧值;
  • EOF:帧尾标志,通常设置为1

4.DataMover的状态输出

上文说到有1路AXIS为状态输出端口,STS接口传输的是DataMover 对每次传输,即每个传输命令的完成情况。通过 sts 接口我们可以判断传输的成功与否,或者失败的原因。

STS接口的数据通常为8bit,这8bit分别用于表示成功和失败的原因:

在这里插入图片描述

低4bit的TAG用于标识是哪次命令的响应结果,最高位为1表示此次传输成功,剩下3bit为1表示不同的失败原因:

在这里插入图片描述

Slave Error 代表从机错误,DataMover 从 AXI 总线的回复信号中读取到从机发送的 response error 信号,再将其回复给发起传输的命令。

在这里插入图片描述

Internal Error 这类问题一般是由于命令中的 BTT (Byte to Transfer) 传输字节数字段与 s2MM 总线中实际发送的数据不一致导致的。

命令中的 BTT 字段也会造成内部错误,当 BTT 字段为 0 时,触发 internal error。

5.监控DataMover的传输状态

通常情况下,正式工程中仅仅只是对STS的信号进行简单的检测,但是DataMover比较特殊的是当产生多次错误时,DataMover IP会置低命令总线上的cmd_tready信号,拒绝后续的命令以及产生新的传输,因此可以在设计中添加一个状态监控信号:

datamover_cmd_err = ~cmd_tready && cmd_tvalid

这条命令是指当逻辑希望产生传输命令请求,但IP始终拒绝接受情况下,此时说明DataMover已经出了问题,当然IP还有两个端口:s2mm/mm2s_err,当此信号置高时,也代表传输出错。

DataMover 的错误状态,只能通过 AXI 总线上的 arest_n 信号清除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值