DDR4 基础:规格、信号完整性与时序参数

各位好,我是老张,做 DDR 接口验证有七八年了。今天咱们聊聊 DDR4 的基础,别看都是概念,我当年踩过的坑可不少。你想想看,如果连规格都搞混,后面调时序参数就是瞎折腾。所以第一章咱们把地基打牢。

1.1 DDR4 规格——到底「快」在哪里?

DDR4 相比 DDR3,最直观的变化就是电压从 1.5V 降到了 1.2V。嗯,这里要注意,这个 1.2V 是核心电压 VDD,而不是 VPP(2.5V)。我曾经碰到过新人把 VPP 接到 1.2V 上,结果颗粒毫无反应……那次教训挺深的。

另一个关键点是速率。DDR4 的数据速率起步 1600 MT/s,主流做到 3200,甚至 4266 也有。我个人习惯把「速率」和「频率」分开看:核心时钟频率只有 200~266 MHz,但通过 8n 预取(prefetch),数据总线频率飙到了 1600+。说白了,内部跑得不快,但外面传得快。

参数 DDR3 DDR4
VDD 电压 1.5 V 1.2 V
数据速率 800~2133 MT/s 1600~4266 MT/s
预取宽度 8n 8n
Bank 组数 8 / 16 Banks 16 Banks (4 Bank Groups)
命令/地址镜像 不支持 支持 (CA Mirror)
关键点速记:电压降了 20%,速率翻了一倍,Bank 分成组(BG)后行激活效率更高。

1.2 信号完整性基础——为什么有时候跑不动?

很多工程师以为只要时序参数设对,DDR4 就能稳定工作。实际我在项目中遇到过好几次,参数按手册配的,但眼图就是闭了。为什么呢?信号完整性没处理好。

  • 反射: 阻抗不连续就会反射。DDR4 要求单端 40Ω、差分 80Ω。我曾经见过 layout 把 VIA 间距拉太大,结果回损高到 -8 dB,数据眼直接就塌了。
  • 串扰: 特别是 DQ 与 DQS 之间的串扰。我建议在 PCB 上做 3W 间距(线宽 2 倍以上),否则你会看到大量的串扰噪声。
  • 眼图闭合: 在实验室调过眼图的都知道,DDR4 的 DQ 有效窗口只有 0.2~0.3 UI。你想想看,那么窄的窗口,一点噪声就能让采样点漂移。
避坑指南:我曾经因为忽略了 VREF 噪声(VREF 纹波超过 30 mV),结果眼图始终不过。最后发现是 VREF 去耦电容离颗粒太远。记住:VREF 走线必须短且粗,电容不能省。

1.3 时序参数概述——那些你不得不背的「暗号」

时序参数就是 DDR4 的「黑话」。我刚开始接触时,CL、tRCD、tRP、tRAS 搞得我晕头转向。后来我画了一个简图,把时序拆成「读」和「写」两条线,一下子就清楚了。这里我先给个概览,后面章节会一根一根拆解。

参数 全称 影响
CL CAS Latency 读命令发出到数据输出之间的延迟
tRCD RAS to CAS Delay 行激活到列选通的时间
tRP Row Precharge Time 预充电(关闭行)到下一个行激活的时间
tRAS Row Active Time 行激活后至少要保持的时间
tWR Write Recovery Time 写入后到预充电的最小间隔
我个人的小窍门:调参时先锁死 CL,再调 tRCD 和 tRP,因为 CL 对读写带宽影响最大。tRAS 只要满足最小值就行,没必要给余量。
DDR4 基础 — 三大知识模块 规格参数 VDD=1.2V / 速率↑ 8n预取 / Bank Group CA镜像 / 命令时序 信号完整性 反射 / 阻抗控制 串扰 / 3W间距 眼图 / VREF噪声 时序参数 CL / tRCD tRP / tRAS tWR / 读/写平衡 规格决定极限 → 信号完整性决定能否达到极限 → 时序参数在极限内找到最优平衡 读操作时序 — 四个关键参数的关系 ACT READ CL+AL Data Out tRCD CL 数据相位

上面这张图把三大块串起来了。左边是规格,中间是信号完整性,右边是时序参数。下面我画了一条读操作的时序线,你可以看到 tRCD 和 CL 是怎么衔接的。我个人习惯在调参时先固定 tRCD,再微调 CL,这样读延迟不会出现大的抖动。

务必注意:我见过一些参考设计把 tRAS 设得特别大,以为能提高稳定性。实际上 tRAS 过大会增加行打开时间,导致其他行等待,整体带宽反而下降。建议 tRAS = tRCD + tCL + 2tCK 左右就够了。