PCB 布局与 EMC 实战:一次辐射超标 8dB 的整改记,让我把”布局三分靠画、七分靠想”刻进了脑子
上周实验室那块新板子第一次进暗室做 EN 55032 Class B 辐射测试,曲线一出来,全场安静了——216MHz 处超标 8.3dB,旁边还跟着 432MHz、648MHz 一串谐波,间距整整齐齐 216MHz。有经验的人一眼就明白:这不是电源问题,这是一根”天线”在往外发 72MHz 时钟的谐波,而且这根天线的长度,多半就是板上某条”我以为不重要”的走线。
这篇文章就把这次整改从头到尾捋一遍:哪些布局错误在原理图上看不出来、EMC 失败后怎么定位”辐射源到底是哪一根”、以及我后来沉淀下来的一份布局自查清单。都是真金白银烧出来的经验——一次暗室测试半天要 3000 多块,改一版板子又是两周。
一、先讲结论:EMC 问题 90% 是回流路径问题
很多人对 EMC 的第一反应是”加磁珠、加屏蔽罩、贴吸波棉”。这套思路是整改思路,不是设计思路。真正把 EMC 做好的核心认知只有一条:
每一条信号线,电流都要从负载流回源。回流电流永远走阻抗最低的路径——对高频信号来说,阻抗最低的路径是紧贴走线正下方的参考平面,而不是地平面本身。
高频回流为什么走正下方?因为信号-回流构成的环路电感在”回路面积最小”时最小。只要参考平面完整,回流自动贴合走线,环路面积趋近于零,对外辐射也就趋近于零。所以辐射超标的典型根因是:
- 回流被分割的参考平面挡住了——走线跨过电源平面分割缝,回流被迫绕行,环路面积暴增;
- 参考平面换层了——走线从 Top 层换到 Bottom 层,回流要从一层平面”跳”到另一层平面,没有跨层电容可走时,只能走最近的过孔或者别的地孔;
- 回流路径上有个洞——过孔密集区把平面挖成了筛子,回流被挤到洞的边缘绕行。
回看我那块板子,216MHz 的源头很快就找到了:72MHz 晶振的时钟线从 Top 层换到了 Bottom 层去接 MCU,而换层过孔 3mm 范围内没有任何连接 L2 地平面和 L4 地平面的地过孔。回流只能从最近的电源过孔借道回来——那条路径恰好绕过一个 USB 连接器的安装孔焊盘,环路一圈下来就是一根很好的单极天线,1/4 波长对 216MHz 来说约 34.7cm,板上绕出来的路径长度差不多就是这个量级。
二、布局前的功课:层叠与信号分类
布局不是打开工具就从左上角开始画器件。我在动第一笔之前做两件事。
1. 定层叠(Stackup)
这块板是 4 层板,典型的 EMI 友好层叠:
| 层 | 用途 | 备注 |
|---|---|---|
| L1 | 信号 + 关键器件 | 高速线尽量留在这一层,紧贴 L2 |
| L2 | 完整地平面 | 不允许有任何分割,回流的主干道 |
| L3 | 电源平面 + 少量信号 | 电源按电压分岛,岛间留足间距 |
| L4 | 低速信号 + 底面器件 | 走低速线,避开敏感区域 |
两个原则:高速信号层必须与完整地平面相邻(隔层贴没法形成紧耦合回流);地平面优先于电源平面——如果预算只够一个完整平面,给地,不给电源。6 层板则建议 L2、L5 双地平面,高速线夹在中间走带状线。
2. 信号分类,分区画线
把所有网络按下面四类分好,布局时严格隔离:
- Class A(时钟/高速差分):晶振、SDRAM、USB、Ethernet。长度最短化、回流最短化、禁止跨分割;
- Class B(开关电源):DCDC 的 SW 节点、BOOST 电感、MOSFET 开关回路。面积最小化,下方禁止走任何敏感线;
- Class C(模拟小信号):ADC 输入、运放。远离 Class A/B,靠近模拟地岛;
- Class D(普通数字/控制):GPIO、I2C、UART。相对自由,但不要横穿前三类的领地。
分类还有一个隐性好处:后期 EMC 整改时排查顺序就是 A → B → C。这次的 216MHz 就是 Class A 的典型案件。
三、去耦电容:位置和回路比容值重要
去耦电容的教科书公式大家都会算,但布局上翻车的往往不是容值,而是回路。一个实际的例子,同样的 100nF + 10μF 组合:
- 摆在芯片电源引脚旁边 2mm,地过孔紧挨焊盘:实测阻抗在 100MHz 以下平直;
- 摆在 8mm 外,地过孔拖了一条 15mm 的尾巴:500MHz 以上阻抗涨 3 倍,对时钟谐波的抑制形同虚设。
原则就三条:
- 电容紧贴电源引脚,先过大电容再到芯片(按容值从大到小、靠近芯片放小容值);
- 地过孔放在电容焊盘正旁边,电源走线先进电容后进芯片——不要让电容变成”旁路装饰品”;
- 每个电源引脚至少一个 100nF,BGA 芯片电源/地成对的引脚逐对配电容,别算”平均容值”。
还有一条容易忘的:电源平面和地平面之间的板间电容在 500MHz 以上反而是主力,所以层叠里电源平面要紧邻地平面,间距越小越好。我这块板 L3/L4 间距 0.1mm,就是为了这个。
四、时钟与晶振:把它当成一颗会发射的振荡器
72MHz 晶振电路的布局,我现在的做法近乎偏执:
- 晶振和谐振电容贴着 MCU 时钟输入引脚放,总走线长度控制在 10mm 以内;
- 晶振下方 L1 层挖空、L2 地平面保持完整,挖空区域任何其他走线不许进入——晶振底下的地是它的回流专用区;
- 外壳焊盘多点接地(有金属壳的晶振),别只接一点;
- 时钟线走线前先问自己三个问题:能不能短 20%?能不能不换层?必须换层的话,过孔旁边有没有地过孔?
时钟线的换层规则再强调一次:伴随地过孔。我在过孔 1.5mm 内至少放 1 个地过孔,密集换层区域放 3~4 个。这一招的成本是几个过孔,省下来的可能是几轮暗室测试。
五、失败现场:定位 216MHz 到底是谁发的
回到暗室结果。定位辐射源的思路是从”天线模型”倒推:
辐射频率线索:
216 / 72 = 3 → 72MHz 时钟的 3 次谐波
432 / 72 = 6 → 6 次谐波
谐波间隔 = 基频 72MHz → 单一辐射源,不是两台设备叠加
天线长度估算:
λ/4 @ 216MHz = c / (4 × 216MHz) ≈ 34.7cm
→ 板上存在 ~35cm 的意外环路(走线 + 绕行回流)
接下来是三板斧排查:
- 频谱 + 近场探头扫板:拿近场磁场探头贴着板面扫,216MHz 处热点在 USB 连接器附近——注意,热点位置是”天线”,不一定是”激励源”;
- 激励源锁定:对时钟树做减法测试。用调试器把 72MHz PLL 输出临时切换到内部 HSI,216/432MHz 立刻消失——确认激励源是 PLL 时钟;
- 路径确认:切回 PLL 后把 USB 线拔掉,辐射降了 5dB;再换一根带磁环的 USB 线又降 2dB——说明 USB 线缆本身被”喂”了共模电流,是辐射的天线延伸。
三点连一线:PLL 时钟某条线的回流跨了层没走地过孔 → 共模电流串到 USB 接口地 → USB 线缆当天线发射。最后用示波器在 USB 屏蔽层和机壳地之间串一个小电阻测共模电压,证实了这条链路。
六、整改:三层措施,从根治到打补丁
按”先根治、后抑制、再兜底”的顺序改:
- 根治(回流路径):那条时钟线干脆不换层了,在 Top 层直连;原来换层的位置补上 4 个地过孔阵;顺带把整板所有换层的高速线检查了一遍,补了 11 个地过孔;
- 抑制(接口滤波):USB 差分对上增加共模电感(90Ω@100MHz,额定电流富余 3 倍),VBUS 加磁珠 + 4.7μF;USB 屏蔽层通过 RC(0Ω + 1nF 并联组合,按现场试到最小辐射的档位)接到机壳地,而不是直接焊死;
- 兜底(接口防护):D+/D- 加 TVS(结电容 < 1pF,别拿大电容的 ESD 管对付 USB 2.0 高速线,会把眼图打没),VBUS 加 5.5V钳位 TVS。
复测结果:216MHz 从超标 8.3dB 降到低于限值 4.1dB,432MHz 谐波同步消失。这里有个值得记住的细节——共模电感的插损是把双刃剑,选型时看差模阻抗要小、共模阻抗要高,否则 USB 高速信号被压了幅度,眼图测试又会挂。
七、把经验固化:PCB 布局 EMC 自查清单
每块板投板前过一遍,全勾了再下订单:
- ☑ 层叠确认:高速线所在层紧邻完整地平面,地平面无分割无大洞
- ☑ 所有高速线换层处,过孔 1.5mm 内有伴随地过孔
- ☑ 时钟/晶振下方挖空其他走线,晶振走线 < 10mm,谐振电容紧贴
- ☑ 去耦电容紧贴电源引脚,地过孔在焊盘旁,电源先电容后芯片
- ☑ 开关电源回路(SW 节点、输入电容环路)面积最小化,下方无敏感线
- ☑ 板边缘留 20H 规则的净空(板缘走线内缩至少 3mm 优先)
- ☑ 接口(USB/网口/串口对外)有共模滤波 + TVS,位置靠近连接器
- ☑ 电缆屏蔽层接地方式可调(0Ω/磁珠/RC 多套方案预留焊盘)
- ☑ 晶振、复位线远离板边缘和接口区域
- ☑ 复位/使能信号加弱上拉,防止测试时误触发
八、写在最后:EMC 是设计出来的,不是整改出来的
这次 3000 块的暗室学费,换来的最大认知升级是:EMC 失败从来不是”测试没过”那一刻才发生的,而是在布局的第一天就注定了。 那个换层的过孔、那条贪近的走线,在 EDA 工具里看起来人畜无害,但回流电流看得清清楚楚。
如果只带走一句话,我选这句:画每一条高速线之前,先在脑子里画出它的回流路径;画不出来,就先别画线。 板子的层数、过孔、电容都可以加,唯独被破坏的回流路径,等它变成天线之后再想收回来,花的钱和时间就是十倍起步了。
下一块板已经投出去了,层叠和清单都用上了,等回来我再说说 SDRAM 布线等长和反射的故事。