3、MIPI D-PHY详解:差分信号与高速传输、时钟通道与数据通道、LP与HS模式切换
好,咱们进入第三章。这一章可以说是整个MIPI物理层的核心。你写Sensor驱动,调MIPI接口,如果不懂D-PHY,那基本上就是瞎调。我见过太多工程师拿着示波器看波形,却分不清LP和HS模式,结果折腾好几天,最后发现是模式切换时序不对。
D-PHY,说白了就是MIPI的物理层标准。它定义了信号怎么传、电压多高、速度多快。咱们今天就把这三个核心问题讲透:差分信号怎么工作的、时钟和数据通道怎么配合、LP和HS模式怎么切换。
3.1 差分信号:为什么MIPI要用差分对?
先问个问题:为什么MIPI不用普通的单端信号,非要用差分?
答案很简单——抗干扰。你想想看,Sensor和SoC之间可能有十几厘米的走线,板子上还有电源、时钟、射频,噪声一大堆。单端信号很容易被干扰,但差分信号不一样。
差分信号用两根线传:Dp(正极)和Dn(负极)。信号是两者的电压差。如果外部噪声同时耦合到两根线上,差值是抵消的。这就是共模抑制。
关键点:MIPI D-PHY的差分电压摆幅只有200mV左右(HS模式),但信噪比却很高。这就是差分的好处。
我在一个项目中遇到过,Sensor的MIPI走线绕过了电源模块,结果图像有横纹。后来发现是差分对没等长,共模噪声没抵消掉。嗯,从那以后我对差分走线长度匹配特别敏感。
3.2 时钟通道与数据通道:谁负责什么?
MIPI D-PHY的通道分两种:时钟通道(Clock Lane)和数据通道(Data Lane)。
时钟通道只有一条,负责提供同步时钟。数据通道可以有一条到多条,常见的是1条、2条或4条。Sensor驱动里配置的lane数,指的就是数据通道数量。
| 通道类型 | 数量 | 方向 | 主要职责 |
|---|---|---|---|
| 时钟通道 | 1条(固定) | 单向(主机→设备) | 提供DDR时钟,双边沿采样 |
| 数据通道 | 1/2/4条(可配) | 双向(HS单向,LP双向) | 传输像素数据、指令、状态 |
时钟通道用的是DDR(Double Data Rate)方式,时钟的上升沿和下降沿都采样数据。所以数据速率是时钟频率的两倍。比如时钟跑200MHz,数据速率就是400Mbps/lane。
个人习惯:我配置Sensor时,会先确认时钟频率和lane数的关系。如果分辨率高,帧率要求高,就多用几条lane。但lane多了功耗也大,这是个权衡。
3.3 LP与HS模式:两种电压,两种世界
D-PHY有两种工作模式:LP(Low Power,低功耗)和HS(High Speed,高速)。
LP模式电压高(1.2V左右),速度慢(最高10Mbps),但省电。HS模式电压低(200mV差分摆幅),速度快(最高2.5Gbps/lane),但功耗高。
为什么会有两种模式?因为Sensor不是一直在传数据。不传数据的时候,用LP模式省电;传数据的时候,切到HS模式跑高速。
3.3.1 LP模式:控制与握手
LP模式主要用于控制指令和总线状态管理。它用单端信号,不是差分。Dp和Dn各自独立,组合出不同的总线状态。
LP模式有四种状态:
- LP-00:Dp=0, Dn=0,总线驱动为0
- LP-01:Dp=0, Dn=1,HS请求
- LP-10:Dp=1, Dn=0,LP请求
- LP-11:Dp=1, Dn=1,空闲状态
我刚开始学的时候,老记混这四种状态。后来我总结了个口诀:11是空闲,01要高速,10要低速,00是驱动。你试试看,是不是好记多了?
3.3.2 HS模式:高速数据传输
HS模式才是真正干活的时候。它用差分信号,电压摆幅只有200mV。数据在时钟的上升沿和下降沿都采样,所以效率很高。
HS模式传输时,数据通道和时钟通道必须同步。时钟通道一直跑HS时钟,数据通道在需要传数据时才切到HS。
注意:HS模式下,差分对的共模电压必须稳定在200mV左右。如果共模电压漂移,接收端可能误判数据。我曾经遇到过因为电源纹波大,导致HS模式下误码率飙升的问题。后来加了LC滤波才解决。
3.4 LP与HS模式切换:时序是关键
模式切换是D-PHY里最容易出问题的地方。切换时序不对,轻则丢数据,重则总线卡死。
切换流程分两步:
- LP→HS:先发LP-01(HS请求),然后进入HS准备期,最后切到HS差分驱动。
- HS→LP:先停止HS驱动,进入HS退出期,然后发LP-11(空闲),最后回到LP模式。
每个阶段都有严格的时间要求,单位是纳秒级。这些时间参数在Sensor的datasheet里都有,配置驱动时必须填对。
| 参数 | 含义 | 典型值 |
|---|---|---|
| THS-PREPARE | HS准备时间 | 40ns + 4*UI |
| THS-ZERO | HS驱动建立时间 | 100ns + 10*UI |
| THS-TRAIL | HS退出时间 | 60ns + 4*UI |
| TLPX | LP脉冲宽度 | 50ns |
UI是Unit Interval,一个数据位的时间。比如数据速率400Mbps,UI就是2.5ns。
避坑指南:我曾经在调试一款4K Sensor时,发现图像偶尔花屏。抓波形发现THS-PREPARE时间不够,导致HS模式没稳定就开始传数据。把时间加长20ns后,问题解决。所以,切换时间宁长勿短。
3.5 D-PHY整体结构图
下面这张图展示了D-PHY的核心结构,包括时钟通道、数据通道、LP/HS模式切换逻辑。
从图上可以看到,时钟通道和数据通道各自独立,但通过LP/HS切换模块统一管理。切换模块负责协调所有通道的模式转换,确保时序一致。
3.6 实际配置中的注意事项
最后,我总结几个实际开发中容易踩的坑:
- 差分对等长:Dp和Dn走线长度差不要超过5mm,否则时序会偏移。
- 终端匹配:HS模式下,差分对两端需要100Ω终端电阻。很多SoC内部已经集成了,但有些需要外部加。
- 模式切换时序:严格按照datasheet配置,特别是THS-PREPARE和THS-TRAIL。我习惯留20%的余量。
- 共模电压:HS模式下,共模电压要稳定在200mV±50mV。电源纹波大时,加LC滤波。
一句话总结:D-PHY的核心就是差分信号抗干扰、时钟数据通道分工、LP/HS模式切换。把这三点吃透,MIPI物理层你就掌握了80%。