4、信号完整性:差分信号布线要点、阻抗匹配、信号衰减补偿与眼图测试
各位同学,咱们今天聊摄像头热插拔里最硬核的部分——信号完整性。说白了,就是保证摄像头送过来的数据,主控芯片能准确无误地收下来。我见过太多项目,软件调得差不多了,一上摄像头就花屏、闪屏,查到最后都是信号完整性的锅。
摄像头接口现在主流是 MIPI D-PHY,用的就是差分信号。差分信号这东西,抗干扰能力强,但布线要求也高。你想想看,一对线里一个走正信号,一个走负信号,外界噪声同时耦合到两根线上,一相减就抵消了。但前提是——这两根线必须完全对称。
4.1 差分信号布线要点
我个人习惯,画差分对的时候脑子里始终绷着一根弦:等长、等距、同层、同参考平面。这四点做到了,信号质量基本就有保障了。
- 等长:P/N 走线长度差控制在 5 mil 以内,MIPI 高速信号建议 2 mil 以内
- 等距:差分对内部间距保持恒定,不要忽宽忽窄
- 同层:正负信号走同一层,不要打过孔换层
- 同参考平面:下方参考地平面要连续,不要跨分割
我在项目中遇到过最典型的问题——为了绕等长,把差分对绕成了蛇形线,结果间距变了,阻抗也跟着跳。后来我学乖了,绕等长的时候用「凹凸」结构,保持间距不变。
4.2 阻抗匹配
阻抗匹配,说白了就是让信号在路上走得顺畅,别在接口处「撞墙反弹」。MIPI D-PHY 的差分阻抗标准是 100 Ω ±10%。你想想看,如果 PCB 走线是 100 Ω,连接器也是 100 Ω,摄像头模组内部也是 100 Ω,信号一路畅通无阻。但凡有一个地方阻抗变了,信号就会反射,反射回来的信号叠加到原信号上,波形就畸变了。
怎么算阻抗?我一般用 Polar SI9000 或者 Altium 的阻抗计算器。关键参数就几个:
| 参数 | 典型值 | 说明 |
|---|---|---|
| 线宽(W) | 4-6 mil | 取决于叠层和铜厚 |
| 线间距(S) | 8-15 mil | 差分对内间距 |
| 介质厚度(H) | 3-5 mil | 走线到参考层的距离 |
| 介电常数(Er) | 4.2-4.5 | FR4 板材典型值 |
| 铜厚(T) | 1 oz(1.4 mil) | 标准铜厚 |
4.3 信号衰减补偿
信号在 PCB 上走,距离越长衰减越大。MIPI 高速信号(比如 1.5 Gbps)走 10 cm 以上,眼图就开始闭合了。衰减的原因主要有两个:
- 趋肤效应:高频电流只在导体表面流动,等效电阻变大
- 介质损耗:PCB 板材会吸收部分高频能量
怎么补偿?我常用的方法有几种:
- 预加重(Pre-emphasis):发送端在信号跳变时加大驱动电流,补偿高频分量
- 均衡(Equalization):接收端用滤波器放大高频分量
- 中继器(Repeater):长距离走线中间加 Redriver 芯片
摄像头热插拔场景里,我建议走线长度控制在 15 cm 以内。如果超过这个距离,最好加一颗 MIPI Redriver,比如 TI 的 DS90UB9xx 系列。我曾经在一个项目中,摄像头到主控要走 25 cm 的 FPC 排线,不加 Redriver 根本没法用,加上之后眼图瞬间打开了。
4.4 眼图测试
眼图是信号完整性的「照妖镜」。你把示波器接在差分对上,用余晖模式看一段时间的数据波形,叠在一起就形成了眼图。为什么叫眼图?因为波形看起来像一只睁开的眼睛。
眼图能告诉你什么?
- 眼高(Eye Height):信号幅度的裕量,越大越好
- 眼宽(Eye Width):时序裕量,越大越好
- 抖动(Jitter):信号边沿的偏移,越小越好
- 眼图张开率:眼高/眼宽与理想值的比例
- 眼高 ≥ 150 mV(差分)
- 眼宽 ≥ 0.5 UI(单位间隔)
- 总抖动 ≤ 0.3 UI
我每次调摄像头驱动,最后一步一定是测眼图。拿示波器探头点一下差分对,看眼图清不清楚。如果眼图闭合了,先查布线等长,再查阻抗匹配,最后查衰减。大部分问题都能在这三步里找到。
嗯,这里要注意——测眼图的时候探头要接地,而且接地线越短越好。我见过有人用长地线夹子,测出来的眼图全是噪声,还以为是板子有问题,其实是探头没接好。
最后说一句,信号完整性这东西,前期设计花 80% 的精力,后期调试就省 80% 的麻烦。布线的时候多花半小时算阻抗、调等长,比板子回来拿示波器戳三天强得多。我这些年踩过的坑,十有八九都是前期图省事埋下的雷。