07-半导体存储器.md 9.3 KB


tags: [数电] type: note source_type: reconstructed created: 2026-08-15 updated: 2026-08-18

aliases: [存储器, RAM, ROM, Flash, DRAM, SRAM]

半导体存储器

[!note] 对象层 学完这篇,你能判断

  1. SRAM / DRAM / Flash / EEPROM 谁掉电丢数据、谁不丢;
  2. 单片机外扩存储时"字扩展"和"位扩展"怎么接线;
  3. 手册上 512K × 16 的容量到底多少字节;
  4. 为什么 Flash 有"擦除寿命"而 SRAM 没有。

用生活理解:存储器像"仓库"。SRAM 是"每个格子有人看着"(6 个晶体管守 1 位,快但贵);DRAM 是"每格一个水桶会漏水"(电容漏电要不断刷新,便宜容量大);Flash 是"可反复写字的黑板"(擦写次数有限);ROM 是"印上去的证书"(出厂固定)。断电后:RAM 全忘(易失),ROM/Flash 不忘(非易失)。


一、一句话本质

半导体存储器分易失(RAM:SRAM/DRAM,靠电源维持)与非易失(ROM 家族:PROM/EPROM/EEPROM/Flash,靠电荷存储)两大阵营;容量扩展用位扩展(加宽数据)与字扩展(加深地址)两种接线。


二、速查表(公式与结论)

2.1 存储器分类

类型 掉电保持 写入方式 特点/用途
SRAM ❌ 丢失 随时读/写 快、贵、无刷新;CPU 缓存、MCU 内部 RAM
DRAM ❌ 丢失(需刷新) 随时读/写 慢、便宜、容量大;电脑内存条
ROM(掩膜) 出厂固定 量产固件
PROM 一次性烧写 已淘汰
EPROM UV 紫外线擦除重写 已淘汰(带透明窗)
EEPROM 电擦写、按字节 掉电存参数,如 AT24C02(I2C)
Flash(NOR/NAND) 电擦写、按块 代码存储主流:MCU 内部 Flash、U 盘、SD 卡

2.2 容量表示

  • 512K × 16 = 512K 个地址 × 每个 16 位 = 1 MB 字节(512×2=1024KB);
  • 换算:字长 × 字数 / 8 = 字节数
  • 地址线数 = log₂(字数):512K = 2¹⁹ → 19 根地址线。

2.3 扩展接线法

扩展类型 目的 接线 例子
位扩展 加宽数据(增加片数同地址) 各片地址线并联,数据线各取不同位 8 片 1K×11K×8
字扩展 加深地址(增加片数同数据) 各片数据线并联,高位地址经译码选片(CS) 4 片 1K×84K×8

核心:位扩展看数据线、字扩展看片选(地址译码)

2.4 关键参数

参数 含义 影响
存取时间 tACC 给出地址到数据稳定的时间 与 CPU 时序匹配,不够就插等待(WS)
刷新周期(DRAM) 7.8μs~64ms 内必须刷新 刷新逻辑复杂化
擦写寿命(Flash/EEPROM) 典型 10⁴~10⁶ 次 频繁写参数要磨损均衡
功耗/待机 待机电流 电池设备的关键指标

三、判别规则

  1. 选型:要掉电保存 → EEPROM/Flash;要高速缓存 → SRAM;要超大容量便宜 → DRAM。
  2. 看数据手册容量字数 × 位数,先除 8 再乘 → 字节数。
  3. 扩展判方向:数据位不够 → 位扩展(并联地址);容量不够 → 字扩展(译码片选)。
  4. 代码还是数据:MCU 里程序放 NOR Flash(可随机读,可 XIP),U 盘大容量数据放 NAND Flash(页读写,需控制器)。

四、易混对比

易混点 A 易混点 B 关键区别
SRAM DRAM SRAM 六管、不需刷新;DRAM 一管一电容、需周期刷新
EEPROM Flash EEPROM 按字节擦写、慢、寿命长;Flash 按块擦写、快、寿命短
NOR Flash NAND Flash NOR 可随机读(XIP)、容量小;NAND 页式读写、容量大
位扩展 字扩展 位扩展所有片同时工作(数据拼接);字扩展一次只有一片工作(片选)

五、典型例题(先想再翻)

  1. 容量换算:某 SRAM 标 256K × 8,多少字节?地址线几根? > 答:256K×8 = 256KB;256K = 2¹⁸ → 18 根地址线、8 根数据线。
  2. 扩展设计:用 64K×8 的芯片组成 256K×8 存储器。 > 答:字扩展 4 片。64K=2¹⁶,用 16 根低地址线接各片,高 2 位地址经 74LS138 译码产生 4 个片选,数据线并联。
  3. 陷阱题:同学说"EEPROM 擦写次数比 Flash 少,所以保存程序用 EEPROM"。 > 答:错。EEPROM 寿命更长但容量小、按字节慢;存程序用 NOR Flash(随机读+大容量)。EEPROM 适合存配置参数。

六、完整知识点

6.1 SRAM 单元(六管)

6 个 MOS 管构成一个交叉耦合锁存器 + 两个存取管。速度快、无刷新,但单元面积大 → 成本高。典型:Cache、MCU 片内 RAM。

6.2 DRAM 单元(一管一电容)

电容存电荷表示 1/0,电荷会漏 → 必须刷新(读-重写周期)。行地址/列地址分时复用(地址多路复用)降低引脚数。容量大、便宜 → 内存条。

6.3 Flash 的原理与寿命

浮栅晶体管(浮栅上电荷决定阈值)→ 通过隧穿写入/擦除。擦除必须按块(整块先变 1 再编程),所以"改写一个字节"实际要做读-改-写。寿命源于隧穿对氧化层的损伤 → 磨损均衡算法(FTL)用于 SSD/U 盘。

6.4 用 ROM 实现组合逻辑函数

ROM = 地址译码器 + 或阵列。地址是输入,数据是输出 → 本质就是真值表查表:任意组合逻辑函数都能用 ROM 实现(查表 LUT 思想,也是 FPGA 的底层原理)。

6.5 与 CPU 的时序配合

读周期:CPU 发地址 → tACC 后读数据。若存储器慢,CPU 插入等待周期(WSC)或降频。画原理图(外扩存储)时必须核对时序参数表。

6.6 用寄存器实现一块内存(Digital 动手,尚硅谷补充)

为理解内存的本质,尚硅谷先用 8 个 16bit 寄存器拼出一块 8×16 内存

  • :数据总线 Din 并联到 8 个寄存器,3bit 地址经 3-8 译码器生成 en 信号,只打开目标寄存器 → 写入;
  • 8 选 1 复用器(选择端=地址)把对应寄存器的值送到 Dout;
  • 控制信号:str(写允许)、ld(输出允许)。

这就是"寄存器堆式内存"的骨架:译码器选地址、复用器选输出(对应本课 2.3 字扩展的片选思想)。课件明确说"现实中的内存不可能用寄存器这种高成本电路"→ 用 SRAM/DRAM(见 2.1)。

从"数据存储"到"程序存储"再到"合并单内存"([[11-从零搭建计算机(下)-控制与指令|数电 11]] 的铺垫):

  1. 外部数据存储:EEPROM 预编辑数据 + PC 计数器(寄存器+加法器,每时钟 +1)逐条取数给 ALU;
  2. 指令存储:ALU 的 sel 控制信号就是"指令"——单独加一块 EEPROM 存 sel 序列(加法/减法),与数据 RAM 分开 → 双内存结构
  3. 合并为一个 RAM(冯·诺依曼:只有一块内存,指令和数据同存):执行分成取指/执行两个时钟周期(state 用 D 触发器在 0/1 间切换),指令寄存器暂存上一周期取到的指令;指令格式为 操作码(opcode) + 操作数(addr)

与教材的关系:本课"字扩展/位扩展"讲的是如何把多片存储器接成大内存;尚硅谷补充的是用寄存器+译码器/复用器从零实现一块内存——两者互补,同一存储模型的两面。


七、与 PCB 画图的关联

  • STM32 外扩 SRAM(FSMC 总线)、EEPROM(AT24C02,I2C)、Flash(W25Qxx,SPI)是原理图常见外设(对应 [[PCB学习笔记/10-项目实战-USB拓展坞|PCB 笔记 10]] 与 STM32 学习笔记 SPI)。
  • 片选译码(74LS138)的地址分配 → 存储映射表(哪段地址选哪个芯片)。
  • 去耦电容在存储芯片电源脚密集布置(高速切换电流)。
  • 上电时序与复位 → 存储初始化(ROM 代码搬移到 RAM 运行)。

来源:阎石《数字电子技术基础》第 7 章(半导体存储器);尚硅谷《从零搭建计算机》第 3.3~3.7 节(内存与指令存储)