1. RGMII接口概述与时序标准归纳
做硬件工程师这么多年,RGMII接口可以说是以太网通信里最常见的“小麻烦”。它看起来简单——4位数据加一个时钟,但时序容限非常有限。我见过不少项目,PCB走线走完了,一测眼图,根本通不过1000BASE-T的时序要求。说白了,RGMII就是个“精打细算”的接口。
1.1 什么是RGMII?
RGMII全称是Reduced Gigabit Media Independent Interface,由HP公司提出,用来替代GMII。它把原本GMII的24根信号线压缩到12根,而且时钟频率只有125MHz。嗯,关键在这里——它用双沿采样(DDR)的方式,在一个时钟周期内传输两组数据,从而达成千兆速率。
1.2 时钟与数据的关系
RGMII的标准时序有两种主要模式:内部延迟模式和外部延迟模式。我个人习惯把内部延迟叫“MAC侧延迟”,外部延迟叫“PCB走线延迟”。为什么?因为内部延迟通常由MAC芯片自己产生一个固定的相位偏移(比如90°或240ps),而外部延迟则需要你在PCB上靠蛇形走线或者串联电阻来实现。
- 内部延迟模式:MAC在发送时把时钟或数据做相移,使得PHY侧采样窗口对齐。优点是简单,不需要额外器件;缺点是不同芯片的延迟精度差异很大,容易翻车。
- 外部延迟模式:MAC和PHY之间走线等长,然后靠PHY内部的延迟配置或者PCB上的延迟线来调整。我曾经在一个项目里,因为PCB空间不够,没法走等长,结果用了外部延迟模式,靠电阻电容搭了个RC延迟网络,调了一周才稳定。
1.3 时序标准参数
RGMII的时序标准主要参考IEEE 802.3和RGMII规范。对于千兆速率,关键的时序参数有以下几个:
| 参数 | 符号 | 最小值 | 最大值 | 说明 |
|---|---|---|---|---|
| 时钟周期 | Tcyc | 7.5 ns | 8.5 ns | 125MHz ± 6% |
| 时钟高电平时间 | Tch | 3.0 ns | 5.0 ns | 占空比40%~60% |
| 数据建立时间 | Tsetup | 0.8 ns | — | 相对于时钟边沿 |
| 数据保持时间 | Thold | 0.8 ns | — | 相对于时钟边沿 |
| 时钟偏斜 | Tskew | — | 0.5 ns | 时钟到数据之间的最大偏斜 |
1.4 时序裕量的计算
裕量的计算公式其实不复杂:
时序裕量 = Tvalid - Tsetup - Tskew
其中Tvalid是数据有效窗口的宽度。在DDR模式下,每个数据窗口只有半个周期,即4ns(125MHz下)。所以裕量非常紧张。你想想看,如果PCB走线偏斜200ps,芯片内部延迟偏差300ps,那留给你的裕量可能只有几百皮秒了。
1.5 RGMII接口知识体系
下面这张图概括了本章的核心概念。它展示了RGMII接口中主控、PHY、时钟、数据、控制信号之间的关系,以及时序参数的分布。
1.6 避坑指南与经验总结
做RGMII设计时,有几个容易踩的坑:
- 时钟相位设置错误:内部延迟模式需要在MAC或PHY侧配置正确的延迟值。我曾在某国产芯片上,手册写的是240ps,实际测出来只有180ps,结果导致时序不满足。建议在样机阶段一定要用示波器测量时钟和数据的相对相位,不要盲目相信手册。
- 等长走线不彻底:很多人只注意数据线之间等长,却忽略了时钟线和控制线。控制信号如果不做延时匹配,可能会造成数据采样错误。我记得有一次,同事只做了4位数据线的等长,时钟线长了200mil,结果跑千兆时随机丢包。
- 忽略电源噪声:数字电路开关噪声会通过VCO耦合到时钟输出,影响jitter。我习惯在PHY和MAC的电源引脚附近加至少0.1μF和10μF的去耦电容。
总的来说,RGMII接口虽然简单,但时序裕量并不宽裕。理解了这些基础参数和关系,后面我们讲如何通过信号完整性优化来提升裕量就会更容易上手。