4. MIPI D-PHY 物理层:电平规范、时钟通道与数据通道、LP/HS 模式详解

这一节咱们聊聊 D-PHY 物理层,很多做摄像头驱动的朋友在这上面吃过亏。

MIPI D-PHY 本质上是一套高速串行接口的物理层规范。它负责把摄像头采集到的像素数据,从传感器端搬到应用处理器端。说白了,就是图像数据的"搬运工"。

我个人习惯把 D-PHY 拆成三个核心要素来理解:电平标准、通道架构、模式切换。搞懂了这三点,寄存器配置里的那些时序参数就不是天书了。

4.1 电平规范:不是简单的 0 和 1

大家知道普通 GPIO 是 0V 和 3.3V 跳来跳去,但 MIPI 不一样。它用的是差分信号,正负两根线互补驱动。

核心指标:

  • HS 模式(高速模式):差动电压摆幅约 200mV,共模电压在 200mV 左右。信号幅度小,压摆率快,功耗低,适合高速传输。
  • LP 模式(低功耗模式):单端电压摆幅 1.2V(0V 到 1.2V),更像普通数字信号,但速率很低,主要用于控制命令和启动握手。

我在项目里遇到过这么个坑:有次调试一块 4-lane 的 sensor,图像一直有条纹,后来发现是 D-PHY 供电的纹波太大,导致共模电压波动了 50mV 以上。你说 200mV 的摆幅,波动 50mV 意味着啥?信号眼图基本闭眼了。

参数 HS 模式(高速) LP 模式(低功耗)
电压摆幅~200mV (差动)1.2V (单端)
共模电压~200mV0V (~GND)
数据传输速率80Mbps - 4.5Gbps~10Mbps
功耗较高 (但远低于 LVCMOS)极低
主要用途图像数据流总线控制、Ping-Pong、启动

关键点:HS 模式下,两线间的差动摆幅才是真正的逻辑电平。单端测量仅供参考,没法用于判断信号质量。我习惯用差分探棒点 D-PHY,直接看差分波形,这样才靠谱。

4.2 时钟通道与数据通道

MIPI D-PHY 采用源同步时钟架构。啥意思?就是时钟和数据由发送端(比如 sensor)一起发出来,接收端(比如 ISP/AP)直接用这个时钟采样数据,不需要 PLL 去恢复时钟。这样做的好处很明显:抗抖动、延迟低、设计简单。

通道拓扑:

  • 1 条时钟通道 (CLK_P/N): 提供差分时钟,频率等于数据速率的一半。比如 1Gbps 的数据速率,CLK 就是 500MHz。
  • 1~4 条数据通道 (DATA0_P/N ~ DATA3_P/N): 每条通道独立传输数据。多通道可以并行传输,提高总带宽。
  • 未使用的数据通道: 必须保持上拉至 LP11 状态,防止误触发。

你想想看,为什么摄像头通常用 1、2 或 4 条 lane?因为 bandwith 不够就加 lane,但加 lane 会增加 PCB layout 的难度和功耗。我记得有个 4K60fps 的项目,最后评估下来 2-lane 勉强够用但余量不足,就果断上了 4-lane,省得后期改板子。

实战经验:Layout 时数据 lane 最好等长,和 CLK lane 的等长控制在 ±100mil 以内。我曾经因为没注意等长,导致高速信号 skew 过大,图像最后一列像素偏色。

4.3 LP/HS 模式详解

D-PHY 最灵活的地方在于能动态切换 LP 和 HS 模式。而且这个切换不是随意的,要遵循严格的时序协议。

4.3.1 模式切换的时序状态机

D-PHY 的数据通道状态由 Dp 和 Dn 两根线的电平决定。咱们记住 LP11、LP10、LP00、LP01 这四个基本状态就行。

典型切换流程(以 DATA lane 为例):

  1. 停靠状态: 总线空闲,Dp/Dn 都在高电平,即 LP11。
  2. 转向 HS-Prepare: 先进入 LP01(Dp 低,Dn 高),保持 TLP-PREPARE 时间。
  3. 进入 HS-Zero: 再进入 LP00(Dp 低,Dn 低),保持 THS-ZERO 时间。
  4. 数据高速传输: 线对驱动差动信号,进入 HS 模式,传输 N 个字节的数据。
  5. 发送 Trailer: 数据传输结束后,驱动进入 LP11,结束 HS 序列。
  6. 回到空闲: 线对稳定在 LP11,等待下一个传输周期。

重要提醒: 时序参数如 TLP-PREPARE、THS-ZERO、THS-TRAIL 等在 D-PHY 规范中有明确的范围。寄存器配置里的 UI 单位是基于 bit 时间的。我建议把 sensor 的 datasheet 和 D-PHY spec 对照着看,别只抄参考配置。

为什么会这样设计?因为从 LP 到 HS 的过程中,接收器的共模电压和差分偏置都需要重新建立,不能直接跳变。这些时序参数就是为了保信号靠谱。

4.3.2 数据传输中的时钟与数据关系

时钟通道在 HS 模式下持续输出差分时钟,数据通道在 HS 模式下在时钟的 DDR(双沿)上采样。简单说,时钟上升沿和下降沿都传输数据。一个 500MHz 的时钟,就能实现 1Gbps 的数据速率。

通道内数据格式:

  • 每个字节被拆分为高 4 位和低 4 位,在时钟的上升沿和下降沿分别传输。
  • 先传输 MSB(最高位),再传输 LSB(最低位)。
  • 一个小包(Short Packet/ Long Packet)必须在连续的 HS 序列中完成。

举个例子:
数据速率 1Gbps,每条 data lane 传输 1 bit 数据。如果是 4-lane 配置,总带宽就是 4Gbps。但实测时要考虑 HS 传输之间的 LP 间隔,实际有效带宽大概能跑到 80-90%。

好了,这章就到这。核心就是记住:电平分为 LP 和 HS 两个世界,时钟和数据用差分对跑,模式切换必须卡时序。下次你们调 sensor 的时候,如果出图不正常,先检查 lane 的停靠状态对不对,再抓一下 HS 序列波形,八成能找到问题。

MIPI D-PHY 物理层核心概念图 MIPI D-PHY 核心要素与状态切换 1. 电平规范 HS 模式:~200mV 差分 LP 模式:1.2V 单端 共模电压 ~200mV 2. 通道架构 1 条 CLK Lane 1~4 条 Data Lane 源同步时钟 3. 模式切换 LP ↔ HS 动态切换 严格时序状态机 LP11/10/00/01 LP/HS 模式切换流(数据通道) LP11 空闲 LP01 准备 LP00 归零 HS 数据传输 Trailer (LP11) TLP-PREPARE THS-ZERO HS 传输 THS-TRAIL 空闲状态 注意:模式切换需遵守 D-PHY 规范的时序参数,TLP-PREPARE 通常在 40ns 左右,THS-ZERO 在 100ns 左右