Menu Close

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

物理层(Phy)是将MAC层并行数据串行化的物理载体,为了在媒介上能有效的传输,需要在串行数据发送前进行编码处理,通常称为信道编码。同时为了能有效控制媒体传输,在信号处理方面同样要做相关处理,如采用差分传输,阻抗匹配,回声消除,多介调制的信号处理方面的内容。同时IEEE802.3对传输线的使用,传输接口的也做了规定。根据以上特点,因此物理层

一般又分为3子层,分别为物理控制子层(PCS)子层,物理媒介附着层(PMA),物理媒介依赖层(PMD)。本文着重介绍PCS子层。

1. PCS(physical control sublayer)子层

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

  • 4b/5b编码:主要用在100TX的传输中,后面跟着MLT3编码。这些功能都在100兆PHY芯片中实现。
  • 4b/5b数据:16个4bits数据映射到16个从25个编码挑选出来的5bits数据。优点:

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

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

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

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

(2)I作为空闲信号

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

(4)I作为空闲信号

表1 4b/5b编码表

%title插图%num

2. 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编码

%title插图%num

  • 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编码

%title插图%num

  • 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用的相对较少。复杂协议中往往还配合具体的数值一起组成帧起始和结束。

%title插图%num

  • 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的值不变
      • 在持续的数据传输中能维持直流动态平衡。

%title插图%num

  • 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

%title插图%num

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

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

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

3. 曼城斯特编码

曼城斯特(Manchester)编码由于有优良的时钟恢复特性,因此早期被广泛应用在各种通信系统中,著名的10M以太网就采用曼彻斯特编码。虽然10M以太网已经退出历史舞台,但工业应用中仍被广泛使用,如机车控制系统中,MVBC系统就是采用曼彻斯特编码。目前智芯融与中车联合开发的MVBC控制器的底层通信协议正是采用了该编码。

%title插图%num

图1 曼彻斯特编码波形图

%title插图%num

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

 

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

1 Comment

  1. 贺文强

    内容有重复和遗漏:

    4b/5b控制:剩余9个5bits编码用于控制
    (1)J、K、L作为启动信号

    (2)I作为空闲信号

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

    (4)I作为空闲信号

发表评论

相关链接