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

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

SDRAM学习(一)之刷新心得的更多相关文章

  1. SDRAM的初始化与刷新操作---看时序图写代码

    SDRAM的初始化与刷新操作---看时序图写代码 1.SDRAM的常见操作 2.初始化就是配置SDRAM 3.SDRAM初始化时序 时序解释如下: 4.刷新操作

  2. python学习的一点点心得

    好久没发博客了,不解释....接下来写一点自己最近学习python的一点心得. 想要学习python的初衷,是看<软件测试技术大全>一书时,了解到像perl.python.ruby等脚本类 ...

  3. SDRAM 学习(三)之command

    command 模块总述 SDRAM 的 command 模块的内容包括如下: 1.对初始化请求.配置模式寄存器.读/写.刷新.预充电等命令的一个优先级的控制. 2.对命令执行时间进行控制,依据如图1 ...

  4. SDRAM 学习笔记(一)

    前面几篇博客已经讲到了关于0V7725的相关驱动问题,那么OV7725驱动成功之后,设定OV7725输出RGB565格式,那么对于640x480x16,那么若是选用FIFO,应该设置为位宽16bit, ...

  5. Linux系统的理解及学习Linux内核的心得

    作业列表      (点击作业跳转) linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作 linux内核分析作业:操作系统是如何工作的进行:完成一个简单的时间片轮转多道程序内核 ...

  6. SDRAM学习笔记(二)

    上一篇博客主要讲解了一下SDRAM整体结构以及PCB方面的注意事项.接下来讲解一下需要用到的一些命令. 1.常用命令的缩写 上述是常用到的一些指令集. 2.模式寄存器   (1)突发长度 通过对A0~ ...

  7. SDRAM 学习笔记(三)

    上图是terasic公司提供的SDRAM控制器,大部分已经封装好,我们需要修改其中部分代码,以此来实现我们自己需要的功能. 1.PLL时钟设定 首先上面的sdram_pll.v中产生上一篇博客所需要的 ...

  8. SDRAM学习(二)之初始化

    目录 1.SDRAM初始化的内容(结合英文数据手册) 2.SDRAM初始化的时序 3.代码的编写 4.modesim的仿真 SDRAM初始化的内容 SDRAMs must be powered up ...

  9. 新手入门学习angular.js的心得体会

    看了一天的angular.js,只要记住这是关于双向数据绑定 和单向数据绑定就可以,看看开发文档,短时间内还是可以直接入手的,看个人理解能力(我是小白). 这几天开始着手学习angularjs的有关知 ...

随机推荐

  1. 解析ASPX网页__doPostBack分页的网页table数据

    由于急于上线的功能要去客服系统里抓取数据进行验证,客服方面又没有时间开发EDI接口给到我,所以用了本办法:爬人家web系统上的数据进行分析. 由于客服的web系统用ASP.Net的__doPostBa ...

  2. pg中的非varchar类型的模糊搜索

    模糊搜索,bay字段是 numeric 类型的(如果是 varchar 类型的用常规的即可) 1,SELECT * FROM s_view_monitor_result WHERE bay ~~ CA ...

  3. cms-详细页面2

    详细页面遗留下来的部分: 1:当前位置 2.分享 3.时间格式 4.摘要 5.关键字: 解决方案: 1:当前位置:---后台拼接 2:分享:前端一段js代码 3.摘要,直接数据库查询 4.时间格式:引 ...

  4. 前台使用load一个集合后台接受的方法

    前台: var imageCaseList = []; }; imageCaseList.push(data); $('#showData').load(url, { querys: imageCas ...

  5. 实现带查询功能的ComboBox控件

    实现效果: 知识运用: ComboBox控件的AutoCompleteMode属性 public AutoCompleteMode AutoCompleteMode{get;set;} //属性值为枚 ...

  6. Linux 的歷史

    Unix 狹義作業系統提供應用程式及命令直譯器. 作業系統發展初期並不具可攜性. Bell, GE 及 MIT 合作開發的 "Multice" 系統( 相容分時系統 ). 1969 ...

  7. python_17_数据运算

    #//取整除,返回商的整数部分 print(9//2) print(10/3.3) print(10//3.0) #<>与!=都为不等于 #and 与 例(a and b) #or 或 # ...

  8. js 数组方法大集合,各方法是否改变原有的数组详解

    不会改变原来数组的有: concat()---连接两个或更多的数组,并返回结果. every()---检测数组元素的每个元素是否都符合条件. some()---检测数组元素中是否有元素符合指定条件. ...

  9. java设计模式——单例模式(三)

    容器单例模式 之前学习Structs2,Spring框架时,经常会听到单例,多例.虽然这与单例模式不太一样,但是都很类似.在程序运行的时候,就加载所有的实例,然后用的时候直接取出 看下面代码: /** ...

  10. 黑马基础阶段测试题:创建Phone(手机)类,Phone类中包含以下内容:

    package com.swift; public class Phone { private String pinpai; private int dianliang; public String ...