1. QSGMII 概述:协议简介、对比与典型应用
大家好,我是做信号完整性十多年的老工程师了。今天咱们聊 QSGMII,这个接口在当今的高速板卡上几乎随处可见。我第一次接触 QSGMII 是给一款 24 口交换机做板级验证,那时还纳闷:为什么好好的 SGMII 不用,非要搞个四合一?后来踩了些坑,才明白它的设计初衷。
1.1 QSGMII 是什么?
QSGMII,全称 Quad Serial Gigabit Media Independent Interface,就是“四路串行吉比特媒体独立接口”。它把四条 SGMII 链路合并到一对差分线上跑,速率却只提到 5 Gbps(实际是 5.3125 Gbps,含 8B/10B 编码开销)。
说白了,QSGMII 就是一个物理层的“复用器”。原来一根线传一路千兆数据,现在一根线传四路。你想想看,这对 PCB 走线空间、连接器引脚数的节省是立竿见影的。我在一个 16 口交换机项目里,用 QSGMII 后背板层数直接减了两层,成本省了不少。
核心参数速记
- 单通道线速率:5.3125 Gbps(8B/10B 编码后有效数据 4.25 Gbps)
- 支持 4 个独立千兆以太网端口(每个端口 1 Gbps 全双工)
- 物理层只用一对差分线(TX 一对,RX 一对)
- 时钟方式:从恢复时钟,无独立时钟线
1.2 与 SGMII、1000BASE-X 的对比
很多刚入行的朋友容易把这三兄弟搞混。我个人习惯用一个表格来记差异——直观,对吧?
| 特性 | QSGMII | SGMII | 1000BASE-X |
|---|---|---|---|
| 线速率 | 5.3125 Gbps | 1.25 Gbps | 1.25 Gbps |
| 端口数 | 4 (复用) | 1 | 1 |
| 编码方式 | 8B/10B | 8B/10B | 8B/10B |
| 物理引脚(差分对) | 1 TX + 1 RX | 1 TX + 1 RX | 1 TX + 1 RX |
| 是否支持自协商 | 是 (通过 Sid 码流) | 是 | 是 |
| MAC 侧接口 | GMII / RGMII (x4) | GMII / RGMII (x1) | GMII (x1) |
| 典型应用 | 多端口交换机、SoC 集成 | 单端口 PHY 到 MAC | 光纤模块直连 |
这里有个容易忽略的点:QSGMII 的线速率是 SGMII 的 4.25 倍,但编码效率没变。为什么是 4.25 倍?因为每路千兆有效数据 1.25 Gbps 加上控制码流,实际每路需要约 1.3125 Gbps 的原始带宽,四路合起来就是 5.25 Gbps,再考虑到时钟容差和标记开销,最终定在 5.3125 Gbps。我曾经在调试时发现某个 PHY 的 QSGMII 输出抖动偏大,查了半天发现是参考时钟精度不够——这个 5.3125 Gbps 对时钟非常敏感,后面章节我会专门讲。
1.3 QSGMII 的典型应用场景
QSGMII 的出现主要是为了解决多端口交换芯片的 I/O 瓶颈。我先画个框图帮你理解它的位置。
我的经验:在实际项目中,QSGMII 最常用于以下场景:
- 多端口交换机:比如 8 口、16 口、24 口千兆交换机,用 1-2 根 QSGMII 代替 8-24 根 SGMII 走线,背板设计简直清爽太多。
- SoC 集成:现在很多交换芯片直接把 QSGMII 接口做进去,外部 PHY 只要一颗支持 QSGMII 的就能带四个端口。
- 密度受限场景:像 SFP+ 笼子旁边空间不够,用 QSGMII 能省出宝贵的布线通道。
1.4 避坑指南
我曾见过一个团队在 8 口交换机上用了 QSGMII,结果跑吞吐测试时有一路老是丢包。查到最后发现是交换机芯片的 QSGMII 输出抖动超标,原因居然是 PCB 上 QSGMII 差分对和旁边的 SGMII 走线间距只有 3W,串扰诱发了误码。
- QSGMII 的 5.3125 Gbps 已经进入高速信号范畴,必须按 5G+ 串行的规则来布线:阻抗 100Ω 差分,参考平面连续,过孔尽量少。
- 时钟源精度要求 ±50 ppm,我曾经遇到过用 25 MHz 晶振分频出来的 312.5 MHz 不够准,导致锁相环失锁。
- 自协商过程比 SGMII 复杂——QSGMII 需要在码流里嵌入 Sid 标记来区分四路端口。如果两侧 PHY 的 Sid 映射不对,自协商就会失败。调试时记得抓一下 Sid 序列。
注意:QSGMII 虽然复用四路,但每一路的延迟特性并不完全相同。做时间同步(1588)时,得额外考虑这部分的 skew 补偿。我当年就被这个坑过——1588 主时钟打时间戳后发现 four 路之间的路径偏差有几十纳秒,不得不在 MAC 侧做数字延迟对齐。