· cpu / memory
为什么需要 RCOMP、校准和 Training
从电路节点到 DDR5:一步步理解高速信号反射(11)
前面把 RON 和 ODT 当成了等效阻抗。真实芯片里,它们并不是温度、电压和工艺变化下永远不动的理想电阻,所以系统需要校准和训练。
1. RON 不是一个固定的物理电阻
输出驱动器由晶体管和封装寄生组成。它的等效阻抗会随下列因素变化:
- 工艺角;
- 电源电压;
- 温度;
- 输出高、输出低以及电流工作点;
- 上拉和下拉支路;
- 封装、焊盘和封装到板级的寄生参数。
所以文档中出现的 $R_\mathrm{ON}=x\ \Omega$,通常应理解为特定条件下的目标或等效范围,而不是可以脱离条件测量的理想定值。
2. RCOMP 解决什么
可以把 RCOMP 抽象成一条“参考、比较、调整”的路径:
参考电阻/参考条件
|
v
比较实际驱动强度与目标
|
v
更新控制码或模拟偏置
|
v
I/O 驱动器和终端得到补偿
它的具体电路可能因控制器和 DRAM 不同而不同。这里最重要的不是背名称,而是理解它把 PVT 变化转换成了可控的 I/O 参数。
3. 校准和训练不是一件事
这两个词经常被放在同一段初始化流程里,但关注点不同:
| 阶段 | 主要问题 | 典型结果 |
|---|---|---|
| 阻抗校准 | 当前驱动器/终端大致应呈现什么阻抗 | 补偿状态或控制码 |
| 时序训练 | 何时采样数据最可靠 | 延迟、相位或窗口中心 |
| 电压训练 | 哪个参考电压有足够裕量 | Vref 或接收阈值 |
| 结果写回 | 把选出的设置应用到运行状态 | 最终运行配置 |
实际平台可能把多个动作合并在一个流程函数里,但分析时仍应把问题分开。
4. 一个不绑定厂商的初始化抽象
电源和时钟准备
-> DDRIO / pad 基础配置
-> 阻抗相关校准
-> DRAM / DB 基础初始化
-> 读写时序训练
-> Vref、CA、DQS 等相关训练
-> 结果检查和写回
-> 正常读写
这里的顺序只是分析框架,不是所有平台都必须完全遵循的固定步骤。尤其要注意:训练前固定配置、训练过程扫描、训练结果写回和正常运行时状态不是同一个概念。
5. JEDEC、平台和控制器各自负责什么
讨论“某个参数是不是 JEDEC 要求”时,至少要分三层:
协议/器件规范:定义外部可见的命令、模式和电气边界
平台设计:选择拓扑、走线、控制器和模块组合
固件实现:按当前平台设置寄存器、执行校准和训练
一个平台中的 RCOMP、Vref 或 pad 字段,不能因为名字出现在初始化代码里,就直接说成“协议规定了这个寄存器”。需要查看具体器件数据手册、控制器设计指南和平台代码。
6. 训练不是“调一个延迟”
训练的本质是用已知模式或反馈结果搜索一个可用窗口。例如某个参数扫描过程可以抽象成:
候选参数 p0, p1, ... pn
-> 发送或接收训练模式
-> 检查 pass / fail
-> 找到连续可用区间
-> 选择中心或满足约束的工作点
这类训练结果通常是当前 PVT、拓扑和频率条件下的选择。温度或电压变化后,系统可能需要重新校准、重新训练或使用平台定义的补偿机制。
本篇结论
RCOMP:帮助阻抗相关电路对抗 PVT 变化
校准:建立可用的阻抗/模拟基线
Training:搜索时序、电压和接口参数的工作窗口
下一篇把这些概念落到代码阅读:如何沿调用链识别基础配置、校准、训练接口和最终结果,而不把一个函数名直接当成物理结论。
References
- Micron DDR5 SDRAM:DDR5 的 DFE、ODT、DQS 监控以及 CA/CS/读写训练特性概览。
- Transmission line:PVT 变化最终如何通过阻抗和反射影响链路的基础模型。