serialio学习之8B/10B编码

串行数据流分成四个相位时钟恢复

1. 为何这么快
在这里插入图片描述
每个触发器送入由下一个最低相位时钟的触发器, 直到以零相时钟开始计时。这就将输入的数据流反串成一个4位字,以输入数据流的1/4时钟速率运行。
在这里插入图片描述

2. 线路编码方案
将原始数据改成接收方可以接收的数据形式

2.1 8B/10B 编码解码
① IBM开发并推广,高速串行通信常用
② 将8bit数据改为10bit数据,使得编码后的0和1的数量相等,在宏观数据上直流被平衡掉了(也叫直流平衡)
③直流平衡的方法:running disparity–运行差分
④ 8b / 10b允许将12个特殊字符解码为12个通常称为K字符的控制字符。
在这里插入图片描述

2.2 运行差异–running disparity
8b/10b使用两个不同的符号来分配每个数据值。在大多数情况下,其中一个符号有6个零和4个1,另一个符号有4个零和6个1(3b/4b,5b/6b)。监控1和0的总数,并根据使直流平衡恢复正常所需的内容选择下一个符号。这两个符号通常被称为+和-符号。符号示例如表3-2所示。
在这里插入图片描述

2.2 控制字符
刚才的表格中的以D开头的字符成为数据字符,它代表的是数据信息;其实不只有数据信息,高速串行总线传输的还有控制字符,如下:

在这里插入图片描述
控制字符用于对齐、控制和将带宽划分为子通道。

2.3 逗号检测
它是指定为对齐序列的一两个符号,可以看作是一个标志。

数据对齐是解串器的一项重要功能。图3-7表示串行流中有效的8b/10b数据。
在这里插入图片描述
我们怎么知道符号的边界在哪里?符号由逗号分隔。在这里,逗号是指定为逗号或对齐序列的一个或两个符号。这个序列通常可以在收发器中设置,但在某些情况下,它可能是预定义的。

接收端扫描传入的数据流以查找指定的位序列。如果找到该序列,反序列化器将重置单词边界以匹配检测到的逗号序列。这是连续扫描。一旦对齐完成,检测到的所有后续逗号都应该发现已经设置了对齐。当然,逗号序列在任何序列组合中必须是唯一的。

例如,如果我们使用信号符号c作为逗号,那么我们必须确定没有有序的符号集xy包含位序列c。使用预定义的协议不是问题,因为逗号字符已经定义好了。

通常使用k字符的一个或多个特殊子集。该子集由K28.1、K28.5和K28.7组成,它们的前7位都是1100000。这种模式只存在于这些字符中;任何有序的数据集和其他k字符都不会包含这个序列。因此,它非常适合用于对齐。在构建自定义协议的情况下,最安全、最常用的解决方案是从知名协议中“借用”序列。千兆以太网使用K28.5作为逗号。

所使用的名称——比如D0.3和k28.5——来自于编码器和解码器的构建方式。

下图是8b/10b的整体流程示意图

在这里插入图片描述

2.4 Scrambling
加扰:对数据重新排序或编码的一种方法,使其看起来是随机的,但可以解扰。

过度使用带宽是8b/10b方案的缺点之一。要获得2.5 Gb的带宽,需要3.125 Gb/s的线速。加扰技术可以很容易地处理时钟跃迁和直流偏置问题,而不需要增加带宽。

加扰一种重新排序或编码数据的方法,使其看起来是随机的,但它仍然可以被解扰。我们希望随机化器能够分解长时间的0和1。显然,我们希望解密器在不需要任何特殊对齐信息的情况下解密比特。这种特性称为自同步代码。

一个简单的扰频器由一系列的触发器组成,用来移动数据流。大多数触发器只是提供下一个比特,但偶尔一个触发器会与流中的旧比特独占地进行或与。该概念如图3-9所示。
在这里插入图片描述

  • 26
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值