只读分享解决方案文档原理方案设计📅 2026-09-21🔖 Rev 1.0✅ 长期有效
🔧解决方案&应用市场分析 -> 原理方案设计 -> 并行NAND_PPI_NAND_软件设计规范

并行NAND_PPI_NAND_软件设计规范

生成时间 2026-09-21 11:12:12 长期有效

并行 NAND Flash(Parallel NAND / PPI NAND)电路设计指南

ONFI 异步 SDR / NV-DDR / NV-DDR2 / NV-DDR3 · Toggle DDR 1.0 / 2.0 · 8-bit 与 16-bit 总线 · 硬件 ECC 与 FTL · 双电源与上电时序 · 高速 PCB Layout | 编制日期 2026-09-21 | 版本号 Rev 1.0

关于命名:Parallel NAND / 并口 NAND / PPI NAND

本文所说的 「PPI NAND」指的是并行接口的 NAND Flash(Parallel NAND),即数据总线为 8 位或 16 位并行、通过复用总线分时传输命令 / 地址 / 数据的 Raw NAND,与串行接口的 SPI NAND 相对。业界更常见的写法是 Parallel NAND并口 NANDPPI(Parallel Peripheral Interface)NAND,三者指同一种器件,本文统一称为并行 NAND。其命令与时序由 ONFI(Open NAND Flash Interface,由 Micron / Intel / Hynix / SanDisk 等推动)或 Toggle DDR(由 Samsung / Toshiba 推动)两大规范定义。

适用范围与重要前提

本指南面向把裸 NAND 颗粒(Raw NAND Die)直接挂到主控 NAND 控制器上的硬件设计,覆盖器件选型、原理图、电源、协议模式、PCB 布线、初始化流程与量产排查。不同厂商、不同工艺(SLC / MLC / TLC)、不同封装的器件在电压组合、最高时序模式、页 / 块大小、ECC 要求、tR / tPROG / tBERS 上差异很大。本文给出符合 ONFI / Toggle 通用规范的工程基线,落地前必须以实际器件 datasheet 与主控参考设计为准做二次核对。

先读这一条:选型的硬门槛

并行 NAND 是裸颗粒:主控必须自带 NAND 控制器 + 硬件 ECC(BCH 或 LDPC)+ 成熟的 FTL。若你的主控没有硬件 ECC,或者 FTL 需要自己从零写,不要选并行 NAND,请改用 eMMC / SD NAND / SPI NAND(内部已集成控制器与 FTL)。详见第 3 章。

核心结论速览

  1. 总线并行:I/O0~I/O7(8-bit)或 I/O0~I/O15(16-bit)复用命令 / 地址 / 数据,配合 CLE、ALE、CE#、RE#、WE#、WP#、R/B# 七根控制线,典型器件共 15~20 个有效信号 + 电源地。
  2. R/B# 是开漏输出,必须外部上拉到 VCCQ(常用 4.7 kΩ~10 kΩ,以器件 datasheet / ONFI 规范为准)。这是并行 NAND 与串口器件最容易被忽略的差异。
  3. 双电源硬约束:VCCQ 不得高于 VCC;上电 VCC 先于或同时于 VCCQ,断电 VCCQ 先于或同时于 VCC。
  4. 速率跨度极大:异步模式 0~5 最高约 50 MT/s;NV-DDR 200 MT/s;NV-DDR2 400 MT/s;NV-DDR3 800~1066 MT/s;Toggle DDR 1.0 约 133 MT/s,Toggle 2.0 最高 400 MT/s。8-bit × 200 MT/s 理论峰值 = 200 MB/s。
  5. 速度越快,Layout 越苛刻:异步可放宽到 ±2.5 mm 等长、走线 < 10 cm;NV-DDR2 / DDR3 需 ±0.25~0.6 mm 等长、走线 < 5 cm、50 Ω 单端 / 100 Ω 差分、完整地平面。
  6. 掉电会毁数据:编程 / 擦除过程中掉电会损坏块,必须做电压监测、落盘保护与关键数据双备份。

本系列其他指南

文档器件类型关注重点
SPI NOR 电路设计指南串行 NOR FlashQuad/QPI 提速、dummy cycles、XIP、DPD 低功耗
SPI NAND 电路设计指南串行 NAND Flash页/块管理、片内 ECC、坏块表、主机 FTL
并行NAND (PPI NAND) 电路设计指南 本文8/16 位并行 NAND宽总线时序、ECC 引擎、40+ 引脚 Layout
eMMC 电路设计指南eMMC 5.0/5.1HS200/HS400、1.8 V VCCQ、DS 选通与等长
SD NAND 电路设计指南贴片式 SD NANDSPI/SDIO 双模式、无休眠指令、VCC 负载开关断电
NAND MCP 电路设计指南多芯片合封存储多 die 与多 CE、双电源轨、HDI 扇出
并行NOR (PPI NOR) 电路设计指南并行 NOR Flash异步读时序、XIP、等待周期、总线扩展
PSRAM 电路设计指南伪静态 RAMOPI/HyperBus、刷新与延迟周期、XIP 与帧缓存
DDR2 电路设计指南DDR2 SDRAMSSTL_18、T 分支拓扑、VTT 端接、ODT
DDR3 电路设计指南DDR3 / DDR3LFly-by 拓扑、write leveling、动态 ODT
DDR4 电路设计指南DDR4 SDRAMPOD12、bank group、DBI、2D 训练
DDR5 电路设计指南DDR5 SDRAM双子通道、On-DIMM PMIC、DFE、同帧 ECC
EEPROM 电路设计指南EEPROMI²C/SPI 接口、上拉电阻与总线电容、页写与写保护

1 · 器件基础

1.1 器件定位与选型对比

并行 NAND 是最原始、成本最低、单位容量价格最优的非易失存储形态:主控直接面对 NAND 阵列,坏块管理、ECC 校正、磨损均衡、垃圾回收全部由主控侧的软硬件承担。它换取的是极低的 BOM 成本与大容量,代价是极高的开发门槛与主控依赖

图 1 并行 NAND 在存储子系统中的位置 主控 SoC / MCU NAND 控制器 硬件 ECC(BCH / LDPC) FTL:坏块 / 磨损 / GC 驱动 + 映射表 I/O0~I/O7 或 I/O0~I/O15 CLE ALE CE# WE# RE# WP# R/B#(开漏) DQS / DQS# VCC VCCQ VSS VSSQ 并行总线(ONFI / Toggle) 并行 NAND Flash ONFI / Toggle DDR SLC / MLC / TLC 页 2 KB~16 KB + spare TSOP-48 / BGA-63~152 XTX XT27G / XT27Q 系列
图 1 · 并行 NAND 在存储子系统中的位置:主控必须提供控制器、硬件 ECC 与 FTL 三层能力
读图要点

与 SPI NAND / eMMC 不同,并行 NAND 与主控之间是裸阵列接口:主控侧要补齐三层能力 —— 控制器(产生 CLE / ALE / RE# / WE# 时序)、硬件 ECC(纠错)、FTL(把"坏块、擦写寿命、映射"这些物理细节包装成逻辑块设备)。缺任何一层都无法量产。

并行 NAND vs SPI NAND vs SPI NOR vs eMMC vs SD NAND

对比项并行 NAND(本文)SPI NANDSPI NOReMMCSD NAND
典型容量1 Gb ~ 1 Tb(128 MB ~ 128 GB)512 Mb ~ 8 Gb512 Kb ~ 2 Gb4 GB ~ 256 GB128 MB ~ 64 GB
接口 / 总线8 / 16 位并行 + 7 根控制线SPI 1/2/4 线串行SPI 1/2/4/8 线串行eMMC 1/4/8-bitSDIO 1/4-bit 或 SPI
信号数(含电源)约 20~40 个约 8 个约 8 个约 12 个(BGA-153)约 8 个
典型吞吐异步 20~40 MB/s;NV-DDR2 200~400 MB/s20~50 MB/s(4 线 @ 104 MHz)50~100 MB/s(8 线 XiP)200~400 MB/s(HS400)12~25 MB/s
主控要求专用 NAND 控制器 + 硬件 ECC + FTLSPI 外设 + 硬件 ECC(部分需)任意 SPI 外设eMMC 控制器SDIO 或 SPI 外设
ECC主控必须做部分器件内置,仍需外部 ECC不需要器件内置器件内置
坏块管理主控 FTL 必须做主控 FTL 必须做不需要器件内置器件内置
开发难度很高
单位容量成本最低
掉电安全差,需系统设计差,需系统设计好(页编程快)较好较好
典型应用大批量、成本敏感、主控成熟的产品小容量、IO 受限的 MCU代码存储、XiP、参数区手机、平板、盒子穿戴、IoT、工控

1.2 常见封装与引脚定义

并行 NAND 的封装演进与容量强相关:TSOP-48 是老一代 8-bit 器件的主力(SLC / 早期 MLC),BGA 则是现代大容量器件的主流,因为引脚更多(16-bit 总线、多 CE#/R-B#、多组电源地)。

封装尺寸(mm)引脚 / 球距总线宽度典型容量与说明
BGA-246 × 824 球8-bit1 Gb~4 Gb 小容量 SLC;XTX PN27G01A/02A/04ABGITG(2.7~3.6 V)即为此封装,体积接近 SPI NAND,适合空间受限的替代设计
TSOP-4812 × 2048 脚,0.5 mm 间距8-bitSLC 与早期 MLC,1 Gb~8 Gb;引脚可见、易焊接、易飞线调试,但体积大、寄生参数大,不适合 DDR 高速模式XTX XT27G01A/02A/04ATSIGA(2.7~3.6 V,MP)与 XT27G04GTSIGA 采用此封装
BGA-639 × 11(约)63 球,0.8 mm 间距8-bit8 Gb~32 Gb;常用于 eMMC 替代前的 Raw NAND 方案,需 X 光检查
BGA-10012 × 18(约)100 球,0.8 mm 间距8 / 16-bit16 Gb~64 Gb;多组 VCCQ / VSSQ,支持 NV-DDR2
BGA-132 / BGA-15212 × 18 ~ 14 × 18132 / 152 球,0.8 mm(部分 0.65 mm)8 / 16-bit64 Gb~1 Tb;多 CE# / 多 R/B#(多 target)、差分 DQS、多组电源,支持 NV-DDR3 / Toggle 2.0
LGA / TSOP-Other视型号8-bit少量厂商提供 LGA 封装,pin order 与 TSOP 不兼容,需逐型号核对
建库前必读

并行 NAND 没有"通用封装"。即使是同为 TSOP-48 的两个型号,其 NC 脚位置、R/B# 数量、VCCQ 引脚数也可能不同;BGA 封装的 pin map 更是逐型号唯一。原理图建库时必须逐一对照该型号的 datasheet 引脚图(Pin Assignment),切勿直接套用其他型号或其他厂商的封装。这是并行 NAND 项目最容易翻车的地方之一。

1.3 信号定义表

并行 NAND 的信号可以分成四组:复用数据总线命令 / 地址锁存片选与读写控制状态与时钟,外加两组电源。

信号方向有效电平说明与设计要点
I/O0~I/O7
(16-bit:I/O0~I/O15)
双向命令 / 地址 / 数据三重复用总线。由 CLE / ALE 决定当前总线上的内容:CLE=1 时为命令,ALE=1 时为地址,两者皆 0 时为数据。16-bit 器件用 I/O0~I/O15,吞吐翻倍但引脚也翻倍
CLE输入高有效Command Latch Enable。CLE 为高时,WE# 上升沿把总线上的字节锁存为命令
ALE输入高有效Address Latch Enable。ALE 为高时,WE# 上升沿把总线上的字节锁存为地址(列地址 + 行地址,多周期)
CE#输入低有效Chip Enable。片选。低电平选中该 target;器件内部操作(读 / 编程 / 擦除)一旦启动,即使 CE# 变高也不会中止。建议外部上拉,防止上电 / 复位期间浮空误选中
RE#输入低有效Read Enable。读使能。异步模式下每个 RE# 下降沿(或上升沿,看器件)输出一个字节;DDR 模式下 RE# / RE_c 构成差分读时钟建议上拉使其默认无效(高),高速时需串联端接
WE#输入低有效Write Enable。写使能。WE# 上升沿锁存命令 / 地址 / 数据。建议上拉使其默认无效(高)
WP#输入低有效Write Protect。硬件写保护。拉低时禁止编程 / 擦除(不阻止读)。不用时应上拉(即不保护);若需要硬件保护,接主控 GPIO 或拨码开关
R/B#输出(开漏)低 = 忙Ready / Busy。开漏输出,必须外部上拉到 VCCQ(常用 4.7 kΩ~10 kΩ,以器件 datasheet / ONFI 规范为准)。低电平表示器件正在编程 / 擦除 / 读阵列;上拉后高电平表示就绪。多 CE# 器件有多个 R/B#(R/B1#、R/B2#…)
DQS / DQS#双向Data Strobe。源同步数据选通,仅 DDR 模式使用。ONFI NV-DDR2/3 使用 DQS / DQS# 差分对;Toggle DDR 使用 DQS / DQS# 差分对。异步模式下该引脚通常为 NC 或需按 datasheet 处理
RE_c(RE 互补)输入ONFI NV-DDR2 / DDR3 中 RE# 的差分互补端,与 RE# 构成差分读时钟对
VCC电源NAND 核心(阵列)电源。常见 3.3 V 或 1.8 V(依器件)。VCCQ 不得高于 VCC
VCCQ电源I/O 接口电源,决定 IO 电平。现代器件多为 1.8 V,早期器件有 3.3 V。上拉电阻(尤其 R/B#)上拉到 VCCQ。上电不得早于 VCC,掉电不得晚于 VCC
VSS核心地。BGA 封装有多个 VSS 球,需全部良好接地
VSSQI/O 地(信号回流地)。多球设计,需全部良好接地并紧邻信号回流路径
NC / DNU未连接或禁止连接脚。按 datasheet 处理,不要随意接地或上拉;部分大容量 BGA 的 NC 脚在后续版本可能变为有效信号
R/B# 开漏输出 —— 最常犯的硬件错误

R/B# 是开漏(Open-Drain)输出,器件内部只能把它拉低、不能主动驱动为高。必须外部上拉到 VCCQ,否则主控永远读到"忙",初始化第一步(等待 R/B# 变高)就卡死。常用 4.7 kΩ~10 kΩ;上拉到 VCCQ 而非 VCC;多 target 器件每个 R/B# 都要独立上拉。高速或大容性负载时可适当减小阻值,但以器件 datasheet / ONFI 规范为准

1.4 关键电气参数

参数符号最小值典型值最大值备注
核心电源电压VCC2.7 V / 1.7 V3.3 V 或 1.8 V3.6 V / 1.95 V依器件,见 datasheet
IO 电源电压VCCQ1.7 V / 2.7 V1.8 V(现代)1.95 V / 3.6 VVCCQ ≤ VCC
电源纹波Vripple100 mVp-p建议 ≤ 50 mV
读工作电流ICC-R20 ~ 40 mA50 mA连续页读
编程 / 擦除电流ICC-P/E30 ~ 60 mA80 mA电荷泵工作期间
待机电流ICC-SB10 ~ 100 µA200 µACE# 无效、无操作
断电后电流Ioff< 1 µA负载开关切断 VCC / VCCQ
输入高电平VIH0.7×VCCQVCCQ+0.3
输入低电平VIL−0.30.3×VCCQ
页读时间tR25 ~ 70 µs100 µs阵列读到数据寄存器
页编程时间tPROG200 µs ~ 1.5 ms按器件SLC 快、TLC 慢
块擦除时间tBERS2 ~ 10 ms按器件
上电到首条命令tPU1 ms5 ms建议留 5~10 ms
Reset 后就绪时间tRST5 / 10 / 50 ms编程 / 擦除 / 读中复位分别取不同上限

注:以上为通用参考量级,实际以器件 datasheet 为准。VIH / VIL 取值随 VCCQ 电平按比例换算。

2 · 协议与工作模式

并行 NAND 有两大协议阵营:ONFI(异步 SDR + 源同步 NV-DDR 系列)与 Toggle DDR(源同步 DDR)。二者命令集大部分兼容,但时序与训练流程不同,主控必须明确支持对应协议。

2.1 ONFI 异步 SDR(模式 0~5)

异步模式是上电后的默认模式,也是最兼容、最宽松的模式:没有时钟,所有操作由 CE# / CLE / ALE / WE# / RE# 的电平与边沿组合驱动,数据速率由 RE# 的翻转速率决定。ONFI 定义了 模式 0 ~ 模式 5 六个异步档位。

异步模式tRC / tWC(最小)等效速率(约)8-bit 理论吞吐说明
Mode 0100 ns10 MT/s10 MB/s最慢,兼容性最好,上电默认
Mode 150 ns20 MT/s20 MB/s
Mode 235 ns≈ 28.6 MT/s≈ 28.6 MB/s
Mode 330 ns≈ 33 MT/s≈ 33 MB/s常用推荐档
Mode 425 ns40 MT/s40 MB/sTSOP-48 的实际上限附近
Mode 5≈ 20 ~ 25 ns≈ 50 MT/s≈ 50 MB/s异步最高档,tRC ≈ 25 ns(部分器件定义到 20 ns),对 Layout 要求明显提高
异步模式的设计含义

异步模式没有时钟,主控通过 RE# 的翻转来"拉"数据,因此不存在时钟抖动与源同步训练问题,Layout 容错度高。代价是:RE# 每一次翻转都要经过完整的 tRC 周期、受 tREA(RE# 到数据有效)限制,速率被锁在 50 MT/s 量级。若产品对吞吐要求不高(< 40 MB/s),异步模式是最省心、最可靠的选择

2.2 ONFI 源同步 DDR:NV-DDR / NV-DDR2 / NV-DDR3

NV-DDR(ONFI 2.x)开始,接口改为源同步 DDR:数据由 DQS(数据选通) 伴随传输,在 DQS 的上下沿都采样,因此单位引脚带宽翻倍。读写方向不同,时钟来源也不同。

模式规范版本最高数据速率8-bit 理论吞吐RE# / DQS 形式关键设计要求
NV-DDRONFI 2.x200 MT/s200 MB/sRE# 单端时钟;DQS 单端选通需要 DQS 与数据线等长;RE# 串联端接
NV-DDR2ONFI 3.x400 MT/s400 MB/sRE# / RE_c 差分DQS / DQS# 差分100 Ω 差分阻抗;差分对等长;走线 < 5 cm;需 DQS 训练
NV-DDR3ONFI 4.x800 ~ 1066 MT/s800 ~ 1066 MB/sRE# / RE_c 差分;DQS / DQS# 差分仅 BGA 封装可行;需 ODT / 驱动强度调节;Layout 极严苛
吞吐要打折

上表是理论峰值(总线带宽),实际有效吞吐还要扣除:tR(页读阵列等待,25~100 µs)、命令 / 地址周期开销、spare 区读取、ECC 校验与纠正时间、FTL 映射查表与垃圾回收。工程上通常按理论值的 50%~70% 估算有效吞吐

2.3 Toggle DDR 1.0 / 2.0

Toggle DDR 由 Samsung 与 Toshiba(现 Kioxia)推动,同样采用源同步 DDR 与 DQS 选通,但没有独立的 RE# / WE#:它使用 DQS / DQS# 差分对作为双向选通,配合 W/R#(读写方向指示)CLK 信号。命令与地址仍在 I/O 总线上以 DDR 方式传输。

  • Toggle DDR 1.0:约 133 MT/s,8-bit 约 133 MB/s 理论峰值。
  • Toggle DDR 2.0:最高 400 MT/s,8-bit 约 400 MB/s 理论峰值。
  • 与 ONFI 的关系:基本命令集(Reset 0xFF、Read ID 0x90、Page Read 0x00+0x30、Program 0x80+0x10、Block Erase 0x60+0xD0、Read Status 0x70)与 ONFI 兼容;但 Read Parameter Page (0xEC) 是 ONFI 特有,Toggle 器件通过 Read ID 与厂商自定义方式识别;时序模式切换、DQS 训练流程不同。主控必须明确声明支持 Toggle。

2.4 速率档位与等效吞吐计算

吞吐计算的基本公式很简单:

理论峰值吞吐 (MB/s) = 总线位宽 (bit) ÷ 8 × 数据速率 (MT/s)

示例:
  8-bit  ×  200 MT/s (NV-DDR)  = 1 byte × 200  = 200 MB/s
  8-bit  ×  400 MT/s (NV-DDR2) = 1 byte × 400  = 400 MB/s
  8-bit  ×  800 MT/s (NV-DDR3) = 1 byte × 800  = 800 MB/s
  16-bit ×  400 MT/s (NV-DDR2) = 2 byte × 400  = 800 MB/s
  8-bit  ×   50 MT/s (异步 Mode 5) = 50 MB/s

换算成有效吞吐(工程估算,按 60% 效率):
  NV-DDR2 400 MT/s → 有效约 200~280 MB/s(还要扣 tR 与 ECC 时间)
模式数据速率8-bit 峰值16-bit 峰值典型 Layout 难度
异步 Mode 0~310 ~ 33 MT/s10 ~ 33 MB/s20 ~ 66 MB/s
异步 Mode 4~540 ~ 50 MT/s40 ~ 50 MB/s80 ~ 100 MB/s
Toggle DDR 1.0133 MT/s133 MB/s266 MB/s中高
NV-DDR200 MT/s200 MB/s400 MB/s中高
Toggle DDR 2.0 / NV-DDR2400 MT/s400 MB/s800 MB/s
NV-DDR3800 ~ 1066 MT/s800 ~ 1066 MB/s1.6 ~ 2.1 GB/s极高

2.5 8-bit 与 16-bit 总线

  • 8-bit(I/O0~I/O7):最常见。命令与地址按字节发送,容量越大地址周期越多(常见 4~6 个周期)。
  • 16-bit(I/O0~I/O15):数据周期按字(2 字节)传输,数据吞吐理论翻倍;但命令与地址仍只用 I/O0~I/O7(高 8 位在命令 / 地址周期被忽略)。
  • 代价:多 8 根数据线 + 更多的 VSSQ / VCCQ 引脚,只能用 BGA 封装;Layout 等长难度与串扰风险显著上升。
  • 选型建议:只有在主控明确支持 16-bit 且吞吐需求确实紧张时才用 16-bit;否则优先 8-bit + 更高速率模式(引脚更少、等长更容易、可靠性更高)。

2.6 异步读时序(Page Read 全流程)

理解一次完整页读的时序,是排查"读 ID 失败""R/B# 一直忙""数据全 FF"等问题的基础。

图 2 ONFI 异步模式页读时序(Page Read) CLE ALE CE# WE# RE# R/B# I/O0~7 R/B# 忙 tR(页读阵列忙)25~100 µs 00h 地址×5 30h 数据输出
图 2 · ONFI 异步模式页读(Page Read)时序:发命令 → 发地址 → 发确认命令 → 等 R/B# → RE# 读数据
时序解读

一次页读的完整过程是: CLE 拉高,WE# 上升沿锁存命令 0x00 ALE 拉高,连续 5 个(列 2 + 行 3,大容量器件更多)WE# 周期锁存地址; CLE 拉高,锁存确认命令 0x30 器件进入阵列读,R/B# 拉低并维持 tR(25~100 µs,TLC 更长); R/B# 变高后,主控用 RE# 翻转把数据从数据寄存器逐字节"拉"出来。
关键点:R/B# 只在第 ④ 步忙,之后的数据输出阶段 R/B# 是高的;数据输出阶段再用 R/B# 判断忙是没有意义的

3 · 主控要求

3.1 NAND 控制器

并行 NAND 不能被"普通 GPIO 或普通 SPI"驱动,主控必须内置专用 NAND 控制器(NANDC / FMC / EMI / GPMI 等,各家叫法不同)。它至少需要提供:

  • 时序产生:硬件产生 CLE / ALE / CE# / RE# / WE# 的时序,可编程设置 tRC、tRP、tREA、tWP、tCS、tCH 等建立 / 保持 / 脉宽参数。
  • 总线复用:自动完成"命令周期 → 地址周期 → 数据周期"的分时复用,支持可配置的地址周期数(4~6 周期)。
  • 模式支持:明确支持异步 SDR,以及所需的 NV-DDR / NV-DDR2 / NV-DDR3 或 Toggle DDR 1.0 / 2.0;DDR 模式还需要支持 DQS 训练(read/write leveling、DQS delay 校准)
  • R/B# 采样:能正确采样开漏 R/B# 并支持超时判断。
  • DMA:页级数据搬运走 DMA,避免 CPU 参与每个字节。
  • 多 CE#:支持 1~4(或更多)片选,以挂载多 target。

3.2 硬件 ECC(BCH / LDPC)

NAND 阵列天然存在位翻转(读干扰、编程干扰、电荷泄漏、P/E 循环磨损)。所有并行 NAND 都要求主控在数据写入时计算校验码、读出时纠错。这项工作量极大,必须由硬件 ECC 引擎完成

颗粒类型典型纠错需求推荐算法说明
SLC1 ~ 8 bit / 512 B(常见 1~4 bit)BCH 足够纠错需求最低,早期主控的 1-bit / 4-bit BCH 即可;寿命末期余量仍充足
MLC8 ~ 24 bit / 1 KB(部分折算为 4~12 bit / 512 B)BCH(高端需 LDPC)工艺越先进需求越高;1x nm MLC 已接近 BCH 极限
TLC约 40 ~ 80 bit / 1 KB 量级LDPC(必需)需要硬判决 + 软判决重读(Read Retry)、多档读参考电压;软件开销巨大
QLC(极少用于并行接口)更高LDPC并行接口已基本退出该领域
硬门槛:没有硬件 ECC 就不要选并行 NAND

没有硬件 ECC 引擎的主控,不要选并行 NAND。唯一的例外是"小容量 SLC + 软件 ECC + 极低访问频率"的实验性场景,但 CPU 占用率极高、性能极差、可靠性无法保证,量产项目不应采用
另外注意:即使主控有硬件 ECC,也要核对 单页 ECC 保护粒度(常见 512 B 或 1 KB 一个校验段)与 每页可容纳的校验段数 是否能覆盖所选器件的页大小(2 KB / 4 KB / 8 KB / 16 KB)。

ECC 需求从哪来?

准确的 ECC 需求写在器件 datasheet 里,也可以通过 Read Parameter Page (0xEC) 从 ONFI 参数页的"Number of bits of ECC correction"与"ECC codeword size"字段读出。设计与 BSP 配置时以这两个字段为准,不要凭经验拍脑袋。

3.3 FTL(Flash Translation Layer)

FTL 是把"会坏块、有擦写寿命、必须先擦后写"的物理 NAND,包装成主控可以随意读写的逻辑块设备的软件层。工作量巨大,是并行 NAND 方案最主要的隐性成本

模块必须做的事不做会怎样
坏块管理(BBM)扫描并标记出厂坏块(厂商在 spare 区写非 FF 标记),运行中检测并替换使用中坏块;维护坏块表并持久化数据写入坏块直接丢失;坏块表丢失导致整盘不可用
逻辑→物理映射维护 LBA → PBA 映射表,支持页级或块级映射;映射表本身要冗余存储与掉电恢复无法寻址;掉电后映射表损坏即整盘失效
磨损均衡(Wear Leveling)动态 + 静态磨损均衡,把擦写次数摊平到所有块热点块(如 FAT 表、日志文件所在块)提前写穿,整盘早夭
垃圾回收(GC)回收含失效页的块:搬移有效页 → 擦除 → 归还空闲池;需预留 OP(Over-Provisioning)无空闲块可写,写性能断崖式下跌甚至写失败
读干扰 / 数据保持处理读计数达到阈值后搬移数据;必要时定期刷新长期只读的分区出现不可纠错误
掉电恢复关键元数据双备份 + 版本号 + 原子提交;上电扫描重建掉电后映射表损坏,整盘变砖
如果没有成熟 FTL,请换器件

如果主控厂商没有提供经过量产验证的 FTL(或其生态里没有可靠的开源 / 商业 FTL),强烈建议改用 eMMC / SD NAND / SPI NAND —— 它们内部已集成控制器与 FTL,主控侧只需要标准的块设备驱动。自己从零写一套可靠的 FTL,工作量与风险远超节省下来的 BOM 成本。

3.4 常见主控与 GPIO 模拟警告

主控 / 平台NAND 接口ECC 能力备注
NXP i.MX 系列(6/7/8/9 等)GPMI / SEMC NAND 控制器,8-bit,支持异步与部分 ONFI DDRBCH(最高 40 bit 级,依型号)生态成熟,Linux BSP 支持完善,工业领域常见
TI AM335x / AM62x 等GPMC / EMIF,8/16-bit,异步 + ONFIBCH(最高 16 bit 级)GPMC 时序可编程性强,注意引脚复用与等长
Rockchip(RK 系列)专用 NANDC,8-bit,异步 + NV-DDR / ToggleLDPC(新型号)消费类方案成熟,参考设计约束多
全志(Allwinner)专用 NANDC,8-bit,异步 + NV-DDR / ToggleBCH / LDPC(依型号)成本敏感方案常见
STM32(带 FMC NAND 控制器的型号,如 F4/F7/H7 部分型号)FMC NAND bank,8/16-bit,仅异步仅 1-bit 汉明码 ECC(部分型号无硬件 ECC)只能配小容量 SLC;且 FTL 需自行实现
Microchip SAM9x / SAMA5SMC / NFC,8-bit,异步 + ONFIBCH / PMECC(最高 24~32 bit 级)工控长供货场景常见
Xilinx Zynq / Zynq UltraScale+PS 侧 NAND 控制器(部分型号)/ PL 侧软核 IP依 IPDDR 模式通常需自建 PL 逻辑与训练
GPIO 模拟并行 NAND —— 量产不推荐

用普通 GPIO 软件模拟 CLE / ALE / CE# / RE# / WE# 时序,每一次总线翻转都要数条指令,实际速率通常 < 1 MB/s,且 CPU 被完全占用、时序抖动大、无法保证 tRC / tREA 等参数。它只适合小容量、极少访问的场景(例如上电读一次配置参数),量产项目不推荐。若确实需要,也请用 SLC 器件 + 异步 Mode 0 + 硬件 ECC 已不可用时的软件 ECC,并充分评估最坏情况下的访问耗时。

4 · 电源设计

4.1 VCC 与 VCCQ 双电源

并行 NAND 有两组独立电源,这是它与多数单电源存储器件的重要差异:

电源作用常见电平设计要点
VCC核心 / 阵列电源(电荷泵、阵列操作)3.3 V 或 1.8 V(依器件)承担编程 / 擦除的峰值电流;纹波要求高
VCCQI/O 接口电源,决定 IO 电平标准1.8 V(现代器件),早期有 3.3 V所有信号(含 R/B# 上拉)以 VCCQ 为参考;必须与主控 IO 电平匹配
两条硬约束(不可违反)

约束一:VCCQ 不得高于 VCC。即 VCCQ ≤ VCC 必须全程成立,包括上电爬升过程、稳态运行、掉电下降过程。若 VCC = 1.8 V,VCCQ 只能是 1.8 V;若 VCC = 3.3 V,VCCQ 可为 3.3 V 或 1.8 V。
约束二:上电时 VCC 先于或同时于 VCCQ 上电;断电时 VCCQ 先于或同时于 VCC 掉电。违反会导致 IO 口通过 ESD 二极管向核心电源倒灌,轻则 latch-up,重则永久损坏器件。

怎么实现这个顺序?
  • 方案 A(最简单,推荐):VCC 与 VCCQ 由同一路电源取电(例如都用 1.8 V),物理上不存在顺序问题。现代 1.8 V 器件大量采用此方案。
  • 方案 B:VCC 与 VCCQ 各自独立 LDO / DCDC,用 使能脚(EN)级联:VCC 的 PGOOD 去驱动 VCCQ 的 EN,保证 VCC 先起;断电时用 VCCQ 的使能先撤。
  • 方案 C:两路之间加肖特基二极管钳位(VCCQ → VCC 方向),保证 VCCQ 不超过 VCC + Vf。作为兜底保护,不能替代时序设计。
  • 方案 D:用带时序控制的电源管理 IC(PMIC),在固件里配置上电 / 下电顺序。

4.2 上电 / 断电时序

图 3 VCC 与 VCCQ 上电与断电时序约束 VCC VCCQ 3.3 V 1.8 V 1 2 3 4 电源稳定 ≥1 ms(建议 5 ms) 时间 t ① VCC 先(或同时)上电,VCCQ 不得先于 VCC ② VCCQ 在 VCC 稳定后上电,且全程 VCCQ ≤ VCC ③ 断电时 VCCQ 先(或同时)掉电 ④ VCC 最后掉电,避免 IO 口倒灌
图 3 · VCC / VCCQ 上电与断电时序:VCC 先上后掉,VCCQ 后上先掉,且 VCCQ ≤ VCC
完整的上电初始化流程
1. VCC 上电 → VCCQ 上电(保证 VCCQ ≤ VCC,VCC 不晚于 VCCQ)
2. 等待电源稳定:≥ 1 ms,建议 5 ms(含 LDO / DCDC 软启动与复位释放)
3. 控制信号保持无效态:CE# = RE# = WE# = 高,CLE = ALE = 低,WP# = 高
4. 发 Reset 命令:CLE = 1,总线写 0xFF,WE# 上升沿锁存
5. 等 R/B# 变高(tRST,最大 5 / 10 / 50 ms,取决于复位前器件状态)
6. Read ID 0x90:读厂商 ID / 器件 ID,确认器件存在
7. Read Parameter Page 0xEC:校验 "ONFI" 签名,读取页/块/spare 大小、
   ECC 要求、支持的时序模式表
8. Set Features 0xEF(Feature 地址 0x01 = Timing Mode):切换到目标时序模式
9. DDR 模式:切换后需做 Synchronous Reset,并执行 DQS 训练 / read leveling
断电顺序

系统掉电时,应先让 NAND 完成或中止当前操作、把 IO 置为高阻、撤掉 VCCQ,再撤 VCC。若用负载开关整路切断,应确保两路开关的时序满足"VCCQ 先断";更简单的做法是两路共用同一开关且 VCCQ 由 VCC 二次降压得到,天然满足顺序。

4.3 去耦设计

电源推荐配置布局要求禁止
VCC(核心)10 µF(bulk)+ 0.1 µF × 20.1 µF 尽量靠近 VCC 引脚(BGA 时放背面 via 旁);bulk 可在 2~3 cm 内禁止在 VCC / VCCQ 上串磁珠。磁珠的直流阻抗会造成压降、阻抗峰值会放大瞬态纹波,对电荷泵工作的大电流阶跃极为不利
VCCQ(IO)每个 VCCQ 引脚 0.1 µF(紧靠引脚)+ 4.7~10 µF bulk高速模式下每个 VCCQ 球都要有独立 0.1 µF;地过孔紧邻电容地焊盘
  • 优先使用 X5R / X7R 材质的多层陶瓷电容(MLCC),封装 0402 / 0201(BGA 背面)。注意 MLCC 直流偏压效应:1.8 V 下 0402 10 µF 的实际容值可能只剩标称的 30%~50%,选型时留足裕量。
  • 每个去耦电容的地端过孔要紧邻其地焊盘(< 0.5 mm),直接打到完整地平面,不要共用长过孔。
  • VCC 与 VCCQ 的地回流都应落在完整的地平面上;VSS 与 VSSQ 的所有球 / 脚都必须良好接地,不能只接一部分

4.4 电流与功耗预算

工作状态电流说明与预算建议
连续读20 ~ 40 mA按 40 mA 预算 LDO / DCDC 的持续输出能力
编程 / 擦除30 ~ 60 mA电荷泵工作,伴随高频瞬态;按 80 mA 预留瞬态裕量
待机(CE# 无效)10 ~ 100 µA多数器件无深度睡眠命令,靠 CE# 无效进入待机
断电(负载开关关断)< 1 µA必须用负载开关切断 VCC / VCCQ 才能达到;仅靠器件自身待机电流达不到 µA 级

电池供电产品的低功耗策略:空闲时保持 CE# 无效进入待机;长时间不用则先用 GPIO 把 IO 置高阻、再用负载开关切断 VCCQ 与 VCC(顺序仍要遵守 VCCQ 先断),唤醒时重新走一遍完整上电初始化流程。

📥 芯参谋客户端下载