RGMII接口概述:电气特性、信号定义、时序要求简介
做硬件这么多年,RGMII是我打交道最多的接口之一。它把GMII的24根线压缩到12根,既省板面积又保吞吐,但代价嘛——时序窗口窄得跟刀刃似的。这一章我带大家把RGMII的底细摸清楚,后面排查阻抗不连续引起的问题才有的放矢。
1.1 什么是RGMII
Reduced Gigabit Media Independent Interface,简称RGMII。说白了就是MAC到PHY之间的数据通道。它用双沿采样(DDR)在单根数据线上完成一个时钟周期内的两次传输,这样原来的8位数据线能砍一半。
举个例子:千兆模式下,时钟125 MHz,每个时钟沿(上升沿+下降沿)送4位,合起来就是8位,正好一个字节。我在一个项目里第一次看到DDR波形时吓了一跳——边沿那么密,稍微有点抖动就抓错数据。
- 12条信号线(TX_CTRL, TXD[3:0], TX_CLK, RX_CTRL, RXD[3:0], RX_CLK)
- 时钟频率125 MHz(千兆)/ 25 MHz(百兆)/ 2.5 MHz(十兆)
- 双沿采样,建立时间+保持时间合计仅约1 ns
- 源同步时钟——发射端同时送出时钟和数据
1.2 信号定义速览
别被12根线吓到,其实分组很简单:发送组(T)、接收组(R)、各自带一个时钟和控制信号。我习惯把它们看成四对差分对,虽然实际上都是单端信号。
| 信号名 | 方向 | 说明 |
|---|---|---|
| TXD[3:0] | MAC → PHY | 发送数据,DDR模式。上升沿送低4位,下降沿送高4位 |
| TX_CTRL | MAC → PHY | 发送控制。上升沿表示TX_EN,下降沿表示TX_ER(通常接地不用) |
| TX_CLK | MAC → PHY | 发送参考时钟,由MAC产生 |
| RXD[3:0] | PHY → MAC | 接收数据,DDR模式,同样分高低半字节 |
| RX_CTRL | PHY → MAC | 接收控制。上升沿表示RX_DV,下降沿表示RX_ER |
| RX_CLK | PHY → MAC | 接收时钟,由PHY恢复并发送给MAC |
1.3 电气特性关键参数
RGMII是3.3V或1.8V/2.5V的CMOS接口,具体电压看芯片。我这里主要讲高速设计关心的东西——阻抗、压摆率、端接。
阻抗要求
RGMII信号线一般是50 Ω单端阻抗。但注意,PHY和MAC的I/O可能不是标准的50 Ω驱动。我碰到过一个案例,PHY的驱动强度可调,默认是强驱动(约20 Ω输出阻抗),结果信号过冲严重,时序全乱。后来调成弱驱动(约40 Ω)才稳定。
压摆率
RGMII速率高,信号边沿太陡会产生振铃和串扰,太缓又会增加时序不确定性。很多芯片会提供压摆率控制寄存器。我的建议是:在满足时序裕量的前提下,尽量选较缓的压摆率,能减少EMI。
端接策略
短走线(< 2英寸)可以不端接,让接收端自身的输入电容自然吸收反射。长走线我一般在接收端加串联电阻或RC端接。具体阻值要对照IBIS仿真,别照着别人图纸抄——不同芯片的驱动特性差异很大。
1.4 时序要求简介
这才是RGMII最让人头大的部分。它要求数据相对于时钟的相位关系非常严格。先说标准情况:
- 千兆模式: 时钟125 MHz,周期8 ns。数据在上升沿和下降沿各采样一次。因此数据有效窗口(建立+保持)总共约1 ns,实际上很多PHY只给0.5 ns~0.8 ns。
- 百兆模式: 时钟25 MHz,周期40 ns。数据只在上升沿采样(注意:百兆不要求DDR!)。但很多控制器在百兆下也用DDR模式传输,实际时序约束要查对应手册。
- 时钟偏移(Skew): TX_CLK与TXD之间的偏移必须控制在±0.5 ns以内。接收端一样。
为什么会这么严格?因为DDR采样对时钟和数据之间的相对偏斜极为敏感。你想想看,8 ns的时钟周期里要放两个数据采样点,每个点的有效窗口只有几百皮秒。一旦PCB走线阻抗不连续造成反射,信号边沿变形,那个小小的窗口就很容易被吃掉。
我调试过一块板子,PHY连续报CRC错误。示波器一看,RXD的下降沿跟RX_CLK的下降沿几乎重合,保持时间为负值。罪魁祸首是RXD走线经过一个过孔,过孔阻抗比50 Ω低了将近15 Ω,信号反射回来把边沿拉偏了300 ps。后来把过孔填上、走线改短,再测OK。
- Tsetup: 0.5 ns(数据在时钟沿前有效)
- Thold: 0.5 ns(数据在时钟沿后保持)
- Tskew: ±0.5 ns(时钟与数据线之间的走线长度差)
- Tcycle: 8 ns(125 MHz)
1.5 本章知识结构
下面这张图把RGMII的整体框架串起来,帮大家脑子里搭个地图。后面每一章都会落在这些节点上展开。
1.6 消化本章的关键
学RGMII,别只盯着原理图连线。你要在心里建立画面:时钟和数据在PCB上奔跑,每遇到一个阻抗突变——过孔、换层、走线变粗——信号的一部分就会反弹回来,跟后续的波叠加,把边沿形状搞得面目全非。
后面我们会拿TDR实际测阻抗不连续,拿眼图看时序恶化,再一步步定位到具体哪段走线出了状况。但前提是你得先知道正常长什么样。本章的电气特性、信号定义、时序窗口,就是那个“正常”的基准线。