以太网PHY调试:RGMII/SGMII接口中的时钟延迟(Delay)设置与眼图(Eye Diagram)测试标准
扫描二维码
随时随地手机看文章
在嵌入式网络设备中,RGMII(Reduced GMII)与SGMII(Serial GMII)是连接MAC与PHY的主流接口。调试中最常见的故障是“Ping不通”或“吞吐率不达标”,其根源往往在于时钟延迟(TX/RX Delay)设置错误,导致采样点偏离眼图中心。
一、RGMII接口的时序挑战
RGMII为了在减少引脚数的同时支持1Gbps速率,采用了双倍数据速率(DDR)和时钟与数据对齐的传输方式。MAC与PHY之间的走线延迟差异,必须通过内部延时单元进行补偿。
1.1 RGMII时序要求
RGMII规范要求:在时钟的上升沿和下降沿,数据都必须保持稳定。但在实际PCB上,数据相对于时钟会有偏移。
• TX Path(MAC → PHY):MAC发送数据,PHY接收。
• RX Path(PHY → MAC):PHY发送数据,MAC接收。
1.2 延迟配置(PHY侧)
大多数PHY芯片(如RTL8211F、KSZ9031)通过硬件引脚或MDIO寄存器配置延迟。
// 通过MDIO读写PHY寄存器配置RGMII延迟 (示例)
#define PHY_RGMII_TX_DELAY_REG 0x0C // 假设寄存器地址
#define PHY_RGMII_RX_DELAY_REG 0x0D
// 设置TX延迟为2ns (典型值)
void phy_set_rgmii_delay(uint8_t phy_addr) {
uint16_t tx_delay_val = 0x0030; // 对应2ns延迟
mdio_write(phy_addr, PHY_RGMII_TX_DELAY_REG, tx_delay_val);
// 设置RX延迟为1.5ns
uint16_t rx_delay_val = 0x0020;
mdio_write(phy_addr, PHY_RGMII_RX_DELAY_REG, rx_delay_val);
}
注意:延迟步进通常为0.25ns~0.5ns,需查阅具体PHY数据手册。
二、SGMII接口的串行化挑战
SGMII将8位数据串行化为1.25Gbps的差分信号(SerDes),使用8b/10b编码。其调试重点在于SerDes的均衡(Equalization)和CDR(时钟数据恢复)锁定。
2.1 串行链路调试
SGMII没有像RGMII那样直观的并行延迟设置,其“延迟”隐含在物理层参数中。
// FPGA端SGMII/SerDes配置 (伪代码/Xilinx GT Wizard)
typedef struct {
float tx_pre_cursor; // 预加重
float tx_post_cursor; // 去加重
float rx_ctle; // 连续时间线性均衡
float rx_dfel; // 判决反馈均衡
} Sgmii_SerDes_Config_t;
// 针对长距离/劣质线缆的调整
void sgmii_optimize_for_cable(Sgmii_SerDes_Config_t* cfg) {
cfg->tx_pre_cursor = 0.15; // 增加预加重
cfg->tx_post_cursor = 0.25; // 增加去加重
cfg->rx_ctle = 2.5; // 增强CTLE增益
}
三、眼图(Eye Diagram)测试标准
眼图是衡量接口信号质量的“金标准”。在RGMII/SGMII调试中,示波器是不可或缺的工具。
3.1 RGMII眼图测试(示波器操作)
1. 探头连接:使用高带宽(≥2GHz)差分探头连接TX+/-或RX+/-。
2. 触发设置:以RGMII的GTX_CLK(125MHz)作为触发源。
3. 眼图参数:
◦ 眼高(Eye Height):RGMII要求 > 400mV(峰峰值)。
◦ 眼宽(Eye Width):> 800ps(占周期的80%)。
◦ 抖动(Jitter):RMS抖动应 < 50ps。
// 示波器解码/测量菜单设置
Measurements:
- Amplitude (Vpp)
- Rise Time
- Fall Time
- Eye Height
- Eye Width
- Jitter (RMS)
Mask Test: Enable
Mask File: "RGMII_1G_Mask.itm" (行业标准模板)
3.2 SGMII眼图测试
SGMII工作在1.25Gbps,对示波器带宽要求更高(≥6GHz)。
• 关键指标:
◦ BER(误码率):在10^-12以下为合格。
◦ 眼图开口:应清晰可见,无闭合趋势。
◦ 抖动直方图:应呈高斯分布,无明显拖尾。
四、常见故障排查表
故障现象 RGMII可能原因 SGMII可能原因 解决方案
Link Up但丢包严重 RX/TX延迟不匹配 SerDes均衡不足 调整PHY延迟寄存器;优化FPGA SerDes EQ
间歇性Link Down 电源噪声大,眼图闭合 CDR失锁 增加电源滤波;检查参考时钟抖动
速度协商失败 (1G/100M) 延迟设置仅适配单一速率 Auto-Negotiation配置错误 确保PHY延迟在全速率下均有效
Ping不通 时钟极性反了 差分对交叉或极性反 检查PCB差分对序;交换TX+/-尝试
五、结语
RGMII/SGMII接口调试的核心在于“对齐”——通过PHY寄存器或FPGA SerDes参数,将采样点精确对准眼图的中心。当遇到链路不稳定时,请第一时间拿起示波器观察眼图,物理层的信号质量永远优于逻辑层的反复排查。





