3. CSI-2 物理层(C-PHY):C-PHY 3-Triplet 编码、速率优势与 D-PHY 对比

CSI-2 标准定义了两套物理层(PHY)方案:D-PHY(1.0/1.1/1.2)和 C-PHY(1.0/1.1/2.0)。C-PHY 是 MIPI 联盟为应对更高带宽需求而推出的替代方案,它通过创新的 3-Triplet 编码机制,在相同引脚数下实现了比 D-PHY 更高的数据吞吐量。本章将深入解析 C-PHY 的核心编码原理、速率优势,并与 D-PHY 进行系统对比。

核心观点:C-PHY 并非简单的“升级版”,而是一种全新的物理层设计。它用三线差分信号替代了 D-PHY 的双线差分对,通过 3-Triplet 编码在三个电平状态间跳变,从而在每根线上承载更多信息。

3.1 C-PHY 物理层架构与 3-Triplet 编码

C-PHY 使用 3 根线(A、B、C)组成一个通道(Lane),每根线有三种电平状态:高(+)、低(-)、中(Z)。与 D-PHY 的二进制(0/1)不同,C-PHY 的每根线可以处于三种状态之一,因此一个 Triplet(三线组合)共有 3³ = 27 种可能的状态。

然而,C-PHY 并非直接使用这 27 种状态。它采用了一种称为 3-Triplet 编码 的机制,将数据映射到 线状态跳变 上,而非静态电平。这意味着接收端检测的是三根线之间电平关系的 变化,而不是绝对电平值。

3.1.1 3-Triplet 编码原理

在 C-PHY 中,数据不是通过单根线的电平来传输,而是通过三根线之间的 电压差跳变 来编码。每根线可以驱动为高(+)、低(-)或高阻(Z)状态。但有效的传输状态只有 6 种,称为 线状态(Wire States),它们满足以下约束:

  • 三根线中,恰好有一根为高(+),一根为低(-),一根为高阻(Z)。
  • 不允许出现两根线同为高或同为低的情况。

这 6 种有效线状态构成了一个循环。在每次传输(UI,Unit Interval)中,发送端必须从当前状态 跳变 到下一个有效状态。由于有 6 种状态,从当前状态出发,有 5 种可能的下一状态(不能保持原状态)。因此,每个 UI 可以传输 log₂(5) ≈ 2.32 比特的信息。

关键理解:D-PHY 每个 Lane 每 UI 传输 1 比特(NRZ 编码)。C-PHY 每个 Triplet 每 UI 传输约 2.32 比特。这意味着 C-PHY 的 每引脚带宽效率 远高于 D-PHY。

下图展示了 C-PHY 的 6 种有效线状态及其跳变关系:

C-PHY 6 种有效线状态与跳变关系 + - Z - + Z Z + - Z - + + Z - - Z + 每个状态只能跳转到其他 5 个状态之一,每个 UI 传输 log₂(5) ≈ 2.32 比特

3.1.2 3-Triplet 编码的数据映射

发送端将 16 位数据(2 字节)映射到 7 个 UI 中传输。因为 7 × 2.32 = 16.24 比特,略大于 16 比特,所以存在一些冗余状态用于控制或同步。这种映射关系由硬件编码器/解码器(Encoder/Decoder)自动完成,对软件透明。

下表展示了 C-PHY 与 D-PHY 在单 Lane 下的编码效率对比:

特性 D-PHY(1 Lane) C-PHY(1 Triplet)
物理线数 2(Dp/Dn 差分对) 3(A/B/C 三线)
每 UI 传输比特数 1 比特(NRZ) ≈ 2.32 比特(3-Triplet)
典型数据映射 1 UI = 1 比特 7 UI = 16 比特
编码效率 1 比特/UI 2.32 比特/UI
时钟信号 独立时钟 Lane 内嵌时钟(从数据跳变恢复)

3.2 C-PHY 的速率优势

C-PHY 的核心优势在于 更高的每引脚带宽。在相同的 PCB 走线数量和相同的信号频率下,C-PHY 能提供比 D-PHY 更高的数据吞吐量。

3.2.1 速率计算公式

对于 D-PHY,单 Lane 的数据速率(Gbps)为:

DataRate_D-PHY = UI_Rate (Gbps) × 1 (bit/UI)

对于 C-PHY,单 Triplet 的数据速率(Gbps)为:

DataRate_C-PHY = UI_Rate (Gsym/s) × 2.32 (bit/symbol)

其中 UI_Rate 是信号跳变频率(Symbol Rate)。例如,当 UI_Rate 为 1 GHz 时:

  • D-PHY 单 Lane 速率为 1 Gbps。
  • C-PHY 单 Triplet 速率为 2.32 Gbps。
注意:C-PHY 的 UI_Rate 通常低于 D-PHY 的比特率,因为 C-PHY 对信号完整性要求更高。但在实际应用中,C-PHY 仍能实现更高的总带宽。例如,C-PHY v1.1 支持最高 2.5 Gsym/s,对应单 Triplet 约 5.8 Gbps;而 D-PHY v1.2 单 Lane 最高为 2.5 Gbps。

3.2.2 实际带宽对比(以 4 Lane / 3 Triplet 为例)

在高端摄像头传感器中,通常使用多 Lane 配置。下表对比了 D-PHY 4-Lane 与 C-PHY 3-Triplet 的典型带宽:

配置 物理线数(数据) 典型 UI_Rate 总带宽 每线带宽效率
D-PHY 4-Lane 8 根(4 对差分) 2.5 Gbps 10 Gbps 1.25 Gbps/线
C-PHY 3-Triplet 9 根(3 组三线) 2.5 Gsym/s 17.4 Gbps 1.93 Gbps/线

从上表可以看出,C-PHY 3-Triplet 在仅多用 1 根线的情况下,总带宽提升了 74%,每线带宽效率提升了 54%。这使得 C-PHY 成为高分辨率、高帧率摄像头(如 8K/30fps 以上)的首选物理层。

3.3 C-PHY 与 D-PHY 的全面对比

下表从多个维度对 C-PHY 和 D-PHY 进行了系统对比:

对比维度 D-PHY C-PHY
信号线结构 差分对(2 线/Lane) 三线组(3 线/Triplet)
编码方式 NRZ(非归零) 3-Triplet 跳变编码
每 UI 比特数 1 比特 ≈ 2.32 比特
时钟传输 独立时钟 Lane(DDR) 内嵌时钟(从数据恢复)
信号摆幅 200 mV(LP)/ 200 mV(HS) 200 mV(HS)
功耗效率 约 1.5 pJ/bit 约 1.0 pJ/bit(更低)
最高速率(v1.2/v1.1) 2.5 Gbps/Lane 5.8 Gbps/Triplet
PCB 布线难度 较低(差分对等长) 较高(三线等长、阻抗匹配)
兼容性 广泛支持(成熟生态) 较新,高端 SoC 支持
典型应用 1080p/4K 摄像头 8K/高帧率/多摄像头

3.4 C-PHY 的物理层架构图

下图展示了 C-PHY 发送端(TX)和接收端(RX)的物理层架构,重点突出了 3-Triplet 编码器/解码器的位置:

C-PHY 物理层架构(发送端与接收端) 发送端(TX) 接收端(RX) 3-Triplet 编码器 线驱动器 PLL / 时钟生成 3-Triplet 解码器 线接收器 / 比较器 时钟恢复(CDR) A / B / C 三线 数据流方向 C-PHY 使用内嵌时钟,接收端通过 CDR 从数据跳变中恢复时钟,无需独立时钟 Lane

3.5 驱动开发中的关键考量

在 Linux 内核驱动中对接 C-PHY 时,需要关注以下几点:

  • PHY 配置寄存器: C-PHY 的 PHY 芯片(如 D-PHY 兼容的 C-PHY PHY)通常需要配置工作模式(D-PHY 或 C-PHY)、速率、均衡参数等。驱动需要通过 I2C/SPI 或 SoC 内部寄存器进行初始化。
  • 时钟恢复(CDR)锁定: C-PHY 没有独立时钟,接收端必须依赖 CDR 电路从数据流中恢复时钟。驱动需要监控 CDR 锁定状态,并在失锁时触发重同步。
  • Lane 映射与极性: 与 D-PHY 类似,C-PHY 也支持 Lane 重映射和极性反转。设备树中需要正确配置这些映射关系。
  • 功耗管理: C-PHY 在低功耗模式下(ULPS)的行为与 D-PHY 不同。驱动需要实现正确的 ULPS 进入/退出序列,避免总线冲突。
实践建议:在调试 C-PHY 链路时,优先检查 CDR 锁定状态和线状态跳变是否正确。使用示波器观察三线之间的电压差,确认是否存在信号完整性问题(如过冲、振铃)。C-PHY 对 PCB 布线的不匹配比 D-PHY 更敏感。

3.6 本章小结

C-PHY 通过 3-Triplet 编码和 6 种有效线状态跳变,实现了每 UI 传输 2.32 比特的高效率。在相同引脚数下,C-PHY 的总带宽比 D-PHY 高出 70% 以上,同时功耗更低。然而,C-PHY 对 PCB 布线和信号完整性要求更高,且需要更复杂的 CDR 电路。在 Linux 内核驱动开发中,需要针对 C-PHY 的特性进行专门的配置和调试,尤其是在时钟恢复和功耗管理方面。