4. 自刷新机制原理
自刷新(Self Refresh)是 LPDDR 在系统休眠、屏幕关闭或主控暂停访问期间维持存储阵列数据完整性的核心机制。理解自刷新,不能只记“发一条命令就省电”这个结论,而要看清它内部如何被触发、由谁计时、温度变化时如何补偿、刷新命令如何被调度,以及退出时为什么必须满足同步要求。低功耗唤醒失败,很多根因就藏在这条链路的某个环节。
一、自刷新触发流程:从命令到内部接管
自刷新并非由控制器持续干预,而是控制器发出一次进入命令后,把刷新时序的控制权交给颗粒内部。典型触发流程如下:
- 控制器确认当前无未完成的高优先级访问,并完成必要的预充电与 bank 关闭。
- 控制器在命令总线上发出
SREF进入命令,同时保持 CKE 为低电平。 - 颗粒锁存命令,关闭外部时钟依赖,切换到内部振荡器作为刷新时基。
- 内部刷新控制器按行地址顺序循环执行刷新,期间不再需要外部命令。
- 控制器需要恢复访问时,拉高 CKE 并等待
tXSR满足后,才可发有效命令。
这里的关键是“控制权移交”。进入自刷新后,外部时钟可以停止,但颗粒内部必须继续工作。如果进入前 bank 未正确关闭,或命令与 CKE 时序不满足 tCKE、tCPE 等参数,颗粒可能进入异常状态,表现为后续唤醒无响应。
二、内部定时器与温度补偿刷新
自刷新期间,颗粒依靠内部振荡器产生刷新节拍。这个节拍对应标准中的 tREFI,即平均刷新间隔。常温下,一颗 LPDDR 颗粒通常按每 tREFI 刷新一行来维持数据。但 DRAM 电容的漏电速度随温度升高而显著加快,因此仅靠固定定时器在高温下会刷新不足。
温度补偿刷新(Temperature Compensated Refresh,TCR)就是为此设计的。颗粒内部温度传感器实时检测结温,当温度超过阈值(常见如 85°C)时,刷新频率自动加倍,即 tREFI 减半。部分器件还支持更细的温度分档,例如 45°C、85°C、105°C 对应不同刷新倍率。
关键参数关系:温度升高 → 漏电加快 → 需要更短刷新间隔 → 内部定时器自动缩短 tREFI → 刷新电流上升。若温度补偿失效,高温下会出现位翻转;若补偿过度,则自刷新功耗异常偏高,影响待机续航。
调试时若发现设备在高温环境下唤醒后数据异常,而常温正常,应优先检查温度补偿是否被正确使能,以及 MR 寄存器中与刷新相关的配置位是否被误改。
三、刷新命令调度与退出自刷新的同步要求
自刷新内部并非“无脑刷新”,而是由调度器按行地址顺序轮询,确保所有 bank 的所有行在刷新周期内都被覆盖。调度器还要处理刷新与内部状态机的冲突,避免在敏感节点插入刷新导致时序违例。
退出自刷新是唤醒失败的高发点。控制器拉高 CKE 后,颗粒需要时间完成内部刷新收尾、恢复外部时钟同步、稳定 DLL/PLL(若存在),这段时间由 tXSR 定义。控制器必须在 tXSR 之后才能发有效命令,否则命令会被忽略或采样错误。
| 阶段 | 关键动作 | 关键参数 | 常见失败现象 |
|---|---|---|---|
| 进入自刷新 | 预充电、发 SREF、CKE 拉低 | tRP、tCKE、tCPE | 进入失败,颗粒未接管 |
| 自刷新运行 | 内部定时器循环刷新 | tREFI、TCR 阈值 | 高温数据丢失、功耗异常 |
| 退出自刷新 | CKE 拉高、等待 tXSR | tXSR、tCKE | 唤醒无响应、命令丢失 |
| 恢复访问 | 发 ACT/READ/WRITE | tRCD、tRP、tWR | 读回错误、训练失效 |
四、案例与复盘:一次高温唤醒失败
某移动终端在高温老化测试中偶发唤醒后花屏。常温复现困难,高温下概率上升。排查发现:控制器在退出自刷新时,CKE 拉高后仅等待了约 tXSR 的 70% 就发出了第一个 ACT 命令。常温下颗粒内部收尾较快,勉强能响应;高温下内部刷新收尾变慢,命令被吞掉,导致后续状态机错乱。
// 错误示例:退出自刷新等待不足
set_cke_high();
delay_us(3); // 实际 tXSR 要求 5us
send_act(bank, row); // 命令被忽略
// 正确示例:按最坏温度条件留裕量
set_cke_high();
delay_us(6); // 覆盖高温下 tXSR 最大值
send_act(bank, row);
复盘结论:退出自刷新的同步要求必须按最坏温度、最坏工艺角留裕量。不能只按常温典型值设计延时。同时要确认温度补偿刷新已使能,否则高温下即使退出时序正确,数据也可能已经丢失。
五、调试检查清单
- 进入自刷新前,确认所有 bank 已预充电,无未完成访问。
- 检查
tCKE、tCPE是否满足,CKE 与命令的先后关系是否正确。 - 确认温度补偿刷新已使能,MR 寄存器配置未被误改。
- 退出自刷新等待时间是否覆盖高温下
tXSR最大值。 - 唤醒后首次访问前,是否需要重新执行 ZQ 校准或读训练。
- 用示波器同时抓 CKE、CK、命令总线,确认退出时序无毛刺。
自刷新机制的本质,是颗粒在外部“失联”期间自主维持数据,并在恢复时与控制器重新建立同步。触发流程决定能否正确进入,内部定时器与温度补偿决定数据能否保住,退出同步决定能否顺利唤醒。三者任一环节出问题,都会表现为低功耗唤醒失败。调试时应把自刷新当作一条完整链路来验证,而不是只盯某一条命令或某一个参数。