4、ROM与Flash:掩膜ROM、PROM、EPROM、EEPROM、NAND Flash与NOR Flash
这一章我们来聊聊非易失性存储器的大家族。说白了,就是那些断电后数据不会丢的存储器件。从最早的掩膜ROM,到如今无处不在的Flash,这个家族经历了半个多世纪的演变。我入行那会儿,还在跟EPROM打交道,用紫外线灯擦除数据,那场景现在想想还挺有仪式感的。
4.1 掩膜ROM:最原始的只读存储器
掩膜ROM,也叫MROM。它的数据在芯片制造时就固定死了,用户没法改。你想想看,这就像印刷好的书,内容出厂即定。
工作原理:
- 制造时通过光刻掩膜版,在存储单元中决定是否连接晶体管
- 有晶体管代表存储"0",没有代表存储"1"(或反过来)
- 读出时,字线选通,位线上检测是否有电流
关键特点:
- 成本极低:大批量生产时,每颗芯片的成本可以做到几分钱
- 可靠性高:物理结构决定数据,几乎不可能出错
- 不可更改:一旦流片,数据就锁死了
我在一个消费电子项目里用过掩膜ROM,用来存储字库。当时量很大,几百万颗,算下来比用Flash省了一大笔钱。但前提是——字库绝对不能改。嗯,这里要注意,如果你的产品还在迭代阶段,千万别选MROM,否则改一次就是重新流片,时间和金钱都扛不住。
4.2 PROM:可编程一次
PROM允许用户自己写一次数据。它的存储单元里有个熔丝或反熔丝结构。
编程原理:
- 熔丝型:出厂时所有熔丝都是连通的(代表"1")。编程时,通过大电流把不需要的熔丝烧断(变成"0")
- 反熔丝型:出厂时是断开的,编程时施加高压使其击穿导通
注意:PROM只能编程一次,烧错了就报废。我见过有同事在批量编程时,因为电压设置高了0.5V,一整盘芯片全废了。所以编程参数一定要反复确认。
4.3 EPROM:可擦除可编程
EPROM的出现是个大进步。它用浮栅晶体管存储电荷,数据可以保持10年以上。擦除时需要用紫外线照射芯片上的石英窗口。
时序特点:
- 读操作:跟SRAM类似,有地址建立时间、片选到输出延迟
- 编程操作:需要施加12.5V左右的高压,编程脉冲宽度通常为50ms
- 擦除操作:紫外线照射15-30分钟
经验之谈:EPROM的编程电压很关键。我曾经遇到过一批芯片,编程后读出来数据总是不对。查了半天,发现是编程器提供的12.5V电压纹波太大,导致浮栅充电不足。后来加了滤波电容,问题就解决了。
4.4 EEPROM:电可擦除
EEPROM终于摆脱了紫外线灯。它通过隧道效应,用电信号来擦除和编程。而且它可以按字节擦写,非常灵活。
读写时序:
- 读操作:跟普通ROM一样,直接地址访问
- 写操作:需要先擦除再编程,内部自动完成
- 写周期:通常5-10ms,期间芯片不响应其他操作
避坑指南:我曾经在一个产品里用EEPROM存配置参数。代码里没做写完成检测,结果系统频繁掉电时,数据写到一半就丢了。后来加上了轮询写完成标志位的逻辑,才彻底解决。记住,EEPROM写操作一定要等它完成。
4.5 NOR Flash与NAND Flash
这两种Flash是目前的主流。它们的存储单元都是浮栅晶体管,但架构完全不同。
NOR Flash:
- 每个存储单元都并联在位线上,可以随机访问
- 读速度快,适合代码执行(XIP,就地执行)
- 擦除和写入速度慢,容量通常较小(几MB到几百MB)
- 时序:读操作类似SRAM,有CE#、OE#、WE#控制信号
NAND Flash:
- 存储单元串联成串,按页读写,按块擦除
- 读速度慢(需要先读入页缓存),但写入和擦除快
- 容量大(几GB到几TB),成本低
- 时序:通过命令、地址、数据复用的IO口操作
下面这张图展示了NOR和NAND在架构上的核心区别:
4.6 时序对比与选型建议
在实际项目中,怎么选?我个人的经验是这样的:
| 参数 | NOR Flash | NAND Flash |
|---|---|---|
| 读延迟 | ~70ns(随机访问) | ~25μs(页读取时间) |
| 写速度 | ~0.5MB/s | ~5MB/s |
| 擦除速度 | ~0.1s/块 | ~2ms/块 |
| 坏块管理 | 不需要 | 必须要有 |
| 典型应用 | 代码存储、XIP | 大容量数据存储 |
选型建议:
- 如果你的代码需要直接在Flash里运行(XIP),选NOR Flash
- 如果你要存几百MB的视频或文件,选NAND Flash
- 如果对可靠性要求极高(比如航天),可以考虑NOR或EEPROM
- 如果成本敏感且量大,掩膜ROM在某些场景下仍有优势
我记得有个项目,客户要求系统上电后50ms内必须启动。我们用了NOR Flash做XIP,代码直接从Flash执行,省去了拷贝到RAM的时间。如果当时用了NAND,光是把代码加载到RAM就要几十毫秒,根本满足不了要求。
好了,这一章的内容就到这里。ROM和Flash家族虽然种类繁多,但只要抓住核心区别——能不能改、怎么改、读写速度如何——选型就不难了。
公众号:蓝海资料掘金营,微信deep3321