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
SDRAM学习(一)之刷新心得的更多相关文章
- SDRAM的初始化与刷新操作---看时序图写代码
SDRAM的初始化与刷新操作---看时序图写代码 1.SDRAM的常见操作 2.初始化就是配置SDRAM 3.SDRAM初始化时序 时序解释如下: 4.刷新操作
- python学习的一点点心得
好久没发博客了,不解释....接下来写一点自己最近学习python的一点心得. 想要学习python的初衷,是看<软件测试技术大全>一书时,了解到像perl.python.ruby等脚本类 ...
- SDRAM 学习(三)之command
command 模块总述 SDRAM 的 command 模块的内容包括如下: 1.对初始化请求.配置模式寄存器.读/写.刷新.预充电等命令的一个优先级的控制. 2.对命令执行时间进行控制,依据如图1 ...
- SDRAM 学习笔记(一)
前面几篇博客已经讲到了关于0V7725的相关驱动问题,那么OV7725驱动成功之后,设定OV7725输出RGB565格式,那么对于640x480x16,那么若是选用FIFO,应该设置为位宽16bit, ...
- Linux系统的理解及学习Linux内核的心得
作业列表 (点击作业跳转) linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作 linux内核分析作业:操作系统是如何工作的进行:完成一个简单的时间片轮转多道程序内核 ...
- SDRAM学习笔记(二)
上一篇博客主要讲解了一下SDRAM整体结构以及PCB方面的注意事项.接下来讲解一下需要用到的一些命令. 1.常用命令的缩写 上述是常用到的一些指令集. 2.模式寄存器 (1)突发长度 通过对A0~ ...
- SDRAM 学习笔记(三)
上图是terasic公司提供的SDRAM控制器,大部分已经封装好,我们需要修改其中部分代码,以此来实现我们自己需要的功能. 1.PLL时钟设定 首先上面的sdram_pll.v中产生上一篇博客所需要的 ...
- SDRAM学习(二)之初始化
目录 1.SDRAM初始化的内容(结合英文数据手册) 2.SDRAM初始化的时序 3.代码的编写 4.modesim的仿真 SDRAM初始化的内容 SDRAMs must be powered up ...
- 新手入门学习angular.js的心得体会
看了一天的angular.js,只要记住这是关于双向数据绑定 和单向数据绑定就可以,看看开发文档,短时间内还是可以直接入手的,看个人理解能力(我是小白). 这几天开始着手学习angularjs的有关知 ...
随机推荐
- MySQL访问
MySQL访问 1.介绍 python访问mysql数据库,需要安装mysql的python插件. 2.安装插件 通过pip命令安装mysql插件. # cmd>pip install PyMy ...
- html常用的小技能
在html中有很多常用小技能,记下来,下次直接看自己的,就不用四处找啦! 1.<li>标签去掉点号:list-style-type:none; 去掉前: 去掉后: 2.<li> ...
- Atom打造轻量化C/C++ IDE
写在前面 近期沉迷Atom的颜值无法自拔,在github的光环下,Atom凭借自身良好的素质,获得了大量开发者的青睐.随之而来的就是丰富的插件库,在插件帮助下,它对各种编程语言都有相当好的支持.对与一 ...
- Android(java)学习笔记152:采用get请求提交数据到服务器(qq登录案例)
1.GET请求: 组拼url的路径,把提交的数据拼装url的后面,提交给服务器. 缺点:(1)安全性(Android下提交数据组拼隐藏在代码中,不存在安全问题) (2)长度有限不能超过4K(h ...
- iOS 集成支付宝过程中 我遇到的一些坑,请大家注意啦(ALI69错误,ALI64错误)
支付宝很早一段时间就集成了,之前由于一直忙于开发就没有总结,今天整理桌面的时候看到,当时做支付时候的一些散落的笔记,就稍微整理一下,给大家分享一下. 第一:当时调用支付宝的时候,总是调不起来,进过断点 ...
- GC Root总结
为什么80%的码农都做不了架构师?>>> JVM根据GC Roots算法判定一个对象需要被回收,GC Roots一般在JVM的栈区域里产生. GC Roots原理 GC Roots基 ...
- css代码
#footr { background: #3e434a } #header #blogTitle { background: url("http://images.cnblogs.com/ ...
- MySQL派生表(derived)优化一例
1.什么是派生表derived 关键字:子查询–>在From后where前的子查询 mysql; +----+-------------+------------+------+-------- ...
- Java基础面试操作题: 获取 1-20 之间的随机数,共计 20 个,要求不能重复 获取 1-20 之间的随机数,共计 10 个,要求不能重
package com.swift; import java.util.HashSet; import java.util.Random; import java.util.Set; public c ...
- ajaxfileuplod 上传文件 essyui laoding 效果,防止重复上传文件
//放于上传前 function ajaxLoading(){ $("<div class=\"datagrid-mask\"></div>&qu ...