4、上电与复位时序:VDD/VDDQ/VPP上电顺序、RESET#与CKE时序要求、JEDEC规范解读

各位同学,咱们今天聊一个特别“要命”的话题——上电与复位时序。

为什么说要命?我刚开始做DDR验证那会儿,就吃过这个亏。板子调了三天,DDR死活初始化不过去,逻辑分析仪抓波形抓到手软。最后发现,VDD和VDDQ的上电顺序差了那么零点几毫秒,整个系统就罢工了。嗯,从那以后,我对上电时序就再也不敢马虎了。

说白了,DDR颗粒就像一台精密的仪器。你开机的时候,得先给主电源,再给辅助电源,最后才能按启动按钮。顺序乱了,轻则报错,重则烧芯片。JEDEC规范里把这些要求写得明明白白,咱们今天就一条一条拆开来看。

4.1 电源轨道的“三兄弟”:VDD、VDDQ、VPP

DDR4/DDR5内部有三路主要的电源,我习惯叫它们“三兄弟”:

  • VDD:核心电压,给内部逻辑电路供电。DDR4一般是1.2V,DDR5降到1.1V。
  • VDDQ:IO接口电压,给数据输出缓冲器供电。DDR4也是1.2V,DDR5也是1.1V。
  • VPP:字线升压电压,用于行地址激活。DDR4是2.5V,DDR5是1.8V。

你想想看,这三路电如果同时往上冲,电流冲击会非常大。而且内部电路有依赖关系——核心逻辑没稳定,IO接口先上电了,那数据输出可能乱套。

JEDEC核心要求:

  • VDD和VDDQ必须同时上电,或者VDD先于VDDQ上电。
  • VDD和VDDQ之间的电压差,在任何时刻都不能超过0.3V。
  • VPP可以在VDD稳定之后上电,也可以同时上电,但绝对不能先于VDD上电。

我在项目中遇到过一种情况:板厂为了省成本,把VDD和VDDQ用同一个LDO供电,中间只加了个磁珠隔离。结果上电瞬间,磁珠两端压差过大,导致VDDQ比VDD高了0.4V,直接触发了芯片的ESD保护,系统反复重启。后来改成独立LDO供电,问题就解决了。

4.2 上电时序的“三段式”流程

JEDEC规范里,上电时序其实可以拆成三个阶段。我画了个流程图,方便大家理解:

DDR上电时序三段式流程 阶段一:电源斜坡 VDD/VDDQ/VPP上升 阶段二:复位保持 RESET#拉低保持 阶段三:CKE使能 时钟稳定后拉高 t0 关键时间参数: • tVDD:VDD从0V上升到稳定电压的时间,通常要求 ≤ 20ms • tRESET:RESET#拉低后,至少保持 200μs 才能释放 • tCKE:CKE拉高前,时钟必须稳定运行至少 5个时钟周期 • tXPR:CKE拉高后,需要等待 5*tCK 才能发送MRS命令

这个流程看着简单,但每个阶段都有坑。咱们一个一个说。

4.3 RESET#的“低电平保持”玄机

RESET#这个信号,名字上带个“#”,说明是低电平有效。上电过程中,它必须一直保持低电平,直到所有电源都稳定下来。

JEDEC规范里明确写了:

RESET#时序要求:

  • 在所有电源(VDD、VDDQ、VPP)达到稳定电压之前,RESET#必须保持低电平。
  • 电源稳定后,RESET#还需要再保持低电平至少 200μs(DDR4)或 2μs(DDR5)。
  • RESET#释放(拉高)时,上升时间不能超过 1μs。

我曾经遇到一个案例:客户用FPGA控制DDR的复位,FPGA上电比DDR慢。结果DDR先上电了,RESET#却还是高阻态(FPGA还没配置好),相当于复位没生效。DDR内部状态机乱跑,等FPGA拉低RESET#时,DDR已经进入未知状态了。后来在RESET#上加了个下拉电阻,确保上电期间是确定的低电平,问题才解决。

这里有个小技巧:RESET#的释放时机,最好比所有电源稳定时间再晚个1ms。别卡着200μs的边界,留点余量,板子量产时良率会高很多。

4.4 CKE时序:时钟稳定是前提

CKE(Clock Enable)是DDR的“总开关”。它拉高之前,DDR内部大部分电路都处于休眠状态。但CKE拉高有个前提——时钟必须已经稳定。

JEDEC规范里是这么说的:

参数 符号 DDR4要求 DDR5要求 说明
时钟稳定到CKE拉高 tIS ≥ 5个时钟周期 ≥ 5个时钟周期 时钟频率和占空比必须稳定
CKE拉高到命令有效 tXPR ≥ 5个时钟周期 ≥ 5个时钟周期 之后才能发MRS、ZQCL等命令
CKE低电平脉冲宽度 tCKE ≥ 3个时钟周期 ≥ 3个时钟周期 进入自刷新时要求

你可能会问:为什么是5个时钟周期?

其实这是DDR内部PLL锁相环的锁定时间。时钟刚上来时,频率可能还在抖动,PLL需要几个周期才能锁定到正确的频率和相位。5个周期是个保守值,实际芯片内部可能更快,但JEDEC为了保证兼容性,统一要求5个周期。

个人经验:

我在做DDR5验证时,发现有些颗粒对tIS特别敏感。如果时钟稳定后立即拉高CKE,偶尔会出现初始化失败。后来我把tIS放宽到20个时钟周期,问题就再也没出现过。所以我的建议是:CKE拉高前,至少等100个时钟周期,反正不差这点时间,稳定第一。

4.5 上电时序的“避坑指南”

这些年我踩过的坑,总结成几条,大家记一下:

  1. 电源斜坡时间不能太快:有些电源芯片的软启动时间太短(比如<1ms),会导致VDD上升过陡,引起浪涌电流。JEDEC建议斜坡时间在0.1ms到20ms之间。
  2. VPP的纹波要控制好:VPP是2.5V(DDR4)或1.8V(DDR5),纹波超过±5%就可能触发内部保护。我见过一个案例,VPP纹波达到200mV,DDR时不时报ECC错误。
  3. RESET#不能浮空:上电过程中,如果RESET#引脚悬空,内部上拉/下拉可能不确定。一定要加外部下拉电阻(通常4.7kΩ到10kΩ)。
  4. CKE拉高后别急着发命令:tXPR时间虽然规范说5个周期,但建议等10-20个周期再发MRS。尤其是DDR5,内部状态机更复杂,多等一会儿没坏处。

嗯,上电与复位这块内容,说白了就是“顺序”和“时间”两个关键词。顺序错了,芯片可能直接烧掉;时间不够,初始化可能失败。JEDEC规范给了底线,但咱们做产品,最好在底线之上再加点余量。

最后送大家一句话:上电时序,慢就是快。多等几毫秒,换来的是整个系统的稳定可靠,这笔账怎么算都划算。

本章核心要点回顾:

  • VDD/VDDQ必须同时或VDD先上,VPP不能先于VDD
  • RESET#保持低电平至少200μs(DDR4)或2μs(DDR5)
  • CKE拉高前,时钟必须稳定至少5个周期
  • 所有时序参数建议留20%以上的余量

公众号:蓝海资料掘金营,微信deep3321