嵌入式ARM系统存储器类别选型对比分析

516 阅读8分钟

1 SRARM对比DRAM

image.png image.png

2 NOR FLASH对比NANDFLASH

  • FLASH 的擦除次数都是有限的 (现在普遍是 10 万次左右),当它的使用接近寿命的时候,可能会出现写操作失败。由于 NAND 通常是整块擦写,块内有一位失效整个块就会失效,这被称为坏块,而且由于擦写过程复杂,从整体来说 NOR 块块更少,寿命更长。由于可能存在坏块,所以 FLASH 存储器需要“探测/错误更正 (EDC/ECC)”算法来确保数据的正确性。由于两种 FLASH 存储器特性的差异,NOR FLASH 一般应用在代码存储的场合,如嵌入式控制器内部的程序存储空间。而 NAND FLASH 一般应用在大数据量存储的场合,包括 SD 卡、U 盘以及固态硬盘等,都是 NAND FLASH 类型的。
  • 由于 NOR 的地址线和数据线分开,它可以按“字节”读写数据,符合 CPU 的指令译码执行要求,所以假如 NOR 上存储了代码指令,CPU 给 NOR 一个地址,NOR 就能向 CPU 返回一个数据让CPU 执行,中间不需要额外的处理操作。而由于 NAND 的数据和地址线共用,只能按“块”来读写数据,假如 NAND 上存储了代码指令,CPU给NAND地址后,它无法直接返回该地址的数据,所以不符合指令译码要求。若代码存储在 NAND 上,可以把它先加载到 RAM 存储器上,再由 CPU 执行。所以在功能上可以认为 NOR 是一种断电后数据不丢失的 RAM,但它的擦除单位与 RAM 有区别,且读写速度比RAM 要慢得多。

3 SRAM 分析

  • SRAM 的全称叫做 Static Random-Access Memory,也就是静态随机存储器,这里的“静态”说的就是只要 SRAM 上电,那么 SRAM 里面的数据就会一直保存着,直到 SRAM 掉电。对于RAM 而言需要可以随机的读取任意一个地址空间内的数据,因此采用了地址线和数据线分离的方式。以这颗=IS62WV51216 这颗 SRAM 芯片为例简单的讲解一下 SRAM,这是一颗 16 位宽(数据位为 16 位)1MB 大小的 SRAM。
  • SRAM 最大的缺点就是成本高!价格高,大家可以在淘宝上搜索一下 IS62WV51216 这个仅仅只有 1MB大小的 SRAM 售价为多少,大概为 5,6 块钱。大家再搜索一下 32MB 的 SDRAM 多钱,以华邦的 W9825G6KH 为例,大概 4,5 块钱,可以看出 SDRAM 比 SRAM 容量大,但是价格更低。SRAM突出的特点就是无需刷新(SDRAM 需要刷新),读写速度快!所以 SRAM通常作为 SOC 的内部 RAM 使用或 Cache 使用,比如 STM32 内存的 RAM 或 I.MX6U 内部的OCRAM 都是 SRAM。 image.png image.png image.png

4 SDRAM 分析

  • SDRAM 全称是 Synchronous DynamicRandom Access Memory,翻译过来就是同步动态随机存储器,“同步”的意思是 SDRAM 工作需要时钟线,“动态”的意思是 SDRAM 中的数据需要不断的刷新来保证数据不会丢失, “随机”的意思就是可以读写任意地址的数据。
  • 与 SRAM 相比,SDRAM 集成度高、功耗低、成本低、适合做大容量存储,但是需要定时刷新来保证数据不会丢失。因此 SDRAM 适合用来做内存条,SRAM 适合做高速缓存或 MCU内部的 RAM。SDRAM 目前已经发展到了第四代,分别为:SDRAM、DDR SDRAM、DDR2SDRAM、DDR3 SDRAM、DDR4 SDRAM。
  • 以的华邦W9825G6KH 为例,W9825G6KH 是一款 16 位宽(数据位为 16 位)、32MB 的 SDRAM、速度一般为 133MHz、166MHz 或 200MHz image.png image.png image.png image.png image.png

image.png

  • 控制 SDRAM 需要用到一系列的命令,见表 SDRAM 命令表 。各种信号线状态组合产生不同的控制命令。 image.png
  • SDRAM 的初始化流程 image.png
(1) 给 SDRAM 上电,并提供稳定的时钟,至少 100us;
(2) 发送“空操作”(NOP) 命令;
(3) 发送“预充电”(PRECHARGE) 命令,控制所有 Bank 进行预充电,并等待 t RP 时间,t RP 表示
预充电与其它命令之间的延迟;
(4) 发送至少 2 个“自动刷新”(AUTO REFRESH) 命令,每个命令后需等待 t RFC 时间,t RFC 表示
自动刷新时间;
(5) 发送“加载模式寄存器”(LOAD MODE REGISTER) 命令,配置 SDRAM 的工作参数,并等待
t MRD 时间,t MRD 表示加载模式寄存器命令与行有行或刷新命令之间的延迟;
(6) 初始化流程完毕,可以开始读写数据。
其中 t RP 、t RFC 、t MRD 等时间参数跟具体的 SDRAM 有关,可查阅其数据手册获知,STM32 FMC
访问时配置需要这些参数
  • SDRAM 的读写流程

image.png

(1) 发送“行有效”(ACTIVE) 命令,发送命令的同时包含行地址和 Bank 地址,然后等待 t RCD 时
间,t RCD 表示行有效命令与读/写命令之间的延迟;
(2) 发送“读/写”(READ/WRITE) 命令,在发送命令的同时发送列地址,完成寻址的地址输入。对
于读命令,根据模式寄存器的 CL 定义,延迟 CL 个时钟周期后,SDRAM 的数据线 DQ 才输出
有效数据,而写命令是没有 CL 延迟的,主机在发送写命令的同时就可以把要写入的数据用 DQ
输入到 SDRAM 中,这是读命令与写命令的时序最主要的区别。图中的读/写命令都通过地址线
A10 控制自动预充电,而 SDRAM 接收到带预充电要求的读/写命令后,并不会立即预充电,而
是等待 t WR 时间才开始,t WR 表示写命令与预充电之间的延迟;
(3) 执行“预充电”(auto precharge) 命令后,需要等待 t RP 时间,t RP 表示预充电与其它命令之间的
延迟;
(4) 图中的标号处的 t RAS ,表示自刷新周期,即在前一个“行有效”与“预充电”命令之间的时间;
(5) 发送第二次“行有效”(ACTIVE) 命令准备读写下一个数据,在图中的标号处的 t RC ,表示两
个行有效命令或两个刷新命令之间的延迟。其中 t RCD 、t WR 、t RP 、t RAS 
以及 t RC 等时间参数跟具体的 SDRAM 有关,可查阅其数据手册获知,STM32 FMC 访问时
配置需要这些参数。

5 DDR SDRAM分析

  • DDR 内存是 SDRAM 的升级版本,SDRAM 分为 SDR SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM、DDR4 SDRAM。可以看出 DDR 本质上还是SDRAM,只是随着技术的不断发展,DDR 也在不断的更新换代。
  • 先来看一下 DDR,也就是DDR1,人们对于速度的追求是永无止境的,当发现 SDRAM 的速度不够快的时候人们就在思考如何提高 SDRAM 的速度,DDR SDRAM 由此诞生。
  • DDR 全称是 Double Data Rate SDRAM,也就是双倍速率 SDRAM,看名字就知道 DDR 的速率(数据传输速率)比 SDRAM 高 1 倍!这 1 倍的速度不是简简单单的将 CLK 提高 1 倍,SDRAM 在一个 CLK 周期传输一次数据,DDR 在一个 CLK 周期传输两次数据,也就是在上升沿和下降沿各传输一次数据,这个概念叫做预取(prefetch),相当于 DDR 的预取为 2bit,因此DDR 的速度直接加倍!比如 SDRAM 速度一般是 133-200MHz,对应的传输速度就是133-200MT/s,在描述 DDR 速度的时候一般都使用 MT/s,也就是每秒多少兆次数据传输。133MT/S 就是每秒 133M 次数据传输,MT/s 描述的是单位时间内传输速率。同样 133-200MHz的频率,DDR 的传输速度就变为了 266~400MT/S,所以大家常说的 DDR266、DDR400 就是这么来的。
  • DDR2 在 DDR 基础上进一步增加预取(prefetch),增加到了 4bit,相当于比 DDR 多读取一倍的数据,因此 DDR2 的数据传输速率就是 533-800MT/s,这个也就是大家常说的 DDR2 533、DDR2 800。当然了,DDR2 还有其他速度,这里只是说最常见的几种。
  • DDR3 在 DDR2 的基础上将预取(prefetch)提高到 8bit,因此又获得了比 DDR2 高一倍的传输速率,因此在总线时钟同样为 266-400MHz 的情况下,DDR3 的传输速率就是 1066~1600MT/S。
  • I.MX6U 的 MMDC 外设用于连接 DDR,支持 LPDDR2、DDR3、DDR3L,最高支持 16 位数据位宽。总线速度为 400MHz(实际是 396MHz),数据传输速率最大为 800MT/S。
  • LPDDR3、DDR3 和 DDR3L 的区别,这三个都是 DDR3,但是区别主要在于工作电压,LPDDR3叫做低功耗 DDR3,工作电压为 1.2V。DDR3 叫做标压 DDR3,工作电压为 1.5V,一般台式内存条都是 DDR3。DDR3L 是低压 DDR3,工作电压为 1.35V,一般手机、嵌入式、笔记本等都使用 DDR3L。
  • NT5CC256M16EP-EK 是一款容量为 4Gb,也就是 512MB 大小、16 位宽、1.35V、传输速率为 1866MT/S 的 DDR3L 芯片。 image.png image.png image.png image.png