2. Flash物理特性:编程、擦除与读操作原理

车载MCU中广泛使用的NOR Flash和NAND Flash,其底层物理单元均为浮栅晶体管(Floating Gate Transistor)。理解编程(Program)、擦除(Erase)和读操作(Read)的物理机制,是设计可靠Flash驱动与磨损均衡算法的基石。本章深入剖析这三类操作的原理,并重点阐述写操作对电压和时序的严苛要求。

2.1 浮栅晶体管基础结构

Flash存储单元的核心是浮栅晶体管,它在传统MOSFET的控制栅(Control Gate)与沟道之间增加了一层由多晶硅构成的浮栅(Floating Gate),该浮栅被绝缘层(SiO₂)完全包裹,能够长期存储电荷。

关键物理特性:浮栅中存储的电子数量决定了晶体管的阈值电压(Vth),从而区分“0”和“1”两种存储状态。无电子(或少量电子)为擦除态(通常为“1”),有大量电子为编程态(通常为“0”)。
浮栅晶体管结构与存储状态 浮栅晶体管结构及编程/擦除状态 擦除态(逻辑“1”) 源极 漏极 导电沟道 浮栅(无电子) 控制栅 Vth 低 → 读电流大 → 读出“1” 编程态(逻辑“0”) 源极 漏极 沟道关闭 浮栅(有电子) 控制栅 Vth 高 → 读电流小 → 读出“0” 编程

2.2 编程(Program)原理

编程操作的本质是向浮栅注入高能电子,使阈值电压升高,单元进入“0”状态。车载Flash普遍采用沟道热电子注入(CHEI, Channel Hot Electron Injection)机制。

2.2.1 编程物理过程

  1. 沟道开启:在控制栅施加高电压(Vpp,通常为8~10V),在漏极施加中等电压(Vd,约4~6V),源极接地。晶体管导通,形成从源极到漏极的沟道电流。
  2. 热电子产生:电子在漏极附近的高电场区(夹断区)被加速,获得足够动能,成为“热电子”。
  3. 注入浮栅:控制栅的高电压在浮栅上感应出正电势,吸引热电子穿越氧化层势垒(约3.2eV),注入浮栅。
  4. 阈值升高:浮栅中积累的负电荷抵消控制栅电场,使晶体管阈值电压(Vth)从约1V升高至5~7V。
车载设计要点:编程操作是逐字节(Byte)或逐字(Word)进行的,但实际物理写入以Page为单位(通常256B~2KB)。驱动层必须提供Page缓冲机制,避免部分编程导致数据损坏。

2.3 擦除(Erase)原理

擦除操作将浮栅中的电子拉回衬底,使阈值电压降低,单元恢复“1”状态。车载Flash主要使用Fowler-Nordheim(FN)隧穿效应,以降低功耗和衬底损伤。

2.3.1 擦除物理过程

  1. 强电场建立:在控制栅施加负高压(Vneg,通常-8~-10V),或在衬底(P-well)施加正高压(Vpp,约8~10V),源极和漏极浮空(Floating)。
  2. FN隧穿:浮栅与沟道之间形成强电场(>10MV/cm),电子直接隧穿通过氧化层势垒,进入衬底。
  3. 阈值恢复:浮栅电子被移除,Vth恢复至低电平(约1~2V),单元回到“1”状态。
关键约束:擦除操作必须以Sector(扇区)或Block(块)为单位进行,最小擦除单元通常为4KB~128KB。擦除时间远长于编程时间(典型值:擦除100ms~1s vs 编程10μs~200μs)。频繁擦除会加速氧化层退化,限制Flash寿命(通常1万~10万次)。

2.4 读操作原理

读操作不改变浮栅电荷,仅通过检测单元导通电流来判别状态。车载Flash读操作通常采用电流检测(Current Sensing)方式。

2.4.1 读操作流程

步骤 操作 电压条件 检测结果
1 施加读电压 控制栅:Vread(约4~5V)
漏极:Vd_read(约1V)
源极:GND
—
2 检测沟道电流 — 若Vth < Vread → 单元导通 → 大电流 → “1”
若Vth > Vread → 单元截止 → 小电流 → “0”
3 锁存输出 — Sense Amplifier将电流差转换为逻辑电平
读干扰(Read Disturb)风险:长时间对同一单元反复施加读电压,可能导致少量热电子注入浮栅,造成软编程(Soft Program)错误。车载驱动需实现读计数监控,在超过阈值后触发数据刷新(Data Refresh)。

2.5 写操作对电压和时序的要求

编程和擦除统称为“写操作”,其对电压精度和时序控制极为敏感。不满足要求将导致写入失败、数据保持力下降甚至永久性损伤。

2.5.1 电压要求

参数 编程(Program) 擦除(Erase) 说明
控制栅电压(Vcg) +8V ~ +10V -8V ~ -10V 或 衬底+8V 精度需在±5%以内,纹波<100mV
漏极电压(Vd) +4V ~ +6V 浮空(Floating) 编程时提供热电子能量
源极电压(Vs) GND 浮空(Floating) —
衬底电压(Vsub) GND +8V ~ +10V(P-well) 擦除时形成FN隧穿电场
电压上升/下降斜率 < 1V/μs < 0.5V/μs 过快的斜率会诱发击穿

2.5.2 时序要求

  • 编程脉冲宽度:典型值 1μs ~ 10μs,采用“编程-验证”迭代算法(Program & Verify),每次脉冲后读取验证,直至编程成功或达到最大重试次数(通常25次)。
  • 擦除脉冲宽度:典型值 1ms ~ 10ms,同样采用“擦除-验证”迭代,避免过度擦除(Over-erase)导致单元耗尽。
  • 电压建立时间(Settling Time):电荷泵(Charge Pump)从启动到输出稳定需 5μs ~ 20μs,在此期间禁止执行写操作。
  • 操作间隔(Recovery Time):连续编程/擦除之间需等待至少 1μs,让氧化层电场弛豫,减少累积应力。
写操作电压与时序波形 编程操作电压与时序波形(Program & Verify) 时间 (t) 电压 (V) Vcg (8~10V) Vd (4~6V) Verify Verify Verify Verify 编程脉冲 (1~10μs) 间隔 下一脉冲 编程-验证迭代:每次脉冲后读回验证,直至数据正确或达到最大重试次数

2.6 操作对比总结

特性 读(Read) 编程(Program) 擦除(Erase)
物理机制 电流检测 沟道热电子注入(CHEI) Fowler-Nordheim隧穿(FN)
操作单元 Byte / Word Byte / Word(物理Page) Sector / Block
典型时间 50~100ns 10~200μs 100ms~1s
电压应力 低(~5V) 高(8~10V) 高(8~10V,负压)
对寿命影响 极小(读干扰可忽略) 中等(氧化层局部损伤) 最大(氧化层全局退化)
错误模式 读干扰、位翻转 编程失败、过编程 擦除失败、过擦除
车载驱动设计启示:
  • 编程和擦除必须使用闭环验证(Program/Erase & Verify),不能依赖开环定时。
  • 电压建立时间和操作间隔必须在驱动层通过状态机严格管理,避免电荷泵过载。
  • 磨损均衡算法需优先考虑擦除次数,因为擦除是寿命瓶颈。
  • 读操作需监控累积读次数,触发数据刷新以防止读干扰累积错误。