物理层 M-PHY 简介:速率、模式、线缆归纳总结
M-PHY 是 UFS 物理层的核心,说白了它就是数据在芯片间跑的那条“路”。你想想看,没有这条路,UFS 协议栈再牛也传不了数据。我刚接触 M-PHY 时也觉得它只是一堆参数,直到在调试链路训练时遇到速率协商失败,才真正理解这些参数有多重要。下面我把速率、工作模式和线缆规范揉碎了讲给你听。
速率等级:从 Gear 到 HS/PWM
M-PHY 的速率不是简单的一个数字,而是按 Gear(档位) 划分的。每个 Gear 下又分两种模式:高速模式 HS 和 低功耗模式 PWM。我习惯把 Gear 想象成汽车的档位——挂到不同档,跑的速度就不一样。
| Gear | HS 速率 (Gbps/lane) | PWM 速率 (Mbps/lane) | 典型场景 |
|---|---|---|---|
| Gear 1 | 1.248 | 3.9 | 初始化、链路训练 |
| Gear 2 | 2.496 | 7.8 | 低功耗数据交互 |
| Gear 3 | 3.744 | 11.7 | 普通传输 |
| Gear 4 | 5.808 | 15.6 | 高性能传输 |
| Gear 5 | 9.600 | 23.4 | UFS 3.1+ 高速 |
嗯,这里要注意:HS 模式 是差分信号,功耗高但速度快;PWM 模式 是单端信号,功耗极低但速度慢。我记得有一次在低功耗场景下忘切到 PWM,导致待机电流超标,后来改成 Gear 1 PWM 才过。
我的小技巧: 链路启动时先以 Gear 1 HS 做训练,等稳定后再升档。别一上来就冲 Gear 5,有些 host CPU 跟不上线速率。
工作模式详解
M-PHY 的工作模式不止 HS 和 PWM 这两种状态。实际上每个 Gear 下还有 子状态,比如 HS-G1A、HS-G1B 之类。但咱们做实操时,只需要掌握三个关键模式:
- HS-BURST:数据爆发传输,速率最高,必须差分线。
- PWM-BURST:慢速但省电,常用于控制命令或空闲期。
- STALL / HIBERN8:链路挂起或休眠,不传输数据,功耗几乎为零。
我曾经踩过一个坑:在 STALL 状态下发命令唤醒,结果忘记先切回 PWM-BURST 模式,导致链路超时。所以状态切换的顺序一定要记牢。
核心要点: 任何速率切换都必须经过 SAVE 帧确认,硬件自动完成,但软件侧要等待 ready 标志。
线缆与差分信号约束
M-PHY 物理层依赖 差分对(D+ / D-)传输。一条 lane 就是一对差分线。UFS 通常用 2-lane 或 4-lane 配置。线缆方面,我建议重点关注以下几点:
- 差分阻抗:必须是 100 Ω ±10%,否则回波损耗会把眼图压坏。
- 对间 skew:同一 lane 的两根线长度差不能超过 5ps(约 0.5mm),我那年就因为 PCB 走线差了 1mm,导致 HS 模式训练不过。
- 屏蔽:差分对之间建议加地线隔离,否则串扰会让误码率飙升。
警告: 不要把差分对跨过分割的电源层!我在一个项目中见过,结果 HS 速率从 Gear 4 直接掉到 Gear 1,找了两天才发现是参考平面不连续。
一张图看懂 M-PHY 知识结构
下面这张图把速率、模式和线缆的关系串起来了,每个节点都对应一个实操要点。
避坑指南:我亲手踩过的三个坑
- 速率协商顺序错乱:建立链路时不要直接发 HS-BURST 命令,必须先走 SAVE 帧 + Gear 1 PWM 握手。我曾经跳过了这一步,结果 host 和 device 的速率表对不上,链路直接挂死。
- 差分线走线跨分割:如上面 warning 所说,参考平面断裂会导致阻抗突变。我建议在 PCB 布局阶段就把差分对包在完整 GND 层上,宁可绕一点路也别跨缝。
- 忽视 PWM 模式时序:PWM 模式虽然慢,但上升沿/下降沿时间要求比 HS 更严。有一次我盲目延长了线缆长度,结果 PWM 模式下的头跳变丢失,训练超时。后来按 M-PHY 规范把线长控制在 15cm 以内才稳定。
一句话总结: M-PHY 物理层你只需要记住 Gear 决定速度上限,HS/PWM 决定实时功耗,差分线质量决定能不能跑上去。三者缺一不可。