3. DDR上电时序要求(Power-Up Sequence)
3.1 为什么上电时序如此重要?
DDR 上电,不是简单地把电接通就行。内部有大量状态机、锁相环和灵敏放大器,这些模块对上电的顺序极其敏感。我刚开始调 DDR3 时,觉得只要电压给足,芯片就能工作。结果板子焊回来,DDR 死活初始化不过。查了两天,最终发现是 VDD 和 VDDQ 的上电间隔差了不到 1ms,芯片内部逻辑就乱了。
说白了,上电时序就是 DDR 芯片的"开机流程"。你按错了顺序,或者某个步骤启动太快,芯片就会进入未定义状态。轻则初始化失败,重则损伤器件寿命。
3.2 电源轨的上电顺序
DDR 通常有三路主电源:VDD(核心电压)、VDDQ(I/O 电压)和 VTT(终端电压)。此外还有 VREF 等参考电源。上电的先后顺序有硬性要求。
我个人的习惯是,先把三路电源的时序画在纸上,再去看原理图。你想想看,如果 VTT 比 VDDQ 早上电,终端电阻就会拉到不确定的电平,DQ 总线上的信号会乱跳。
- VDD 必须先于 VDDQ 上升,或至少同时上升。核心逻辑先供电,I/O 缓冲器后供电。
- VDDQ 必须先于 VTT 上升,或同时上升。VTT 是 VDDQ 的一半,必须等 VDDQ 稳定后才能建立。
- VREF 应在 VDDQ 稳定后建立,通常与 VTT 同期。
| 电源轨 | 典型电压(DDR4) | 上电顺序 | 关键要求 |
|---|---|---|---|
| VDD | 1.2V | 第1位 | 上升斜率 ≥ 0.1V/ms |
| VDDQ | 1.2V | 第2位 | 滞后 VDD ≤ 20ms |
| VTT | 0.6V | 第3位 | 滞后 VDDQ ≤ 5ms |
| VREF | 0.6V | 与 VTT 同期 | 精度 ±1% |
3.3 关键时序参数详解
JEDEC 标准定义了几个关键时序窗口,我在调试时都会逐一核对。以下是我常用的一张参数速查表:
| 参数 | 描述 | 最小值 | 典型值 |
|---|---|---|---|
| tVDD | VDD 从 10% 到 90% 的上升时间 | 0.1ms | 1-5ms |
| tVDDQ | VDDQ 相对于 VDD 的延迟 | 0ms | ≤10ms |
| tVTT | VTT 相对于 VDDQ 的延迟 | 0ms | ≤2ms |
| tCKstable | 时钟稳定前的等待时间 | 100μs | 200μs |
| tRESET | RESET# 保持低电平的时间 | 200μs | 500μs |
| tCKE | CKE 置高前的等待时间 | 500μs | 1ms |
3.4 时钟与控制信号的配合
电源稳定只是第一步。接下来是时钟和控制信号的配合。
差分时钟(CK/CK#) 必须在 RESET# 释放前稳定。我见过一个案例,时钟芯片的上电时间比 VDDQ 慢,结果 RESET# 释放时时钟还没锁住,初始化直接卡死。
RESET# 必须保持低电平,直到所有电源和时钟都稳定。释放后,芯片才开始内部初始化。
CKE 必须在 RESET# 释放后至少等待 tCKE 才能置高。CKE 是芯片的"使能开关",拉高后芯片才开始接受命令。
下面是完整的时序流程图,把整个上电过程串起来——
3.5 实际调试中的避坑指南
我调试过的 DDR 板子,少说也有几十块。上电时序这块踩过的坑,能列一个长长的清单。这里挑几个最常见的——
有一次,我用示波器量 VTT 和 VDDQ,发现 VTT 只比 VDDQ 晚了 0.5ms。虽然看起来差了一点,但终端电阻的建立时间不够,导致 DQ 信号在初始化阶段出现毛刺。解决办法是在 VTT 的电源路径上增加一个延迟电路。
还有一个容易被忽略的点——下电时序。虽然这一章讲的是上电,但实际工作中,上下电往往成对出现。我曾经因为下电时 VTT 掉得太慢,导致芯片在复位时进入了未知状态。建议你设计时把上下电的时序都检查一遍。
嗯,上电时序这块,说复杂也复杂,说简单也简单。核心就是三点:电源顺序不能错、延时参数要给足、实际波形要实测。做到这三点,DDR 上电这块基本就不会出大问题。