只读分享解决方案文档原理方案设计📅 2026-10-14🔖 Rev 1.0⏳ 还有3日到期
🔧解决方案&应用市场分析 -> 原理方案设计 -> 电子设计&技术探讨 -> NAND接口协议演进_技术探讨

NAND接口协议演进_技术探讨

同系列 · 原理方案设计
扫码打开本页
微信扫码

NAND 接口协议演进 · 技术探讨

从异步 SDR 到 NV-DDR —— 一份给电路设计指南撰写者与料号设计文档整理者用的带宽演进账 | 编制日期 2026-10-14 | 版本号 Rev 1.0

×2 ~ ×4
每一代协议的带宽倍数
口径与算法见第 6 章
3
带宽翻倍的三个杠杆
位宽 · 双沿 · 总线宽度
3
协议族
ONFI · Toggle · NV-DDR
3 层
协议分层的写法
命令 · 时序 · 状态
报告总结

单协议的产品指南(并行 NAND / PPI NAND、SPI NAND)解决的是「这颗料怎么接、怎么用」; 本份解决的是另一个问题:带宽是怎么一代一代翻上去的。读完它,你应该能给 《并行 NAND 电路设计指南》的带宽章节写出一整节有说服力的论证,而不是只能引用一句 「本器件支持最高 xx MT/s」。

主线是一本演进账:每一代协议多赚了哪几倍带宽、这几个倍数分别是从哪个 杠杆上赚来的(位宽 / 双沿 / 总线宽度)、代价是什么(时序参数变紧、余量变小、训练与 调试复杂度上升)。同时把工程上真正会踩坑的东西讲透:DQS 与 CK 的相位怎么定、 换协议为什么必须重算 ECC 窗口、板级与封装还会额外吃掉多少余量。

结论: NAND 接口的带宽史本质上只有三个杠杆在反复叠加——总线位宽(x8 → x16)、 双沿采样(SDR → DDR)、单位时间沿数(时钟 / MT/s)。 ONFI 解决的是规范统一,Toggle 与 NV-DDR 解决的是时钟与数据的关系 (源同步、边沿对齐、DQS 训练)。三者不是竞争关系而是分层关系:ONFI 规范定义接口, Toggle 与 NV-DDR 定义时序,MT/s 与位宽定义带宽。写设计指南时把这三层分开陈述, 带宽论证立刻就自洽了。

读者路径

  • 要写设计指南的带宽章节:直接看第 6 章(统一口径与逐代账目表)+ 附录 B(三轴总对照),这两处是可整段引用的论证骨架。
  • 要定接口选型:第 1、2 章(为什么有 ONFI)+ 第 3、4 章(Toggle 与 NV-DDR 的时序差异)+ 第 5 章(x8 / x16 与并联)。
  • 要做时序与余量设计:第 7 章(写侧 / 读侧参数)+ 第 8 章(写延时与 ECC 窗口)+ 第 9 章(余量工程)+ 附录 C。
  • 要做调试与量产:第 10 章(三方协同与降速运行)+ 第 11 章(现象速查)+ 第 12 章(核查清单)。
  • 与产品指南配套使用:本份只讲演进与账目,器件级接法与料号请回到《并行 NAND 电路设计指南》与《SPI NAND Flash 电路设计指南》。

全篇数值均为行业经验区间,用于建立量级概念;器件级设计一律以原厂正式 datasheet 与 JEDEC / ONFI 规范原文为准。

1. 从异步到同步:为什么必须有 ONFI

这一章从最朴素的异步 NAND 接口出发,说明它的天花板在哪里、为什么主控算力增长会把它逼到墙角,以及 ONFI 成立的动机。

1.1 传统异步接口的结构与天花板

最早的并行 NAND 接口是异步 SDR:没有时钟线,所有信号的变化都由「控制端先拉低、器件或主控应答、数据保持一段时间后再释放」这样的握手约定来定义。一条命令要经历「拉 CE# → 拉 CLE#/WE# → 送命令 → 拉 ALE# → 送地址 → 数据建立 → 数据保持 → 释放」这一整套固定顺序,每一步的延时都由 datasheet 里的一个 t 参数约束。

它的信号可以按职责分成五组。理解这五组的划分,是后面读懂任何一份 NAND 规格书的基础:

信号组典型信号(以 x8 常见配置为例)方向在一次页读里承担什么职责
命令类CE#、CLE#、WE#主控 → 颗粒指示「这是一条命令」,并把命令码放到数据总线上
地址类ALE#、地址复用引脚主控 → 颗粒指示「接下来是命令的参数」,并把页号 / 块号 / 列号送进去
数据类DQ[7:0](x16 为 DQ[15:0])双向同一组线上先送命令与参数,再收数据(页缓存里的内容)
控制类RE#、WP#主控 → 颗粒RE# 给出读出节拍(源同步接口中作读时钟);WP# 写保护,有效期间禁止编程与擦除
状态类R/B#颗粒 → 主控回报忙 / 就绪,常接主控中断或查询
传统异步 NAND 接口:各组信号各管一段握手,以及它撞到的三处天花板信号按职责分组:同一条 DQ 线上先后跑命令、参数、数据命令 / 控制类CE# / CLE# / WE# / RE#指示「这是一条命令」,命令码放到 DQ 上;WP# 写保护地址类ALE#指示「下面是参数」,页号、块号、列号都从这里进数据类DQ[7:0](x16 为 15:0)双向复用:先送命令与参数,再收页缓存里的数据状态类R/B#回报忙与就绪天花板一 · 时序靠等待每一拍都要等固定延时没有时钟可对齐,只能加等待周期一拍就是一个完整总线周期天花板二 · 单沿采样一个周期只传一次数据时钟翻倍并不等于带宽翻倍DDR 之前无法吃满频率天花板三 · 无训练机制相位靠主控与颗粒协商死换料号 / 换温度就要重算板级余量无法自动收敛三处天花板有同一个共同根源:整条总线没有「时间基准」。异步接口把时间当作约定,而约定必然在频率提高后失效。ONFI 与后续各协议族的全部努力,本质上都是在给 NAND 总线补一个可用的时间基准,以及把「时间基准怎么用」标准化。
图 1 · 传统异步 NAND 接口的信号分组与三处天花板
天花板具体表现工程代价对应解法
时序靠等待每条命令的每一步都要插入固定长度的等待周期总线时间被大量空转占用,命令序列越长空转越多引入时钟,让时序变成可计算、可复用的间隔
单沿采样一个时钟周期只在一个沿上传递一次数据提高时钟频率时,带宽随频率线性增长但利用率很低双沿采样(DDR),一个周期传两次
无相位机制数据有效窗口靠主控与颗粒两边的延时参数共同保证换料号、换温度、换板子都要重新验证引入源同步时钟与数据选通(DQS),把相位变成可训练量
读规格书时先分清:哪些是「协议规定的」,哪些是「这一代器件的实现习惯」

并行 NAND 的规格书里混着三类东西:协议层规定(比如命令序列的先后顺序、 参数页的字段含义)、时序层规定(各类 t 参数的 min / typ / max)、 以及实现层习惯(厂商自己附加的参数页字段、厂商私有模式)。 前两类看 ONFI 规范原文即可,第三类只能看该料号的 datasheet。

本份文档只讨论前两类的机制与量级,不涉及任何具体字段位置与默认值, 也不给出任何料号推荐。

1.2 存储器带宽与主控带宽的匹配问题

把视角抬高一层:主控侧的算力与总线宽度在快速涨,存储器侧的带宽却长期停在原地。 结果是主控发出读命令之后大量时间在等,CPU 的有效产出被存储器的等待时间吃掉。

传统异步接口下这个缺口尤其刺眼,原因有三:

  • 单沿采样:频率翻倍带宽也只翻倍,无法用「拉高频率」把缺口一次补上。
  • 握手式时序:每条命令内部就有多段固定延时,命令之间的空转叠加起来占掉可观比例。
  • 总线宽度受限:x8 配置下即使时序完美,单颗颗粒能给的带宽也有硬上限。
带宽缺口的形状:主控侧需求是连续上升的斜坡,存储器侧是跳跃式的台阶同一时间轴上的两条曲线(纵轴为相对带宽,示意,非任何实测数据)2226T14226T26426T38652T410852T513052T6项目代际 T1 → T6(示意)深色柱 = 主控侧带宽需求 浅色柱 = 该代存储器接口能给的带宽上限缺口的三个阶段刚过异步代:主控还能等进 DDR 代:缺口被拉大进多颗并联:靠堆颗数补缺口真正的代价主控空等,CPU 产出下降队列深度被存储延迟卡住多线程也难掩盖等待三种补法与代价提位宽:pin 数与成本上升提沿数:时序余量收紧加颗数:板面积与功耗上升存储器的带宽是台阶式的:每一代只在一个点上跳一次,跳完就又要等下一代协议。写设计指南时必须把这句话讲明白,否则读者会误以为换料号就能线性提速。浅色柱出现两次平台,是示意「两代协议共用同一带宽档」的常见情形(例如同代不同速率档位),不代表任何具体器件的实测值。
图 2 · 主控侧带宽需求与存储器侧带宽供给的缺口(示意)
维度主控侧的变化存储器侧的变化结果
算力主控工艺推进,核数与主频持续提升颗粒工艺主要用来提密度,不用于提接口速率读写请求到达密度上升,队列更满
总线宽度主控侧并行接口越来越宽x16 逐渐成为高速配置的默认选择单颗带宽必须靠位宽补
接口机制主控与颗粒之间有可协商的训练与降速流程异步接口没有协商流程跨代兼容只能靠降速运行
等待成本并行度提高后,等待时间更易被摊薄页读延迟由器件决定,主控改不了高负载下带宽利用率成为瓶颈指标
为什么这一节对写设计指南很重要

很多带宽章节之所以没说服力,是因为只写了「本器件支持 xx MT/s」, 而没有回答「这个 MT/s 在系统里能兑现多少」。写指南时建议补三句话: ① 峰值带宽按 时钟 × 位宽 × 双沿系数 / 8 计算(第 6 章给出完整口径); ② 实际有效带宽还要扣掉命令开销、页打开开销与等待状态切换; ③ 主控侧要达成同样的系统吞吐需要几颗并联,以及由此带来的板级约束。

1.3 ONFI 的目标:统一异步 / 同步 / PAR 三个来源

在 ONFI 之前,并行 NAND 的时序定义有三个来源:

  • 各厂商私有异步接口:命令序列大同小异,但信号定义、参数页字段、复位与上电要求各家不同;
  • JEDEC 体系下的并行同步接口:由 JEDEC 规范定义的源同步 DDR 系列(NV-DDR 一族);
  • 厂商联盟推动的 Toggle 系列:读方向由颗粒输出差分 DQS 实现边沿对齐的一套时序。

三套来源各自都能工作,但混用时会出现三类现实问题:主控要写三套驱动、 同一料号的不同批次可能行为不一致、设计指南无法给出一套统一的时序参数口径。 ONFI 的目标就是把这三套来源收敛成一份规范。

来源典型代表时钟从哪来数据在哪个沿采样对设计指南的影响
厂商私有异步早期各家的异步 SDR 约定没有时钟,延时靠约定不适用(无采样概念)每家一份时序表,无法互相引用
JEDEC 并行同步NV-DDR 系列主控驱动的 WE# / RE# 时钟上升沿与下降沿都采样时序参数体系完整,但覆盖范围有限
Toggle 系列Toggle 1.0 / 2.0读方向颗粒输出差分 DQS,写方向主机侧提供写选通上升沿与下降沿都采样与 ONFI 异步模式可以共存于同一料号
ONFI 统一了什么、没有统一什么

统一了:命令序列与命令组的职责划分、时序参数的命名与分类、 器件识别的基本流程、模式切换的总体框架、以及面向主控的互操作基线。

没有统一:厂商私有模式与私有参数页字段、厂商自选的时序档位策略、 各家在 ECC 引擎与坏块管理上的实现细节。这些留给厂商,在 datasheet 里单独描述。

所以「用了 ONFI」并不等于「这颗料和别家的行为完全一样」,而是等于「基础行为有共同底线」。

1.4 协议分层:命令接口、时序接口、状态接口

要写一份能被电路设计者用起来的带宽章节,最重要的是把协议拆成三层。这三层的演进速度完全不同,混着讲必然讲不清。

协议分层:命令接口决定「做什么」,时序接口决定「多久做」,状态接口决定「做完了没」第一层 · 命令接口 Command Interface —— 跨代变化最小命令组职责划分命令序列先后顺序参数页读取流程模式切换流程复位与上电约定厂商私有扩展位第二层 · 时序接口 Timing Interface —— 每一代都在改时钟来源采样沿定义参数命名与分类数据有效窗口训练窗口降速运行第三层 · 状态接口 Status Interface —— 与主控中断 / 轮询耦合就绪与忙的表示状态查询流程异常标志中断与 R/B# 配合ECC 结果回读带宽论证只落在第二层:位宽属于接口规模、双沿属于采样方式、频率属于时间基准,三者都归时序接口管。第一层与第三层在跨代兼容中起兜底作用:命令层保证老命令还能用,状态层保证主控能可靠地判断一次传输是否完成。
图 3 · NAND 协议的三层结构:命令接口 / 时序接口 / 状态接口
层回答的问题典型条目跨代变化速度写指南时的建议
命令接口做什么操作命令组职责、序列顺序、参数页流程、模式切换流程慢引用规范原文的命令组清单,不复述寄存器字段
时序接口多久完成一次传输时钟来源、采样沿、数据有效窗口、训练与降速快按代际列表,给出参数名与量级区间
状态接口一次传输是否完成就绪 / 忙表示、状态查询、异常标志、ECC 结果中等说明与主控轮询或中断的配合方式

为什么这个分层对写带宽论证有用

因为它能解释一句常被误解的话:「协议换代了,带宽翻倍了,但主控侧的软件改动很小」。 如果把协议当成一整块看,代际切换意味着全部重写;如果按三层拆开看,代际切换真正改动的只有第二层, 第一层和第三层基本连续。于是结论就清楚了:换代的成本集中在时序层,也就是电路设计与验证的成本。 这正是电路设计指南要重点写的地方。

2. ONFI 时间线与关键能力

这一章按代际梳理 ONFI 公开版本的能力增量。ONFI 的版本号迭代很快,各版本的修订状态与发布时间以 ONFI 联盟发布的规范原文为准;本节只描述每一代引入了什么机制,不逐条罗列版本细节。

2.1 ONFI 1.0:x8 / x16 的基本同步时序

ONFI 1.0 的核心贡献是把并行 NAND 的异步接口统一到一份规范,并把总线宽度明确划分为 x8 与 x16 两档。它规定的是「命令怎么发、参数怎么送、状态怎么回」,以及一批以 t 开头的时序参数, 用统一的命名和 min / typ / max 三值表述。

对电路设计而言,1.0 时代的关键词是「等」:等 tWP、等 tWH、等 tRHW。 所有时序余量靠在主控的等待周期里堆出来,这也是第 1 章说的三处天花板的直接来源。

能力项ONFI 1.0 的做法对电路设计的含义
总线宽度明确 x8 与 x16 两档,不再混用其他宽度封装与布板在立项时就要定死,中途改宽度等于改板
时序参数统一命名的 t 参数族,每项给 min / typ / maxSK 规格的写法(9.2 节展开)从这一代就固定下来
器件识别参数页命令组给出可读的器件标识字段上电后第一件事是读参数页,确认接口模式与几何
模式表达用一组模式约定区分异步 SDR 的若干时序档主控与颗粒通过参数页协商模式,而不是硬编
训练机制尚无源同步训练流程相位靠延时参数保证,换温度与换料号要重新验证

2.2 ONFI 2.0:DDR 与新的时序参数

ONFI 2.0 引入源同步 DDR 机制,也就是本文档中反复出现的 NV-DDR 族。 它带来两件对电路设计影响最大的事:

  • 时钟由主控驱动:WE#(写时钟)与 RE#(读时钟)均由主控输出差分对,数据在时钟的上升沿与下降沿各传一次,读方向的数据窗由颗粒输出的 DQS 给出。 带宽在同样时钟下直接翻倍,而代价是整条总线引入了「相位」这个新问题。
  • 时序参数体系扩容:新增一批与源同步相关的参数,用来描述数据相对时钟的 有效窗口与相位关系。这一批参数的量级与传统异步参数差别很大,是第 7、9 章的重点。
变化点异步 SDR(1.0 时代)源同步 DDR(2.0 起)设计影响
时钟来源无时钟,延时靠约定主控驱动的差分 WE# / RE#PCB 上多出差分对,等长与阻抗要求随之而来
每周期传输次数一次两次(上升沿 + 下降沿)带宽理论值翻倍,时序窗口缩短一半
相位不存在相位概念数据有效窗口相对时钟边沿有偏移必须留采样余量,进入 PVT 收敛讨论
数据选通无部分代际引入 DQS 辅助采样多一对差分信号,走线需要单独约束
训练无逐步引入对齐与训练流程上电流程变长,主控驱动复杂度上升
降速运行只能退回异步模式可在多档速率间切换为兼容性提供了正式机制(第 10 章)

2.3 ONFI 3.x / 4.x:与 NV-DDR 的关系、Zoned 的引入

ONFI 3.x 之后,规范继续把 JEDEC 体系下的并行源同步代际(NV-DDR2、NV-DDR3 一类)纳入统一框架, 并把训练、模式切换、降速这些流程进一步标准化。到 ONFI 4.x 时代(并行出现,不在 ONFI 裸接口内),更上层的存储栈(NVMe / SSD 控制器层)引入了 Zoned 命名空间(ZNS)概念:

Zoned 的意义在于把「块」这个擦除单位显式暴露给主机侧:主机按 zone 组织写入与读取,控制器负责 zone 内的顺序约束与回收。这不是一个纯电气话题,但它改变了主控与颗粒之间的命令交互形态, 因此电路设计指南里至少要知道它的存在与基本术语(zone、zone 内的顺序写约束、 块地址空间的管理方式),否则软件层文档会缺少背景。

代际主要增量状态表述对电路设计的影响
ONFI 1.0统一异步 SDR 接口,明确 x8 / x16早期版本,后续已被修订时序参数体系与 SK 写法成型
ONFI 2.0 及其修订引入源同步 DDR(NV-DDR 族)与新的时序参数存在多个修订版本开始需要差分走线与相位余量设计
ONFI 3.x把后续并行源同步代际纳入统一框架,训练流程标准化持续修订中训练与降速成为标准上电流程的一部分
ONFI 4.x训练/降速机制进一步完善(zone 抽象属更上层 NVMe/ZNS,非 ONFI 裸接口本身)较新版本,仍在演进命令交互形态变化,需要了解 zone 术语
版本号细节不要凭记忆写

ONFI 的版本与修订发布节奏较快,且规范之间存在引用与继承关系。 本文档刻意不给出精确的版本发布年份与修订编号:这类信息一旦写进设计指南, 半年后就可能变成错的。需要引用具体版本时,请直接查 ONFI 联盟发布的规范原文目录, 并注明你引用的是哪一版、哪一日期。同理,JEDEC 体系下的并行同步接口规范 (NV-DDR 各代)也应以 JEDEC 发布的原文为准。

2.4 各代能力矩阵

把 1.0 到 4.x 的能力放在一起对比,可以清楚看到三件事:时序层在持续加固、 命令层基本连续、状态层的地位随训练机制上升。

代际时间线:从异步 SDR 到 ONFI 4.x,能力按「时序层持续加固」的节奏叠加异步 SDR异步 SDR各家私有约定无时钟无训练时序层ONFI 1.0ONFI 1.0统一异步接口x8 / x16 定档时序层ONFI 2.0ONFI 2.0引入源同步 DDR双沿 + 相位时序层Toggle 系列Toggle 系列RE 差分边沿对齐2.0 加 DQS时序层ONFI 3.xONFI 3.x纳入后续代际训练流程标准化时序层ONFI 4.xONFI 4.x上层引入 ZNS非 ONFI 裸接口能力时序层横轴是代际,不是时间刻度:每一格的「时序层」标签表示该代主要改动集中在时序接口,命令接口与状态接口的骨架保持连续。Toggle 系列不是 ONFI 的某一版,而是与 ONFI 并行的另一套时序来源,后来在能力上被吸收进统一框架——这也是第 3、4 章要单独讲它的原因。代际顺序为能力递进的逻辑顺序,不代表严格的发布先后;具体发布与修订状态以规范原文为准。
图 4 · ONFI 代际时间线与能力叠加(逻辑递进顺序,非发布时间轴)
能力维度1.0 时代2.0 时代3.x / 4.x 时代
总线位宽x8 / x16x8 / x16x8 / x16,x16 成为高速默认
每周期传输次数一次两次(双沿)两次(双沿)
时钟来源无时钟主控驱动差分 WE# / RE#主控驱动差分 WE# / RE#,部分代际含 DQS
相位管理无相位概念,靠延时参数参数约束数据有效窗口训练流程 + 参数共同保证
速率档位有限开始有明确档位多档位 + 降速运行机制
存储抽象页 / 块页 / 块页 / 块 / zone(上层引入 ZNS,非 ONFI 接口能力)
降速兼容退回异步模式可在源同步档位间切换标准化降速流程
如果只记住这一章的一句话

ONFI 规范的是「怎么做」,代际升级换来的是「做多快」;而带宽的实际倍数, 只取决于三个可量化的量:位宽、双沿系数、单位时间沿数。这三者的计算与逐代账目 是第 6 章的内容,也是本份文档最该被引用的一节。

3. Toggle 1.0 / 2.0

Toggle 是一套源同步时序方案,与 ONFI 异步模式在同一颗料上并存。它的核心机制只有一条:把时序变成「边沿对齐」。本章讲清这条机制与两代之间的差异。

3.1 RE 差分时钟把时序变成「边沿对齐」

传统异步接口里,两端(主控与颗粒)没有共同的时间参考,只能约定「等 t 纳秒」。约定是脆弱的: 温度变化、工艺离散、板级延时差异,都会把实际偏差推出约定值。

源同步的做法是让数据的驱动方同时输出选通:读方向由颗粒输出差分 DQS,主控按它采样读出数据;写方向由主控用自己驱动的时钟送出数据,命令与地址则按主控驱动的时钟沿锁存。这样一来,两端的采样点天然对齐, 「等 t 纳秒」升级成「等这个时钟沿」——这是本章最重要的一句话。

源同步的核心:选通与数据由同一方输出,数据有效窗口跟着这条选通走上半:异步接口没有时钟,两端只能靠约定延时对齐主控:等一个 t 之后认为数据有效颗粒:按自己的延时输出数据延时 t 只是一个约定值约定两块红框之间没有共同的时间参考:约定值一旦被温度、工艺、板级延时打破,数据就会采偏。解决办法只有一个——引入一条两端共用的时钟线。下半:源同步接口里,时钟和数据由同一方输出,采样沿天然对齐Controller(主控)Peripheral(颗粒)DQS:颗粒输出的差分数据选通(读方向)上升沿与下降沿都是采样点一个周期内传两次 = 双沿系数 2采样沿跟着时钟漂移,板级延时不再是固定误差命令相:命令与地址在主控驱动的时钟沿上锁存数据相:颗粒按差分 DQS 把页缓存数据逐拍搬出,两端采样沿天然对齐边沿对齐带来一个重要推论:频率越高,单位周期内留给数据建立与保持的时间越短,而两端的偏差不再被固定延时吸收,只能靠训练与余量设计吸收。
图 5 · 从异步约定延时到源同步边沿对齐
对比项异步接口(约定延时)源同步接口(边沿对齐)
时间基准没有时钟,两端各自的时间轴颗粒输出的差分时钟,两端共用
采样依据主控在固定延时后采样主控在时钟的有效沿采样
误差来源约定值与实际延时的差板级偏斜、时钟抖动、颗粒内部漂移
频率上限受约定延时与主控周期数限制受时序窗口宽度限制
布线要求常规长度匹配即可差分对需等长、低抖动、控阻抗
主控复杂度需要插入等待周期需要时钟输出能力与相位调整

3.2 Toggle 1.0 的握手与数据有效窗口

有了边沿对齐,Toggle 把一次页读拆成命令相与数据相两段: 命令与地址在控制沿被采样,数据在数据沿被搬出。中间的等待时间由协议规定,主控按固定规则插入等待即可。

真正需要设计者理解的是数据有效窗口这个概念。数据在时钟的有效沿上被采样, 而数据本身在颗粒内部是提前准备好的。这意味着每个数据周期都有一段「稳定区」, 颗粒保证数据在这段区间内已经稳定并保持足够长时间。稳定区的宽度就是余量。

Toggle 的关键机制:命令走控制沿,数据走数据沿,两者靠 RE 差分时钟对齐一次页读的命令与数据分相:命令在控制沿被采样,数据在数据沿被搬出Controller(主控)Peripheral(颗粒)RE 差分时钟:上升沿与下降沿交替出现命令地址DQ0DQ1DQ2DQ3命令相:控制沿被采样,主控把命令与地址送出去数据相:颗粒把页缓存里的数据按数据沿逐拍搬出,主控在同一条时钟上采样两相之间的时间由协议规定;数据相的长度随页大小与突发长度变化数据有效窗口:颗粒保证数据在窗口内稳定,窗口的宽度就是余量一个数据周期建立稳定区(主控在这里采样)保持窗口宽度 = 周期长度 - 建立 - 保持频率越高,窗口越窄,余量越小窗口参数由协议规定,颗粒负责保证Toggle 1.0 与 2.0 的差别集中在有没有 DQS 与支持多高的数据速率,而「命令相 + 数据相 + 边沿对齐」这套骨架两代是一样的。
图 6 · Toggle 的边沿对齐与数据有效窗口
窗口要素含义变小时的后果谁负责保证
数据建立时间数据已经稳定到可以被采样的时刻采样仍可能采到上一拍的残留颗粒侧保证,主控侧按窗口采
稳定区数据保持稳定、可安全采样的区间采到跳变,误码或 CRC 异常双方共同保证
数据保持时间采样完成后数据还需维持的时间采完后数据立刻变化,影响后续判定颗粒侧保证
窗口整体宽度一个数据周期内可用于采样的时间频率上限被压低协议规定窗口参数

3.3 Toggle 2.0 引入 DQS

Toggle 1.0 的主要局限在于:数据有效窗口的位置由颗粒内部实现决定,主控只能被动接受。 随着频率继续往上走,窗口位置在周期内的漂移会吃掉剩余余量,于是出现了 Toggle 2.0 引入的 DQS。

DQS 是一条由颗粒输出的差分选通信号,它的边沿直接标出数据窗口的中心位置。 主控不再靠猜「数据相对于 RE 有多大偏移」,而是直接按 DQS 的边沿去采数据。

维度Toggle 1.0Toggle 2.0
选通信号无专用选通,靠 RE 与数据的关系隐式对齐引入 DQS 差分对,显式标出数据窗口
采样方式按 RE 的沿采样,用延时参数约束数据位置按 DQS 的沿采样,对数据位置漂移不敏感
速率档位较低的一档高一档,窗口需求明显更紧
布线复杂度差分对较少差分对数量增加,长度匹配要求更严
主控要求需支持源同步输出还需支持 DQS 的接收与相位搜索
状态表述较早引入的方案较新一代方案,具体能力以器件 datasheet 与规范原文为准
DQS 出现的意义不只是一个信号

在 DQS 出现之前,主控要回答的问题是「数据相对 RE 偏移多少」——这是一个需要 精确测量的问题。而在有 DQS 之后,问题变成「DQS 的边沿在哪里」—— 这是一个只需对齐的问题。

「测量」变成「对齐」,是高速接口设计中非常典型的一次降维。它同时降低了硬件难度与 验证难度:不必把相位测准,只要保证在 DQS 的有效沿附近采样即可。

3.4 Toggle 与 ONFI DDR 的差异对照

「Toggle」与「ONFI DDR」经常被混着说,但它们不是同一层的东西: ONFI 是规范,DDR 是采样方式,Toggle 是一套具体的时序来源。 把这三层分开,差异就一目了然。

对比项Toggle 系列时序ONFI 源同步 DDR(含 NV-DDR 族)
身份一套时序机制,源自厂商联盟推动规范中的一类接口模式
时钟的用法RE 差分时钟同时承担命令沿与数据沿命令与数据各有独立的时钟通道
选通1.0 无,2.0 引入 DQS按代际逐步引入 DQS 与独立 CK
命令与数据的耦合较紧,命令相与数据相共用同一条时钟较松,命令与数据通道可独立设计时序
写入侧窗口由 RE 的沿与协议规定的参数约束由独立的时钟与选通共同约束
降速运行可退回异步模式可在多档源同步速率间切换
能否共存同一料可同时支持异步与 Toggle 模式由规范与器件共同决定
写设计指南时最容易出错的一句

常见的错误表述是:「Toggle 就是一种 DDR 协议」或者「ONFI DDR 就是 NV-DDR」。 正确的表述应该分三层写:ONFI 是规范,定义了有哪些接口模式; DDR 是采样方式,描述一个周期内传几次;Toggle 与 NV-DDR 是具体的时序机制与代际。

把这三层分开后,「为什么不同厂商的料有时要写不同的驱动」就有了答案—— 因为它们支持的时序来源不同,而不是因为规范不同。

4. NV-DDR 系列

NV-DDR 是并行 NAND 源同步接口的 JEDEC 体系路线。它的特点是把命令与数据分成独立的通道,各配各的时钟,并在后续代际引入训练。本章讲物理组织、代际增量与训练机制。

4.1 NV-DDR 的物理组织:SIO0~7 与 DQS

NV-DDR 最需要理解的一件事是通道的划分。它的信号不是混在一起,而是分成三条通道: 命令通道、数据通道、选通通道。每条通道有独立的时间基准,因此可以独立设计时序。

NV-DDR 的引脚组织:命令与数据各有时钟,数据有独立的选通x8 配置的信号组织(示意)命令通道CLE# / ALE# / WE# / CE#数据通道SIO0 ~ SIO7(8 位双向)选通通道RE# / DQS / CK每条通道都有自己的时间基准,因此每条通道都要单独约束走线命令通道与数据通道的时序独立,主控可以边发命令边准备接收x16 配置的信号组织(示意)命令通道与 x8 相同(命令通道不分宽)数据通道SIO0 ~ SIO15(16 位双向)选通通道DQS 的作用范围随位宽而定位宽翻倍只发生在数据通道上:命令与选通通道的信号数量不变,但每条数据线都要单独做等长与阻抗约束,布板密度明显上升DQS 解决什么数据相对时钟有固定偏移由 DQS 明确标出数据窗口主控按 DQS 采样而不是按时钟x16 的额外代价引脚数与球栅规模上升布板与层数压力增加单位带宽的边际收益在下降并联多颗的代价每颗都要各自约束时序片间偏斜也要纳入预算共享总线让负载设计变难
图 7 · NV-DDR 的物理组织:SIO 数据通道、命令通道与 DQS 选通通道
通道典型信号时序基准对布线的约束
命令通道CE#、CLE#、ALE#、WE#(作为命令/写时钟)由主控驱动的时钟沿锁存控制沿之间要满足建立与保持,信号完整性要求中等
数据通道SIO0 ~ SIO7(x8)或 SIO0 ~ SIO15(x16)时钟沿或 DQS 边沿每一位都要等长、控阻抗;位数越多约束越重
选通通道DQS(部分代际含 CK)自身即时间基准差分对内部等长,对外与其他信号保持规定关系
状态通道R/B#、状态查询信号复用命令与数据通道跨通道的时序关系要在系统层统一约束

4.2 NV-DDR2 / NV-DDR3 的主要增量

NV-DDR 每一代的主要增量都集中在同一件事上:把有效窗口收窄这件事做得可控。 具体手段包括引入更多的时间基准(独立 CK、DQS)、引入训练流程、以及规范更细的时序参数体系。

需要强调的是:具体代号与各代的能力参数请以 JEDEC 发布的规范原文与器件 datasheet 为准。 本节只描述增量的性质,不给出逐项数值。

代际(按 JEDEC 体系)主要增量性质设计影响
NV-DDR 第一代建立源同步双沿机制,命令与数据共享时钟从异步跨到源同步第一次需要差分走线与相位余量设计
NV-DDR 第二代引入独立的时钟与选通结构,速率上一档从「共享时钟」到「分通道时钟」布线约束分通道,验证项明显增加
NV-DDR 第三代训练流程进一步标准化,速率再上一档从「参数保证」到「训练保证」上电流程变长,主控驱动复杂度上升
更高代际在窗口与速率上继续推进,部分机制仍在演进持续演进中必须按最新规范原文核对,不凭记忆填写
为什么这一章对电路设计者最有用

因为 NV-DDR 的代际差异,最终都会落成原理图上要不要多接一组信号、 PCB 上要不要多约束一组线、验证时要不要多跑一项流程这三个具体动作。

把代际差异按这三个动作翻译一遍,写出来的设计指南才能真正被原理图与Layout 工程师直接使用, 而不是停在协议名词的层面。

4.3 训练机制(写对齐 / 读对齐 / 训练窗口)

训练要解决的是一个具体问题:让写入端与读出端的时序边界对得上。 分两类:

  • 写对齐(write align):确定数据相对于写入时钟的位置,让每个数据都落在窗口内。
  • 读对齐(read align):确定读出数据相对于读时钟 / 选通的位置,让主控在正确的时刻采样。

训练窗口则是一个搜索范围:训练会在一个允许的时间窗内尝试若干位置, 观察哪些位置能稳定通过,选出可用区间。协议规定的训练窗口参数限定了这个搜索范围与步进方式。

训练类型要解决的问题搜索的对象典型的失败现象
写对齐写入数据相对写入时钟的相对位置未知数据与时钟之间的相位偏移写入后读回不一致,或 ECC 报错集中在刚写的页
读对齐读出数据相对读时钟 / 选通的位置未知采样点相对数据窗口的位置读出随机数,或 ECC 在读侧大面积报错
训练窗口搜索范围与步进方式需要协议约束相位位置的可用区间换个温度或换颗料就失效,说明余量不足

4.4 控制器能力不等于颗粒能力

这是本系列文档反复强调的一条:「主控支持 NV-DDR3」和「你这颗料能跑在 NV-DDR3 档位」是两件事。 把这两件事混为一谈,是高速接口调试中最常见的预期偏差来源。

能力项主控侧的条件颗粒侧的条件不匹配时的典型现象
协议版本支持主控的驱动与控制器支持该代接口颗粒 datasheet 明确该模式可用模式切换命令能返回成功,但读不出数据
最高速率档位主控在给定参考时钟下能分频出目标速率颗粒在 PVT 全范围内都能满足该档的时序参数常温能跑、高温或换批就偶发出错
训练能力主控能执行完整训练流程并判定结果颗粒提供协议规定的训练响应训练返回成功,实际时序边界并不对齐
并行能力主控有足够的 GPIO 与时序资源封装与引脚配置支持该位宽特定位宽下某些引脚被占用或复用
降速能力主控实现了多档速率切换与异常回退颗粒支持对应的低档位一次偶发错误后无法回退,只能硬复位
写设计指南时必须把这句话写进去

「本页列出的最高速率是器件能力上限,实际可用速率由 主控控制器、驱动版本、参考时钟配置、训练结果与 PVT 条件共同决定。 任何一方不满足,都必须降到下一个速率档位运行。」

这句话不是免责声明,而是功能定义的一部分。 没有它,调试阶段的每一个偶发问题都会被当成「器件质量问题」, 而实际上大部分是速率档位选择与训练结果不匹配造成的。

相关报告 · 交叉引用 1 器件全部展开收起 ▾
点开类目即可展开:具体文档 / 章节(点章直接跳转到该章)
DDR/LPDDR(DRAM)
电路设计指南4
软件设计规范4
DDR2
章节(点章跳转,共 16 章)
DDR3
章节(点章跳转,共 16 章)
DDR4
章节(点章跳转,共 17 章)
DDR5
章节(点章跳转,共 17 章)
其他提及器件(共 5)
SPI NAND
电路设计指南
软件设计规范
Linux 驱动开发
样机问题排查
量产问题排查4
全志平台 SPI NAND NOR
章节(点章跳转,共 11 章)
海思平台 SPI NAND 量产常见失败
章节(点章跳转,共 11 章)
烧录成功但不开机 SPI NAND
章节(点章跳转,共 12 章)
瑞芯微平台 SPI NAND eMMC
章节(点章跳转,共 11 章)
系统设计指南3
eMMC
电路设计指南
软件设计规范
Linux 驱动开发
样机问题排查
量产问题排查
SD NAND
电路设计指南
软件设计规范
Linux 驱动开发
量产问题排查
PPI NAND(并行NAND)
电路设计指南
软件设计规范
Linux 驱动开发
量产问题排查