Tyrion. 发表于 2019-12-10 11:51:28

关于FPGA-MIG DDR读写的问题

本帖最后由 Tyrion. 于 2019-12-10 11:53 编辑

MK7325,数据从DDR读出,当app_rd_data_vaild第一次拉高时,读出的数据app_rd_data每四位就有一位是错误的,如图所示(应该是00010001000100010002000200020002…)。当app_rd_data_vaild拉低后再次拉高,恢复正常。ILA监测写入数据data_wdf_data以及app_addr并无错误。C:\Users\dell\Desktop\app_rd_data.jpg

另外,目前所用的DDR教程:版本 REV2018 时间 05/22/2018XILINX FPGA-MIG DDR 篇 基于 MK7325 系列开发板 。第44页最后一行,
app_addr_begin                   <=app_rdy&&app_wdf_rdy?(app_addr_begin+29'd16):app_addr_begin;//跳到下一个(8*32=256)bit 数据地址
为什么地址每次加16,突发长度为8,是否应该改为app_addr_begin+29'd8,每次增加8*64=512bit地址?

uisrc 发表于 2019-12-10 15:31:01

突发长度加8,就可以,对于MIG 512bit就是跳过了 8x512bit地址

uisrc 发表于 2019-12-10 15:33:32

如果数据又错误,可以试下降低频率,降低到1333M

Tyrion. 发表于 2019-12-10 15:37:49

msxbo 发表于 2019-12-10 15:31
突发长度加8,就可以,对于MIG 512bit就是跳过了 8x512bit地址

那请问为什么app_wdf_data每次写入数据为“00010001000100010002000200020002...”的512bit数据,读出的pp_rd_data在第一次app_rd_data_vaild拉高时,数据出现如图所示的错误呢?
程序是按照教程改的,请问是否需要提供我改写的代码,有助您解决我的问题呢?

A1_Vincent 发表于 2019-12-10 15:49:26

按照我的理解app_addr_begin ={RANK_WIDTH + BANK_WIDTH+ ROW_WIDTH + COL_WIDTH}={1'bx,15'dx,3'dx,10'dx},app_addr_begin+29'd16即COLUMN地址增加16,每片DDR跳过的容量为16*16bit;而一次BURST_MODE = "8",每片DDR写入的数据量为8*16bit,因此,可能后面的8*16bit容量并没有写入新内容。可以改变一下读出程序中的app_addr_begin值来验证一下分析是否正确。

uisrc 发表于 2019-12-10 18:55:45

可以贴上代码的,另外用我们的代码是否测试有问题呢?
页: [1]
查看完整版本: 关于FPGA-MIG DDR读写的问题