一、RGMII 接口基础:信号线、频率与数据窗口

各位好,我是你们这轮课程的讲师。咱们先聊点实在的。

RGMII,全称 Reduced Gigabit Media Independent Interface。名字挺长,说白了就是吉比特以太网的简化版接口。我刚开始接触这玩意儿的时候也觉得它挺绕,但用顺了会发现,它特别适合板级互联——尤其是 FPGA 和 PHY 芯片之间。

很多人一上来就盯着时序分析、眼图,连信号线都数不清楚,这容易出事儿。所以我建议,咱们先把 RGMII 的基础打牢。

1.1 信号线组成

RGMII 总共就那么几根线,但每根都有讲究。

  • 时钟信号:通常由发送端提供,比如 MAC 发给 PHY 的时钟,或者反过来。
  • 数据信号:一共 4 根,TXD[3:0] 和 RXD[3:0],发送和接收各占一组。
  • 控制信号:包括 TX_CTL、RX_CTL,用来指示数据有效还是空闲。

嗯,这里要注意。RGMII 是用双沿采样的,时钟的上升沿和下降沿都会锁存数据。所以我经常跟团队强调:你设计的不是单沿逻辑,是 DDR 逻辑。

我用个表来总结一下信号线的对应关系:

信号方向 时钟边沿 数据位 控制位
发送 (MAC -> PHY) 上升沿 TXD[3:0] TX_CTL
发送 (MAC -> PHY) 下降沿 TXD[7:4] TX_ER
接收 (PHY -> MAC) 上升沿 RXD[3:0] RX_CTL
接收 (PHY -> MAC) 下降沿 RXD[7:4] RX_ER

你想想看,这样设计的初衷是什么?就是少用引脚。传统的 GMII 用了 24 根线,RGMII 砍到 12 根,代价就是时序压力更大了。

1.2 工作频率与数据速率

RGMII 有两种主流的工作模式:

  • 1000 Mbps (千兆):时钟频率 125 MHz,双沿采样,等效数据速率 1 Gbps。
  • 100 Mbps (百兆):时钟频率 25 MHz,只在上升沿采样,数据速率 100 Mbps。
  • 10 Mbps (十兆):时钟频率 2.5 MHz,同样单沿采样,数据速率 10 Mbps。

我个人习惯把千兆模式下的时序要求记得特别牢,因为面试特别喜欢问这个。125 MHz 的时钟周期是 8 ns,双沿采样意味着每个数据在 4 ns 内就要稳定下来。别小看这 4 ns,里面的偏差(skew)如果控制不好,信号就废了。

我的一点经验:在项目里,我见过不少人把 125 MHz 的时钟直接接到 FPGA 的普通 GPIO 上,结果眼图一塌糊涂。原因是驱动强度不够,或者走线太长。建议千兆模式下用专用的时钟引脚。

1.3 数据有效窗口与时序偏差

说到数据有效窗口,这是 RGMII 面试中绕不开的核心。

所谓数据有效窗口,指的是数据在被时钟锁存时,必须保持稳定的一段时间。这个窗口由建立时间(setup time)和保持时间(hold time)共同决定。

我举个例子:

  • 某款 PHY 芯片的 setup 要求是 1 ns,hold 要求是 1.5 ns。
  • 那么数据有效窗口的宽度就是 8 ns - (1 ns + 1.5 ns) = 5.5 ns。
  • 这是理想情况。实际上,PCB 走线、器件温度、电源噪声都会往里塞偏差。
我曾经踩过的一个坑:有一次项目联调,百兆模式下工作正常,切到千兆就疯狂丢包。查了三天,最后发现是时钟走线比数据线长了 1.5 cm,引入的额外偏差刚好把数据打到了窗口外面。所以,走线等长不是随便说说的,必须要按规则来。

我再给一张图,你看一眼就能理解 RGMII 的时序骨架:

RGMII 接口时序结构图 时钟信号 (125 MHz, 周期 8 ns) 发送数据 TXD[3:0] / 接收数据 RXD[3:0] 控制信号 TX_CTL / RX_CTL 上升沿数据窗口 下降沿数据窗口 双沿采样 数据有效窗口 = 时钟周期 - (setup + hold) - 走线偏差 - 抖动

1.4 避坑指南与面试高频点

好了,我把面试中经常被问到的问题,按重要性排了个序,你多看几遍:

  1. Nibble 对齐问题:RGMII 要求在千兆模式下,四个低四位和高四位的数据必须在时钟双沿上对齐。我见过有人拿软件去调,其实走线等长才是正解。
  2. RX_CTL 和 TX_ER 的区别:很多新手搞混。RX_CTL 在上升沿指示数据有效,下降沿指示错误;TX_ER 则相反。不要记反了。
  3. 时钟源的选择:到底是 MAC 产生时钟给 PHY,还是 PHY 产生时钟给 MAC?这个取决于你的系统设计,没有标准答案,但面试官喜欢听你分析利弊。
  4. 板级偏差的容忍度:千兆模式下,板级走线偏差建议控制在 ±50 ps 以内。我习惯在 layout 阶段把时钟和数据走线控制在等长 5 mil 以内。

重要:记住,RGMII 的时序偏差主要来自三方面:

  • 芯片内部的输出延迟偏差(Tco 偏差)
  • PCB 走线的长度偏差
  • 时钟抖动和电源噪声

面试的时候,你能把这三点讲清楚,基本就过了一半。

以上就是 RGMII 接口最基础的部分。我记得自己刚开始做硬件的时候也犯过愣,总觉得时序分析是软件该管的事。后来做了一次回头客——流片回来的板子不工作,才老老实实回来看基础。

基础不牢,地动山摇。把这一章吃透了,后面的内容你会越看越明白。