4. C-PHY物理层基础:C-PHY 3-Tap调制、三线差分信号、Trio概念、Symbol与Word映射
MIPI C-PHY 是 MIPI 联盟为摄像头与显示接口定义的高速串行物理层标准。与传统的 D-PHY 使用差分对(Data/Clock)不同,C-PHY 采用 3-Tap 调制 与 三线差分信号 技术,在更少的引脚上实现更高的带宽。本章深入剖析 C-PHY 的核心物理层概念,包括 Trio 结构、Symbol 编码以及 Word 映射机制,为后续的 Linux 驱动调试与信号完整性分析奠定基础。
4.1 三线差分信号与 Trio 概念
C-PHY 的基本传输单元是 Trio,即一组由三根导线组成的差分信号组。与 D-PHY 的“一对线传一个 bit”不同,C-PHY 通过三根线之间的电压差组合来编码信息。
Trio 状态与电压关系:
- High (H): 电压最高,通常为 1.2V(HS 模式)。
- Low (L): 电压最低,通常为 0V(GND)。
- Mid (M): 电压介于 High 和 Low 之间,通常为 0.6V。
三根线在同一时刻必须处于三种不同的状态,即 {H, M, L} 的一个排列。因此,一个 Trio 在稳态下共有 3! = 6 种 不同的状态组合。
4.2 C-PHY 3-Tap 调制原理
C-PHY 采用 3-Tap 调制(也称为 3-Phase Modulation)来传输数据。其核心思想是:数据不是通过绝对电压值编码,而是通过 Trio 线序状态的跳变(Transition)来编码。
在每一个 UI(Unit Interval,单位间隔) 内,Trio 的状态会从一个有效状态跳变到另一个有效状态。由于有 6 种状态,从一个状态跳变到另一个状态(不包括自身)共有 6 × 5 = 30 种 可能的跳变。然而,C-PHY 标准规定,在跳变时,至少有一根线的状态必须改变,且不能出现“所有线都翻转”的情况(即不能从 HML 变为 MLH 这种完全反转)。这进一步限制了有效跳变数量。
有效跳变数量计算:
- 总可能跳变:6 × 5 = 30
- 禁止的“全翻转”跳变:每个状态有 1 个对应的全翻转状态(例如 HML 的全翻转是 MLH),共 6 个。
- 禁止的“无跳变”:6 个(自身到自身)。
- 有效跳变:30 - 6 - 6 = 18 种。
这 18 种有效跳变可以编码 log₂(18) ≈ 4.17 bits 的信息。在实际应用中,C-PHY 每个 UI 传输 16 bits 的数据,这通过将多个 Trio 组合(通常是 3 个 Trio)以及更复杂的映射表来实现。
4.3 Symbol 与 Word 映射
在 C-PHY 协议栈中,物理层传输的基本数据单元是 Symbol,而更高层(如 CSI-2)处理的是 Word。理解两者之间的映射关系是驱动开发的关键。
4.3.1 Symbol 定义
一个 Symbol 对应一个 Trio 在一个 UI 内的状态跳变信息。由于每个 UI 有 18 种有效跳变,一个 Symbol 可以承载 log₂(18) ≈ 4.17 bits 的信息。但在实际实现中,为了简化逻辑,C-PHY 通常将 3 个 Trio(即 3 个 Lane)组合起来,在一个 UI 内传输 16 bits 的数据。
4.3.2 Word 映射机制
Word 是 CSI-2 协议层与物理层之间的数据交换单位。标准的 C-PHY 映射方式如下:
| 参数 | 值 | 说明 |
|---|---|---|
| Lane 数量 | 3 | 每个 Lane 包含一个 Trio |
| 每个 UI 传输 bits | 16 | 由 3 个 Symbol 共同编码 |
| Symbol 编码效率 | 16/3 ≈ 5.33 bits/Symbol | 高于理论最大值 4.17 bits,通过查表实现 |
| 映射方式 | 查表法 (LUT) | 将 16-bit Word 映射到 3 个 6-bit Symbol 上 |
映射流程:
- 发送端: CSI-2 层将 16-bit 的并行数据(Word)发送给 C-PHY 物理层。
- 编码: C-PHY 编码器通过一个预定义的映射表(LUT),将 16-bit Word 转换为 3 个 6-bit 的 Symbol 编码(每个 Symbol 对应一个 Trio 的跳变指令)。
- 发送: 每个 Lane 的驱动器根据 Symbol 指令,在下一个 UI 内驱动 Trio 的三根线完成相应的状态跳变。
- 接收端: 接收器检测每个 Trio 的状态跳变,解码出 3 个 Symbol,再通过逆映射表还原出 16-bit Word。
4.4 关键参数对比:C-PHY vs D-PHY
为了更清晰地理解 C-PHY 的优势,下表对比了 C-PHY 与 D-PHY 在物理层的关键差异:
| 特性 | C-PHY | D-PHY |
|---|---|---|
| 信号线结构 | 三线差分 (Trio) | 双线差分对 (Data/Clock) |
| 每 Lane 引脚数 | 3 根 (无独立时钟) | 2 根 (Data) + 2 根 (Clock) |
| 时钟嵌入 | 是 (通过数据跳变) | 否 (独立时钟线) |
| 每 UI 传输 bits (3-Lane) | 16 bits | 3 bits (每 Lane 1 bit) |
| 带宽密度 | 高 | 中 |
| EMI 特性 | 更低 (无同步时钟翻转) | 较高 (时钟谐波) |
| 驱动复杂度 | 高 (需要 3-Tap 调制器) | 低 (标准差分驱动) |
4.5 本章小结
- Trio 是 C-PHY 的基本物理单元,由三根线组成,具有 6 种稳态。
- 3-Tap 调制 通过 Trio 状态跳变编码数据,每个 UI 有 18 种有效跳变。
- Symbol 对应一个 Trio 的跳变信息,Word 是协议层的数据单位。
- 在 3-Lane 配置下,一个 16-bit Word 通过映射表转换为 3 个 Symbol,分别控制 3 个 Trio 的跳变。
- 理解 Symbol 与 Word 的映射关系,是调试 C-PHY 链路信号完整性的前提。