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

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 10294|回复: 22

[求助] SDR,DDR的刷新操作

[复制链接]
发表于 2012-4-26 17:16:45 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 benny46 于 2012-4-26 17:24 编辑

“刷新操作与预充电中重写的操作一样,都是用S-AMP先读再写。但为什么有预充电操作还要进行刷新呢?因为预充电是对一个或所有 L-Bank 中的工作行操作,并且是不定期的,而刷新则是有固定的周期,依次对所有行进行操作,以保留那些久久没经历重写的存储  体中的数据。但与所有L-Bank预充电不同的是,这里的行是指所有L-Bank中地址相同的行,而预充电中各L-Bank中的  工作行地址并不是一定是相同的。”----这是我从论坛里共享的资料上看到的一段话。刷新操作一次对一行有效。按照上面的说法,假设一块SDRAM里有4个bank,每个bank有4096行,那么刷新周期的计算公式是64Ms/4096,而不是64Ms/(4096*4)罗?
跪求有这方面设计经验的大虾解答~~~~~~
发表于 2012-4-26 23:11:20 | 显示全部楼层
一个sdram有4个bank,4个bank水平放置的话他们相同的row地址是连成一行的。也就是说一次auto_refresh可以同时刷新4个bank中一个row。
比如说4个bank里面都有row0~row4095,一次刷新就会同时刷新4个bank的row0或者rowx。
那么计算公式应该是64ms/row_num。row_num就是指这个sdram的row的数量,你用的是row0~row4095的,所以row_num应该为4096,也就是说64ms内应该刷新4096次。
发表于 2012-4-26 23:14:56 | 显示全部楼层
预充电可以一次对一个bank操作,也可以一次对所有bank操作,无法对大于1个小与bank总数的bank同时进行操作,也就是说要么1个要么所有。
auto_refresh是对所有bank进行操作的。并且spec上已经说过了,在auto_refresh前应该对所有bank进行precharge。
反正很烦啦,仔细看文档吧。。。
发表于 2012-4-27 09:06:19 | 显示全部楼层
预充电之前,该ROW数据并没有真正写入DDR里面,充电后才写入,而刷新是对已写入DDR的数据,电容进行充电。两者功能有区别吧
 楼主| 发表于 2012-4-27 09:59:05 | 显示全部楼层
回复 4# wangyingwei


   刷新操作与预充电中重写的操作一样,都是用S-AMP先读再写。但为什么有预充电操作还要进行刷新呢?因为预充电是对一个或所有 L-Bank 中的工作行操作,并且是不定期的,而刷新则是有固定的周期,依次对所有行进行操作,以保留那些久久没经历重写的存储  体中的数据。
 楼主| 发表于 2012-4-27 10:07:33 | 显示全部楼层
回复 3# dianyubaobei


      感谢大虾。      大虾说得对,预充电与刷新操作在SDRAM里做的是一样的工作,既然预充电都可以4个bank一起回写数据,那么刷新也应该是可以的,只是预充电是认为设定对一个还是对所有bank的某一行进行操作,而刷新应该固定队所有bank的同一行进行操作。技术资料里没写明白,“刷新操作一次对一行有效”会让人产生歧义。
      随便问下大虾,我先在做的设计采用的是对所有bank进行时分复用操作,以提高读写速度,不知道是否已经有一些SDR SDRAM的IP可以支持这样的操作?
发表于 2012-4-28 00:20:49 | 显示全部楼层
请问外部怎么判断SDR正在刷新中呢,SDR好像没有提供标志位。难道是通过计数器,每过64ms/row_num时间则判定正在刷新吗?哪有详细的资料,谢谢
 楼主| 发表于 2012-4-28 09:58:07 | 显示全部楼层
回复 7# wlyj000


   你上ISSI、镁光、现代他们的官网就有datasheet下载。你也可以上论坛搜索SDRAM的工作原理,还是讲得蛮仔细的。 SDR的刷新操作一次对所有bank的某一行有效,刷新操作一般占用系统时间9~10clk,这期间所有bank停止工作,你可以计数这9~10clk的时间,时间过了就可以进行其他操作,但是64MS后又必须对这一行进行刷新,不然他就会丢失数据,但是bank又不止一行,比如一个bank有4096行,那你64ms里面就要至少进行4096次的刷新,每次刷新都占用系统时间9~10clk 。多多交流。
发表于 2012-4-29 00:31:58 | 显示全部楼层
不好意思。我说错了一点,刷新次数跟row 大小无关。row为2048的也是刷新4096次,我确认过etron的2048 row。

另外,我对sdram的工作原理不是很了解,现在也只是在学习阶段。实际上sdram的lmr、self_refresh、auto_refresh都是需要先对所有bank进行precharge才能进行的。有些公司进入power down模式也需要对所有bank进行precharge,但是有些就不需要。所以对于这些特殊模式,最好方法就是先precharge所有bank在进入就没问题了。

时分复用应该跟应用有关。我不知道你是用什么协议的,以及是怎么使用sdram的。但是如果你把每种应用放在不同bank,然后来回切换的话是很快的,因为你不用active n-read n-precharge n-active m-read m-precharge m....其中m和n属于同一个bank的不同row,active-to-precharge以及precharge-to-other command的时间大约为90ns,也就说说尽量不要在一个bank的2个row之间来回切换,否则效率极低。
发表于 2012-4-29 00:37:48 | 显示全部楼层
另外你说的每次刷新时间占用9~10个clk是不准确的。因为你必须要先precharge所有bank,而如果你这个row才刚刚active的话你要precharge要等60ns,然后precharge要20ns,最后auto refresh要70ns,也就是说最快是70ns,最慢可能要150ns左右。所以如果你经常auto refresh的话这个延迟可能过大了。auto refresh规定的是相同row的2次刷新时间间隔最多为64ms。所以只能有2种方式,64ms/4096的时间刷新一次,或者每隔64ms对所有row刷新一遍。当然还有其他方法,不过比较复杂,并且极容易出错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-16 22:45 , Processed in 0.026879 second(s), 7 queries , Gzip On, Redis On.

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