赛灵思
直播中

王丽丽

8年用户 169经验值
私信 关注
[问答]

Vivado 2015.3中使用MIG软件构建了DDR3执行突发读取时数据不准确的原因?

你好,
我在Vivado 2015.3中使用MIG软件构建了DDR3。
用户界面宽512位,突发长度为8。
我写了一些测试代码,写入地址从0到1024,每次递增8(由于突发大小)。
这是由处理命令接口的进程编写的。
它将保持地址ifapp_rdy = 0,否则它将在每个时钟递增地址,直到达到最大值。
无论如何都保持高位,直到发送所有命令。
另一个进程处理写入接口,并在每个时钟设置一个新的数据总线值,除非app_wdf_rdy为0,在这种情况下它将保持数据直到它为止.Bothapp_wdf_wren和​​app_wdf_end保持高电平,直到所有数据都被发送。
一段时间后,命令和写入接口将完成。
然后,我从命令接口请求读取,将地址设置为0到1024,除非app_rdy为低,否则递增每个时钟,在这种情况下,我们保持address.app_en始终保持高电平直到完成。
我关心的是命令和写接口之间的同步。
我希望这是核心内容。
但是,当我执行突发读取时,通常在核心将app_rd_data_valid设置为高时开始时给出不正确的数据。
经过多个时钟周期后它似乎是正确的,但我觉得我没有正确驱动用户界面。
我为每次写入写了一个写命令。
但是,由于app_rdy和app_wdf_rdy信号变低,我必须保持命令和写入密码。
我担心2时钟规则,因为我可以执行带有地址的写命令,但是在将该地址的数据写入写入FIFO之前,app_wdf_rdy可能会超过2个时钟。
我假设addr是DDR中需要的地址,每次都要增加8,因为我们正在进行8次突发。
在开始之前,我的两个进程都会等到校准完成。
我并不总是得到不正确的数据。
我跑了4次测试成功后退,但在5日失败了。
我还尝试将这些进程结合起来进行更低效的写入。
在设置命令和写入总线enableapp_en和app_wdf_wren / app_wdf_ends同时检查到app_rdy和app_wdf_rdy是否为高。
然而,我发现当我查看我的模拟时,app_rdy在我设置启用时立即掉线,但是app_wdf_rdy保持高位,所以我回到了单独的过程。
我正在考虑进入AXI界面构建,但宁愿让这个工作。
我的波形看起来与示例流量生成器类似,但数据不同。
我错过了什么吗?
非常感谢您提供任何帮助。
干杯
菲尔

回帖(3)

李铃华

2020-5-6 10:37:59
您是否尝试过示例设计。
您可以从MIG解决方案中心获得一些帮助http://www.xilinx.com/support/answers/34243.html
谢谢和RegardsBalkrishan -----------------------------------------------
---------------------------------------------请将帖子标记为
一个答案“接受为解决方案”,以防它有助于解决您的查询。如果一个帖子引导到解决方案,请给予赞誉。
举报

石俊梅

2020-5-6 10:47:29
你好@ mrphilljpayne
您可以独立操作命令和写入数据接口。
此外,两个时钟周期仅适用于非背对背写入命令。
当写入数据fifo已满时,app_wdf_rdy变为低电平。
app_rdy由于以下原因而变低:http://www.xilinx.com/support/documentation/ip_documentation/mig_7series/v4_0/ug586_7Series_MIS.pdf
谢谢,迪皮卡.----------------------------------------------
---------------------------------------------- Google之前的问题
张贴。
如果某人的帖子回答了您的问题,请将帖子标记为“接受为解决方案”。
如果你看到一个特别好的和信息丰富的帖子,考虑给它Kudos(左边的明星)
举报

马家兵

2025-9-22 14:35:36
我也遇到了类似的问题,app_rd_data_valid信号拉高后我总是在第四个时钟周期才能读取到正确的数据,如果作者能看到我这条评论,希望能告知我您的解决方案,谢谢!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分