4. Skew的来源:PCB走线长度差异与阻抗不连续

上一章我们看了Skew怎么毁掉眼图,这一章来聊聊这些Skew到底从哪冒出来的。

我个人觉得,搞懂源头比会算容差更重要。你想想看,你辛辛苦苦把时序预算算得再漂亮,源头没掐住,板子回来一样流泪。咱们这行有个真理:源头堵住了,后面省一半功夫。

Skew的物理来源,本质上就两大类——走线长度差异和阻抗不连续。我分开讲,但你要记住:它们经常同时出现,互相放大。

4.1 走线长度差——最直接的Skew制造者

这个太好理解了。D-PHY是高速差分信号,一对线里P和N如果长度不一样,传输时间就不同。在2.5Gbps的数据率下,每1ps的时差对应大约0.17mm的走线长度差。

0.17mm是什么概念?一个0402电阻的长边都不到。所以你会看到D-PHY走线都画得像蛇一样,那不是为了好看,是在做等长补偿。

我在一个4K摄像头项目中遇到过这个问题。MIPI走线从SoC到FPC连接器,其中一对差分线的P和N差了大约2mm。我当时的想法还乐观——才2mm,算下来也就12ps,离spec的0.15UI(60ps@2.5Gbps)远着呢。结果一上示波器,这路数据通道的眼图开口只有不到40%UI,而且出现了明显的毛刺。

怎么会这样?我做了一些检查,发现两个坑:

  • 微带线效应:表层走线,P和N的参考平面不完全对称,造成单位延迟差异
  • 过孔带来的额外延迟:长的那根走了两个过孔,短的那根才一个

这两点加在一起,实际等效长度差放大了接近3倍。最后只好重新改板子,把那根短的走线硬生生绕成蛇形等长,再匹配过孔数量。教训深刻啊。

4.1.1 差分对内偏差

这是最基本的要求。D-PHY spec规定:

参数 LP模式 HS模式
对内Skew最大值 无严格要求 ≤ 0.15 UI
典型目标值 尽量等长 ≤ 25 ps
等长控制 建议≤ 5 mm 建议≤ 2 mm

我建议你在做Layout时,对内等长目标定在1mm以内。别指望卡着spec过,留余量是硬件工程师的尊严。

关键判断:差分对内偏差的出现,通常伴随共模噪声的剧增。如果你在测试中发现共模电压波动超过50mV,回来查对内的等长,大概率就是这里出了问题。

4.1.2 通道间偏差

这个是不同Data Lane之间的Skew,还包括Clock Lane对Data Lane的偏差。D-PHY的规范里,这个不是硬性约束——因为DDR采样模式会重新同步数据。但你听我一句劝:不要因为spec不约束就乱来。

原因有以下几点:

  1. 虽然接收端有DDR采样,但过大的通道间Skew会压缩建立/保持时间窗口
  2. 高速模式下,PLL的抖动会叠加在大Skew上,容易误码
  3. 你无法保证所有芯片的DDR采样窗口都一样宽

我个人的经验值是:不同Data Lane之间的走线长度差控制在5mm以内。Clock Lane走线要比最长的Data Lane短,最多等长,不要比它长。

实用技巧:在Layout阶段,我会把所有的MIPI走线分组做好等长约束。Clock Lane作为参考长度,所有Data Lane按照Clock ± 2mm来控制。这样后续做时序仿真时基本不用调。

4.2 阻抗不连续——隐性Skew放大器

讲完长度差,再聊聊阻抗不连续。这个更隐蔽,但破坏力不小。

阻抗不连续的本质是什么?是信号在传输路径上遇到了特性阻抗变化点,产生反射。反射回来的信号和主信号叠加,造成边沿畸变。这种畸变在时域上表现出来,就是额外的Skew。

我举个例子你就明白了。一根50Ω的微带线,中间接了一个过孔,过孔的阻抗可能在70-80Ω。信号经过这个过孔时,一部分能量被反射回去,一部分继续往前。反射回来的信号在源端再次反射,又往前传。这么来回几次,接收端看到的信号边沿就变慢了。边沿变慢,意味着过阈值的时刻在变化——这就是最典型的Skew来源。

// 反射系数计算公式
// Γ = (Z_load - Z_0) / (Z_load + Z_0)

// 过孔阻抗70Ω, 原来50Ω 
// Γ = (70 - 50) / (70 + 50) = 20/120 ≈ 0.167
// 大约16.7%的电压被反射回来

你看,16.7%的反射。在1.2V的差分摆幅下,这个反射电压大约200mV。它会在接收端引入额外的抖动,换算成时间Skew大约在5-10ps的量级。几个反射点加起来,就是二三十个ps。

4.2.1 常见的阻抗不连续点

  • 过孔:最大头的问题。换个层就带来阻抗跳变,Stub还会引入谐振
  • 连接器:FPC连接器、板对板连接器,阻抗控制差,容易出现几十欧姆的突变
  • 焊盘:BGA焊盘、电阻电容焊盘,比走线宽,容性负载增加
  • 线宽变化:走线从细变粗(比如从焊球扇出区到正常走线区)

特别提醒:不要跳过过孔建模。我见过太多工程师只在2D环境下做仿真,完全忽略了过孔的寄生参数。一个通孔过孔在2.5Gbps下可以等效为0.3-0.5pF的电容,这足够改变信号上升时间了。

4.2.2 阻抗不连续的累积效应

这一点很关键。单个不连续点可能影响不大,但一串累积起来,Skew会叠加。

我记得有一次帮别人排查MIPI问题。设计用了4个过孔换层,中间还过了一个板对板连接器。单看每个点:过孔反射系数0.15,连接器反射系数0.2,焊盘0.1。看起来都不算大,但信号每次反射都叠加一次,在TDR曲线上一看,阻抗曲线从50Ω跳到了75Ω然后又掉回45Ω,整段路径的等效特性阻抗已经面目全非。

最终结果:接收端的眼图完全闭合。最后解决办法是把走线全部改到同一层,去掉3个过孔,只保留最必要的一个过孔和连接器。阻抗连续性好了,问题解决。

4.3 两类来源的协同作用

现在把两张放在一起看。走线长度差和阻抗不连续很少单独出现。一个典型的场景是:

你走了一条长的等长蛇形线来补偿长度差,但蛇形线本身引入了额外的感性耦合和阻抗变化;同时过孔又带来容性突变。两个因素加在一起,实际Skew比单纯长度差计算出来的大得多。

这也是为什么我总说:仿真要过,测试要测,两者要对照。没有仿真,你找不到隐患;没有测试,你不知道仿真准不准。

下面这张图总结了本章的知识脉络:

Skew来源知识结构图 D-PHY Skew 两大来源 1. 走线长度差 2. 阻抗不连续 差分对内偏差 通道间偏差 单点不连续 累积效应 P/N 不等长 各Lane不匹配 过孔/连接器/焊盘 串扰/谐振放大 叠加效果 减小眼宽 ↑ 误码率 ↑ 共模噪声 ↑

4.4 实战建议汇总

基于上面的分析,我在项目中的做法总结为以下几点:

  1. Layout阶段:
    • 差分对内等长控制在1mm以内
    • 不同Data Lane之间控制在5mm以内
    • Clock Lane做参考,比最长Data Lane短
  2. 仿真阶段:
    • 不要只做2D,3D过孔建模跑一下TDR,S参数
    • 重点关注S11和S21, S11建议 < -15dB @ Nyquist频率
    • 看差分TDR曲线,阻抗波动控制在±10%以内
  3. 测试阶段:
    • 上示波器测差分眼图,看眼宽和眼高
    • 用TDR测实际走线阻抗,找突变点
    • 测共模噪声,超过50mV回来查等长和阻抗

避坑指南:我曾经在一个项目中把全部精力放在length matching上,忽略了via stubs。结果所有Lane都等长,频率却上不了2Gbps。后来在TDR上看到via stub谐振,切掉背钻后问题解决。从那以后,我每次评审都得盯着过孔看半天。