DQS 信号:差分对、相位与数据采集原理
DQS,全称 Data Strobe,也就是数据选通信号。这玩意儿是 DDR 里面最核心的信号之一,甚至比时钟 CK 还关键。你想想看,CPU 读写内存,数据能不能正确采到,靠的就是 DQS。
说白了,DQ 数据信号是跟着 DQS 跑的,不是跟着时钟跑的。这个观念很重要。
3.1 为什么 DQS 要做成差分对?
DDR 里面的 DQS 通常是一对信号:DQS_t 和 DQS_c。正端和负端,互补关系。
为什么不用单端?我一开始也觉得单端简单,多根线还占地方。但第一次在高速示波器上看波形时,我就明白了——信号在传输过程中,共模噪声的干扰远比你想象的大。单端信号容易受地弹、电源波动影响,而差分对能天然抑制共模噪声。
差分对的好处:
- 抗干扰强:外部噪声同时耦合到正负端,差分后相互抵消
- 参考点稳定:不用依赖板上的地平面,信号质量更干净
- 时序精度高:交叉点位置由正负端交叉决定,不受阈值漂移影响
我做过一个项目,前期为了省一根线,把 DQS 差分改成了单端参考地平面。跑低频没问题,一跑到 1600MT/s 以上就各种误码。后来换回差分,问题全部消失。嗯,这个教训很深刻。
3.2 DQS 与时钟 CK 的相位关系
很多人搞不清楚 DQS 和 CK 到底什么关系。我简单说一下:
CK 是系统时钟,全局同步用的。而 DQS 是数据时钟,只在读写操作时存在。读数据时,DQS 由 DRAM 驱动;写数据时,DQS 由控制器驱动。
最关键的一点是:DQS 和 CK 之间是异步关系。也就是说,它们之间没有固定的相位关系。那 CPU 怎么对齐?这就是 CA 训练要做的事,但那是后面章节的内容。
对于 DQS 本身,我们需要关注的是 DQS 与 DQ 之间的相位。读操作时,DQS 的边沿正好与 DQ 数据眼的中心对齐。这个相位差是 90 度。
为什么会是 90 度?因为 DDR 采用源同步设计,DRAM 发送数据时,会把 DQS 信号延迟 90 度,让 DQS 的边沿落在 DQ 的稳定区间。接收端直接用 DQS 边沿去锁存 DQ,就能采到正确的数据。
| 操作类型 | DQS 驱动端 | DQS 与 DQ 相位关系 | 采样方式 |
|---|---|---|---|
| 读操作 | DRAM | DQS 边沿对齐 DQ 数据眼中心 | 上升沿+下降沿都采样 |
| 写操作 | 控制器 | DQS 边沿对齐 DQ 数据眼中心 | 上升沿+下降沿都采样 |
3.3 数据采集的原理
DQS 怎么用?简单讲就是:控制器用 DQS 的边沿去采样 DQ 总线上的数据。
具体流程如下:
- 读操作开始时:DRAM 先拉低 DQS,进入前导码(preamble)状态
- 前导码结束后:DQS 开始翻转,每个边沿对应一次数据传输
- 控制器内部:用 DQS 的上升沿和下降沿分别采样 DQ 总线
- 每个时钟周期:传输两个数据位,这就是 DDR 的名字由来
控制器内部实现时,通常会先把 DQS 延迟 90 度(或者把 DQ 延迟 90 度),让采样点落在数据眼中心。这步就是 DQS 训练的核心。
我遇到过一个 bug,读数据时老是随机错位。查了好久,发现是 DQS 的延迟寄存器没配置对,导致采样点落在了数据翻转区域。你看,时序上差一点点,结果就是天壤之别。
// DQS 延迟调整的典型配置寄存器
// 不同厂商的 DDR PHY 实现不同,但思路一致
// 设置 DQS 读延迟:0~63 个延迟单元
DQS_RD_DELAY = 0x20; // 32 个延迟单元,约 90 度相移
// 设置 DQ 采样延迟:与 DQS 联动
DQ_SAMPLE_DELAY = DQS_RD_DELAY + ADJUSTMENT;
3.4 DQS 的完整结构
下面这张图可以帮你理解 DQS 在整个数据采集路径中的位置和作用:
3.5 DQS 的前导码(Preamble)
前导码是 DQS 开始翻转前的一段固定电平状态。读操作前,DRAM 会把 DQS 拉低一段时间,告诉控制器:数据要来了,准备采样。
我遇到过的情况:有个板子读数据时经常丢第一个数据。查波形发现,前导码长度不够,控制器还没准备好,数据就来了。后来延长了前导码,问题解决。
前导码的关键参数:
- tRPRE:读前导码时间,DDR4 通常要求至少 1 个时钟周期
- tWPRE:写前导码时间,DDR4 通常要求至少 1 个时钟周期
- 前导码过长会影响效率,过短会导致采样不稳
3.6 DQS 训练的核心目标
讲了这么多,DQS 训练到底在练什么?说白了就是两件事:
- 找到正确的采样相位:让 DQS 边沿对准数据眼中心
- 补偿走线延迟:消除 PCB 布线长度不同带来的时序偏差
DQS 训练的最终结果,就是控制器的接收路径能够稳定地采集到 DRAM 发来的数据,不管 PVT(工艺、电压、温度)怎么变化。
这部分内容在后续章节会详细展开,包括训练算法、调试工具和常见问题。但核心基础就是今天讲的这些——差分对结构、90 度相位关系、边沿采样原理。
记住这三个点,后面的内容就好理解多了。