常见的以太网络媒体接口:MII RMII SMII GMII RGMII

2020-06-02

以太网媒体接口 MII, RMII,SMII,GMII,RGMII等

所有的这些接口都从MII而来,MII是(Medium Independent Interface)的意思,是指
不用考虑媒体是铜轴、光纤、电缆等,因为这些媒体处理的相关工作都有PHY或者叫做MAC
芯片完成。
MII支持10兆和100兆的操作,一个接口由14根线组成,每条信道都有自己的数据、
时钟和控制信号,它的支持还是比较灵活的,但是有一个缺点是因为它一个端口用的信号线太
多,如果一个8端口的交换机要用到112根线,16端口就要用到224根线,到32端口的话就要
用到448根线,一般按照这个接口做交换机,是不太现实的,所以现代的交换机的制作都会用
到其它的一些从MII简化出来的标准,比如RMII、SMII、GMII等。
RMII是简化的MII接口,在数据的收发上它比MII接口少了一倍的信号线,所以它一般
要求是50兆的总线时钟。RMII一般用在多端口的交换机,它不是每个端口安排收、发两个时钟,
而是所有的数据端口公用一个时钟用于所有端口的收发,这里就节省了不少的端口数目。RMII
的一个端口要求7个数据线,比MII少了一倍,所以交换机能够接入多一倍数据的端口。和MII
一样,RMII支持10兆和100兆的总线接口速度。
SMII是由思科提出的一种媒体接口,它有比RMII更少的信号线数目,S表示串行的意
思。因为它只用一根信号线传送发送数据,一根信号线传输接受数据,所以在时钟上为了满足
100的需求,它的时钟频率很高,达到了125兆,为什么用125兆,是因为数据线里面会传送一
些控制信息。SMII一个端口仅用4根信号线完成100信号的传输,比起RMII差不多又少了一倍
的信号线。SMII在工业界的支持力度是很高的。同理,所有端口的数据收发都公用同一个外部
的125M时钟。
GMII是千兆网的MII接口,这个也有相应的RGMII接口,表示简化了的GMII接口。

RMII 口是用两根线来传输数据的,
MII 口是用4根线来传输数据的,
GMII 是用 8根线来传输数据的。

TXD[3:0]:数据发送信号,共 4 根信号线;

RXD[3:0]:数据接收信号,共 4根信号线;
TX_ER(Transmit Error):  发送数据错误提示信号,同步于 TX_CLK,高电平有效,
表示TX_ER 有效期内传输的数据无效。对于 10Mbps速率下,TX_ER 不起作用;
RX_ER(Receive Error):  接收数据错误提示信号,同步于RX_CLK,高电平有效,表
示RX_ER有效期内传输的数据无效。对于10Mbps速率下,RX_ER不起作用;
TX_EN(Transmit Enable):   发送使能信号,只有在 TX_EN 有效期内传的数据才有效;
RX_DV(Reveive Data Valid): 接收数据有效信号,作用类型于发送通道的TX_EN;
TX_CLK:发送参考时钟,100Mbps速率下,时钟频率为25MHz,10Mbps速率下,
时钟频率为 2.5MHz。注意,TX_CLK 时钟的方向是从 PHY 侧指向MAC侧的,因为此时钟
是由PHY 提供的。
RX_CLK:接收数据参考时钟,100Mbps速率下,时钟频率为25MHz,10Mbps速率
下,时钟频率为2.5MHz。RX_CLK 也是由 PHY 侧提供的。
CRS:Carrier Sense,载波侦测信号,不需要同步于参考时钟,只要有数据传输,CRS
就有效,另外,CRS只在半双工模式下有效;
COL:Collision Detectd,冲突检测信号,不需要同步于参考时钟,只在半双工模式下
有效。
MII接口一共有 16根线(TX_CLK, RX_CLK 未记入)。

CLK为接收和发送共用

RMII 即 Reduced MII,是 MII 的简化版,信号线数量由 MII 的 14 根减少为 7 根
(CLK_REF为外部时钟源)。
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,用来协调两个不同的时钟。
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中数据发送完为止。

SMII即 Serial MII,串行 MII的意思,跟 RMII相比,信号线数据进一步减少到 3根;
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]上传输的是物理层的状态信息数据。

千兆以太网MII接口类型主要有GMII、RGMII、SGMII、TBI和RTBI  五种


与MII接口相比,GMII 的TX/RX数据宽度由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,是RGMII 的简化版本,将接口信号线数量从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。

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芯片中完成了。8B/10B变换
的主要作用是扰码,让信号中不出现过长的连“0”和连“1”情况,影响时钟信
息的提取

TBI即Ten Bit Interface的意思,接口数据位宽由GMII 接口的 8位增加到
10位,其实,TBI接口跟GMII 接口的差别不是很大,多出来的2位数据主要是
因为在TBI接口下,MAC芯片在将数据发给PHY芯片之前进行了8B/10B变换
(8B/10B变换本是在PHY芯片中完成的,前面已经说过了),另外,RX_CLK+/-
是从接收数据中恢复出来的半频时钟,频率为62.5MHz,RX_CLK+/-不是差分
信号,而是两个独立的信号,两者之间有180 度的相位差,在这两个时钟的上升
沿都采样数据。RX_CLK+/-也叫伪差分信号。除掉上面说到的之外,剩下的信号
都跟GMII 接口中的相同。

大多数芯片的TBI接口和GMII 接口兼容。在用作TBI接口时, CRS和 COL
一般不用。

RTBI接口

RTBI即Reduced TBI,简化版TBI,接口数据位宽为5bit,时钟频率为
125MHz,在时钟的上升沿和下降沿都采样数据,同RGMII 接口一样,TX_EN
线上会传送TX_EN和TX_ER两种信息,在时钟的上升沿传TX_EN,下降沿传
TX_ER;RX_DV线上传送RX_DV 和RX_ER 两种信息,在RX_CLK上升沿传
RX_DV,下降沿传RX_ER


分享到