【裸机开发】DDR 的发展历程(SRAM—SDRAM—DDR—DDR2/DDR3)

RAM 和 DDR 都可以CPU直接进行交互(因为数据处理速度够快),我们烧写到开发板里的程序,最终都要被加载到 DDR 或者 RAM,CPU 再从 DDR 或者 RAM 读取数据、指令。

RAM:CPU内部的一段可用内存。范围为 0x00900000~0x0091FFFF,大小为 128 KB

DDR:CPU外的存储器,封装在SOC 中,DDR的大小为 256M 或者 512M。如果DDR大小为256MB,那么范围为 0x80000000~0x90000000。


目录

一、ROM 和 RAM

1、ROM

2、RAM

二、RAM

扫描二维码关注公众号,回复: 15904928 查看本文章

1、SRAM

2、SDRAM

3、DDR SDRAM

4、DDR2 / DDR3 / DDR3L


一、ROM 和 RAM

1、ROM

只读存储器,类似于电脑硬盘,掉电以后数据不丢失,适合用来存储资料,比如音视频、图片等信息。也可以叫做 Flash,比如 EMMC、UFS、NAND Flash 其实都是 ROM。

  • 掉电以后数据不丢失
  • IO 速度相较于RAM更慢
  • 容量一般较大(IMX.6ULL 有 512 MB 的 NAND Flash或者 8GB 的 EMMC

2、RAM

随机存储器,类似于电脑的运行内存,掉电以后数据会丢失,一般用来保存程序数据、中间结果。比如后续介绍的 SRAM、SDRAM、DDR 其实都是 RAM。

  • 掉电以后数据丢失
  • IO 速度快,可以和CPU直接交互
  • 容量较小(IMX.6ULL 的DDR3 为 256 MB 或 512 MB)

二、RAM

后续的 SDRAM、DDR其实都是在上一个的基础上一步步改进得到的,所以我们需要依次了解 SRAM —— SDRAM —— DDR —— DDR2 / DDR3 到底做了哪些改进。

1、SRAM

这里以 16 位宽(数据位为16位)、1 MB 大小的SRAM为例。假设SRAM要获取数据,那么他就需要知道,去哪个地址,一次取多少数据,是读数据还是写数据。这一句话包含了下面三种线的作用。

① 地址线

地址线有19根(A0 ~ A18),那么可访问的地址大小就是2^19 = 524288 = 512KB。

② 数据线

16位宽有16根数据线,对应 16 bit,相当于每次去某个地址,都会访问 2 个字节的数据,因此就有了高低字节之分,其中 IO0~IO7 是低字节,IO8~IO15 是高字节。

这也就验证了 SRAM 的大小 = 可访问的地址数 × 每次访问地址可以获取到的字节数

                                              = 512 KB × 2 = 1024 KB = 1MB

③ 控制线

访问某个地址的时候,是读数据还是写数据,如果是读数据,先读高字节还是先读低字节,这些都由控制线完成。

  • CS1、CS2:有些系统可能会有多片SRAM,使用哪一片由 CSx 决定
  • OE:输出使能。低电平有效,主控从SRAM 读取数据
  • WE:写使能。低电平有效,主控向SRAM 写数据
  • UB:读取高字节数据
  • LB:读取低字节数据

2、SDRAM

SRAM 的缺点是成本高、容量小,实际上对于内存的需求越来越高,需要大内存的解决方案,最终 SDRAM 应运而生。SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器,既然是“同步”,那就说明需要时钟线;“动态” 表示不断刷新来保证数据不会丢失。SDRAM 和 SRAM 的区别在于:

  • 引入了时钟线,同步刷新数据
  • 多个 BANK,降低地址冲突,提升内存的的访问效率
  • 每个 BANK 中通过行、列寻址

去哪个BANK的哪个地址,访问多少数据,读数据还是写数据。下面是一个16位宽、32MB的SDRAM,速度为133MHz、166MHz 或 200MHz

④ BANK 选择线

单一的 BANK 会带来严重的寻址冲 突,减低内存访问效率。因此,才有了现在的多个BANK,但是具体要到哪个BANK中获取数据,取决于BANK选择线BS0、BS1

③ 地址线(A0~A12)

SDRAM 是通过行列来寻址的,行地址和列地址由同一根线控制,SDRAM 如何知晓当前收到的地址是行地址还是列地址呢?这就需要依赖图中 ① 包含的 RAS、CAS 了,RAS 是行选通信号,低电平有效,如果 RAS 是低电平,说明此时A10是行地址;如果 CAS 是低电平,说明此时A10 是列地址

以 W9825G6KH 的型号为例,A0~A8 是列地址,一共 9 位;A0~A12 是行地址,一共 13 位。因此寻址范围:2^9 × 2^13 = 4MB。根据图中 ⑥ 包含的可以看出,数据宽为 16 bit,也就是说,每次可以访问 2 字节。

因此,一个 BANK 的大小 = 4MB × 2 = 8 MB

② A10(地址选择线)

A10 除了作为地址线的一员外,还控制着“预充电”,“预充电” 指的是关闭现在的行,准备打开新行的操作,这样就可以准备访问一个新的地址了。

⑤ BANK 分块

单一的 BANK 会带来严重的寻址冲 突,减低内存访问效率。因此,才有了现在的多个BANK,每个SDRAM 的数据手册中都会指明有多少个BANK,图中展示的SDRAM 有4个BANK。

从地址线了解到一个 BANK 是8MB,那么SDRAM的大小 = 4 × 8MB = 32 MB

① 控制线

和SRAM类似,这里仅介绍和 SRAM 不同的地方

  • CLK:时钟线
  • CKE:时钟使能
  • RAS:行选通信号,低电平有效。低电平时,说明 A0~A12 发送的是行地址
  • CAS:列选通信号,低电平有效。低电平时,说明 A0~A8 发送的是列地址

3、DDR SDRAM

SDRAM 解决了SRAM 内存小的问题,但是人们产生了新的需求,那就是速度不够快,因此就有了现在的 DDR。DDR(Double Data Rate SDRAM),双倍速率SDRAM,这里的“双倍”来自于时钟的改进,SDRAM 在一个时钟周期传输一次数据,但是DDR在一个时钟周期传输两次(上升沿和下降沿各传递一次数据)。

原本的 SDRAM 传输速度是 133~200 MT/s,MT/s 表示每秒多少兆次数据传输。DDR 的传输速度就变为了 266~400 MT/s。

4、DDR2 / DDR3 / DDR3L

DDR 的传输速度进一步提升,就有了现在的DDR2、DDR3,甚至DDR4。DDR2 在DDR 的基础上进一步增加预取(相当于一个时钟周期传输4次数据)

  • DDR2:533~800 MT/s 
  • DDR3:1066~1600 MT/s

为了适应不同场景,DDR3 衍生出了许多不同型号,如 LPDDR3、DDR3L。他们之间的区别在于工作电压。

  • DDR3:工作电压 1.5 V (台式机)
  • LPDDR3:工作电压 1.2 V
  • DDR3L:工作电压 1.35 V (一般手机、嵌入式、笔记本)

猜你喜欢

转载自blog.csdn.net/challenglistic/article/details/131456397
ddr
今日推荐