3. LP模式状态机:LP-00, LP-01, LP-10, LP-11详解

好,咱们今天聊聊MPhy低功耗模式的核心——状态机。说实话,我刚接触MPhy那会儿,看到LP-00、LP-01这些编号,第一反应是「这跟DDR的电源状态有啥区别?」后来踩了坑才明白,这玩意儿完全是另一套逻辑。

MPhy的低功耗模式,说白了就是通过一组有序的状态切换,让物理层在空闲时尽可能省电。但省电不是目的,关键是唤醒要快。你想想看,手机屏幕一碰就亮,背后就是这套状态机在干活。

3.1 四个LP状态的定义

MPhy定义了四个低功耗状态,用两位二进制编码表示。第一位是线缆状态,第二位是时钟状态。我习惯这么记:0代表低功耗,1代表正常工作

状态 编码 线缆状态 时钟状态 典型功耗
LP-00 00 低功耗 关闭 ~1μW
LP-01 01 低功耗 运行 ~10μW
LP-10 10 正常工作 关闭 ~100μW
LP-11 11 正常工作 运行 ~1mW

关键点:LP-11其实不是真正的低功耗状态,它是进入低功耗前的「准备态」或者退出后的「恢复态」。我在项目中见过有人把LP-11当省电模式用,结果功耗完全没降下来。

3.2 状态转换条件

状态转换不是你想跳就能跳的。MPhy规范里规定了严格的转换路径。我画了个流程图,咱们边看边聊。

LP-00 线缆低功耗 时钟关闭 LP-01 线缆低功耗 时钟运行 LP-10 线缆正常 时钟关闭 LP-11 线缆正常 时钟运行 时钟使能 时钟关闭 线缆唤醒 线缆休眠 线缆唤醒+时钟使能 线缆休眠+时钟关闭 时钟使能 时钟关闭 MPhy LP状态转换图 实线:进入低功耗 虚线:退出低功耗

这张图我画了好一会儿。你看,状态转换其实遵循一个原则:每次只改变一个维度。要么动线缆,要么动时钟,不能同时动两个。为什么?因为同时切换容易出时序问题,我当年调试时吃过这个亏。

3.3 状态转换条件详解

咱们逐个拆解每个转换的条件。

LP-00 ↔ LP-01

这是最轻量级的转换。LP-00是深度睡眠,连时钟都停了。要切到LP-01,只需要把时钟重新使能。注意,这里线缆状态不变,还是低功耗模式。

我的经验:LP-00到LP-01的转换时间通常控制在几十纳秒内。如果你发现唤醒时间超标,先查时钟恢复电路,别急着改状态机。

LP-01 ↔ LP-11

这个转换涉及线缆唤醒。LP-01下线缆是休眠的,要切到LP-11,需要先唤醒线缆。唤醒过程包括阻抗匹配、共模电压建立等步骤。我曾经在一个项目中,线缆唤醒花了2μs,比预期多了1.5μs,最后发现是偏置电路设计有问题。

LP-00 ↔ LP-10

这个转换比较特殊,它同时改变了线缆和时钟状态。但你看图里,我画的是直接从LP-00跳到LP-10。实际上,规范允许这种「跳跃」,但前提是接收端能处理同时到来的两个变化。我个人建议,除非你对时序特别有把握,否则还是走LP-00→LP-01→LP-11→LP-10这条路径更稳妥。

LP-10 ↔ LP-11

这个跟LP-00↔LP-01类似,只是线缆已经处于正常工作状态。转换只涉及时钟的开关。嗯,这里要注意,LP-10状态下时钟关闭,但PLL可能还在锁定状态。如果你把PLL也关了,那唤醒时间就长了。

3.4 Mark状态

Mark状态是个容易被忽略的概念。说白了,Mark状态就是状态机在转换过程中,用来「标记」当前进度的一组中间态。MPhy规范里定义了Mark0、Mark1、Mark2三种。

  • Mark0:线缆处于低功耗,但已经准备好接收唤醒信号。相当于「半睡半醒」。
  • Mark1:线缆正在建立正常工作状态。这时候阻抗在变化,共模电压在爬升。
  • Mark2:线缆已经正常,但时钟还没稳定。等待PLL锁定。

避坑指南:我曾经在设计时忽略了Mark状态的时序约束,结果状态机在Mark1和Mark2之间来回跳,就是进不了LP-11。后来查了三天,发现是Mark状态的超时计数器配置错了。记住,每个Mark状态都有最大停留时间,超时了要触发错误处理。

3.5 状态机设计要点

最后,我总结几个设计时的关键点:

  1. 状态编码要留余量:除了LP-00到LP-11,最好预留几个编码用于调试。我习惯用0x1F、0x2F这些作为测试态。
  2. 转换时间要可配置:不同应用场景对唤醒时间要求不同。手机可能要求1μs以内,物联网设备可以放宽到10μs。把转换时间做成寄存器可配,后期调起来方便。
  3. 异常处理要完备:如果状态机卡在某个中间态,要有看门狗机制强制复位。我见过最惨的情况是状态机死锁,整条链路都瘫痪了。
  4. 功耗与性能的平衡:LP-00最省电,但唤醒最慢。LP-01省电少一点,但唤醒快。具体选哪个,得看你的业务场景。我一般建议:如果空闲时间超过1ms,用LP-00;短时空闲用LP-01。

好了,LP状态机这块就聊到这儿。记住,状态机设计没有银弹,多仿真、多验证,尤其是边界条件。下次咱们聊聊唤醒时序的具体优化方法。


公众号:蓝海资料掘金营,微信deep3321