D-PHY 物理层:不只是两根线的事
很多工程师第一次接触 MIPI D-PHY,都会觉得——不就是差分对信号吗?跟 LVDS 差不多吧?
这么说吧,我当年也这么想。结果第一次用示波器去点 CSI-2 总线,满屏的波形看得直发愣。D-PHY 里有两种完全不同的工作模式:高速模式和低功耗模式。它们的信号幅度、电压范围、时序要求,压根不是一个画风。你如果拿测普通串口的方法去量 D-PHY,很容易踩坑。
下面我把这套物理层的底细捋一遍,结合我实际调试中碰到的那些坑,希望能帮你少走点弯路。
3.1 高速模式(HS)与低功耗模式(LP)
D-PHY 的物理层,说白了就是两根线:Dp 和 Dn。但它不是固定一种电平在工作。它会根据数据传输的状态,在高摆幅差分和低压差分之间来回切。我个人习惯把它想象成一个双模引擎:跑数据的时候是高速模式,空闲或者传控制指令的时候是低功耗模式。
3.1.1 高速模式下的信号长啥样
高速模式(HS)的信号特点非常鲜明:差分摆幅很小,一般只有 200~300 mV 左右。Dp 和 Dn 两条线是严格互补的,一条正另一条就负。数据位从 Lane 上串行流过,频率可以跑到几百 MHz 甚至上 GHz。
在示波器上看起来,HS 信号就像一对紧凑的“蛇形走位”。如果你用单端探头分别看 Dp 和 Dn,两条波形几乎是完美的反相关系,幅度很小,直流电平大概在 200 mV 附近摆。
我建议你第一次看 HS 信号的时候,用差分探头直接看 Dp - Dn 的差值波形。这样能避开很多共模噪声的干扰,看到真正的眼图。
3.1.2 低功耗模式下的信号长啥样
低功耗模式(LP)的风格和 HS 完全不同。它的摆幅大得多,能达到 1.2 V。而且它是单端方式工作的,Dp 和 Dn 各自独立变化,不再严格互补。
在实际通信中,LP 模式主要用于 D-PHY 的状态握手和 Escape Mode 指令。你示波器上看到的 LP 信号,往往是大幅度的方波跳变,电平在 0~1.2 V 之间。Dp 和 Dn 之间经常存在相位差。
很多人用示波器抓 CSI-2 数据,一上来就设 200 mV 每格,结果只看到一条直线——那是因为 LP 信号早就超出量程了。我每次调示波器,都会先把量程设大一些,等确认了信号类型再精细调整。
一句话记住两种模式:
- HS 模式:差分、小摆幅、高速率,传数据用。
- LP 模式:单端、大摆幅、低速率,传控制/握手用。
3.2 差分信号:为什么 MIPI 非要选它?
你可能会问:为什么 MIPI 不直接用单端信号,非要搞差分?
原因其实很直接:抗共模干扰。在摄像头和处理器之间的链路上,地平面往往不够干净。你想想看,Sensor 端和主芯片端可能隔着一段 FPC 软排线,电磁环境挺复杂。如果走单端信号,地弹和辐射干扰很容易让信号误判。
差分就不一样了。两个信号 Dp 和 Dn 同时受到干扰,影响的幅度一样、方向一样,叫做共模干扰。而对方接收器只看两个信号的差值,共模干扰就被抵消了。说白了,差分传输就是用双倍的线,换一个干净的信号。
在 HS 模式下,Dp 和 Dn 的差值眼图就是衡量链路质量的关键。我见过不少项目,功能跑通了,但眼图质量差,margin 很小。这种板子量产之后,温度一变就容易丢数。所以个人习惯,眼图一定要留够余量。
调试的小窍门:
用差分眼图判断链路质量时,我一般会看两个指标:眼高(eye height)和眼宽(eye width)。眼高要大于 100 mV,眼宽要占 UI 的 60% 以上。低于这个值,最好查查阻抗匹配和走线长度。
3.3 电压摆幅:并非越大越好
电压摆幅是 D-PHY 里一个容易混淆的概念。刚才讲过,HS 模式下的摆幅只有 200~300 mV。这么低的摆幅,会不会不够用?
其实不是。D-PHY 的接收器本身被设计成高灵敏度,200 mV 的摆幅对内部的差分放大器来说,已经能轻松识别。而且低摆幅带来的好处很明显:降低功耗、减少电磁辐射。对于便携设备来说,这很关键。
但是低摆幅也意味着对信号完整性更敏感。如果 PCB 走线阻抗不对,或者 FPC 过长,信号衰减后可能连 200 mV 都不到了。我在调试一个项目时就遇到过这个问题:眼图几乎塌成了一个小圆点,最后查出是连接器的阻抗不对。
LP 模式下的摆幅大很多,能达到 1.2 V。因为它的速度慢,大摆幅可以保证在强干扰下也能正确判断逻辑电平。两种模式几乎完全不同的电平策略,既兼顾了高速,又照顾了互联的鲁棒性。
一个重要提醒:
在示波器上测 HS 信号的摆幅,一定要关掉 20 MHz 带宽限制。否则示波器会把高频跳变削平,你看到的摆幅会比实际小很多。
3.4 时序参数:跳变沿与建立时间
D-PHY 对时序的要求非常严格。HS 模式下,每一个数据位的时间窗口(UI)可能只有几纳秒甚至更短。在这个窗口内,信号要完成从低到高(或从高到低)的跳变,并且保持稳定,让接收器正确采样。
我整理了几个关键的时序参数,你在调试时一定要关注:
| 参数名称 | 说明 | 典型值 |
|---|---|---|
| UI | 单位间隔,即一个数据位的时长 | 1 ns ~ 4 ns(速率而定) |
| T_r, T_f | 上升时间和下降时间 | 150 ps ~ 300 ps |
| T_skew | Dp 与 Dn 之间的时间偏移 | < 50 ps |
| T_settle | 信号进入稳定状态的时间 | 由线长和端接决定 |
从上表可以看出来,HS 模式下对信号质量的要求极高。上升沿的时间,如果过缓,眼图的垂直张开度会变小;如果过陡,会产生过冲和振铃。这都不是好事。
我个人在调示波器看边沿时,会先看看信号有没有明显的预冲或过冲现象。如果过冲超过摆幅的 20%,那基本上要检查驱动器的输出能力和走线的阻抗连续性了。
还有一个易忽略的点:LP 到 HS 模式的切换时序。D-PHY 要求从 LP 模式进入 HS 模式时,先有一个准备阶段。具体来说,发送端要先让 Dp 和 Dn 进入某个中间电平(叫做 LP-11 或者 LP-00 状态),然后再切到 HS。如果这个过渡过程中的时序不对,可能会导致接收端误锁。
个人经验总结:
用示波器抓 D-PHY 信号,第一步是区分当前正在跑的是 HS 数据还是 LP 控制。看波形幅度就能判断——摆幅 200 mV 左右是 HS,摆幅到 1.2 V 是 LP。第二步,看 Dp 和 Dn 的互补程度,如果两条线波形不一致,说明链路可能有反射或串扰。
3.5 单张 SVG:D-PHY 物理层模式与信号结构图
下面这张图把 HS 和 LP 两种模式下的信号特点、电平关系画在一起。你可以对照着看,脑子里会形成一个更直观的框架。
3.6 章节小结
D-PHY 物理层并不复杂,但它包含了两套完全不同的信号体系。HS 和 LP 两种模式,在电平、速度、传输方式上各有特点。差分信号的核心优势在于抗共模干扰,但前提是走线要保持对称、阻抗连续。
示波器调试里,最容易出的问题就是没有先看模式,直接套用一种测量方案。如果你看到波形幅度不对,先确认一下当前是不是 HS 模式。