千兆网之RGMII解析
一般来说,底板的千兆网大多选用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为一组。发送部分波形如下:
从波形可以看出,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,下图为发送接收的时序:
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(数据位)
具体知识的参考链接如下: