关于SDRAM自动刷新的理解

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:20   1932   0

因为SDRAM是动态内存,也就是需要不断刷新才能保存数据,也就是存储体中的电容需要不断地刷新才能不会因为电容的自消耗而产生电位变化。这个我是理解的。但是又看到一句话:在刷新过程中,所有L-Bank都停止工作,而每次刷新所占用的时间为9个时钟周期,之后就可进入正常的工作状态,也就是说在这九个时钟周期内,所有工作指令只能等待而无法执行。那么问题来了,如果我就是在SDRAM自刷新的9个时钟周期间对其发送了命令,那怎么办?

根据我的理解:

因为电容数据的有效期为64ms,也就是说刷新整个SDRAM需要在64ms之内。而我们使用的SDRAM是8192行,所以刷新速率=64ms/8192行=7.81us/行。

SDRAM的时钟频率为96MHZ,那么也就是说,一个时钟周期为1/96M(s),也就是刷新一行的周期为7.81us/(1/96M)s = 750

但是原子却设置为750-20=730。我原先不明白,原来这个20个时钟周期就是提前刷新的周期,否则正正好好750个周期刷新,就有可能让电容数据失效。

也就是我们在初始化的时候向SDRAM设置它的刷新计数器为730,在CKE的为高的时候SDRAM为自动刷新模式。每过了730个时钟周期后就等待状态机为IDLE(空闲),就开始9个时钟周期的刷新。之后刷新计数器复位,且行计数器+1,下一次刷新就会去刷新下一行。

再刷新过程中,所有命令都要等待。

这样,就能够既能刷新又不影响工作了。但是再往细里深究仍有很多不明白的地方,我也是没有再继续深究下去,比如等待的时候还没有执行,而mcu认为成功了,切换为其他命令时那不就失败了吗?如果有明白的朋友不妨分享一下

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP