1. D-PHY链路概述:基本架构、信号类型与工作模式
1.1 D-PHY 是什么?
先聊聊 D-PHY 的身世。它是 MIPI 联盟定义的物理层标准,专为摄像头、显示屏这类移动设备的高速串行接口而生。说白了,就是一条“数据公路”,把 SoC 和 sensor、LCD 连接起来,跑视频流、控制指令。
我最早接触这个标准是在一款手机主板上,当时为了把摄像头模组的信号完整传到 AP,硬啃了 MIPI D-PHY V1.1 的文档。嗯,那玩意儿真厚。但搞懂了链路结构,后面做时序分析就有底了。
D-PHY 的核心特点:它用差分信号传输高速数据,同时保留单端线做低功耗控制。一条链路由时钟通道 (Clock Lane) 和数据通道 (Data Lane,通常 1~4 条) 组成。
1.2 D-PHY 的物理层架构
我个人习惯把 D-PHY 链路想象成“主机-从机”模型。主机 (SoC) 发时钟,从机 (Camera/Display) 同步收数据。时钟通道永远由主机驱动,数据通道可以切换方向——发送时主机驱动,接收时从机驱动。
来看一张链路结构图,我把关键模块标出来了:
这幅图我刻意把时钟通道放在上方,数据通道放下方。实际 PCB 上我建议时钟线尽量包地、等长,数据线跟时钟等长误差控制在 50mil 以内。曾经有个项目因为时钟和数据长度差到了 150mil,80MHz 的 D-PHY 链路直接误码,后来切了蛇形线才救回来。
1.3 信号类型:差分对与时钟
每条通道由两根线组成:Dp(正极)和 Dn(负极)。高速传输时,信号摆幅只有 200mV 左右(差模),共模电压大约 200mV。低功耗模式下,单端电压变化,摆幅 1.2V。
| 信号类型 | 电气特性 | 用途 |
|---|---|---|
| HS 差分 | 200mV 摆幅,50Ω 端接 | 高速数据/时钟 |
| LP 单端 | 1.2V 摆幅,高阻态 | 控制握手、状态切换 |
| 时钟通道 | DDR 双边沿采样 | 数据同步 |
你想想看,为什么非要用差分线?因为你 PCB 上走线总有地弹噪声,差分对共模抑制比高,可以把干扰抵消掉。尤其是高速场景,走线不对称、过孔不等长都会引入时序歪斜 (Skew)。这就是我们后面要盯着不放的点。
1.4 工作模式:HS 与 LP
D-PHY 有两套工作模式:高速模式 (HS) 和 低功耗模式 (LP)。为什么要设计两套?为了省电。传输视频数据时用 HS 高速打数据包;空闲或者发控制指令时切到 LP,功耗降到微瓦级别。
HS 模式:数据线以 DDR 方式在时钟的上升沿和下降沿各传 1bit。一条 Data Lane 最高可以跑到 2.5Gbps (D-PHY V1.2)。时钟通道一直发 200mV 差分方波,数据通道在 burst 结束后进入 LP 状态。
LP 模式:单端信号,有四种组合状态(LP-00, LP-01, LP-10, LP-11),用来做转态序列。比如进入 HS 前,Driver 要先发一段 LP-11 → LP-01 → LP-00 来“热身”,让接收端准备好端接电阻。
我遇到过一个坑:某款 sensor 的 LP 序列时序要求 ns 级精度,结果主控端因为软件延迟导致 LP-01 持续了 150ns,超出 spec 范围,链路直接失锁。查了半天才发现是 GPIO 配置不对。那次之后我养成了习惯——写驱动前先看 D-PHY 的 LP 时序图。
HS 与 LP 关键对比
- HS:差分、低摆幅、高速、Burst 模式
- LP:单端、高摆幅、低速、控制状态
- 切换必须经过特定 “Escape Mode” 序列,否则进入未定义状态
1.5 时序 Skew 的起源
谈到 Skew,先得理解“同步”二字。D-PHY 的数据采样以时钟为基准。如果数据线和时钟线到达接收端的时刻发生错位,UI (Unit Interval) 就受到压缩,可能导致 setup/hold 违例。
常见 Skew 来源有:
- 差分对内 Skew:Dp 和 Dn 不等长,单端 HS 翻转时差分过零点偏移
- 通道间 Skew:Data Lane 之间、或者 Data Lane 与 Clock Lane 之间走线长度差
- SI 引起的 Skew:反射、串扰、ISI 造成边沿变形,等效相位偏移
我做过一个 4-lane 的 CSI-2 链路,实测发现第三通道的误码率比别的通道高一个数量级。最终定位是时钟线跟那个通道的差分对之间长度差了 12mm——你算算 12mm 的 FR4 传输延迟,大约 70ps,刚好逼近门限。后来把时钟蛇形线绕回来,误码率立刻降下去。
所以学这门课,你只要记住:Skew 是 D-PHY 链路的天敌。后面我们会逐个案例拆解它,看看不同场景下 Skew 怎么产生、怎么测量、怎么消除。别着急,先把这个基础架构刻在脑子里。