浅析以太网接口
以太网相关接口主要包括:MII/RMII/SMII以及GMII/RGMII/SGMII接口。
一、MII接口
MII(Media Independent Interface)介质无关接口或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口和一个MAC和PHY之间的管理接口。“媒体独立”表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。
MII接口提供了MAC与PHY之间、PHY与STA(Station Management)之间的互联技术,该接口支持10Mb/s与100Mb/s的数据传输速率,数据传输的位宽为4位。
MII接口可分为MAC模式和PHY模式,一般说来MAC和PHY对接,但是MAC和MAC也是可以对接的。
以前的10M的MAC层芯片和物理层芯片之间传送数据是通过一根数据线来进行的,其时钟是10M,在100M中,如果也用一根数据线来传送的话,时钟需要100M,这会带来一些问题,所以定义了MII接口,它是用4根数据线来传送数据的,这样在传送100M数据时,时钟就会由100M降低为25M,而在传送10M数据时,时钟会降低到2.5M,这样就实现了10M和100M的兼容。
MII接口主要包括四个部分:一是从MAC层到物理层的发送数据接口,二是从物理层到MAC层的接收数据接口,三是从物理层到MAC层的状态指示信号,四是MAC层和物理层之间传送控制和状态信息的MDIO接口。
MII接口的MAC模式定义:

MII接口PHY模式定义:

MDIO接口包括两根信号线:MDC和MDIO,通过它MAC层芯片(或其它控制芯片)可以访问物理层芯片的寄存器(前面100M物理层芯片中介绍的寄存器组,但不仅限于100M物理层芯片,10M物理层芯片也可以拥有这些寄存器),并通过这些寄存器来对物理层芯片进行控制和管理。
MDIO管理接口如下:
MDC:管理接口的时钟,它是一个非周期信号,信号的最小周期(实际是正电平时间和负电平时间之和)为400ns,最小正电平时间和负电平时间为160ns,最大的正负电平时间无限制。它与TX_CLK和RX_CLK无任何关系。
MDIO是一根双向的数据线,用来传送MAC层的控制信息和物理层的状态信息。

二、RMII接口
MII接口也有一些不足之处,主要是其接口信号线很多,发送和接收和指示接口有14根数据线(不包括MDIO接口的信号线,因为其被所有MII接口所共享),当交换芯片的端口数据较多时,会造成芯片的管脚数目很多的问题,这给芯片的设计和单板的设计都带来了一定的问题。为了解决这些问题,人们设计了两种新的MII接口,它们是RMII接口(Reduced MII接口)和SMII接口(Serial MII接口)。这两种接口都减少了MII接口的数据线,不过它们一般只用在以太网交换机的交换MAC芯片和多口物理层芯片中,而很少用于单口的MAC层芯片和物理层芯片中。
RMII接口和SMII接口都可以用于10M以太网和100M以太网,但不可能用于1000M以太网,因为此时时钟频率太高,不可能实现。

从图中可以看到,RMII接口相对于MII接口减少了一半的连接线,只有8根接口线。
TXD[1:0]:数据发送信号线,数据位宽为2,是MII接口的一半;
RXD[1:0]:数据接收信号线,数据位宽为2,是MII接口的一半;
TX_EN(Transmit Enable):数据发送使能信号,与MII接口中的该信号线功能一样;
RX_ER(Receive Error):数据接收错误提示信号,与MII接口中的该信号线功能一样;
CLK_REF:是由外部时钟源提供的50MHz参考时钟;
与MII接口不同,MII接口中的接收时钟和发送时钟是分开的,而且都是由PHY芯片提供给MAC芯片的。这里需要注意的是,由于数据接收时钟是由外部晶振提供而不是由载波信号提取的,所以在PHY层芯片内的数据接收部分需要设计一个FIFO,用来协调两个不同的时钟,在发送接收的数据时提供缓冲。PHY层芯片的发送部分则不需要FIFO,它直接将接收到的数据发送到MAC就可以了。
CRS_DV:此信号是由MII接口中的RX_DV和CRS两个信号合并而成。当介质不空闲时,CRS_DV和RE_CLK相异步的方式给出。当CRS比RX_DV早结束时(即载波消失而队列中还有数据要传输时),就会出现CRS_DV在半位元组的边界以25MHz/2.5MHz的频率在0、1之间的来回切换。因此,MAC能够从 CRS_DV中精确的恢复出RX_DV和CRS。在100Mbps速率时,TX/RX每个时钟周期采样一个数据;在10Mbps速率时,TX/RX每隔10个周期采样一个数据,因而TX/RX数据需要在数据线上保留10个周期,相当于一个数据发送10次。当PHY层芯片收到有效的载波信号后,CRS_DV信号变为有效,此时如果FIFO中还没有数据,则它会发送出全0的数据给MAC,然后当FIFO中填入有效的数据帧,数据帧的开头是“101010---”交叉的前导码,当数据中出现“01”的比特时,代表正式数据传输开始,MAC芯片检测到这一变化,从而开始接收数据。当外部载波信号消失后,CRS_DV会变为无效,但如果FIFO中还有数据要发送时,CRS_DV在下一周期又会变为有效,然后再无效再有效,直到FIFO中数据发送完为止。在接收过程中如果出现无效的载波信号或者无效的数据编码,则RX_ER会变为有效,表示物理层芯片接收出错。
三、SMII接口

SMII即Serial MII,串行MII的意思,跟RMII相比,连线进一步减少到4根;
TXD:发送数据信号,位宽为1;
RXD:接收数据信号,位宽为1;
SYNC:收发数据同步信号,每10个时钟周期置1次高电平,指示同步。
CLK_REF:所有端口共用的一个参考时钟,频率为125MHz。
为什么100Mbps速率要用125MHz时钟?因为在每8位数据中会插入2位控制信号。
TXD/RXD以10比特为一组,以SYNC为高电平来指示一组数据的开始,在SYNC变高后的10个时钟周期内,TXD上依次输出的数据是:TXD[7:0]、TX_EN、TX_ER,控制信号的含义与MII接口中的相同;RXD上依次输出的数据是:RXD[7:0]、RX_DV、CRS,RXD[7:0]的含义与RX_DV有关,当RX_DV为有效时(高电平),RXD[7:0]上传输的是物理层接收的数据。当RX_DV为无效时(低电平),RXD[7:0]上传输的是物理层的状态信息数据。
四、SSMII接口
SSMII即Serial Sync MII,叫串行同步接口,跟SMII接口很类似,只是收发使用独立的参考时钟和同步时钟,不再像SMII那样收发共用参考时钟和同步时钟,传输距离比SMII更远。

五、SSSMII接口
SSSMII即Source Sync Serial MII,叫源同步串行MII接口,SSSMII与SSMII的区别在于参考时钟和同步时钟的方向,SSMII的TX/RX参考时钟和同步时钟都是由PHY芯片提供的,而SSSMII的TX参考时钟和同步时钟是由MAC芯片提供的,RX参考时钟和同步时钟是由PHY芯片提供的,所以顾名思义叫源同步串行。

六、GMII接口

与MII接口相比,GMII的数据宽度由4位变为8位,GMII接口中的控制信号如TX_ER、TX_EN、RX_ER、RX_DV、CRS和COL的作用同MII接口中的一样,发送参考时钟GTX_CLK和接收参考时钟RX_CLK的频率均为125MHz(1000Mbps/8=125MHz)。
有一点需要特别说明下:发送参考时钟GTX_CLK,它和MII接口中的TX_CLK是不同的,MII接口中的TX_CLK是由PHY芯片提供给MAC芯片的,
而GMII接口中的GTX_CLK是由MAC芯片提供给PHY芯片的
,两者方向不一样。在实际应用中,绝大多数GMII接口都是兼容MII接口的,所以,一般的GMII接口都有两个发送参考时钟:TX_CLK和GTX_CLK(两者的方向是不一样的),在用作MII模式时,使用TX_CLK和8根数据线中的4根。
七、RGMII接口

RGMII即Reduced GMII,是GMII的简化版本,将接口信号线数量从24根减少到14根(COL/CRS端口状态指示信号,这里没有画出),时钟频率仍旧为125MHz,TX/RX数据宽度从8位变为4位,为了保持1000Mbps的传输速率不变,RGMII接口在时钟的上升沿和下降沿都采样数据。在参考时钟的上升沿发送GMII接口中的TXD[3:0]/RXD[3:0],在参考时钟的下降沿发送GMII接口中的TXD[7:4]/RXD[7:4]。RGMI同时也兼容100Mbps和10Mbps两种速率,此时参考时钟速率分别为25MHz和2.5MHz。TX_EN信号线上传送TX_EN和TX_ER两种信息,在TX_CLK的上升沿发送TX_EN,下降沿发送TX_ER;同样的,RX_DV信号线上也传送RX_DV和RX_ER两种信息,在RX_CLK的上升沿发送RX_DV,下降沿发送RX_ER。

八、SGMII接口

SGMII即Serial GMII,串行GMII,收发各一对差分信号线,
时钟频率625MHz
,在时钟信号的上升沿和下降沿均采样,参考时钟RX_CLK由PHY提供,是可选的,主要用于MAC侧没有时钟的情况,一般情况下,RX_CLK不使用,收发都可以从数据中恢复出时钟。在TXD发送的串行数据中,每8比特数据会插入TX_EN/TX_ER 两比特控制信息,同样,在RXD接收数据中,每8比特数据会插入RX_DV/RX_ER两比特控制信息,所以总的数据速率为1.25Gbps=625Mbps*2。其实,大多数MAC芯片的SGMII接口都可以配置成SerDes接口(在物理上完全兼容,只需配置寄存器即可),直接外接光模块,而不需要PHY层芯片,此时时钟速率仍旧是625MHz,不过此时跟SGMII接口不同,SGMII接口速率被提高到1.25Gbps是因为插入了控制信息,而SerDes端口速率被提高是因为进行了8B/10B变换,本来8B/10B变换是PHY芯片的工作,在SerDes接口中,因为外面不接PHY芯片,此时8B/10B变换在MAC芯片中完成了。
总结下:
MII接口 | 14根数据线 | 分为MAC模式和PHY模式,一般说来MAC和PHY对接 |
RMII(Reduced MII)接口 | 8根数据线 | 一般只用在以太网交换机的交换MAC芯片和多口物理层芯片中;可以用于10M以太网和100M以太网,但不可能用于1000M以太网 |
SMII(Serial MII)接口 | 4根数据线 | 一般只用在以太网交换机的交换MAC芯片和多口物理层芯片中;可以用于10M以太网和100M以太网,但不可能用于1000M以太网 |
SSMII接口 | | 即Serial Sync MII,叫串行同步接口 |
SSSMII接口 | | 即Source Sync Serial MII,叫源同步串行MII接口 |
GMII接口 | 24根数据线 | 千兆网的MII接口 |
RGMII接口 | 14根数据线 | 千兆网的MII接口 |
SGMII接口 | 2根数据线 | 千兆网的MII接口 |
免责声明:本文素材来源于网络。版权归原作者所有,如涉及侵权,请联系删除。谢谢。

往期文章推荐阅读(点击文章标题即可直接阅读):
1、浅谈串口转以太网模块;
2、浅谈常见的物联网通信协议;
3、浅谈Wi-Fi技术及其优势;
4、I2C通信的那些坑知多少;
5、IIC为什么需要用开漏输出和上拉电阻;
6、总线I2C和SPI,工程师喜欢用哪一个?
发表评论 取消回复