1. RGMII接口概述
相信很多做嵌入式或网络硬件设计的朋友,对RGMII都不陌生。说实话,这接口看着简单,但要是信号质量没整好,板子跑起来能让人抓狂。这一章,咱们就把RGMII的底细彻底捋清楚。
1.1 什么是RGMII?
RGMII,全称是 Reduced Gigabit Media Independent Interface,也就是“简化吉比特介质独立接口”。
它由IEEE 802.3标准定义,目的是用更少的引脚,把MAC层和PHY层连接起来。相比老前辈GMII(用了24根线),RGMII直接砍到只剩12到14根信号线。嗯,这里要注意,减少引脚是有代价的——时钟频率翻倍了。
1.2 引脚定义
RGMII接口的核心信号并不多。我列个表,大家一眼就能看明白:
| 信号名 | 方向 | 说明 |
|---|---|---|
| RXC | PHY → MAC | 接收时钟,通常为125MHz(千兆)或2.5MHz/25MHz(百兆/十兆) |
| RXD[3:0] | PHY → MAC | 接收数据总线,共4位 |
| RX_CTL | PHY → MAC | 接收控制信号,包含DVALID和SOP信息 |
| TXC | MAC → PHY | 发送时钟,频率与RXC相同 |
| TXD[3:0] | MAC → PHY | 发送数据总线,共4位 |
| TX_CTL | MAC → PHY | 发送控制信号 |
说白了,RGMII就是两组数据(发和收)加两个时钟,再加两根控制线。我当年第一次调RGMII时,总觉得信号这么少,应该很好搞吧?结果根本不是那么回事。
1.3 时钟与数据的关系
RGMII最核心的设计思路,我认为就是 双沿采样。
在千兆模式下,时钟频率是125MHz。如果每个时钟周期只采一次数据,那总共只有4位数据线,一个时钟只能传4位。但MAC和PHY之间需要保证千兆速率,也就是1000Mbps。怎么解决?每个时钟沿都采一次数据。
你想想看,125MHz时钟,每个周期有上升沿和下降沿,总共就是250M次采样。每根数据线在一个采样时刻传1位,四根线一次传4位。250M采样 × 4位 = 1000Mbps。这不就对上了吗?
另外,RGMII还有一个重要特性—— 时钟相位偏移。RGMII协议要求发送端提供的时钟与数据之间偏差小于一定范围,而接收端需要根据时钟边沿正确锁存数据。我习惯把时钟相位偏差控制在±500ps以内,尤其速率高的时候,这个窗口非常紧张。
经验之谈:有些PHY芯片支持可编程的时钟延迟,比如通过内部寄存器把RXC偏移0-2ns。遇到信号时序紧张时,可以利用这个功能。我曾经在某个项目中因为PCB走线太长,眼图塌了,最后靠偏移时钟硬拉了回来。
1.4 电气特性
RGMII一般采用 HSTL(High-Speed Transceiver Logic) 或 LVTTL 电平标准。具体电压取决于PHY芯片的供电。最常见的是3.3V和1.8V。
- 3.3V LVTTL:信号摆幅大,抗噪声好,但功耗高,适合板级距离较长的场景。
- 1.8V HSTL:信号摆幅小,速率高,功耗低,但信号质量更容易受走线影响。
我做过的项目里,大部分SoC和FPGA都支持1.8V HSTL。1.8V的RGMII信号眼图比3.3V的更容易闭合,所以对PCB走线阻抗和长度匹配要求更高。
避坑指南:我吃过一个亏——某次布局把RGMII走线穿过了两层间距很大的过孔,结果信号反射严重。经查,阻抗不连续导致眼图塌得不成形。后来强制所有RGMII信号走在表层,并且等长控制在±50mil内,问题解决。
1.5 应用场景
RGMII主要出现在以下场景里:
- SoC与独立PHY的连接:比如海思、瑞芯微、全志等主控芯片,外接Realtek或Marvell的千兆PHY。
- FPGA实现以太网桥接:在需要自定义MAC协议或加速网络处理的场合。
- 交换机端口扩展:部分交换芯片内部是MAC,用RGMII连接到外部PHY。
说白了,只要系统需要千兆以太网,又不想用复杂的GMII或SGMII串行接口,RGMII几乎是首选。
1.6 整体知识框架
下面这张SVG图,把RGMII接口的关键知识点串了起来。大家跟着箭头走一遍,就能建立起整体认知:
本章要点:RGMII虽然信号数量少,但双沿采样和时钟相位约束是信号质量评价的关键。后续章节中的眼图测试,核心就是围绕这些信号展开的。建议大家务必把引脚对应关系和时钟关系记清楚——这是分析眼图基础的基础。