首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
»
ARM
» S3C2440 SDRAM原理到驱动解释完整版(6)
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
S3C2440 SDRAM原理到驱动解释完整版(6)
发短消息
加为好友
look_w
当前离线
UID
1066743
帖子
8283
精华
0
积分
4142
阅读权限
90
在线时间
233 小时
注册时间
2017-6-23
最后登录
2019-5-18
论坛元老
UID
1066743
1
#
打印
字体大小:
t
T
look_w
发表于 2017-10-24 20:53
|
只看该作者
S3C2440 SDRAM原理到驱动解释完整版(6)
1.1.7
SDRAM
的刷新
SDRAM
之所以成为
DRAM
就是因为它要不断进行刷新(
Refresh
)才能保留住数据,因此它是
SDRAM
最重要的操作。
刷新操作与预充电中重写的操作一样,都是用
S-AMP
先读再写。但为什么有预充电操作还要进行刷新呢?因为预充电是对一个或所有
L-Bank
中的工作行操作,并且是不定期的,而刷新则是有固定的周期,依次对所有行进行操作,以保留那些很长时间没经历重写的存储体中的数据。但与所有
L-Bank
预充电不同的是,这里的行是指所有
L-Bank
中地址相同的行,而预充电中各
L-Bank
中的工作行地址并不是一定是相同的。那么要隔多长时间重复一次刷新呢?目前公认的标准是,存储体中电容的数据有效保存期上限是
64ms
(毫秒,
1/1000
秒),也就是说每一行刷新的循环周期是
64ms
。这样刷新时间间隔就是:
64m/
行数
s
。我们在看内存规格时,经常会看到
4096 Refresh Cycles/64ms
或
8192 Refresh Cycles/64ms
的标识,这里的
4096
与
8192
就代表这个芯片中每个
L-Bank
的行数。刷新命令一次对一行有效,刷新间隔也是随总行数而变化,
4096
行时为
15.625
μ
s
(微秒,
1/1000
毫秒),
8192
行时就为
7.8125
μ
s
。刷新操作分为两种:
Auto Refresh
,简称
AR
与
Self Refresh
,简称
SR
。不论是何种刷新方式,都不需要外部提供行地址信息,因为这是一个内部的自动操作。对于
AR
,
SDRAM
内部有一个行地址生成器(也称刷新计数器)用来自动的依次生成行地址。由于刷新是针对一行中的所有存储体进行,所以无需列寻址,或者说
CAS
在
RAS
之前有效。所以,
AR
又称
CBR
(
CAS Before RAS
,列提前于行定位)式刷新。由于刷新涉及到所有
L-Bank
,因此在刷新过程中,所有
L-Bank
都停止工作,而每次刷新所占用的时间为
9
个时钟周期(
PC133
标准),之后就可进入正常的工作状态,也就是说在这
9
个时钟期间内,所有工作指令只能等待而无法执行。
64ms
之后则再次对同一行进行刷新,如此周而复始进行循环刷新。显然,刷新操作肯定会对
SDRAM
的性能造成影响,但这是没办法的事情,也是
DRAM
相对于
SRAM
(静态内存,无需刷新仍能保留数据)取得成本优势的同时所付出的代价。
SR
则主要用于休眠模式低功耗状态下的数据保存,这方面最著名的应用就是
STR
(
Suspend to RAM
,休眠挂起于内存)。在发出
AR
命令时,将
CKE
置于无效状态,就进入了
SR
模式,此时不再依靠系统时钟工作,而是根据内部的时钟进行刷新操作。在
SR
期间除了
CKE
之外的所有外部信号都是无效的(无需外部提供刷新指令),只有重新使
CKE
有效才能退出自刷新模式并进入正常操作状态。
SDRAM
相关寄存器:
(
1
)
BWSCON
寄存器(
BUS WIDTH & WAIT CONTROL REGISTER
)
表
2-17 SDRAM
控制寄存器(
BWSCON
)
表
2-20
刷新频率设置寄存器(
REFRESH
)
SDRAM
的刷新有效,刷新频率设置寄存器(刷新)
l
REFEN
:开启/关闭刷新功能,设置为1,开启刷新
l
TREFMD
:SDRAM刷新模式,0=CBR/AutoRefresh,
1=Self Refresh,设置为0,自动刷新
l
Trp
:行地址选通预充电时间,一般设置为0b00即可
l
Tsrc
:单行刷新时间,设置为0b11即可。
l
Refresh Counter
:内存存储单元刷新数,它通过下面公式计算出:
Refresh Counter = 2^11 + 1 – SDRAM
时钟频率(MHz)* SDRAM刷新周期(uS)
SDRAM
的刷新周期,也就是内存存储单元间隔需要多久进行一次刷新,前面内存工作原理分析可知电容数据保存上限为
64ms
,笔者使用内存芯片每个
L-Bank
共有
8192
行,因此每次刷新最大间隔为:
64ms/8192 = 7.8125uS
,如果内存工作在外部晶振频率
12MHz
下,
Refresh Counter = 1955
,如果内存工作在
100MHz
下,那么
Refresh Counter = 1269
(取大整数)
l
REFRESH
寄存器设置为:
0x8e0000 + 1269 = 0x008e04f5
(HCLK = 100MHz)
0x8e0000 + 1955 = 0x008e07a3
(HCLK = 12MHz)
(
5
)
BANKSIZE
寄存器(
BANKSIZE REGISTER
)
表
2-21 BANKSIZE
寄存器(
BANKSIZE
)
设置内存的突发传输模式,省电模式和内存容量。
l
BURST_EN
:是否开启突发模式,
0 = ARM内核禁止突发传输
1 =
开启突发传输,设置为1,开启突发传输
l
SCKE_EN
:是否使用SCKE信号作为省电模式控制信号,
0 =
不使用SCKE信号作为省电模式控制信号
1 =
使用SCKE信号作为省电模式控制信号,通常设置为1
l
SCLK_EN
: 设置向存储器输入工作频率,0 =
一直输入SCLK频率,即使没有内存操作也会输入,
1 =
仅当进行内存数据操作时才输入SCLK频率,通常设置为1
l
BK76MAP
:设置Bank6/7的内存容量,笔者使用开发板内存为两片32M内存芯片并联成64M,它们全部都外接到Bank6上,因此选择0b001
l
BANKSIZE
寄存器设置为:0xb1
(
6
)
SDRAM
模式设置寄存器
MRSRx (SDRAM MODE REGISTER SET REGISTER)
表
2-22 SDRAM
模式设置寄存器(
MRSRx
)
该寄存器用于设置
CAS
潜伏周期,可以手动设置的位只有
CL[6:4]
位,通过前面内存工作原理可知,笔者使用开发板
CL=3
,即
0b011
l
MRSR6
,MRSR7设置为:0x00000030
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议