第4章 DQS信号作用与特性
DQS这玩意儿,说白了就是LPDDR4里那根“时钟对数据的锚”。没有它,读写的时序就全乱套了。我刚开始调DDR时,总以为只要CA路径干净就完事了,结果发现DQS才是真正让系统稳定的核心——没有对齐的DQS,再好的CA线序也白搭。
4.1 读DQS与写DQS的相位关系
读DQS和写DQS,本质上是一对“兄弟”,但方向完全相反。写DQS是颗粒根据我们发出去的CA和命令,在内部生成的随路时钟;读DQS则是颗粒回传数据时,自己拉起来的一个边带信号。
核心要点:
- 写DQS:由控制器产生,通常与CA信号对齐,颗粒在DQS的上升沿和下降沿采样数据。
- 读DQS:由颗粒产生,返回到控制器,控制器用它来接收数据。
- 相位差:写DQS对CA是0度(或90度,取决于协议版本),读DQS则会因颗粒内部延时和PCB走线引入相移。
我遇到过最头疼的情况:读取数据眼图明明很开阔,但DQS的相位却偏离了半个周期。结果就是,控制器在错误的边沿采样到了上一拍的数据。那次排查花了整整两天,最后发现是PCB上读DQS差分对的等长没做够——其实就差了20 mil。
个人习惯:在仿真阶段,我会先单独检查写DQS与CA的相位差,控制在±50 ps以内。然后通过读训练,让控制器自动调整读DQS的延迟,直到眼图中心对齐。
4.2 差分DQS与单端DQS的区别
差分DQS(DQS_t / DQS_c)是LPDDR4的标准用法,单端DQS一般只在低端或老协议里出现。到底用哪个?我直接说结论:差分信号抗共模噪声能力更强,而且能提供更精确的边沿判定。
| 特性 | 差分DQS(DQS_t / DQS_c) | 单端DQS |
|---|---|---|
| 噪声抑制 | 共模噪声被抵消,抗干扰能力好 | 容易受电源噪声影响 |
| 信号摆幅 | 低摆幅,省功耗 | 需要较大摆幅保证Slope |
| 布线要求 | 必须等长、紧耦合 | 只需要单线,但对地阻抗要稳 |
| 系统应用 | LPDDR4/4X/5 标配 | 通常用于DDR3或低成本方案 |
为什么LPDDR4强制差分?因为频率上去了,单端那点噪声余量根本不够用。我记得有次项目为了节省BOM,想用单端DQS替代,结果在高温下大量读错误。后来只能改PCB,把DQS_c那条线补回来。
避坑指南:我曾经在一个四层板项目里,把差分DQS的间距拉到5倍线宽以上,结果差分阻抗严重不对称,眼图闭合。后来改成3倍线宽,并做了包地处理,才通过测试。差分对的间距,控制在2~3倍线宽最稳妥。
4.3 Strobe信号特性
Strobe,其实就是DQS的另一个叫法。它不仅仅是时钟,更是数据采样的“哨兵”。它的核心特性——边沿对齐数据,双沿采样,以及门控(Gating)控制——决定了整个训练流程的设计。
- 双沿采样:DQS的上升沿和下降沿都用来采样一个DQ位,因此DQS的频率是数据速率的一半。
- 数据眼中心对齐:读数据时,DQS的边沿与数据跳变沿对齐;写数据时,DQS的边沿与数据有效窗口中心对齐。这个关系在训练中会来回调整。
- 门控窗口:读DQS并不是一直有效的,它只在读突发期间输出。控制器需要用一个门控信号(DQS Gating)来截取有效窗口,否则会把总线浮空状态当作数据。
门控那块坑特别多。我在做LPDDR4调测时,曾经因为门控延迟设置太短,把后面几个字节的数据直接吃掉了。后来加了一段DQS_Gate_Calibration流程,才稳定下来。
// 伪代码:读DQS门控校准
void DQS_Gate_Calibration(void) {
// 先测出DQS门控的起始位置
uint32_t gate_start = find_gate_start();
uint32_t gate_len = find_gate_len();
// 确保门控窗口完全覆盖整个读突发
if (gate_len < 64) { // 8字节 * 8bit
gate_start -= 4; // 提前半个UI
}
set_gate_window(gate_start, 64);
// 验证
while (gate_cal_done == FALSE) {
adjust_gate_by_1_16_UI();
}
}
4.4 知识结构总览
下面这张SVG图,把本章的核心逻辑串起来了。你看一眼就能明白:DQS的作用、读写方向、差分与单端的分支,以及Strobe的特性——画在一起,挺清楚的。
4.5 总结几个实操要点
- 先调写DQS相位:让DQS边沿对齐到CA数据眼中心。我常用
Write Levelling命令来做初调。 - 再调读DQS相位:通过
Read DQS Training找到最优延迟。如果读训练失败,优先查PCB等长和阻抗。 - 差分对设计别偷懒:走线间距3倍线宽,等长控制在±5 ps以内。单端?除非你特别清楚自己在干什么。
- 门控窗口留余量:至少覆盖读突发全长再加半个UI。我习惯在门控校准循环里多做一次“前后移动1/16 UI”的验证。
好了,这一章的内容就到这儿。DQS的特性,说到底就是两根线、两种方向、一套规则。你能把读写相位、差分单端区别、Strobe的门控和双沿采样搞明白,后面的训练参数调优就有了地基。