直接进入正题。前些天帮一个做视频采集卡的团队看辐射发射超标的问题,周末加班在实验室里对着频谱仪折腾了一整天,最后问题出在大家都没想到的地方:主控给ADC供的MCLK时钟,展频(SSC)虽然开了,但调制率和调制深度完全不是给EMC用的那套参数,等于没开。换了一组配置,再跑一次RE测试,余量直接多了6个dB。
这种“时钟没抖起来”导致的EMC翻车,在硬件调试里太常见了。很多工程师一看到时钟就想到时序约束、建立保持时间,很少去关注时钟在频域上的行为。这篇文章就把EMC测试里跟时钟抖动、展频相关的那些门道一次讲清楚,包括SSC的原理、参数怎么选、PCB上怎么配合,以及实测中容易踩的坑,希望能给正在被辐射发射折腾的人一点参考。
1. EMC测试为什么会栽在时钟上
1.1 时钟信号天生就是“辐射源”
先看一个最基本的物理事实:任何周期信号的能量都集中在它的基频和谐波上。时钟信号尤其典型,因为它的上升沿和下降沿非常陡峭,频谱包络衰减得很慢,高次谐波可以一直延伸到几百MHz甚至GHz级别。
换句话说,一块板子上只要有时钟跑着,频谱仪上就一定看得到尖峰。比如一个100MHz的时钟,在100MHz、200MHz、300MHz……这些频点上都会出现能量集中。EMC测试里的辐射发射限值,不管是CISPR 22还是CISPR 32,都是按频段划分的准峰值限值。只要某个谐波的准峰值超过限值线,测试就失败。
这在实践中意味着什么?我见过不少案例,DDR跑在800MT/s的时候,辐射频谱上在400MHz附近冒出一根特别高的尖峰,经过排查发现不是DDR数据线上的问题,而是参考时钟的谐波和DDR时钟谐波叠加在一起,形成了一根“超级谱线”。时钟虽然只占一根信号线的位置,它在EMC上的“话语权”远超想象。
1.2 抖动、频偏、漂移:三个容易混淆的概念
展开讲SSC之前,得先分清三个概念:抖动(Jitter)、频偏(Frequency Offset)、漂移(Drift)。
- 抖动:时钟边沿相对于理想位置的短期偏移,单位是ps或ns。抖动分为随机抖动(RJ)和确定性抖动(DJ),它反映的是时间域上的不稳定。
- 频偏:时钟实际频率与标称频率之间的固定偏差,单位是ppm。比如一个100MHz的晶振标称频偏是±30ppm,意味着实际频率可能在99.997MHz到100.003MHz之间。
- 漂移:频率随时间和环境缓慢变化,通常由温度引起。
EMC测试关心的是频谱包络。抖动会影响频谱的整体形态:随机抖动的存在会降低谐波峰值,看似“有利于”EMC,但代价是系统时序余量变差。而频偏和展频又不一样,展频是一种主动的、周期性的频率调制,不是被动的不稳定,两者性质完全不同。
1.3 为什么展频能“压低”频谱峰值
展频时钟的核心思路很简单:不把能量集中在一个频点上,而是让时钟频率在一个小范围内周期性摆动,把能量“摊开”。
打个比方,这就好比你站在原地喊话,声音就集中在一个位置上;如果你一边喊一边来回走动,同一时刻站在某个具体位置的人听到的音量就小很多。时钟能量被分散后,频谱上每一个频点的峰值都会下降,而总能量基本不变。
展频带来的峰值衰减幅度,取决于调制深度和调制波形。调制深度越大,能量摊开得越宽,峰值压低越多。但代价是时钟在时间域上的周期持续变化,对时序要求高的系统(比如高速SerDes、DDR接口)会带来额外的挑战。这就是为什么展频不是“越大越好”,它需要在EMC收益和系统稳定性之间找一个平衡点。
2. SSC展频时钟的核心逻辑与参数配置
2.1 展频的几种实现方式
展频按实现方式分主要有三种:
- 调制时钟源的PLL分频/倍频系数:通过改变锁相环的反馈分频比,让输出频率周期性变化。这种方式比较灵活,但PLL的环路带宽会限制调制速率,如果调制率太高,PLL跟不上。
- 在时钟发生器芯片内部集成SSC功能:很多专用时钟芯片(比如IDT/Renesas的某些型号、TI的LMK系列)自带展频功能,只需要通过I2C/SPI配置几个寄存器就能启用。
- 用FPGA/DSP在数字域实现:如果你用的是FPGA生成时钟,可以在RTL里设计一个数字调制器,动态改变分频值,实现展频输出。这种方法自由度高,但要小心调制过程中产生的相位跳变。
从实际项目来看,第二种方式用得最多也最稳,因为它经过芯片厂家的验证,参数范围明确,行为可控。
2.2 调制率、调制深度、展频方向,参数怎么选
展频有三个核心参数,每一个都直接影响EMC效果和系统兼容性:
调制率(Modulation Rate):调制波形的频率,单位是kHz。常见取值在30kHz到60kHz之间。
- 为什么是30~60kHz?因为这个范围高于音频(20kHz以上),避免产生可闻噪声;同时又在电源滤波器的带宽之外,不容易和电源纹波形成差拍干扰。
- 太高(超过100kHz)的问题在于,接收机的中频带宽一般在120kHz(CISPR标准),如果调制率太高,频谱分析仪可能“跟不上”,测试结果不稳定。此外过高的调制率对PLL跟踪也有压力。
调制深度(Modulation Depth):频率摆动的范围,常用百分比或者ppm表示。
- 向下展频(Down Spread)通常取-0.5%到-2.5%,也就是从标称频率向下摆动。
- 中心展频(Center Spread)则是上下各摆一半。对于EMC抑制来说,中心展频和向下展频的效果接近,但向下展频更容易保证系统最大频率不超过标称值,因此对时序更友好。
展频方向:向上、向下、中心三种。
- 向上展频很少用,因为它会把最高频率抬到标称之上,可能突破时序上限,一般不推荐。
- 向下展频是主流,因为很多IC的最大工作频率限制摆在那里,向下展频不会突破上限。
表格可以做成这样:
| 参数 | 常见取值 | 对EMC的影响 | 对系统的影响 |
|---|---|---|---|
| 调制率 | 30~60kHz | 影响频谱展开形态,太高会使测试结果波动大 | 过低可能进入音频范围 |
| 调制深度 | -0.5%~-2.5% | 深度越大,峰值衰减越多 | 深度太大会增加时序余量压力 |
| 展频方向 | Down Spread为主 | 向下展频抑制效果和中心展频接近 | 向下展频可保证不超上限 |
2.3 一个实测配置案例:视频采集卡的108MHz时钟
以文章开头提到的那块视频采集卡为例,主控给ADC供一个108MHz的MCLK时钟,展频功能用的是芯片内部SSC。第一次调试时,工程师直接在寄存器配置里写了一个调制深度-5%、调制率10kHz的参数,结果噪声反而是大了。原因是调制率10kHz落进了音频范围,且和板上一个DC-DC的开关频率产生了差拍,频谱上出现了低频段的“毛刺”噪声,虽然不影响高频发射,但会让测试曲线很难看。
后来改成D/S(向下展频)-1.5%,调制率33kHz,实测频谱上108MHz这根发射尖峰的峰值下降了约7dB。这个效果是实打实的,原本RE测试在108MHz超标2dB,改完后余量5dB。这就是配置选型对整个测试结果的影响。
这里的经验是:展频参数不是随便填的,一定要看芯片手册里的推荐范围,优先用厂家默认的“EMC推荐配置”。厂商在做芯片validation时已经把这些参数测试过一轮,踩坑的概率会小很多。
2.4 展频工具链:寄存器配置和SSC验证工具
热搜词里有个“SSC tool”、“ssc tool 5.13”,这里顺便说一句。很多时钟芯片厂家会提供计算工具,输入目标频率、展频深度、调制率,工具直接算出寄存器值。这类工具很有用,因为寄存器里存的不是小数,而是分频比、步长值等整数参数,手算很容易算错。
我自己用过的几款工具,比如Renesas的ClockBuilder、TI的TICS Pro,都是填参数然后生成配置文件。虽然UI各不相同,但核心逻辑一致:先定输入频率,再定输出频率,确定展频的调制深度和调制率,然后检查PLL的VCO频率是否落在合法范围内。如果VCO超出范围,工具会提示调整参考频率或分频配置。这一步实际调试中很容易忽略,很多人改完展频参数发现输出频率偏了或者根本没展频,回查基本都在VCO超出工作范围。
3. 时钟抖动的硬件底子:PCB布局与跨时钟域设计
3.1 时钟源的位置,决定EMC的上限
软件层面的SSC配置再花哨,也架不住硬件布局的“反向操作”。时钟源的位置非常关键,我看到过很多板子把晶振放在板边,离连接器只有几个毫米,这简直是主动把干扰往外送。晶振或者时钟发生器的位置,应该尽量靠近用电的芯片,走线要短,参考平面要完整。
具体到布局布线,几个原则:
- 时钟走线要短而直,避免跨越分割的参考平面。跨分割会造成阻抗突变,信号回流面积变大,辐射增强。
- 时钟走线周围要打地孔隔离,让回流路径贴着走线走,不要把时钟信号裸露在板边。
- 晶振下方铺地铜,并且打一些地孔。晶振外壳接地也很有用,可以有效抑制晶振本身向空间辐射的能量。
3.2 ADC/DAC电路里,时钟和电源噪声的博弈
热搜词里有一条“adc/dac 电路设计:规避时钟抖动与电源噪声的3个pcb布局要点”,这个点和EMC也直接挂钩。ADC/DAC的性能和时钟抖动强相关,抖动会直接恶化信噪比。公式是:
SNR_dB = 20 * log10(1 / (2 * π * f_in * t_jitter))
这个公式说明一个残酷的事实:输入信号频率越高,同样的抖动造成的SNR损失越大。比如一个100MHz的模拟输入信号,0.5ps RMS抖动带来的SNR上限只有约70dB。很多高性能ADC的SNR标称值在75dB以上,如果你给它的时钟抖动超标,ADC本身再好也白搭。
从EMC角度来说,ADC/DAC布局有几点长期实践经验:
- 时钟走线和模拟输入走线要“分居”两侧,中间用地隔离。如果时钟噪声串扰到模拟输入,问题不只是EMC,还直接影响信号质量。
- 时钟芯片的电源管脚和ADC的电源管脚分开滤波,不要共用一颗LDO或者共用一个磁珠。防止时钟芯片的开关噪声通过电源网络耦合到ADC,这个噪声不仅影响ADC的SNR,还会在板上形成传导发射的路径。
- 时钟信号串接一个电阻,把上升沿变缓。上升沿越陡,频谱包络衰减越慢,辐射越强。串个小电阻(22Ω到33Ω)和源端匹配电阻合二为一,既改善信号完整性,又压低高频分量。
3.3 跨时钟域处理:CDC问题如何“反哺”EMC
跨时钟域(CDC)处理,表面上看是数字逻辑稳定性的问题,但它跟EMC也有关系。为什么?因为如果CDC处理不当,电路里会出现亚稳态,导致信号出现毛刺。毛刺的频谱极宽,会引入大量高频分量,直接抬高本底噪声。
常用的CDC处理方式:
- 两级同步器:用于单bit信号,第一级打拍消除亚稳态,第二级提供稳定输出。
- 异步FIFO:用于多bit数据流,通过格雷码指针同步,避免多bit同时变化时采到中间状态。
- MUX约束:如果多个时钟需要切换,时钟MUX的选择信号必须是同步的,否则切换瞬间可能出现短脉冲,形成毛刺。这就是热搜词里“时钟mux约束”的实际意义。
我们曾经在FPGA的调试中遇到过这个问题:一个跨时钟域的同步信号没做好,导致偶尔出现亚稳态,在频谱上表现为本底噪声比正常时高出3~4dB。查了很久,最后发现不是硬件问题,是RTL代码里的同步器少了一级。可见“数字bug”对EMC的影响不容忽视。
3.4 差分时钟与串电容的那些事
高速接口(比如MIPI、PCIe、以太网)普遍用差分时钟,差分信号的好处是对共模噪声不敏感,且差分对的辐射能量相对较小。但在实际调试中,差分时钟也常出问题。
热搜词里有“差分时钟串电容作用”。这个电容叫隔直电容或者AC耦合电容。它的作用是滤掉共模直流分量,只让交流信号通过。因为驱动端的输出共模电压和接收端的输入共模范围不一定匹配,加电容可以断开直流路径,让两端各自设置合适的共模点。
但在EMC层面,这个电容选多大是有讲究的:
- 电容太小(比如0.01uF),低频分量会被滤掉,波形变形,边沿变缓,对时序不利。
- 电容太大(比如10uF),ESR和ESL显著,高频特性变差。
- 常用值在0.1uF到1uF之间,还要注意封装,0402或者0603比较合适,因为寄生电感小。
差分时钟还需要关注一件事:走线要等长、等距、平行。差分阻抗要匹配,一般100Ω差分。如果差分对的P和N长度差得太多,会把差分信号变成共模信号,共模电流是辐射发射的主要贡献者。这个现象在频谱上表现为偶次谐波特别高,因为在理想差分信号里偶次谐波是相消的,一旦共模成分增加,偶次谐波就会被“激活”。
4. 实测现场:一次EMC整改的全过程记录
4.1 原始数据长什么样
去年有个客户的产品做预测试,辐射发射在200MHz附近超标,超标量约4dB。板子是一台工业控制器,主控频率400MHz,用的DDR3内存,内部有USB 2.0、Ethernet等多个接口。
第一次测试数据出来,频谱上有两处明显的“烟囱”:一根在200MHz,严重超标;一根在400MHz附近,刚好压线。按照经验,200MHz是DDR时钟的二次谐波(DDR3时钟一般是400MHz的话,200MHz不是DDR谐波),后来确认是USB 2.0的480MHz和主控时钟产生了混频。而400MHz这根就是DDR参考时钟的基波泄漏。
排查步骤:
- 先切掉DDR时钟的展频功能(默认是关的),测试发现400MHz的尖峰特别尖锐,说明这正是DDR时钟泄漏。
- 打开展频,配置-0.5%向下展频,400MHz尖峰下降了约4dB,但200MHz还是超标。
- 再检查USB 2.0的数据线走线,发现它跨过了一个分割的电源平面,导致回流路径变长,辐射增强。这个属于布局问题,没法靠时钟配置解决,只能改板。
- 最后把USB走线的参考平面打通,加了一些接地过孔,200MHz的尖峰降了7dB,彻底达标。
4.2 展频到底压了多少dB
给大家一个直观的数据。同一块板子上,用同一颗时钟芯片,配置三组不同参数,测试同一个频点(比如100MHz基波)的峰值衰减:
| 配置 | 调制率 | 调制深度 | 100MHz峰值衰减 |
|---|---|---|---|
| SSC关闭 | - | - | 0 dB(基准) |
| SSC中心展频 | 30kHz | ±0.25% | -3.2 dB |
| SSC向下展频 | 33kHz | -0.5% | -5.8 dB |
| SSC向下展频 | 33kHz | -1.0% | -8.1 dB |
注意这里有个明显的规律:衰减大概和调制深度的平方根或者对数相关,不是线性关系。深度从0.5%加到1.0%,衰减只增加了大约2.3dB,边际效益在递减。如果继续加大到2.5%,中间有可能会因为PLL的跟踪能力下降而出现调制波形失真,反而导致频谱出现杂散。这也是为什么很多芯片的SSC深度上限就定在-2.5%左右。
4.3 常见问题速查表
整理几个我在调试中反复遇到的情况,做成一个速查表格,给后面调试的人参考:
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 打开SSC后频谱没有变化 | 寄存器没生效,或者使能位被后续配置覆盖 | 回读寄存器,确认真实配置值 |
| 打开SSC后出现杂散频率 | 调制率设置太高,或者调制波形不纯净 | 降低调制率,尝试30kHz~40kHz |
| 时钟输出频率整体偏差 | VCO超范围,或分频配置错误 | 使用厂家工具重新计算配置 |
| 谐波能量反而变大 | 展频方向和系统时序冲突,导致PLL失锁 | 检查锁定状态,改用向下展频 |
| 某个频点上出现“低频呼吸感”噪声 | 调制率落入音频或电源差拍频段 | 调整调制率避开DC-DC开关频率 |
| 差分时钟偶次谐波偏高 | 差分对等长没做好,共模成分过大 | 检查等长、共模扼流圈、回流地 |
4.4 仪器设置与测试手法上的坑
测试中还有一个容易被忽略的环节:如果用频谱仪或者接收机去验证SSC效果,扫描时间要够长,或者用“Max Hold”模式多跑几次。因为展频是让频点周期性摆动,扫描速度太快的话,你会看到频点“游走”,峰值读数偏低或者不稳定。这不一定是产品问题,而是测量方法不对。
在正规实验室里做RE测试,接收机会按照标准设置扫描,这个不用担心。但如果你在自己的办公桌上用频谱仪粗测,一定要记住:把SPAN拉开,RBW设成和标准一致的120kHz,用Peak Hold叠加多次扫描,再去判断峰值到底降了多少。
另一个细节是近场探头的位置。用近场探头测时钟区域的辐射,探头摆放的角度和距离对读数影响非常大。前后相差1cm,读数可能差10dB以上。正确的做法是:固定探头支架,每次都放在同一个位置,保持一致的姿态,这样测出来的数据才具备可对比性。否则你辛辛苦苦改了配置,结果探头歪了一点,误以为有效果,那就白折腾了。
5. 时钟“抖”起来后,其他还该注意什么
5.1 时钟树设计与芯片选型
时钟树设计并不只是画个框图,把一颗晶振分给所有芯片。要注意每一路输出是否需要独立的展频控制,以及不同芯片对时钟输入幅度的要求。有些芯片对时钟压摆率(slew rate)有要求,太慢的边沿会导致芯片内部电流增大,反而增加噪声。
选型方面,如果你为EMC专门选时钟芯片,优先考虑带展频功能的型号。很多PLL时钟芯片本身就带SSC,而且可以独立配置每路的展频开关和参数,这比在FPGA里用代码模拟更可靠。
5.2 如果系统不能开SSC怎么办
有些应用场景对时钟频率的绝对精度和长期稳定性要求很高,比如有线通信设备、测量仪器,展频会让系统时序余量减小,这时候没有办法靠SSC,就得靠板级设计本身。
这种情况下,最有效的几个手段:
- 源头降噪:选上升沿更缓的时钟器件。同样是33Ω源端匹配,不同器件的输出边沿有差异,边沿慢的辐射天然更低。
- 屏蔽:给时钟区域加屏蔽罩,或者用屏蔽的时钟走线结构(比如带状线埋在两层地之间)。
- 滤波:在时钟输出端加一个LC低通滤波或者共模扼流圈,前提是保证信号完整性不受影响。
- 频率规划:调整系统的工作频率,让谐波避开测试频段的敏感区域。这个方法看起来“原始”,但在一些频点被限值卡死的项目中特别有效。
5.3 和电源噪声的配合
电源对时钟EMC的影响经常被忽视。一个纹波大的电源会让时钟产生额外的相位噪声,扩展频谱基底,虽然未必形成一个高尖峰,但会让整个本底噪声抬高。这会让EMC测试的“余量”变小,比如本来是-6dB余量,现在变成-2dB,一改版或者加工批次有波动就压线超标。
如果发现时钟辐射在中频段(比如几百kHz到几MHz的带宽内)有一个隆起的包络,大概率是电源噪声调制到时钟上。建议用示波器看时钟芯片电源引脚的纹波,用一个1GHz带宽的示波器加一个低阻抗的电源探头,如果纹波峰峰值超过了几十mV,就需要加大电源滤波的力度,或者换用PSRR更高的LDO。
从我个人的习惯来说,时钟芯片的电源我都会单独加一个LC滤波,比如一颗磁珠加两颗电容(一个0.1uF、一个10uF)的组合。磁珠选直流电阻小的,电容靠近芯片引脚放,地过孔要尽量靠近电容的GND端,这样滤波效果最好。
5.4 量产一致性问题
最后提醒一个量产阶段的问题:SSC展频参数是写在寄存器里的,如果产品有多个配置版本,要确保不同版本用的是同一份配置。曾经遇到过一个项目,样品送测通过了,小批量生产时EMC又超标,查到最后发现是产线烧录的固件版本里SSC使能位被一个初始化流程覆盖掉了,等于展频没开。
解决办法是在固件里加一个开机自检流程,回读时钟芯片的SSC配置寄存器,日志里打印出来。这样产线测试的时候如果发现展频没生效,第一时间就能暴露。这个做法的成本很低,但对量产质量的保障非常有效。
时钟抖动和展频这件事,说大不大,说小不小,但它经常是EMC测试“压死骆驼的最后一根稻草”。如果你正在被辐射发射超标困扰,先别急着加屏蔽罩或者调滤波电路,花点时间看看时钟芯片的寄存器,确认展频有没有开、参数合不合理。很多时候,把这一块抖起来,整张测试曲线就漂亮了。