1. EMC测试不过,先别急着换屏蔽罩
做硬件的兄弟估计都经历过这种场景:产品改了三版,功能全部正常,信心满满送去实验室做EMC测试,结果辐射发射(RE)或者传导发射(CE)项目直接亮红灯。这时候很多人的第一反应是——加屏蔽罩、贴导电泡棉、换磁珠、调滤波电容。我见过不少团队在整改方案上花了两三周,把屏蔽方案搞得像俄罗斯套娃,结果一测还是超标,最后才发现问题出在一个大家觉得“肯定没事”的源头:时钟。
说实话,时钟在EMC测试里是一个非常容易背锅又非常容易被忽视的角色。说它容易背锅,是因为时钟信号通常是板卡上频率最高、边沿最陡、重复性最强的信号之一,方波在频域上对应一串谐波,任何一个谐波分量泄漏出去都可能导致超标。说它容易被忽视,是因为芯片本身能跑、波形用示波器看也“挺正常”,只要不是差到系统崩溃,很少有人会主动去关注时钟的抖动、相位噪声、上升沿质量这些细节。
但恰恰是这些细节,决定了一块板子在EMC实验室里是“一把过”还是“来回折腾”。这篇文章我想从时钟抖动这个角度,把EMC测试失败背后那些容易被忽略的机理讲清楚,再结合我实际做过的一些整改案例,聊聊时钟电路应该怎么设计、怎么布局、怎么排查,算是给自己做个复盘,也给正在跟EMC死磕的朋友一些参考。
2. 时钟抖动在这些测试项目里是如何“作案”的
2.1 先从频谱的角度理解“抖动为什么致命”
时钟抖动(Clock Jitter),直观理解就是时钟边沿相比理想位置发生的偏移——到得早一点或者晚一点。如果只用示波器看,几皮秒几十皮秒的抖动,肉眼几乎看不出区别,波形照样漂亮。但放到频域里看,情况完全不同。
理想时钟的频谱是一根根离散的谱线,能量集中在基频和各次谐波上。抖动引入之后,边沿位置不定,相位就会有随机或周期性的扰动,频谱上的表现就是原本纤细的谱线变“胖”了,能量从中心频率向两侧扩散,形成所谓的相位噪声边带。扩散出去的这部分能量,正好落在某个频点的限值线上方,EMC测试就挂了。
更麻烦的是,时钟谐波往往能辐射到几百兆甚至上GHz的范围。我做过的不少项目里,辐射超标频点并不是集中在时钟基频,而是出现在第3次、第5次、第7次谐波附近。这意味着很多人在谐波频点上去查干扰源,查了半天没找到对应的信号线,其实源头就是那个看起来“一切正常”的晶振或时钟缓冲器。
2.2 随机抖动、确定性抖动:不同来源不同解法
时钟抖动通常分为两大类:随机抖动(Random Jitter, Rj)和确定性抖动(Deterministic Jitter, Dj)。
随机抖动主要由热噪声、散粒噪声这一类物理噪声引起,呈高斯分布,理论上没有边界,它的频谱是平滑抬升的噪声底。这类抖动很难通过板级设计完全消除,只能尽量压低,比如选用低相噪的晶振、优化电源质量。
确定性抖动则是有界的,常见来源包括电源噪声耦合、相邻走线串扰、阻抗不匹配引起的反射、以及电磁干扰。其中电源噪声耦合是我在实际项目中见得最多的。时钟芯片的电源管脚如果去耦不充分,电源上的纹波会直接调制时钟的翻转阈值,让边沿位置跟着电源波动走,形成很强的周期性抖动(Periodic Jitter, Pj)。周期性抖动在频谱上产生的是离散的边带分量,很有辨识度——如果你在频谱仪上看到时钟基频两旁出现对称的“小胡须”状谱线,那基本就是电源噪声耦合无疑了。
2.3 频偏和漂移也要分清
很多人把抖动、频偏、漂移混为一谈,其实它们是不同的概念。频偏(Frequency Offset)是时钟频率相对标称值的固定偏差,比如标称25MHz的晶振实际输出25.001MHz,这是频率准确度问题,对EMC的影响不大。漂移(Drift)是频率随时间缓慢变化,多见于温补晶振老化或温度变化,也跟EMC没有直接关系。只有抖动,也就是相位在短时间尺度上的随机或确定性扰动,才是EMC测试里真正需要关注的对象。
搞不清这三者的区别,就容易在排查时走弯路。我见过有人拿着频率计测时钟频率,发现偏差在允许范围内,就排除了时钟的嫌疑,结果问题恰恰出在频率计根本测不出来的抖动上。频率计测的是平均频率,对皮秒级的边沿位置抖动完全不敏感。
3. 源头管控:时钟电路的PCB布局要抠的三个细节
3.1 参考平面和走线分层:时钟线不是你想怎么走就怎么走
很多EMC问题其实在PCB布局阶段就已经埋下了。时钟信号属于高速信号,它的返回路径必须紧贴信号走线,形成一个尽可能小的电流环路。环路面积越大,对外辐射的效率越高,反过来也越容易受到外界干扰。
实操层面的要求是:时钟走线必须紧邻完整的参考平面(通常是GND),并且参考平面在这一段区域内不能有分割。我见过一个案例,为了布线方便,时钟线在两层板之间穿来穿去,中途还跨过一条电源分割槽,结果时钟谐波辐射明显超标。后来把走线挪到内层、保证参考平面连续,辐射一下就降下来了。
另外一个容易忽略的点是过孔。时钟线换层时,过孔本身会破坏参考平面的连续性,而且过孔产生的寄生电感和寄生电容会引起阻抗突变,加剧反射和振铃。如果实在无法避免换层,记得在过孔旁边就近放置接地过孔,给返回电流提供一个低阻抗的换层路径。
3.2 串阻、端接和走线阻抗:把边沿“调钝”一点
时钟信号边沿越陡,包含的高频分量越丰富,辐射能量越强。所以一个很实用的EMC设计技巧是:在保证系统时序裕量的前提下,尽量让时钟边沿“钝”一点。
具体做法有两类。一是在时钟源输出端串联一个22Ω到33Ω的电阻,配合走线的特征阻抗和接收端的输入电容,形成一个低通滤波器,压低边沿的上升速率。串联电阻本身还能起到阻抗匹配的作用,减少反射。二是在接收端并联一个小电容到地,比如几皮法,同样可以滤掉高频成分。这个做法要谨慎,电容不能太大,否则把边沿拖得太慢,芯片可能采样失败,尤其是像DDR这类对时序要求严格的接口,不能随便加。
走线阻抗也需要控制。对于单端时钟信号,常见做法是控制50Ω特征阻抗;对于差分时钟(比如LVDS、MIPI),则是100Ω差分阻抗。阻抗不连续的地方会产生反射,反射波形和原始波形叠加,会让边沿出现台阶和振铃,这同样会增加高频能量。
3.3 差分时钟串电容的作用:不只是隔直
现在很多高速接口使用差分时钟,比如MIPI、USB、PCIe。差分结构本身有很好的抗共模干扰能力,辐射也比单端信号小,但在设计上有个细节很多人没想透——差分走线中间串联的电容到底起什么作用。
这个电容通常叫AC耦合电容,俗称“隔直电容”。它的首要作用是隔离收发两端的直流工作点。比如发送端输出的共模电平是1.2V,接收端的工作点可能是0.9V,直接连接会导致工作点被拉偏,甚至损坏接口。串联电容让两端的直流互不影响,只通过交流信号。
但从信号完整性角度看,这个电容还有一层作用:它和走线电感、收发端引脚电容一起,构成了一个高速滤波网络。电容取值不当,会造成低频分量过度衰减,使得接收端看到的波形发生畸变。在EMC方面,AC耦合电容的位置也有讲究——必须尽量靠近发送端放置,并且电容焊盘与走线之间的stub要尽可能短。放远了,电容和走线之间会形成一段阻抗不连续的短桩线,成为辐射天线。
我遇到过一个MIPI时钟抖动过大的问题,最后发现就是AC耦合电容放到了走线中间位置,离发送端太远,导致反射在电容和驱动端之间来回弹射。挪到靠近发送端之后,波形质量和EMC表现同时改善。
4. 电源噪声才是抖动的“幕后推手”:处理顺序与实测方案
4.1 为什么时钟芯片的电源去耦优先级最高
如果说时钟抖动是EMC测试失败的“直接凶手”,那么电源噪声就是“幕后推手”。时钟芯片内部一般有振荡电路、锁相环、输出缓冲器,这些模块对电源上的纹波和毛刺都非常敏感。尤其是锁相环的压控振荡器,电源上的几十毫伏纹波,就可能转化为几百皮秒甚至纳秒级的输出抖动。
所以时钟电路的第一条铁律就是:时钟芯片的电源管脚必须单独滤波,不能跟数字逻辑共用一组去耦电容。我的习惯做法是多管齐下:在时钟芯片电源入口先放一个磁珠,然后是10uF的钽电容或陶瓷电容做低频储能,再紧贴电源管脚放0.1uF的高频去耦电容,如果预算允许,再加一个1nF的电容应对更高频段的噪声。
层叠结构上,时钟芯片下方的地层不能挖空,电源层和地层之间的介质要薄,让电源分配网络具备足够的分布式电容。很多EMC整改方案无效,问题就出在——表面上看去耦电容加了一堆,但走线太长、过孔太多,电容的寄生电感已经大到在高频段根本不起作用。
4.2 电源平面与地平面的噪声耦合路径
电源噪声不只是从电源管脚直接灌进时钟芯片的。还有一种常见的耦合路径是:高速逻辑切换时,电源平面和地平面之间产生同步开关噪声(SSN),这个噪声通过芯片内部的衬底或引脚框架,耦合到时钟输出引脚上,表现为时钟信号上叠加了毛刺和抖动。
这种情况下,光靠时钟芯片周边的去耦电容是不够的,问题根源在整板的电源分配网络设计。降低同步开关噪声的手段包括:芯片电源管脚数量尽量多、分布均匀;电源平面和地平面紧耦合;高速逻辑芯片的去耦电容要紧靠电源和地引脚放置;关键电源轨上使用多个不同容值的电容组成去耦网络,避免单个容值在某个频率点形成谐振峰。
4.3 用手边的仪器定位电源与时钟的因果关系
当你怀疑电源噪声影响了时钟抖动,又不想直接上几万块的相位噪声分析仪,可以用手边的常规仪器做一次“相关性分析”。
方法很简单:用示波器同时观察时钟芯片电源引脚上的纹波和时钟输出波形,然后人为地改变负载状态,比如让FPGA跑一个最大功耗的bit流。如果电源纹波变大,时基展开看时钟边沿的抖动也随之变大,两者变化趋势一致,那基本就能锁定电源是抖动的主要来源。
再用DC电源给时钟芯片单独供电试试,如果辐射频点的能量明显下降,说明时钟链路的电源敏感度确实很高。这时候整改方向就明确了:要么加强时钟电源的滤波,要么换用电源抑制比更高的时钟芯片,要么在做电源层叠时让时钟芯片单独占一个干净的电源岛。
5. 一次从辐射超标到锁定时钟链路的完整排查过程
5.1 测试现象:峰值频点集中在时钟谐波上
去年做的一个数据采集板卡,主控是Xilinx的Artix-7 FPGA,板上有一颗25MHz的有源晶振给FPGA提供参考时钟,另外还有两颗DDR3,工作频率跑在800MT/s。送测EMC,辐射发射在200MHz到300MHz之间出现多个超标频点,峰值约超标6dB。
第一反应都会觉得是DDR的问题——800MT/s的DDR确实容易在400MHz附近产生辐射。但实测超标频点主要集中在225MHz、250MHz、275MHz,这个间隔正好是25MHz,是DDR频率的整数倍之外的一个独立序列。拿频谱仪接近场探头在板卡上扫描,发现最强的辐射点集中在晶振附近和晶振到FPGA时钟引脚的走线上。
至此基本可以确定,干扰源头就是25MHz时钟链路。
5.2 用频谱仪锁定可疑器件,用示波器找出帮凶
近场探头扫描只能告诉我们“哪里辐射强”,还不能告诉我们“为什么辐射强”。我当时的排查思路分两步。
第一步看频谱细节。把频谱仪的SPAN设小一点,分辨带宽调到1kHz,观察25MHz基频附近的相位噪声边带。结果发现基频两侧出现了明显的离散边带,距离主峰约几百kHz。这种形态说明时钟上叠加了周期性抖动,而且抖动源频率不高——几百kHz这个范围,非常符合DC-DC开关电源的纹波特征。
第二步用示波器验证。在晶振的电源引脚上测纹波,用20MHz带宽限制,测得约30mVpp的开关纹波,频率正好和频谱仪上看到的边带间距对得上。再用示波器的高分辨率模式看晶振输出波形,时基开到2ns/div,能看到边沿位置的晃动。这个晃动量用示波器自带的测量功能统计出来大约400ps,不算大,但对于25MHz的时钟来说,已经足以把谐波能量扩散到超标水平了。
5.3 整改动作:三处改动让测试从超标到余量充足
确认了机理,整改就顺理成章了。我做的改动有三处。
第一处是晶振电源。原来晶振的VCC直接从3.3V电源轨取电,旁边只有一个0.1uF电容。我改成磁珠加π型滤波:磁珠选600Ω/100MHz的,前后各放10uF和0.1uF电容。改完用示波器复测,晶振电源纹波从30mVpp降到了8mVpp左右。
第二处是时钟走线。原来的25MHz时钟线走在顶层,长大约40mm,中间还拐了两个45度角,没有包地。我改成从晶振出来先串联一个22Ω电阻,尽量靠近晶振放置,然后走内层,上下都有完整的地平面做参考,走线两侧加地孔隔离。
第三处是时钟输入引脚相邻区域的处理。FPGA的时钟输入引脚附近有一些其他信号线,虽然没有直接短接,但并行走了一小段。我把这段相邻信号线移开,减少串扰注入。
三处改动一起做之后,在没有加任何屏蔽措施的情况下重新送测,200MHz到300MHz频段余量最大的点也超过了6dB,整板辐射轻松通过,后续量产的几个批次也都稳定。
5.4 排查链路的通用化:看到什么现象,该怀疑什么方向
把这个案例的排查思路抽象一下,可以整理出一套可复用的判断方法。频谱上出现等间距的离散边带,优先怀疑电源开关噪声;基频附近的底噪整体抬高,优先怀疑随机抖动偏大或走线串扰;高频谐波超标但基频正常,优先怀疑上升沿过陡和走线阻抗失配;差分时钟超标,优先检查AC耦合电容位置和差分对内的等长情况。
这套方法不一定每次都能一步到位,但至少可以帮你在面对EMC测试失败时,不再像无头苍蝇一样乱试屏蔽方案,而是有方向、有依据地逐项排查。
6. 把时钟“抖”动的功课做在前面:设计阶段就该避开的几个思维盲区
6.1 盲区一:晶振选型只关注精度,不关注相位噪声
很多硬件工程师选晶振时盯着频率稳定度看——ppm越低越好,温漂越小越好。然而对EMC来说,晶振的相位噪声指标同样重要,甚至更重要。同样标称25MHz的两颗晶振,价格可能差了一倍,但相位噪声表现可能相差几个数量级。相位噪声差的晶振,抖动天然就大,后面的滤波和布局做得再认真,也只能是亡羊补牢。
选型时重点关注相位噪声指标在10Hz、100Hz、1kHz偏移处的值。如果买不到详细参数,尽量选主流品牌、有明确相位噪声曲线的型号,别在晶振这种关键器件上贪便宜。我踩过这个坑:某次为了省几毛钱换了个不知名品牌的晶振,EMC测试就多跑了两轮。
6.2 盲区二:时钟树设计只考虑逻辑功能,不考虑噪声叠加
复杂的系统里往往有多个时钟源和多条时钟路径,比如一颗SoC同时需要参考时钟、以太网时钟、音频时钟,还可能通过时钟MUX做来源切换。这时候要特别重视时钟树(Clock Tree)的整体设计。
时钟树里的每一个缓冲器、每一个MUX、每一段走线,都会给时钟信号增加额外的抖动。设计时要尽量让关键时钟走在时钟专用的树上,不要跟普通IO混用缓冲器。时钟MUX的通道切换要注意约束设置——切换瞬间送出的毛刺(Glitch)通过时钟树传到各个模块,轻则产生亚稳态,重则等效于在时钟上叠加一个巨大的抖动,这在EMC测试里往往表现为宽带噪声突然抬高。
6.3 盲区三:跨时钟域问题只当数字逻辑问题处理
跨时钟域(CDC)在数字设计里是经典话题,但很多人把它纯粹当成功能性问题——担心亚稳态导致逻辑错误。实际上,跨时钟域处理不当同样是EMC问题的温床。
异步信号不做同步处理直接进寄存器,输出的毛刺会成为一个无规律的高频脉冲串,频谱上表现为宽底噪声。这种噪声不像等间隔的时钟谐波那样容易识别,排查难度更高。所以如果你的产品里有多路异步时钟,做CDC检查时不要只盯着功能,也要从“少产生毛刺”的角度去约束设计——该用两级同步器的用两级同步器,该用异步FIFO的用异步FIFO,别偷懒。
不同时钟域的信号在PCB上也要注意走线隔离,避免一路时钟的谐波通过串扰耦合到另一路时钟的走线上,造成两个时钟域之间交叉污染。曾经有一个项目,两个时钟源分别在板子两端,走线在中间层平行走了很长一段,结果一路的谐波串到另一路上,示波器看两路时钟都有周期性抖动,排查了很久才发现是线间耦合。
6.4 盲区四:仿真和测试脱节
做高速设计的人都会用仿真工具做信号完整性、电源完整性分析,但很多人把仿真结果当成“走过场”,没有真正用于指导EMC设计。实际上,仿真在时钟抖动相关的EMC问题上能提供的帮助远比很多人想的大。
信号完整性仿真可以看到时钟走线端接是否匹配、反射是否严重;电源完整性仿真可以看时钟芯片供电端的阻抗曲线是否在全频段都低于设计目标;甚至电磁场仿真可以直接评估时钟走线的辐射贡献。把仿真结果和实测数据做对照,能大大加快EMC问题的定位速度。
我个人的习惯是,在PCB投板前必须做三件与时钟相关的检查:一是时钟走线的阻抗和端接仿真;二是时钟芯片电源端的PDN阻抗分析;三是时钟走线到板边、连接器、屏蔽罩等金属结构件的间距检查。这三项都过了才有底气投板,送测EMC的压力会小很多。
7. 写在最后的几个“吃亏换来的”建议
如果只让我说一句话,那就是:时钟是EMC测试里最值得提前投入精力的信号,没有之一。它的影响范围远超你想象,从基频到几十次谐波,从辐射到传导,从仿真到实测,时钟链路是贯穿整个电磁兼容设计的轴线之一。
几个具体的小建议,都是吃亏换来的经验。一看频谱先看边带,有“胡须”优先查电源;二示波器测时钟一定用长余辉模式或眼图模式,普通触发模式会掩盖大部分抖动信息;三晶振底下不要走任何信号线,尤其是复位信号和高频数据线;四时钟芯片的散热焊盘和地之间要打足够过孔,既是散热需要,也给返回电流提供通道;五别忘了时钟线上的串联电阻必须靠近信号源端放,放错了位置等于白放。
EMC整改最忌讳的就是盲目尝试。每次改版都应该带着假设去做,改之前先想清楚“这个改动会影响哪条耦合路径”,改之后再用仪器验证“这条路径上的信号是不是真的变了”。时钟这个方向给你带来的往往不只是EMC测试通过,还有信号质量和系统稳定性的整体提升。下一次你的板子EMC测试再翻车,不妨先问一句:时钟,真的是干干净净的吗?