以太网基础知识
说明:
- 本文档由DuRuofu撰写,由DuRuofu负责解释及执行。
- 本文档从硬件角度介绍了以太网的基础知识,包括以太网的基础知识、硬件接口、硬件连接示意、MAC 和 PHY 模块、MII/RMII/GMII/RGMII 接口等。
修订历史:
| 文档名称 | 版本 | 作者 | 时间 | 备注 |
| —- | —- | ———— | —— |
| 以太网概述 |v1.0.0| DuRuofu | 2024-01-06 | 首次建立 |
以太网基础知识
一、基础
1.1 介绍
以太网(Ethernet)是当今现有局域网采用的最通用的通信协议标准,该标准定义了在局域网中采用的电 缆类型和信号处理方法。以太网凭借其成本低、通信速率高、抗干扰性强等优点被广泛应用在网络远程监 控、交换机、工业自动化等对通信速率要求较高的场合。
以太网是一种产生较早,使用相当广泛的局域网。其最初是由 Xerox(施乐)公司创建并由 Xerox、 Intel 和 DEC 公司联合开发的基带局域网规范,后来被电气与电子工程师协会(IEEE)所采纳作为 802.3 的 标准。
以太网的分类有标准以太网(10Mbit/s)、 快速以太网(100Mbit/s)和千兆以太网(1000Mbit/s)。
随着以 太网技术的飞速发展,市场上也出现了万兆以太网(10Gbit/s),它扩展了 IEEE802.3 协议和 MAC 规范, 使其技术支持 10Gbit/s 的传输速率。在实际应用中,千兆以太网理论上最高通信速率为 1000Mbit/s,可以 胜任大部分的使用场景。
1.2 硬件接口
RJ45 接口俗称“水晶头”,专业术语为 RJ45 连接器,由插头(接头、水晶头)和插座(母座)组成, 属于双绞线以太网接口类型。RJ45 插头只能沿固定方向插入,设有一个塑料弹片与 RJ45 插槽卡住以防止 脱落。
以太网通信离不开连接端口的支持,网络数据连接的端口就是以太网接口。以太网接口类型有 RJ45 接口、RJ11 接口(电话线接口)、SC 光纤接口等。其中 RJ45 接口是我们现在最常见的网络设备接口 (如:电脑网口),我们开发板使用的就是这种接口。 RJ45 接口俗称“水晶头”,专业术语为 RJ45 连接器,由插头(接头、水晶头)和插座(母座)组成, 属于双绞线以太网接口类型。RJ45 插头只能沿固定方向插入,设有一个塑料弹片与 RJ45 插槽卡住以防止 脱落。
RJ45 接口样式如图 所示:
RJ45 接口定义以及各引脚功能在不同通信速率下的定义有区别,图 52.1.2 是在 10M/100M 通信速率下 的定义,由下图可知,RJ45 插座只使用了 1、2、3、6 这四根线,其中 1、2 这组负责传输数据(TX+、 TX-),而 3、6 这组负责接收数据(RX+、RX-),另外四根线是备用的。
而在 1000M 的通信速率下,RJ45 插座的 8 根线都有用到,且都是双向引脚。需要说明的是,支持千 兆网通信的 RJ45 接口是向下兼容的,即也支持 10M/100M 通信速率,只不过不同的通信速率,其引脚功 能有区别。千兆网各引脚功能如下图所示:
从硬件的角度来说,以太网接口电路主要由 MAC(Media Access Control)控制器和物理层接口 PHY (Physical Layer,PHY)两大部分构成。MAC 指媒体访问控制子层协议,它和 PHY 接口既可以整合到单 颗芯片内,也可以独立分开,一般MAC 控制器由 FPGA 实现,PHY 芯片指开发板板载的 以太网芯片。
总结: 物理层芯片称为PHY、数据链路层芯片称为MAC。
PHY 在发送数据的时候,接收 MAC 发过来的数据(对 PHY 来说,没有帧的概念,都是数据而不管什 么地址,数据还是 CRC),把并行数据转化为串行流数据,按照物理层的编码规则把数据编码转换为模拟 信号发送出去,接收数据时的流程反之。PHY 还提供了和对端设备连接的重要功能,并通过 LED 灯显示 出自己目前的连接状态和工作状态。当我们给网卡接入网线的时候,PHY 芯片不断发出脉冲信号来检测对 端是否有设备,它们通过标准的“语言”交流,互相协商并确定连接速度、双工模式、是否采用流控等。 通常情况下,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式。这个技术被称为 Auto Negotiation,即自协商。
1.3 硬件连接示意
从硬件角度来看以太网是由CPU,MAC,PHY三部分组成的,如下图示意:
将MAC集成进CPU(FPGA)而将PHY留在片外,这种结构是最常见的:
详细一点就是下面的样子:
1.4 MAC 和 PHY 模块
MAC
MAC(Media Access Control) 即媒体访问控制层协议。MAC由硬件控制器及MAC通信协议构成。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。MAC硬件框图如下图所示:
在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC(逻辑链路控制)层。该层协议是以太网MAC由IEEE-802. 3以太网标准定义。一般以太网MAC芯片的一端连接PCI总线,另一端连接PHY芯片上通过MII接口连接。
PHY
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的寄存器留给芯片制造商自由定义。
MAC 和 PHY 芯片有配置接口,比如 MDIO 接口,可以配置 PHY 芯片的工作模式以及获取 PHY 芯 片的若干状态信息。PHY 芯片内部包含一系列寄存器,用户通过这些寄存器来配置 PHY 芯片的工作模式。以及获取 PHY 芯片的若干状态信息,如连接速率、双工模式、自协商状态等。
MDIO 接口也称为 SMI 接口(Serial Management Interface,串行管理接口),包括 ETH_MDC(数据管 理时钟)和 ETH_MDIO(数据管理输入输出)两条信号线。ETH_MDC 为 ETH_MDIO 提供时钟, ETH_MDC 的最大时钟不能超过 12.5Mhz。ETH_MDIO 为双向数据引脚,既用于发送数据,也用于接收数据。
1.5 MII/RMII/GMII/RGMII 接口
MII
MII(Media Independent interface)即介质无关接口,它是IEEE-802.3定义的行业标准,是MAC与PHY之间的接口。MII数据接口包含16个信号和2个管理接口信号,如下图所示:
信号定义如下:
信号名称 | 描述 | 方向 |
---|---|---|
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 |
MAC 通过MIIM 接口读取PHY 状态寄存器以得知目前PHY 的状态。例如连接速度、双工的能力等。也可以通过 MIIM设置PHY的寄存器达到控制的目的。例如流控的打开关闭、自协商模式还是强制模式等。MII以4位半字节方式传送数据双向传输,时钟速率25MHz。其工作速率可达100Mb/s。当时钟频率为2.5MHz时,对应速率为10Mb/s。MII接口虽然很灵活但由于信号线太多限制多接口网口的发展,后续又衍生出RMII,SMII等。 |
RMII
RMII(Reduced Media Independant Interface),精简MII接口,节省了一半的数据线。RMII收发使用2位数据进行传输,收发时钟均采用50MHz时钟源。信号定义如下:
信号名称 | 描述 | 方向 |
---|---|---|
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 |
其中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
SMII(Serial Media Independant Interface),串行MII接口。它包括TXD,RXD,SYNC三个信号线,共用一个时钟信号,此时钟信号是125MHz,信号线与此时钟同步。信号定义如下:
信号名称 | 描述 | 方向 |
---|---|---|
REF_CLK | 参考时钟 | 外部时钟源提供125MHz |
TXD | 发送数据 | MAC → PHY |
RXD | 接收数据 | PHY → MAC |
SYNC | 同步信号 | - |
MDIO | 管理数据 | 双向 |
MDC | 管理数据时钟 | MAC → PHY |
SYNC是数据收发的同步信号,每10个时钟同步置高一次电平,表示同步。TXD和RXD上的数据和控制信息,以10bit为一组。发送部分波形如下:
从波形可以看出,SYNC变高后的10个时钟周期内,TXD依次输出一组10bit的数据即TX_ER,TX_EN,TXD[0:7],这些控制信息和MII接口含义相同。在100M速率中,每一组的内容都是变换的,在10M速率中,每一组数据需要重复10次,采样任一一组都可以。
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传送
1 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,下图为发送接收的时序: