Menu Close

高速通信PCS子层设计

一般在通信中把物理层划分为3个子层,每层各完成不同的任务,如以太网通信中把物理层分为PCS(Physical Coding Sublayer),PMA(Physical  Media Attachment),PMD (Physical Media Dependent)3个子层,关于这方面的内容参照网络通信相关的章节。在本章的异步串行通信中也分为PCS, PMA, PMD 3个子层。 其中PMA对应是并/串转换和串/并转换,PMD对应的是LVDS接口。如图1所示。

图1

图1展示了物理层的分层结构,以及物理层与数据链路层之间的关系。由于PMA,PMD 在前面的内容中已经给大家介绍,而且在代码中已经实现,下面着重介绍PCS子层的实现。

虽然在前面的通信设计和实验中我们没有使用PCS子层,通信双方也可以通信,但是我们还有遗留的问题还没有解决。下面将提出这些问题以及采用PCS子层实现应对方案。

1. PCS子层的必要性

在串行通信中存在如下两个问题需要解决,解决方案由PCS子层实现,一般该层

(1)在通信中采用原始数据进行发送和接收,由于原始数据的随机性,串行数据不可避免地会出现长0或长1,这将会导致信道直流不平衡以及严重影响时钟同步。

(2)无法在数据帧中添加更多的控制字使帧结构更加完善

    • 数据帧的类型多样化,比如怎样填充多余的数据使得帧结构完整,
    • PHY到PHY的控制与状态的交互,如以太网中自动协商等。

2. PCS 子层的构成

  • 针对PCS子层必要性的第一个问题,在数据编码的时候可以采用4b/5b,8b/10b,64b/66b,128b/130b,128b/132b等编码,但是64b/66b,128b/130b,128b/132b编码还有机率出现长0,长1的情况,但长0,长1已经缩短到一定的范围。也可以采用数据加扰和解扰的办法处理,加扰和解扰的优点是不增加串行流的长度,没有降低通信效率。
  • 针对PCS子层必要性的第二个问题,单纯使用加扰和解扰一般不能很好的解决,因为加扰和解扰没有冗余的控制字可以使用,因此一般采用4b/5b,8b/10b,64b/66b,128b/130b,128b/132b等编码
  • 为了解决64b/66b,128b/130b,128b/132b编码还有机率出现长0,长1的情况,在超高速数据通信中一般与加扰和解扰配合使用,以达到既能有效的控制物理信道,又能提高信道的通信质量。

有关PCS子层设计的详细内容,在下面的各节内容中详细介绍。

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

3 Comments

  1. 6班李红梅

    老师,关于您在文章中提到的:在超高速通信中 加扰解扰配合使用的问题,有点疑惑,如果我使用下面的配合方法,是否会出现问题呢:
    1. 发送端:前导字+SFD +8b/10b包含K值的编码,对整个8b/10b 进行加扰;接收端根据前导字和SFD判断帧起始,然后对后面的数据进行解扰;
    2.发送端:8b/10b 包含k值的编码(前导字和SFD选择性添加),对除开K值的8b/10b数据进行加扰;接收端根据K值判断帧起始,对数据进行解扰;

    问:方法2中,数据进行加扰后会不会导致K值不唯一了?这样就不能很好的判断帧起始和结束?如果我上面的设计有问题,老师可否讲解一下,8b/10b是如何配合使用的呢?

  2. 6班李红梅

    还有一个问题:假如发送端我只使用K值做开头和结尾,中间的数据不用8B/10B,之间对数据进行加扰(这样可以节省带宽)。接收端用K值判断帧起始和结尾,然后对数据解扰。 这样是不是会因为用了加扰会导致K值不唯一呢?

    • William

      假如发送端我只使用K值做开头和结尾,中间的数据不用8B/10B,中间数据就可能出现K值,K值就没有意义了。
      实际上正常流程是数据采用加扰/解扰后进行8b/10b编码。

发表回复

相关链接