4. 自刷新机制原理

自刷新(Self Refresh)是 LPDDR 在系统休眠、屏幕关闭或主控暂停访问期间维持存储阵列数据完整性的核心机制。理解自刷新,不能只记“发一条命令就省电”这个结论,而要看清它内部如何被触发、由谁计时、温度变化时如何补偿、刷新命令如何被调度,以及退出时为什么必须满足同步要求。低功耗唤醒失败,很多根因就藏在这条链路的某个环节。

一、自刷新触发流程:从命令到内部接管

自刷新并非由控制器持续干预,而是控制器发出一次进入命令后,把刷新时序的控制权交给颗粒内部。典型触发流程如下:

  1. 控制器确认当前无未完成的高优先级访问,并完成必要的预充电与 bank 关闭。
  2. 控制器在命令总线上发出 SREF 进入命令,同时保持 CKE 为低电平。
  3. 颗粒锁存命令,关闭外部时钟依赖,切换到内部振荡器作为刷新时基。
  4. 内部刷新控制器按行地址顺序循环执行刷新,期间不再需要外部命令。
  5. 控制器需要恢复访问时,拉高 CKE 并等待 tXSR 满足后,才可发有效命令。

这里的关键是“控制权移交”。进入自刷新后,外部时钟可以停止,但颗粒内部必须继续工作。如果进入前 bank 未正确关闭,或命令与 CKE 时序不满足 tCKE、tCPE 等参数,颗粒可能进入异常状态,表现为后续唤醒无响应。

LPDDR 自刷新触发与内部接管流程 控制器空闲 无高优先级访问 预充电 / 关 Bank 满足 tRP 发 SREF 命令 CKE 拉低 内部振荡器接管 外部时钟可停 自刷新运行 循环刷新 颗粒内部自刷新控制单元 内部刷新定时器 tREFI 基准 温度补偿模块 高温加倍刷新 刷新命令调度器 行地址轮询 退出时:CKE 拉高 → 等待 tXSR → 恢复外部命令

二、内部定时器与温度补偿刷新

自刷新期间,颗粒依靠内部振荡器产生刷新节拍。这个节拍对应标准中的 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、命令总线,确认退出时序无毛刺。

自刷新机制的本质,是颗粒在外部“失联”期间自主维持数据,并在恢复时与控制器重新建立同步。触发流程决定能否正确进入,内部定时器与温度补偿决定数据能否保住,退出同步决定能否顺利唤醒。三者任一环节出问题,都会表现为低功耗唤醒失败。调试时应把自刷新当作一条完整链路来验证,而不是只盯某一条命令或某一个参数。