第2章 信号完整性基础:反射、串扰、衰减及抖动

信号完整性,说白了就是信号在传输过程中能不能保持它该有的样子。我刚入行那会儿,总觉得只要焊好线、跑通功能就万事大吉,结果被一块SDIO卡反复掉线折磨了整整两周——后来发现,问题就出在反射和衰减上。SDIO跑的是高频数字信号,100MHz起步,DDR模式下200MHz甚至更高,这速度下,传输线上的那些“小毛病”全都会暴露出来。

这一章,我把四个最核心的信号完整性杀手——反射、串扰、衰减、抖动——掰开揉碎了讲清楚。每个概念都和SDIO实战绑在一起,你想想看,知道了敌人长什么样,后面做阻抗匹配才有方向。

2.1 反射:阻抗不连续的回声

反射是什么?就好像你在隧道里大喊一声,声音撞到墙壁弹回来,你听到的回声就是反射。在PCB上,信号在走线里跑,遇到阻抗突变的地方,一部分能量被反射回去,剩下的继续往前。反射回来的信号会和后续的信号叠加,造成波形畸变、过冲、下冲,严重时直接翻转逻辑电平。

反射的根本原因:传输线特性阻抗与源端、负载端阻抗不匹配。SDIO时钟线要求50Ω±10%,数据线也类似,一旦偏差超过15%,反射幅度就可能超过逻辑阈值的噪声容限。

我记得有一次做一块4层板,SDIO走线经过一个过孔换层,没做阻抗连续优化。示波器一看,时钟信号上升沿有个明显的小台阶——那就是反射造成的。后来加了个串联电阻匹配源端,问题就消失了。

反射的关键参数:

  • 反射系数Γ = (ZL - Z0) / (ZL + Z0) —— 阻抗差越大,反射越强。
  • 回波损耗RL = -20log|Γ| (dB) —— 通常要求RL ≥ -15dB。
  • 过冲/下冲:反射导致电压瞬间超过VOH或低于VOL,容易误触发。
避坑指南:SDIO走线尽量避免90°直角和急转弯,转弯处阻抗会骤降5-10Ω。我习惯用圆弧或135°斜角,保持阻抗连续。

2.2 串扰:邻居家的噪声传染

串扰,说白了就是一条线在走,能量通过电磁场耦合到旁边的线上。这在SDIO这样的并行总线里特别致命——时钟线和数据线靠得近,时钟跳变的时候会通过互容和互感把噪声灌进数据线,导致数据采样出错。

串扰主要分两种:容性耦合(电场)和感性耦合(磁场)。对SDIO来说,时钟频率高、边沿陡,容性耦合占主导。你想想看,时钟上升时间如果只有1ns,耦合到相邻数据线的毛刺幅度可能达到100mV以上,要是噪声容限只有200mV,那直接就是误码。

我遇到过最头疼的一个案子:两块SDIO卡在同一总线上,线间距只设了3倍线宽,结果一块卡读数据时,另一块卡的时钟线抖动得很厉害。后来把间距拉到5倍线宽,中间加了一条地线隔离,噪声才降下去。

串扰的影响因素:

因素 影响趋势 SDIO建议
线间距 间距越大,串扰越小 ≥5倍线宽(或≥20mil)
层间距离 参考平面越近,串扰越小 信号层紧邻完整地平面
上升时间 上升沿越陡,串扰越大 合理控制驱动器边沿速率
平行长度 平行走线越长,串扰越大 SDIO线尽量短,不超1英寸
注意:SDIO的CMD、CLK、DATA0〜DATA3共用同一参考平面时,如果地平面有狭缝或分割,串扰会急剧恶化。我曾经因为电源平面分块没处理好,导致串扰超标,最后只能飞线补救。

2.3 衰减:信号越跑越弱

衰减就是信号从发射端到接收端,幅度越来越小。原因主要有两个:导体损耗(线本身的电阻和趋肤效应)和介质损耗(PCB板材的耗散因子)。高频下介质损耗占大头,尤其SDIO跑到200MHz以上时,走线长度超过3英寸,衰减就不容忽视。

衰减的直接后果:眼图张开变小,接收端判断高电平时可能误判为低电平。我做SDIO布线时,通常要求衰减不超过3dB(对应电压幅度降低约30%)。

衰减估算公式(工程简化):

总衰减(dB) ≈ 0.1 × 频率(MHz) × 走线长度(英寸) × √(εr) × tanδ

举个例子:FR4板材(εr≈4.3,tanδ≈0.02),200MHz、4英寸走线,衰减≈0.1×200×4×√4.3×0.02 ≈ 3.3dB——已经接近警戒线了。

怎么应对?减少走线长度是第一选择,其次选择低损耗板材(如Megtron6、Rogers4350B),最后可以用预加重或均衡器在芯片端补偿。不过在SDIO这种低速(相对SERDES来说)接口中,走线长度控制在2-3英寸内基本安全。

我自己的一个习惯:SDIO布板时,CLK线一定要比DATA线短,而且优先走表层微带线(损耗比带状线小)。如果必须走内层,就选靠近地的第二层,别夹在两层电源中间。

2.4 抖动:时钟的不确定性

抖动,就是时钟边沿或者数据边沿在时间轴上的随机偏移。SDIO协议对时钟抖动非常敏感——接收端靠时钟边沿采样数据,如果时钟本身的位置不稳定,数据必然出错。抖动来源很多:电源噪声、串扰、热噪声、甚至PCB的参考平面不干净都会引入抖动。

抖动通常分成:

  • 随机抖动(RJ):热噪声引起,高斯分布,无法完全消除,只能控制带宽。
  • 确定性抖动(DJ):由电源纹波、串扰、反射等确定性因素引起,可以通过设计优化。

SDIO规范里对抖动的要求很严格:比如UHS-I模式下,时钟周期抖动(Tj)通常要求小于±150ps。我记得有一次调试,示波器测得时钟的峰峰值抖动达到了300ps,原来是开关电源的纹波耦合进了时钟参考平面,后来加了一颗10μF+0.1μF的去耦电容就降到80ps以下了。

关键原则:抖动是时间域的“噪声”,它的后果和电压域的噪声一样致命。即使幅度干净,如果抖动超标,接收端一样会误判边沿。

知识体系图:四大现象的关系

下面这张SVG图帮你理清反射、串扰、衰减、抖动之间的关联。它们不是孤立的——反射和串扰会互相影响,衰减会恶化抖动,而抖动又会增加误码率。理解这些牵连,后面做阻抗匹配和叠层设计时才有全局视角。

信号完整性四大核心现象关系图 反射 阻抗不匹配 串扰 电磁耦合 衰减 损耗 抖动 时序不稳定 反射&串扰 → 增大抖动 衰减 → 缩小噪声容限 抖动 → 误码率上升 反射&串扰互相激发 最终:SDIO通信失败 / 掉卡 / 数据错误

你看,反射和串扰主要影响电压域,衰减既影响电压域也影响时间域(边沿变缓),抖动是时间域的问题,但这四个东西最后都指向一个结果:误码。SDIO的误码率一旦超过10-10,卡就会自动重传甚至断开连接。

小结与行动清单

学完这一章,你至少应该能:

  1. 识别反射:看波形有无振铃、台阶,算一下走线延迟和上升时间关系。
  2. 判断串扰:用示波器测量相邻线噪声,或通过仿真检查线间距。
  3. 估算衰减:根据走线长度和频率,用简化公式算个毛估。如果超过3dB,就要考虑调整走线或换板材。
  4. 排查抖动:先看电源纹波,再看地平面完整性,最后查时钟源质量。
实践中,我通常把示波器余晖模式打开,观察眼图:眼高(电压裕量)和眼宽(时间裕量)一目了然。如果眼高低于300mV、眼宽低于400ps(以100MHz时钟为例),那就该回头检查这四大现象了。