在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 7429|回复: 17

[求助] ddr2 刷新问题

[复制链接]
发表于 2015-8-11 18:37:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
请教大神们,这方面有过经验的给予提示我用的是xilinx调用ddr2 IP core ,里面已经设置
.selfrefresh_enter              (1'b0), //如果给1,进入刷新模式是不能读写数据的,我没有退出,如果之后再给0,应该是可以继续进行读写的。
         .selfrefresh_mode               (c1_selfrefresh_mode)
他这种默认设置是没有进入自刷新模式。
查看ug388手册描述如下
selfrefresh_enter
Input
This input is rising-edge sensitive. When asserted,
the MCB requests the memory device to enter self-
refresh mode. The signal must remain asserted until
the selfrefresh_mode signal goes active.

通过上述资料可以确定,自动生成的IP core没有配置刷新设置。
我测试代码能够实现读写数据一致,读写长度为128byte,在配置读写命令的时候,加上刷新与不加没发现数据有什么变化。
整体下来,我没有做刷新设置处理,可是数据还是正确的。
我想了解一下刷新要在什么情况下起作用,什么时候必须配置刷新?
发表于 2015-9-18 14:29:07 | 显示全部楼层
回复 17# z894811350

1.self-refresh和normal refresh有区别,DRAM interface的控制信号不一样,CKE就不一样,不可能在normal的模式下做self-refresh的。
2.修改IP的parameter不行的话,我也没有其他的方法了。
3.实在不行,你可以在你generate的IP外对ras/cas/wen这几根信号线做一下mux,当{ras,cas,wen} = 3'b001的时候,也就是refresh的时候,你强制让{ras,cas,wen}变成3‘b111,也就是nop指令,这样就在硬件上面彻底屏蔽掉refresh command了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-14 13:03:50 | 显示全部楼层
回复 14# gjb649666926

您好:
    1、经过更改,总是有错误,能编译通过,下载到电路板里,跑的一直是之前的程序。    下面是报错信息,
    ERRORIT:242 - Attribute MEM_REFI_VAL on MCB instance
    在ug388文档里
In general, the MIG tool or IP Configurator tools are responsible for setting all parameter values, so the values should not be modified directly.

没有说不可以更改参数,
我将localparam C1_MEM_TREFI            = 7800000; 参数上调,发现每次编译都报上面那个错误,不影响生成.bit ,
我读请求分两种情况都测试了,一种是洗完之后大约100个时钟,第二种是根据写了好多个地址之后发送一个读请求。
将这个参数移到顶层也是如此;
我将这个C1_MEM_BURST_LEN参数改变也没有上述错误。
如果我将参数改小就没有上述那个错误。如果调到9000000这种情况是可以的,扩大0.5倍都有问题,但是读取到的数据还是正确的。是不是我这样改不可以呢?
   2、
self_refresh和refresh应该是没有冲突的吧?如果有self_refresh就不需要refresh了吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-14 12:25:44 | 显示全部楼层
回复 14# gjb649666926
您好:
    1、经过更改,总是有错误,能编译通过,下载到电路板里,跑的一直是之前的程序。    下面是报错信息,
    ERRORIT:242 - Attribute MEM_REFI_VAL on MCB instance
    在ug388文档里
In general, the MIG tool or IP Configurator tools are responsible for setting all parameter values, so the values should not be modified directly.

     没有说不可以更改参数,
    我将localparam C1_MEM_TREFI            = 7800000; 参数上调,发现每次编译都报上面那个错误,不影响生成.bit ,
    我读请求分两种情况都测试了,一种是洗完之后大约100个时钟,第二种是根据写了好多个地址之后发送一个读请求。
    将这个参数移到顶层也是如此;
    我将这个C1_MEM_BURST_LEN参数改变也没有上述错误。
    如果我将参数改小就没有上述那个错误。如果调到9000000这种情况是可以的,扩大0.5倍都有问题,但是读取到的数据还是正确的。是不是我这样改不可以呢?


   2、
ddr2_cmd.png
    self_refresh和refresh应该是没有冲突的吧?如果有self_refresh就不需要refresh了吧?
回复 支持 反对

使用道具 举报

发表于 2015-8-13 17:59:12 | 显示全部楼层
另外,这更ddr2或者是ddr3没有关系,ddr2和ddr3本来就没有什么本质区别,只是速度不同以及一些mode不一样罢了,基本的read/write/active/precharge/refresh都是一样的。
回复 支持 反对

使用道具 举报

发表于 2015-8-13 17:58:05 | 显示全部楼层
1.再强调一下,dram正常的刷新不叫self-refresh,self-refresh是dram进入low power模式下的refresh,你可以查看ddr2 spec的cmd 真值表,普通的refresh的cke=1,csn=0,ras=0,cas=0,wen=1,而self-refresh必须要cke拉低,请你不要混淆了这两种refresh,你在文中多次提到的refresh都是self-refresh。
2.另外,看起来你生成的ddr的ip不能够disable refresh。也就是说你的controller会周期性的发出refresh 命令,哪个trefi就是refresh的书信周期,如果disable不了,你可以尝试把这个parameter设定很大,例如放大100倍,或者1000倍甚至更大,这样ddr controller就会隔很长时间再发出一个refresh命令。
3.然后你再试试跨row去读写。
回复 支持 反对

使用道具 举报

发表于 2015-8-12 21:47:02 | 显示全部楼层
好东西就要分享
回复 支持 反对

使用道具 举报

发表于 2015-8-12 21:46:08 | 显示全部楼层
好东西就要分享
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-12 18:52:16 | 显示全部楼层
我之前发的回复不知道为什么需要管理员审核,一直发布出去!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-12 18:51:36 | 显示全部楼层
ddr3_refresh.png ddr2_refresh.png 回复 5# gjb649666926
这两个是我发现在生成ddr2和ddr3的配置区别
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-10 16:37 , Processed in 0.022263 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表