前言:
以太网是一种计算机局域网通信技术,主要由介质访问层(MAC L2) 协议、物理层(PHY L1)协议、电子信号连接组成。
MAC层主要有交换芯片实现,物理层由PHY芯片实现,电信号连接主要定义电信号的接口规范。
经过几十年的发展,以太网技术技术已经x相当成熟,在计算机通信领域也得到相当的广泛应用。
本文以成熟的以太网的技术实现为案例,来解读数字通信的部分基本原理,澄清数字通信中一些核心的概念 :时钟、4B/5B编码、曼切斯特编码、NRZI编码、符号、波特率、比特率、CRC、扰码。
并把关注的重点放在以太网物理层的协议规范。
在本案例中,
信源信息发送-》离散数据-》信源编码-》应用层数据处理-》网络层编码-》物理层信道编码-》电气信号符号编码-》电信号发送=》
电信号接收=》电气信号符号解码-》物理层信道解码-》网络层编码-》应用层数据处理-》信源解码-》信宿信息感知
整个过程,均为二进制离散数据处理,因此本文案例是一个纯数字通信的案例。
以太网串行通信与Uart串口通信、I2C串行通信、SPI串行通信等串行通信,有两个显著的差别:
(1)需要传输的物理层帧中的二进制数据与物理线路上传送的信号电平之间是不再是1对1的映射关系。
(2)不需要专门的时钟信号线在两个通信的节点之间传递时钟,而是通过特定的物理层的编码技术,实现在传输数据的同时,也同时能够传递同步时钟。
(3)支持远程传输的数字编码技术
本文将重点阐述这这三种技术方法。
目录
第1章 什么是以太网数字通信
1.1 标准以太网
1.2 快速以太网
1.3 千兆以太网
1.4 10Gbps以太网
1.5 40G/100Gbps以太网
第2章 以太网数字通信案例的需求架构
第3章 以太网数字通信的软硬件实现方案
3.1. 协议栈
3.2. 软硬件架构与软硬件分工
3.3. 以太网协议规范
第4章. 以太网MAC+PHY+线路层的通信模型
第5章. 信源对信息的发送过程及其关键性原理
5.1. 信源:
5.2. 离散的二进制数据
5.3. 网络层编码
5.4. 物理层编码
5.4.1 RTL8201 10M以太网的通信原理
5.4.1.1 PCS子层(Physical Coding Sublayer):物理层编码子层
(1). PCS子层与MAC层的物理接口
(2). PCS子层的包结构
(3). PCS子层的编码
5.4.1.2 PMA子层:物理介质连接子层
(1). 发送方向是并串转换,接收方向是串并转换
(2). 物理层信号编码
(3). 物理链路时钟的合成/恢复。
5.4.2 RTL8201 100M以太网通信的原理
5.4.2.1 PCS子层(Physical Coding Sublayer):物理层编码子层
(1). 与MAC层的物理接口
(2)物理层帧的发送
(3)物理层帧的接收
(2). PCS子层包的结构
(3). PCS子层的编码
5.4.2.2 PMA子层:物理介质连接子层
5.4.2.3 PMD子层
第6章 信道对信息的传输过程
第7章 信宿对信息的接收过程及其关键原理
7.1 以太网的解码过程
7.2 信宿的接收过程
第1章 什么是以太网数字通信
以太网是一种基带、局域网技术,
以太网通信是一种使用同轴电缆或光纤作为传输信道,采用载波多路访问和冲突检测机制的通信方式。
数据传输速率高达到10M、100M、1Gbit/s, 10Gbit/s, 25Gbit/s、100G, 可满足非持续性网络数据传输的需要。
10GBASE-CX4 -- 短距离铜缆方案用于InfiniBand4x连接器和CX4电缆,最大长度15米。
10GBASE-SR -- 用于短距离多模光纤,根据电缆类型能达到26-82米,使用新型2GHz多模光纤可以达到300米。
10GBASE-LX4 -- 使用波分复用支持多模光纤240-300米,单模光纤超过10公里。
10GBASE-LR和10GBASE-ER -- 透过单模光纤分别支持10公里和40公里
10GBASE-SW、10GBASE-LW、10GBASE-EW。用于广域网PHY、OC-192 / STM-64同步光纤网/SDH设备。物理层分别对应10GBASE-SR、10GBASE-LR和10GBASE-ER,因此使用相同光纤支持距离也一致。(无广域网PHY标准)
10GBASE-T-- 使用屏蔽或非屏蔽双绞线,使用CAT-6A类线至少支持100米传输。CAT-6类线也在较短的距离上支持10GBASE-T。
40GBASE-KR4 -- 背板方案,最少距离1米。
40GBASE-CR4 / 100GBASE-CR10 -- 短距离铜缆方案,最大长度大约7米。
40GBASE-SR4 / 100GBASE-SR10 -- 用于短距离多模光纤,长度至少在100米以上。
40GBASE-LR4 / 100GBASE-LR10 -- 使用单模光纤,距离超过10公里。
100GBASE-ER4 -- 使用单模光纤,距离超过40公里。
虽然,以太网支持上述各种速率和物理层接口规范,但从通信的角度来看,基本原理是相似的,是一脉相承的。
第2章 以太网数字通信案例的需求架构
为了重点介绍以太网物理层协议,本案例的两个对等的以太网终端,跳过中间的以太网交换机,直接采用点对点连接。
帅哥A与美女B不再通过RS232串口相连,而是通过以太网相连。
目标:
帅哥A通过以太网向美女B发送一条二进制消息:0x0049 0x0020 0x004c 0x0006f 0x00076 0x0065 0x0020 0x0059 0x006f 0x0075。
对应的ASCII码字符是:I Love You
第3章 以太网数字通信的软硬件实现方案
帅哥A发送的数据,封装(编码)过程如下:
应用层数据编码=》HTTP层数据编码=》TCP层数据编码=》IP层数据编码=》MAC层数据编码=》物理层数据编码=》物理层电信号发送=》
美女接受的数据,拆封(解码)过程如下:
物理层电信号接收=》物理层数据解码=》MAC层数据解码=》IP层数据解码=》TCP层数据解码=》HTTP层数据解码=》应用层数据解码。
至于MAC层以上(IP以及IP之上)的编码和解码过程,不在本文的讨论范围。
本文重点放在MAC+PHY+线路接口层,特别是物理层的编解码过程。
IEEE802.3标准给出了以太网的MAC层和物理层的协议规范
第4章. 以太网MAC+PHY+线路层的通信模型
下面,将详细介绍上述过程的每个环节,以及每个环节中涉及到的通信原理中的关键技术。
第5章. 信源对信息的发送过程及其关键性原理
这里的信源就是计算机A。
信源需要发送的离散的二进制数据: 0x0049 0x0020 0x004c 0x0006f 0x00076 0x0065 0x0020 0x0059 0x006f 0x0075。
对应的ASCII码字符是:I Love You
IP以及IP之上,不在本章的讨论范围,本章讨论MAC以及MAC层之下的协议规。
(1)探讨前的概念澄清:
MAC层:称为帧(frame)
物理层:并行数据称为包(package)
物理层:串行数据称为流(stream)
(2)MAC层帧结构
也叫物理地址、硬件地址,由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM(一种闪存芯片,通常可以通过程序擦写)。
MAC地址的长度为48位(6个字节),通常表示为12个16进制数,如:00-16-EA-AE-3C-40就是一个MAC地址,其中前6位16进制数00-16-EA代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后6位16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号。只要不更改自己的MAC地址,MAC地址在世界是惟一的。形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性。
目的地址:数据的接收方(信宿)的MAC地址。
源地址:数据的发送方(信源)的MAC地址
由于在传输一个字节时最低位最先传输(LSB),因此其相应的16进制表示为:0xD5
备注:
UART、I2C、SPI总线通信,是通过特定的物理信号(pin脚)物理层帧同步。
而以太网串行总线没有这些信号,怎么进行帧同步呢? 就只能通过特定的二进制比特串来进行帧同步了!!!
这里还有一个同样的问题,以太网帧的净荷正巧也有该数据怎么办呢?
MAC层和物理层之间通过Tx_EN和Rx_EN来传递以太网帧的开始。
两个对等的两个物理层实体之间,通过物理层的4B/5B编码表明以太网帧的开始和结束,而这两个编码,是不同于数据域中的任何数据的4B/5B编码。
由于在传输一个字节时最低位最先传输(LSB),因此其相应的16进制表示为:0x55 0x55 0x55 0x55 0x55 0x55 0x55
这个连续的56个二进制比特流,用于接收方与发送方的二进制比特时钟同步。
用于MAC层与物理层之间的同步。
备注:
UART、I2C、SPI总线通信,是通过特定的物理信号(pin脚)进行时钟同步的。
而以太网串行总线没有这些信号,怎么进行时钟呢? 就只能通过特定的二进制比特串来进行时钟同步了!!!
这里有一个问题,以太网帧的净荷真巧也有该数据怎么办呢?
CRC校验序列的添加是
在数据传输过程中,无论传输系统的设计再怎么完美,差错总会存在,这种差错可能会导致在链路上传输的一个或者多个帧被破坏(出现比特差错,0变为1,或者1变为0),从而接受方接收到错误的数据。为尽量提高接受方收到数据的正确率,在接收方接收数据之前需要对数据进行差错检测,当且仅当检测的结果为正确时接收方才真正收下数据。
检测的方式有多种,常见的有奇偶校验、和循环冗余校验等。
前一篇讨论过,Uart/RS232串口通信采用的就是有奇偶校验。
循环冗余校验(Cyclic Redundancy Check, CRC):是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。
以太网通信采用CRC32作为以太网MAC帧数据净荷的检错码。
注意:FCS值针对以太网MAC帧的净荷部分,包括MAC地址+数据净荷,不包括以太网MAC层帧的同步字和帧定界符SFD。
简单的说,物理层编码是确保原始的MAC层数据可在多种物理媒体上、安全、可靠的传输。
以太网物理层又分为3个子层和2个接口
(1)两个接口:
Medium Independent Interface (MII): 介质无关接口。提供公共接口,屏蔽多个物理层的不同细节。这是数字MAC层与数字物理层的接口。
Medium Dependent Interface (MDI): 介质相关接口。到传输介质的接口,如100M电口和1000M电口或1000M光口等。这是数字物理层与物理信号媒介的接口(光、电信号)。
(2)三个子层:
Physical Coding Sublayer (PCS): 物理编码子层。完成物理层编码/解码功能
Physical Medium Attachment sublayer (PMA):物理介质连接子层。执行并串转换和串并转换功能。
Physical Medium Dependent sublayer (PMD): 物理介质相关子层。电信号转换到特定介质上或反向转换(光电转换、电电转换)
(3)常见以太网Phy层芯片
品牌 | 物料名称 | 速率 | MAC Interface | Media types: | 封装大小 | 制造等级 |
Broadcom | 100BASE-TX | |||||
BCM89810 | 10/100Mbps | 100BASE-T1 | ||||
BCM89610 | 10/100/1000Mbps | MII/RGMII | 10BASE-T/100BASE-TX/1000BASE-T | AEC-Q100 Grade 1 | ||
BCM89881 | 1000BASE-T1 | |||||
BCM89838 | 1000BASE-T1 | |||||
Marvell | 88Q1010 | 10/100/1000Mbps | MII/RMII/RGMII | 100BASE-T1 | QFN,40-pin,6*6mm | AEC-Q100 Grade 2 |
88E1512 | 10/100/1000Mbps | RGMII/SGMII | 10Base-T/100Base-TX/1000Base-T/ SFP/100Base-FX/1000Base-X | QFN,56-pin | Industry | |
88Q211X | 10/100/1000Mbps | RGMII/SGMII | 100BASE-T1/1000BASE-T1 | QFN,40-pin | ||
NXP | TJA1101 | 100Mbps | RMII | 100BASE-T1 | HVQFN,32-pin,6*6mm | ISO26262 ASIL-A |
Microchip | KSZ8061 | 10/100Mbps | MII | 10BASE-T/100BASE-TX | QFP,32-pin,5*5mm | |
KSZ8081 | 10/100Mbps | MII | 10BASE-T/100BASE-TX | LQFP,48-pin,7*7mm | ||
KSZ9031 | 10/100/1000Mbps | GMII/MII | 10Base-T/100Base-TX/1000Base-T | QFP,64-pin,8*8mm | ||
TI | DP83848QSQ | 10/100Mbps | MII/RMII | 10BASE-T/100BASE-TX | WQFN,40-pin,6*6mm | AEC-Q100 Grade 2 |
Realteck | RTL8201 | 10/100Mbps | MII/7-wire SNI | 10BASE-T/100BASE-TX/100BASE-FX | LQFP,48-pin | |
Atheros | AR8031 | 10/100/1000Mbps | RGMII/SGMII | 10BASE-Te/100BASE-TX/1000BASE-T | QFN,48-pin,6*6mm | Industry |
AR8035 | 10/100/1000Mbps | |||||
不同以太网速率,其物理层的协议规范是不一样的。
不同厂家的芯片,在实现以太网物理层协议规范时,也是有差别。
接下来,将以古老的RTL8201 10/100M PHY芯片为例,由简单到复杂,有浅入深的介绍物理层的通信原理:
其他更加复杂的功能实现,基本是基于此原理的升级与扩展。
(4) 802.3 物理层功能栈
(5)RTL8201功能架构
在上图中,10M和100M的功能实现是完全不同的电路。
绿色框标注的是10M的功能实现。
红色框标注的是100M的功能实现
接下来,将详解其功能。
PCS子层的功能是物理层的编码/解码。包括三部分:
(1)与MAC层的接口
(2)物理层包的结构
(3)物理层的编码
TXD0、RXD0:是串行数据接口, 10M速率时,物理层芯片无需要进行串并转换,串并转换是MAC完成的。
TXC和RXC: 接收和发送时钟。
COL (I): 冲突检测的输入,表明MAC层检测到了冲突。
CRS(O): 载波检测,用于PHY向MAC指示,链路上是否有数据正在发送。
TXEN: MAC发送数据指示。
10M速率是,物理层包的结构与MAC层的帧结构是一致的
物理层编码一个重要的功能就是把原始的物理层帧数据,编码成适合物理线路传输的二进制数据。
在10M通信的情况下,物理层芯片并没有对物理层进行某种物理层编码,比如4B/5B编码或8B/10B编码。
PMA的功能包括
(1)发送方向是并串转换,接收方向是串并转换
(2)物理层信号编码
(3)物理链路时钟的合成/恢复。
PMA从PCS接收串行bit流,然后发送到PMD层。
PMA使用数字锁相环PLL,在发送端根据标准时钟接口发送bit流,在接收端PLL同步串行数据流并从中提取时钟。
在10M速率下,无并串转换,与MAC层的接口MAC本身就是串行数据。
物理层信号编码:即如何通过物理层的电信号传递0和1的二进制数据流。
常见的编码有两大类:不归零码和归零码。
不归零码:是信号电平在一个码元之内都要不恢复到零的编码方式。在不归零码中,高电平代表1, 0电平本身就表示0,因此不能归0.
归零码 :是信号电平在一个码元之内都要恢复到零的编码方式。在归零码中,高电平和低电平不表示任何数值,而是利用信号的上升沿或下降沿表示0或1,因此可以归零。
在SPI和I2C通信中,通过CMOS或TTL高低电平传送1和0。高电平代表1,低电平代表0,
在UART通信中,与SPI和I2C相同。
在RS232通信中,采用了反逻辑以及15V电压。+15V电信号表示0, -15V电信号表示1.
这些编码方式都称为不归零码。
其中SPI, I2C, Uart串口通信的编码方式称为:单极性不归零0码,单极性指只有正(+)电平。
RS232串口通信的编码方式称为双极性不归0码。双极性是指正(+)电平与负(-)电平。
如下图所示:(a)就是单极性不归零码,(b)双极性不归零码。
相对于前面提到的几种电信号编码方式,在10M以太网中,采用了一种新的物理层信号编码方法:曼彻斯特编码!
曼彻斯特编码(Manchester)又称裂相码、同步码、相位编码,它是一种归零的编码方式, 用电平跳变来表示1或0的编码方法。
之所以要归零:主要是因为归零后既不标识0,也不表示为1,而是表示没有数据。在远程串行通信中是很有必要的。因为接收方和发送方是分离的。
Uart是通过双极性编码空闲位解决这个问题的,而以太网通过归零码解决这个问题。
其变化规则很简单:
这里也有两种码元,但每个码元不是用简单的高电平或低电平,每个码元symbol(代表0或1的电信号)均用两个不同相位的电平信号(高电平+低电平)表示。
实际上,每个码元是一个完整的方波信号(有高电平,也有低电平),这里就有两种方式来定义方波信号。
(A) G.E. Thomas曼切斯特编码(又称为标准曼切斯特编码)----类似相位调制
0度相位的方波(类似正弦波)表示“1”,
180相位的方波(类似余弦波)表示“0”.
(B) 802.3 曼切斯特编码(简称为曼切斯特编码)
0度相位的方波(类似正弦波)表示“0”,
180相位的方波(类似余弦波)表示“1”.
正好与标准曼切斯特编码相反。
如下是用两种不同的曼彻斯特编码表示的一连串的二进制码1010 0111 001的示意图:
从上图示意可以看出:
在两种曼彻斯特编码中,每个比特位的中间都有一次跳变,用跳变的方向表示0或1。差别在于上升沿和下降沿表示的数字正好相反。
并用中间的跳变表示要(1)传输的二进制数据,(2)同时中间的跳变又可以作为时钟信号。
(C)差分曼彻斯特编码
还有一种差分曼彻斯特编码,它是曼彻斯特编码的改进。
在差分曼彻斯特编码中,每个比特位的中间也有一跳变。
但中间的跳变不表示要传输的二进制数据,中间的跳变仅仅作为时钟信号。
差分曼彻斯特编码的特别之处在于,它不是用固定的波形标识0或1,而是使用了相邻的两个波形符号的变化来标识0或1。
不管前一个波形符号是“类正弦的方波”,还是“类余弦的方波”,
如果后一个波形符号symbol和前一个的波形符号symbol相同,则表示0,如下图所示,这样标识“0”的波形符号(symbol)就不是唯一的。
如果后一个波形符号(symbol)和前一个的波形符号(symbol)不同,则表示1,如下图所示,这样标识“1”的波形符号(symbol)就不是唯一的。
这种编码方式,规避了Thomas曼切斯特编码与802.3 曼切斯特编码,使用固定波形标识0或1的问题。
如下是三种曼切斯特编码的比较:
上述三种曼切斯特编码方式,每个时钟位都必然有一次变化,所以这三种编码的效率仅可达到50%左右,这是曼切斯特编码的缺点。
但优点也是和明显的,就是不需要独立的时钟线传输时钟。
结论:
按照无论是数据0还是数据1,都是通过一个完整周期的正弦或余弦信号(当然,也可以说是方波)承载的。
如上描述的,在发送端,在时钟的驱动下,按照曼切斯特编码的数据,本身就内含的发送端的时钟频率。
从上图可以看出,时钟信号是一个方波信号,在数据0或1的电平期间,包含了一个完整的时钟方波信号,一个方波信号是一个高电平,一个低电平的组合。
时钟信号的周期正好于承载数据0或数据1的类正弦与类余弦的方波信号的周期是一样的,即频率是一样的。
通过曼切斯特编码,通信的发送端和接收端,即不需要专门的时钟信号线来传递时钟信息了。
接收端通过数字锁相环,从链路中恢复发送端发送二进制比特的时钟信号的频率与相位,且能够完全同步。
至此10M数据速率的通信方式下,二进制比特就可以通过物理信号进行发送了
PCS子层的功能是物理层的编码/解码。包括三部分:
(1)PCS子层与MAC层的接口
(2)PCS子层的包结构
(3)PCS子层的编码
从上图,可看出, MII接口,物理层与MAC层之间是4比特的并行数据,而不是串行数据。
之所以是4比特的并行数据,与紧接着介绍的4B/5B编码有很大的关系。
物理层的包结构与MAC层的帧结构是一致的。
物理层编码一个重要的功能就是把原始的物理层帧数据,编码成适合物理线路传输的二进制数据,主要用于链路控制、检错、纠错和差错后的重传。
相对于10M速率的物理链路,100M的速率,二进制数据的速率整整提升了10倍,导致每个通信节点之间的干扰也会增加、受到线路噪音的干扰的影响也急剧的增加,因此需要一定的数据编码,用来进行链路控制、检错、纠错和差错后的重传。
从上图中,可以看出,相对于10M速率,增加了4B/5B编码/解码、扰码/解扰。
(A)4B/5B编码和解码
4B/5B编码方案是把4比特的二进制数据转换成5比特二进制数据的编码方案。
这种编码的特点是将欲发送的数据流每4比特作为一个组,然后按照4B/5B编码规则将其转换成相应5比特的编码。
5比特的码共有32种组合:
其中16种组合用于承载4比特的数据。
其他的16种组合用作链路控制码或保留使用,如表示帧的开始和结束、物理线路的状态(静止、空闲、暂停)等。
如下是以太网4B/5B数据码映射表:
4比特的0000被编码成了5比特的11110;
4比特的1111被编码成了5比特的11101;
数据的编码效率=4/5 = 80%, 即80%的编码效率。
4B/5B编码,还有一个重要的特性:即使原始的4比特的数据有4个全0或有3个0,编码后的5B的数据中,0的个数最多也就是2个。
如:
0000被编码成了11110 =》4个1,1个0
0001被编码成了10101 =》3个1, 2个0
如下是以太网4B/5B控制码编码表:
11111: 用于物理层数据流之间的填充字符,表示空闲状态,无有效数据,主要用于维持链路时钟同步。
11000/10001:物理层数据流的开始标志,MAC层帧的前导码的第一个字节被映射成此5B编码。
01101/00111:物理层数据流的结束标志。没有MAC层帧的相应比特域与之对应,与TX_EN和RX_DV对应。
发送数据时,MAC层与PHY层之间的电信号TX_EN由高电平变成低电平,则自动转换成物理层数据流的结束标志。
接收数据时,物理层收到该物理层数据流的结束标志,自动把MAC层与PHY层之间的电信号RX_DV由高电平变成低电平,通知MAC层数据传送完成。
4B/5B编码的好处:
PCS子层数据流的结构(4B/5B编码后的物理层的比特流)
上述5B控制码,对MAC层不可见,终止于PCS子层。
(B)加码(Scrambling)和解码
加扰是数字信号的加工处理方法,就是用二进制扰码与原始二进制数据相乘,从而得到新的二进制数据。
与原始二进制相比,新的二进制在时间上被打散。
一般来说,数字通信系统的设计及其性能都与所传输的数字信号的统计特性有关。
通过加扰技术,在不增加新的数据比特的情况下,扰乱原有数据的比特顺序,改变数字信号统计特性,使其近似于白噪声统计特性。这种技术的基础是建立在反馈移存器序列(一种伪随机序列)的理论基础之上。
PMA的功能包括
PMA从PCS接收并行比特流,然后转换成串行比特流发送到PMD层。
PMA使用数字锁相环PLL,在发送端根据标准时钟接口发送二进制比特流,在接收端PLL同步串行二进制流从中提取时钟。
(1)并串转换
这个没有什么可以多说的,就是5比特的并行数据,转换成1bit的串行数据,用于线路发送。
(2)物理层信号编码
在10M速率的情况系,采用的是曼切斯特编码,即用一个完整的正弦波或余弦表示的方波信号表示0或1,这种编码方案的优点是,在传输数据的同时,能够通过归零产生的边沿信号来传递时钟周期,不需要专门的时钟信号在收发双方传输时钟信号。
但缺点也是很明显的,归零导致,编码后信号的频率是编码前的数据频率的2倍,即编码效率只有50%。
有没有一种不归零的编码方法,既能够传送时钟信号,也能够传送数据,且信号的编码效率100%呢?很显然目前没有找到。
采用归零码NRZ编码的I2C、SPI串行通信,信号的周期与二进制数据的周期是完全对应的,编码效率达到100%,然而,串行通信的两端,需要专门的时钟信号线传递时钟。
那么,有没有一种不归零的编码方式,既能够传送时钟信号,也能够传送数据,且信号的编码效率在50%~100%之间呢?
以太网100M速率的情况下,采用的4B/5B+NRZI混合编码的方式,就能够得到此效果。
NRZI编码效率为100%,且能够确保在传输数据“1”的情况下,同时能够传递时钟信息。但在传递数据“0”的情况下,无法传递时钟信息。
4B/5B编码能够确保(1)编码效率达到80%;(2)即使用户数据中包含连续的0比特,该编码可以避免连续的传输数据0比特。
NRZI + 4B/5B的组合编码,得到这样的效果:既能够传送时钟信号,也能够传送数据,且信号的编码效率在80%。
不归零码NRZ、曼切斯特编码、差分曼切斯特编码、4B/5B编码在前面已经讨论过了,在这里,探讨一下NRZI 。
NRZI(Non Return to Zero Inverted),即不归零反转编码,NRZI是结合了NRZ和差分曼切斯特编码的思想。
首先,NRZI的基础是不归零码NRZ,因此电信号的符号是高电平与低电平,周期与二进制数据的周期是一样的。
但为了传递时钟信息,该编码并没有直接使用高电平或低电平表示0或1数据,而是借助了差分曼切斯特编码的思想,即用前后两个电平信号的变化(反转)来表示1和0。
如果前后两个电平保持不变时(连续的低电平或连续的高电平),表示数据“0”;(全0会导致链路上信号的电平一致恒定不变,好在4B/5B编码解决了全0的问题)
如果前后两个电平发生变化时(一个高电平+一个低电平或者一个低电平+一个高电平),表示数据“1”。(idle信号就是全1,因此,这样每一次发送1,都有一次跳变,可传递同步时钟信号)
为了更好的理解NRZI,参见如下示意图:
全“1”数据的NRZI编码:
全1的二进制比特的NRZI编码,就是一个与数据比特率等速率的方波周期信号。
起到传递同步时钟的作用!
全“0”数据的NRZI编码:
全0的二进制比特的NRZI编码,是一个恒低电平或恒高电平的信号,没有时钟信息。
这是NRZI编码最大的缺陷!!
好在4B/5B编码,弥补了此缺陷,4B/5B编码后,规避了全0的情况,任意4比特的数据,都会被编码成至少包含3个1的5比特数据。
并且5比特的11111被编码成了idle控制码,用于在没有数据传送时,用此编码传递时钟同步信号:
PMD子层位于整个网络的最底层, 且只适用于>=100M速率的情形,主要完成
(1)MDI输出信号
MDI的接口信号是差分信号,如Tx+, TX-, 就是一对差分信号。
差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相同,相位相反。在这两根线上的传输的信号就是差分信号。
信号接收端比较这两个电压的差值来判断发送端发送的逻辑状态。
从严格意义上来讲,所有电压信号都是差分的,因为一个电压只能是相对于另一个电压而言的。
在非差分信号系统里,"系统地"被用作电压基准点。当'地'当作电压测量基准时,这种信号被称之为单端电压。
当两个导体上被同时加入的一个幅度相等、相位相反的电压,也就是所谓共模信号,信号值是两个导体间的电压差。
三电平电压:
逻辑1: 正信号-负信号 = 正电压
逻辑0: 负信号-正信号 = 负电压
空闲、无数据:0电压
差分信号的第一个好处是,线路中传输的信号自包含了“基准信号”,因此能够很容易地识别小信号。在一个“地”做基准的单端信号方案的系统里,测量信号的精确值依赖系统内'地'的一致性。信号源和信号接收器距离越远,他们局部地的电压值之间有差异的可能性就越大,因此被传输信号的幅度就不能太低。差分信号恢复的信号值在很大程度上与双方的系统'地'信号的精确值无关,只与传输的信号的幅度差有关。
差分信号的第二个主要好处是,它对外部电磁干扰(EMI Electromagnetic Interference)是高度免疫的。一个干扰源几乎相同程度地影响差分信号对的每一端。既然电压差异决定信号值,这样将忽视在两个导体上出现的任何同样干扰。除了对干扰不大灵敏外,差分信号比单端信号生成的 EMI 还要少。
差分信号提供的第三个好处是,在一个单电源系统,能够从容精确地处理'双极'(正负)信号。为了处理单端,单电源系统的双极信号,我们必须在地和电源干线之间某任意电压处(通常是中点)建立一个虚地。用高于虚地的电压来表示正极信号,低于虚地的电压来表示负极信号。接下来,必须把虚地正确地分布到整个系统里。而对于差分信号,不需要这样一个虚地,这就使我们处理和传播双极信号有一个高真度,而无须依赖虚地的稳定性。
(2)网络变压器
在物理层芯片输出与RJ45线路信号输出之前还有一个网络变压器,进行电信号的隔离。
变压器功能
任何CMOS的芯片工作的时候产生的信号电平总是大于0V的,PHY输出信号送到100米甚至更长的地方会有很大的直流分量的损失。而且如果外部网线直接和芯片相连的话,电磁感应(打雷)和静电,很容易造成芯片的损坏。网络变压器本身就是设计为耐2KV~3KV的电压的。也起到了防雷保护作用。
再就是设备接地方法不同,电网环境不同会导致双方的0V电平不一致,这样信号从A传到B,由于A设备的0V电平和B点的0V电平不一样,这样可能会导致很大的电流从电势高的设备流向电势低的设备。
网络变压器把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。这样不但使网线和PHY之间没有物理上的连接而换传递了信号,隔断了信号中的直流分量,还可以在不同0V电平的设备中传送数据。
从这个层面上看,网络变压器有点像“天线”:设备上的电信号,通过变压器“耦合”到RJ45的线路中,就像天线把电信号耦合成成电磁波信号,发送到空间中一样。
在双绞线中的每一对信号(如Tx+,Tx-)导线是以双螺旋形结构相互缠绕着。流过每根导线的电信幅度相同、相位差180度,因此其所产生的磁场受螺旋形的制约、抵消,防止了信号自传输过程中能量的散发损耗。
即对差模信号而言,它在每一根导线上的电流是以相反方向(幅度相等的一对正负信号)在一对导线上传送。如果这一对导线是均匀的缠绕,这些相反的电流就会产生大小相等,反向极化的磁场,使它的输出互相抵消。
在这一点上,正好与天线相反:
天线中的电流在两根导线上以相同方向流动,并经过寄生电容CP到地返回。在这种情况下,电流产生大小相等极性相同的磁场,它们的输出不能相互抵消。共模电流在对绞线的表面产生一个电磁场, 电信号就通过电磁场散发到空间中。
(3)SFP光信号接口:光纤连接、电/光转换等功能。
PMD是由电/光收发器SFP完成的,SFP光模块是光通信的核心器件,是通过光电转换来实现设备间信息传输的接口模块,由接收部分和发射部分组成。其中发送端把电信号转换成光信号,通过光纤传送后,接收端再把光信号转换成电信号,传输媒质为光纤。
SFP与物理层芯片之间的信号接口:
发射部分原理
输入一定码率的电信号经内部的驱动芯片处理后驱动半导体激光器(LD)或发光二极管(LED)发射出相应速率的调制光信号,其内部带有光功率自动控制电路(APC), 使输出的光信号功率保持稳定。
接收部分原理
一定码率的光信号输入模块后由光探测二极管转换为电信号,经前置放大器后输出相应码率的电信号。同时在输入光功率小于一定值后会输出一个告警信号。
光模块的主要参数及意义
传输速率
传输速率指每秒传输比特数,单位 Mbps 或 Gbps。
目前常用的传输速率有 155Mbps, 1.25Gbps, 2.5Gbps, 10Gbps等。
传输距离
光模块一般有多模550m, 单模15km, 40km, 80km和120km等。
光模块的传输距离分为短距、中距和长距三种。一般划分如下:
光信号在光纤中传输时会有一定的损耗和色散,这是光模块的传输距离受到限制的主要原因。
中心波长
中心波长指光信号传输所使用的光波段,单位纳米(nm), 目前主要有850nm波段、1310nm 波段以及 1550nm 波段。
至于电信号如何调制到光信号上,将单独的章节探讨。
至此,用户数据的与“I Love you”对应的二进制数据,经过以太网MAC层封装、物理层的数字编码、电信号符号编码,转成了相关的电信号,再经过网络变压器或SFP光电转换器,就可以在物理线路上发送了。
这里的信道主要是指RJ45双绞线信道与光纤信道。
信宿对信息的接收过是信号的发送过程的反向过程
(1)信号的接收:
如果是10/100M电口,这里主要是RJ45口和网络变压器对物理信号的接收
如果是100M光口,这里主要是SFP光电转换器对光信号的接收,并转换成电信号。
(2)物理层电信号解码或符号解码
如果是10电口, 主要是曼切斯特编码解码。
如果是100M电/光,这里主要是NRZI解码。
(3)物理层信道解码
如果是100M电/光,主要是扰码、4B/5B编码
(4)网络解码
解码MAC层解帧与CRC校验。
(5)数据
经过CRC检查和MAC帧解码,得到“I Love You”对应的二进制ASCII编码的数据。
(6)信宿:美女B
美女B是一个程序员,通过二进制,直接翻译成“I Love You”,感受到了帅哥A的浓浓爱意。
至此,整个以太网通信案例介绍完毕。
参考
常见以太网芯片:常用以太网PHY芯片选型---百兆/千兆/车载以太网PHY_打怪升级ing的博客-CSDN博客_常用的phy芯片
RTL8201内部框图:https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1598268011668&di=8bc8a57ec60d9413b0dd47ffb82820ef&imgtype=0&src=http%3A%2F%2Fimg1.imgtn.bdimg.com%2Fit%2Fu%3D3426522046%2C4080715175%26fm%3D214%26gp%3D0.jpg
RTL8201BL中文版数据手册:RTL8201BL数据手册(中文版) - 百度文库
MLT-3信号编码:MLT-3_百度百科
编码(NRZ、NRZI、曼彻斯特、4B/5B): 编码(NRZ、NRZI、曼彻斯特、4B/5B) - 苍月代表我 - 博客园
差分信号详解