第三章:反射与阻抗匹配

讲到信号完整性,反射是绕不开的话题。很多PHY寄存器异常,比如链路频繁断开、误码率飙升,根源其实就是反射。我入行没多久就吃过这个亏,当时板子调不通,查了半天发现是走线阻抗没控好,反射直接把信号弄“糊”了。今天咱们就彻底把反射这件事搞清楚,顺便把阻抗匹配的方法落地到调试里。

3.1 反射是怎么产生的?

信号在传输线上高速奔跑,遇到阻抗变化的地方就会“弹回来”。这个现象物理上也叫回波。你可以想象一下,一个球在管道里滚动,管道突然变粗或变细,球就会反弹。电信号也一样。

反射的严重程度由反射系数决定:

Γ = (Z_load - Z_0) / (Z_load + Z_0)
  • Γ 为反射系数,范围 -1 到 +1
  • Z_load 是负载或跳变点的阻抗
  • Z_0 是传输线特性阻抗

当 Γ = 0 时,没有反射,能量完全吸收,这是理想情况。Γ 为正值表示同相反射(信号叠加变高),负值表示反相反射(信号被抵消变低)。

经验说:我以前调试一款千兆以太网PHY,发现误码计数总是在某些温度点暴增。后来用TDR测了走线,发现有一段过孔导致的阻抗突变,反射系数大约0.3。加上串联电阻后,误码直接降为零。阻抗不连续越小,PHY寄存器就越“干净”。

3.2 什么时候需要关注反射?

不是所有走线都需要做阻抗匹配。关键在于信号的上升时间 vs 传输线长度。我们一般用“临界长度”来判断:

L_critical ≈ t_r × v_p / 6

其中 t_r 是信号上升时间(10%~90%),v_p 是传输线上的传播速度(约 0.6c ~ 0.7c)。

当走线长度超过临界长度的1/6时,就必须按传输线处理,否则反射会引起过冲、振铃、台阶,直接导致PHY时钟/数据采样错位。

信号标准典型上升时间临界长度(FR4)是否需要匹配
RGMII (125MHz)~0.6 ns~1.5 英寸(~3.8cm)通常需要
DDR3/DDR4~0.3 ns~0.75 英寸(~1.9cm)必须匹配
I²C (400kHz)~几十ns很长,一般不考虑不需要

举个例子,你调试一块PHY板子,MDIO时钟才几MHz,上升时间好几ns,走线再长也不会出反射问题。但RGMII时钟是125MHz,上升沿就那零点几纳秒,超过一英寸就得认真对待了。

3.3 阻抗匹配的几种常用招数

匹配的核心只有一个:让信号的瞬时阻抗处处相等。常见的做法有这些:

  1. 串联匹配——在信号源端串一个小电阻(典型22Ω ~ 33Ω),吸收反射回来的能量。适合点对点传输。
  2. 并联匹配——在接收端对地接一个电阻(阻值等于特性阻抗),把多余能量泄放到地。缺点是直流功耗大。
  3. AC匹配——并联匹配串一个小电容,避免直流功耗,但会引入低频成分衰减。
  4. Thevenin匹配——用两个电阻分压,同时匹配共模与差模。常用于差分信号。
  5. 差分匹配——在差分线对之间加电阻(典型100Ω),匹配差分阻抗。

我个人最常用的是串联匹配,简单有效,功耗又低。不过要注意,电阻必须放在靠近源端的位置,而且走线要尽量短,别让它本身又变成一个新的阻抗点。

避坑指南:我曾经在一个项目里给DDR数据线加了并联匹配,直接导致信号摆幅下降,DDR PHY的写训练通不过。后来才发现并联匹配电阻拉低电平了。匹配方式选错了,寄存器一样出问题。所以,匹配不只是“接了就行”,要根据驱动能力来选阻值。

3.4 反射与PHY寄存器异常的直接关联

反射信号叠加到原信号上,会造成以下几种典型的眼图问题:

  • 过冲(Overshoot)——超过接收端耐压,长期会损伤PHY内部晶体管,寄存器出现不可恢复的硬错误。
  • 振铃(Ringing)——信号在逻辑电平附近来回振荡,导致采样时出现毛刺,CRC或FCS错误计数增加。
  • 台阶(Step)——信号到达后先跳到一个中间电平,再缓慢上升到满幅。这会让时钟采样误判数据位置,引起链路同步失败。

调试时,你可以直接读PHY的自协商状态寄存器(比如BCM50610的0x01寄存器),如果经常在“Link Up”与“Link Down”之间跳变,很可能就是反射造成的。另一个热门的寄存器是误码计数寄存器,比如“Symbol Error Count”,反射引起的误码通常是突发性的,不是随机单比特。

PHY寄存器异常特征反射嫌疑度
链路状态(0x01)反复跳变、间歇丢失⭐⭐⭐
误码计数突发骤增,且随温度/电压变化⭐⭐⭐⭐
信号质量指示(SQI)值偏低且抖动大⭐⭐⭐

反射导致寄存器读数“忽好忽坏”,其实就是信号质量游走在合格线边缘。你微调一下匹配电阻,可能就稳定了。

3.5 调试反射问题的实操流程

你拿到一块板子,PHY寄存器报错,怀疑反射。怎么办?我的习惯是这样:

  1. 读寄存器的“快照”——先读链路状态、误码计数、SQI,记录异常发生的频率和条件。
  2. 观察波形——拿示波器测PHY与MAC之间的关键信号(如TX_CLK, TXD, RX_CLK, RXD),看有没有振铃或台阶。探头要用地弹簧,别用接地夹子。
  3. 计算反射系数——如果你能测到信号线上的阻抗(用TDR更准),直接算Γ。看不到TDR的话,眼图开度也能反映问题。
  4. 尝试匹配——根据走线模型,先加串联电阻(22Ω起步),看寄存器是否稳定。记得每次改完焊接或换电阻后,重新上电读寄存器。
  5. 验证全温——反射导致的寄存器异常,在高温下更容易暴露。用热风枪局部加热,看寄存器读数是否变差。如果变差,大概率反射匹配还没做到位。
一个小技巧:调试反射时,别只看某个寄存器。我习惯把“误码计数+链路状态+SQI”三个寄存器同时监控,放在Excel里画趋势线。反射引起的异常往往有“关联性”——误码增加时链路状态不稳定,SQI也下降。如果只有误码增加但链路稳定,那可能是噪声或串扰,不一定是反射。
反射与阻抗匹配调试流程图 反射与阻抗匹配调试核心流程 信号沿传输线发出 遇到阻抗不连续点 信号反射、叠加、畸变 PHY寄存器异常出现 TDR/示波器/寄存器分析 选择并实施阻抗匹配 验证是否改善 关键:匹配后寄存器 读数必须稳定全温

上面这张图你大概能看明白:信号从源端出发,只要阻抗不匹配,反射就来了。反射直接破坏眼图,PHY寄存器跟着异常。我们做匹配,本质上就是在“断点”处把阻抗补上,让反射消失。然后回去看寄存器,稳定了,问题就解决了。

3.6 匹配阻值的估算与微调

理论计算是一回事,实际电路板上的阻抗会因为PCB工艺偏差、温湿度变化而漂移。所以我一般先估算再验证:

  • 串阻值 = Z_0 - 源端输出阻抗(驱动器的Ro),典型取22Ω ~ 33Ω
  • 并阻值 = Z_0(直接对地),但需要确认驱动器能否提供足够电流
  • 差分支路 = 2×Z_0(单端),实际常用100Ω跨接在差分对之间

调完之后,用示波器看过冲幅度。过冲最好控制在信号摆幅的10%以内。如果调到+15%以内,而且寄存器不报错了,也可以接受。没必要追求完美,但一定要留余量。

注意:有时候你加了匹配电阻,反射反而更差了。比如串联电阻位置没紧靠源端,或者电阻本身的寄生电容太大。这时候先别急着换匹配类型,检查一下电阻的封装和摆放——0402和0603的寄生参数相差很多,尤其是在高速信号线上。我记得有一次在RGMII时钟线上用0603串阻,反射不减反增,换成0402就正常了。

好了,这部分内容就讲到这里。反射和阻抗匹配是PHY调试的“地基活儿”,地基不牢,寄存器读数永远飘忽不定。你之后遇到板子偶尔断链、误码忽高忽低,先查反射,别急着换芯片。