2. 物理层(Phy)时序:D-PHY vs C-PHY、时钟通道与数据通道的关系、低速与高速模式切换

聊到MIPI物理层,有两个标准绕不开——D-PHY和C-PHY。我平时调试多路摄像头切换,大部分坑都跟这俩的时序差有关。今天我们就把它说透。

2.1 D-PHY和C-PHY,到底差在哪?

D-PHY是老大哥,用得最广。C-PHY是后来出来的,为了省引脚、提速率。你想想看,一个摄像头模组就那么多引脚,C-PHY一根线就能传数据和时钟,省掉一对时钟线,对模组小型化极有帮助。

特性D-PHYC-PHY
时钟通道独立差分时钟对时钟嵌入数据中(无独立时钟线)
数据通道1~4条差分数据对1~3条3线数据对(triplet)
每lane速率最高2.5 Gbps/lane最高约2.5 Gsymbol/s每triplet(等效更高数据率)
信号类型差分(HS)+ 单端(LP)3线差分(HS)+ 单端(LP)
抖动容忍度对时钟抖动敏感靠冗余编码鲁棒性更强

我个人习惯:在项目初期选型时,如果摄像头数量多、板子空间紧,我会优先考虑C-PHY;如果对时序余量要求高、调试工具成熟,那就还是D-PHY。有一次我在一个16路摄像头项目中用了D-PHY,结果FPC排线太长,时序吃紧,后来换成C-PHY反而稳了——因为它对线间时滞不那么敏感。

避坑提示:C-PHY虽然是三线,但布线时必须保证三根线等长,偏差最好控制在±5 ps以内。我曾经因为忽略等长,导致symbol解码出错,折腾了两天。

2.2 时钟通道与数据通道的关系

这是调试中最容易迷惑的地方。我先说D-PHY。

D-PHY:时钟通道是独立的差分对,数据通道也是差分对。时钟信号是DDR(双倍数据率)模式,每个时钟周期内传两个bit——上升沿和下降沿各采一次。数据lane与时钟lane之间必须满足建立时间和保持时间。说白了,就是数据相对时钟的相位要对齐。我习惯在主控端先反相时钟再采样,这样setup/hold余量更均衡。

C-PHY:没有独立的时钟线。时钟信息嵌在三根线(A、B、C)的跳变沿里。每根线只有两种电平(0或1),但三根线同时变化,每单位时间有6种合法状态(3-bit符号)。数据从符号间的相位差里读出来。嗯,这里要注意:C-PHY的接收端必须自己做时钟恢复,对PLL要求更高。

D-PHY vs C-PHY 物理层结构对比 D-PHY 结构 时钟通道(差分对 CLK+ / CLK−) DDR模式,独立时钟线 数据通道 0(差分对 D0+ / D0−) HS: 差分200mV / LP: 单端1.2V 数据通道 1(差分对 D1+ / D1−) 最多4条数据lane 对齐约束 C-PHY 结构 Triplet(A、B、C 三线) 无独立时钟,时钟嵌入跳变边沿 符号解码示例 6种合法状态 → 每符号2.5 bit 相位差编码,无需时钟恢复PLL Triplet 2(可选,最多3组) 扩展带宽 无时钟线 时钟嵌入数据流 HS / LP 模式切换区域 HS / LP 模式切换区域

2.3 低速与高速模式切换

MIPI物理层有一个漂亮的设计:LP(低功耗)和HS(高速)两种模式。在摄像头不传输数据时,用LP模式省电;需要传数据时,瞬间切到HS模式。切换过程有一套严格的时序要求,搞不好就会丢包甚至烧坏接口。

关键参数:TLPX(LP脉冲宽度)、THS-PREPARE(HS准备时间)、THS-ZERO(HS建立前的零期)、THS-EXIT(退出HS到LP的时间)、TTA(Turnaround Time)。

我记得在第一次调试某款传感器时,发现MIPI总线总是超时,后来用示波器抓到LP→HS切换的那个瞬态毛刺,才发现是系统侧驱动的slew rate不够快。嗯,这里要注意:LP和HS的电压摆幅完全不同,LP是0~1.2V,HS是差分200mV左右,切换时如果匹配不好,会有一段不确定状态。

时序参数最小值典型值最大值说明
TLPX50 ns——LP 脉冲宽度(用于状态信令)
THS-PREPARE40 ns80 ns—HS 准备时间
THS-ZERO40 ns80 ns—HS 零期(驱动HS电平前)
THS-EXIT—100 ns—退出HS到LP的缓冲时间
TTA——可配置总线周转时间(用于双向通信切换)
踩坑实录:我曾经在一个项目中把THS-EXIT设得太小,导致HS切换回LP时电平还没完全回到1.2V,下一帧的LP状态就被误判成HS。现象就是偶尔丢帧,示波器也看不出明显异常。后来加长THS-EXIT到150 ns,问题消失。记住:宁大勿小。

切换流程本质上是一个状态机:从LP11(停靠态)→ LP01 → LP00 → HS → LP11。每个状态维持的时间都由控制器精确控制。我习惯在看MIPI规范里的Figure 26(D-PHY)和Figure 14(C-PHY)时,旁边放一个逻辑分析仪抓实际波形对比,很容易找到时序违规的地方。