以太网媒体接口MII/RMII/SMII/GMII/RGMII/SGMII
- [GMAC系统框架(EMAC是百兆mac, GMAC是千兆mac)](#GMAC系统框架(EMAC是百兆mac, GMAC是千兆mac))
- 网卡
- [PHY(Physical Layer,物理层)](#PHY(Physical Layer,物理层))
- [MAC(Media Access Control、媒体访问控制器)](#MAC(Media Access Control、媒体访问控制器))
- [MII(Media Independent interface)介质无关接口,也叫做媒体独立接口](#MII(Media Independent interface)介质无关接口,也叫做媒体独立接口)
- [RMII(Reduced Media Independant Interface)](#RMII(Reduced Media Independant Interface))
- [SMII(Serial MII)](#SMII(Serial MII))
- [SSMII(Serial Sync MII)](#SSMII(Serial Sync MII))
- [SSSMII(Source Sync Serial MII)](#SSSMII(Source Sync Serial MII))
- [GMII(Gigabit MII)](#GMII(Gigabit MII))
- [RGMII(Reduced GMII)](#RGMII(Reduced GMII))
- [SGMII(Serial GMII)](#SGMII(Serial GMII))
- SFP
- GIGE(千兆以太网通信协议开发的相机接口标准)
- 10GIGE(10G以太网,万兆以太网通信协议开发的相机接口标准)
GMAC系统框架(EMAC是百兆mac, GMAC是千兆mac)
GMAC通常由MAC控制器和PHY构成。以太网卡中数据链路层的芯片一般简称之为MAC控制器,物理层的芯片我们简称之为PHY。
MAC控制器:主要完成数据链路层的IP数据报打包成网络帧并将数据发送给PHY。
PHY:主要完成速度协商,数字信号到模拟信号的转换最后把信号输出到网线上。
CPU,MAC,PHY并不是集成在同一个芯片内,由于PHY包含大量模拟器件,而MAC是典型的数字电路,考虑到芯片面积及模拟/数字混合架构的原因,将MAC集成进CPU,而将PHY留在片外,这种结构是最常见的。当然更灵活、密度更高的芯片技术已经可以实现MAC和PHY的单芯片整合。
- CPU内部集成了MAC和PHY (难度较高)
- CPU内部集成MAC,PHY采用独立芯片 (主流方案)
- CPU不集成MAC和PHY,MAC和PHY采用独立芯片或者集成芯片 (高端采用)
以常用的第二种:CPU内部集成MAC,PHY采用独立的芯片方案,虚线内表示CPU和MAC集成在一起,PHY芯片通过MII接口与CPU上的MAC互联。
网卡
网卡(Network Interface Card,简称NIC),也称网络适配器,是电脑与局域网相互连接的设备。无论是普通电脑还是高端服务器,只要连接到局域网,就都需要安装一块网卡。如果有必要,一台电脑也可以同时安装两块或多块网卡。
电脑之间在进行相互通讯时,数据不是以流而是以帧的方式进行传输的。我们可以把帧看做是一种数据包,在数据包中不仅包含有数据信息,而且还包含有数据的发送地、接收地信息和数据的校验信息。
一个网卡主要包括OSI的最下面的两层,物理层和数据链路层
物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY
数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。数据链路层的芯片称之为MAC控制器
网卡系统框架结构
从硬件的角度来分析,以太网的电路接口一般由CPU、MAC(Media Access Control)控制器和物理层接口(physical Layer PHY)组成,如下图所示:
管理配置:
- MDC------配置接口时钟
- MDIO------配置接口I/O
管理配置接口控制PHY的特性.该接口有32个寄存器地址,每个地址16位.其中前16个已经在"IEEE 802.3,2000-22.2.4 Management Functions"中规定了用途,其余的则由各器件自己指定
PHY(Physical Layer,物理层)
一般PHY芯片为模数混合电路,负责接收电、光这类模拟信号,经过解调和A/D转换后通过MII接口将信号交给MAC芯片进行处理。一般MAC芯片为纯数字电路。
PHY(Physical Layer)是IEEE802.3中定义的一个标准模块,STA(Station Management Entity,管理实体,一般为MAC或CPU)通过MIIM(MII Manage Interface)对PHY的行为、状态进行管理和控制,而具体管理和控制动作是通过读写PHY内部的寄存器实现的。PHY的基本结构如下图:
PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据)然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去,收数据时的流程反之。
PHY还有个重要的功能就是实现CSMA/CD的部分功能,它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去.如果两个碰巧同时送出了数据,那样必将造成冲突,这时候冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。
PHY寄存器的地址空间为5位,从0到31最多可以定义32个寄存器(随着芯片功能不断增加,很多PHY芯片采用分页技术来扩展地址空间以定义更多的寄存器),IEEE802.3定义了地址为0-15这16个寄存器的功能,地址16-31的寄存器留给芯片制造商自由定义,如下表所示:
注:
上图B和E表示在特定接口下,寄存器是基本的还是扩展的。例如:MII接口下只有0和1寄存器是基本的,其它的是扩展的。所为扩展是指留给IEEE以后的扩展特性用,不是给PHY厂商的扩展,PHY厂商自定义的只能是16~31号寄存器 。
在IEEE标准文档及某些PHY手册中,某寄存器的比特(bit)用X.y表示,如0.15表示第0寄存器的第15位。
MAC(Media Access Control、媒体访问控制器)
DMA Controler :直接记忆器存取控制器,执行直接记忆器存取作业的控制单元,由一组缓存器(Register)和高速电路组成,总线提供最快的资料移转速度。
因芯片面积及模拟/数字混合架构的原因,MAC集成进CPU而将PHY留在片外,这种结构是最常见的。 下图是以太网结构大框架,虚框表示CPU,MAC集成在CPU中,PHY芯片通过MII接口与CPU上的MAC连接:
以太网结构大框架
MAC由硬件控制器及MAC通信协议构成。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。
MAC硬件框图
在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层,如下图中的MDIO数据传输协议;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC(逻辑链路控制)层。该层协议是以太网MAC由IEEE-802. 3以太网标准定义。一般以太网MAC芯片的一端连接PCI总线,另一端连接PHY芯片上通过MII接口连接。
MDIO数据格式定义在IEEE 802.3以太网标准中,如下图所示(数据传输顺序为从左至右):
MII(Media Independent interface)介质无关接口,也叫做媒体独立接口
它是IEEE-802.3定义的行业标准,是MAC与PHY之间的接口。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。数据接口包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。数据接口总共需要16个信号。MII以4位半字节方式传送数据双向传输,时钟速率25MHz,工作速率可达100Mb/s。
MII管理接口是个双信号接口,一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。其管理是使用SMI(Serial Management Interface)总线通过读写PHY的寄存器来完成的。PHY里面的部分寄存器是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器,以得知目前PHY的状态,例如连接速度,双工的能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的,例如流控的打开关闭,自协商模式还是强制模式等。不论是物理连接的MII总线和SMI总线还是PHY的状态寄存器和控制寄存器都是有IEEE的规范的,因此不同公司的MAC和PHY一样可以协调工作,当然为了配合不同公司的PHY的自己特有的一些功能,驱动需要做相应的修改。
MII支持10兆和100兆的操作,一个接口由14根线组成,它的支持还是比较灵活的,但是有一个缺点是因为它一个端口用的信号线太多,如果一个8端口的交换机要用到112根线,16端口就要用到224根线,到32端口的话就要用到448根线,一般按照这个接口做交换机,是不太现实的,所以现代的交换机的制作都会用到其它的一些从MII简化出来的标准,比如RMII、SMII、GMII等。
MII数据接口包含16个信号和2个管理接口信号,如下图所示:
MAC 通过MIIM 接口读取PHY 状态寄存器以得知目前PHY 的状态。例如连接速度、双工的能力等。也可以通过 MIIM设置PHY的寄存器达到控制的目的。例如流控的打开关闭、自协商模式还是强制模式等。MII以4位半字节方式传送数据双向传输,时钟速率25MHz。其工作速率可达100Mb/s。当时钟频率为2.5MHz时,对应速率为10Mb/s。MII接口虽然很灵活但由于信号线太多限制多接口网口的发展,后续又衍生出RMII,SMII等等。
RMII(Reduced Media Independant Interface)
精简MII接口,节省了一半的数据线,信号线数量由MII的14根减少为7根,所以它一般要求是50兆的总线时钟。
RMII一般用在多端口的交换机,它不是每个端口安排收、发两个时钟,而是所有的数据端口公用一个时钟用于所有端口的收发,这里就节省了不少的端口数目。RMII的一个端口要求7个数据线,比MII少了一倍,所以交换机能够接入多一倍数据的端口。和MII一样,RMII支持10兆和100兆的总线接口速度。
RMII收发使用2位数据进行传输,收发时钟均采用50MHz时钟源。信号定义如下:
其中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个时钟。
SMII(Serial MII)
S表示串行的意思,是由思科提出的一种媒体接口,它有比RMII更少的信号线数目。因为它只用一根信号线传送发送数据,一根信号线传输接受数据,所以在时钟上为了满足100的需求,它的时钟频率很高, 达到了125兆,为什么用125兆,是因为数据线里面会传送一些控制信息。
SMII一个端口仅用4根信号线完成100信号的传输,比起RMII差不多又少了一倍的信号线。SMII在工业界的支持力度是很高的。同理,所有端口的数据收发都公用同一个外部的125M时钟。
SMII(Serial Media Independant Interface),串行MII接口。它包括TXD,RXD,SYNC三个信号线,共用一个时钟信号,此时钟信号是125MHz,信号线与此时钟同步。信号定义如下:
SYNC是数据收发的同步信号,每10个时钟同步置高一次电平,表示同步。TXD和RXD上的数据和控制信息,以10bit为一组。发送部分波形如下:
从波形可以看出,SYNC变高后的10个时钟周期内,TXD依次输出一组10bit的数据即TX_ER,TX_EN,TXD[0:7],这些控制信息和MII接口含义相同。在100M速率中,每一组的内容都是变换的,在10M速率中,每一组数据需要重复10次,采样任一一组都可以。
SSMII(Serial Sync MII)
SSMII叫串行同步接口,跟SMII接口很类似,只是收发使用独立的参考时钟和同步时钟,不再像SMII那样收发共用参考时钟和同步时钟,传输距离比SMII更远。
SSSMII(Source Sync Serial MII)
SSSMII叫源同步串行MII接口,SSSMII与SSMII的区别在于参考时钟和同步时钟的方向,SSMII的TX/RX参考时钟和同步时钟都是由PHY芯片提供的,而SSSMII的TX参考时钟和同步时钟是由MAC芯片提供的,RX参考时钟和同步时钟是由PHY芯片提供的,所以顾名思义叫源同步串行。
GMII(Gigabit MII)
GMII是千兆网的MII接口,这个也有相应的RGMII接口,表示简化了的GMII接口。
GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式。GMII接口数据结构符合IEEE以太网标准,该接口定义见IEEE 802.3-2000。信号定义如下:
RGMII(Reduced GMII)
RGMII是RGMII的简化版本,将接口信号线数量从24根减少到14根,时钟频率仍旧为125MHz,TX/RX数据宽度从8为变为4位,为了保持1000Mbps的传输速率不变,RGMII接口在时钟的上升沿和下降沿都采样数据。
RGMI同时也兼容100Mbps和10Mbps两种速率,此时参考时钟速率分别为25MHz和2.5MHz。
RGMII相对于GMII相比,具有如下特征:
- 发送/接收数据线由8条改为4条
- TX_ER和TX_EN复用,通过TX_CTL传送
- RX_ER与RX_DV复用,通过RX_CTL传送
- 1Gbit/s(即1000Mbit/s)速率下,时钟频率为125MHz
- 100 Mbit/s速率下,时钟频率为25MHz
- 10 Mbit/s速率下,时钟频率为2.5MHz
信号定义如下:
虽然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,下图为发送接收的时序:
SGMII(Serial GMII)
SGMII即串行GMII,收发各一对差分信号线,时钟频率625MHz,在时钟信号的上升沿和下降沿均采样,参考时钟RX_CLK由PHY提供,是可选的,主要用于MAC侧没有时钟的情况,一般情况下,RX_CLK不使用。收发都可以从数据中恢复出时钟。
在TXD发送的串行数据中,每8比特数据会插入TX_EN/TX_ER 两比特控制信息,同样,在RXD接收数据中,每8比特数据会插入RX_DV/RX_ER 两比特控制信息,所以总的数据速率为1.25Gbps=625Mbps*2。
SFP
GBIC(Gigabit Interface Converter的缩写),是将千兆位电信号转换为光信号的接口器件。GBIC设计上可以为热插拔使用。GBIC是一种符合国际标准的可互换产品。采用GBIC接口设计的千兆位交换机由于互换灵活,在市场上占有较大的市场份额。SFP (Small Form-factor Pluggable)可以简单的理解为GBIC的升级版本。
GIGE(千兆以太网通信协议开发的相机接口标准)
GigE Vison协议基于普通的以太网物理链路,运行在UDP协议层之上,包含控制协议GVCP和数据流协议GVSP两大部分。
GigE Vision是一种基于千兆以太网通信协议开发的相机接口标准。在工业机器视觉产品的应用中,GigE Vision允许用户在很长距离上用廉价的标准线缆进行快速图像传输。它还能在不同厂商的软、硬件之间轻松实现互操作。
10GIGE(10G以太网,万兆以太网通信协议开发的相机接口标准)
10吉比特以太网(10Gigabit Ethernet,缩写为10GbE、10GigE或10GE),也译为10吉位以太网、万兆以太网,最初在2002年通过,成为IEEE Std 802.3ae-2002。它规范了以10Gbit/s的速率来传输的以太网。