第4章 SGMII时钟架构:参考时钟频率、抖动要求与时钟树设计
时钟,说实话,是SGMII接口的命脉。我见过太多项目,逻辑设计得挺漂亮,结果上板一测,眼图全乱,最后查出来是时钟源没整对。这一章咱们就专门聊聊SGMII的时钟架构,把参考时钟频率、抖动指标和时钟树设计这几个硬骨头啃下来。
4.1 参考时钟频率:625MHz vs 125MHz
先看一个最基础的问题:SGMII到底需要多少兆赫兹的参考时钟?
搞过SerDes的都知道,SGMII的线速率是1.25Gbps。串行器通常需要10倍或20倍的参考时钟倍频,这决定了我们用的参考晶振是125MHz还是625MHz。
核心结论:
- 125MHz参考时钟:内部PLL通常做×10倍频(125MHz→1.25GHz),这是最主流的方案。大多数FPGA的GTP/GTH/GTY收发器都支持。
- 625MHz参考时钟:做×2倍频,对PLL的压力小,但对PCB走线的要求更高。一般只在高速收发器有特殊要求时才用。
我个人习惯优先选125MHz。为什么?因为常用的25MHz或50MHz晶振成本低、货源稳定,而且FPGA内部的时钟管理模块(MMCM/PLL)能轻松把25MHz倍频到125MHz。
4.2 时钟抖动要求:别小看那几十ps
讲个真事儿。有一回我调一块板子,SGMII链路死活不通,偶尔能起来几秒钟又断了。拿示波器一看,参考时钟的抖动快70ps了。换了一个低抖动晶振,问题立马解决。
SGMII对参考时钟的抖动要求,其实挺严格的:
| 参数 | 要求 | 说明 |
|---|---|---|
| RMS周期抖动 | < 20ps(典型) | 大多数收发器要求 < 30ps peak-to-peak |
| RMS随机抖动 | < 1ps | 主要来自热噪声和闪烁噪声 |
| 确定性抖动 | < 100ps | 由电源噪声、串扰、地弹引起 |
| Total Jitter(TJ@BER=1e-12) | < 0.25UI | 1.25Gbps下,0.25UI ≈ 200ps |
实际选型时,我建议留出至少50%的裕量。比如RMS周期抖动要求是20ps,那晶振的典型值最好在10ps以下。
为什么会这样?因为收发器内部的CDR(时钟数据恢复)是有容忍极限的。抖动太大,CDR的锁定范围不够,就会频繁失锁。你想想看,链路动不动就断一下,业务能稳吗?
4.3 时钟树设计:从源头到管脚
时钟树设计,说白了就是怎么把参考时钟干净地送到每个收发器的管脚上。这块我踩过不少坑。
推荐的时钟树结构:
- 差分晶振(LVDS或LVPECL)→ 时钟缓冲器(fanout buffer)→ 收发器参考时钟输入
- 单端晶振 + AC耦合电容 → 差分驱动芯片 → 收发器参考时钟输入
- FPGA内部PLL → 全局时钟网络 → 每个收发器的参考时钟管脚
嗯,这里要注意:直接用FPGA内部的PLL分频产生的参考时钟,噪声可能是外部的2倍甚至更多。我个人强烈建议不要省那几块钱晶振的钱。
下面这张图,画的就是一套典型的125MHz参考时钟树:
4.4 实际布局布线的避坑指南
我曾经在一个4路SGMII的项目里,为了省事把REFCLK走线拉到1.2英寸长。结果呢?四路中有两路老是报CDR失锁。后来老老实实把走线缩到600mil以内,再也没出过问题。
这里有几个实操经验:
- 差分走线等长:INP和INN长度差不超过5mil,最好控制在2mil以内。这个我都是用EDA工具的等长走线功能自动搞定的。
- 包地处理:参考时钟线两侧隔0.5mm打一圈GND过孔。别跟其他高速信号线(比如DDR、PCIE)挨着走,至少隔开20mil。
- 滤波电容:晶振和缓冲器的电源管脚,一定要加100nF + 10μF的组合。我习惯用X7R材质的贴片电容,ESR低。
注意:不要用FPGA内部的常规I/O来产生REFCLK!会引入很大的相位噪声。曾经有个同事图省事,把板上的50MHz时钟通过FPGA内部走线引到REFCLK引脚,结果眼图直接没法看。
4.5 实测验证小技巧
做完板子怎么验证时钟好不好?我一般三步走:
- 用频谱仪看时钟的相噪,重点看10kHz到20MHz的积分相位噪声,应该小于-70dBc。
- 用示波器量RMS抖动,测10000个周期取均方根值。我习惯用Keysight的EZJIT软件自动算。
- 用IBERT(内置误码率测试仪)跑满帧,看抖动容限曲线。这个是最直接的,能过就跑得稳。
一句话总结本章:时钟选125MHz差分晶振,抖动控制在20ps以内,REFCLK走线不超过800mil,缓冲器fanout分配。做到这三点,SGMII的时钟架构基本稳了。