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 只要满足最小值就行,没必要给余量。
上面这张图把三大块串起来了。左边是规格,中间是信号完整性,右边是时序参数。下面我画了一条读操作的时序线,你可以看到 tRCD 和 CL 是怎么衔接的。我个人习惯在调参时先固定 tRCD,再微调 CL,这样读延迟不会出现大的抖动。
务必注意:我见过一些参考设计把 tRAS 设得特别大,以为能提高稳定性。实际上 tRAS 过大会增加行打开时间,导致其他行等待,整体带宽反而下降。建议 tRAS = tRCD + tCL + 2tCK 左右就够了。