以太网的硬件架构(MAC+PHY)

基于FPGA的以太网设计(2)----以太网的硬件架构(MAC+PHY)

1、概述

以太网的电路架构一般由MAC、PHY、变压器、RJ45和传输介质组成,示意图如下所示:
在这里插入图片描述

  • PHY:Physical Layer,即物理层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。简单来讲,就是PHY芯片决定了电信号/光信号如何传输。PHY主要是个模拟芯片,我们作为FPGAer,只要稍微了解一下就行。在千兆以太网设计中,PHY芯片一般都是独立的集成芯片,并不需要在FPGA层面上来设计PHY,我们只需要掌握好PHY和MAC之间的接口,以及PHY的一些常见寄存器配置即可。

  • MAC:Media Access Control,即媒体访问控制。MAC是数据链路层的芯片,它的功能是提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。

  • 隔离变压器:Transformer,也叫网络变压器。它主要实现电气上的功能而不实现逻辑功能。比如增强信号从而使传输距离更远;使芯片端与外部隔离,大大增强抗干扰能力,同时对芯片起到了很大的保护作用(如雷击)。理论上变压器不是必需的,没有变压器以太网物理层也能正常工作,只是电气性能会下降,传输距离会受限。

  • RJ45:网络连接器,RJ是Registered Jack的缩写即 “注册的插座” 。网络连接器并不一定是RJ45,只是目前在千兆以太网中,RJ45是最常见的连接器。它实现的是连接不同主机的网络接口的功能。

  • 传输介质:也就是俗称的 “网线” 。电信号/光信号在这上面以一定的规范进行传输,它是发送和接收信息的载体。传输介质可以分为有线和无线两个大类,有线就是我们日常生活中常见的网线,而无线则是电磁波,例如WIFI和手机通讯等。

根据MAC和PHY的集成程度,可以分成3种常见的设计方案:

  • 主芯片同时集成了MAC和PHY,难度较高

  • 主芯片实现MAC功能,PHY则采用独立芯片,这是当前的主流方案

  • 主芯片不集成MAC和PHY,MAC和PHY均采用独立芯片,这种方案的成本较高,适用于某些高端应用

对于一个基于FPGA的千兆以太网设计来说,MAC部分的工作是由FPGA来完成,具体实现可以是自己写逻辑代码,或者直接调用官方的MAC IP核;而PHY芯片则一般采用独立的集成电路芯片实现。

2、什么是PHY?

PHY是物理层的芯片,它负责实现数据在物理层的传输功能。PHY芯片将数字信号转换为模拟信号,并把它发送到通信介质上;同时从接收的模拟信号中恢复出数字信号,再传输到上层芯片处理。

PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址、数据还是CRC校验值),然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去;收数据时的流程反之。

PHY芯片的主要作用是通过网络介质(例如双绞线或光纤)传输数据。具体地说,它需要完成以下任务:

  • 将数字信号转换为模拟信号,并输出到网络介质上

  • 监测网络介质上的信号质量,并根据需要调整发送功率、电流等参数

  • 从网络介质上接收模拟信号,并将其还原为数字信号

  • 根据协议规范和控制器芯片的指令,对接收到的数据进行错误检测、纠错、解码等处理

  • 将处理后的数据输出到MAC芯片或其他高层芯片进行进一步处理

常见的PHY芯片有LAN8742A、YT8531(D)H、RTL8211F、Marvell 88E1145等,以我手头这块开发板板载的YT8531(D)H为例,它的架构示意图如下:
在这里插入图片描述
架构看起来很复杂,但是和我们搞FPGA的关系不大。首先因为这是一个独立的集成芯片,其次PHY的主要部分都是模拟电路,所以我们并不需要深入了解PHY,只需要了解它的几个对外接口即可:

  1. RGMII接口:即Reduced Gigabit Media Independant Interface,精简吉比特MII接口,是MII接口的一种。MII(Media Independent Interface)接口是介质无关接口,MAC确实要发什么数据,PHY则决定数据收发的电气参数,而MII接口则是MAC和PHY之间传输数据的通道。MII接口有很多种类型,这里使用的RGMII接口是一种千兆网接口。关于MII接口的更多内容会在后面专门出一篇文章详细聊聊。

  2. MDIO接口:即Management Data Input/Output,管理数据输入输出接口,也称为 SMI 接口(Serial Management Interface,串行管理接口)。它的主要功能是对PHY内部的寄存器进行读取和配置,速率比较低,一般在10M以下,协议也比较简单。现在的PHY其实都设计得比较先进了,一般上电就可以直接使用,比不需要对内部寄存器进行多余的配置,除非一些特殊的需求。但为了确保PHY的稳定运行,有时候也需要定时读取PHY的一些状态寄存器来确定其处于正常的运行状态。关于MDIO接口的使用,也会在后面专门出一篇文章详细聊聊。

  3. MDI接口:即Medium Dependent Interface,介质相关接口。它连接的是物理层芯片即PHY和传输介质,也就是说发数据时,MAC把数据通过xMII接口传递到PHY,PHY进行编码等一系列处理后,通过MDI接口发送到传输介质,这样就把数据从主机传出去了;接收数据的过程类似。

3、什么是MAC?

以太网传输数据都是一帧一帧传,一帧数据各个部分代表什么含义都已经被定义好了,从以太网的帧结构我们就可以看出来MAC即数据链路层要完成什么工作:
在这里插入图片描述
以太网传输数据时按照上面的顺序从头到尾依次被发送和接收,我们下面进一步解释各个区域。

  • 前导码(Preamble):为了实现底层数据的正确阐述,物理层使用 7 个字节同步码(0 和 1 交替(55- 55-55-55-55-55-55))实现数据的同步。

  • 帧起始界定符(SFD,Start Frame Delimiter):使用 1 个字节的 SFD(固定值为 0xd5)来表示一帧的开 始,即后面紧跟着传输的就是以太网的帧头。 目的 MAC 地址:即接收端物理 MAC 地址,占用 6 个字节。

  • MAC 地址:从应用上可分为单播地址、组播地址和广播地址。单播地址:第一个字节的最低位为 0,比如 00-00-00-11-11-11,一般用于标志唯一的设备;组播地址:第一个字节的最低位为 1,比如 01-00-00-11-11-11,一般用于标志同属一组的多个设备;广播地址:所有 48bit 全为 1,即 FF-FF-FF-FF-FF-FF,它用于标志同一网段中的所有设备。 源 MAC 地址:即发送端物理 MAC 地址,占用 6 个字节。

  • 长度/类型:上图中的长度/类型具有两个意义,当这两个字节的值小于 1536(十六进制为 0x0600) 时,代表该以太网中数据段的长度;如果这两个字节的值大于 1536,则表示该以太网中的数据属于哪个上 层协议,例如 0x0800 代表 IP 协议(网际协议)、0x0806 代表 ARP 协议(地址解析协议)等。

  • 数据:以太网中的数据段长度最小 46 个字节,最大 1500 个字节。最大值 1500 称为以太网的最大传输 单元(MTU,Maximum Transmission Unit),之所以限制最大传输单元是因为在多个计算机的数据帧排队 等待传输时,如果某个数据帧太大的话,那么其它数据帧等待的时间就会加长,导致体验变差,这就像一 个十字路口的红绿灯,你可以让绿灯持续亮一小时,但是等红灯的人一定不愿意的。另外还要考虑网络 I/O 控制器缓存区资源以及网络最大的承载能力等因素,因此最大传输单元是由各种综合因素决定的。为 了避免增加额外的配置,通常以太网的有效数据字段小于 1500 个字节。

  • 帧检验序列(FCS,Frame Check Sequence):为了确保数据的正确传输,在数据的尾部加入了 4 个字节的循环冗余校验码(CRC 校验)来检测数据是否传输错误。CRC 数据校验从以太网帧头开始即不包含前 导码和帧起始界定符。通用的 CRC 标准有 CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在网络通信系统 中应用最广泛的是 CRC-32 标准。

首先MAC需要提供一个前导码,这个前导码是用来实现数据同步的。其次MAC要在一帧数据中添加上源MAC地址和目的MAC地址,因为以太网是一个多主机构成的星型结构,如果不添加上源地址和目的地址,那发出去的数据是没法找到对应的主机的,而且对应的主机也不知道要给谁回复。

因为以太网上层还可以跑IP协议/ARP协议等其他协议,所以需要用一段数据来标识这一帧数据的上层协议是什么。最后为了保证数据传输的正确性,需要添加上一个CRC校验值。

在以太网数据这一段,里面的数据并不完全是有效数据,它还可能包含了IP协议的首部和UDP协议的首部,以UDP协议为例,它的数据结构是这样的:
在这里插入图片描述
可以看到,在MAC的以太网帧的数据段,它是由IP首部+数据段组成。IP首部是实现IP协议的关键,它封装的是一些网络层的信息,比如源IP地址和目的IP地址等。IP层的数据段又可以分成UDP首部+数据段。UDP首部是实现UDP协议的关键,它封装的是一些传输层的信息,比如源端口和目的端口等。UDP协议再往上一层就是应用层了,这一层的数据才是原始数据。

MAC的实现一般就是用FPGA写逻辑,或者调用Xilinx的MAC IP核,后面的文章,我们主要是手撕代码实现MAC的功能,但是Xilinx的三速以太网IP核也尽量讲解一下。

4、什么是网络变压器?

当PHY芯片发送数据,接受到MAC层发送过来的数字信号,然后转换成模拟信号,通过MDI接口传输出去。但是我们的网线传输的距离又很长,有时候需要送到100米甚至更远的地址,那么就会导致信号的流失。而且外网线与芯片直接相连的话,电磁感应和静电,也很容易导致芯片的损坏,所以就要使用网络变压器,其主要作用是:

  • 传输数据,它把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到不同电平的连接网线的另外一端

  • 隔离网线连接的不同网络设备间的不同电平,以防止不同电压通过网线传输损坏设备

  • 还能使芯片端与外部隔离,抗干扰能力大大增强,而且对芯片增加了很大的保护作用,保护PHY免遭由于电气失误而引起的损坏(如雷击)

从理论上来说,可以不需要接变压器,直接接到RJ45上也是能正常工作的。但是传输距离就很受限制,而且当接到不同电平网口时,也会有影响。而且外部对芯片的干扰也很大。

5、什么是RJ45?

以太网通信离不开连接端口的支持,网络数据连接的端口就是以太网接口。以太网接口类型有 RJ45 接口、RJ11 接口(电话线接口)、SC 光纤接口等。其中 RJ45 接口是我们现在最常见的网络设备接口 (如:电脑网口)。

RJ45 接口俗称“水晶头”,专业术语为 RJ45 连接器,由插头(接头、水晶头)和插座(母座)组成, 属于双绞线以太网接口类型。RJ45 插头只能沿固定方向插入,设有一个塑料弹片与 RJ45 插槽卡住以防止脱落。其示意图如下:
在这里插入图片描述
RJ45 接口定义以及各引脚功能在不同通信速率下的定义有区别,下图是在 10M/100M 通信速率下 的定义,RJ45 插座只使用了 1、2、3、6 这四根线,其中 1、2 这组负责传输数据(TX+、 TX-),而 3、6 这组负责接收数据(RX+、RX-),另外四根线是备用的。
在这里插入图片描述
而在 1000M 的通信速率下,RJ45 插座的 8 根线都有用到,且都是双向引脚。需要说明的是,支持千兆网通信的 RJ45 接口是向下兼容的,即也支持 10M/100M 通信速率,只不过不同的通信速率,其引脚功能有区别。千兆网各引脚功能如下图所示:
在这里插入图片描述
因为网络连接器和变压器实现起来相对比较简单,所以现在很多RJ45插座都集成了网络变压器的功能,比如我手头开发板所用的RJ45型号是HR 911131A,它就同时具备网络变压器的功能:
在这里插入图片描述
RJ45 座子上一般有两个灯用来指示PHY的运行状态,这两个灯的信号是从PHY来的。一般一个黄色(橙色),一个绿色,绿色亮的话表示网络连接正常,黄色闪烁的话说明当前正在进行网络通信,黄灯闪动频率快表示网速好。

6、什么是传输介质

简单来说,传输介质就是“网线”,它是以太网不同主机之间传输信息的载体。传输介质可以分为有线介质和无线介质,常见的无线介质就是电磁波,比如WIFI和手机等;而以太网则是一种有线协议,它使用的都是有线介质。

常见的以太网传输介质有3种:

  • 同轴电缆(Coaxial)

  • 双绞线(Unshield Twisted Pair,UTP)

  • 光纤(Fiber Optic)

根据不同的传输速度和距离要求,基于这三类介质的信号线又衍生出很多不同的种类。最常用的是“五类线”适用于 100BASE-T和 10BASE-T 的网络,它们的网络速率分别为 100Mbps 和 10Mbps。以太网有许多不同的标准,速度从 10 Mbps(兆比特每秒)到 100 Gbps(千兆比特每秒)。以下是一些流行的以太网标准的概述:
在这里插入图片描述
不同的标准是由不同的名字组合而成:

  • 10/100/1000: 数字100用单位MHz (Megahertz)表示网线设计的频率。即100 MHz。MHz的值越大,网线所支持的速度就越快。如果你尝试将这种类型的网线用于更高的频率(和速度)中,那么它将不工作或者变得极为不可靠。100 MHz以每秒100Mbit的速度传输,这在理论上指的就是12 Mbps。然而,在实际中,可能还无法获得超过4 Mbps。

  • BASE: BASE是英文baseband的缩写,指的就是基带。表示没有使用频分复用或者其它频率转换技术,每一个信号在一个单一频率上完全控制线缆。

  • 数字T/F/C等: 一般数组表示传输长度;T代表承载信号的物理介质是双绞线缆(分为UTP(Unshielded Twisted Pair,非屏蔽双绞线)和STP(Shielded Twicted Pair,屏蔽双绞线)),在这里每一对传送信号的双绞线互相缠绕以(FEXT和NEXT之间)减少电磁干扰和串扰;F表示光纤。

  • 最后的字母或数字(4/X等): 在同一种传送速率下有多种不同的标准,它们之间以一个字母或数字跟随T/F/C之后的方式来区隔(例如TX)。它显示了网线的结构并指出包含的绞线对的数量。某些高速标准使用同轴电缆,则分配代号为CX。

6.1、同轴电缆

同轴电缆是由一对导体组成的,但它们是按“同轴”形式构成线对。同轴电缆以单根铜导线为内芯,外裹一层绝缘材料,覆密集网状导体,最外面是一层保护性塑料,金属屏蔽层能将磁场反射回中心导体,同时也使中心导体免受外界干扰。故同轴电缆比双绞线具有更高的带宽和更好的噪声抑制特性。同轴电缆结构如下图所示。最里层是内芯,向外依次是绝缘材料层,屏蔽层和塑料外皮,内芯和屏蔽层构成一对导体。
在这里插入图片描述
广泛使用的同轴电缆有两种:一种为50Ω(指沿电缆导体各点的电磁电压对电流之比)同轴电缆,用于数字信号的传输,即基带同轴电缆;另一种为75Ω同轴电缆,用于宽带模拟信号的传输,即宽带同轴电缆。

同轴电缆主要用于10M以太网也就是标准以太网的传输,主要代表是两个标准:10BASE5和10BASE2。10BASE5 又称粗缆(Thick Ethernet)或黄色电缆;10BASE2又称细缆(Thin Ethernet)或模拟网络。现在同轴电缆在以太网的应用中已经是非常少了。

6.2、双绞线

双绞线是最常用的传输介质,双绞线芯一般是铜质的,具有良好的传导率,既可以用于传输模拟信号,也可以用于传输数字信号。

双绞线分为屏蔽双绞线(ShieldedTwisted Pair,STP)和非屏蔽双绞线(UnshieldedTwisted Pair,UTP)。非屏蔽双绞线用线缆外皮层作为屏蔽层,适用于网络流量不大的场合中。屏蔽双绞线是用铝箔将双绞线屏蔽起来,对电磁干扰具有较强的抵抗能力,适用于网络流量较大的高速网络协议应用。结构示意图如下所示。
在这里插入图片描述
双绞线根据性能可分为3类,5类,6类和7类。3类无屏蔽双绞线能够承载的频率带宽是16MHz;5类无屏蔽双绞线其频率带宽为100MHz,能够可靠地运行4MB、ICME和16MB的网络系统。6类、7类双绞线分别可工作于200MHz和600MHz的频率带宽之上,且采用特殊设计的RJ45插座。当运行100M以上的以太网时,也可以使用屏蔽双绞线以提高网络在高速传输时的抗干扰特性。

  • StarLAN是第一个双绞线上实现的以太网络标准10 Mbit/s,后发展成10BASE-T,以及100BASE-TX和1000BASE-T。

  • 10BASE-T使用两对非屏蔽双绞线,一对线发送数据,另一对线接收数据,用RJ-45模块作为端接器,星形拓扑结构,信号频率为20MHz,必须使用3类或更好的UTP电缆。

  • 100base-T称Fast Ethernet(快速以太网),是许多以标称速率100 Mbit/s(较早的以太网速度为10 Mbit / s)传输流量的以太网标准的统称。在快速以太网标准中,100BASE-TX是最常见的。

  • 1000BASE-T采用四对五类平衡电缆的1000 Mb/s 物理层规格。与10Base-T、100Base-T完全兼容。前面两种标准有两根线对,一根用于传输,另一根用于接收。然而,1000BASE-T使用所有 4 对线。它不是使用不同的线对进行传输/接收,而是能够在每个线对上同时发送和接收。

6.3、光纤

光纤是光导纤维(FiberOptic)的简称。光导纤维是软而细的、利用内部全反射原理来传导光束的传输介质。它由能传导光波的超细石英玻璃纤维外加保护层构成,多条光纤组成一束,就可构成一条光缆。光纤有单模和多模之分,单模(即Mode,入射角)光纤多用于通信业;多模光纤则多用于网络布线系统。
在这里插入图片描述
光纤为圆柱状,由3个同心部分组成:纤芯,包层和护套,每一路光纤包括两根,一根接收,一根发送。与同轴电缆比较,光纤可提供极宽的频带且功率损耗小、传输距离长(2千米以上).传输率高(可达数千Mbps)、抗干扰性强,是构建安全性网络的理想选择。

不同于在铜线中使用电脉冲传输信息,在光纤中使用光脉冲传输信息。光纤和电传输介质相比有几个优点,如更快的数据传输速率、更高的信道容量(每次传输更多的信号),以及更可靠的长距离传输和光纤不易受电磁干扰的影响。光纤的主要缺点是成本高,要比同轴电缆、UTP和STP的成本都高。 光纤通常用作电信领域和网络互连的介质。因为和电缆相比,通过光纤传输的光的衰减很小,所以光纤适用于长距离传输。通常,光纤的数据传输速率可达10~40Gbps,甚至可以超过100Gbps。

常见的使用光纤作为传输介质的以太网标准有100BASE-FX、100BASE-SX、100BASE-LX等。

在 Linux 系统中,以太网架构MACPHY 组件分别承担数据链路层和物理层的功能。理解它们的工作原理及配置方法对于调试网络连接、优化性能以及开发嵌入式系统具有重要意义。 ### MAC 的工作原理与配置 MAC(Media Access Control)是负责处理数据帧格式化、地址识别以及介质访问控制的核心组件。它位于 OSI 模型的数据链路层,主要职责包括: - 将上层协议传递下来的数据封装成帧,并添加源 MAC 地址和目标 MAC 地址。 - 检查接收到的帧是否完整(例如通过 CRC 校验),并决定是否将帧传递给上层协议栈。 - 实现 CSMA/CD(载波侦听多路访问/冲突检测)机制,在半双工模式下避免多个设备同时发送数据导致的冲突。 Linux 内核中的 MAC 控制器通常由驱动程序实现,这些驱动程序一般位于 `/drivers/net/ethernet` 目录下。例如,STM32 平台使用 `stmmac` 驱动,而 TI 的 AM33xx 使用 `cpsw` 驱动。驱动程序需要根据硬件特性初始化 MAC 寄存器,设置 MAC 地址、传输模式(全双工或半双工)、速率等参数[^1]。 #### 配置 MAC 的方法: - 通过 `ethtool` 命令查看和修改接口的 MAC 地址和链接状态: ```bash ethtool -P eth0 ``` - 修改内核启动参数或设备树(Device Tree)来配置 MAC 地址和 MII 接口类型: ```dts &mac { status = "okay"; phy = <&phy>; duplex = "full"; speed = <100>; }; ``` ### PHY 的工作原理与配置 PHYPhysical Layer)是负责将数字信号转换为可在物理媒介上传输的电信号的组件。它处理的是比特流级别的通信,包括编码、解码、时钟恢复等功能。常见的 PHY 芯片有 Realtek RTL8201、TI DP83848 等[^2]。 PHY 通过 MII(Media Independent Interface)或其变种(如 RMII、GMII)与 MAC 连接,并通过 SMI(Serial Management Interface)接受管理命令。SMI 允许 MACPHY 的寄存器进行读写操作,从而配置自动协商(Auto-negotiation)、速度、双工模式等关键参数[^3]。 #### 配置 PHY 的方法: - 利用 `mii-tool` 或 `ethtool` 工具手动设置链接模式: ```bash ethtool -s eth0 autoneg off speed 100 duplex full ``` - 在设备树中指定 PHY 类型、地址和连接方式: ```dts &mdio { status = "okay"; phy0: ethernet-phy@0 { reg = <0>; }; }; ``` - 自动协商功能可以通过内核配置启用或禁用,确保两端设备能够正确匹配速度和双工模式。 ### MACPHY 的协同工作机制 在实际运行过程中,MACPHY 协同完成完整的以太网通信过程。当应用程序发送数据时,TCP/IP 协议栈生成 IP 数据包,经过链路层封装后形成以太网帧,交由 MAC 发送。MAC 通过 MII 接口将帧传递给 PHYPHY 再将其转换为适合在电缆上传输的差分信号。 接收方向则相反:PHY 从线路上捕获比特流,解码后形成以太网帧并通过 MII 返回给 MAC。随后,MAC 检查帧完整性并将有效数据提交至协议栈处理。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值