2. UFS PHY 的物理层职责与分层架构

做UFS调优,你不能光盯着寄存器数值改来改去。得先搞明白——PHY在这套系统里到底扮演什么角色?它的边界在哪儿?

我刚开始接触UFS的时候,就犯过一个错。当时板子跑不稳定,我一股脑在PHY的TX端调摆幅、调预加重,折腾了两天,最后发现是协议层发下来的数据包格式就有问题。你看,如果对分层架构没概念,很容易把力气用错地方。

这一章,我们就先把物理层的职责和分层模型理清楚。地基打牢,后面调起参数来才有方向。

2.1 物理层(PHY)到底管什么?

说白了,UFS PHY 就是负责把 数字逻辑的“0和1”,转变成 线缆上能跑的“差分电压”,再在接收端把电压变回比特流。它不关心你发的是什么命令、什么数据——那是协议层的事。

具体来说,PHY 干这几件事:

  • 串行化与解串: 把并行的数据流(比如MIPI UniPro送过来的)转成串行比特,在MIPI M-PHY的差分线上用高速时钟传输。接收端再解回来。
  • 时钟恢复(CDR): 从收到的数据流中直接把时钟提取出来。没有单独的时钟线,全靠CDR锁相环干活。
  • 信号驱动与接收均衡: TX端负责把信号推到线路上,保证摆幅和压摆率合规;RX端用CTLE(连续时间线性均衡器)和DFE(判决反馈均衡器)来抵消通道损耗。
  • 电气空闲与唤醒: 管链路的Power Mode切换——休眠时切到低功耗模式(比如HS-G1的SLEEP状态),需要传输时迅速唤醒。
  • 阻抗与校准: 每次上电或链路初始化时,PHY会自校准TX/RX的阻抗、终端电阻,确保信号完整性。

记住一句话:PHY 是物理层的“搬运工”,但它搬得质量好不好,直接决定了你能跑多高的速率、误码率有多低。我们后面的所有参数调优,本质上都是在优化这个“搬运”过程。

2.2 UFS 的分层架构:三层模型

UFS协议栈分了清晰的三个层次。每一层只跟自己的邻居打交道,互不干扰。我个人习惯把这种结构想象成一个三层楼的小别墅:

  1. 最上层(UFS Protocol Layer / UPL): 应用层,处理SCSI命令、任务管理、设备管理等。你发个READ/WRITE命令,就是这层的事。
  2. 中间层(UniPro): 网络层+传输层,负责打包、路由、流控、错误重传。它不关心物理信号长什么样。
  3. 最底层(M-PHY): 物理层,就是我们调优的主战场。它只管信号的模拟特性——电压、时序、均衡。

你想想看,如果我们把M-PHY比作一条高速公路,UniPro就是交通管制中心,UPL就是决定发车的目的地和装载内容的调度员。

避坑指南:我曾经遇到过一位同事,在UniPro层发现链路经常超时,怀疑是PHY信号质量差,花了大量时间调TX的预加重。结果查到最后,是UniPro的流控缓冲区配置太小了。嗯,遇到链路问题,先确认是协议层还是物理层的问题,别上来就动PHY参数。

UFS 协议栈三层架构与PHY职责边界 UFS Protocol Layer (UPL) SCSI命令 / 任务管理 / 逻辑单元管理 UniPro (MIPI Upper Layer) 数据包封装 / 流控 / 错误重传 / 链路管理 M-PHY (Physical Layer) 串行化 / 时钟恢复 / 信号驱动 / 均衡 / 阻抗校准 🔧 PHY调优主要作用于M-PHY层,但需与UniPro的配置(如速率、PA状态)协同

2.3 M-PHY 在 UFS 中的角色

M-PHY是MIPI联盟定义的物理层标准,UFS选用了它作为物理传输层。它有几个核心特性,你一定要记住:

特性 描述 对我们调优的影响
差分信号 用Dp/Dn两条线传输,抗共模干扰强 PCB走线必须等长、差分阻抗100Ω
多速率支持 支持HS-G1(1248Mbps)、G2(2496Mbps)、G3(4992Mbps)、G4(9984Mbps) 速率越高,对通道损耗和抖动越敏感,参数调优难度剧增
PWM与HS模式 低功耗用PWM模式,高速用HS模式 不同模式下TX/RX参数差异很大,调优时需要注意切换场景
内置校准 通过M-PHY的Hibern8状态和校准序列完成阻抗匹配 校准不充分会导致阻抗失配,反射加大,波形质量变差

2.4 时钟与复位:让PHY先醒过来

PHY要干活,得有口“气”——这口气就是时钟和复位。

  • 参考时钟(Ref Clk): 通常来自主控SoC或独立晶振,频率一般是26MHz或38.4MHz。PHY内部会基于这个时钟生成各种所需的倍频时钟(比如生成HS-G4速率的9.984GHz串行时钟)。我建议在设计阶段就测量Ref Clk的相位噪声,它对CDR锁定质量有直接影响。
  • 复位信号: PHY的复位包括Power-on Reset(POR)和Hard Reset。复位时序必须严格遵守MIPI规范——比如复位信号的有效宽度,以及复位释放后到PHY Ready之间的等待时间。我在项目中遇到过因为复位释放太快,导致PHY上电校准失败的案例。

实战提醒:如果你遇到链路初始化失败或者频繁断开重连,先别急着调眼图参数。回头检查一下时钟频率是否稳定、复位信号是否干净。我有一次排查了一周,最后发现是时钟源换了一颗电感后相位噪声变差,CDR锁不住。

2.5 小结

这一章我们把UFS PHY的职责边界和三层架构过了一遍。核心就三条:

  • PHY管比特流的模拟传输,不负责协议解析。
  • UFS用M-PHY作为物理层,用UniPro做数据链路层。
  • 时钟和复位是PHY工作的基石,这俩出问题,后边怎么调都白费。