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在架构上的核心区别:

NOR Flash 架构 字线 位线 每个单元独立连接位线 可随机访问,读速度快 NAND Flash 架构 选择管 单元串联成串,共享位线 按页读写,容量大成本低

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