一、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)如果控制不好,信号就废了。
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 走线、器件温度、电源噪声都会往里塞偏差。
我再给一张图,你看一眼就能理解 RGMII 的时序骨架:
1.4 避坑指南与面试高频点
好了,我把面试中经常被问到的问题,按重要性排了个序,你多看几遍:
- Nibble 对齐问题:RGMII 要求在千兆模式下,四个低四位和高四位的数据必须在时钟双沿上对齐。我见过有人拿软件去调,其实走线等长才是正解。
- RX_CTL 和 TX_ER 的区别:很多新手搞混。RX_CTL 在上升沿指示数据有效,下降沿指示错误;TX_ER 则相反。不要记反了。
- 时钟源的选择:到底是 MAC 产生时钟给 PHY,还是 PHY 产生时钟给 MAC?这个取决于你的系统设计,没有标准答案,但面试官喜欢听你分析利弊。
- 板级偏差的容忍度:千兆模式下,板级走线偏差建议控制在 ±50 ps 以内。我习惯在 layout 阶段把时钟和数据走线控制在等长 5 mil 以内。
重要:记住,RGMII 的时序偏差主要来自三方面:
- 芯片内部的输出延迟偏差(Tco 偏差)
- PCB 走线的长度偏差
- 时钟抖动和电源噪声
面试的时候,你能把这三点讲清楚,基本就过了一半。
以上就是 RGMII 接口最基础的部分。我记得自己刚开始做硬件的时候也犯过愣,总觉得时序分析是软件该管的事。后来做了一次回头客——流片回来的板子不工作,才老老实实回来看基础。
基础不牢,地动山摇。把这一章吃透了,后面的内容你会越看越明白。