本文主要是介绍Verilog 入门之ddr3读写遇到的那些坑!(新人报道,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
FPGA ddr3 踩过的那些坑!(流泪
1.从另一个模块中请求数据的时候,一般间隔一个周期再采集数据。(因为另一个模块在这周期收到数据请求,在下一个周期才能给出数据)
例如图中在3519-3520时间段内,wr_burst_req拉高,向用户请求数据,而有效的数据是从3520时刻才开始的,相当于滞后一周期,相应地,数据通道的使能也应滞后一周期打开,如图中app_wdf_wren和app_wdf_end。
2.向别的模块请求数据的信号一般可以直接将写入端是否已准备好的信号(在本项目中是app_wdf_rdy)直接引过来。这个时候需要注意一点:如果该被引信号突然离线,上述通道使能信号也会滞后一周期关闭,但是由于滞后的这一周期写入端并未准备好,所以这个时间所对应的数据不会被写入;又因为没有请求新的数据,这个数据会被保持住。在被引信号恢复时,由于通道使能信号滞后一周期的缘故,刚刚保持的数据还来不及写入就会被覆盖。
对于这个问题,一个解决方案是:通道使能信号在被引信号非正常离线的情况下保持住,这样在被引信号恢复的时候,可以立即将保持的数据带走,不会出现漏数据的情况。
参考资料:Zynq-7000 SoC and 7Series Devices Memory Interface Solutions v4.2 User Guide(赛灵思官网可下载)
这篇关于Verilog 入门之ddr3读写遇到的那些坑!(新人报道的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!