Vivado中datamover ip核的使用(小白都能看懂的使用说明)

Datamover

Overview

S2MM

将数据和指令写入datamover,通过axistream总线将数据写入ddr的对应地址位置,同时通过STS反馈写入数据是否成功状态

S2MM_DATA

S_AXIS_S2MM_0_tdata

传输的数据位宽,可设置成不同位宽

S_AXIS_S2MM_0_tkeep

输入数据有几个BYTE就有几位置一如:data[31:0]则tkeep为4‘b1111;data15:0]则tkeep为2‘b11;

S_AXIS_S2MM_0_tlast

每一个帧产生一个tlast信号 每传送BTT个字节tlast拉高

S_AXIS_S2MM_0_tready

表示可以写入数据

S_AXIS_S2MM_0_tvalid

数据有效与tready没有因果关系,当tready和tvalid同时为1时数据输入有效

S2MM_CMD

S_AXIS_S2MM_CMD_0_tdata

输入的控制指令每帧写入多少byte的数据

S_AXIS_S2MM_CMD_0_tready

可以写入cmd

S_AXIS_S2MM_CMD_0_tvalid

与tready同时为一CMD有效

S2MM_STS

M_AXIS_S2MM_STS_0_tdata

可根据表格观察传输结果是否正确

M_AXIS_S2MM_STS_0_tready

正常直接拉高

1

与上右图中DDR的DATA_WITH一致,一般为 ddr的位宽 * 8 如使用的ddr位宽为16则为128

2

设置传输数据S_AXIS_S2MM_0_tdata的位宽

3

Brust设置突发长度 AXI总线单次突发的长度

4

设置bbt的位宽一般为23bit

MM2S

1

连接到AXIS总线上与DDR相连

2

读出来的数据

3

读数据CMD

其余与写数据类似

注意

MIG的复位和cmd的复位 要不一样,不然会影响上电时序

读写CMD命令格式

一般使用到RSVD

读命令格式:

BaseAddress

ddr写入的起始地址可不从0地址开始写

OffsetAddress

数据多次写入,每次写入的开始地址

BTT

单词写入的地址长度0-2^23Byte

DDR_ADDR

Ddr可以写入的总地址大小

写命令格式

读写状态STS说明

正常情况下

M_AXIS_S2MM_STS_0_tdata == 8'h80 && M_AXIS_S2MM_STS_0_tvalid

M_AXIS_MM2S_STS_0_tdata == 8'h80 && M_AXIS_MM2S_STS_0_tvalid

为0x80时且valid为1,表示传输数据成功

附录

百度云文件链接晚点上传

VIVADO 2018.3

ddr3.tcl

BD的生产文件

top_325t_2.v

顶层

datamover_device.v

读写cmd控制命令

dma_create_data

造数模块

原工程生成bd命令:

write_bd_tcl ddr3.tcl

新工程移植bd命令:

       source d:/Dzz/tz_7k325t_2_120M_ddr/ddr3.tcl

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值