• 已绑定课时
  • 工程师可点评
  • 教务通过

【本节要点】 RGMII 接口概述 全称:Reduced Gigabit Media Independent Interface(简化版千兆媒体独立接口) 作用:连接 MAC 层与 PHY 层,实现千兆以太网数据收发 相比 GMII:通过双沿采样(DDR)减少了一半信号引脚,降低 PCB 布线复杂度 核心信号定义 发送方向(MAC → PHY): GTX_CLK:125MHz 参考时钟,双沿采样 …

二牛学FPGA
126 1
教务通过工程师评优秀1
教务通过
教务评价

教务通过

教务老师 · 2026-05-31

(历史回填)工程师已评优秀

RGMII 接口概述

全称:Reduced Gigabit Media Independent Interface(简化版千兆媒体独立接口)

作用:连接 MAC 层与 PHY 层,实现千兆以太网数据收发

相比 GMII:通过双沿采样(DDR)减少了一半信号引脚,降低 PCB 布线复杂度

核心信号定义

发送方向(MAC → PHY):

GTX_CLK:125MHz 参考时钟,双沿采样

TXD[3:0]:4 位数据信号,上升沿传低 4bit、下降沿传高 4bit

TX_CTL:控制信号,包含TX_EN(使能)和TX_ER(错误)信息

接收方向(PHY → MAC):

RX_CLK:125MHz recovered 时钟,由 PHY 提供

RXD[3:0]:4 位接收数据,双沿采样

RX_CTL:接收控制信号,包含RX_DV(数据有效)和RX_ER信息

关键时序与 DDR 采样

时钟频率:125MHz,双沿采样等效数据率 125MHz × 2 × 4bit = 1000Mbps

时序要求:需满足建立 / 保持时间,FPGA 端常通过 IDDR/ODDR 原语实现双沿收发

时钟偏移:TX_CLK与TXD/TX_CTL、RX_CLK与RXD/RX_CTL需严格等长布线

工作模式与速率适配

支持 10/100/1000Mbps 自适应:

1000Mbps:125MHz 时钟,DDR 模式

100Mbps:25MHz 时钟,SDR 模式(单沿采样)

10Mbps:2.5MHz 时钟,SDR 模式

双沿采样时,FPGA 的 IDDR/ODDR 原语如何配置才能满足 RGMII 的时序要求?

RX_CLK是 PHY 输出的 recovered 时钟,如何处理跨时钟域同步问题?

PCB 布线时,RGMII 信号的等长规则具体如何执行?(时钟与数据 / 控制信号的偏差范围)

速率自适应时,MAC 如何通过 RGMII 接口获取 PHY 的当前工作模式?

调试时如何通过抓包工具区分是接口时序问题还是协议层问题?

// 发送端ODDR示例
wire [7:0] txd_ddr;
ODDR #(
.DDR_CLK_EDGE("SAME_EDGE"),
.SRTYPE("ASYNC")
) oddr_txd[3:0] (
.Q(TXD),
.C(GTX_CLK),
.CE(1'b1),
.D1(txd_ddr[3:0]), // 上升沿数据(低4bit)
.D2(txd_ddr[7:4]), // 下降沿数据(高4bit)
.R(1'b0),
.S(1'b0)
);
// 接收端IDDR示例
wire [7:0] rxd_ddr;
IDDR #(
.DDR_CLK_EDGE("SAME_EDGE"),
.SRTYPE("ASYNC")
) iddr_rxd[3:0] (
.Q1(rxd_ddr[3:0]), // 上升沿数据(低4bit)
.Q2(rxd_ddr[7:4]), // 下降沿数据(高4bit)
.C(RX_CLK),
.CE(1'b1),
.D(RXD),
.R(1'b0),
.S(1'b0)
);

跨时钟域同步思路

RX_CLK域数据同步到 MAC 时钟域时,可采用两级寄存器打拍 + 握手信号的方式

关键信号(如RX_DV)需同步处理,避免亚稳态导致的帧解析错误

调试思路

先通过 ILA 抓取 RGMII 接口的原始信号,确认双沿采样后的数据是否正确

再通过回环测试(本地 MAC 发包→PHY→外部回环→PHY→本地 MAC 收包)验证链路

对比抓包工具(如 Wireshark)的数据包,定位协议层问题

学习上下文

产出状态

评优秀1 位工程师
工程师已阅126 位工程师
教务教务通过