☰
高速信号反射排查:TDR定位、端接选择与过孔stub优化
2026/9/29 5:09:52 网站建设 项目流程

高速信号反射这个坑,我前后踩过不下五次,每一次的症状都长得不一样:有时候是眼图上方莫名其妙多出一个台阶,有时候是 TDR 曲线在某个位置凹下去一小块,还有一次最离谱,一块板子只在特定码型下才误码,换了几版连接器都没用,最后发现问题在一个谁都没注意的换层过孔上。反射这东西的特点是——它不像串扰那样喜欢成群结队地出现,也不像损耗那样一路均匀地吃掉你的幅度,它总是在某个具体的位置突然咬你一口,然后你在整条链路上找不到凶手。

这篇内容想聊的就是高速信号反射问题:它从哪来、在时域和频域里长什么样、怎么用 TDR 把它定位到一个具体的物理结构、端接方案怎么选、过孔和参考平面这些结构件上要注意什么、仿真和实测怎么互相印证。适合正在做 10Gbps 以上链路设计的硬件工程师、做 SI 仿真的仿真工程师,以及刚开始接触高速信号接口、被眼图折磨过的朋友。文中会给出不少可以直接抄的判据和换算方法,公式不多,但每一个都配了怎么用的说明。

1. 阻抗不连续到底把什么"打"了回去

1.1 特性阻抗不是万用表能量的那个电阻

先把一个最常见的误解拆掉。很多人第一次听到"这条线是 50Ω 的",下意识会拿万用表去量走线和地之间的电阻,结果量出来是开路或者几兆欧,然后开始怀疑板子做错了。走线的 50Ω 跟电阻完全是两回事。

传输线可以看成一连串无限小的电感和电容串并联出来的结构,它的特性阻抗是电压波和电流波在传播过程中的比值,写作:

Z0 = sqrt(L / C)

其中 L 是单位长度的分布电感,C 是单位长度的分布电容。这个值描述的是"波往前走的时候看到的瞬时负载",跟走线末端接了什么完全无关。你可以这样理解:一根已经灌满水的长橡胶管,你在入口突然加压,那一刻你感受到的阻力只跟管子的软硬、粗细有关,跟末端有没有阀门、阀门开多大毫无关系。末端是个开路还是一个堵头,要等压力波跑到头再反弹回来,你才知道。

这个类比里有一个非常关键的推论:管子越长,你越晚"知道"末端的情况;管子很短的时候,反弹回来的波和你加的压几乎同时到,你也分辨不出来。对应到走线上,就是判断一段走线要不要按传输线处理的经典判据:

如果 走线时延 td > 信号上升时间 tr / 6,就必须按传输线处理

把时间换成长度更直观。FR-4 内层的信号传播速度大约是 155 mm/ns(微带线因为有一部分电场在空气中,会快一些,大约 170 mm/ns)。假设上升时间是 100 ps,那么 tr/6 ≈ 16.7 ps,对应长度只有约 2.6 mm。也就是说,在 100 ps 边沿下,走线超过两三毫米就已经不能当"导线"看了。这个结论第一次听会有点反直觉,因为很多人脑子里的传输线效应还是"十几厘米长的走线才有"的旧印象。上升时间越短,这个门槛下降得越快:50 ps 对应 1.3 mm,25 ps 对应 0.65 mm。

顺便说一下,-6 这个系数是保守的工程取法,有的资料用 -4 或者 -10。用 -4 意味着你允许更长的走线不处理,容易放过问题;用 -10 会把大量本来没事的短走线也拉进来,增加不必要的工作量。我在实际项目里通常用 -6,遇到时钟、复位这类对过冲特别敏感的网,收紧到 -10。

1.2 反射系数:一个除法公式装下了所有直觉

反射的量化就一个公式:

Gamma = (Z_load - Z0) / (Z_load + Z0) V_reflected = Gamma * V_incident V_transmitted = (1 + Gamma) * V_incident

看起来平淡,但它能解释你遇到过的绝大多数现象。把几种典型情况列出来,你会发现自己见过的波形全在里面。

负载阻抗 Z_load反射系数 Γ负载处电压你会在示波器上看到什么
等于 Z00等于入射电压干净,无反射
开路(∞)+1入射电压的 2 倍电压翻倍,严重过冲
短路(0)-10电压被拉到底,边沿塌陷
2 倍 Z0(50Ω 线上的 100Ω)+1/3入射电压的 1.33 倍约 33% 过冲
一半 Z0(50Ω 线上的 25Ω)-1/3入射电压的 0.67 倍约 33% 下冲
1.5 倍 Z0(50Ω 线上的 75Ω)+0.2入射电压的 1.2 倍约 20% 过冲

这里有个特别值得记住的点:开路和短路都会造成 100% 的反射,区别只在于极性。很多人以为"只有短路才危险",其实过孔 stub 造成的开路分支、没端接的走线末端,都是接近 +1 的反射,造成的过冲往往比短路更麻烦,因为它会把电压顶到器件耐压之外,还可能触发接收端的输入保护二极管。

再补一个频域的等价表达,回波损耗(Return Loss):

RL(dB) = -20 * log10(|Gamma|)
反射系数 Γ回波损耗反射功率占比
0.0140 dB0.01%
0.0526 dB0.25%
0.120 dB1%
0.214 dB4%
0.339.6 dB11%
1.00 dB100%

注意看最后两行,Γ 从 0.2 涨到 0.33,看起来只是多了 0.13,反射功率从 4% 跳到了 11%,接近三倍。这就是为什么反射问题在后期特别难收拾:你把一个大的不连续改善一半,剩下的那个"看起来不大"的反而成了瓶颈,而它的绝对数值往往比你想象的高。

1.3 TDR 为什么能把阻抗画成一条曲线

TDR(时域反射计)的原理其实特别朴素:它往被测链路发一个快速上升的阶跃波,然后测反射回来的波形,根据反射系数反推每个时间点的阻抗:

Z(t) = Z0 * (1 + Gamma(t)) / (1 - Gamma(t))

因为反射系数和阻抗是一一对应的,所以只要能把反射波形准确地抓下来,就能把整条链路的阻抗剖面画成一条随时间变化的曲线。这就相当于给走线做了一次"超声波探伤",哪里阻抗变了,哪里就会出现一个凹陷或者凸起。

用 TDR 有两个坑必须提前知道,否则读出来的曲线会骗你。

第一个是时间轴和长度轴的换算。TDR 测到的是往返时间,换算成长度要除以 2:

物理距离 = 时间 * 传播速度 / 2

内层 155 mm/ns 的情况下,TDR 上 1 ns 的宽度对应大约 77.5 mm 的走线。如果你忘了除 2,定位出来的位置会整整差一倍,然后你会在完全错误的地方找一个不存在的缺陷。我第一次用 TDR 就犯过这个错,把异常点定位到了连接器上,换了三个型号连接器都没用,后来重新算了一遍才发现真正的位置在一块远离连接器的区域。

第二个是分辨率限制。TDR 的空间分辨率由它的上升时间决定:

空间分辨率 ≈ tr_TDR * v / 2

假设 TDR 的上升时间是 100 ps,内层 155 mm/ns,那么分辨率大约是 7.75 mm。意思是在这 7.75 mm 之内的所有阻抗变化,都会被糊成一个宽宽的低谷,你只能看到"这一段有问题",看不出具体是哪一个过孔。想要更细的分辨率,就得换上升时间更快的 TDR,或者改用频域方法(VNA 加时域变换)。这一点在做精细定位的时候非常关键,很多"我明明看到阻抗掉了但找不到原因"的情况,本质上是分辨率不够,把好几个小突变叠加成了一个看起来很大的凹陷。

2. 反射在时域和频域里的两副面孔

2.1 过冲、下冲和振铃:时域里最容易认出来的指纹

反射在时域最典型的表现就是振铃。信号从低到高跳变的时候,冲到最高点之后不是平下来,而是继续往上冲一点,然后往下掉、再往上、再往下,像弹簧一样振荡几次才收敛。这个振荡的周期不是随机的,它直接对应反射来回跑一趟的时间:

振铃频率 f_ring = 1 / (2 * td) 其中 td 是走线的单向传播时延

这个关系特别有用,因为它给了你一把从波形反推物理长度的尺子。假设你看到振铃的周期是 1.3 ns,那么往返时间 1.3 ns,单向 0.65 ns,对应走线长度约 100 mm(内层 155 mm/ns)。这时候你就可以判断:这是"整条 100 mm 链路末端不匹配"造成的振铃,而不是某个局部小结构的问题。反过来,如果你看到的是几百 MHz 甚至 GHz 级别的快速振铃,那说明反射源距离很近,可能是几十毫米甚至几毫米内的一个过孔或者一小段 stub。

还有一个细节容易忽略:振铃的幅度会随着每一次往返衰减,因为走线本身有损耗,驱动器输出阻抗也会吸收一部分。所以观察振铃的衰减速度也能帮你判断链路损耗水平——衰减得越快,说明走线损耗越大,链路越长或者材料越差。

区分容性和感性突变也是从波形上读的。电容性突变(比如一个大焊盘、一个连接器压接区)表现为边沿先被"拖慢",然后跟着一个下冲;电感性突变(比如一段 stub、一段细走线)表现为边沿上有一个尖锐的过冲尖峰,然后快速振铃。这个差异在做初步判断的时候很有用,能让你大概知道该往哪个方向找。

2.2 眼图塌陷与 ISI:反射真正杀伤的方式

单次反射在示波器上看着还挺好看,但一旦跑起真实码流,情况会复杂得多。原因在于反射是"码型相关"的,也就是说,前面几个比特的反射波回来的时候,会不会跟当前比特的判决电平撞上,取决于前面发的是什么。这就是 ISI(码间干扰),反射是它最主要的成因之一。

在眼图上,反射的表现有几种典型形态。轻度反射会在眼图里形成一个"台阶"或者"重影",也就是原本应该是干净的眼高区域,被一条水平的噪声带给切了一刀。中度反射会让眼高的顶部和底部变得模糊,上下边沿的位置漂移,表现为抖动增加。严重的时候,眼图直接闭掉,中间被"填满"。

这里有个特别实用的判断技巧:反射造成的损伤是确定性的,跟随机噪声不一样。随机噪声在浴盆曲线上表现为两条尾巴向外延伸,而反射造成的确定性抖动会在眼图上形成"双狄拉克"分布——两个明显的峰,而不是一个连续分布。如果你在浴盆曲线上看到明显的双峰结构,基本可以先怀疑反射或者其他的确定性干扰。

另外一个必须区分开的点是反射和均衡的关系。现在的 SerDes 普遍带 CTLE 和 DFE,CTLE 是连续时间线性均衡,本质上是一个频域上的增益补偿,它可以补偿一部分信道损耗,也能改善一些由反射造成的频响凹陷。DFE 是判决反馈均衡,它用前面几个已经判决的比特去抵消当前比特受到的干扰,但它的抽头数量是有限的,通常只能覆盖几个 UI 的时间窗口。

这就带来一个非常重要的结论:DFE 能吃掉"近距离、短延迟"的反射,比如封装和发射端附近的反射;但吃不掉"远距离、长延迟"的反射,比如背板远端连接器造成的那种延迟好几个纳秒的反射。因为那个反射回来的时候,已经超出了 DFE 抽头能覆盖的时间窗口。这也是为什么在长背板链路上,连接器和过孔这些远端结构件的阻抗一致性,比发射端的输出阻抗匹配还要重要。很多人做链路预算的时候只看插损,不看回波损耗,结果在长链路上翻车,就是这个原因。

2.3 S11 与回波损耗:频域怎么看同一个问题

时域看的是"哪里反射了",频域看的是"每个频率上反射了多少能量"。两者描述的是同一件事,只是切法不同。S11 是输入端的回波损耗,S21 是插入损耗,通常被称为插损。

频域方法最大的好处是能量化。你可以直接看到在某一个频点上,回波损耗是 15 dB 还是 25 dB。对于 25Gbps NRZ 信号,奈奎斯特频率是 12.5 GHz,能量主要集中在 12.5 GHz 附近,往上的三次谐波(37.5 GHz)也有一定能量。所以关心回波损耗的时候,不能只看某一个点,要看整个关注频段内的曲线形状。

一个典型的反射在 S11 曲线上的样子是一个或者多个尖峰。这些尖峰出现的位置对应着某个结构在四分之一波长处的谐振。这又回到了上一节的换算:

谐振频率 f = v / (4 * L_stub) L_stub = v / (4 * f)

反过来说,如果你在 S11 上看到 15 GHz 附近有个明显的尖峰,那么对应的物理结构长度大约是 155 / (4 × 15) ≈ 2.6 mm。这个长度非常像一段没背钻的过孔 stub,或者一段分支出来的测试线。用频域的尖峰位置反推物理尺寸,比在时域上看一个被分辨率糊掉的凹陷要可靠得多。

链路规范里通常会给一个 IRL(插入损耗与回波损耗)的联合要求,比如 IEEE 802.3 的 100GBASE-KR4 就规定了在不同插损水平下,回波损耗必须达到什么水平。这类曲线的逻辑是:插损越大,信号到达接收端时余量越小,对回波损耗的要求就越严。做链路预算的时候一定要把这条曲线拉出来对照,而不是只看一个固定的回波损耗数字。

3. 一次真实的排查链路:从眼图闭合定位到那个过孔 stub

3.1 先把反射、串扰、损耗三件事分开

实战中最耗时间的其实不是修复,而是判断这到底是不是反射。眼图不好看的原因太多了,串扰、损耗、电源噪声、时钟抖动、均衡参数没配好,都能把眼图搞坏。如果一开始就认定是反射,在那折腾半天,最后发现是串扰,那时间就白花了。

下面这张表是我自己整理的一个快速分诊表,用来在十分钟内把方向定下来:

观察手段更像反射更像串扰更像损耗
眼图形状台阶、重影、过冲尖峰与相邻通道码型强相关整体幅度下降,边沿变缓
降速测试绝对时间不变,相对 UI 改善改善不明显明显改善
单通道独跑改善不明显明显改善无明显改善
改相邻通道码型无变化明显变化无变化
TDR 阻抗剖面明显波动干净干净但有衰减
切断或改动端接明显变化无变化基本无变化
换一颗同型号器件基本无变化可能变化基本无变化

其中"单通道独跑"和"改相邻通道码型"这两项特别灵。反射是自己跟自己打架,跟邻居发什么没关系;串扰是邻居打到你这来的,邻居一安静你就好。这个对比只要做一次,方向基本就定了。

顺便提醒一句,这三者经常是同时存在的。真实链路上,损耗让边沿变缓,边沿变缓降低了反射的绝对幅度(因为高频分量被衰减了),而反射又反过来加剧了 ISI。所以判断的时候要看"哪个是主要矛盾",别指望找到一个纯反射或者纯串扰的环境。

3.2 TDR 扫链路,读阻抗剖面的顺序

方向定了之后,下一步就是定位。TDR 是这一步的主力工具,但怎么用有讲究。我自己的操作顺序是这样的:

  1. 先校准。开路、短路、50Ω 负载三件套,或者用电子校准件。校准这一步不能省,因为它决定了你后面所有读数的基准。

  2. 从近端开始往远端扫。先在发射端附近接上探头,把整条链路的阻抗剖面大致看一遍。

  3. 把时间轴换成长度轴。这一步前面强调过,别忘除 2。

  4. 记录每一个凹陷和凸起的位置与宽度。位置对应物理位置,宽度对应这个不连续结构的"等效长度"。

  5. 把 TDR 的阻抗曲线和仿真的 Z 剖面叠在一起看。两者对不上的地方,往往就是仿真模型里漏掉的东西——连接器的压接区、测试焊盘、散热焊盘、封装内的走线,都是常见的遗漏点。

  6. 去版图上对位置。把长度换算成坐标,找到那个区域,看那里有什么。

这里有一个必备的动作叫做去嵌(de-embedding)。TDR 探头和夹具本身有寄生电容和电感,它们会在 TDR 上投下一个很大的影子,有时候第一个峰值根本不是链路的问题,而是探头自己的响应。做法是先测一段已知的参考线,把夹具的响应提取出来,然后从整条链路的测量结果里减掉。不做去嵌,你会在链路最开始的位置看到一个巨大的凹陷,然后花好几个小时研究一个根本不存在的缺陷。

回到我那次的实际经历。现象是眼图上方有一个约 15% 的台阶,误码率在 1E-8 附近徘徊。TDR 扫描后在离发射端大约 38 mm 的位置看到一个凹陷。第一次我把它换算错了(忘了除 2),定位到了 76 mm 左右,那里是一段干净的直走线,什么都没有。重新算之后锁定到 38 mm,对应版图上正好是一个信号从内层第 3 层换到第 8 层的过孔。那段过孔在板厂的默认工艺下没有背钻,多余的那段 stub 长度约 2.4 mm。

套一下前面的公式:谐振频率 = 155 / (4 × 2.4) ≈ 16.1 GHz。而链路的奈奎斯特频率是 12.5 GHz,三次谐波接近 37.5 GHz,16 GHz 正好落在主要能量分布的边缘位置,造成带内回波损耗恶化。这就是那个台阶的来源。

3.3 常见反射源清单与自查顺序

定位到位置之后,接下来就是认人。下面这张表是我做项目时常用的自查清单,按"出现频率 × 影响程度"排序,遇到问题从上往下排查效率最高。

反射源阻抗偏移性质典型 TDR 特征常见处理手段
未背钻的过孔 stub容性为主短凹陷后跟一个凸起背钻、缩短 stub、换层优化
连接器压接区容性较宽的凹陷选型时看阻抗一致性、优化压接孔径
参考平面切换处缺少缝合孔感性明显凸起增加地过孔围栏
走线线宽突变视方向而定窄而深的凹陷或凸起平滑过渡、加泪滴、缩短过渡段
AC 耦合电容焊盘容性,幅度大很宽的凹陷缩小焊盘、用窄间距电容、优化扇出
测试点焊盘或测试分支容性 + stub凹陷叠加谐振用无分支的线上测试点
BGA 球与焊盘容性密集的细小凹陷优化出线、控制扇出长度
跨分割走线感性宽缓的凸起禁止跨分割,或加缝合电容
未端接的走线末端接近开路末端大幅过冲回波加端接或缩短分支

排查顺序上,我一般遵循"从大到小、从易到难"。先用 TDR 找出幅度最大的那个不连续,处理掉;然后再看下一个。因为多个反射源叠加的时候,小的那些会被大的掩盖,你先处理小的,做完之后发现改善不明显,容易产生挫败感,也容易得出"反射不是主因"的错误结论。

另外一个经验是,遇到 38 mm、52 mm 这类看起来"不像整数"的位置,不要怀疑自己算错了。过孔和器件的位置本来就是由布局决定的,不是设计成整数的。真正需要警惕的是算出来位置是 10.0 mm 这种特别整的数,那反而有可能是校准或者换算出了问题。

4. 端接方案的选择逻辑与电阻摆放的约束

4.1 四种主流端接拓扑的正面对比

端接是解决反射最直接的手段,但也是被误用最多的手段。很多人一遇到反射就想着加端接电阻,结果加了之后情况更糟,因为它破坏了原本已经匹配好的链路。先把几种拓扑的脾气摸清楚。

拓扑电路形式优点缺点典型适用场景
源端串联端接电阻串在驱动器输出与走线之间无直流功耗、成本极低、不增加负载只能用于点对点或菊花链末端单负载;会拉缓边沿单端时钟、低速控制信号、点对点总线
末端并联端接电阻从走线末端接到地或参考电压匹配干净,波形质量好静态直流功耗大高速时钟分配、需要干净波形的场合
戴维南端接上拉电阻加下拉电阻,并联等效等于 Z0可提供直流偏置电平直流功耗大,两个电阻增加 BOM电平需要偏置的总线、TTL/CMOS 总线
AC 端接电阻串电容后接地无直流功耗电容容值不好选,低频段端接失效有直流偏置、又不想耗电的总线

还有一个特别要说的:差分端接。差分链路通常在两条线之间跨接一个电阻,阻值等于差分阻抗(常见 85Ω、90Ω、100Ω)。这里的坑是,很多人按单端 50Ω 的思路,在两线各接一个 50Ω 到地,结果等效差分阻抗变成 100Ω 并联 100Ω,只有 50Ω,完全错了。正确做法是只跨接一个 100Ω(对 100Ω 差分阻抗而言),或者如果需要共模端接,再另加两个到共模点的电阻。

4.2 选型的判断顺序

选端接方案的时候,我一般按下面这个顺序过一遍,效率比较高:

第一步看拓扑。点对点、一点对多点、双向总线,这三种情况能用的方案完全不同。点对点最自由,什么都能用;一点对多点通常只能在末端端接;双向总线要考虑两个方向都要匹配。

第二步看直流要求。有些总线需要在空闲时保持一个确定的直流电平,比如某些存储总线的中间电平参考,这时候戴维南端接或者带上拉电压的并联端接是必须的,纯 AC 端接不行。

第三步看功耗预算。末端并联和戴维南端接都是有静态电流的,一条 32 位宽的总线如果每一位都挂一个 50Ω 到地,功耗会非常可观。这时候就得考虑用源端端接或者 AC 端接。

第四步看边沿要求。源端端接最讨厌的地方就是它会和走线电容、负载电容形成一个 RC 网络,把边沿拉缓。如果你的链路对上升时间有硬要求(比如高速 SerDes),源端端接基本可以直接排除。

第五步看芯片内置了什么。这一点经常被忽略。现在的 SerDes 发射端普遍可以配置输出阻抗和预加重,接收端有片内端接(ODT)可以配置阻值,有些还能做自适应的阻抗校准。这种情况下,最正确的做法是什么都不加,把片内阻抗调到匹配就行。很多高速接口的参考设计里,链路中间是一个端接电阻都没有的,原因就在这里。

这里必须明确一个反常识的点:现代高速 SerDes 链路绝大多数情况下不应该外接端接电阻。外接端接会改变链路的阻抗分布,破坏收发两端已经做好的片内匹配,同时引入额外的寄生电容和 stub。我见过不止一个项目,因为"反射大所以加个端接",结果眼图从勉强能用变成了完全不能用,去掉之后立刻恢复正常。

4.3 端接电阻摆在哪里:位置比阻值更容易出错

端接电阻的阻值好算,位置难摆。这里有几个反复出现的错误。

源端串联端接的第一个错误是电阻离驱动器太远。串联端接的原理是让驱动器输出阻抗加上这个电阻等于走线阻抗,所以严格来说那个 R 必须紧贴着驱动器的引脚。如果中间隔了一段短线,那段线本身又成了一个阻抗不连续的结构,它的长度如果超过上升时间对应的十分之一,就会在波形上表现为一个尖峰。具体算一下:上升时间 200 ps,十分之一是 20 ps,内层 155 mm/ns 对应约 3.1 mm。所以电阻离引脚的距离要控制在 3 mm 以内,这是个很硬的要求。第一次做这类设计的人经常会为了布局美观把电阻排得整整齐齐,离芯片十几毫米,然后怎么调都不对。

第二个错误是末端端接的电阻"分支出来接"。末端端接的电阻必须在走线的物理末端,不能从走线中间分一段出来接电阻。因为那段分支本身就是一个 stub,它带来的反射可能比端接消除掉的还多。如果布局上必须分支,分支长度要压到极短,并且要靠仿真确认。

DDR 这类存储总线的 VTT 端接是个经典例子。通常的做法是在走线末端分出很短的一段接到端接电阻上,然后电阻接到 VTT 电源。重点在于那段分支要短、要一致,而且所有位的分支长度要尽量匹配。这里的失配会造成通道之间的时序偏差,比反射本身更难处理。

还有一个小细节:端接电阻的封装也会带来寄生电感。0402 的电阻寄生电感大概在 0.5 nH 量级,在 10 GHz 以上已经不能忽略。高频应用里会用到专门的高频电阻或者反装(把电阻翻过来焊,让焊盘尽量小)。这个看起来是细节,但在 25Gbps 以上的链路里能看出差别。

5. 走线、过孔、连接器这些结构件上的反射细节

5.1 过孔 stub:最隐蔽也最常见的那一刀

前面那个案例已经把 stub 的危害讲清楚了,这里把量化方法补全。过孔 stub 本质上是一段开路的分支走线,它在四分之一波长的奇数倍位置谐振,输入阻抗趋向零,造成强烈的反射。谐振频率:

f_resonance = v / (4 * L_stub)

把公式反过来用,就能得到一个设计约束。假设你要做 25Gbps NRZ 链路,奈奎斯特频率 12.5 GHz,希望主要的谐振点远离这个频率,那么 stub 长度应该满足:

L_stub < v / (10 * f_nyquist) = 155 / (10 * 12.5) = 1.24 mm

也就是说,25Gbps 的链路里,过孔 stub 要控制在 1.2 mm 以内,或者干脆背钻。32Gbps 对应的奈奎斯特是 16 GHz,约束收紧到 0.97 mm。56Gbps PAM4 的符号率是 28GBd,奈奎斯特 14 GHz,但因为 PAM4 的功率谱主瓣更窄,实际约束会稍有不同,不过在同一个量级。

背钻不是万能的,它自己会带来新的问题。第一是钻孔直径不匹配。背钻的钻头直径通常要比成孔大 0.2 到 0.3 mm,这样背钻后剩下的过孔结构会在背钻深度附近形成一个"台阶",那里又是一次阻抗跳变。第二是深度公差。板厂的背钻深度公差一般在 ±0.1 到 0.15 mm,这个公差如果正好落在你的容差边界上,就会出现批次之间不一致的问题。所以设计时要留够余量,不要按照理论极限来定。

还有一点是背钻的残留 stub。背钻不可能把多余的部分完全钻干净,总会剩一段。常见的目标是控制到 0.2 到 0.3 mm 以内,用前面的公式算一下,0.3 mm 对应 155 / (4 × 0.3) ≈ 129 GHz,已经远在关注频段之外了。这个目标值是合理的。

换层过孔还有一个容易被忽略的参数:反焊盘尺寸。反焊盘是过孔周围挖掉的参考铜皮,它的大小直接决定了过孔的等效电容。反焊盘越大,电容越小,过孔的容性跳变越弱,但同时参考平面的完整性变差,而且过孔与相邻过孔之间的耦合会变化。这个尺寸要按叠层和目标阻抗反复试算,不能用一个固定的经验值从头用到尾。

5.2 参考平面切换与跨分割的代价

信号从一层换到另一层的时候,如果参考平面也跟着换了,就必须保证返回电流有路可走。返回电流总是沿着阻抗最小的路径流,在低频时它走最短的几何路径,在高频时它紧贴在信号走线正下方的参考平面上流。一旦参考平面变了或者被分割了,返回电流就找不到那条紧贴的路径,只能绕远路,等效为一个很大的感性突变。

在 TDR 上,这种情况表现为一个明显的凸起,而且往往比较宽。在频域上,它表现为带内的回波损耗恶化,并且会伴随比较明显的辐射增加——因为返回电流绕路形成的回路面积变大了,就是一个天然的天线。

处理方法很直接:信号过孔旁边放缝合过孔。一般要求在信号过孔周围 1 mm 以内放至少一到两个地过孔,有的设计规范甚至要求每层切换都配对放。注意缝合过孔要真正连接到返回电流需要经过的那些平面,如果只连了其中一层,效果会打折。

跨分割是更严重的情况,指的是信号线走在两个不同电源平面或者被分割的平面之间的区域。这时候返回电流完全无处可走,只能绕到很远的地方,形成的回路面积巨大。这种情况下即使加缝合电容,也只能救低频分量,高频分量照样会出问题。我的原则是:高速走线绝对不允许跨分割,如果布局上实在避不开,那就要改布局,而不是想办法修补。

5.3 焊盘、出线与连接器扇出:BGA 区域的窄口

BGA 出线区域的阻抗问题特别集中,原因是这里同时存在好几个不连续:球、焊盘、过孔、被迫变窄的走线。球和焊盘的尺寸远大于走线宽度,是很大的容性负载;被迫变窄的走线又是感性的;两者紧挨着,形成"容-感-容"的三段式结构。

处理这类问题有几个实操要点。第一,窄的那一段越短越好。走线被迫变窄是布局密度决定的,没法避免,但可以控制长度。经验值是控制在上升时间对应的十分之一以内,200 ps 上升时间对应约 3 mm。第二,用平滑过渡而不是直角突变,泪滴(teardrop)在这里是有用的,它能让阻抗变化更连续。第三,焊盘下方的参考平面要挖空,减少焊盘对地的寄生电容,但挖空的尺寸要和周围的平面缝合孔配合好,避免引入新的不连续。

连接器是另一个大头。压接式的连接器压接区孔径和焊盘都很大,是一个明显的容性突变,而且这个突变是"整排"的,所有信号同时受影响。选型的时候,不要只看厂商给的"支持 25Gbps"这种结论性描述,要看它的阻抗一致性曲线和插入损耗曲线的带宽。特别要看回波损耗在整个关注频段内的最大值,而不是典型值——最大值才决定了最坏情况下的余量。

测试点是很多项目里被遗忘的反射源。一个普通的测试焊盘就是一个容性负载,如果它还带了一小段分支线,那就等于加了一个 stub。高速线上如果要放测试点,应该用"线上测试点",也就是测试焊盘直接做在信号走线路径上,走线穿过焊盘而不是从走线分支出去。这样做虽然焊盘本身还是会有寄生电容,但至少不会引入额外的 stub。

6. 仿真与实测怎么配合才闭环

6.1 前仿真里最容易设错的几个边界条件

仿真最大的风险不是算得慢,而是算得不对还看不出来。下面几个边界条件是我在做前仿真时反复检查的。

端口阻抗的设置。这一点很容易搞错:单端链路设 50Ω 是对的,但差分链路要设成差分阻抗,常见的是 85Ω 或者 100Ω。如果差分端口错设成 50Ω,得到的 S 参数整条曲线都会偏,后面的时域波形自然也不对。另外要注意端口的参考平面,差分端口的两个端子必须落在实际的走线端点上,参考平面要在正确的位置。

仿真频段的上限。这个值不能只设到奈奎斯特频率,因为时域波形是通过频域数据反变换得到的,频段截断会造成波形失真,表现为边沿上出现吉布斯振荡,很容易被误读成真实的反射振铃。一般建议设到奈奎斯特频率的三到五倍。25Gbps 链路的话,扫到 40 到 60 GHz 比较稳妥。

过孔模型的完整性。很多仿真模型里只建了信号过孔的传输部分,没有把 stub 建进去,也没有考虑背钻。这样出来的结果会比实际好很多,等打样回来就傻眼了。建过孔模型的时候一定要包含实际的板厚、残桩、反焊盘尺寸、相邻过孔的影响。

材料的频变特性。FR-4 这类材料的介电常数和损耗角正切都是随频率变化的,用单个 Dk 值算出来的插损在中高频段会明显偏乐观。正规的做法是用宽频带材料模型(比如 Djordjevic-Sarkar 模型),厂商现在一般都会提供。

连接器的模型来源。3D 全波提取是最准的,但耗时。S 参数模型快,但要确认端口去嵌是否干净、频段是否覆盖够。封闭的连接器模型有时候会给出一条特别漂亮的曲线,那往往是因为去嵌做过头了,把一些真实的特性也一起减掉了。这种情况下最好拿一个连接器实物出来单独测一下,做个交叉验证。

眼图仿真的设置。要用真实的码型(PRBS7、PRBS31 等)和真实的抖动参数,不要用理想源。理想源的眼图永远好看,参考价值有限。

6.2 实测的三种武器

实测端有三件主要工具,各自负责不同的视角。

TDR 负责定位。它告诉你"哪里出了问题",输出的是阻抗剖面。前面已经讲了很多,核心是两个换算:时间除以二换长度,分辨率等于上升时间乘以速度除以二。

VNA 负责量化。它告诉你"每个频率上反射了多少",输出的是 S11 和 S21。用 VNA 的时候,最难的一步是校准和去嵌。要把夹具和线缆的影响从测量结果里彻底去掉,才能看到链路本身的特性。校准做不好,后面的分析全是错的。

眼图和误码仪负责结论。它告诉你"这条链路到底能不能用"。这是最终判据,但它的缺点是不告诉你原因。眼图坏了,你还是得回到 TDR 和 VNA 去找。

这三者必须能互相对上,这就是闭环的意义。一个完整的闭环是这样的:TDR 上某个位置有一个凹陷,换算成长度后在版图上找到了一个具体的过孔;VNA 上的 S11 在 16 GHz 有一个尖峰,用四分之一波长公式算出来对应的长度跟那个过孔的 stub 长度一致;眼图上的台阶位置和幅度,跟仿真里人为加入 16 GHz 反射后的眼图形态吻合。四条线索指向同一个结论,这时候你才可以放心地动手改。

如果有一条线索对不上,那就有问题。比如 TDR 定位的位置在版图上什么都没有,那大概率是换算错了或者校准有问题;比如 VNA 上有尖峰但 TDR 上看不到凹陷,那可能是 TDR 的分辨率不够把突变糊掉了。这些不一致本身就是重要信息。

6.3 迭代收敛的经验法则与止损点

反射问题的优化有一个很明显的边际收益递减规律。把一个反射系数 0.2 的不连续改善到 0.1,收益很明显;从 0.1 再改善到 0.05,花的时间可能是前面的三倍,而眼图的改善只有一点点。所以一定要设止损点。

我自己的做法是:当眼高的余量超过规范要求 30% 以上,就停止在反射上继续投入。除非有明确的可靠性或者量产一致性需求,否则继续抠下去性价比很低。这个时候把时间花在电源完整性、抖动预算或者热设计上,收益会大得多。

另外几个经验性的做法:处理顺序上,先解决幅度最大的那个反射源,别一上来就抠细节;版图设计时给关键位置留可调空间,比如端接电阻用 0Ω 跳线而不是直接连死,过孔位置预留背钻标记,连接器周围留出改版余量;每一次实测发现的问题,都要能映射回一个具体的、可修改的物理结构,如果映射不回去,那说明你还没找到根因,这时候继续改就是在赌。

最后再讲一个容易被忽视的点:反射问题的复现性。有些反射问题只在特定温度下出现,因为材料的介质常数会随温度变化,导致走线阻抗漂移;有些只在特定批次出现,因为板厂的蚀刻公差或者叠层厚度有波动。如果一个问题在实验室里反复复现不了,不要急着归因于"偶发",先想想测试条件跟实际使用条件差在哪里。我自己遇到过一次,实验室一直测不出问题,后来把环境温度从 25 度升到 65 度,问题立刻稳定复现,原因是走线阻抗随温度漂移,把原本勉强能用的反射推过了阈值。

写到这里基本把高速信号反射从原理到定位到修复再到验证的链路走了一遍。我个人最大的体会是,反射问题难的不是修,而是找。找到那个具体的物理结构,改动往往只需要几分钟;找不到的话,几天都可能在原地打转。所以每次动手之前,先把 TDR 的换算做对,把分辨率算清楚,把现象和结构对应起来,这三件事做到位,后面的事情就顺了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询