多电源域上电顺序与上电窗口误动作
SD NAND / eMMC / SPI NOR / SPI NAND 电路的 VCC、VCCQ 与主控 IO 时序关系 —— 一份以「上电窗口」为主线的电源与总线设计参考 | 编制日期 2026-10-14 | 版本号 Rev 1.0
硬件调试里有一类问题特别磨人:存储器件「上了电却不干活」。示波器上电压明明已经到位,主控却读不到器件;或者器件在初始化阶段被一次假跳变带偏,表现为偶发挂死、偶发误写、上电即失败、换个温度又不复现。这类问题的根子不在「电没供上」,而在「电供上了、器件还没就绪」的那一段时间——上电窗口。
这份文档只讲一件事:上电窗口从哪里来、窗口内总线会发生什么、怎么把窗口内的误动作抑制掉。对象是 SD NAND / eMMC / SPI NOR / SPI NAND 四类常见存储器件,以及它们与主控之间的 VCC、VCCQ、主控 IO 三域时序关系,覆盖 POR / UVLO、斜率控制、PMIC / LDO 时序链、下电顺序、常电域热插拔与测试验证。文中电压、时间均为量级性参考,具体数值一律以器件 datasheet 与 JEDEC / SD / JESD 规范为准。
结论: 上电窗口内的总线误动作不是「运气问题」,而是「两侧电源就绪时刻不同步」的必然结果——抑制手段因此只有三条主线: 把窗口内的总线行为管住(上拉、门控、写禁止)、把窗口的起止变成可观测(PG、UVLO、监控器件)、把「等多久」换成「等到判据成立」。 固定经验值延时解决不了任何一类窗口误动作:它管得了时间,管不了总线。
读者路径
- 想先建立问题框架:第 1 章(窗口是什么、误动作从哪来)+ 第 2 章(器件怎么就绪)。
- 正在做电源与时序设计:第 3 章(域的组成与约束来源)+ 第 4 章(顺序设计方法)+ 第 9 章(电源器件选型)。
- 总线在窗口内出问题:第 5 章(四类误动作逐类抑制)+ 第 6 章(主控 IO 与复位配合)。
- 关心下电、常电域与热插拔:第 7 章(下电与掉电窗口)+ 第 8 章(常电域与热插拔场景)。
- 要定测试方案或板子已经出问题:第 10 章(测试与验证)+ 第 11 章(失效案例与排查)。
- 只想要结论:第 12 章(设计检查清单)+ 附录 A ~ D(术语判据、速查、核对表、专题边界)。
前言
存储电路的上电顺序问题,与普通数字电路有一个本质区别:存储器件有明确的「就绪前不响应」语义,而主控对此一无所知。主控按自己的时钟跑初始化,器件按自己的内部过程建立 readiness,两者的错位全部落在那段被称为「上电窗口」的时间里。这份文档把这段窗口当作一个正儿八经的设计对象来对待。
为什么单独讲这件事
多数器件类文档把上电顺序写成一条时序图加一句「请按建议顺序上电」。但在实际项目里,麻烦几乎从不来自「完全不顺序」——那种情况一上电就炸,太好查。真正难查的是这三类:顺序做了但没做判据(固定延时,换个批次或温度就失效)、顺序对了但总线在窗口内被乱说话(假 START、DAT 拉死、误写)、顺序在上电时成立、掉电时被忽略(写周期被打断、掉电窗口内误动作)。这三类问题的共同点是:现象偶发、与温度批次相关、复现需要特定电源条件,用「加个延时」试一次往往碰巧有效,于是错误的根因被保留到量产。
这份文档的做法是把上电窗口拆成可设计的量:窗口的起点和终点分别由什么决定、窗口内总线有哪几类典型行为、每类行为用什么手段抑制、怎么把窗口测出来、失效了按什么顺序查。全文的图表编号连续,正文引图一律写「第 N 章」而不做页内跳转,方便单独抽取某一章使用。
范围与边界
- 覆盖的器件:SD NAND(含 microSD 形态)、eMMC、SPI NOR、SPI NAND,重点是它们与主控之间的电源域与总线接口。
- 覆盖的电源器件:PMIC、LDO、DC-DC、负载开关、eFuse、电压监控器件、电源时序芯片,讲它们在时序链里扮演的角色,不涉及具体型号参数。
- 不覆盖的:充电管理与电池包细节(另属电源专题)、功耗预算与休眠保持(与低功耗电源门控专题相邻,边界见附录 D)、高速总线的信号完整性(另属接口专题)。
数值与引用约定
- 文中所有电压、时间、斜率均为量级性参考,用于建立设计直觉,不作为出图与下线的依据;落到设计上的一笔一画,一律以器件 datasheet 与所处规范为准。
- 协议流程只写机制与配置顺序,命令以标准命令名与命令号指代(如 CMD0、CMD1、ACMD41、读状态命令),具体命令号与位域定义以 JEDEC / SD 协会 / 器件规范为准。
- 不写具体寄存器地址、位域位置、选项字节默认值——这些内容随型号变化最快,写进通用文档只会误导。
如果只记住一件事,请记住这个判断顺序:先确认窗口的起止可观测,再确认窗口内总线被管住,最后才谈等多久。顺序反了——先用延时把问题「试没了」——是这类问题进入量产的最常见路径。
1. 上电窗口:误动作从哪里来
这一章把「上电窗口」定义成可设计的量,再回答三个问题:误动作从哪里来、有哪几类、后果有多重。后面所有章节都是这一章机制在具体接口、具体电源器件上的投影——顺序怎么排、总线怎么管、测试怎么测,都能回到这一章找到出处。
1.1 什么是上电窗口
存储器件从上电到可以可靠访问,中间有一段「电已到、器未绪」的时间。这段区间的两个端点都是可以严格定义的:
- 起点 t0:供电电压穿越器件内部 POR 的释放阈值、内部复位被解除的时刻。注意不是「电压达到额定值」的时刻——达到额定值之后还有一段内部过程。
- 终点 t1:就绪判据成立的时刻。对 SPI 器件是规定等待结束且状态寄存器可读;对 SD / eMMC 是初始化握手完成、进入命令接受状态。
两端之间的区间就是上电窗口。窗口里发生的事都发生在器件内部:内部稳压轨建立、时钟起振、寄存器复位、状态机初始化、接口 PHY 就位。这段过程里,器件对总线的响应能力是不确定的——规范通常只承诺「就绪前的命令不生效」,不承诺「就绪前的总线跳变无害」,这正是误动作的生存空间。
还有一个容易被忽略的事实:窗口在每一根电源轨上各有自己的起止。VCC 过了阈值不代表 VCCQ 过了阈值;VCCQ 过了阈值不代表电平转换器另一侧的主控 IO 轨过了阈值。多电源域系统的真实窗口,是这些单轨窗口在时间轴上的并集与交集共同拼出来的(第 3 章展开)。
| 要素 | 定义 | 设计含义 |
|---|---|---|
| 窗口起点 t0 | 供电电压穿越 POR 释放阈值的时刻 | 由斜率与阈值共同决定,随温度与批次漂移,不是固定时刻 |
| 窗口终点 t1 | 就绪判据成立的时刻 | 必须由判据定义,不能用固定延时代替 |
| 窗口宽度 | t1 与 t0 之差 | 设计量:要么压窄它,要么盯住它,而不是猜一个延时值 |
| 窗口内总线状态 | 器件 IO 未就绪期间的驱动与感应能力 | 决定误动作的类型与后果等级 |
| 窗口可观测性 | PG / UVLO / 监控器件提供的外部信号 | 把窗口从「看不见」变成「可触发、可测量、可联锁」 |
| 多轨窗口关系 | 各轨窗口在时间轴上的并集 / 交集 | 多电源域设计的真正对象,见第 3 章 |
「窗口」这个词容易让人以为是偶发的灰色地带。恰恰相反:只要电源斜率有限、器件内部建立需要时间,窗口就必然存在,它的宽度和起止都是可推导、可测量、可设计的量。设计要做的不是消灭它(消灭不了),而是三件事:压窄、管住、看住。
1.2 器件就绪的三个坐标轴
「就绪」不是一个点,而是三个坐标轴同时到位:电压(每根轨各自越过自己的阈值)、时间(斜率决定的穿越时刻加上就绪建立时间)、逻辑(总线电平被双方同时承认有效)。三个轴里任何一个没到位,窗口就没关上——而多数设计只盯着第一个轴。
- 电压轴:VCC 与 VCCQ 有各自的阈值与就绪点。一轨已过阈、另一轨没有的时候,跨接在两轨之间的 IO 会处于中间电平——对已过阈的一侧像高、对未过阈的一侧像低,同一根线被两侧读成相反的值。
- 时间轴:窗口宽度 = 上升时间(斜率决定)+ 就绪建立时间。斜率是双边约束:太快有倒灌与闩锁风险,太慢把窗口拖长并让 UVLO 在阈值附近抖动。
- 逻辑轴:总线翻转是否「算数」,取决于两侧是否都承认这个电平有效。窗口内一侧承认、一侧不承认,任何翻转都可能被解读成协议事件——这是四类误动作的共同根源。
三个坐标轴合起来给出一个实用的设计判据:在窗口内,总线必须保持「沉默」——没有协议意义上的翻转。这不是让总线物理上不动(毛刺无法绝对避免),而是让任何毛刺都不构成合法的协议事件。第 5 章的全部手段都服务于这一条。
| 坐标轴 | 观测量 | 窗口内的风险 | 设计判据 |
|---|---|---|---|
| 电压轴 | VCC / VCCQ 各自越过阈值的时刻 | 一轨已过阈、另一轨没有,IO 处于中间电平 | 两轨过阈时刻差与就绪等待匹配,差值有依据 |
| 时间轴 | 上升时间(斜率)与就绪建立时间 | 过快触发倒灌,过慢拖长窗口、UVLO 抖动 | 上升时间落在器件规定区间内,窗口宽度可计算 |
| 逻辑轴 | 总线电平被双方承认的有效性 | 一侧采样为高、另一侧为低,解读分裂 | 两侧就绪前,总线不得出现有效协议翻转 |
电源设计天然关注电压和时间——万用表和延时函数就能对付。逻辑轴没有仪器直接读,它只以「偶发的误动作」形式出现。漏掉逻辑轴的项目,典型症状是:电源图挑不出毛病、软件重试机制也能跑,但量产偶发挂死,示波器抓几次都抓不到。
1.3 上电窗口内的四类总线误动作
窗口内的总线误动作可以归纳成四类。它们的共同点是:都发生在「器件未就绪、主控已活动」的交叠区,差异在于毛刺以什么形式落在总线上、被谁解读成什么。四类不是互斥的——一次上电异常里经常同时出现两三类。
- 假 START / 假 STOP:时钟(或片选)为高期间,数据线出现非协议跳变,被协议引擎解读成一次起始或停止条件。I2C 类总线最典型;SD 的 CMD 线上等效于假命令边界,会让从机把后续位流当新命令解析。
- 总线被拉死:窗口内两侧同时驱动且方向相反——一侧推挽拉低、一侧开漏靠上拉保持——结果是总线被锁在低电平,通信完全中断,只能靠超时加强制恢复解脱。
- 误触发命令(含误写):毛刺凑巧拼出合法命令码并落在采样窗口里,器件(或已部分就绪的状态机)执行了不该执行的指令。危险等级最高的一类:一旦命中写命令,改变的是数据或配置。
- 假时钟:时钟线上的毛刺被当成有效沿,推动移位寄存器,导致数据位边界整体错位——表现为数据错一位、响应全错、CRC 校验失败。
| 类型 | 直接成因 | 典型接口 | 可检测性 | 首选抑制手段 |
|---|---|---|---|---|
| 假 START / STOP | 时钟为高期间数据线跳变 | I2C;SD 的 CMD 线 | 协议分析仪可见假帧 | 上拉 + 总线门控 + 写禁止 |
| 总线被拉死 | 两侧同时驱动、方向相反 | SD 的 DAT;I2C 的 SDA | 总线持续低电平、通信超时 | 开漏 / 三态 + 超时恢复 |
| 误触发命令 | 毛刺凑成合法命令码 | 全部接口 | 响应异常、状态突变 | 命令过滤 + 就绪判据 |
| 假时钟 | 时钟线毛刺被当成沿 | SPI;SD 的 CLK | 数据错位、CRC 错 | 时钟门控与保持 |
1.4 误动作后果的分级
同一类误动作,后果可以差出四个量级:一次假 STOP 可能只是让从机重新等一次帧头(无感),也可能把一次正在进行的写操作打断(数据损坏)。设计按最坏分级,验证按最常见分级——前者决定电路要做什么保护,后者决定测试要覆盖哪些场景。
| 等级 | 名称 | 典型表现 | 恢复方式 | 设计对策 |
|---|---|---|---|---|
| L0 | 无感 | 器件忽略该事件,总线无异常 | 无需恢复 | 依赖器件自身的命令过滤(不可全靠) |
| L1 | 可恢复 | 器件进入错误态,需重新初始化 | 复位或重新上电 | 初始化重试 + 通信超时机制 |
| L2 | 数据损坏 | 误写改变配置区 / OTP / 文件系统元数据 | 数据已变,不可恢复 | 窗口内写禁止 + 就绪判据优先 |
| L3 | 系统性失效 | 器件锁死、批量不良、需断电重来 | 断电重上电,量产返修 | 全链条时序设计 + 可观测性 |
「器件会忽略就绪前的命令」这句话只覆盖了命令通道,没有覆盖总线物理层。开漏引脚在窗口内被拉低、推挽引脚在窗口内抢驱,都属于规范没说的地方。把这些当成 L0,等于把器件的内部实现细节当成承诺——而实现细节恰恰是批次间最容易变的东西。
1.5 为什么「经验值延时」不够
「上电后延时 50ms 再访问」是最常见的经验值做法。它在绝大多数板子上「有效」,正因为有效,根因才被保留下来。延时失效的路径有六条,每一条都指向同一个结论:延时是充分条件,不是判据。
- 器件批次差异:POR 阈值与内部建立时间存在分散,不同批次的窗口起点和宽度都在动。
- 高低温:低温下斜率变慢、阈值漂移,窗口整体变宽;经验值在常温试出来,到低温就不够。
- 负载变化:去耦电容容量、板级负载、走线电阻都改变上升时间,改版即失效。
- 电源器件差异:LDO / DC-DC 的软启动时间有离散,同型号不同批次不一样。
- 时序链抖动:EN / PG 级联的延时随电源电压与温度抖动,累积误差不可控。
- 窗口内总线行为与延时无关:这一条最根本——假 START、DAT 拉死这类误动作由总线状态决定,主控「等多久」完全不改变总线在窗口内发生了什么。
| 失效场景 | 固定延时为什么失效 | 正确的替代 |
|---|---|---|
| 器件批次差异 | 阈值与建立时间分散,窗口起点平移 | 等就绪握手 / 状态判据,而非等时钟 |
| 高低温漂移 | 低温斜率慢、阈值漂,窗口变宽 | 全温域验证 + 判据化等待 |
| 负载与改版 | 去耦与走线改变上升时间 | 斜率受控设计(第 4 章)+ 窗口可测 |
| 电源器件离散 | 软启动时间批次间不同 | PG 联锁代替推算延时 |
| 时序链抖动 | 级联延时累积误差 | 时序芯片集中延时 + 监控器件兜底 |
| 窗口内总线误动作 | 主控等待不改变总线行为 | 总线门控 / 上拉 / 写禁止(第 5 章) |
把「等多久」换成「等到什么」:第一层是电源侧的 PG 信号(轨已就绪);第二层是器件侧的握手(初始化完成、状态寄存器可读且不忙);第三层是系统侧的可观测性(监控器件在窗口异常时给中断或复位)。三层都有的设计,窗口从「猜」变成「等」再到「看」。
2. 器件上电行为与就绪判据
这一章把「就绪」拆开:器件内部从上电到可访问经历了哪些物理过程,外部能用什么判据判断它走完了。第 3 章之后的所有电源域讨论,都建立在这一章的判据之上——不知道器件什么时候就绪,就没法判断电源域该谁先谁后。
2.1 内部 POR 与欠压锁定
器件内部有两道电压防线:POR(Power-On Reset,上电复位)负责在电压太低的时候把内部逻辑保持在复位态,电压越过阈值才释放;UVLO(Under-Voltage Lockout,欠压锁定)负责在电压跌落时停止响应、锁存状态,防止在「半饿」电压下产生半对半错的行为。两者的阈值通常不同:POR 释放阈值一般高于 UVLO 动作阈值,中间是迟滞区。
对窗口设计而言,内部 POR 定义了窗口起点的器件侧真值——但它有三个工程缺点:阈值有分散(批次间漂)、不可外部读取、迟滞区行为以器件内部实现为准。因此工程上普遍用外部信号来补:电源器件的 PG、以及独立的电压监控器件。外部信号的阈值是设计者自己定的,可读、可联锁、可测量,代价是它与器件内部 POR 之间存在一个「谁先谁后」的配合问题(第 6、9 章展开)。
| 机制 | 监测对象 | 动作 | 与窗口的关系 | 局限 |
|---|---|---|---|---|
| 内部 POR | 器件自身 VCC | 低于阈值保持内部复位,越阈释放 | 定义窗口起点的器件侧真值 | 阈值有分散、不可外部读取 |
| 欠压锁定 UVLO | 器件自身 VCC | 低于阈值停止响应 / 锁存 | 缩小「看似就绪」的无效区间 | 迟滞区行为以器件为准 |
| 电源器件 PG | 电源轨输出 | 通知下游「本轨已就绪」 | 提供可观测、可联锁的窗口边界 | 只代表电源侧,不代表器件侧 |
| 外部监控器件 | 被监控轨 | 复位 / 中断输出 | 把窗口边界变成可控动作 | 需额外器件与阈值设定 |
PG 的语义仅仅是「我的输出到了设定值」,它不保证负载(器件)已经就绪。但反过来,没有 PG 的系统连「电源侧何时就绪」都只能靠推算,窗口起止全部不可观测,第 10 章的测量和第 11 章的排查都会失去基准点。
2.2 上电到首次访问的等待
从 t0 到 t1 的等待不是一段空白,它可以拆成五个先后发生的阶段。拆开的意义在于:每一段的影响因素和外部可见性不同,能干预的手段也不同——前面几段靠电源设计干预,最后一段靠软件判据等待。
- POR 释放:内部复位解除。受阈值、斜率、温度影响,外部不可见。
- 内部轨建立:片内调节器 / 电荷泵到稳态。受负载电流影响,外部不可见。
- 时钟起振:内部振荡器稳定到可用频率。以器件为准,外部不可见。
- 状态机就绪:命令解析、写状态机、接口 PHY 进入可用态。外部不可见,但其完成度决定命令过滤行为。
- 协议初始化:SD / eMMC 的初始化握手、电压与模式协商;SPI 类的规定等待与状态读取。这一段在总线上可见,是判据化的落脚点。
| 阶段 | 内容 | 主要影响因素 | 外部可见性 |
|---|---|---|---|
| POR 释放 | 内部复位解除 | 阈值分散、斜率、温度 | 不可见(除非器件有 ready 引脚) |
| 内部轨建立 | 片内调节器 / 电荷泵到稳态 | 负载电流、去耦 | 不可见 |
| 时钟起振 | 内部振荡器稳定 | 以器件设计为准 | 不可见 |
| 状态机就绪 | 命令解析 / 写状态机 / PHY 就位 | 以器件设计为准 | 不可见(只通过行为间接反映) |
| 协议初始化 | SD / eMMC 握手;SPI 规定等待 | 时钟频率、命令序列、上拉 | 总线响应可见,可作判据 |
首次访问之前,总线应该保持的状态只有三件事:片选无效(CS# 保持高)、命令线上拉置高、时钟静止。这三件事是「窗口内不说话」的最低要求,也是第 5 章所有抑制手段生效的前提——门控、写禁止、弱保持,都是为了让总线在窗口内满足这三条。
2.3 VCC 斜率与上升时间约束
datasheet 对上升时间的规定是一个区间,不是「越快越好」的单边要求。这是斜率设计里最容易搞反的一点:
- 上升过快:电压以接近阶跃的方式加上,储能电容瞬间充电,产生倒灌电流与地弹;严重时可触发闩锁(latch-up)或损坏结构。软启动、RC 限斜率、负载开关的 Rise Time 控制都为压它而设。
- 上升过慢:电压长时间停在阈值附近,UVLO 与 POR 可能反复动作(窗口被「重新打开」),且窗口整体被拖长,与主控初始化的错位更大。
- 非单调上升:上升过程中出现回沟或跌落,等效于一次微型掉电,监控器件可能连续报警、器件可能多次复位。储能电容与电源器件的瞬态响应是关键。
- 多轨斜率不匹配:VCC 与 VCCQ 以不同斜率上升,域间电压差持续存在,倒灌电流与中间电平时间被拉长。
| 斜率情形 | 机理 | 后果 | 设计动作 |
|---|---|---|---|
| 上升过快 | 接近阶跃,储能电容瞬充 | 倒灌电流、地弹、闩锁风险 | 软启动 / RC 限斜率 / 负载开关档位 |
| 上升过慢 | 长时间停在阈值附近 | 窗口拖长、UVLO 与 POR 抖动 | 加强驱动能力 / 调整负载与去耦 |
| 非单调上升 | 回沟等效微型掉电 | 监控器件连报、器件多次复位 | 检查瞬态响应与储能容量 |
| 多轨斜率不匹配 | 域间电压差持续 | 倒灌与中间电平时间拉长 | 统一斜率策略(第 4 章) |
只压下限不限上限,会在低温、重载、低输入电压的角落把上升时间拖到器件规定区间之外;只压上限不限下限,又会把倒灌风险带进来。正确做法是把上升时间当成一个设计参数:算出最慢与最快两个边界,确认都落在器件规定区间内,而不是「软启动拧到最大」或「干脆不限」。
2.4 未就绪期间 IO 的行为
窗口内器件 IO 的行为,决定了四类误动作哪几类有可能发生。总的原则是:未就绪期间的 IO 不保证驱动、不保证采样、也不保证忽略——不同引脚类型有不同倾向,但都不该被当成承诺。
- 命令 / 数据线(SD 类):上电默认通常是开漏加上拉,或三态。开漏意味着它只会被拉低、不会被驱动高——这是总线拉死类问题的结构根源。
- SI / SO(SPI 类):SO 通常三态或极弱驱动;窗口内主控若采样 SO,读到的是上拉电平或浮空电平,没有意义。
- 片选 CS#:窗口内应保持无效。若主控在窗口内产生片选跳变,配合数据线毛刺就可能凑出一次假访问。
- 控制引脚(RESET# / WP# / HOLD#):有上电默认电平。RESET# 的默认态可能延长窗口;WP# 的默认态可能意外锁定写保护。这些引脚的默认值必须逐型号核对,不能想当然。
- 时钟 CLK:多数器件就绪前不采样时钟沿,但「不采样」不等于「无害」——部分就绪状态机可能已在对沿计数(假时钟类风险的来源)。
| 引脚类型 | 未就绪期间典型行为 | 设计含义 | 注意点 |
|---|---|---|---|
| CMD / DAT(SD 类) | 开漏 + 外部上拉,或三态 | 空闲电平由上拉决定 | 上拉取值影响窗口内电平与拉死风险 |
| SI / SO(SPI 类) | SO 三态或弱驱动 | 主控不应在窗口内采样 SO | 以器件 datasheet 为准 |
| CS# | 片选未决,应保持无效 | 窗口内避免片选跳变 | 片选毛刺 + 数据毛刺 = 假访问 |
| RESET# / WP# / HOLD# | 有上电默认电平 | 默认态可能改变窗口宽度或写保护 | 默认值逐型号核对 |
| CLK | 多数器件不采样沿 | 假时钟风险仍然存在 | 时钟门控比「假定不采样」更稳 |
2.5 命令过滤与忙状态
就绪判据在器件侧有两个对应物:命令过滤与忙状态。命令过滤指器件在未就绪(或内部忙)期间丢弃收到的命令——它过滤的是「命令」,不是「跳变」,第 1 章的四类误动作里只有误触发命令一类能被它挡。忙状态指器件通过状态寄存器(忙 / 就绪位)或总线响应(busy 信号)报告自己的进度——它是判据化的主要抓手。
由此得到软件初始化的一条基本原则:把「等多久」换成「等到某个可观测事件」。SD 类等初始化握手与电压协商完成;SPI 类等规定等待结束、状态寄存器可读且忙位清零。反模式同样常见:用固定次数的空读代替判据、用主控定时器代替器件状态——这两者都把窗口重新变回了「猜」。
上电判据:上电后第一次读状态,不忙且值合理,才认为窗口关闭。过程判据:写 / 擦除期间轮询忙位,不忙才发下一条。异常判据:忙位长时间不清(超过超时设定),按异常处理而不是继续等——这与第 5 章的总线超时恢复是同一套思想。
2.6 各接口就绪判据要点
四类接口的就绪判据形式不同,但都可以归到「总线响应可见」这一类。下表给出要点,具体流程以对应规范与器件 datasheet 为准。
| 接口 | 就绪判据(要点) | 窗口内总线应保持的状态 | 窗口内常见误动作 |
|---|---|---|---|
| SD NAND / microSD | 初始化握手完成、电压协商通过 | CMD 上拉置高、DAT 上拉、CLK 静止 | 假命令边界、DAT 拉死 |
| eMMC | 初始化完成,进入命令接受态 | CMD / DAT 上拉、CLK 静止 | 窗口内切高速、假 START |
| SPI NOR | 规定上电等待结束、状态寄存器可读 | CS# 高、SCLK 静止、SI 固定 | 假时钟、误读状态 |
| SPI NAND | 复位序列完成、状态不忙 | CS# 高、SCLK 静止 | 假时钟、特性寄存器误读 |
SD / eMMC 的低速初始化阶段不只是协议流程,它本身就是就绪判据的一部分:器件在低速下完成时序训练与参数协商,之后才允许切高速。在窗口边界上抢跑切高速,等于把高速采样问题叠加到未就绪器件上——这类失效在示波器上表现为「明明有响应、内容全错」。
3. 多电源域的组成与约束来源
第 1 章说明了窗口为什么存在,这一章回答「顺序要求到底是谁提出的」。存储电路的上电顺序约束来自五个地方:器件电气、接口协议、系统架构、电平转换、以及文档与人员习惯。只有分清来源,才能知道哪些约束可以妥协、哪些一步不能让——把「datasheet 建议」和「电气红线」混为一谈,是顺序设计里最常见的纠结来源。
3.1 典型电源域划分
一颗存储器件加一颗主控,最少可以划出三个电源域:器件 core 域(VCC / VDD)、器件 IO 域(VCCQ / VDDIO)、主控 IO 域。SPI NOR 常见前两者合并;SD NAND / eMMC 几乎必然分开;带电平转换器的设计还会有第四个要素——转换器两侧分属不同域。
- 器件 core 域:给片内逻辑、电荷泵、存储阵列供电。它不到,器件什么都不做——这是「先 core」论的来源。
- 器件 IO 域:给 IO 焊盘与输出驱动器供电。它决定总线空闲电平与驱动强度,也是倒灌电流的主要通路。
- 主控 IO 域:给主控的 IO 焊盘供电。主控的起跑时刻由自己的复位释放决定,与存储侧两个域没有直接关联——错位从此产生。
- 常电域与受控域(系统层):前者始终有电(standby 逻辑、唤醒源),后者受开关控制(主控核、存储、外设)。热插拔与待机唤醒场景里,这一层划分比前三者更关键(第 8 章)。
| 电源域 | 供电对象 | 典型电压量级 | 上电特点 | 常见来源 |
|---|---|---|---|---|
| 器件 core 域(VCC) | 片内逻辑、电荷泵、阵列 | 与工艺节点相关,1.8V 量级常见 | 不到则器件完全不工作 | PMIC / LDO / DC-DC |
| 器件 IO 域(VCCQ) | 器件 IO 焊盘、电平转换器一侧 | 1.8V 或 3.3V 两档常见 | 决定总线电平与驱动强度 | PMIC / LDO |
| 主控 IO 域 | 主控 IO 焊盘、电平转换器另一侧 | 1.8V / 3.3V | 决定主控起跑时刻 | 主控内部电源 / PMIC |
| 常电域 | standby 逻辑、唤醒源、保持寄存器 | 以系统设计为准 | 始终供电,是顺序链的锚 | 电池 / 常电 LDO |
| 受控域 | 主控核、存储、高速外设 | 以系统设计为准 | 受开关 / 使能控制 | 负载开关 / eFuse |
域划清楚之后,上电窗口就被切成若干段,每段有明确的起止与责任方:core 段归电源设计、IO 段归电平与上拉设计、主控段归复位与初始化设计。查问题时按域逐段排除,比盯着一整条混叠的总线波形高效得多——这也是第 11 章排查树按域组织的原因。
3.2 常电域与受控域
在器件级三域之上,系统级还有一层划分:常电域与受控域。常电域始终有电——standby 逻辑、唤醒源、需要掉电保持的状态;受控域可以被完全关断——主控核、存储、高速外设。这一层划分决定了「上电顺序」问题以什么形态出现:
- 纯受控域系统(整板一起上电一起掉电):顺序问题集中在「起跑错位」——窗口内总线误动作是主要矛盾。
- 带常电域系统:存储或总线保持器常电,主控反复上下电。顺序问题转化为「主控后上电时总线是否安全」(第 8 章),窗口误动作的矛盾让位给热插拔与带电插拔。
- 混合系统:部分存储常电、部分受控,同一块板上两种形态并存——设计规则必须显式区分每个器域归属,不能靠「大概是这样」。
| 维度 | 常电域 | 受控域 |
|---|---|---|
| 供电状态 | 始终有电 | 受开关 / 使能控制,可完全下电 |
| 典型内容 | standby 逻辑、唤醒源、保持寄存器 | 主控核、存储、高速外设 |
| 顺序链角色 | 顺序链的「锚」,提供时间基准 | 顺序链的「被执行者」 |
| 断电行为 | 不掉电(或仅保持电流) | 可完全下电,重新上电走完整窗口 |
| 设计重点 | 保持电流、数据保持、漏电 | 上电斜率、窗口、总线误动作 |
| 典型失效 | 保持数据丢失、待机电流超标 | 上电挂死、偶发误写、窗口内假帧 |
常电域的代价是永远存在的漏电流与倒灌通路:只要常电轨和非常电轨同时存在电压差,倒灌就一直在发生。常电设计的第一件事不是「谁先上电」,而是「倒灌电流有没有路、有多大、温度高了会怎样」——这个问题在受控域系统里不存在,在常电域系统里躲不掉。
3.3 顺序要求的真正来源
把各种「必须这样上电」的说法按来源分类,是顺序设计的第一步。不同来源的约束,违反后果和可妥协性完全不同:
- 器件电气约束:域间电压差上限、倒灌电流上限、闩锁条件。这是红线,违反的后果是器件损坏或永久失效,没有「偶尔没事」的余地。
- 接口协议要求:上电期间总线应保持的状态(片选无效、命令线上拉、时钟静止)。违反不损坏器件,但直接把误动作概率拉满。
- 系统架构约束:常电域锚点、主控复位释放时刻、唤醒路径。违反表现为挂死或初始化失败,通常稳定复现。
- 电平转换约束:转换器两侧电源就绪前不得使能输出。违反的后果是倒灌与假电平,属于电气与逻辑的交叉地带。
- 文档与人员习惯:datasheet 的建议顺序、历史项目的「惯例」。这类约束没有物理根因,但违反它意味着走进「未经最坏情况验证」的区域——要不要遵守,取决于你的验证覆盖度。
| 约束来源 | 说明 | 违反的典型后果 | 可妥协性 |
|---|---|---|---|
| 器件电气约束 | 域间电压差、倒灌电流、闩锁条件 | 器件损坏、永久失效 | 不可妥协(红线) |
| 接口协议要求 | 上电期间总线应保持的状态 | 假 START、误触发、DAT 拉死 | 不可妥协(可用设计替代实现) |
| 系统架构约束 | 常电域锚点、复位释放、唤醒路径 | 挂死、初始化失败 | 通常不可妥协 |
| 电平转换约束 | 两侧就绪前不得使能输出 | 倒灌、假电平 | 取决于转换器类型 |
| 文档与人员习惯 | datasheet 建议、项目惯例 | 无直接物理后果 | 可评估后偏离,需验证兜底 |
拿到任何一条顺序要求,先问:「违反它,最坏会发生什么?这个最坏是物理损坏还是行为异常?」物理损坏类(闩锁、倒灌超限)一步不让;行为异常类(挂死、误动作)可以用别的手段兜住——比如不按建议顺序,但把总线在窗口内完全管住。分不清这两类,就会要么过度设计,要么在红线上跳舞。
3.4 域间电压差与电流倒灌
只要两个域之间存在电压差,且 IO 引脚跨接两域,就存在倒灌(back-feeding)通路:电流从高电压域经 IO 的寄生二极管或导通的控制管,流向低电压域。倒灌的伤害分两层:直接伤害是超过器件规定的倒灌电流上限导致闩锁或退化;间接伤害是给未就绪域「半喂电」,让它的电压停在中间电平——既不是有效高也不是有效低,窗口被无限拉长甚至无法关闭。
工程上倒灌有五类典型通路,每一类都有对应的设计对策。核心思路只有一个:让电压差不存在,或者让倒灌没有路,或者让路限流。
| 倒灌情形 | 机理 | 量级因素 | 设计对策 |
|---|---|---|---|
| 一轨先到、另一轨未到 | IO 寄生二极管形成单向通路 | 电压差、寄生阻抗、温度 | 顺序控制 + 缩小到达时间差 |
| 持续电压差 | 两轨长期压差,倒灌持续存在 | 器件结构、结温 | 常电域统一供电或加阻断 |
| 上拉跨域 | 上拉源在一侧未就绪时供电 | 上拉阻值、电源就绪时刻 | 上拉接到先就绪的一侧 |
| 电平转换器倒灌 | 自动方向转换器单侧上电时导通 | 转换器类型与结构 | 换固定方向或带 OE 控制的型号 |
| 掉电逆向倒灌 | 一轨先掉、另一轨仍供着 | 储能容量、下电斜率 | 下电顺序与上电对称设计 |
倒灌超限不一定会当场击穿——更多是加速退化与间歇异常:高温下漏电流变大、保持性变差、偶尔功能错乱。这类问题用「上电试一下」永远试不出来,必须靠两条:设计上算出倒灌通路与量级,测试上做全温域长测。把倒灌当成数据手册里的一个小参数,是它最理想的生存方式。
3.5 电平转换器的窗口行为
电平转换器是域间总线交接的关卡,也是窗口行为最复杂的器件:它自己有两路电源,还有一路输出使能。三类信号(VCCA、VCCB、OE)的就绪顺序,直接决定窗口内总线被谁驱动。不同结构的转换器在窗口内的行为差异极大,选型就是选窗口行为。
- 固定方向 MOSFET 转换器:无源结构,未上电侧不驱动。窗口内天然安全,是方向固定场景的首选。
- 电阻分压网络:完全无源,但有静态电流、斜率失真与驱动能力问题,只适合低速单向。
- 自动方向转换器:靠检测电平判断方向,单侧上电时可能导通形成倒灌——这是窗口内假电平与倒灌的高发器件。
- 带 OE 控制的转换器:OE 未使能时输出三态,窗口内可以安全保持沉默;代价是 OE 时序必须受控,通常接 PG 或监控器件。
- 集成于主控的转换器:行为以主控手册为准,重点是核对 IO 域电源的就绪条件与上电默认态。
| 转换器类型 | 窗口内行为 | 主要风险 | 适用建议 |
|---|---|---|---|
| 固定方向 MOSFET 型 | 未上电侧不驱动 | 较低 | 方向固定场景首选 |
| 电阻分压网络 | 无源,输出电压随两侧变化 | 静态电流、斜率失真 | 低速单向、对功耗不敏感场景 |
| 自动方向型 | 单侧上电时可能导通 | 倒灌、假电平 | 不推荐用于窗口敏感的存储总线 |
| 带 OE 控制型 | OE 无效时输出三态 | OE 时序失控则失效 | 窗口内保持 OE 无效,OE 受 PG 控制 |
| 主控内置型 | 以主控手册为准 | 同自动方向型 | 核对 IO 域就绪条件与上电默认态 |
自动方向转换器用起来最省心(不用关心方向信号),但它的方向判断依赖电平检测:一侧上电一侧没上电时,检测结果可能是「半导不通」——输出被微弱驱动到中间电平,总线上出现既不像高也不像低的「灰电平」。存储总线对灰电平毫无抵抗力:假 START、DAT 拉死、误采样都从这儿来。多电源域的存储总线上,宁可用带 OE 的转换器多画一根控制线。