oceanheart 发表于 2013-12-7 11:52:50

SDRAM刷新操作是否会关闭当前工作行(有效行)

看了很多SDRAM资料,都讲得不是很明白,心中这个疑问一直无法消除,请教一下\\

SDRAM刷新操作是否会关闭当前工作行(有效行)

我知道SDRAM预充电操作会关闭当前工作行,需要重新发送命令激活新的工作行,为了提高数据吞吐量,没有使用自动预充电功能,而是需要的时候,手工插入充电命令,这样就有个疑问,因为每个工作行的最大数据保持时间为64ms,所以必须64ms间隔预充电一次当前工作行,同时还有个刷新需求,需要每隔64ms全部行刷新一遍,如果是4096行的话就是要64000/4096~~ 15us间隔执行刷新命令

现在的疑问是:如果15us到了,执行了刷新操作,那么原来打开着的工作行会失效吗?因为我打开的工作行最长时间可以到64ms手工充电???

我知道刷新操作是有个sdram内部行计数器来递增实现的,如果内部行计数器刚刚与我当前工作行一样的话,那么执行了刷新操作是不是会把握当前工作行关闭掉?

不知道我表达的够不够清楚,........

Nuker 发表于 2013-12-7 14:32:45

刷新之前必须先执行预充电操作关闭所有BANK的当前已激活的全部行(A10=1),而且要等待tRP时间才能发出AUTO REFERESH命令。

15us是平均间隔,最低要求是每个64ms之内完成4096个自刷新命令,你可以每隔15us一次,也可以连续发送4096次,还可以在读写的空余时间来做,只要保证在任意的64ms之内至少发出了4096个自刷新命令。

自刷新命令也有tRFC间隔的要求,具体怎样刷新最好取决于你的应用。

有一种情况甚至不需要自刷新,比如说驱动LCD,用SDRAM做帧缓存,当帧率达到20fps以上的时候,缓存空间所有的单元至少在50ms之内全部读了一遍,这种情况下是不需要执行自刷新的。

oceanheart 发表于 2013-12-7 14:43:23

Nuker 发表于 2013-12-7 14:32
刷新之前必须先执行预充电操作关闭所有BANK的当前已激活的全部行(A10=1),而且要等待tRP时间才能发出AUTO ...

谢谢您的回复,你是说每隔15us执行一次刷新都必须之前执行一次 预充电ALL命令吗??

我看到网上很多的例子,并没有执行预充电命令啊,比如特权同学的,是不是因为他把预充电命令设置为自动执行了??????????


本来以为可以手动执行刷新命令提高数据吞吐量,因为可以不关闭当前工作行,可是还是得15us间隔关闭一次当前工作行

就算不15us间隔关闭当前行,也必须64ms关闭,而且需要关闭的时间要4096个刷新等待时间....................好长啊

硬邦邦 发表于 2013-12-7 15:03:05

学习了。谢谢分享

Nuker 发表于 2013-12-7 15:32:12

本帖最后由 Nuker 于 2013-12-7 15:35 编辑

oceanheart 发表于 2013-12-7 14:43
谢谢您的回复,你是说每隔15us执行一次刷新都必须之前执行一次 预充电ALL命令吗??

我看到网上很多的例子, ...

Datasheet上面讲的很清楚,没有单独执行PRECHARGE命令的最大可能就是读/写命令中通过A10设置为读写完成以后执行AUTO PRECHARGE,这样读写周期就会加长。

pat1006 发表于 2013-12-9 21:08:06

我也来学习一下,帮顶。
页: [1]
查看完整版本: SDRAM刷新操作是否会关闭当前工作行(有效行)