如何操作SDRAM的自刷新命令而不影响正常读写操作?

描述

 问:如何操作SDRAM的自刷新命令而不影响正常读写操作?


       众所周知,SDRAM从开始工作伊始,一直伴随着64ms刷新一遍的最基本规定(假设该SDRAM有4096行,那么必须大约15us的时间就要发出一次自刷新命令),这是为了保持SDRAM内数据能够在上电以后一直保持的原因,具体原因就不多解释了,我们还是以实际操作为主。

       正常情况下,我们要不断地对SDRAM进行读或者写操作,这样才能实现fpga和SDRAM之间的数据交流传递。假如我们在进行写操作时,15us的时间计时已经到了,发出了自刷新使能信号,这时候难道我们要打断写操作吗?显然这是不文明的野蛮的,理想的操作就是等待本次的写操作完成,SDRAM的内部状态机进入到了休闲状态,这时候才正式发出自刷新命令。
       可能大家会认为这样实际经过的时间是超过15us的,假如4096次每次都是超过15us的话,那么总时间岂不是超过64ms了,现在想起来感觉当初自己的问题真傻。因为实际上每发出一次刷新命令的周期是64ms/4096=15.625us,当初设置15us为周期就已经考虑到了这个余量,而一个写周期(假如突发长度=4)本身的时间远远小于0.625us,所以这样设计是合理的。
       但是,如果突发写长度是全页的话,要考虑SDRAM的工作频率、突发长度重新计算这个写周期时间,那么设置15us的计时时间是有问题的,应该调的更小一点。

       总结:自刷新要保证64ms内一遍,合理设置自刷新周期计时器,考虑读写一个周期所花的时间,使得在发出自刷新信号的时候,等待本次正在进行的读写周期完成后,再写入自刷新命令。

       以上内容是我如何对自刷新操作和读写操作进行合理安排的一种解决方案,后来细想其实可以更加的合理,微调后的方案::15us的定时计数器不断地进行,没计到15us发出刷新请求信号,同时计数器重新计数(上个方案是等到正式发出刷新命令以后才开始重新计数),本次微调的技巧应该更加理想些(因为读写周期即使是全页的,也就是10us以内完全在15us的范围以内)。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分