3、D-PHY物理层特性:差分信号、LP/HS模式切换、电压电平标准

大家好,我是老张。今天咱们聊D-PHY的物理层。说实话,很多工程师调MDIO时链路通了,但图像花屏、闪屏,最后查出来是物理层配置没对。我个人习惯把物理层比作“信号公路”——路修不好,车再好也白搭。

D-PHY物理层,说白了就是差分信号对加上两种工作模式:LP(低功耗)和HS(高速)。你想想看,手机摄像头每秒传几十帧高清画面,全靠这一对线在高速和低功耗之间来回切换。嗯,先从最基础的差分信号讲起。

3.1 差分信号:为什么非要用它?

D-PHY的数据线和时钟线都是差分对——Dp和Dn。信号不接地,而是靠两根线的电压差来表示逻辑“0”和“1”。

  • 抗共模干扰:外部噪声同时加到Dp和Dn上,差分信号只差,噪声被抵消。我在一个项目中遇到过电源纹波很大,换成差分后问题直接消失。
  • 低电压摆幅:HS模式下差分电压才200mV左右,功耗极低。
  • 无参考地依赖:发送端和接收端可以地电位不一样,差分对能容忍一定共模偏移。

关键参数:

  • 单端电压范围:0V ~ 1.2V(典型)
  • 差分电压(HS): |Vdp - Vdn| ≈ 200mV
  • 共模电压(HS): ~200mV(相对GND)

注意:差分对的PCB走线必须等长,不然skew会吃掉你的眼图。我曾经因为一条线长了2mm,导致800Mbps数据出错。忍了。

3.2 LP/HS模式切换:两个世界,一条线

D-PHY的每条差分线既要传低速控制信号(LP),又要传高速数据(HS)。怎么做到的?答案就是切换。

LP模式下,Dp和Dn分别独立驱动,电压是0~1.2V的单端逻辑。典型的LP状态有四种:

状态Dp电压Dn电压含义
LP-0000桥接(Bridge)
LP-0101.2VHS请求
LP-101.2V0高速退出 / 反向HS准备
LP-111.2V1.2V停止(Stop)

HS模式下,Dp/Dn变成差分对,驱动一个摆幅约200mV的差分信号。切换过程有严格时序:先通过LP-01请求,然后进入一个“桥接”期,最后差分驱动拉起来。我建议在设计MDIO脚本时,一定要检查从LP到HS的转换时间是否在规范之内(通常几十纳秒)。

避坑指南:我曾经在调试一块CMOS sensor时,发现LP-01请求后HS一直起不来。查了三天,最后发现是终端电阻没使能。D-PHY要求HS模式下终端电阻必须打开(100Ω差分),否则信号反射会把眼图关掉。

3.3 电压电平标准:别以为只是0和1.2

D-PHY的电压电平比标准GPIO复杂得多。HS模式下,共模电压Vcm约200mV,差分摆幅100~300mV。LP模式下,单端高电平=1.2V,低电平=0V。但注意:

  • LP接收器的阈值:VIL ≤ 0.3V,VIH ≥ 0.88V。
  • HS接收器的共模范围:50mV ~ 450mV(相对GND),差分阈值±50mV。
  • 发送端LP驱动:电流源型,输出阻抗约40~50Ω。

这里容易掉坑:很多开发板用3.3V电平去驱动LP模式,烧芯片是小事,关键是HS模式下的共模点会跑偏。我建议MCU或FPGA的D-PHY IO口必须用专用PHY芯片,或者确认IO支持MIPI电压。

⚠️ 警告:不要把普通GPIO直连D-PHY差分对!哪怕你只做LP通信也不行。差分线上的HS摆幅很小,普通GPIO的输入电容会把信号“吃掉”。

3.4 D-PHY物理层状态机简图

下面这张图梳理了从LP到HS再回LP的典型流程,也涵盖了主要的电压电平区域。我每次调试前都会先对着这个图看一遍链路,心里就有底了。

D-PHY 物理层状态切换与电压电平 LP-11 (Stop) Dp=1.2V, Dn=1.2V LP-01 (HS请求) Dp=0V, Dn=1.2V 桥接期 (Bridge) Dp=0V, Dn=0V HS 数据传输 200mV 差分 LP-10 (HS退出) Dp=1.2V, Dn=0V 回到 LP-11 Dp=1.2V, Dn=1.2V 说明:LP电压为单端0/1.2V;HS为差分约200mV;共模约200mV 切换时序严格,MDIO可以读取PHY状态寄存器验证

3.5 用MDIO能看什么?

既然咱们课程标题是《MDIO调试D-PHY链路问题》,那物理层特性跟MDIO有什么关系?嗯,我一般用MDIO读取PHY的以下几个寄存器来判断物理层是否正常:

寄存器地址名称能看什么
0x10PHY状态是否检测到D-PHY时钟、数据lane极性
0x11LP/HS状态当前D-PHY处于LP还是HS模式
0x12电压电平告警共模电压是否超范围、差分幅度是否不足
0x13链路错误计数CRC错误、Escape模式错误等

实战经验:有一次客户说摄像头间歇性黑屏。我通过MDIO读到0x12寄存器告警位为1,显示共模电压偏低。后来发现是PCB上Dp/Dn的差分对有一个过孔导致阻抗不连续,共模点偏移了30mV。重做PCB后问题解决。

3.6 小结一下

D-PHY物理层看着简单,其实细节很多。差分信号的共模范围、LP/HS切换时序、电压阈值这三个地方,是我在项目中踩坑最多的。你记住一句话:MDIO能帮你看到物理层的“心电图”——电压电平、模式切换、错误计数都能反映在寄存器里。调链路时先读这些,别闷头改代码。