zoukankan      html  css  js  c++  java
  • SDRAM学习(一)之刷新心得

    本篇博文共有两种刷新方式

    SDRAM数据手册给出每隔64ms就要将所有行刷新一遍,

    因此每隔64_000_000 ns/2^12=15625ns 就要刷新一次。(因为一个L-Bank的行是12位,所以一共有2^12行)。

    假设我的时钟频率是100Mhz(一个周期是10ns),则只需要每隔1562个时钟周期刷新一次即可。

    注意:这里最多隔 1562 个时钟周期就要保证至少刷新一次,言外之意,我可以隔小于1562的时钟周期就刷新一次,这样也是可以的,

    因此,在设计刷新操作的时候可以利用这个特点。

    1、例如在full-page模式下利用这个特点进行刷新设计,

    SDRAM 初始化完成后,每隔一定的刷新时间就执行刷新操作,但是当刷新时间到了还不够,还必须处于IDLE状态时,才能执行刷新操作。

    那么这个刷新时间要怎么计算呢?

    刷新有可能出现的情况为

    刷新时间到了,刚好处于 IDLE 状态,那么就立即执行刷新操作。

    刷新可能出现最坏的结果为,刷新时间到了,但是此刻我没有处于 IDLE 状态,而是刚好处于读或写,这时我就需要等待直到IDLE状态时才执行刷新操作。

    因此我们要保证的是  刷新时间+需要等待的时间<=1562.

    这两个时间如何确定呢?

    因为是全页模式的读写,则突发长度为2^8,需要256个时钟周期,

    如果是读,则需要等待的时钟周期为 激活时间(tRCD)+ CAS Latency (tCL)+ 256 +预充电的时间(tRP)

    如果是写,则需要等待的时钟周期为 激活时间(tRCD)+  256 +预充电的时间(tRP)

    tRCD、tCL、tRP都可以从 datasheet 中获得,因此需要等待的时间就能算出来。

    1562 - 需要等待的时间 = 刷新时间。

    2、第二种刷新方式:刷新计数器计数到刷新时间1562时,设立一个刷新标志位 refresh_flag =1,当状态机在 IDLE 状态时且 refresh_flag =1则响应刷新操作。刷新计数器设立刷新标志位后立即又从零开始计数,不再等待。

    第二种刷新方式更灵活一些。

    转载请注明出处:http://www.cnblogs.com/aslmer/p/5893525.html 

  • 相关阅读:
    深入浅出SQL Server 2008 分区函数和分区表
    数据库的恢复模式
    Windows Server 2003网络负载均衡的实现(转)
    SharePoint2010网站备份还原简单介绍
    HTTP协议详解(转)
    SharePoint 2010之LINQ与SPMetal
    moss 自定义文档库文档图标
    SharePoint 2010环境搭建
    C#中的yield关键字
    .NET开发中你可能会用到的常用方法总结(添加ing...)
  • 原文地址:https://www.cnblogs.com/aslmer/p/5893525.html
Copyright © 2011-2022 走看看