内存的介绍(RAM,ROM,SRAM,DDR)

资料来源:正点原子嵌入式linux

目录

 

何为 RAM 和 ROM?

SRAM

SDRAM

DDR


何为 RAM 和 ROM?

RAM: 随机存储器,可以随时进行读写操作,速度很快,掉电以后数据会丢失。比如内存条、 SRAM、 SDRAM、 DDR 等都是RAM。
ROM: 只读存储器。目前只读这个概念不准确,包括FLASH,SD卡,EMMC等,虽然属于ROM,但是也可以读写。所以通常把ROM都称为FLASH了。

RAM中的随机:可以随意的对某一地址进行操作,比如程序int a=0;直接对a的地址进行赋值。如果是rom,则需要先发送地址命令,再发送数据值。

下面主要介绍RAM。

SRAM

一开始是芯片使用内部RAM,比如51单片机512字节,STM32 64KB RAM,后面需求更大的RAM,那么就开发了SRAM。

SRAM 的全称叫做 Static Random-Access Memory,也就是静态随机存储器,这里的“静态”说的就是只要 SRAM 上电,那么 SRAM 里面的数据就会一直保存着,直到 SRAM 掉电。为了满足SRAM可以随意读取各个地址数据的要求,所以SRAM中一般都有地址线和数据线。以IS62WV51216 SRAM芯片为例。

内存的介绍(RAM,ROM,SRAM,DDR)

这是一个16位宽芯片,1MB大小的SRAM芯片

1.地址线,A0-A18,19根地址线,那么可访问地址大小2^19=512KB,由于是16位宽,所以512*2=1MB大小

2.数据线,16位宽,所以16根数据线。

3.控制线,CS2 和 CS1 是片选信号,OE 是输出使能信号,WE 是写使能信号,UB 和 LB高低字节选择信号

SRAM速度非常快,适合作为芯片内部RAM和Cache,但是价格高,容量不大,所以,后面又有了SDRAM的出现。

 

SDRAM

SDRAM 全称是 Synchronous Dynamic Random Access Memory,翻译过来就是同步动态随机存储器,“同步”的意思是 SDRAM 工作需要时钟线,“动态”的意思是 SDRAM 中的数据需要不断的刷新来保证数据不会丢失,“随机”的意思就是可以读写任意地址的数据。SDRM需要时钟线,常见的就是133MHz、 166MHz 或 200MHz。以W9825G6KH  16 位宽(数据位为 16 位)、 32MB 的 SDRAM为例。

内存的介绍(RAM,ROM,SRAM,DDR)

1.控制线。CLK: 时钟线, SDRAM 是同步动态随机存储器,“同步”的意思就是时钟,因此需要一根额外的时钟线,这是和 SRAM 最大的不同, SRAM 没有时钟线。

CKE: 时钟使能信号线
CS: 片选信号
RAS:行选通信号
CAS: 列选通信号
WE: 写使能信号

2.A10 地址线

Auto-precharge,也就是预充电控制线。

3.地址线
A0~A12,共 13 根地址线,其中A0-A9可以作为列地址,A0-A12作为行地址,一共 13位,因此可寻址范围为: 2^9*2^13=4194304B=4MB, W9825G6KH 为 16 位宽(2 个字节),因此还需要对 4MB 进行乘 2 处理,得到 4*2=8MB

4.BANK选择线

W9825G6KH 就是 4 个 BANK,所以8MB*4=32MB

5.BANK区域

6.数据线

16位款,16根数据线

7.高低字节选择线

 

为了进一步提高SDRAM的速度,又开发出了DDR

 

DDR

DDR 内存是 SDRAM 的升级版本, SDRAM 分为 SDR SDRAM、DDR SDRAM、 DDR2 SDRAM、 DDR3 SDRAM、 DDR4 SDRAM。可以看出 DDR 本质上还是SDRAM,只是随着技术的不断发展, DDR 也在不断的更新换代。
SDRAM 速度一般是 133~200MHz,对应的传输速度就是133~200MT/s,DDR1再CLK的上升沿和下降沿都读取数据,所以速度加倍。同样 133~200MHz的频率, DDR 的传输速度就变为了 266~400MT/S,所以大家常说的 DDR266、 DDR400 就是这么来的。

DDR2 的 IO 时钟是 DDR 的 2 倍,DDR2 的数据传输速率就是 533~800MT/s,这个也就是大家常说的 DDR2 533、 DDR2 800。
DDR3又获得了比 DDR2 高一倍的传输速率,因此在总线时钟同样为 266~400MHz 的情况下, DDR3 的传输速率就是 1066~1600MT/S。

I.MX6U 的 MMDC 外设用于连接 DDR,总线速度为 400MHz(实际是 396MHz),数据传输速率最大为 800MT/S,开发板上接了一个 256MB/512MB 的 DDR3L, 16 位宽,EMMC 核心板上用的 512MB 容量的 DDR3L。NT5CC256M16EP-EK,框图如下:

内存的介绍(RAM,ROM,SRAM,DDR)

1.控制线

ODT:片上终端使能
ZQ:输出驱动校准的外部参考引脚,此引脚应该外接一个 240 欧的电阻到 VSSQ 上,一般就是直接接地了
RESET: 复位引脚,低电平有效
CKE:时钟始能

A12: A12 是地址引脚,但是有也有另外一个功能,因此也叫做 BC 引脚, A12 会在 READ和 WRITE 命令期间被采样,以决定 burst chop 是否会被执行
CK 和 CK#: 时钟信号, DDR3 的时钟线是差分时钟线
CS#:片选信号
RAS#、 CAS#和 WE#:行选通信号、列选通信号和写使能信号
 

2.地址线

A[14:0]为地址线, A0~A14,一共 15 根地址线,列地址A0~A9,共 10 根,行地址为 A0~A14,共 15 根,因此一个 BANK 的大小就是2^10*2^15*2=32MB*2=64MB,共有 8 个 BANK,因此 DDR3L 的容量就是 64*8=512MB

3.BANK选择线

4.BANK区域

5.数据线

16位宽,16根数据线

6.数据选通引脚

7.数据输入屏蔽引脚

 

在正点原子开发板中,LINUX与UBOOT程序是存储在SD卡中的,上电后程序会被读取到DDR中运行。DDR是RAM!