以太网构成,MAC,PHY,MII,网络变压器,RJ45
以太网构成
以太网基本拓扑结构
一个嵌入式系统的以太网主要由以下几个部分组成:MAC控制器、PHY芯片、网络变压器和RJ45接头,有的系统还会有DMA控制。
常见以太网电路原理图
MAC
MAC即Media Access Control,即媒体访问控制子层协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层。该层协议是以太网MAC由IEEE-802.3以太网标准定义。
PHY芯片
PHY是物理接口收发器,它实现物理层。IEEE-802.3标准定义了以太网PHY。包括MII/GMII(介质独立接口)子层,PCS(物理编码子层),PMA(物理介质附加)子层,PMD(物理介质相关)子层,MDI子层。它符合IEEE-802.3k中用于10BaseT(第14条)和100BaseTX(第24条和第25条)的规范。
PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC。对于100BaseTX因为使用4B/5B编码,每4bit就增加1bit的检错码),然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。收数据时的流程反之。
下图即为前面PYNQ开发板中用到的RTL8211E的结构框图,具体手册可见链接:RTL8211E 。
MII接口
什么是MII接口
MII即“媒体独立接口”,也叫“独立于介质的接口”。它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。RMII全称为“简化的媒体独立接口”,是IEEE-802.3u标准中除MII接口之外的另一种实现。
MII接口的具体实现
MII支持10M和100M的操作,单向传输的数据线有4根,整个接口由14根线组成。
信号名称
描述
方向
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_TX_CLK:发送数据使用的时钟信号,对于10M位/s的数据传输,此时钟为2.5MHz,对于100M位/s的数据传输,此时钟为25MHz。
MII_RX_CLK:接收数据使用的时钟信号,对于10M位/s的数据传输,此时钟为2.5MHz,对于100M位/s的数据传输,此时钟为25MHz。
MII_TX_EN:传输使能信号,此信号必需与数据前导符的起始位同步出现,并在传输完毕前一直保持。
MII_TXD[3:0]:发送数据线,每次传输4位数据,数据在MII_TX_EN信号有效时有效。MII_TXD[0]是数据的最低位,MII_TXD[3]是最高位。当MII_TX_EN信号无效时,PHY忽略传输的数据。
MII_CRS:载波侦听信号,仅工作在半双工模式下,由PHY控制,当发送或接收的介质非空闲时,使能此信号。 PHY必需保证MII_CRS信号在发生冲突的整个时间段内都保持有效,不需要此信号与发送/接收的时钟同步。
MII_COL:冲突检测信号,仅工作在半双工模式下,由PHY控制,当检测到介质发生冲突时,使能此信号,并且在整个冲突的持续时间内,保持此信号有效。此信号不需要和发送/接收的时钟同步。
MII_RXD[3:0]:接收数据线,每次接收4位数据,数据在MII_RX_DV信号有效时有效。MII_RXD[0]是数据的最低位,MII_RXD[3]是最高位。当MII_RX_EN无效,而MII_RX_ER有效时,MII_RXD[3:0]数据值代表特定的信息。
MII_RX_DV:接收数据使能信号,由PHY控制,当PHY准备好数据供MAC接收时,使能该信号。此信号必需和帧数据的首位同步出现,并保持有效直到数据传输完成。在传送最后4位数据后的第一个时钟之前,此信号必需变为无效状态。为了正确的接收一个帧,有效电平不能滞后于数据线上的SFD位出现。
MII_RX_ER:接收出错信号,保持一个或多个时钟周期(MII_RX_CLK)的有效状态,表明MAC在接收过程中检测到错误。具体错误原因需配合MII_RX_DV的状态及MII_RXD[3:0]的数据值。
SMI(MDC/MDIO)总线接口
SMI:串行管理接口(Serial Management Interface),也被称作MII管理接口(MII Management Interface),包括MDC和MDIO两条信号线。
MDIO是一个PHY的管理接口,用来读/写PHY的寄存器,以控制PHY的行为或获取PHY的状态,MDC为MDIO提供时钟。
MDIO是双向的,只支持一个MAC连接最多32个PHY的连接方式,且MAC作为master,PHY作为slave。在写PHY寄存器的时候,由MAC驱动MDIO向PHY写入数据;在读PHY寄存器时,前半段由MAC驱动发送寄存器地址,后半段由PHY驱动回复寄存器的值。
MDC要求由MAC输出,是非周期性的,即不要求提供固定频率的时钟,对于PHY芯片则作为输入,以在上升沿触发MDIO的读写。MDC的时钟频率可以是2.5MHz,即最小的时钟周期为400ns。
MII口的缺点与不足
MII的一个缺点是:它的每个端口用的信号线太多,如果一个8端口的交换机要用112根线,32端口就要用到448根线,如果按个接口做交换机,不太现实,所以现代交换机会采用其它一些从MII简化而来的标准,对于十兆与百兆网络。出现了RMII与SMII等。且由于MII只支持十兆和百兆以太网,随着对网速要求的不断提升,又出现的GMII与RGMII等。
##RMII
RMII(Reduced Media Independant Interface),精简MII接口,节省了一半的数据线。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个时钟。
信号定义如下:
信号名称
描述
方向
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
SMII
SMII(Serial Media Independant Interface),串行MII接口。SMII是由思科提出的一种媒体接口,它有比RMII更少的信号线数目,S表示串行的意思。因为它只用一根信号线传送发送数据,一根信号线传输接受数据,所以在时钟上为了满足100的需求,它的时钟频率很高,达到了125M,为什么用125M,是因为数据线里面会传送一些控制信息。
SMII一个端口仅用4根信号线完成100M信号的传输,它包括TXD,RXD,SYNC三个信号线,共用一个时钟信号.比起RMII差不多又少了一倍的信号线。SMII在工业界的支持力度是很高的。同理,所有端口的数据收发都公用同一个外部的125M时钟。
信号定义如下:
信号名称
描述
方向
REF_CLK
参考时钟
外部时钟源提供125MHz
TXD
发送数据
MAC → PHY
RXD
接收数据
PHY → MAC
SYNC
同步信号
-
MDIO
管理数据
双向
MDC
管理数据时钟
MAC → PHY
GMII
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
RGMII
RGMII(Reduced Gigabit Media Independant Interface),精简GMII接口。相对于GMII相比,RGMII具有如下特征:
发送/接收数据线由8条改为4条
TX_ER和TX_EN复用,通过TX_CTL传送
RX_ER与RX_DV复用,通过RX_CTL传送
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。
MII接口总结
下表简单总结了一下各种MII接口的基本特征,其中,RGMII接口是目前比较主流的接口类型。
MII
RMII
SMII
GMII
RGMII
传输速率
100M
100/10M
100M
1000/100/10M
1000/100/10M
单向数据线数
4
2
1
8
4
时钟速率
25/2.5M
50/5M
125M
25/2.5M
125/25/2.5M
以太网变压器
网络变压器结构
网络变压器一般是由差模线圈,变压器以及中心抽头组成。如下示意:
其中初级中心抽头的接法需要根据PHY芯片来决定,电压驱动的就要接电源,电流驱动直接接个电容到地即可。还需要注意的是有的变压器中间抽头是独立的有的是收发合并在一起的,设计的时候需要注意,为了防止初版硬件设计错误,可以兼容设计。
网络变压器作用
耦合差分信号,抗干扰能力更强
变压器隔离网线端不同设备的不同电平,隔离直流信号
RJ45
RJ是Registered Jack的缩写,意思是“注册的插座”。在FCC(美国联邦通信委员会标准和规章)中RJ是描述公用电信网络的接口,计算机网络的RJ45是标准8位模块化接口的俗称。
关于接头引脚定义,目前存在两种标准:T568A和T568B(最通用)。这两者的主要区别是橙色和绿色双绞线进行了交换,如下图所示:
这两种标准只是在线缆颜色上有所区别,目的是在线缆侧实现交叉互连。网络直通线常用于异种网络之间的互连(比如计算机交换机之间),交叉线常用于同种网络之间的互联(比如计算机与之间)。
不过现在PHY芯片大部分具有自动交叉(auto MDI-X)的能力,只需要直连即可。
不同网络速率及网络介质下引脚作用也不相同,如下图示意:
参考:
以太网PHY自学笔记
网口扫盲三:以太网芯片MAC和PHY的关系
SMI(MDC/MDIO)总线接口介绍
MII与RMII接口的区别
以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍