SDRAM

本文主要介绍的是ARM里的RAM和SDRAM有什么区别,首先介绍了RAM的类别及特点,其次对SDRAM做了详细阐述,最后介绍了RAM和SDRAM的区别是什么。

RAM介绍

Random-Access Memory(随机存取存储器),在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器[或者内存储器和外存储器],主存储器简称内存,内存在电脑中起着举足轻重的作用,一般采用半导体存储单元。因为RAM是内存其中最重要的存储器,所以通常我们直接称之为内存。内存就是存储程序以及数据的地方,比如当我们在使用WPS处理文稿时,当你在键盘上敲入字符时,它就被存入内存中,当你选择存盘时,内存中的数据才会被存入硬(磁)盘。

RAM就是既可以从中读取数据,也可以写入数据。当机器电源关闭时,存于其中的数据就会丢失。我们通常购买或升级的内存条就是用作电脑的内存,内存条(SIMM)就是将RAM集成块集中在一起的一小块电路板,它插在计算机中的内存插槽上,以减少RAM集成块占用的空间。目前市场上常见的内存条有 128M/条、256M/条、512M/条等。

RAM的类别

根据存储单元的工作原理不同, RAM分为静态RAM和动态RAM。
  
静态随机存储器(SRAM)

静态存储单元是在静态触发器的基础上附加门控管而构成的。因此,它是靠触发器的自保功能存储数据的。

动态随机存储器(DRAM)

动态RAM的存储矩阵由动态MOS存储单元组成。动态MOS存储单元利用MOS管的栅极电容来存储信息,但由于栅极电容的容量很小,而漏电流又不可能绝对等于0,所以电荷保存的时间有限。为了避免存储信息的丢失,必须定时地给电容补充漏掉的电荷。通常把这种操作称为“刷新”或“再生”,因此DRAM内部要有刷新控制电路,其操作也比静态RAM复杂。尽管如此,由于DRAM存储单元的结构能做得非常简单,所用元件少,功耗低,已成为大容量RAM的主流产品。

RAM的特点

1、随机存取

所谓“随机存取”,指的是当存储器中的数据被读取或写入时,所需要的时间与这段信息所在的位置或所写入的位置无关。相对的,读取或写入顺序访问(SequenTIal Access)存储设备中的信息时,其所需要的时间与位置就会有关系。它主要用来存放操作系统、各种应用程序、数据等。

2、易失性

当电源关闭时RAM不能保留数据。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。

3、对静电敏感

正如其他精细的集成电路,随机存取存储器对环境的静电荷非常敏感。静电会干扰存储器内电容器的电荷,引致数据流失,甚至烧坏电路。故此触碰随机存取存储器前,应先用手触摸金属接地。

4、访问速度

现代的随机存取存储器几乎是所有访问设备中写入和读取速度最快的,存取延迟和其他涉及机械运作的存储设备相比,也显得微不足道。

5、需要刷新(再生)

现代的随机存取存储器依赖电容器存储数据。电容器充满电后代表1(二进制),未充电的代表0。由于电容器或多或少有漏电的情形,若不作特别处理,数据会渐渐随时间流失。刷新是指定期读取电容器的状态,然后按照原来的状态重新为电容器充电,弥补流失了的电荷。需要刷新正好解释了随机存取存储器的易失性。

SDRAM介绍

SDRAM(Synchronous Dynamic Random Access Memory)同步动态随机存取存储器,同步是指Memory工作需要步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是由指定地址进行数据读写。目前的168线64bit带宽内存基本上都采用SDRAM芯片,工作电压3.3V电压,存取速度高达7.5ns,而EDO内存最快为15ns。并将RAM与CPU以相同时钟频率控制,使RAM与CPU外频同步,取消等待时间,所以其传输速率比EDO DRAM更快。

SDRAM从发展到现在已经经历了四代,分别是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM.

第一代与第二代SDRAM均采用单端(Single-Ended)时钟信号,第三代与第四代由于工作频率比较快,所以采用可降低干扰的差分时钟信号作为同步时钟。

SDR SDRAM的时钟频率就是数据存储的频率,第一代内存用时钟频率命名,如pc100,pc133则表明时钟信号为100或133MHz,数据读写速率也为100或133MHz。

之后的第二,三,四代DDR(Double Data Rate)内存则采用数据读写速率作为命名标准,并且在前面加上表示其DDR代数的符号,PC-即DDR,PC2=DDR2,PC3=DDR3。如PC2700是DDR333,其工作频率是333/2=166MHz,2700表示带宽为2.7G。

DDR的读写频率从DDR200到DDR400,DDR2从DDR2-400到DDR2-800,DDR3从DDR3-800到DDR3-1666。

很多人将SDRAM错误的理解为第一代也就是 SDR SDRAM,并且作为名词解释,皆属误导,SDR不等于SDRAM。

  Pin:模组或芯片与外部电路电路连接用的金属引脚,而模组的pin就是常说的“金手指”。
  SIMM:Sigle In-line Memory Module,单列内存模组。内存模组就是我们常说的内存条,所谓单列是指模组电路板与主板插槽的接口只有一列引脚(虽然两侧都有金手指)。
  DIMM:Double In-line Memory Module,双列内存模组。是我们常见的模组类型,所谓双列是指模组电路板与主板插槽的接口有两列引脚,模组电路板两侧的金手指对应一列引脚。
  RDIMM:registered DIMM,带寄存器的双线内存模块
  SO-DIMM:笔记本常用的内存模组。
  工作电压:
  SDR:3.3V
  DDR:2.5V
  DDR2:1.8V
  DDR3:1.5V

ARM里的RAM和SDRAM有什么区别

RAM包括SRAM和DRAM,前者是静态随机存储器,主要是依靠触发器存储数据,无需刷新,而后者是动态随机存储器,依靠MOSFET中栅电容存储数据,需不断刷新以补充释放的电荷。由于单管就可以实现数据存储,集成度可以做到更高,功耗也更低,更为主流。需要注意的是由于刷新牵涉电容的充放电过程,DRAM的存取速度不及SRAM。

至于SDRAM,为同步动态随机存储器,属于DRAM的一种,其工作过程需要同步时钟的配合,因此可以不考虑路线延时不同的影响,避免不定态。普通的DRAM属于异步传输,存取数据时,必须等待若干个时钟以后才进行操作(考虑不定态),因为会花费较多的时间,影响了数据的传输速率。随着时钟频率的不断增高,这个瓶颈的限制就会越来越明显,SDRAM的优势也就更能体现出来。

本文转载自:电子产品世界

围观 10
234

基础一:

SDRAM (Synchronous Dynamic RandomAccess Memory),同步动态随机存储器。同步是指其时钟频率与CPU的前端总线的系统时间频率相同,并且他的内部命令的发送与数据的传输都是以这个时钟为基准的,动态是指存储阵列需要不断的刷新才能保证数据的不丢失。随机是指数据不是线性存储的,是可以自由指定地址进行数据读写。

位宽:是指内存一次数据传输的数据量就是位宽,以位为单位。

SDRAM的内部结构:

SDRAM相当于一个excel,一个工作溥中有几个工作表,每个工作表里有行列。

SDRAM中的一个bank就相当于excel中的一个工作表, SDRAM中的行(Column)与列(Row)相当于工作于中的行与列,我们对内存的读写就是根据bank号 Column 、Row来准确的找到所需要的单元格(存储阵列)。

由于技术、成本等原因,不可能只做一个全容量的Bank,而且最重要的是,由于SDRAM的工作原理限制,单一的Bank将会造成非常严重的寻址冲突,大大降低了内存的效率,所以把SDRAM内部分割成多个Bank,较早以前是2个,目前市面上大多都是4个Bank的,

SDRAM容量的计算。

SDRAM容量 = 单元格的总数(地址总数) X 位宽

单元格的总数 = Bank数 X Column数 X ROW数

如果要以字节为单位的话,刚需要将SDRAM容量(bit) / 8(bit)

型号为:HY57641620XXX的为64Mbit (8M字节)位宽为16bit的SDRAM,内部结构为4个Bank,Column数为8(CA0-CA7),Row数为12(RA0- RA11),SDRAM的行地址线和列地址线是分时复用的,即地址要分两次送出,先送出行地址,再送出列地址。这样,可以大幅度减少地址线的数目。

计算方法为:每个bank的容量为: 2 Row次方 X 2 的Column次方X 16(bit) = 256 X4096 X 16 /1024 = 16384 bit =16 Mbit = 2 M字节,再乘以bank数就是64 Mbit (8M字节了),更简单的方法是行列加起了相当于20根地址线,所以每个bank能访问的地址空间是 2 的20次方 = 1048576 bit= 1M字节,但由于第次传输的数据位宽是16位,所以每个bank的空量是 16 Mbit ,总共有4个bank,所以就有64Bbit的容量,换成字节单位就是8M字节。

基础二:

1、逻辑Bank与芯片位宽

SDRAM的内部是一个存储阵列。因为如果是管道式存储(就如排队买票),就很难做到随机访问了。

阵列就如同表格一样,将数据“填”进去,你可以把它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)叫什么呢?它就是逻辑Bank(Logical Bank,下文简称L-Bank)。

SDRAM的一些基础知识
L-Bank存储阵列示意图

由于技术、成本等原因,不可能只做一个全容量的L-Bank,而且最重要的是,由于SDRAM的工作原理限制,单一的L-Bank将会造成非常严重的寻址冲突,大幅降低内存效率。所以人们在SDRAM内部分割成多个L-Bank,较早以前是两个,目前基本都是4个,这也是SDRAM规范中的最高L-Bank数量。到了RDRAM则最多达到了32个,在最新DDR-Ⅱ的标准中,L-Bank的数量也提高到了8个。

这样,在进行寻址时就要先确定是哪个L-Bank,然后再在这个选定的L-Bank中选择相应的行与列进行寻址。可见对内存的访问,一次只能是一个L-Bank工作,而每次与北桥交换的数据就是L-Bank存储阵列中一个“存储单元”的容量。在某些厂商的表述中,将L-Bank中的存储单元称为Word(此处代表位的集合而不是字节的集合)。

SDRAM的一个存储单元并不是存储一个bit,一般是8bit的整数倍(8bits,16bits,32bits),这个存储单元的容量就是芯片的位宽(也是L-Bank的位宽),SDRAM内存芯片一次传输率的数据量就是芯片位宽。

SDRAM的一些基础知识

2、内存芯片的容量

现在我们应该清楚内存芯片的基本组织结构了。那么内存的容量怎么计算呢?显然,内存芯片的容量就是所有L-Bank中的存储单元的容量总合。计算有多少个存储单元和计算表格中的单元数量的方法一样:

存储单元数量=2^行数 × 2^列数(得到一个L-Bank的存储单元数量)× L-Bank的数量 “单位:bits”

在很多内存产品介绍文档中,都会用M×W的方式来表示芯片的容量(或者说是芯片的规格/组织结构)。M是该芯片中存储单元的总数,单位是兆(英文简写M,精确值是1048576,而不是1000000),W代表每个存储单元的容量,也就是SDRAM芯片的位宽(Width),单位是bit。计算出来的芯片容量也是以bit为单位,但用户可以采用除以8的方法换算为字节(Byte)。比如8M×8,这是一个8bit位宽芯片,有8M个存储单元,总容量是64Mbit(8MB)。

以MT48LC16M16A2为例,该芯片结构为4 x 16M x 16bits,表示4个bank,4个bank共16M个单元(注意不是每个bank有16M单元),位宽16bits,大小计算
Capacity = 16M * 16bits = 256 Mbits = 32 MBytes

初始化:

上电后,等到VDD和VDDQ稳定后并且CKE设为高电平时。

1.将SDRAM的一些特性写入配置寄存中,如,同步时间,列数,行数,CAS延时等,还有需要将数据线宽度写入模式寄存器,这个数据宽度是要根据实际的硬件接口宽度决定的。

2. 等待一个最少200us 的延时,这个根据不同的SDRAM可能不同

3. 向SDRAM 发一个NOP命令:应用程序需要把模式模式寄存器写为模式1并写一个数到任意地址

4. 设置所有Bank 预冲电(precharge):应用程序需要将模式寄存器设置为模式2并下任意地址写入数据,可能需要延时.

实际上,预充电是一种对工作行中所有存储体进行数据重写,并对行地址进行复位,同时释放S-SMP(重新加入比较电压,一般是电容电压的1/2,以有助于判断读取数据的逻辑电平,,S-AMP是通过一个参考电压与存储体的电压比较来判断逻辑值的),以用来准备新的工作。

5. 自动刷新(auto refresh). 提供8个自动刷新时序。将模式寄存器切换到第四种方式,并向任意地址写一个数据,重复8次。

刷新说明,因为SDRAM需要不断的进行刷新,所在称作为动态内存-DRAM,刷新操作有两种,一种是Auto Reresh,简称AR,另一种是Self Refresh ,简称是SR,但不管是哪种刷新方法,都不需要外部提供行地址住处,因为他们都是内部的自动操作。结于AR,SDRAM有一个行地址生成器(也称亻刷新计数器)用来自动依次生成行地址。由于刷新是针对一行中所有存储单无际是行的,所以无需列寻址,或都说CAS在RAS之前,所以AR在有的地方叫作CBR(意思是CAS Before RAS)式刷新。

刷新时间,目前公认的标准是,存储单元中电容的数据有效保存上限是64ms(1000ms =1 s),也就是说每一行新的循环周期是64ms,我们在有的内存上看这样样的参数4096 Refresh Cycles/64ms之类的信息,从中可以看出,这个内存的行是12行,相当于每一行就行地址的扫描时间是64ms / 4096 =15.625us(1000us = 1ms)。

6. 设置CAS延时与突发长度。数据将模式寄存器设置为第三种模式,然后向写入任意数据。

空发时间Burst Length :空发长度是什么呢,如果突发长度(BL)为4,那就是每次传输的的是4 X W(数据宽度)的数据,这样就可能造成第二笔数据是不需要的,这就引入了数据掩码(DQM)技术,通过DQM,,内存可以控制I/O数据取消哪些输出或输入的数据。

7. 设置为正常工作模式,然后向SDRAM写入任意

8. 将刷新率写入SDRAM的刷新计数器中,刷新率=刷新周期之间的延迟。

以上初始化的基于MCU是at91sram7se,SDRAM是HY57V641620XXX

参考来源:
http://blog.csdn.net/xiahouzuoxin/article/details/17174795
http://pctanyicheng.blog.163.com/blog/static/173820242010689367285/

转自: lutherarcher的博客

围观 46
534
订阅 RSS - SDRAM