一、DDR 内存系统概述:从 SDRAM 到 DDR5 的演进与基本原理
各位好,欢迎进入《CA 训练与 DQS 训练调试详解》的第一章。
在开始深入 CA(Command/Address)与 DQS(Data Strobe)训练之前,我们得先把 DDR 系统的底子打牢。你想想看,连内存的基本工作原理都不清楚,又怎么能理解那么复杂的训练过程呢?
我做硬件调试这些年,遇到过太多因为对 DDR 基本原理理解不透彻导致的信号完整性问题。有一次,一块板子在上电后 DDR5 颗粒怎么都通不过初始化训练,折腾了两天,最后发现是参考电压的布线路径太长,导致 CA 信号在门限电平附近徘徊,压根就没被正确采样。
嗯,这节课我们就从源头讲起。
1.1 DDR 内存的起源:从 SDR 到 DDR
最早的内存,叫 SDRAM(Synchronous Dynamic Random Access Memory)。它只有一个时钟沿,要么上升沿、要么下降沿,一个时钟周期只能传一次数据。说白了,它的传输速率就等于核心时钟频率。
后来问题来了:核心频率每提升一点,功耗就蹭蹭涨。我当年做 SDRAM 控制器调试时,非常深刻地体会到了频率提升带来的痛苦——信号反射、振铃、串扰,各种问题层出不穷。
工程师们想了个办法:能不能在一个时钟周期里传两次数据?
于是,DDR(Double Data Rate)诞生了。
DDR 的核心思想很简单——同时在时钟的上升沿和下降沿采样数据。这样,内部核心频率只需要做到一半,数据速率就能翻倍。比如 DDR-400,核心频率只有 200 MHz,但数据传输速率可以达到 400 MT/s。
| 内存标准 | 核心时钟频率 | 数据速率 | 预取位数 |
|---|---|---|---|
| SDRAM | 100 MHz | 100 MT/s | 1n |
| DDR | 200 MHz | 400 MT/s | 2n |
| DDR2 | 200 MHz | 800 MT/s | 4n |
| DDR3 | 200 MHz | 1600 MT/s | 8n |
| DDR4 | 200 MHz | 3200 MT/s | 8n |
| DDR5 | 200 MHz | 6400 MT/s | 16n |
核心概念:预取(Prefetch)是 DDR 演进最关键的技术。内部核心频率做不上去,我们就一条内存周期内从存储阵列中读更多的 bit,然后通过更高的数据总线速度打出去。这就是 DDR 能不断提速的秘诀。
1.2 DDR 的核心技术:时钟沿采样与差分时钟
DDR 的第一个标志性改进,就是使用了差分时钟——DQS 和 /DQS。为什么要有差分?因为单端信号在一片噪声里很容易被干扰。尤其是当速率变高时,信号眼图的质量急剧下降。
差分信号天生有共模抑制能力,抗干扰强。在 DDR 接口里,数据与 DQS 是严格对齐的。读操作时,DQS 由 DDR 颗粒产生,与读数据一起送往控制器;写操作时,DQS 由控制器产生,与写数据一起送往颗粒。
我记得第一次调试 DDR3 的读时序时,用示波器同时抓 DQS 和 DQ,发现边沿对不齐,读取的数据全是乱的。后来才明白,DQS 在训练阶段有一个精确的延时微调过程,而当时我完全没做这项工作。
这也就是我们整门课的核心——CA 与 DQS 训练。
1.3 DDR2 到 DDR4:频率与电压的不断变革
从 DDR 到 DDR2,预取位数从 2n 变成了 4n,数据速率翻倍的同时,参考电压也从 2.5V 降到了 1.8V。DDR2 最大的特点是引入了 ODT(On-Die Termination),终结电阻集成在芯片内部,不再需要数据总线上的外挂电阻。这也简化了 PCB 设计。
DDR3 又进一步,电压降到了 1.5V,预取提升到了 8n。它还新增了 CWL(CAS Write Latency)和 DLL(Delay-Locked Loop)的描述。哦对了,DDR3 废弃了 SSTL_2 和 SSTL_18,换成了 SSTL_15。
DDR4 的电压降到 1.2V,内部采用了 x16 的 Bank Group 架构,预取还是 8n,但 Banks 翻倍了。它的 DQ 信号速率最高支持到 3200 MT/s。
个人经验:我建议你在设计 DDR4 布线时,特别注意 DQS 和 DQ 的等长控制。我遇到过一块板子,DQS 比 DQ 短了 20 mil,结果写入数据时,DQS 的跳变沿早于数据到达,采样位置完全跑到了数据边缘上。后来通过软件补偿才勉强稳住。
1.4 DDR5:新架构与新挑战
DDR5 是当下最受关注的内存技术。它的预取提升到了 16n,核心频率依然在 200 MHz 左右,但数据速率直接干到了 6400 MT/s。
DDR5 最大的变化,是 DIMM 上的通道结构变了。以前一个 DIMM 只有一个 64-bit 的通道;现在一个 DIMM 有两个独立的 32-bit 通道。每个通道都有自己的 CA、DQS、CLK。这也就意味着,训练逻辑翻倍了。
另外,DDR5 里,参考电压 Vref 变成了内部生成,不再需要 PCB 上的 Vref 走线。但同时,CA 训练的分辨率要求更高了。每个 CA 信号都需要独立的延迟调整。
注意:DDR5 的 CA 训练不再是简单的整体延迟调整。它要求每个 Command/Address 信号单独调整到 DQS 的时序中心。这需要更精细的 per-pin 训练。如果你把 DDR3 的调试经验直接套在 DDR5 上,一定会出问题。
1.5 DDR 系统的基本架构
一个典型的 DDR 子系统,包含以下几个部分:
- 控制器(Memory Controller):在 CPU 或 SOC 内部,负责生成控制命令、地址和数据。
- 物理层(PHY):包含所有数据、数据选通、地址、控制信号的发送与接收缓冲器,以及训练逻辑。
- 通道(Channel):PCB 上的走线,连接控制器和 DDR 颗粒。
- DIMM / 颗粒:存储芯片。
整个系统的时序图大致长这样(用伪代码表示):
Clock ----____----____----____----
CMD ___________X___________X____
ADDR ___________A_B_C________X____
DQS ____/-------\____/-------\__
DQ ________________X___________
这里的关键是,CA 命令必须在时钟的正中间被采样,DQS 的跳变沿必须在 DQ 数据的有效窗口里。差一点都不行。
1.6 核心时序参数一览
| 参数名 | 全称 | 说明 |
|---|---|---|
| tCK | Clock Cycle Time | 一个时钟周期的时间。DDR5-6400 的 tCK 约为 312.5 ps。 |
| tRCD | RAS to CAS Delay | 行地址到列地址的延迟。 |
| tCL | CAS Latency | 从发出读取命令到第一个数据出现在 DQS 上的延迟。 |
| tDQSCK | DQS Rising Edge Output Access Time from CK | 读操作中,DQS 边沿相对于 CK 边沿的时序。 |
| tDQS2DQ | DQS to DQ Skew | DQS 与 DQ 之间的偏差。 |
1.7 本章小结
从 SDRAM 到 DDR5,每一代内存的核心变化,都围绕着三个维度:频率、电压、预取。频率越来越高,电压越来越低,预取越来越宽。DDR 的目标始终是:在尽可能低的功耗下,达到尽可能高的带宽。
而实现这一目标,离不开精确的时序控制——也就是我们接下来要重点讲的 CA 训练和 DQS 训练。
这张图展示了从 SDRAM 到 DDR5 的演进路径。注意最关键的变化并非核心频率,而是预取位宽翻了一倍又一倍。而 CA 与 DQS 训练正是为了在如此高的数据速率下,确保每个信号都能在正确的时间被正确采样。