当前位置:首页 > 通信技术 > 通信技术
[导读]在嵌入式网络设备中,RGMII(Reduced GMII)与SGMII(Serial GMII)是连接MAC与PHY的主流接口。调试中最常见的故障是“Ping不通”或“吞吐率不达标”,其根源往往在于时钟延迟(TX/RX Delay)设置错误,导致采样点偏离眼图中心。



在嵌入式网络设备中,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参数,将采样点精确对准眼图的中心。当遇到链路不稳定时,请第一时间拿起示波器观察眼图,物理层的信号质量永远优于逻辑层的反复排查。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭