8B10B编码(高速收发器五)

1、8B10B解决的问题

  8B10B编码是1983年IBM公司提出的传输编码标准,通常用于高速收发器中,常见的JESD204B、SATA等接口协议,使用查表就可以实现编码和解码。

  在这些高速收发器的接收端需要通过CDR技术去恢复时钟与数据的相位关系,在这个过程中需要不断的检测数据边沿和数据中心,从而调整时钟和数据的相位,因此需要保证接收的数据需要不断的变化,从而给CDR提供足够多的待检测数据边沿。

  另外高速接口电路一般采用交流耦合方式进行连接,在交流耦合电路中的信号线会接电容(隔直通交),如果传输的数据在一段时间内全是1或全是0,那么这段时间传输的信号可以等效成直流信号,会产生直流偏移,在通过电容时,有可能解码错误。

  因此通过8B10B编码,保证编码后的数据在一定时间内0的个数与1的个数保持相等。

2、8B10B编码规则

  8B10B就是把8位数据编码成10位数据,8位共有256种状态,而10位数据有1024种状态,可以从1024种状态中选取256种0和1个数相等的数据作为编码结果,在从剩下的数据中选取12个作为控制字符,即常见的K码。

  如下图所示,将输入的8位数据分为高3位和低5位,分别进行3B4B、5B6B编码,结果为10位数据。

在这里插入图片描述

图1 8B10B编码原理

  通常把编码前的低5位数据EDCBA的十进制数值记为x,把编码前的高3位数据HGF的十进制数值记为y,原始8位数据可以表示为D.x.y。

  比如待编码数据为110_00011,高3位数据的十进制为6,低5位的十进制数据为3,则D.3.6就表示110_00011。

  常见的控制字符K.28.5的也是采用上述方式,控制字符的编码结果是固定的,不会与数据的编码结果冲突。

  低5位数据总共有32种状态,对应的5B6B编码规则如下表所示。

在这里插入图片描述

图2 5B6B编码原理

  下面是3B4B编码的表格,原理与5B6B编码一致。

在这里插入图片描述

图3 3B4B编码原理

  可能第一次看下表会有疑问,为什么D.00的编码结果有两种?RD又是什么东西?

  5位数据总共有32种状态,编码结果有6位数据,0和1数量相等的只有000_111、001_011…、110_001、111_000等20种状态。其中000_111和111_000存在三个连续相同的状态,并没有被使用。导致编码后0和1数据相等的结果就只有18种状态,并不能满足输入5位数据的32种数据状态,3B4B编码也有同样的问题。

  此时设计编码的人提出,一次编码如果不能保证编码结果0和1个数相等,那么可以让连续两次编码结果的0和1相等,也能满足要求。

  极性偏差(running disparity,RD)用来记录上一次编码结果中0和1个数的多少。RD=-1表示编码结果0多于1,RD=1表示编码结果1多于0。

  如果编码结果的1和0个数相等,称为平衡编码,此时RD的数值保持不变。如果编码结果1和0个数不等,称为非平衡编码,此时RD的数值翻转,下次编码采用RD对应数值的编码作为编码结果。

  将上次8B10B编码结果的RD数值用作本次5B6B编码的起始RD,而3B4B编码的起始RD等于5B6B编码结果的RD,3B4B编码结果的RD作为本次8B10B编码的RD。

  对应的编码状态跳转如下图所示。

在这里插入图片描述

图4 编码状态

  通过这种方式才能保证一次编码结果要么0和1个数相等,要么相差两个。关于这方面的讲述,网上绝大多数文章都是错误的,认为上次8B10B编码结果的RD会作为下次5B6B和3B4B编码的起始RD,造成3B4B编码错误。

  上述讲解的是数据编码过程,因为8B10B编码大多用于异步串行通信,接收方需要识别数据的帧头、帧尾这些控制信息,从而完成数据的对齐、同步等等。

  因此8B10B编码有12个控制字符,通常称为K码,这些控制字符的编码结果是唯一的,不会与数据编码的结果重复。下表就是12个控制字符的编码。

在这里插入图片描述

图5 K码的编码规则

  因为K码的编码结果是唯一的,因此接收端检测K码的方式很简单,通过一组移位寄存器,将输入数据依次移入,当移位寄存器的数值与K码的编码结果相同时,就认为检测到对应K码了,从而实现对应功能,包括逗号检测、时钟纠正、起始位、停止位等等。

3、8B10B编码练习

  8B10B相关的理论讲解就到此结束了,以两个示例测试是否真的掌握该编码,请问D.8.3的8B10B编码结果是多少?

  由于起始RD并没有明确指出,可能为1或者-1,所以会存在两种编码结果。

  首先RD=-1时,根据图2得D.8的5B6B编码结果为111001,5B6B编码完成后,RD翻转变为1。将RD=1作为D.x.3的3B4B编码起始RD,根据图3查表得编码结果为0011,再次将RD翻转作为本次8B10B编码结果的RD。

  因此起始RD=-1的编码结果为111001_0011,先输出高位数据。

  当起始RD=1时,根据图2得D.8的5B6B编码结果为000110,RD翻转作为3B4B起始RD,得D.x.3的3B4B编码结果为1100,因此8B10编码及热锅为000110_1100。

  怎么验证上述计算是否正确呢?

  Xilinx的UG476手册的附录有所有8B10B编码数据的结果,如下图所示,起始RD=-1时,D.8.3编码结果为111001_0011,起始RD=1时,D.8.3编码结果为000110_1100,与上述计算结果保持一致,证明计算方法没有问题。

在这里插入图片描述

图6 D.8.3的编码结果

  第二个问题,当前RD=1,则K.28.5、D.2.6、D.23.4的编码结果依次是多少,且最终的RD是多少?

  首先RD=1时,通过图5查得k.28.5编码结果为110000_0101,然后RD保持不变,因为K28.5的5B6B和3B4B都是不平衡编码,因此RD翻转两次的结果就是不变。

  因此D.2.6的起始RD=1,首先D.2的5B6B编码结果为010010,RD翻转变为-1。D.x.6的3B4B编码结果为0110,由于D.x.6是平衡编码,因此RD保持不变。

  故D.2.6的编码结果为010010_0110,RD最终为-1。

  当RD=-1时,D.23.4的5B6B编码结果为111010,然后RD翻转为1。之后D.x.4的编码结果为0010,RD的极性再次翻转为-1。

  所以K.28.5、D.2.6、D.23.4的编码结果依次是110000_0101、010010_0110、111010_0010,RD的最终取值为-1。D.2.6、D.23.4的查表结果如下图所示,与上述计算结果保持相同,证明编码规则没有问题。

在这里插入图片描述

图7 D.2.6的编码结果

在这里插入图片描述

图8 D.23.4的编码结果

  从上述编码过程可知,每个输入数据通过查表都可以得到其唯一的编码结果,根据编码结果也可以查表反推进行解码,所以实现这个编码和解码的思路比较简单,直接使用查表法即可。

  通过上述编码也可以很清晰知道该编码的缺陷,每次传输的10位数据中有2位是无效数据,损耗比较大。后续的64B66B编码就是为了解决这个问题提出的,但是8B10B编码的误码率会比64B66B编码低。

  关于8B10B编码内容讲解就到此结束了,本来最开始是不想写这方面内容的,结果在CSDN和B站看到很多大佬对RD极性变化的理解都有问题,编码结果与官方提供的结果都不相同,因此写了这篇文章,希望对大家的理解有帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/632051.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

10个必备功能跨境电商ERP开发全指南

跨境电商平台开发是当前电商行业的热门话题。随着全球贸易的不断发展,企业越来越关注并重视跨境电商ERP系统的开发和应用。在本文中,我们将深入探讨跨境电商ERP开发的必备功能,为您呈现全面的指南。 1. 跨境订单管理 跨境电商平台需要具备全…

RT-Thread的 FAL 组件_使用笔记

RT-Thread的FAL分区表组件 1、FAL介绍 FAL (Flash Abstraction Layer) Flash 抽象层,是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作的 API (框架图如下所示),并具有以下特性: 1.1 FAL目…

CSP备考---2023大湾区比赛易错题

解析 9.D无向图公式:有向图公式:本题考察无向图,故 12.D公式: 14.B有三种情况:1男2女、2男1女、3女。 17.错 因为12300400000超过了int的范围 18.错 21.D 23.对 25.A 26.D代入程序 31.C 33.C 36.D 37.A …

四川古力未来科技抖音小店:科技赋能,购物新体验!

在当下这个数字化飞速发展的时代,电商行业早已成为了人们日常生活中不可或缺的一部分。而抖音小店作为电商领域的一匹黑马,正以其独特的优势和魅力,吸引着越来越多的消费者。今天,我们就来一起探讨一下四川古力未来科技抖音小店的…

2024 年 11 款顶级Android数据恢复软件的主要功能

Android 设备上的数据丢失可能是一种令人痛苦的体验,通常会导致不可替代的信息瞬间消失。 可能会发生意外删除、系统崩溃或格式错误,关键数据的丢失可能会扰乱日常工作并影响您的工作效率。 幸运的是,技术进步带来了几种恢复解决方案&#…

单片机烧录程序时“DTR的低电平复位,RTS高电平进入bootloader”有关的串口Modem联络信号

烧录程序时常见DTR和RTS引脚 参考,参考视频 因为常常使用的都是串口下载程序,常用的芯片CH340系列,下图中标红的引脚是MODEM联络信号,其中常见的DTR和RTS就是常见的串口Modem网络输出信号,也就是通过烧录软件控制的接…

网络地址转换(nat,easy ip,nat server)资源上传

实验概述 由内到外 nat,easy ip,转换的是源ip nat server 由外到内,转换的是目的IP 实验拓扑 结果验证 nat实验得到结果 1.ar1到ar3没有路由也可以访问 2.ar3配置telent后ar1也可以通过telnet远程配置 esay ip 如果ar2 g0/0/1接口ip非固…

智能边缘计算 | 2024高通边缘智能创新应用大赛赛道解读

随着物联网设备的普及和数据的井喷式增长,用户对数据处理的效率要求进一步提升,而边缘设备的计算能力日益增强,在边缘端完成复杂计算已经成为可能。 除降低时延与减少宽带资源占用外,边缘计算在离数据源更接近的地方完成数据处理…

cdn引入vue的项目嵌入vue组件——http-vue-loader 的使用——技能提升

最近在写MVC的后台,看到全是jq的写法,但是对于用惯了vue的我,真是让我无从下手。。。 vue的双向绑定真的很好用。。。 为了能够在cdn引入的项目中嵌入vue组件,则可以使用http-vue-loader了 步骤1:下载http-vue-loader…

MLM之GPT-4o:GPT-4o(多模态/高智能/2倍速/视觉改进/128K的大窗口)的简介、安装和使用方法、案例应用之详细攻略

MLM之GPT-4o:GPT-4o(多模态/高智能/2倍速/视觉改进/128K的大窗口)的简介、安装和使用方法、案例应用之详细攻略 导读:2024年5月13日,OpenAI重磅发布新旗舰模型GPT-4o,这是一个全新的旗舰模型,可以实时跨越音频、视觉和…

【算法】网络图中的dfs

快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、单词搜索二、黄金矿工三、不同路径 |||四、图像渲染五、岛屿数量六、岛屿的最大面积七、被围绕的区域…

Flutter+Getx仿小米商城项目实战教程又新增了Flutter调用原生地图

FlutterGetx仿小米商城项目实战教程基于Flutter3.x录制,课程紧贴企业需求,目前已完结176讲。教程所讲内容支持Android、Ios、华为鸿蒙OS,教程更新于2024年4月09日新增 Flutter 调用百度地图、新增Flutter充电桩项目地图实战。支持2024年3月29…

【亚马逊云】注册APN账号及报考AWS认证考试说明演示

文章目录 1. 登录AWS网站2. 注册APN账号3. 更改APN账号密码(选)4. 修改APN账号信息(选)5. 查看AWS认证情况(选)6. AWS认证考试报名流程7. 修改报名控制台语言版本(选)8. 开始报名AWS…

抖音小店三大核心!掌握之后,做店岂不是手到捏来

大家好,我是电商喷火 做好一家抖音小店,并不需要太多的技术含量,做好这核心三点,起店并不难。 这三点分别是,选品、流量、售后 01.选品 首先,店铺的商品一定要和店铺的类目高度垂直,不要在大…

多联机常见各部件功能及常见机组制冷原理图

一、各部件名称和主要功能 1、压缩机 压缩机根据实际系统需要,调整其转速达到节能目的。 2、压缩机油温加热带 在待机状态下,保证压缩的油温确再启动可靠性。 3、压缩机 排气 感温包 检测压缩机的排气温度,达到控制和保护目的。 4、高压开…

关爱内向儿童:理解与支持助力成长

引言 每个孩子都是独特的,有些孩子天生性格外向,善于表达,而有些孩子则比较内向,喜欢独处。内向并不是缺点,而是一种性格特质。然而,内向的孩子在社交和学习过程中可能会面临一些挑战。本文将探讨内向儿童…

失而复得:揭秘删除照片恢复的技巧!

我们的生活与照片紧密相连。每一张照片都承载着一段独特的记忆,记录着我们的喜怒哀乐。然而,有时候我们会因为误操作、存储设备损坏或是文件管理不当而失去这些宝贵的照片。别担心!现在,我们将揭示删除照片恢复的神秘面纱&#xf…

反激式开关电源-8利用AP法进行变压器设计

变压器AP的计算 在变压器设计中,主要有两种方法,一种称为Kc法,这种方法也称为磁芯几何参数法,如果用这个方法来进行设计,那么我们首先要计算出磁芯的几何参数Kc值,在这个参数上留有一定的裕度后选取和Kc值…

Github项目部署到自己的域名

天坑,买的是华为的域名,不过新用户才一块,就忍了 要买个域名,我买的是华为的(此处是购买地址) 购买后去控制台,点击“总览”进入域名页面 点击想要修改的域名后的“管理解析” 点击快速解析&…