同一个 125 MHz 时钟,开不开 SSC,在频谱仪上长得完全不同。差别不在幅度,而在时间的维度上频率摊没摊开。这篇把展频时钟(Spread Spectrum Clocking,SSC)的原理讲透,再用 RGMII TXC 这个最常见的场景走一遍实战。
一、SSC 是什么:给时钟做一次"低频调频"
SSC 的本质,是用一个低频三角波去调制时钟源的输出频率,让瞬时频率在标称值附近小范围往复:
f(t) = f₀ × [1 + d(t)]
d(t) = 三角波,周期 1/f_m,摆幅 ±δ
四个参数记住就够了:
| 参数 | 典型值 | 说明 |
|---|---|---|
| 调制波形 | 三角波 | 线性扫频,频谱摊得最平 |
| 调制频率 f_m | 30–33 kHz | 远低于跟踪环带宽,且高出音频段 |
| 调制深度 δ | ±0.5% | 125 MHz → 124.375 ~ 125.625 MHz |
| 展频方向 | 中心展频 | 平均频率仍是标称值(关键,第五节细说) |
二、为什么摊频能降 EMI
先看 EMC 测试的"尺子":接收机是带着分辨率带宽(RBW,CISPR 32 常用 120 kHz)的准峰值检波器。它每 120 kHz 切一刀,看这一刀里能量密度的峰值。
未展频时,时钟及其各次谐波是一根根离散谱线,全部能量挤在远窄于 RBW 的一条缝里——峰值自然就高。展频之后,同样的总能量被摊到 Δf = 2·δ·f₀ 的带宽内(125 MHz 配 ±0.5% 就是 1.25 MHz),每一小份的能量密度降下来了。
峰值下降量有个简洁的估算式:
Δ ≈ 10·log₁₀(展宽 / RBW)
代入 1.25 MHz / 120 kHz ≈ 10.4,基频峰值约降 10 dB。而这个收益在高次谐波上还要放大——谐波次数 n 越高,绝对展宽 n×1.25 MHz 越宽,相对 RBW 的倍数越大:
| 谐波 | 频率 | 展宽 | 峰值下降(120 kHz RBW) |
|---|---|---|---|
| 基频 | 125 MHz | 1.25 MHz | ≈ 10 dB |
| 10 次 | 1.25 GHz | 12.5 MHz | ≈ 20 dB |
| 24 次 | 3 GHz | 30 MHz | ≈ 24 dB |
RGMII 这种永不停止翻转的方波时钟,超标点往往就在数百 MHz 以上的谐波——那正是 SSC 的主场。行业实测普遍在 6–20 dB 区间,具体取决于调制深度和测量带宽。
三、调制波形:三角波是主流
- 三角波:线性扫频,频率在每个取值上停留的时间均等,频谱最平,数字 PLL 里一个上下计数器就能实现,是绝对主流
- 正弦波:数学上干净,但频率在两端极值附近逗留更久,摊均匀反而吃亏
- Hershey-kiss:在三角波顶上加三次分量,让转折更陡、在极值停留更短,摊得更平,代价是实现复杂
工程上直接选三角波,别纠结。
四、接进 RGMII:为什么开在 TXC 上链路不坏
RGMII 的 TXC 由 MAC 驱动、PHY 接收,双沿采样 TXD[3:0]。看着 125 MHz 时钟开始"摇头",第一反应都是:这采样能不误码?
答案的关键在于 RGMII 是源同步总线——TXC 与 TXD 都从 MAC 同一个 PLL 产出。频率被慢调时,数据边沿和时钟边沿同步移动,PHY 输入端的 setup/hold 窗口原封不动。数据是"乘着同一条波浪"到达的,采样 aperture 不变。
再加上 30–33 kHz 的调制远低于 PHY 跟踪环(CDR / 采样恢复)带宽,慢摆动被环平滑地跟踪掉,不累积相位误差。
所以 SSC 引入的不是误码风险,而是频率容差与速率匹配问题——这才是下面三个坑的由来。
五、三个坑,个个踩过
坑一:中心展频 vs 下扩频,别选错。 PCIe/SATA 惯用下扩频(−0.5%),那是串行链路有 CDR 兜底、且下扩能保证最坏时序。RGMII 不行:−0.5% 下扩频的平均速率只有 124.375 MHz,比线速慢 6250 ppm,PHY 的弹性缓冲会被单向填满,几十毫秒后开始丢包。中心展频平均仍是 125.000 MHz,缓冲只吸收纹波、无净漂移。约束条件不同,别照搬。
坑二:PHY 没声明容差就别开。 GMII/RGMII 时钟精度惯例是 ±100 ppm,展频后瞬时频率达 ±5000 ppm,超出常规输入容差 25 倍。PHY datasheet 不写 SSC 支持(TXC/RXC 输入容差覆盖调制范围),开了就是误码甚至失链。
坑三:调制速率过高。 f_m 若接近或超过 PHY 跟踪环带宽,抖动从"可跟踪"变"累积",直接吃误码预算。30–33 kHz 是行业用教训换来的安全区。
六、SSC 只收拾板内这一段
一个最常被客户误解的点:SSC 不改变线上包速率。IEEE 802.3 对 1000BASE-T 的规定是 ±100 ppm、无展频要求——SSC 只作用于 MAC↔PHY 这一段,压的是板内走线和连接器往外"嘴"的那部分辐射谐波。想让 PHY 也跟着展频?标准不允许,也不该做。
七、实测与备选方案
验证三件套:频谱仪准峰值检波、RBW 120 kHz、对比开关前后 125 MHz 高次谐波峰值;再上暗室 3 m 法定整体余量;最后长时间跑流确认无 CRC 错误计数(防缓冲堆积型丢包)。
备选方案:SSC 不是唯一解。 slew-rate 控制(时钟线上并 10 pF 到地压低边沿)同样有效——阳明交大有篇 RGMII EMI 专题论文实测过两者,结论是都行,但都不能以违反时序规范为代价。若板子还在设计阶段,SGMII 是更彻底的解法:无持续 125 MHz 翻转(无双沿采样收敛问题),EMI 底子天生更好,代价是 PHY 要支持 Serdes。
八、结语
SSC 是个"软件寄存器换 EMC 余量"的买卖——不用加屏蔽、不用加磁珠、不用改 layout,几行配置换来 10 dB 量级的峰值下降。但前提是方向选对(中心展频)、对端容差覆盖、速率留在安全区。三件事任一翻车,省下的屏蔽罩钱都不够赔返工。
那如果 PHY 的 datasheet 通篇没写 SSC 容差,这功能还能开吗?想通这一问,你就抓住了整套设计的边界。