一、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 训练。

DDR 内存演进与关键技术 SDRAM 单沿采样 1n 预取 DDR 双沿采样 2n 预取 DDR2 4n 预取 ODT 集成 DDR3 8n 预取 DLL 引入 DDR4 8n 预取 Bank Group DDR5 16n 预取 双通道 核心思想:预取位宽翻倍 + 电压逐代降低 + 频率保持稳定

这张图展示了从 SDRAM 到 DDR5 的演进路径。注意最关键的变化并非核心频率,而是预取位宽翻了一倍又一倍。而 CA 与 DQS 训练正是为了在如此高的数据速率下,确保每个信号都能在正确的时间被正确采样。