标题:
S3C2440 SDRAM原理到驱动解释完整版(4)
[打印本页]
作者:
look_w
时间:
2017-10-24 20:50
标题:
S3C2440 SDRAM原理到驱动解释完整版(4)
1.1.3
SDRAM
的读操作
SDRAM
进行读操作时,先向地址线上送上要读取数据的地址,通过前面的知识了解到,地址被分成
3
部分,行地址,列地址,
L-Bank
片选信号。片选(
L-Bank
的定址)操作和行有效操作可以同时进行。
在
CS
、
L-Bank
定址的同时,
RAS
(
nSRAS
行地址选通信号)也处于有效状态。此时
An
地址线则发送具体的行地址。
A0~A12
,共有
13
根地址线(可表示
8192
行),
A0~A12
的不同数值就确定了具体的行地址。由于行有效的同时也是相应
L-Bank
有效,所以行有效也可称为
L-Bank
有效。
行地址确定之后,就要对列地址进行寻址了。但是,地址线仍然是行地址所用的
A0~A12
。没错,在
SDRAM
中,行地址与列地址线是复用的。列地址复用了
A0~A8
,共
9
根(可表示
512
列)。那么,读
/
写的命令是怎么发出的呢?其实没有一个信号是发送读或写的明确命令的,而是通过芯片的可写状态的控制来达到读
/
写的目的。显然
WE
信号(
nWE
)就是一个关键。
WE
无效时,当然就是读取命令。有效时,就是写命令。
SDRAM
基本操作命令
,
通过各种控制
/
地址信号的组合来完成(
H
代表高电平,
L
代表低电平,
X
表示高,低电平均没有影响)。此表中,除了自刷新命令外,所有命令都是默认
CKE
(
SCKEl
输入时钟频率有效)有效。列寻址信号与读写命令是同时发出的。虽然地址线与行寻址共用,但
CAS
(
nSCAS
列地址选通信号)信号则可以区分开行与列寻址的不同,配合
A0~A8
,
A9~A11
来确定具体的列地址。
读取命令与列地址一块发出(当
WE
为低电平是即为写命令)然而,在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定义为
tRCD
,即
RAS to CAS Delay
(
RAS
至
CAS
延迟),这个很好理解,在地址线上送完行地址之后,要等到行地址稳定定位后再送出列地址,
tRCD
是
SDRAM
的一个重要时序参数,相关数值参看对应芯片硬件手册。通常
tRCD
以时钟周期(
tCK
,
Clock Time
)数为单位,比如笔者
MINI2440
所用内存芯片里面写到
tRCD
为
20nst
,如果将来内存工作在
100MHz
,那么
RCD
至少要为
2
个时钟周期,
RCD=2
。
图
2-53
SDRAM
读操作时序图
在选定列地址后,就已经确定了具体的存储单元,剩下就是等待数据通过数据
I/O
通道(
DQ
)输出到内存数据总线上了。但是在列地址选通信号
CAS
发出之后,仍要经过一定的时间才能有数据输出,从
CAS
与读取命令发出到第一笔数据输出的这段时间,被定义为
CL
(
CAS Latency
,
CAS
潜伏期)。由于
CL
只在读取时出现,所以
CL
又被称为读取潜伏期(
RL
,
Read Latency
)。
CL
的单位与
tRCD
一样,也是时钟周期数,具体耗时由时钟频率决定(笔者官方手册
CL=3
)。不过,
CAS
并不是在经过
CL
周期之后才送达存储单元。实际上
CAS
与
RAS
一样是瞬间到达的。由于芯片体积的原因,存储单元中的电容容量很小,所以信号要经过放大来保证其有效的识别性,这个放大
/
驱动工作由
S-AMP
负责。但它要有一个准备时间才能保证信号的发送强度,这段时间我们称之为
tAC
(
Access Time from CLK
,时钟触发后的访问时间)。
1.1.4
SDRAM
预充电操作
从存储体的结构图上可以看出,原本逻辑状态为
1
的电容在读取操作后,会因放电而变为逻辑
0
。由于
SDRAM
的寻址具有独占性,所以在进行完读写操作后,如果要对同一
L-Bank
的另一行进行寻址,就要将原先操作行关闭,重新发送行
/
列地址。在对原先操作行进行关闭时,
DRAM
为了在关闭当前行时保持数据,要对存储体中原有的信息进行重写,这个充电重写和关闭操作行过程叫做预充电,发送预充电信号时,意味着先执行存储体充电,然后关闭当前
L-Bank
操作行。预充电中重写的操作与刷新操作(后面详细介绍)一样,只不过预充电不是定期的,而只是在读操作以后执行的。
1.1.5
SDRAM
突发操作
突发(
Burst
)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)数量就是突发长度(
Burst Length
,简称
BL
)。
在目前,由于内存控制器一次读
/
写
P-Bank
位宽的数据,也就是
8
个字节,但是在现实中小于
8
个字节的数据很少见,所以一般都要经过多个周期进行数据的传输,上文写到的读
/
写操作,都是一次对一个存储单元进行寻址,如果要连续读
/
写,还要对当前存储单元的下一单元进行寻址,也就是要不断的发送列地址与读
/
写命令(行地址不变,所以不用再对地寻址)。虽然由于读
/
写延迟相同可以让数据传输在
I/O
端是连续的,但是它占用了大量的内存控制资源,在数据进行连续传输时无法输入新的命令效率很低。为此,引入了突发传输机制,只要指定起始列地址与突发长度,内存就会依次自动对后面相应长度数据的数据存储单元进行读
/
写操作而不再需要控制器连续地提供列地址,这样,除了第一笔数据的传输需要若干个周期(主要是之间的延迟,一般的是
tRCD + CL
)外,其后每个数据只需一个周期即可。
总结下:
SDRAM
的基本读操作需要控制线和地址线相配合地发出一系列命令来完成。先发出芯片有效命令(
ACTIVE
),并锁定相应的
L-BANK
地址(
BA0
、
BA1
给出)和行地址(
A0
~
A12
给出)。芯片激活命令后必须等待大于
tRCD(SDRAM
的
RAS
到
CAS
的延迟指标
)
时间后,发出读命令。
CL
(
CAS
延迟值)个时钟周期后,读出数据依次出现在数据总线上。在读操作的最后,要向
SDRAM
发出预充电(
PRECHARGE
)命令,以关闭已经激活的
L-BANK
。等待
tRP
时间(
PRECHAREG
命令后,相隔
tRP
时间,才可再次访问该行)后,可以开始下一次的读、写操作。
SDRAM
的读操作支持突发模式(
Burst Mode
),突发长度为
1
、
2
、
4
、
8
可选。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0