MAC、PHY以及MII

在通信设备中,通常离不开网络接口,本文将重点说明下网络接口中的MAC、PHY、MII以及MII的各种衍生版本。

MAC和PHY的结构
在这里插入图片描述
上图中DMA集成在CPU中,但是CPU、MAC、PHY并不是在同一个芯片内,由于PHY包含大量模拟器件,而MAC是典型的数字电路,考虑到芯片面积以及模拟/数字混合架构的原因,将MAC集成到SOC而将PHY留在片外,这种结构最常见

MAC

**MAC(Media Access Control)**即媒体访问控制层协议。MAC由硬件控制器及MAC通信协议构成。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。
在这里插入图片描述

PHY

**PHY(Physical Layer)**是IEEE-802.3中定义的一个标准模块,STA(Station Management Entity,管理实体,一般为MAC或者CPU)通过MIIM(MII Manage Interface)对PHY的行为、状态进行管理和控制,而具体管理和控制动作是通过读写PHY内部的寄存器实现的,PHY的基本结构图如下:

PHY在发送数据的时候,收到MAC过来的数据,然后把并行数据转化为串行流数据,再按照物理层编码的规则把数据编码,再变为模拟信号发送出去,收数据时则反之。

PHY寄存器的地址空间为5位,从0到31最多可以定义32个寄存器,如果32个不够,那么PHY可以采用分页技术扩展地址空间
在这里插入图片描述

MII

**MII(Media Independent interface)**即介质无关接口,它是IEEE-802.3定义的行业标准,是MAC与PHY之间的接口。MII数据接口包含16个信号和2个管理接口信号,如下图所示
在这里插入图片描述
在这里插入图片描述
MAC通过MIIM接口读取PHY状态寄存器得知目前PHY的状态.比如双工模式,连接速度等,也可以设置PHY的工作模式,比如流控打开与关闭、自协商模式还是强制模式。MII以4位半字节方式传送数据双向传输,时钟速率25MHz。其工作速率可达100Mb/s。当时钟频率为2.5MHz时,对应速率为10Mb/s。MII接口虽然很灵活但由于信号线太多限制多接口网口的发展,后续又衍生出RMII,SMII等。

RMII

RMII(Reduced Media Independant Interface),精简MII接口,节省了一半的数据线。RMII收发使用2位数据进行传输,收发时钟均采用50MHz时钟源。TXD[0:3]->TXD[0:1],RXD[0:3]->RXD[0:1]在100M以太网速率中,MAC层每个时钟采样一次RXD[0:1]上的数据,在10M以太网速率中,MAC层每10个时钟采样一次RXD[0:1]上的数据,此时物理层接收的每个数据会在RXD[1:0]保留10个时钟

SMII

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

SYNC是数据收发的同步信号,每10个时钟同步置高一次电平,表示同步。TXD和RXD上的数据和控制信息,以10bit为一组。发送部分波形如下:
在这里插入图片描述
从波形能够看出,SYNC变高后的10个时钟周期内TXD依次输出一组10 bit的数据即TX_ER,TX_EN,TXD[0:7]这些控制信息和MII接口中的含义相同。因此有效数据占比为8/10,有效速率=(8/10)*125M=100Mbps,在10M速率中,每一组数据需要重复10次,采样任意一组都可以

GMII

GMII(Gigabit Media Independant Interface),千兆MII接口,信号线跟MII类似,只是TXD[3:0]变为TXD[7:0],同时工作在125M时钟,因此速率能够达到1000bps,同时兼容MII规定的10/100Mbps工作方式。

RGMII

**RGMII(Reduced Gigabit Media Independant Interface),**精简GMII接口,和GMII相比,有如下特征:

  • 发送/接收数据线由8条改为4条
  • TX_ER和TX_EN复用,通过TX_CTL传送
  • RX_ER与RX_DV复用,通过RX_CTL传送
  • 1 Gbit/s速率下,时钟频率为125MHz
  • 100 Mbit/s速率下,时钟频率为25MHz10 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

SGMII(Serial Gigabit Media Independent Interface],串行Gigabit MII接口,类似与GMII和RGMII,只不过GMII和RGMII都是并行的,而且需要随路时钟,PCB布线相对麻烦,而且不适应背板应用。而SGMII是串行的,不需要提供另外的时钟,MAC和PHY都需要CDR去恢复时钟,SGMII信号线根SMII类似,只是此时的时钟被提高到了1.25GHZ,根SMII类似,在10个时钟传输2bit contro + 8bit data,因此有线的速率是1000M

Serdes

大多数MAC芯片的SGMII接口都可以配置成SerDes接口,SerDes模式和SGMII模式在硬件连线上是完全兼容的,都是一对接收、发送差分信号,实际使用过程中,通过配置MAC相关寄存器,端口模式可以为SerDes模式或者SGMII模式,SGMII模式通常用来连接GE电模块,支持10/100/1000BASE-T电模块,如强制1000M电模块或者10/100/1000M自适应电模块。SerDes模式通常用来接GE光模块,支持1000BASE-X光模块,SerDes直接外接光模块,而不需要PHY层芯片,此时时钟速率仍旧是625MHz,不过此时跟SGMII接口不同,SGMII接口速率被提高到1.25Gbps是因为插入了控制信息,而SerDes端口速率被提高是因为进行了8B/10B变换,本来8B/10B变换是PHY芯片的工作,在SerDes接口中,因为外面不接PHY芯片,此时8B/10B变换在MAC芯片中完成了。8B/10B变换的主要作用是扰码,让信号中不出现过长的连“0”和连“1”情况,影响时钟信息的提取。

SerDes通道和SerDes接口是两个概念,SGMII也是需要SerDes通道(SERDES lane)的,Serdes Lane

XGMII

XGMII(10 Gigabit Media Independent Interface)10 Gigabit MII,X对应罗马数字10。TXD[31:0]:数据发送通道,32位并行数据,RXD[31:0]:数据接收通道,32位并行数据。TXC[3:0] :发送通道控制信号, TXC=0 时,表示 TXD 上传输的是数据; TXC=1 时,表示 TXD上传输的是控制字符。
TX_CLK :TXD 和 TXC 的参考时钟,时钟频率 156.25MHz,在时钟信号的上升沿和下降沿都采样数据。 156.25MHz * 2 * 32 = 10Gbps 。
RX_CLK :RXD 和 RXC 的参考时钟,时钟频率 156.25MHz,在时钟信号的上升沿和下降沿都采样数据。

XGMII接口还有XLGMII(40Gb)、CGMII(100Gb)等变种。其基本已经被XAUI/XLAUI/CAUI。

XAUI

XAUI接口(读作“Zowie”),其中的“AUI”部分指的是以太网连接单元接口(Ethernet Attachment Unit Interface)。“X”代表罗马数字10,它意味着每秒万兆(10Gbps)。XAUI被设计成一个接口扩展器,它扩展的接口就是XGMII(与介质无关的万兆接口)。XGMII是一个64位信号宽度的接口(发送与接收用的数据路径各占32位),可用于把以太网MAC层与物理层(PHY)相连。在大多数典型的以太网MAC和PHY相连的、芯片对芯片的应用中,XAUI可用来代替或者扩展XGMII。

由于受电气特性的影响,XGMII接口的PCB走线最大传输距离仅有7cm,并且XGMII接口的连线数量太多,给实际应用带来不便。因此,在实际应用中,XGMII接口通常被XAUI接口代替,XAUI即10Gigabit Attachment Unit Interface,XAUI在XGMII的基础上实现了XGMII接口的物理距离扩展,将PCB走线的传输距离增加到50cm,使背板走线成为可能。
在这里插入图片描述
源端XGMII把收发32位宽度数据流分为4个独立的lane通道,每个lane通道对应一个字节,经XGXS(XGMII ExtenderSublayer)完成8b/10b编码后,将4个lane分别对应XAUI的4个独立通道,XAUI端口速率为:2.5Gbps1.254=12.5Gbps。这里的lane,实际上就是Serdes lane,而Serdes lane的速率是可以提高,因此XLAUI和CAUI只不过是提高了Serdes lane的速率。

XLAUI/CAUI

XAUI/XLAUI/CAUI在物理结构上是一样的,收发通道独立,各四对差分信号线。

对于XAUI总线,每对差分线上的数据速率为3.125Gbps,总数据带宽为12.5Gbps,有效带宽为12.5Gbps*0.8=10Gbps(因为XAUI总线数据在传输前进行了8b/10b变换,编码效率为80%)。

对于XLAUI总线,每对差分线上的数据速率为10.3125Gbps,总数据带宽为41.25Gbps,有效带宽为41.25Gbps*(64/66)=40Gbps(因为XLAUI总线数据在传输前进行了64b/66B变换,编码效率为96.97%)。

对于CAUI总线,每对差分线上的数据速率为25.78125Gbps,总数据带宽为103.125Gbps,有效带宽为103.125Gbps*(64/66)=100Gbps(因为CAUI总线数据在传输前进行了64B/66B变换,编码效率为96.97%)。

MDIO

MDIO是一个以太网控制器的传输协议,广泛用于以太网控制器和PHY之间的数据通讯。

MDIO(Management Data Input/Output),管理数据输入输出总线。它是由IEEE802.3定义的以太网行业标准,它承载着MAC层和物理层通信的重任。MDIO接口包括两根信号线:时钟线MDC,数据线MDIO(双向),MAC层芯片(或其他控制芯片)可以通过它们访问物理层芯片的寄存器,并通过这些寄存器来对物理芯片进行控制和管理

MDC(Management Data Clock):管理接口的时钟,是一个非周期信号,信号的最小周期为400ns(最快2.5MHz),最小正电平时间和负电平时间为160ns,最大正负电平时间无限制。

MDIO(Management Data Input/Output):是双向的数据线,用来传送MAC层的控制信息和物理层的状态信息。它与MDC时钟同步,在MDC上升沿有效。

MDIO帧格式

在这里插入图片描述
PRE:帧前缀域,为32个连续“1”比特,这帧前缀域不是必需的,某些物理层芯片的MDIO操作就没有这个域。

ST:帧开始标识码,为“01”。

OP:帧操作码(读写操作),比特“10”表示此帧为一读操作帧,比特“01”表示此帧为一写操作帧。

PHYAD:PHY芯片的地址,5个比特,每个芯片都把自己的地址与这5个比特进行比较,若匹配则响应后面的操作,若不匹配,则忽略掉后面的操作。一个系统最多联31个PHY(地址0为保留)。

REGAD:用来选择物理层芯片的32个寄存器中的某个寄存器的地址。一个PHY上最多32个寄存器地址(可以使用shadow value技术,访问更多的寄存器)。

TA:状态转换域,若为读操作,则第一比特时MDIO为高阻态,第二比特时由物理层芯片使MDIO置“0”。若为写操作,则MDIO仍由MAC层芯片控制,其连续输出“10”两个比特。

DATA:帧的寄存器的数据域,16比特,若为读操作,则为物理层送到MAC层的数据,若为写操作,则为MAC层送到物理层的数据。

IDLE:帧结束后的空闲状态,此时MDIO无源驱动,处于高阻状态,但一般用上拉电阻使其处在高电平,即MDIO引脚需要上拉电阻。

MDIO工作流程

Preamle(PRE):在没有传输数据的空闲状态时,数据线MDIO处于高阻态(由于外部上拉,故一直为1)。

Start of Frame(ST):MAC驱动MDIO线,出现一个2bit的开始标识码(01)。

Operation Code(OP):MAC驱动MDIO线,出现一个2bit数据来标识是读操作(10)还是写操作(01)。

PHY Address(PHYAD):MAC驱动MDIO线,出现一个5bit数据标识PHY的地址,对应该地址的PHY芯片会响应。

Reg Address(REGAD):MAC驱动MDIO线,出现一个5bit的PHY芯片寄存器地址(需要读/写的地址)。

Turnaround(TA):写操作的话,MAC驱动MDIO线,出现10;读操作的话,MDIO pin of MAC must be put in high-impedance state,在第二个周期,PHY驱动MDIO线,出现0。

Data,MDIO串行读出/写入PHY芯片寄存器的数据(16bit)。

最后MDIO恢复成空闲状态(IDLE),同时MDIO进入高阻状态。

参考

[1] https://blog.csdn.net/starmo2004/article/details/88635129
[2] https://blog.csdn.net/sternlycore/article/details/89065789
[3] http://xilinx.eetrend.com/content/2019/100017255.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值