2、RGMII接口介绍
RGMII,全称 Reduced Gigabit Media Independent Interface,说白了就是吉比特以太网的简化版媒体独立接口。为什么会有它?早期以太网接口(比如 GMII)数据线一大堆,板上布线密密麻麻,你想想看,DDR 走线都够烦了,再加几十根信号线谁受得了。RGMII 就把数据线砍掉一半,用双沿采样来弥补,嗯,这是个很聪明的做法。
我入行那会儿,还用过纯 GMII 的芯片,板子上走线走到怀疑人生。后来换成 RGMII 才发现,原来接口也可以这么清爽。不过,清爽归清爽,它对时序和 PCB 材料的要求反而更高了。这就是我们这节课要聊的核心。
2.1 RGMII 信号定义
RGMII 一共就 12 根信号线?是不是比你想的少?来,我列个表,看一眼就清楚:
| 信号名 | 方向 | 位宽 | 说明 |
|---|---|---|---|
| RXC | PHY → MAC | 1 | 接收时钟,125 MHz(千兆) |
| RXD[3:0] | PHY → MAC | 4 | 接收数据,DDR 双沿采样 |
| RX_CTL | PHY → MAC | 1 | 接收控制(DDR:高电平有效 + 起始位) |
| TXC | MAC → PHY | 1 | 发送时钟,125 MHz |
| TXD[3:0] | MAC → PHY | 4 | 发送数据,DDR 双沿采样 |
| TX_CTL | MAC → PHY | 1 | 发送控制(DDR) |
注意,RGMII 没有独立的 TX_EN 和 TX_ER 分开走,而是把控制信息编码到 TX_CTL 信号里,利用 DDR 的两个沿分别传递使能和错误标志。我曾经在一个项目里,就是因为没搞懂这个编码,调试了好几天才发现是 PHY 的时钟相位配置错了。嗯,这种坑,踩过一次就记住了。
2.2 时序要求
RGMII 最大的挑战在哪?时钟与数据的相对关系。因为它是双沿采样,125 MHz 时钟 → 250 MHz 数据率,一个 bit 的时间才 4 ns。你想想,PCB 走线哪怕多 0.5 ns 的偏移,眼图就裂了。
标准规定:对于发送方向(MAC → PHY),TXC 的上升沿和下降沿要对齐 TXD 和 TX_CTL 的切换沿。但实际中,PHY 往往要求 TXC 比数据提前 1~2 ns(内部采样需要建立时间)。所以,MAC 侧最好能提供 中心对齐 的时序——时钟沿在数据稳定区的中间。
接收方向(PHY → MAC)呢?PHY 会输出一个时钟沿和数据切换沿对齐的 signal。这就要求 MAC 内部做延迟(或板级串阻+走线延迟)来重新建立中心对齐。我见过不少板子,直接把 RXC 绕了 1000 mil 蛇形线来调延迟——这种土办法虽然能工作,但 PCB 材料变了(比如从 FR4 换到高频材料),延迟量全得重新计算。
来看这张图,帮你理清 RGMII 的时钟数据关系:
2.3 电压电平
RGMII 的电压电平,传统上是 3.3V LVCMOS。但后来很多 SoC 和 PHY 都往低电压走,就出现了 2.5V 和 1.8V 版本。你设计前一定要查手册,不信的话,你拿 3.3V 去接 1.8V 的管脚,大概率会冒烟——我当年第一块板子就是这么报废的,哎,说多了都是泪。
常用的电平标准我列一下:
| 电平标准 | VOH (min) | VOL (max) | VIH (min) | VIL (max) | 常见场合 |
|---|---|---|---|---|---|
| 3.3V LVCMOS | 2.4 V | 0.4 V | 2.0 V | 0.8 V | 传统 PHY,FPGA I/O bank 3.3V |
| 2.5V LVCMOS | 1.8 V | 0.4 V | 1.7 V | 0.7 V | 中低压 SoC,部分 Marvell PHY |
| 1.8V LVCMOS | 1.35 V | 0.45 V | 1.17 V | 0.63 V | 低功耗设计,RGMII 2.0 |
这里有个坑:电平转换。如果你 MAC 是 1.8V,PHY 是 3.3V,不能直接连!得加电平转换芯片,或者用电阻分压+钳位二极管。我习惯在 TX 信号上加 33 Ω 串阻,既能做阻抗匹配,也能限制过冲——尤其是在跨越电平域时,串阻能救命。
另外,RGMII 的电压阈值还跟 PCB 材料的介电损耗有关?别急,我们在后面的章节会展开讲。但先记住一个结论:材料的高频损耗会导致信号幅度衰减,尤其在 125 MHz 以上的频率,如果 PCB 的 Df(损耗因子)太大,接收端的 VOH 可能降到 VIH 以下,这时候即使你时序调好了,数据也读不对。