RGMII接口概述
RGMII全称为Reduced Gigabit Media Independent Interface,是一种网络接口标准,用于千兆以太网芯片与PHY芯片之间的接口标准。RGMII接口的设计目的是为了减少I/O的数量,尽可能减小网卡PCB占用面积,同时提高数据传输效率。RGMII接口的实现有两种方式,分别是外部PHY与MAC之间的连接和SoC内部集成的MAC和PHY连接,不同的实现方法有不同的实现方式和接口定义。
RGMII均采用4位数据接口,工作时钟125MHz,并且在上升沿和下降沿同时传输数据,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式,支持传输速率:10M/100M/1000Mb/s ,其对应clk 信号分别为:2.5MHz/25MHz/125MHz。
4根线,单向总共500M带宽。
发送时钟:MAC---->PHY
接收时钟:PHY----->MAC
RGMII引脚定义
RGMII接口的双工类型
RGMII接口提供了两种双工类型:全双工和半双工。全双工模式下,MAC和PHY同时发送和接收数据,半双工模式下,MAC和PHY可以交替发送和接收数据。在使用RGMII接口进行数据传输时,需要根据应用选择适当的双工模式。
实现RGMII接口的方法
外部PHY和MAC之间的连接
外部PHY和MAC之间的RGMII接口通过两对差分信号进行连接。RXD,TXD和RXCLK、TXCLK之间进行差分匹配。RXD和TXD之间还配有RXDV和TXEN两个控制信号。此方式的RGMII接口由MAC和PHY两个芯片零散分布,但设计方便,因所需I/O资源少,可降低成本。
/* RGMII硬件接口定义 */
typedef struct rgmii_hw {
struct mii_dev *bus; /* Bus the device is on */
uint addr; /* Ethernet PHY addres */
uint tx_clk; /* TX clock input frequency in Hz */
uint rx_clk; /* RX clock input frequency in Hz */
int txen_pin; /* Pin MII_TXEN is on */
int txd0_pin; /* Pin MII_TXD0 is on */
int txd1_pin; /* Pin MII_TXD1 is on */
int txd2_pin; /* Pin MII_TXD2 is on */
int txd3_pin; /* Pin MII_TXD3 is on */
int rx_clk_delay; /* RX clock delay in ns */
int rx_dv_delay; /* RX DV delay in ns */
enum rgmii_type type; /* RGMII or RGMII_ID */
} rgmii_hw_t;
SoC内部MAC和PHY之间的连接
SoC内部MAC和PHY之间的RGMII接口则是通过PHY/MAC接口完成物理连接,MAC和PHY通常集成在同一块芯片中,通过内部信号线进行数据的传输。
/* RGMII软件接口定义 */
typedef struct rgmii {
unsigned rgmii_mdio_base; /* mdio virtual base */
unsigned rgmii_phy_addr; /* PHY address - default is #define */
unsigned rgmii_rx_clk_hz; /* CLK signal input frequency in Hz */
unsigned rgmii_tx_clk_hz; /* CLK signal output frequency in Hz */
} RGMII;
RGMII接口在硬件设计中的应用
RGMII接口在千兆以太网芯片与PHY芯片之间的接口标准中具有重要的应用,特别是在计算机硬件设计的应用中,更是不可或缺。在硬件设计中,RGMII接口可以作为芯片与PHY之间的数据传输接口。例如,在计算机板卡里,芯片件间和芯片与速度更快的电信运营商网卡之间有一个RGMII接口。在处理器和PHY芯片之间建立RGMII接口可以大幅提高数据传输速率,同时也简化了系统设计。