[求助] 关于DDR3的读写操作,看看我的流程对吗?

[求助] 关于DDR3的读写操作,看看我的流程对吗?

最近简单调了一下KC705开发板上面的DDR3,型号是MT8JTF12864HZ-1G6;有时候加载程序后,发现读出数据不是写进去的,在这将我的操作思路说下,有弄过的说说哪块有问题:1.ip核的sys_clk_i给400M时钟,clk_ref_i给200M时钟;app_wdf_mask全为0;app_sr_req,app_ref_req,app_zq_req接pull_down;
2.等初始化完成后(即init_calib_complete为高电平)1.5s,对ddr3写操作,在app_wdf_rdy为高,且app_rdy为低电平时,使能app_en,且app_cmd=0;
3.判断:
a,若(app_rdy == 1) && (app_wdf_rdy == 1) ,则app_wdf_wren<=1, app_wdf_end  <= 1 ,app_wdf_data=写数据,app_addr 
<=初始地址,步骤4。

b,若(app_rdy == 0) && (app_wdf_rdy == 1) ,则app_wdf_wren<=0, app_wdf_end  <= 0 ;等待app_rdy == 1
c,若 (app_wdf_rdy == 0) ,返回2。
4.判断:
a,若(app_wdf_rdy == 1),则app_wdf_wren<=0, app_wdf_end  <= 0 ,app_addr 
<= app_addr + 8 ;步骤3;

b,( app_addr == ADDRESS ),ADDRESS为设定的最大地址值;步骤5;
c,若 (app_wdf_rdy == 0) ,返回2。
5.空闲40周期,步骤6;
6.读操作,判断:
a,若(app_addr == ADDRESS),读结束,步骤7;
b,若( app_rdy == 1),app_en   <= 1 ;app_cmd
<= 3'd1,app_addr
<= app_addr + 4 ;步骤6;

c,否则,步骤6;
7.空闲1024周期,步骤3。


但是有时候读的数据不是写进去的数据,如图:[attach]572540[/attach]

正确写-20140225.png (188.77 KB)

 

正确写-20140225.png

读正确.png (209.29 KB)

 

读正确.png

读错误.png (187.12 KB)

 

读错误.png

 
收藏分享
 
 
 
步骤4.b中,app_en<=0,app_wdf_wren<=0, app_wdf_end  <= 0 ,app_addr <= 0,步骤5
 
 

TOP

 
周一,会有人来解答的吧
 
 

TOP

 
结贴了,调差不多了。虽然没人回答,但是希望能对别人有点借鉴意义。我只能说调试别人是帮不了你的,逛逛论坛,启发一下倒是真的,一百个人调试,一百个不同的问题,让人怎么帮。
 
 

TOP

 
您好,我来晚了,呵呵!我最近也在kc705上做ddr3的实验,但苦于没人交流,你的ddr3调试成功了吗?
 
 

TOP

 
回复 4# neufeifatonju 


   您好,我来晚了,呵呵!我最近也在kc705上做ddr3的实验,但苦于没人交流,你的ddr3调试成功了吗?
 
 

TOP

 
回复 4# neufeifatonju 

你好,我最近也在弄ddr3,初始化的init_calib_complete信号仿真能拉高,下到板子上就一直为低,请问可能是啥问题。或者给个联系方式指导下
 
 

TOP

 
表示不太懂
 
 

TOP

 
学习了
 
 

TOP

 
spartan6的mig核的信号跟v7的不一样,还是高端器件的好调
 
转载:http://bbs.eetop.cn/viewthread.php?tid=438066
posted @ 2017-12-01 14:40  yf869778412  阅读(1560)  评论(0编辑  收藏  举报