
1. 项目缘起与整体设计思路1.1 为什么盯上了 MIPI D-PHY 的信号完整性做嵌入式或者手机基带这行的朋友对 MIPI 这三个字肯定不陌生。摄像头、显示屏、甚至一些传感器走的都是 MIPI 协议。而 D-PHY 作为 MIPI 的物理层承担着高速差分信号传输的任务速率从几百 Mbps 到几 Gbps 不等。速率一上去信号完整性问题就躲不掉了。我接手这个项目的起因很直接一块板子摄像头模组在低分辨率下工作正常一旦切到高分辨率高帧率画面就开始出现随机噪点、花屏甚至直接掉线。用示波器一测眼图几乎闭合。这不是软件能糊弄过去的问题必须从物理层入手。CTS 规范在这里扮演了什么角色简单说CTS 是合规性测试规范它规定了 D-PHY 接口在各种条件下必须满足的电气参数和时序要求。但规范是规范工程落地是工程落地。规范告诉你“眼高必须大于多少毫伏”但没告诉你 PCB 走线该怎么拐弯、端接电阻该放哪里、电源噪声该怎么压。这个项目要解决的就是规范和实际板子之间的那道鸿沟。适合谁看硬件工程师、PCB Layout 工程师、信号完整性工程师以及那些被高速接口调试折磨过的嵌入式软件工程师。哪怕你之前没怎么接触过 MIPI只要跟着思路走也能理解信号完整性调试的基本套路。1.2 整体调试框架的搭建逻辑我没有一上来就改板子而是先搭了一个分层的调试框架。这个框架的核心思路是从协议层往物理层倒推从系统级往器件级细化。第一层是协议与规范层。把 CTS 规范中与 D-PHY 相关的电气参数全部摘出来做成一张对照表。包括差分电压摆幅、共模电压、上升下降时间、眼图模板、抖动容限等。这一步的目的是建立“合格线”后面所有测量都有参照。第二层是系统架构层。确认主控端和模组端的 PHY 配置是否匹配包括 Lane 数量、速率档位、时钟模式连续时钟还是非连续时钟、端接方式等。很多问题其实出在两端配置不一致而不是板子本身。第三层是物理实现层。这才是重头戏涉及 PCB 叠层、走线阻抗、差分对匹配、参考平面、电源滤波、连接器选型等。信号完整性的问题九成以上能在这一层找到根因。第四层是测量验证层。用示波器、TDR、网络分析仪等工具对关键节点进行测量把实测数据和规范限值对比定位偏差来源。这个框架的好处是每层的问题不会互相掩盖。比如眼图不好你可以先确认协议配置对不对再确认系统架构有没有瓶颈最后才去怀疑 PCB。否则一上来就改走线可能白忙活。1.3 方案选型背后的取舍在调试手段上我做了几个关键取舍。第一个取舍用实时示波器还是采样示波器实时示波器能抓单次事件适合看偶发异常采样示波器带宽高、噪声低适合看眼图模板。我最终以实时示波器为主采样示波器为辅。原因是工程现场更关心“什么时候会出错”而不是“理想情况下眼图多漂亮”。第二个取舍要不要做 TDR 测试TDR 能测阻抗不连续点对定位走线问题非常有效。但 TDR 需要拆焊或者预留测试点对已经贴片的板子不太友好。我的做法是在改板阶段预留 TDR 测试点在调试阶段先用示波器做初步判断必要时再上 TDR。第三个取舍端接方案是选 AC 耦合还是 DC 耦合D-PHY 通常采用 AC 耦合因为两端共模电压可能不同。但 AC 耦合电容的选值和放置位置很讲究。我最终选了 100nF 的陶瓷电容放在靠近接收端的位置并且确保电容的 ESL 足够低。这个选择后面会详细说。第四个取舍电源方案是集中供电还是独立 LDO高速 PHY 对电源噪声非常敏感。我最终给 PHY 的模拟电源单独用了一颗低噪声 LDO数字电源则用开关电源加 LC 滤波。虽然成本上去了但换来的是眼图明显改善。这些取舍没有绝对的对错关键是要清楚自己的优先级。如果你的板子空间极度受限可能就得在端接方案上妥协如果成本敏感可能就得在电源方案上找平衡。但无论如何信号完整性的底线不能破。2. 核心细节解析与实操要点2.1 CTS 规范中必须吃透的几个关键参数CTS 规范里关于 D-PHY 的电气参数很多但真正影响工程落地的我总结为以下五个。差分电压摆幅VOD。规范规定了发送端差分电压的最小值和最大值。实测中如果 VOD 偏低接收端可能识别不到如果偏高功耗和 EMI 都会变差。我遇到过一块板子VOD 只有规范下限的 70%原因是发送端驱动能力配置错了。改配置后眼图立刻打开。共模电压VCM。D-PHY 的共模电压通常在 200mV 左右。如果两端共模电压差异太大AC 耦合电容上会有直流偏置导致信号畸变。我的经验是共模电压的偏差控制在 50mV 以内比较安全。上升/下降时间Tr/Tf。这个参数直接决定信号的高频分量。Tr/Tf 太快EMI 和串扰会加剧太慢眼图会闭合。规范给出了范围但工程上我倾向于取中间值留出余量。眼图模板。CTS 规范给出了眼图的禁止区域。实测眼图必须完全避开这个区域。我通常会把眼图模板打印出来贴在工位上每次测量都对照。抖动容限。包括随机抖动和确定性抖动。D-PHY 对抖动的容忍度不算高尤其是高速模式下。如果发现误码率偏高但眼图看起来还行大概率是抖动出了问题。注意CTS 规范里的参数是在特定测试条件下给出的比如特定的负载、特定的温度。实际板子的条件可能完全不同。所以规范值是参考不是圣旨。你要做的是理解规范背后的物理意义然后根据实际情况调整。2.2 PCB 走线中的差分对处理技巧差分对走线是 D-PHY 信号完整性的核心。我踩过的坑基本都集中在这里。等长匹配。差分对的两根线必须等长误差通常控制在 5mil 以内。但等长不是绝对的如果为了等长而让走线绕来绕去反而会引入更大的寄生参数。我的做法是优先保证走线顺畅等长误差在可接受范围内即可。对于 D-PHY 这种速率5mil 的误差对应的时间偏差大约 0.8ps远小于一个 UI。阻抗控制。D-PHY 的差分阻抗通常是 100 欧姆。这个阻抗由叠层和线宽线距决定。我一般会先让 PCB 厂提供叠层参数然后用阻抗计算工具反推线宽线距。实测下来阻抗偏差控制在 10% 以内比较理想。参考平面。差分对下面必须有完整的参考平面不能有跨分割。跨分割会导致回流路径断裂阻抗突变信号反射。我见过一块板子差分对下面正好有一条电源分割线结果眼图惨不忍睹。把分割线移开后问题消失。过孔处理。过孔是阻抗不连续的主要来源。如果差分对必须换层我会尽量让两根线一起换并且在旁边加地过孔。地过孔的作用是提供回流路径减少寄生电感。走线长度。D-PHY 的走线不宜过长。一般来说超过 10 厘米就要特别小心。如果必须走长线可以考虑加 Redriver 或者 Retimer。但这两个器件本身也会引入抖动需要权衡。2.3 端接与耦合电容的选型细节AC 耦合电容是 D-PHY 链路中容易被忽视的环节。选型和放置位置都有讲究。电容值。100nF 是常见选择。这个值需要和接收端的输入阻抗一起考虑。如果电容太小低频分量会被衰减导致基线漂移如果太大充放电时间变长可能影响高速信号。100nF 在大多数场景下是平衡点。电容类型。必须用低 ESL 的陶瓷电容比如 0201 或 0402 封装。电解电容和钽电容的 ESL 太高不适合高速信号。我实测过用 0603 封装的电容眼图明显比 0201 差。放置位置。电容要尽量靠近接收端。原因是发送端的驱动能力强对电容的寄生参数不敏感而接收端的输入阻抗高电容的寄生参数会直接影响信号质量。我通常把电容放在接收端连接器的 5mm 以内。对称性。差分对的两根线耦合电容必须对称放置电容值也要一致。如果不对称会引入共模噪声甚至把差分信号变成共模信号。2.4 电源噪声的抑制策略电源噪声是信号完整性的隐形杀手。D-PHY 的电源通常分为模拟电源和数字电源两者的噪声抑制策略不同。模拟电源。模拟电源对噪声非常敏感。我通常会用低噪声 LDO 单独供电并且在 LDO 输出端加 π 型滤波电容-磁珠-电容。磁珠的选择要注意不能选直流电阻太大的否则压降会影响 PHY 的工作点。数字电源。数字电源的噪声主要来自开关电源的纹波和数字电路的开关噪声。我会用 LC 滤波加去耦电容的组合。去耦电容的选值要覆盖多个频段比如 100nF、1uF、10uF 各一颗分别对应高频、中频、低频。地平面。地平面的完整性同样重要。我见过一块板子PHY 的地和数字地混在一起结果噪声通过地平面耦合到信号上。后来把 PHY 的地单独划分用磁珠和数字地连接问题解决。电源时序。有些 PHY 对电源时序有要求比如模拟电源必须先于数字电源上电。如果时序不对可能导致 PHY 内部状态异常。这个要仔细看器件手册。3. 实操过程与核心环节实现3.1 从原理图评审开始排雷很多人拿到板子才想起信号完整性其实原理图阶段就要开始排雷。我在这个项目里原理图评审重点关注了以下几个点。PHY 配置引脚。D-PHY 通常有若干配置引脚用来设置 Lane 数量、速率档位、端接方式等。这些引脚的电平必须和软件配置一致。我遇到过一块板子硬件上拉电阻没焊导致 PHY 进入了错误的模式。端接电阻。有些 PHY 内置端接电阻有些需要外置。如果外置电阻的精度和布局都很重要。我一般会用 1% 精度的电阻并且放在靠近 PHY 引脚的位置。测试点。原理图阶段就要预留测试点包括差分对、电源、地。测试点要尽量小减少寄生电容。我通常会用 0.5mm 的焊盘配合微型探头。连接器选型。连接器的阻抗和串扰特性直接影响信号质量。我选了一款高速板对板连接器差分阻抗 100 欧姆串扰控制在 -30dB 以下。虽然贵但省去了很多调试时间。3.2 PCB Layout 的关键约束与检查清单Layout 阶段是信号完整性的主战场。我整理了一份检查清单每次改板都对照。检查项要求实测方法差分阻抗100Ω ±10%TDR 或阻抗计算差分对等长误差 5milPCB 工具检查参考平面完整无分割目视检查过孔数量尽量少换层时成对目视检查耦合电容位置靠近接收端 5mm目视检查电源滤波π 型滤波 多值去耦目视检查地过孔换层处加地过孔目视检查这份清单看起来简单但每一条背后都有血泪教训。比如参考平面我见过一块板子差分对下面有一条 0.5mm 宽的分割线肉眼几乎看不出来但眼图就是不行。后来用放大镜才找到。3.3 测量环境的搭建与校准测量环境搭不好测出来的数据就是垃圾。我在这上面花了不少时间。示波器带宽。D-PHY 的速率如果是 1Gbps示波器带宽至少要是 2GHz最好 4GHz。带宽不够测出来的眼图是假的。探头选择。差分探头是必须的。我用的是一款带宽 4GHz 的差分探头输入电容 0.5pF。输入电容太大会加载被测信号导致眼图失真。校准。每次测量前都要做校准包括探头校准和示波器校准。校准件要用原厂的不要图便宜。我吃过亏用了一根劣质校准线结果测出来的数据偏了 20%。接地。探头的接地线要尽量短。我通常会用接地弹簧而不是鳄鱼夹。鳄鱼夹的寄生电感太大会引入振铃。环境噪声。测量环境要远离大功率设备比如电机、开关电源。我一般会在屏蔽室里测如果没有条件至少要把手机、对讲机拿远点。3.4 眼图测试与参数调优的完整流程眼图测试是信号完整性调试的核心环节。我的流程如下。第一步配置 PHY 到目标速率和 Lane 数量。确保软件和硬件配置一致。第二步发送特定的测试码型。D-PHY 通常有专门的测试模式比如 PRBS 码型。如果没有可以用图像数据代替但要确保数据内容有足够的跳变。第三步用差分探头抓取差分信号。探头要放在接收端而不是发送端。因为接收端的信号才是真正被采样的信号。第四步调整示波器的时基和幅度让眼图稳定显示。时基要覆盖至少 2 个 UI幅度要覆盖整个信号摆幅。第五步对照 CTS 规范的眼图模板检查眼图是否合格。如果不合格记录下眼高、眼宽、抖动等参数。第六步根据眼图参数反推问题来源。眼高不够可能是 VOD 偏低或者衰减太大眼宽不够可能是抖动太大或者阻抗不匹配眼图不对称可能是共模电压偏差或者端接不对称。第七步调整参数重新测量。这个过程可能需要反复多次。我在这个项目里眼图从几乎闭合到完全打开一共调了三天。第一天调端接第二天调电源第三天调走线。最后发现主要问题出在耦合电容的放置位置和电源滤波上。3.5 误码率测试与长时间稳定性验证眼图合格不代表误码率合格。眼图是静态的误码率是动态的。我做了 24 小时的误码率测试才敢说链路稳定。测试方法。用 PHY 内置的误码率测试功能或者用外部码型发生器。发送 PRBS31 码型接收端统计误码。测试条件。要在最坏条件下测试包括最高温度、最低电压、最大速率。我通常会在高温箱里跑 24 小时同时监测误码率。判定标准。D-PHY 的误码率通常要求低于 1e-12。如果高于这个值即使眼图看起来还行也不能算合格。记录与分析。误码率测试要记录误码发生的时间、数量、分布。如果误码是随机分布的可能是抖动问题如果误码是突发的可能是电源噪声或者外部干扰。我遇到过一块板子眼图很好但误码率就是下不去。后来发现是电源上有一个周期性的纹波频率正好和某个时钟谐波重合。换了一颗 LDO 后误码率降到 1e-13 以下。4. 常见问题与排查技巧实录4.1 眼图闭合的典型原因与排查顺序眼图闭合是最常见的信号完整性问题。我总结了一个排查顺序从易到难。第一步检查配置。PHY 的速率、Lane 数量、端接方式是否和软件一致。这个最简单但也最容易被忽视。第二步检查电源。用示波器测 PHY 的电源纹波。如果纹波超过 50mV先解决电源问题。第三步检查端接。用万用表测端接电阻的阻值。如果偏差超过 10%换电阻。第四步检查耦合电容。用示波器测电容两端的信号。如果电容值不对或者放置位置不好信号会畸变。第五步检查走线。用 TDR 测差分阻抗。如果阻抗不连续定位不连续点。第六步检查参考平面。用放大镜看差分对下面有没有分割线。如果有改板。第七步检查连接器。如果连接器质量差换连接器。这个顺序的原则是先软后硬先易后难。不要一上来就怀疑走线很多时候问题出在配置或者电源上。4.2 误码率偏高的隐藏因素误码率偏高但眼图正常这种情况最让人头疼。我遇到过几次总结下来有以下几个隐藏因素。抖动。眼图看不出来的抖动可能是随机抖动或者确定性抖动。用示波器的抖动分析功能把抖动分解成 RJ 和 DJ。如果 DJ 偏大可能是电源噪声或者串扰。串扰。相邻差分对之间的串扰可能在眼图上表现不明显但会导致误码。用网络分析仪测串扰如果超过 -30dB要考虑增加间距或者加屏蔽。地弹。地平面上的噪声会导致接收端参考电平波动。用示波器测地平面上的噪声如果超过 50mV要加地过孔或者改地平面。时钟恢复。有些 PHY 的时钟恢复电路对抖动敏感。如果时钟恢复不好误码率会偏高。这个通常需要调整 PHY 的配置参数。温度漂移。有些问题只在高温下出现。我遇到过一块板子常温下误码率合格高温下误码率飙升。后来发现是某个电容的温度特性不好换了电容后解决。4.3 常见问题速查表现象可能原因排查方法解决措施眼图闭合配置错误检查 PHY 配置引脚修正配置眼图闭合电源噪声测电源纹波加滤波或换 LDO眼图闭合阻抗不匹配TDR 测阻抗调整线宽线距眼图不对称共模电压偏差测共模电压调整端接或耦合电容误码率高抖动抖动分析找抖动源误码率高串扰测串扰增加间距或屏蔽误码率高地弹测地噪声加地过孔高温误码温度漂移高温测试换温度特性好的器件随机花屏接触不良检查连接器换连接器或加固掉线电源时序测上电时序调整时序4.4 几个容易被忽视的实操心得心得一不要迷信仿真。仿真能帮你理解趋势但不能代替实测。我见过仿真结果完美实测一塌糊涂的案例。原因是仿真模型不准确或者实际板子的寄生参数和仿真不一致。心得二改板要一次只改一个变量。如果你同时改了走线和电源出了问题就不知道是哪个引起的。我通常一次只改一个地方测一次记录一次。心得三保留测试记录。每次测量的眼图、误码率、电源纹波都要截图保存。这些记录在后续改板或者量产时非常有用。心得四和 PCB 厂保持沟通。阻抗控制、叠层参数、材料选择都需要 PCB 厂配合。我通常会要求 PCB 厂提供阻抗测试报告确保板子符合设计。心得五不要忽视连接器。连接器是链路中最薄弱的一环。我见过太多因为连接器质量差导致的信号完整性问题。选连接器时不要只看价格要看阻抗、串扰、插损等参数。心得六软件和硬件要一起调。很多信号完整性问题可以通过软件配置来规避。比如降低速率、调整驱动强度、改变端接方式。硬件工程师和软件工程师要坐在一起调不要各调各的。这个项目从开始到稳定量产前后花了将近两个月。其中大部分时间不是在改板而是在测量、分析、验证。信号完整性调试没有捷径就是一步步排除一点点积累。但每解决一个问题你对整个链路的理解就会深一层。这种经验是看多少规范都换不来的。