Menu Close

网络物理层基本知识(PCS子层)

物理层(Phy)是将MAC层并行数据串行化的物理载体,为了在媒介上能有效的传输,需要在串行数据发送前进行编码处理,通常称为信道编码。同时为了能有效控制媒体传输,在信号处理方面同样要做相关处理,如采用差分传输,阻抗匹配,回声消除,多阶调制的信号处理方面的内容。同时IEEE802.3对传输线的使用,传输接口的使用也做了规定。根据以上特点,因此物理层一般又分为3个子层,分别为物理编码子层(PCS,Physical Coding Sublayer),物理媒介附着层(PMA,Physical Medium Attachment),物理媒介依赖层(PMD,Physical Medium Dependent)。本文着重介绍PCS子层。

PCS(Physical Coding Sublayer)子层

该层也属于信道编码层,主要用于改善通信信道质量,降低通信误码率,减少电磁干扰或用于差错控制等。该层编码众多,如4b/5b编码,8b/10b,64b/66b,64b/67b,128b/132b,NRZ(Non-Return-to-Zero),曼彻斯特编码等。这里将对经常使用的几种进行分析。

 

4b/5b编码:

  • 4b/5b编码:主要用在100BASE-TX的传输中,后面跟着MLT-3(Multi-Level Transmit with 3 voltage levels)编码。这些功能都在100兆PHY芯片中实现。
  • 4b/5b数据:从25个编码(5 bits数据)中 挑选出来16个编码(5 bits数据)映射到16个原数据(4 bits数据)上。优点:

(1)避免了长0,长1,有利于时钟恢复。

(2)统计上可以实现直流平衡

  • 4b/5b控制:剩余9个5bits编码用于控制

(1)J、K、L作为启动信号

(2)I作为空闲信号

(3)T为结束信号

(4)R,S作为复位,置位信号

           (5)Q 只是线路为静默期,即线路中的数据都为0,一般发生在通信双方没有物理连接,或断线的情况下

(6)H表示停止信号

表1 4b/5b编码表

8b/10b编码 :

参考文章 8b/10b编码基础知识详解。

8b/10b 编码是当前用的最为广泛的编码方式,主要是解决直流平衡和时钟恢复。是一种优良的线性编码,有效解决了复杂度,直流平衡,时钟恢复与传输效率的平衡。

10bits数据总共1024种组合,从中挑选出512种作为数据编码使用。在数据传输的编码中,将256个8bits数据映射到512种的组合中.

8b/10b编码分割为两个部分,第一部分为5B/6B编码,第二部分为3B/4B编码,总体为8B到10b编码(发送部分),或10B/8B解码(接收部分)。目前在1G光纤以太网中应用。在其它非标通信中应用及其广泛。

5b/6b 编码,将8bits数据分成两个部分5b+3b. 5b为EDCBA为低5位。其中A为最低位。变换成abcdei.

RD为+1或-1决定数据的选择。-1选择左边一栏,+1选择右边一栏。

同时会有K值的选择。有关RD和K值后续的内容会讲解。

表2 5b/6b编码

  • 3b/4b编码

3b/4b 编码,将8bits数据第二个部分3b. 3b为HGF为高3位。其中H为低位,变换成fghj。

数据·的编码范围为D.x.0-D.x.7, 其中x为5b/6b中的编码,RD为+1或-1决定数据的选择。-1选择左边一栏,+1选择右边一栏。

同时会有K值的选择。有关RD和K值后续的内容会讲解.5b/6b与3b/4b拼接组成8b/10b

 

表3 3b/4b编码

  • 8b/10b K值编码

K值的编码与数据编码非常类似,K值总共12个作为数据传输过程中控制信息使用。1024个编码中的各种有用的组合少于512,其余的冗余编码在数据发送编码中不会使用。在接收中如果出现非编码表中的内容,则会只是通信过程中出现误码。RD为+1或-1决定数据的选择。-1选择左边一栏,+1选择右边一栏。

在实际使用中K.28.5,K.28.1,K.28.7定义为逗号序列,作为帧的分界,K.28.5多用于帧起始,k.28.1多用于帧结束。k.28.7用的相对较少。复杂协议中往往还配合具体的数值一起组成帧起始和结束。

  • RD 非一致性运行

运行非一致性(Run disparity), 是用来消除在通信线路中0,1的不平衡性。观察8b/10b的编码我们会发现,尽管采用了10bits的编码,依然无法满足在一个字节的发送中保持0,1的个数相等。

    • RD编码运行原理与步骤。
      • 维持一个变量RD,RD的初始值可以设为+1或-1
      • 运行后,RD如果为-1,则选择表中RD为-1对应的值(D或K),同时RD的值+2,结果RD=+1
      • 如果上次运行后RD=+1,选择表中RD为+1对应的值,RD=RD-2, 结果RD=-1
      • 如果选择的10b中的数据0,1个数相等,则维持原RD的值不变
      • 在持续的数据传输中能维持直流动态平衡。

  • 8b/10b编码例解

输入 Bits: HGFEDCBA

数据分割: HGF EDCBA

换位: EDCBA HGF

Data = 0011_1111

= 001 11111

= 11111 001

= 31 1

E 8B = D31.1

RD=-1 10b abcdei fghj=101011 1001 新RD=+1

RD=+1 10b abcdei fghj=010100 1001 新RD=-1

在下面的章节中提供了8b/10b的编码逻辑实现,以便于讲解,解码部分源代码没有在文章中提供但是在单独的文件中提供。 也可以用查找表的方式实现。

查找表的方式非常简单,维护一个5b/6b和3b/4b表就可以,但RD需要程序进行计算。

练习题:利用FPGA ROM和COE文件设计8b/10b 与10b/8b编解码。用状态机实现ROM的读取及RD运算。

 

曼彻斯特编码:

曼彻斯特(Manchester)编码由于有优良的时钟恢复特性,因此早期被广泛应用在各种通信系统中,著名的10M以太网就采用曼彻斯特编码。虽然10M以太网已经退出历史舞台,但工业应用中仍被广泛使用,如机车控制系统中,MVBC系统就是采用曼彻斯特编码。更多关于曼彻斯特编码的内容参考文章曼彻斯特编码介绍 。

图1 曼彻斯特编码波形图

图2  曼彻斯特编码数据与时钟的关系

 

Posted in FPGA, FPGA 教材教案, 教材与教案, 文章, 资料区

发表回复

相关链接