DQ 与 DQS 的时序关系详解
做 DDR5 的时序调优,DQ 和 DQS 的关系可以说是最核心的考点。很多人一开始看 spec 觉得就是几个参数的事,但真正在仿真和测试中,这些参数的相互作用会直接决定你的系统能不能跑稳。我最早接触 DDR4 时就被 DQ-DQS 的时序坑过一次,后来做 DDR5 才彻底搞明白——说白了,DQS 是 DQ 的“影子时钟”,但这对影子并不总是同步的。
源同步时钟的本质
DDR5 采用的是源同步时钟架构。什么意思呢?就是数据 DQ 和选通信号 DQS 是打包一起从颗粒发出来的。控制器不需要自己产生一个独立的采样时钟,而是直接用跟着数据一起过来的 DQS 去抓 DQ。好处很明显——时序路径短,不受系统时钟抖动影响。但坏处也在这里:一旦 DQS 和 DQ 之间的相对关系出问题,整个数据传输就崩了。
我个人的理解是:DQS 是一个“参考标尺”,DQ 就是被测量的对象。标尺的刻度(也就是 DQS 的边沿)必须落在 DQ 的有效数据窗口内,否则采样出错。
关键概念:DDR5 中,DQS 是在读周期由颗粒驱动,写周期由控制器驱动。但无论读写,DQS 的边沿总是对准 DQ 数据的中心(读)或边沿(写)。我们此处讨论的是读操作的时序关系,写操作会另有调整。
三个核心参数:tDQSCK, tDQSQ, tQH
要量化 DQ 和 DQS 的关系,JEDEC 定义了三个关键参数。我习惯把它们记作“一参考、一偏差、一窗口”。
| 参数 | 含义 | 个人理解 |
|---|---|---|
| tDQSCK | DQS 边沿相对于 CK(系统时钟)的延迟 | 基准参考,告诉你 DQS 在哪出现 |
| tDQSQ | DQ 边沿相对于 DQS 边沿的偏斜 | 偏差量,越大说明数据越“歪” |
| tQH | DQ 有效数据窗口的宽度(高电平阶段) | 实际能用的采样窗口 |
为什么这三个参数重要?因为仿真时我们需要把 tDQSQ 和 tQH 结合起来,判断 DQS 的采样边沿是否还有足够的裕量。
我的经验:很多新手只看 tDQSCK 去调延迟,但 tDQSCK 只告诉你 DQS 相对时钟的位置,真正决定数据能否采对的是 tDQSQ 和 tQH 的差值。有一次客户测出读 DQ 偶尔出错,仿真显示 tDQSQ 大了 20ps,直接把有效窗口吞掉了三分之一。
数据有效窗口的计算
数据有效窗口(Data Valid Window, DVW)可以简单看作 tQH 减去 tDQSQ 两侧的消耗。实际上还要考虑抖动、串扰等,但最基本的公式是:
有效窗口宽度 = tQH - 2 × tDQSQ
为什么是 2 × tDQSQ?因为 DQS 的边沿位于窗口中间,tDQSQ 定义了 DQ 边沿到 DQS 边沿的最大偏斜。左侧有一个 tDQSQ,右侧也有一个。如果这两个偏斜方向相反(最坏情况),有效窗口就缩小了 2 倍 tDQSQ。
注意:这个公式是简化模型。实际 DDR5 中还有 DQ-DQS 的建立时间 tDS 和保持时间 tDH,它们定义在 DQS 边沿两侧的额外约束。但 tDQSQ 和 tQH 来自颗粒的内部特性,更本质。
不同速度等级的参数对比
DDR5 有多个速度等级,参数差异很大。我整理了一个对照表,方便你快速参考:
| 速度等级 | tQH (ps) | tDQSQ (ps) | 有效窗口 (ps) |
|---|---|---|---|
| DDR5-4800 | 610 | 85 | 440 |
| DDR5-5600 | 523 | 75 | 373 |
| DDR5-6400 | 458 | 65 | 328 |
你看,频率越高,tQH 急剧缩小,而 tDQSQ 也在改善但幅度小,导致有效窗口越来越窄。320ps 除以 UI(312.5ps)大约只剩一个 UI 的宽度,非常紧张。
SVG 时间图:DQ 与 DQS 的时序关系
下面这张图我画了 DQ 和 DQS 的理想时序。红色虚线框标出了最坏情况下的有效窗口位置。你仔细看,DQS 的边沿正好落在数据眼中,但 tDQSQ 把数据边沿向右、向左拉长了,容易吃掉建立时间。
实际仿真中的调优策略
知道了这些参数的关系,面对仿真结果时该怎么办?我总结了三步法:
- 测量 tDQSQ — 用探头看 DQ 和 DQS 的边沿时间差。注意取最差值(所有 bits 中最大的那个)。
- 测量 tQH — 找到 DQ 信号高电平持续最短的那个 bit,记录宽度。
- 计算有效窗口 — 用上面公式,看窗口还剩多少。如果小于 150ps(对于 DDR5-6400),就需要优化 layout 或调整 ODT。
避坑指南:我曾经在一个 8-layer PCB 项目中,DQS 走线比 DQ 长了 300mil,结果 tDQSQ 超标 25%。后来通过蛇形走线做了等长,才把有效窗口捡回来。记住,等长不是等长度,而是等传播延时。
用表格总结关键公式
| 公式 | 用途 | 注意事项 |
|---|---|---|
| 有效窗口 = tQH - 2×tDQSQ | 快速评估裕量 | 忽略抖动和串扰,保守估计 |
| 裕量 = 有效窗口 - tDS(setup) | 检查建立时间是否满足 | tDS 来自 JEDEC,要加去嵌 |
| 裕量 = 有效窗口 - tDH(hold) | 检查保持时间是否满足 | tDH 通常比 tDS 宽松 |
特别提醒:DDR5 的 DQS 有差分信号(DQS_t / DQS_c),其交叉点才是采样时刻。仿真时不要只看单端波形,一定要看差分结果。交叉点抖动也会影响 tDQSQ 的测量值。