以太网是一种计算机局域网的组网技术。在IEEE制定的IEEE 802.3标准给出了以太网的技术标准。它规定了包括物理层的连线、电信号和介质访问层协议的内容。以太网是当前应用普遍的局域网技术。它很大程度上取代了其他局域网标准,如令牌环、FDDI和ARCNET。
我们常见的网线是一种双绞线,内部是铜制电缆,传输的是电信号。我们说的线路的编码,就是要考虑到电信号如何更适合在铜制电缆上的传输,使信号能够无损的到达接收方。我们在阅读网络驱动相关的代码时,可能会看到NRZ编码、Manchester编码、4B/5B编码 、8B/10B编码这样的名词概念,为了更好的理解代码,不对相关概念产生迷惑,所以就对常见的10MBase-T和100MBase-T的以太网接口的电信号编码方法和原理做如下的分析和说明。
先分析10MBase-T接口的编码,10MBase-T接口对发送数据使用Manchester编码的方式进行编码然后发送,Manchester编码的基本原理是这样的,将0作为由低到高的跳变,1作为由高到低的跳变。因为0和1都导致信号的跳变,所以接收方能有效地恢复时钟。(还有一种曼彻斯特编码的变种,称为差分曼彻斯特(differential Manchester)编码。其方法是若信号的前一半与前一比特信号的后一半信号相等则编码为1,若信号的前一半与前一比特信号的后一半信号相反则编码为0。
曼彻斯特编码方案存在的问题是使链路上信号跳变的速率加倍,这意味着接收方有一半的时间在检测信号的每一个脉冲。信号变化的速率称为链路的波特率(baud rate)。在曼彻斯特编码中,比特率是波特率的一半,所以认为编码的效率仅为50%。
100MBase-T接口的编码是用的4B/5B编码与MLT-3编码组合方式,发送码流先进行4B/5B编码,再进行MLT-3编码,后再上线路传输;千兆以太网用的是8B/10B编码与NRZ编码组合方式。
我们对使用到的4B/5B编码 MLT-3编码 和NRZ编码进行介绍,首先介绍一下什么是4B/5B编码,4B/5B编码是百兆以太网(即快速以太网)中线路层编码类型之一,就是用5bit的二进制数来表示4bit二进制数,映射方式如下表所示:
为什么要进行4B/5B编码?
在通信网络中,接收端需要从接收数据中恢复时钟信息来保证同步,这就需要线路中所传输的二进制码流有足够多的跳变,即不能有过多连续的高电平或低电平,否则无法提取时钟信息。
Manchester(曼切斯特)编码可以保证线路中码流有充分的跳变,因为它是用电平从“-1”到“+1”的跳变来表示“1”,用电平从“+1”到“-1”的跳变来表示“0”,但是这种编码方式的效率太低,只有50%,相当于用线路的有效带宽来换取信号的跳变,十兆以太网就是使用Manchester编码,虽然线路的有效带宽只有10Mbps,但实际使用的带宽却是20Mbps。
为了避免曼彻斯特编码的低效率,100MBase-T接口使用了4B/5B编码加MLT-3的编码方式。
4B/5B编码其实就是用5bit的二进制码来代表4bit二进制码。此编码的效率是80%,比Manchester码高。4B/5B编码的目的在前面已经说过了,就是让码流产生足够多的跳变。4位二进制共有16种组合,5位二进制共有32种组合,如何从32种组合种选取16种来使用呢?这里需要满足两个规则:
1). 每个5比特码组中不含多于3个“0”;
2). 或者5比特码组中包含不少于2个“1”;
此规则是怎么来的?这就要从MLT-3码的特点来解释了。 MLT-3码的特点简单的说就是:逢“1”跳变,逢“0”不跳变。为了让4B/5B编码后的码流中有足够多的跳变就需要编码后的码流中有尽量多的“1”和尽量少的“0”。
4B/5B编码的特点是将欲发送的数据流每4bit作为一个组,然后按照4B/5B编码规则将其转换成相应5bit码。5bit码共有32种组合,但只采用其中的16种对应4bit码的16种,其他的16种或者未用或者用作控制码,以表示帧的开始和结束。此外还有8B/10B编码与4B/5B的概念类似,例如在千兆以太网中就采用了8B/10B的编码方式。
MLT-3编码的基本方法
MLT-3即Multi-Level Transmit -3,多电平传输码,MLT-3码跟NRZI码有点类型,其特点都是逢“1”跳变,逢“0”保持不变,并且编码后不改变信号速率。如NRZI码不同的是,MLT-3是双极性码,有”-1”、“0”、“1”三种电平,编码后直流成份大大减少,适合通过电信号进行电路传输,100Base-TX采用此码型。
MLT-3编码规则:
1).如果下一输入为“0”,则电平保持不变;
2).如果下一输入为“1”,则产生跳变,此时又分两种情况。
(a).如果前一输出是“+1”或“-1”,则下一输出为“0”;
(b).如果前一输出是“0”,其信号极性和近一个非“0”相反。
对嵌入式物联网感兴趣的小伙伴,可以多了解一下相关信息。(看过来)