8b/10b编码方式(详细)总结附实例快速理解

news2024/10/2 16:25:23

目录

  • 前言
  • 一、简介
  • 二、转换过程
    • 2.1 背景
    • 2.2 具体转换过程
  • 三、其他相关链接
    • 1、PCI总线及发展历程总结
    • 2、PCIe物理层总结-PCIE专题知识(一)
    • 3、PCIe数据链路层图文总结-PCIe专题知识(二)

前言

本文主要通过图文方式介绍8b/10b编码,具体转换方式通过实例解析,方便读者快速掌握。

一、简介

8b/10b编码也叫做8字节/10字节,是目前高速串行通信中经常用到的一种编码方式,直观的理解就是把8bit数据编码成10bit来传输。该编码方式最初是由IBM公司在1983年发明并应用于ESCON[200M互联系统],由AI widmer和Peter Franaszek在IBM的刊物“研究与开发”上提出。

二、转换过程

2.1 背景

8b/10编码的特性就是保证DC平衡——直流平衡,其实就是串行数据中连续出现的1/0达到一个平衡均匀的状态,当高速串行流动逻辑1或逻辑0有多个位没有产生变化时,信号的转换就会因为电压位阶段关系而造成信号错误。
理想电容的阻抗公式在这里插入图片描述通过上面公式可以知道,频率f越高,阻抗越低,反之,频率越低,阻抗越高。因此上图中的情况,当码型是高频的时候,基本可以不损耗的传输过去,但是当码型为连续的0或者1的时候,电容的损耗就很大,导致幅度不断降低,最严重的后果就是无法识别到底是0还是1,因此8b/10b编码就是为了尽量把低频的码型优化成较高频率的码型,从而降低阻抗带来的损耗。
将8bit编码成10bit后,连续的1或者0不能超过5位,所以10b中0和1的位数只可能出现3中情况:
有5个0和5个1
有6个0和4个1
有4个0和6个1

在这里插入图片描述

2.2 具体转换过程

1、拆分转换
假设原始8位数据从高到低用HGFEDCBA表示,8B/10B编码将8位数据分成高3位HGF和低5位EDCBA两个子组。然后经过5B/6B编码,将低5位EDCBA映射成abcdei;高3位经过3B/4B编码,映射成fghj,最后合成abcdeifghj发送。发送时由于是小端模式,a先发送,相反,解码是将1组10位的输入数据经过变换得到8位数据位。在这里插入图片描述2、转换规则

将低5位EDCBA按其十进制数值记为x,将高3位按其十进制数值记为y,将原始8bit数据记为D.x.y,依次查表得到相应的转换结果。

5B/6B编码映射关系表
在这里插入图片描述在这里插入图片描述

举例说明:
例如8bit数“101 10101”,即十进制数181,按照按照3/5的划分原则x=10101(21),y=101(5),所示这个数被表示为D.21.5。此外在8B/10B编码中,还需用到12种控制字符,用来标识传输数据的开始和结束,传输空闲等状态,按照上述规则,将控制字符记为K.x.y。

3B/4B编码映射关系表
在这里插入图片描述RD:running disparity 直译“运行不一致性”,也翻译成“极性偏差”(running disparity,RD),RD是对编码后的数据流Disparity的一个统计,+1用来表示1比0多,-1用来表示0比1多,-1是它的初始化状态,编码中“1”和“0”数量相等的码字称为“完美平衡码”。

和5B/6B组合时D.x.m7和D.x.n7编码必须选择一个来避免连续的5个0或1。
具体怎么选择呢,是有规则的:

D.x.n7用在:x=17 x=18 x=20当RD=-1时;
x=11 x=13 x=14 当RD=+1时。
其他情况下x.n7码不能被使用

举例说明:
例1:
在编码时,RD的初始值为负,即RD-,根据当前的RD值,决定相应的编码输出。比如:在上表中,对于D.x.3(011),其对应的4B码字有两种:1100和0011,若此时RD为负,则取1100作为其对应的4B码字作为输出,同时检验此时的编码是否为完美编码,如果是完美编码,则保持RD的极性不变;否则改变RD的极性。通过控制RD的极性,同时在编码时根据RD的极性选择相对应的编码值,使得编码后的数据流有更好的直流平衡特性。

例2:
在上表中,对于D.x.4(100),其对应的4B码字有两种:1101和0010,若此时RD为负,则取1101作为其对应的4B码字作为输出,同时检验此时的编码是否为完美编码,如果是完美编码,则保持RD的极性不变;否则改变RD的极性。通过控制RD的极性,同时在编码时根据RD的极性选择相对应的编码值,使得编码后的数据流有更好的直流平衡特性,达到我们的缓解长“0”或长“1”的目的。

8B/10B编码映射关系表
在这里插入图片描述下图所示为RD状态转移图:
在这里插入图片描述
规划8B/10B编码机制的时候,使用了12个特殊的控制代码(Control Characters),他们能在数据中被发送,还可以组合成各种“原语”。由于控制字符只有12种,对其单独编码即可,可不按照上述方法对其编码。其编码映射关系如下:

在这里插入图片描述

三、其他相关链接

1、PCI总线及发展历程总结

2、PCIe物理层总结-PCIE专题知识(一)

3、PCIe数据链路层图文总结-PCIe专题知识(二)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hystrix线程池问题

背景:在一个以springcloud为基础架构的微服务项目中,活动期间并发量一大就会出现服务调用失败的问题。经定位发现,被调用服务中无对应的请求日志,继续通过日志查询确认是feign调用时出现服务降级,进入降级方法统一返回…

教会你制作自己的浏览器 —— 并将 ChatGPT 接入

前期回顾 分享24个强大的HTML属性 —— 建议每位前端工程师都应该掌握_0.活在风浪里的博客-CSDN博客2分享4个HTML5 属性,开发必备https://blog.csdn.net/m0_57904695/article/details/130465836?spm1001.2014.3001.5501 👍 本文专栏:开发…

对抗性攻击和防御竞争(Adversarial Attacks and Defences Competition)的通俗解读

通过我们在Pytorch对机器学习模型的安全漏洞攻击方法之Fast Gradient Sign Attack(FGSM,快速梯度符号攻击)https://blog.csdn.net/weixin_41896770/article/details/130319089 这篇文章的介绍,我们了解到FGSM可以对机器学习模型进行有效的攻击,成功的让M…

【MOMO】高水平期刊目录(持续更新)

高水平期刊目录 引言1 顶级期刊目录(A)1.1 IEEE Transactions on Intelligent Transportation Systems1.2 IEEE Transactions on Neural Networks and Learning Systems1.3 Engineering 2 权威期刊目录(A)2.1 Measurement 3 鼓励期…

从零开始三相逆变

1、题目分析 2、方案介绍 系统以220V市电作为电源,通过隔离调压器后分两路经过整流滤波后输入电路,一路为主回路供电,一路为辅助电源供电。三路SPWM波通过数字隔离器ISO7760送至由驱动芯片UCC27211控制三相半桥逆变电路,生成三路…

《嵌入式系统》知识总结2:Cortex-M3处理器和STM32

Cortex处理器分类 Cortex-A(应用)处理器,Cortex-R(实时)处理器,Cortex-M(微控制器)处理器...等 CM3内核优点 1. 高性能Cortex-M内核 • 采用ARM公司流行的标准内核Cortex-M3 • …

探秘C语言中整数的二进制表示:原码、反码、补码,以及大小端字节序的奥秘

本篇博客会讲解整数在内存中的存储形式,以及整数二进制的3种表示形式:原码、反码、补码,还有大小端的相关知识点。相信读完本篇博客,大家对内存的了解会上一个台阶。 注意:本篇博客讨论的是整数在内存中的存储&#x…

将mininet流量数据可视化至前端

目录 准备工作:将mininet流量数据输入数据库流量可视化 准备工作: 创建项目 django-admin startproject mininet_webpython manage.py runserver 0.0.0.0:8000init文件加上: settings改数据库,具体看上一篇 创建第一个app mo…

Windows安装mariadb,配置环境变量(保姆级教学)

软件下载地址:https://mariadb.com/downloads/ 1.双击下载好的软件 2.点击next 3.勾选我同意,点击next 4.这里那你可以设置你要安装的路径,也可以使用默认的,之后点击next 5.如图所示,设置完点击next 6.接下来就默…

如何让ChatGPT成为科研工作中的小助手?(附使用指南)

大家好,我是带我去滑雪! 从2022年年底发布叫ChatGPT的人工智能聊天机器人以来,逐渐强势进入了各行各业,一夜火爆全网,它使用自然语言处理技术来与用户进行交互和沟通,可以回答用户关于知识、娱乐、生活等方…

MySQL高级篇——MVCC多版本并发控制

导航: 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线MySQL高级篇设计模式牛客面试题 目录 1. 什么是MVCC 2. 快照读与当前读 2.1 快照读 2.2 当前读 3. MVCC三剑客 3.1 回顾隔离级别 3.2 隐藏字段、Undo…

组合导航卡尔曼滤波几个杂项

1.组合导航卡尔曼滤波噪声协方差矩阵调参 在组合导航卡尔曼滤波算法中,主要涉及两个噪声协方差矩阵,过程噪声协方差矩阵Q,测量噪声协方差矩阵R,具体来说: R表示测量噪声协方差,它是一个数值,这…

【Unity-UGUI控件全面解析】| Toggle 开关组件详解

🎬【Unity-UGUI控件全面解析】| Toggle 开关组件详解一、组件介绍二、组件属性面板三、代码操作组件四、组件常用方法示例4.1 监听开关事件五、组件相关扩展使用5.1 配合Toggle Group组使用💯总结🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y …

JavaScript实现输入年份月份,判断该月份是多少天的代码

以下为实现输入年份月份,判断该月份是多少天的代码和运行截图 目录 前言 一、实现输入年份月份,判断该月份是多少天 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择,您可以在目录里进行快速查找…

康耐视Visionpro-视觉人机器视觉粉丝-千问之六十五解答

(2023年5月2日更,下次更新2023年10月1日-10月7日) Question0: 康耐视visionpro9.8/9.9-BeadInspect工具详细使用流程 原因分析或解决办法 康耐视visionpro9.8-BeadInspect工具详细使用流程 (qq.com) Question1: C#与visisionpro联合开发exe文件开机启动设置 原因分析…

项目实战笔记

前台:呈现给用户的视觉和基本操作 后台:用户浏览网页时候,用户看不到的后台数据 前面两者都包含前端和后端 技术选型要统一 后端 接入层(control): 接受请求,获取传递过来的参数调用服务层…

unityt光线透射目标

介绍 在Unity中,光线透射目标通常指的是在场景中放置的一些物体,用于模拟光线从一个物体透过到另一个物体的效果。canvas子物体组件中,勾不勾选“光线透射目标”有什么区别? 方法 在Canvas子物体组件中勾选“光线透射目标”时&…

jqGrid之单选

jqGrid不支持单选,本来也想借鉴网上的做法,通过对checkbox的处理来间接实现。但在实践中却发现设置了multiSelect后,checkbox并没有显示出来,怀疑是跟页面的其它前端框架如bootstrap有冲突,索性换个思路来实现&#xf…

C语言的那些少见的事1

目录 前言: 1.变量名称的意义 2.卖函数库的知识 3.变长数组 4.清空输入缓冲区 5.左值和右值 6.for控制语句中定义变量 7.刷题中浮点数的精度问题 8.C语言提供C的标准和C库的约定 9.extern声明外部符号 ❤博主CSDN:啊苏要学习 ▶专栏分类:C语言…

飞书接入ChatGPT - 将ChatGPT集成到飞书机器人,直接拉满效率

文章目录 前言环境列表视频教程1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 转载自远控源码文章:飞书接入ChatGPT - 将ChatGPT集…