Yuhang Zheng

千兆网之RGMII解析

N 人看过

一般来说,底板的千兆网大多选用RGMII和SGMII两种接口,也有可以拓展出更多网口的QSGMII接口。

这一篇文章就是简单解析一下RGMII这种接口的内容。

RGMII均采用4位数据接口,工作时钟125MHz,并且在上升沿和下降沿同时传输数据,因此传输速率可达1000Mbps。

首先是硬件底板连接图。

先是PHY芯片的AR8031的硬件接线图:

其次是网口座子和PHY芯片的模式选择引脚以及PHY地址的接线图:

查阅AR8031的数据手册,先看硬件定义如下:

可见此接口引脚数量为12个。

其中发送端有:(“发送”面向的是MAC,指从MAC向PHY发送数据)

  • GTX_CLK:发送端参考时钟,由MAC向PHY提供
  • TXD[0:3]:发送数据引脚
  • TX_EN:发送控制引脚

TX_EN信号线上传送TX_EN和TX_ER两种信息,在GTX_CLK的上升沿发送TX_EN,下降沿发送TX_ER。

其中接收端有:(“接收”面向的是MAC,指从MAC向PHY接收数据)

  • RX_CLK:接收端参考时钟,由PHY向MAC提供
  • RXD[0:3]:接收数据引脚
  • RX_DV:接收控制引脚

其余有一个管理配置接口,即MDIO接口,有2根线:

  • MDC:时钟线
  • MDIO:数据线(双向)


补充知识:

MII(Media Independent interface)即介质无关接口,它是IEEE-802.3定义的行业标准,是MAC与PHY之间的接口。MII数据接口包含16个信号和2个管理接口信号

信号名称 描述 方向
TX_CLK 发送时钟 PHY → MAC
TX_ER 发送数据错误 MAC → PHY
TX_EN 发送使能 MAC → PHY
TXD0 发送数据位0(最先传输) MAC → PHY
TXD1 发送数据位1 MAC → PHY
TXD2 发送数据位2 MAC → PHY
TXD3 发送数据位3 MAC → PHY
RX_CLK 接收时钟 PHY → MAC
RX_DV 接收数据有效 PHY → MAC
RX_ER 接收数据错误 PHY → MAC
RXD0 接收数据位0(最先传输) PHY → MAC
RXD1 接收数据位1 PHY → MAC
RXD2 接收数据位2 PHY → MAC
RXD3 接收数据位3 PHY → MAC
CRS 载波监测 PHY → MAC
COL 冲突碰撞监测 PHY → MAC
MDIO 管理数据 双向
MDC 管理数据时钟 MAC → PHY

MII以4位半字节方式传送数据双向传输,是一个支持10/100-Mbit/s速度的接口

  • 时钟频率为2.5MHz时,对应速率为10Mbit/s
  • 时钟速率为25MHz时,对应速率可达100Mbit/s

MII: 10Mbits/s = 2.5MHz x 4(数据位)

​ 100Mbit/s = 25MHz x 4(数据位)

MII接口虽然很灵活但由于信号线太多限制多接口网口的发展,后续又衍生出RMII,SMII等。


RMII(Reduced Media Independant Interface),精简MII接口,节省了一半的数据线。RMII收发使用2位数据进行传输,收发时钟均采用50MHz时钟源。信号定义如下:

信号名称 描述 方向
REF_CLK 参考时钟 MAC→PHY或由外部时钟源提供
TX_EN 发送数据使能 MAC → PHY
TXD0 发送数据位0(最先传输) MAC → PHY
TXD1 发送数据位1 MAC → PHY
RX_ER 接收错误 PHY → MAC
RXD0 接收数据位0(最先传输) PHY → MAC
RXD1 接收数据1 PHY → MAC
CRS_DV 载波和接收数据有效 PHY → MAC
MDIO 管理数据 双向
MDC 管理数据时钟 MAC → PHY

其中CRS_DV是MII中RX_DV和CRS两个信号的合并,当物理层接收到载波信号后CRS_DV变得有效,将数据发送给RXD。当载波信号消失后,CRS_DV会变为无效。在100M以太网速率中,MAC层每个时钟采样一次RXD[1:0]上的数据,在10M以太网速率中,MAC层每10个时钟采样一次RXD[1:0]上的数据,此时物理层接收的每个数据会在RXD[1:0]保留10个时钟。

MII以2位字节方式传送数据双向传输,是一个支持10/100-Mbit/s速度的接口

  • 无论传输速率为10Mbit/s和100Mbit/s,时钟速率都为为50MHz

RMII: 10Mbits/s = 50MHz / 10(10个时钟采样一次) x 2(数据位)

​ 100Mbit/s = 50MHz x 2(数据位)


SMII(Serial Media Independant Interface),串行MII接口。它包括TXD,RXD,SYNC三个信号线,共用一个时钟信号,此时钟信号是125MHz,信号线与此时钟同步。信号定义如下:

信号名称 描述 方向
REF_CLK 参考时钟 外部时钟源提供125MHz
TXD 发送数据 MAC → PHY
RXD 接收数据 PHY → MAC
SYNC 同步信号 -
MDIO 管理数据 双向
MDC 管理数据时钟 MAC → PHY

SYNC是数据收发的同步信号,每10个时钟同步置高一次电平,表示同步。TXD和RXD上的数据和控制信息,以10bit为一组。发送部分波形如下:

20190407194548782

从波形可以看出,SYNC变高后的10个时钟周期内,TXD依次输出一组10bit的数据即TX_ER,TX_EN,TXD[0:7],这些控制信息和MII接口含义相同。在100M速率中,每一组的内容都是变换的,在10M速率中,每一组数据需要重复10次,采样任一一组都可以。

SMII以1位字节方式传送数据双向传输,是一个支持10/100-Mbit/s速度的接口

  • 无论传输速率为10Mbit/s和100Mbit/s,时钟速率都为为125MHz

SMII: 10Mbits/s = 125MHz / 10(一个时钟周期10bit的数据) x 8(10bit的数据中有8位是有效数据)

​ 100Mbit/s = 125MHz / 10(10bit的数据) x 8(8位有效数据) / 10(每组数据重复10次)


GMII(Gigabit Media Independant Interface),千兆MII接口。GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式。GMII接口数据结构符合IEEE以太网标准,该接口定义见IEEE 802.3-2000。信号定义如下:

信号名称 描述 方向
GTX_CLK 1000M发送时钟 MAC → PHY
TX_CLK 100/10M发送时钟 MAC → PHY
TX_ER 发送数据错误 MAC → PHY
TX_EN 发送使能 MAC → PHY
TX_[7:0] 发送数据8bit MAC → PHY
RX_CLK 接收时钟 PHY → MAC
RX_DV 接收数据有效 PHY → MAC
RX_ER 接收数据错误 PHY → MAC
RX_[7:0] 接收数据8bit PHY → MAC
CRS 载波监测 PHY → MAC
COL 冲突碰撞监测 PHY → MAC
MDIO 管理数据 双向
MDC 管理数据时钟 MAC → PHY

GMII以8位半字节方式传送数据双向传输,是一个支持10/100/1000-Mbit/s速度的接口

  • 时钟频率为2.5MHz时(使用TX_CLK引脚发送),对应速率为10Mbit/s
  • 时钟速率为25MHz时(使用TX_CLK引脚发送),对应速率可达100Mbit/s
  • 时钟速率为125MHz时(使用GTX_CLK引脚发送),对应速率可达1000Mbit/s

GMII: 10Mbits/s = 2.5MHz x 4(兼容MII模式,使用4位数据位)

​ 100Mbit/s = 25MHz x 4(兼容MII模式,使用4位数据位)

​ 1000Mbit/s = 125MHz x 8(数据位)


RGMII

RGMII(Reduced Gigabit Media Independant Interface),精简GMII接口。相对于GMII相比,RGMII具有如下特征:

  • 发送/接收数据线由8条改为4条
  • TX_ER和TX_EN复用,通过TX_CTL传送
  • RX_ER与RX_DV复用,通过RX_CTL传送
  • 1 Gbit/s速率下,时钟频率为125MHz
  • 100 Mbit/s速率下,时钟频率为25MHz
  • 10 Mbit/s速率下,时钟频率为2.5MHz

信号定义如下:

信号名称 描述 方向
TXC 发送时钟 MAC→PHY
TX_CTL 发送数据控制 MAC → PHY
TXD[3:0] 发送数据4bit MAC → PHY
RXC 接收时钟 PHY → MAC
RX_CTL 接收数据控制 PHY → MAC
RXD[3:0] 接收数据4bit PHY → MAC
MDIO 管理数据 双向
MDC 管理数据时钟 MAC → PHY

虽然RGMII信号线减半,但TXC/RXC时钟仍为125Mhz,为了达到1000Mbit的传输速率,TXD/RXD信号线在时钟上升沿发送接收GMII接口中的TXD[3:0]/RXD[3:0],在时钟下降沿发送接收TXD[7:4]/RXD[7:4],并且信号TX_CTL反应了TX_EN和TX_ER状态,即在TXC上升沿发送TX_EN,下降沿发送TX_ER,同样的道理试用于RX_CTL,下图为发送接收的时序:

20190407210933900

20190407210957915

RGMII以4位半字节方式传送数据双向传输,是一个支持10/100/1000-Mbit/s速度的接口

  • 时钟频率为2.5MHz时,对应速率为10Mbit/s
  • 时钟速率为25MHz时,对应速率可达100Mbit/s
  • 时钟速率为125MHz时,对应速率可达1000Mbit/s

RGMII: 10Mbits/s = 2.5MHz x 4(数据位)

​ 100Mbit/s = 25MHz x 4(数据位)

​ 1000Mbit/s = 125MHz x 2(一个时钟上升沿和下降沿共传输两个数据) x 4(数据位)

具体知识的参考链接如下:

以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍

Network 之二 Ethernet(以太网)中的 MAC、MII、PHY 详解