DDR3学习(一)

I.MX6U-ALPHA开发板上带有一个256MB/512MB的DDR3内存芯片,一般Cortex-A芯片自带的RAM很小,比如I.MX6U只有128KB 的 OCRAM。
如果要运行Linux的话完全不够用,所以需要外接一片RAM芯片,I.MX6U 支持 LPDDR2、LPDDR3/DDR3,I.MX6U-ALPHA开发板上选择的是 DDR3。

RAM和ROM

RAM:随机存储器,可以随时进行读写操作,速度很快,掉点以后数据会丢失。比如内存条、SRAM、DRAM、DDR等都是RAM。RAM一般用来保存程序数据、中间结果。
比如我们在程序中定义了一个变量 a,然后对这个 a 进行读写操作,示例代码如下:

int a;
a = 10;

a是一个变量,我们需要很方便地对这个变量进行读写操作,方法就是直接“a”进行读写操作,不需要在乎具体的读写过程。我们可以随意的对 RAM 中任何地址的数据进行读写操作,非常方便。

ROM:只读存储器。
比如我们买手机,通常会告诉你这个手机是 4+64 或 6+128 配置,说的就是RAM为4GB或6GB,ROM为64G或128GB。
但是这个 ROM 是 Flash,比如 EMMC 或 UFS 存储器,因为历史原因,很多人还是将Flash 叫做 ROM。但是 EMMC 和 UFS,甚至是 NAND Flash,这些都是可以进行写操作的!

只是写起来比较麻烦,要进行先擦除,然后再发送要写的地址或扇区,最后才是写入的数据。

相比于RAM,向ROM或者Flash里面写入数据要复杂很多,因为速度会变慢,但是ROM和Flash可以将容量做很大,而且掉电后数据不会丢失,适合用来存储资料,比如音乐、图片、视频信息等。

综上所述,RAM速度快,可以直接和CPU进行通信,但是掉点以后数据会丢失,不容易做大。ROM速度虽然慢,但是容量
大、适合存储数据。

对于正点原子的I.MX6U-ALPHA开发板而言,DDR3就是RAM,NANF Flash或EMMC就是ROM。

SRAM简介

static radom access memory,静态随机存储器,这里的“静态”是指只要SRAM上电,那么SRAM里面的数据就会一直保存着,直到SRAM掉电。对于RAM而言需要可以随机的读取任意一个地址空间内的数据,因此采用了地址线和数据线分离的方式。

在这里插入图片描述

  1. 地址线,一共A0~A18,也就是19根地址线,因此可访问的地址大小就是2^19=524288=512KB。
  2. 数据线,16根数据线,一次访问可以访问16bit的数据,也就是2个字节。因此就有高字节和低字节数据之分,其中 IO0~IO7 是低字节数据,IO8~IO15 是高字节数据。
  3. 控制线,SRAM要工作还需要一堆的控制线,CS2和CS1是片选信号,低电平有效,在一个系统中可能会有多片SRAM,这时候就需要CS信号来选择当前使用哪片SRAM。此外,有的SRAM内部其实是由两片SRAM拼接起来的,因此就会提供两个片选信号。
    OE:输出使能信号,低电平有效,主控从SRAM读取数据。
    WE:写使能信号,低电平有效,主控向SRAM写数据。
    UB:低电平时访问高字节。
    LB:低电平时访问低字节。

SRAM价格高,SDRAM比SRAM容量大,但是价格更低。SRAM突出的特点就是无需刷新,读写速度快,所以SRAM通常作为SOC的内容RAM或Cache使用。比如 STM32 内存的 RAM 或 I.MX6U 内部的OCRAM 都是 SRAM。

SDRAM

Synchronous Dynamic Random Access Memory,同步动态随机存储器,“同步”的意思是SDRAM工作需要时钟线,“动态的意思”是SDRAM中的数据需要不断的刷新来保证数据不会丢失,“随机”的意思是可以读写任意地址的数据。

与SRAM相比,SDRAM集成度高,功耗低,成本低,适合做大量存储,但是需要定时刷新来保证数据不会丢失。SDRAM适合用来做内存条,SRAM适合做高速缓存或MCU内部的RAM。

在这里插入图片描述

  1. 控制线:
    CLK:时钟线,SDRAM是同步动态随机存储器,“同步”的意思是时钟,因此需要一根额外的时钟线,这和SRAM最大不同,SRAM没有时钟线。
    CKE:时钟线使能信号线。
    CS:片选信号
    RAS:行选通信号,低电平有效,SDRAM和SRAM寻址方式不同,SDRAM按照行、列来确定某个具体的存储区域。因此就有行地址和列地址之分,行地址和列地址共同复用同一组地址线,要访问某一个地址区域,必须要发送行地址和列地址,指定要访问哪一行?哪一列?RAS是行选通信号,表示要发送行地址。
    在这里插入图片描述
    CAS:列选通信号,和RAS类似,低电平有效,选中以后就可以发送列地址了。
    WE:写使能信号,低电平有效。
  2. A10地址线,不仅是地址线,A10还控制着Auto-precharge,也就是 预充电,SDRAM芯片内部会分为多个BANK,SDRAM在读写完成以后,如果要对同一个BANK中的另一行进行寻址操作就必须将原来有效的行关闭,然后发送新的行/列地址,关闭现在工作的行,准备打开新行的操作就叫做预充电。一般SDRAM都支持自动预充电功能。
  3. A0~A12 包含了行地址和列地址。不同的 SDRAM 芯
    片,根据其位宽、容量等的不同,行列地址数是不同的,这个在 SDRAM 的数据手册里面会也清楚的。比如 W9825G6KH 的 A0~A8 是列地址,一共 9 位列地址,A0~A12 是行地址,一共 13位,因此可寻址范围为:29*213=4194304B=4MB,W9825G6KH 为 16 位宽(2 个字节),因此还需要对 4MB 进行乘 2 处理,得到 4*2=8MB,但是 W9825G6KH 是一个 32MB 的 SDRAM 啊,为什么算出来只有 8MB,仅仅为实际容量的 1/4。不要急,这个就是我们接下来要讲的 BANK,8MB 只是一个 BANK 的容量,W9825G6KH 一共有 4 个 BANK。
  4. BANK选择线:BS0和BS1是BANK选择信号线,在一片SDRAM中因为技术,成本等原因,不可能做一个全容量的 BANK。而且,因为 SDRAM 的工作原理,单一的 BANK 会带来严重的寻址冲突,减低内存访问效率。为此,人们在一片 SDRAM 中分割出多块 BANK,一般都是 2 的 n 次方,比如 2,4,8 等。图 23.1.1.2 中的⑤就是 W9825G6KH 的 4 个 BANK 示意图,每个 SDRAM数据手册里面都会写清楚自己是几 BANK。前面我们已经计算出来了一个 BANK 的大小为 8MB,那么四个 BANK 的总容量就是 8MB*4=32MB。
  5. BANK区域
  6. 数据线
  7. 高低字节选择

DDR

Double Data Rate SDRAM,双倍速率SDRAM,看名字就知道 DDR 的速率(数据传输速率)比 SDRAM 高 1 倍!这 1 倍的速度不是简简单单的将 CLK 提高 1 倍,
这1倍的速度不是简简单单的将CLK提高1倍,SDRAM在一个CLK周期传输一次数据,DDR在一个CLK周期传输两次数据,也就是在上升沿和下降沿各传输一次数据,这个概念叫做预取(prefetch),相当于DDR的预取为2bit。

DDR2 在 DDR 基础上进一步增加预取(prefetch),增加到了 4bit,相当于比 DDR 多读取一倍的数据,因此 DDR2 的数据传输速率就是 533~800MT/s,这个也就是大家常说的 DDR2 533、DDR2 800。当然了,DDR2 还有其他速度,这里只是说最常见的几种。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饼干饼干圆又圆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值