LPDDR/DDR PHY 训练:写均衡、读训练、Vref 与门控对齐
更新时间:2026-09-19。前置:DDR3/DDR4 控制器初始化、源同步接口、DLL 延迟锁相环。那篇讲了控制器初始化、刷新和命令时序;本篇聚焦为什么 DDR 控制器在上电后必须跑一整套**训练(training)**才能可靠工作,以及 LPDDR 高速化后的变化。
一、为什么必须训练
DDR 是源同步、双沿(DDR)、多字节 lane 并行接口:数据 DQ 随数据选通 DQS 一起发,接收端用 DQS 边沿采 DQ(见 源同步)。在 1~GHz 级速率下:
- 板级/封装走线不等长(fly-by 拓扑下时钟到各 SDRAM 颗粒先后到达)、字节 lane 间 skew、PVT(工艺/电压/温度)偏移、DLL/IO 延迟,使「数据眼」相对采样时钟偏移且每 lane 不同。
- 0.5UI(单位间隔)只有几百皮秒,固定延迟无法保证在数据眼中央采样。
- 因此上电/复位后由控制器(PHY)发起一系列读写训练,逐 lane 测出最佳延迟/相位/Vref,把采样点调到眼中央,并在温度变化时重训。
二、主要训练项
1. Write Leveling(写均衡)
DDR3 起时钟/命令采用 fly-by 拓扑(时钟串行经过各颗粒以改善信号完整性),导致每个 SDRAM 看到 CK 时刻不同,而 DQS 需与 CK 满足 tDQSS 建立关系:
- 控制器让 SDRAM 进入 write leveling 模式,控制器逐步移动 DQS 相位;SDRAM 用自己看到的 CK 采样 DQS,把 0/1 反馈通过 DQ 传回。
- 控制器据此为每个颗粒/lane 调 DQS 发送延迟,使各颗粒处 DQS 与 CK 的相位关系都满足——补偿 fly-by 时钟倾斜。
2. DQS 门控训练(Read/Gate Training)
读数据时控制器用 DQS 作选通,但 DQS 在无数据时是高阻/不确定,必须在正确时刻「打开/关闭 DQS 使能门」(read gate),既不能太早(采到噪声/前一拍)也不能太晚(漏掉数据位):
- gate training 让 SDRAM 发已知读 pattern,PHY 扫描门控窗口,找到能稳定接收完整突发的门控延迟(同步 DQS 到来)。
- 这是防止读到假数据的关键。
3. Read Data Eye / Read Centering(读中心对齐)
- 控制器发读命令,SDRAM 回 DQ+DQS;PHY 逐拍扫描内部 DQS 延迟/相位,采已知训练 pattern(如 0x00/FF/55/AA),统计通过/失败,测绘每个 lane 的数据眼,把采样点放在眼宽中心(水平 centering)。
- LPDDR 常半字节/字节独立训练。
4. Write Centering / Write Training(写中心对齐)
- 类似但方向相反:PHY 调整 DQ/DQS 的发送相位,让 SDRAM 在它的 DQS 沿能正确采 DQ;通过 SDRAM 返回的校验/MPR(multi-purpose register)读回结果判断,找到发送最佳点。
- DDR4 有 write CRC、MPR 读回;LPDDR 有 CA training 等。
5. Vref 训练(电压域中心)
- 高速下不只要水平居中(时间),还要垂直居中(电压):DQ 接收参考 Vref 决定 0/1 判决门限。
- 扫 Vref 码 × 采样延迟(二维眼图 Shmoo),找眼图面积最大、裕量中心的 (Vref, delay) 组合,兼顾噪声和定时裕量(DDR4/LPDDR 内部 Vref 可调)。
6. ZQ 校准
- 片外/片内精密参考电阻 ZQ 用来校准 ODT(片上终端)、输出驱动阻抗(RON),补偿工艺和温度;上电跑长校准、周期性短校准(见 DDR 初始化 的 ZQCL/ZQRS)。
- 不是时序训练但属于 PHY 校准链,影响信号质量/眼高。
7. 其他
- CA training(命令/地址):LPDDR3/4、DDR5 支持,校准命令地址线与时钟对齐。
- PDA(Per-DRAM Addressability):DDR4 逐颗粒编程模式参数。
- read preamble/postamble、ODT、gear-down 等训练/配置。
- LPDDR 低电压(1.2/1.1/0.5V)、无 Vref 外部、WCK(写时钟,LPDDR5)等差异,训练项和时钟架构(LPDDR5 的 WCK/CK 双向、DFE)更复杂。
三、PHY 实现:延迟线/PI + 比较反馈
- 每个字节 lane 有独立的可编程延迟线/相位插值器(PI,见 DLL、源同步)调 DQS/DQ 发送与接收相位;DLL/PLL 产生多相时钟。
- 训练是「控制器发 pattern → 调延迟码 → 读回比较 → 二分/扫描收敛」的闭环,结果(delay/Vref code)存入 PHY 寄存器/影子表。
- 现代 PHY 带 2D 训练算法固件、DFE(接收判决反馈均衡,见 SerDes 均衡),并支持后台/周期性重训跟踪温漂。
四、训练顺序与重训
典型顺序(各代/JEDEC 规定略有不同):上电/复位 → 基础初始化/MR 配置 → ZQ 校准 → write leveling → read gate → read centering → write centering →(Vref 联合训练/CA training)→ 进入正常读写。顺序错误(如未 leveling 就读训练)会全部失败。
- 训练结果在固定温压点有效;芯片热起来后延迟漂移,需周期性/事件触发重训(温度中断、退出自刷新、大量比特错误)。部分控制器后台训练(避免停机),但要协调不与正常访问冲突。
- 仿真(SI/时序)给的初始码与真实硅片/板有偏差,训练正是用来吸收这些偏差,但必须保证训练能收敛(眼要睁开)。
五、常见的坑
- 跳过训练用固定延迟:PVT/板级 skew 下几乎必失败;高速 DDR 不能用经验写死相位。
- 训练顺序错:write leveling 未做先读训练,反馈全错。
- fly-by 拓扑理解错:不做 write leveling,远端/近端颗粒 tDQSS 违例。
- DQS 门控窗口错位:gate training 不准,读突发头尾出错或读到高阻噪声。
- 只做水平不做 Vref 训练:眼图垂直裕量不足,噪声下误码;要 2D Shmoo 找眼中心。
- 字节 lane 不独立训练:用一个延迟码管所有 lane,掩盖 lane 间 skew。
- ZQ 电阻/校准缺失:ODT/RON 不准,反射和眼高问题(见 SI)。
- 温度漂移不重训:冷启动训练通过,热机后误码;需要周期性 ZQ/training。
- 训练 pattern 覆盖不足:只测简单码,SSN/码间干扰下失败;要用多种 pattern(含同时开关噪声)。
- preamble/postamble 配置错:DQS 前导长度与门控不匹配,漏首拍或多采。
- LPDDR/不同代差异套用:DDR3/4/5、LPDDR4/5 时钟架构(WCK)、Vref、CA 训练不同,照搬失败。
- 训练期间被正常访问打断:原子性/仲裁没处理,训练结果损坏。
相关与延伸
命令初始化与刷新见 DDR3/DDR4 控制器;源同步原理见 源同步接口;延迟/相位部件见 DLL;接收均衡类比见 SerDes CDR。
总结
DDR/LPDDR 是多字节 lane 并行的高速源同步双沿接口,fly-by 时钟拓扑、走线 skew 和 PVT 偏移使数据眼只有几百皮秒且逐 lane 不同,固定时序无法在眼中央采样,因此 PHY 上电必须闭环训练:write leveling 逐颗粒调 DQS 发送相位补偿时钟倾斜、DQS 门控训练对齐读突发的使能窗口、read/write centering 扫描延迟把采样点移到数据眼水平中心、Vref 训练在电压维找判决门限中心形成二维 Shmoo,再配合 ZQ 校准驱动阻抗/ODT 和 LPDDR 的 CA/WCK 训练;各 lane 用独立延迟线/相位插值器,训练必须按 JEDEC 规定顺序进行并在温漂后重训——跳训练、顺序错、门控窗口错位和只调时间不调 Vref 是四类最常见根因。