LPDDR4 内存接口信号简介

做 Write Leveling 调试,你首先得把接口信号搞明白。说白了,Write Leveling 就是在驯服 DQS 和 CK 之间的相位关系。但光盯着这两个信号还不够,DQ 和 CMD/ADDR 也得心里有数。我见过不少新手工程师上来就调 DQS delay,结果根本不对——因为连 CK 的边沿都没找准。

信号家族一览

先快速过一遍 LPDDR4 的主要信号。嗯,这里我按功能分成四组:

  • CK / CK# — 差分时钟,所有操作的基准。频率通常到 1600 MHz(DDR4-3200),甚至更高。
  • DQS / DQS# — 差分数据选通,用来锁存 DQ。写操作时由控制器发出,读操作时由 DRAM 发出。Write Leveling 的核心就是调 DQS 相对 CK 的延迟。
  • DQ[0:15] — 数据总线,单向(写方向),双向(读方向)。每个 byte lane 有自己的 DQS。
  • CMD/ADDR — 命令地址总线,包括 CS、WE、CAS、RAS、A[0:17] 等。这部分是单端信号,时序比较简单,但不能忽略。

一个关键点:LPDDR4 没有单独的 CLK enable 信号,CMD/ADDR 是在 CK 的上升沿采样的。而 DQS 在 Write Leveling 中会被控制器延迟,使得它的上升沿与 CK 的上升沿对齐。

时序关系的核心:CK vs DQS

为什么 Write Leveling 只关注 DQS 和 CK?因为 DRAM 内部用 CK 做参考,用 DQS 锁存 DQ。如果 DQS 到了 DRAM 端跟 CK 的相位不对,数据就采歪了。我在项目里遇到过一个板子,布线长了 300 mil,导致 DQS 比 CK 快了将近 200 ps。还好通过 Write Leveling 给 DQS 加了延迟,不然整个通道都废了。

正常写操作时,控制器必须保证 DQS 的边沿落在 DQ 的眼图中央。而 Write Leveling 阶段做的事情很简单:

  1. 控制器发连续写命令,DQS 以 CK 为基准被延迟。
  2. DRAM 内部的延迟锁定环(DLL)把 DQS 的边沿与内部 CK 对齐。
  3. DRAM 通过 DQ 输出一个特定 pattern(比如 0x55),告诉控制器“对齐了”。
  4. 控制器遍历延迟步进,找到能使 DQ pattern 翻转的边界点,取中间值作为最终延迟。

CMD/ADDR 的时序约束

CMD/ADDR 虽然在 Write Leveling 过程中不参与相位调整,但它们的建立/保持时间会影响整个初始化流程。我建议你在做 Write Leveling 之前,先用示波器看一眼 CMD/ADDR 相对于 CK 的 setup/hold。我记得有一次,因为 VREF 分压电阻偏差,CMD 信号的眼图只有 50 ps 的建立时间,结果 Write Leveling 死活训练不进去——不是因为 DQS,而是因为命令没被 DRAM 正确识别。

实战避坑:我曾经遇到过一块 PCB,板厂把 CK 和 DQS 的等长约束做反了,差分对内部长度差了 80 mil。那个板子 Write Leveling 全程失败,最后用示波器量才发现 CK 和 DQS 的布线长度完全不在一个量级。所以拿到新板,第一件事就是拿 TDR 量一下关键信号的走线长度差。

信号组对比表

信号组类型电平标准Write Leveling 中的作用
CK / CK#差分时钟1.1V 差分摆幅参考时钟,延迟调整的基准
DQS / DQS#差分选通1.1V 差分摆幅被延迟后对齐 CK 上升沿
DQ[0:15]单端数据1.1V CMOS回读对齐状态 pattern
CMD/ADDR单端控制1.1V CMOS发送写训练命令,必须满足 setup/hold

知识框架图:信号时序关系

LPDDR4 关键信号时序关系图 LPDDR4 Write Leveling 信号时序关系 CK / CK#(基准时钟) DQS / DQS#(数据选通) DQ[0:15](数据总线) DRAM 内部 DLL DQS 延迟后锁存 DQ CMD / ADDR(命令地址) setup/hold 约束 Write Leveling 延迟搜索 相位调整

这张图把四类信号的关系串起来了。你看到 CK 和 DQS 之间那条相位调整箭头了吧?那就是 Write Leveling 要干的事。CMD/ADDR 虽然不直接参与相位搜索,但它的建立保持时间决定了训练命令能否正常到达 DRAM。

个人习惯:在做 Write Leveling 调试前,我会先在示波器上同时抓 CK 和 DQS,测量它们的初始相位差。如果相差超过 2 个 UI(比如 625 ps 在 1600 MHz 下),我会怀疑 PCB 走线等长有问题。另外,记得把探头的地线尽量缩短,不然测出来的相位会受地弹噪声影响。我曾经因为这个多花了两个晚上排查。

小结一下

OK,这一章我们把 LPDDR4 的接口信号过了一遍。重点记住几个东西:

  • CK 是参考时钟,DQS 是被调整的对象。
  • DQ 在 Write Leveling 时用来回读对齐状态。
  • CMD/ADDR 必须满足建立保持时间,否则训练命令会被 DRAM 忽略。
  • 实际调试时,先测量走线长度差,再动延迟参数。

你想想看,这些信号就像交响乐的各个声部。CK 是指挥,DQS 是第一小提琴,DQ 是其他弦乐,CMD/ADDR 是定音鼓。Write Leveling 就是让小提琴的起拍子跟指挥的手势完全对齐。对齐了,整个通道才能演奏出干净的数据眼图。