sdram知识讲解_华清远见
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sdram知识讲解
本篇文章为大家带来sdram知识讲解,sdram如何裸奔,希望看完对大家的学习之路有所帮助。
一、sdram的介绍SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器,同步是指 Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。
二、s3c2410内部存储器
上面的图是我个人对存储器的理解。
我们知道,市面上内存的类型很多,那一款cpu是如何来识别如此多的RAM呢?这一切都是内存控制器来做的,我们就需要对内存控制器进行配置。当然内存控制器支持的 RAM类型也是有限的。其实cpu在取数据的时候,只是执行一条指令,例如:ldr r0,[r2];关于数据怎么来,cpu并不关心。整个数据的读取和写入全部由内存控制器完成。
三、s3c2410的地址空间
s3c2410的"存储控制器"提供了访问外部设备所需的信号,它有如下特性:
A.支持小字节、大字节序(通过软件选择)
B.每个BANK的地址空间为128M,总共1GB(8BANKS)
C.可编程控制的总线位宽(8/16/32-bit),不过BANK0只能选择两种位宽(16/32-bit)
D.总共8个BANK,BANK0-BANK5可以支持外接ROM,SRAM等,BANK6-BANK7 除可以支持ROM、SRAM外,还支持SDRAM等
E.BANK0-BANK6共7个BANK的起始地址是固定的
F.BANK7的起始地址可编程选择
G.BANK6、BANK7的地址空间大小是可编程控制的
H.每个BANK的访问周期均可编程控制
I.可以通过外部的"wait"信号延长总线的访问周期 <
J.在外接SDRAM时,支持自刷新(self-refresh)和省电模式(power down mode)
S3C2410对外引出的27根地址线ADDR0-ADDR26的访问范围只有128MB,那么如何达到上面所说的1GB 的访问空间呢?CPU对外还引出了8根片选信号nGCS0-nGCS7,对应于BANK0-BANK7,当访问BANKx的地址空间时,nGCSx引脚输出低电平用来选中外接的设备。这样,每个nGCSx对应128MB地址空间,8个nGCSx信号总共就对应了1GB的地址空间。8个BANK如下图所示:
如上图所示,左边对应不使用NAND FLASH作为启动设备,右边对应使用NAND FLASH作为启动设备
在fs2410上,BANK0接了NOR FLASH,也就说它既支持从NOR FALSH启动,也支持从NAND FLASH 启动。接线如下
注意:
把跳线帽拔了是从NOR FLASH启动,此时零地址在NOR FLASH上,S3C2410片内的4k SRAM被映射到高地址0x40000000。
把跳线帽插上是NAND FLASH启动,此时SRAM被映射到零地址。此时,硬件上会自动把NAND FLASH前4k拷贝到SRAM中去。
S3C2410作为32位的CPU,可以使用的地址范围理论上可以达到4G。除了上述用于连接外设的1GB地址空间外,还有一部分是cpu内部寄存器的地址,剩下的地址空间没有使用。
四、SDRAM的工作原理
SDRAM的内部是一个存储阵列。阵列就如同表格一样,将数据"填"进去。在数据读写时和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。
先来看看fs2410上面内存的接线原理图
内存的芯片是:K4S561632D-TC75
关键特性如下:
1.4M x 16bit x 4BANK = 32 M
2.64ms refresh period (8K Cycle)
(一个bank刷新完所需时间64ms,总共8 k = 8192个行,每一行刷新的间隔时间为64ms / 8192 = 7.8125us)
3.MAX 主频133MHz(CL=3)
注意:CL,就是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CL(CAS Latency,CAS潜伏期)。
这里只是简单罗列了一些重要特性,其他特性读者可以查看其datasheet。
引脚功能:
下面我们再来看看sdram 是如何寻址
1.通过ADDR24,ADDR25,确定bank地址
2.通过RA0~RA12,确定行地址(8192个行)
3.通过CA0~CA8,确定列地址(512个列)
选定bank后,通过行地址和列地址就可以定位在那个单元格,在结合原理图我们知道,fs2310接了两个sdram,地址线复用,数据线分开。这样一个4字节的数据,前两个字节存放在第一个sdram,后两个字节存放在第二个sdram。
注意:先发bank地址,在发行地址,在发列地址
此时你也许有一个疑问,如果按照上面的描述,对于一个给定的地址进行读写都是4byte,但是有我们知道,有些时候我们读取或写入只是某一个字节。对于1byte的读写是通过LDQM、UDQM。分别称为低字节屏蔽、高字节屏蔽。
在来看看sdram的时序图
Trp(Row precharge time):行预充电时间(min : 20 ns)
Trcd(/RAS to /CAS delay):行无效到列有效的时间(min : 20 ns)
呵呵,要想得到这样的时序,我们只需要配置内存控制器就可以了。