1. SGMII概述

SGMII,全称 Serial Gigabit Media Independent Interface。说白了,就是把千兆以太网的 MAC 和 PHY 之间的连接,从几十根线变成两对差分线。我几年前第一次调这玩意儿的时候,还以为跟 RGMII 差不多,插上就能跑。结果样板回来死活不通,折腾了两天才发现是时钟恢复参数没配对。

嗯,这个接口在交换机、高端路由器、FPGA 板卡上非常常见。今天我们就先把它的来龙去脉搞清楚。后面讲时钟恢复和链路建立时,你会理解为什么 SGMII 比并行接口难调,但也更灵活。

1.1 协议背景

SGMII 是 Cisco 和 Broadcom 早期推广的,后来被标准化到 IEEE 802.3 的 1000BASE-X 附录中。它的核心思路是——用串行差分信号代替并行总线。这样 PCB 走线能从十多根降到 4 根(两对差分线),而且能跑更长的距离。

为什么会有这个需求?你想想看,GMII 需要 24 根信号线,RGMII 也需要 12 根。到了布线密集的板卡上,这些线绕来绕去,时序根本控不住。我遇到过一块四口千兆交换芯片,RGMII 布线绕得跟迷宫一样,最后还是改了叠层才通过信号完整性仿真。

SGMII 的工作频率是 625 MHz(数据率 1.25 Gbps),每对差分线传输时钟和数据。它不像 RGMII 那样需要专门的时钟走线,时钟是嵌在数据流里的,通过 CDR(时钟数据恢复)电路提取。这个特点既是优势也是坑——后面我们会单独拿一章来讲 CDR。

1.2 应用场景

SGMII 主要用在以下场景:

  • 千兆交换机:每个端口通过 SGMII 连接到外部 PHY 或 SFP 光模块。
  • FPGA 高速接口:Xilinx 和 Intel 的 FPGA 的 GTY/GTH 收发器可以直接配置成 SGMII 模式。
  • SoC 内部互连:部分 SoC 将 MAC 和 PHY 通过 SGMII 走内部差分线连接。
  • 多端口背板:通过连接器传输到子卡,节省接插件引脚。

我习惯把 SGMII 看作一种“低成本串行方案”。它不需要昂贵的 SerDes 核,普通 LVDS 收发器就能做。但要注意,它的参考时钟抖动要求很严格——曾经有块板子因为时钟源的 RMS jitter 超过 40 ps,直接导致链路建不起来。嗯,后面我们会讲 jitter 预算。

1.3 SGMII 与 GMII / RGMII 的区别

直接看对比表比较清楚:

特性 GMII RGMII SGMII
信号总数 24 12 4(两对差分线)
时钟方式 独立时钟+数据 DDR沿对齐 嵌入时钟(CDR)
最大传输距离(PCB) 几厘米 十几厘米 可超过1米
布线难度 极高(大量并行线需等长) 中等(需精细等长) 低(差分对简单)
EMI 差 中等 好(差分信号共模抑制)
典型应用 早期芯片、板内短距 当前主流消费级 工业/通信/FPGA设计

这里有两个坑提一下:

  • RGMII 的时序非常苛刻——我曾经见过某款 PHY 的 RGMII 驱动能力调错,导致数据沿和时钟沿偏移超过 1 ns,在高温下直接丢包。而 SGMII 因为用了差分和 CDR,对 skew 容忍度高得多。
  • SGMII 回环测试需小心——如果你用示波器看 SGMII 差分线,有时候看起来眼图很干净,但实际链路建不起来,多半是 CDR 的锁定范围没对上。我们后面会专门分析。
💡 个人习惯: 在做 PCB 布局时,我一般把 SGMII 差分线走在同层,包地间距至少 3H。而且我会在 PHY 端留一个 AC 耦合电容的位置(0.1μF),虽然大多数 PHY 内部已经集成了,但留着没坏处——有一次就靠它隔离了 PHY 和 MAC 的共模电压不一致问题。
📌 关键点: SGMII 的差分线不需要等长匹配到皮秒级,但两条线之间的长度差要控制在 5 mil 以内,否则共模抑制会变差。这是个容易被忽视的细节。

下面这张图帮你厘清三种接口在以太网系统中的位置关系:

MAC 与 PHY 接口对比 MAC(媒体访问控制器) 通用功能模块 PHY(物理层芯片) 串行/并行转换 + CDR GMII — 24根并行线,时钟独立 RGMII — 12根线,DDR双沿 SGMII — 4根差分线,时钟嵌入 线数越少,布线越简单
⚠️ 注意: 上图中的 SGMII 只画了信号线,实际应用中 MAC 和 PHY 之间还需要额外的管理接口(MDIO)和参考时钟(REFCLK)。参考时钟一般要求频率稳定度 ±50 ppm 以内,否则 CDR 可能失锁。我自己遇到过用温补晶振(TCXO)才解决问题的情况。

好了,这一章我们看清楚了 SGMII 是什么,为什么用它,以及和另外两种接口的根本差异。记住这些背景,后面讲链路建立时你就会知道:为什么 SGMII 需要专门的训练序列,为什么 CDR 必须快速锁定——这些都是由它“串行、嵌入时钟”的体质决定的。