基于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,只需要了解它的几个对外接口即可:
-
RGMII接口:即Reduced Gigabit Media Independant Interface,精简吉比特MII接口,是MII接口的一种。MII(Media Independent Interface)接口是介质无关接口,MAC确实要发什么数据,PHY则决定数据收发的电气参数,而MII接口则是MAC和PHY之间传输数据的通道。MII接口有很多种类型,这里使用的RGMII接口是一种千兆网接口。关于MII接口的更多内容会在后面专门出一篇文章详细聊聊。
-
MDIO接口:即Management Data Input/Output,管理数据输入输出接口,也称为 SMI 接口(Serial Management Interface,串行管理接口)。它的主要功能是对PHY内部的寄存器进行读取和配置,速率比较低,一般在10M以下,协议也比较简单。现在的PHY其实都设计得比较先进了,一般上电就可以直接使用,比不需要对内部寄存器进行多余的配置,除非一些特殊的需求。但为了确保PHY的稳定运行,有时候也需要定时读取PHY的一些状态寄存器来确定其处于正常的运行状态。关于MDIO接口的使用,也会在后面专门出一篇文章详细聊聊。
-
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等。

1万+

被折叠的 条评论
为什么被折叠?



