D-PHY 物理层基础:数据通道与时钟通道结构
咱们这一章聊聊 D-PHY 物理层最核心的两个东西 —— 数据通道和时钟通道。说白了,整个 MIPI D-PHY 的通信,就是靠这两套线把信号从发端搬到收端。我做高速接口这么多年,见过不少工程师把通道结构搞混,结果时序对不上,眼图一塌糊涂。
D-PHY 的物理层分两侧:发送端叫 DPHY-TX,接收端叫 DPHY-RX。通道分两种:数据通道(Data Lane)和时钟通道(Clock Lane)。每个通道都是差分对:Data Lane 用 Dp/Dn 两根线,Clock Lane 用 Clkp/Clkn。差分传输的好处不用我多说,抗共模干扰、低 EMI,搞信号完整性的人都知道。
2.1 数据通道结构
数据通道是并行的,最少 1 组,最多 4 组。一组 Data Lane 就是一个差分对。为什么要多组?因为要提升带宽。你想想看,1 组跑 1 Gbps,4 组就能飙到 4 Gbps,而且时钟共用,省线。
每个 Data Lane 内部有一个 Serializer(串化器)和一个 Deserializer(解串器)。发送端把并行数据转成串行比特流,接收端再还原回去。我刚开始学 MIPI 时总觉得这一步很简单,直到有一次用示波器抓波形,发现串化后的数据抖得厉害…嗯,后来才知道是时钟偏斜没控好。
2.2 时钟通道结构
时钟通道只有 1 组差分对,专供所有 Data Lane 使用。它输出的是连续方波,不携带数据。发送端负责产生时钟,接收端用它来采样数据线上的比特流。
有个关键点:时钟通道和数据通道的相位关系。D-PHY 规范里,时钟的上升沿和下降沿分别对应数据窗口的中间位置。这样才能保证建立时间和保持时间有足够的余量。我之前调过一个项目,时钟路径上多走了一根过孔,结果相位偏了 30 度,整个系统跑不了速。最后加了一段 delay line 才摆平。
2.3 高速模式(HS)与低功耗模式(LP)差异
D-PHY 最妙的设计就是两种模式切换。高速模式(HS)用于大吞吐传输,低功耗模式(LP)用于控制信号和闲时省电。它们用同一组差分线,但电压、驱动方式、接收阈值完全不同。
我把差异总结在下面这张表里,你一看就明白。
| 对比项 | 高速模式(HS) | 低功耗模式(LP) |
|---|---|---|
| 电压摆幅 | 约 200 mV(差分) | 0~1.2 V(单端) |
| 驱动方式 | 差分电流驱动(Low-voltage Differential Signaling,低压差分信号) | 单端推挽驱动 |
| 接收阈值 | 差分比较器,阈值约 ±50 mV | 单端 CMOS 逻辑电平,VIL/VIH 约 0.3V/0.8V |
| 数据速率 | 80 Mbps~4.5 Gbps(每 lane) | ≤ 10 Mbps |
| 功耗 | 高,约 1~3 mW/Gbps | 低,约 0.1 mW 以下 |
| 信号编码 | NRZ(非归零码) | 双向三态:0、1、Z(高阻) |
| 应用场景 | 传输图像、视频等大数据流 | 总线控制、握手、电源管理 |
你看,HS 模式的电压摆幅只有 200 mV 左右,为什么这么小?因为要省功耗、降 EMI,而且差分信号在 100 欧姆端接电阻上产生的电流只有几毫安。而 LP 模式用 1.2V 的 CMOS 摆幅,靠的是强上拉/下拉管,速度慢但驱动能力强,适合长距离板级走线。
2.4 模式切换机制(BTA)
D-PHY 支持在 HS 和 LP 之间快速切换,这个过程叫 BTA(Bus Turnaround)。实际上就是通过一组特定的电压跳变序列来通知收端切换状态。具体序列有:LP-00 → LP-01 → LP-00 → HS-0 这样的多步操作。
模式切换的时序要求很严格。从 LP 到 HS 有个 预热时间(Wakeup Time),发送端要先驱动一组特定电平让接收端的 PLL 锁定,然后再发数据。接收端在检测到 HS 信号之后才开始采样。如果切换太快,PLL 没锁定,采到的全是错码。
下面这个流程图可以帮你理解两种模式的关系和切换路径。
从图上你也能看出来,整个链路是“发送端 → 差分通道 → 接收端”。通道里同时存在 HS 和 LP 两种工作状态,通过 BTA 来回切换。嗯,这里要注意:同一个差分对在某一时刻只能工作在一个模式下,不能同时既发 HS 又发 LP。所有 lane 的模式切换是同步的,由协议层控制。
2.5 实际布局建议
搞信号完整性的人,最关心的就是差分对怎么走线。给你们几个实操建议:
- 等长原则:每组 Data Lane 内的 Dp/Dn 走线长度差 ≤ 5 mil,四个 Data Lane 之间长度差 ≤ 50 mil。Clock Lane 的差分对长度也要与所有 Data Lane 平均长度对齐。
- 阻抗控制:差分阻抗 100Ω ±10%,单端阻抗 50Ω。我建议用多层板,内层走差分,参考平面连续,避免跨分割。
- 串扰隔离:Data Lane 之间间距 ≥ 3W(W 是线宽),Clock Lane 与其他信号间距 ≥ 5W。因为你想想看,时钟是连续方波,谐波丰富,容易干扰数据。
- 过孔数量:每个差分对最多打 2 对过孔。过孔会引入寄生电感和阻抗不连续。我之前在 2 Gbps 的链路中多打了一对过孔,眼图高度直接掉了 15%。