目录

第一章         内容梗概.

第二章         8B/10B编码是什么

第三章         8B/10B编码的作用

第四章         8B/10B编码的实现机制.

第五章         总结


  • 第一章 内容梗概

随着高速串行通讯的应用愈发广泛,作为高速串行通讯重要内容的8B/10B编码也成了我们需要了解学习的内容,因为只有熟悉了8B/10B编码才能正确的理一些解高速串行传输机制,要不然会有好多问号徘徊在脑袋里,对此我深有感触。

要想真正理解8B/10B编码,就要知其所以然,这样是亘古不变的道理,为此我做了如下的内容安排:

第二章:8B/10B编码是什么?知道它是谁家的孩子,也就大体知道它是干什么的了

第三章:了解 8B/10B编码的作用,这也是它诞生的初衷,存在的意义。了解其作用,不仅是了解其作用,当我们紧抓其目的,也就能对其实现方式有了生层次的理解。

第四章:了解8B/10B编码是如何实现的以及背后的考量。


第二章 8B/10B编码是什么

何为编码,编码就是信息从一种形式或格式转换为另一种形式的过程,例如用1表示3.3V,再例如我们熟知的ASCII码都是编码。8B/10B编码也是一种编码,我们可以简单的理解为用一个位宽10bit的数据来表示一个位宽为8bit数据的编码方式,但这种理解是直观的感受,更是粗浅的解释。

8B/10B编码其实不仅提供给我们将8bit数据用10bit表示这样一种编码方式,更重要的是为我们高速串行传输提供了一种链路控制方式,因为它是一种信道编码技术。

这里又涉及到一共新的名词,信道编码。信道编码是一门学科,代表人物有香农前辈、汉明码的发明人Hamming等,编码技术也是不胜枚举,曼切斯特编码、卷积码以及我们要说的8B/10B编码等等。信道编码又称之为线路编码,还可以称之为差错控制编码,其目的就是消除信号在传输过程中的干扰,让信号更干净,接收端能够准确的解析出来。所以8B/10B编码就是为实现上述目的所提供的一种编码方式。


第三章 8B/10B编码的作用

高速串行通讯的实现有这样两个难点,一是如何保证数据在传输中的质量,二是接收端如何从01中将数据恢复出来。当然,完成这项任务不是8B/10B编码一人就可以解决的,需要群策群力。

8B/10B编码的主要贡献有两个方面,一是尽可能的保证串行数据流中的0和1平衡,二是提供控制字符。下面我们就从这两个方面来展开阐述。

保证0、1平衡,也就是0和1的个数差不多,再换句话说就是高电平和低电平的持续时间差不多。这是种说法很不专业哈,专用的说法叫直流平衡或者说DC平衡。为什么需要DC平衡呢,这和高速串行通讯物理实现方式有关。

对于高速信号的处理,可以使用直流耦合和交流耦合,对于高速串行通讯,若要实现远距离通讯或者光通讯,则只能使用交流耦合的方式。例如Xilinx的高速串行通讯模块GTP、GTX等,都有模拟前端AFE,就是电流模式高速输入差分缓冲器,如下图所示。

我们晓得电容特性是“隔直通交”,如果数据流中长时间没有电平翻转,那么必然会将其视为直流被阻断造成极性偏差,也就是电势差不满足高低电平的判断阈值,进而造成对接收电平信号的误判,进而导致接收数据出错,如下图所示。

看到这里有没有意识到8B/10B编码的目的了?

如果是8Bit数据,必然会出现全是0全是1的情况,而如果出现连续5个“1”或5个“0”,则会导致DC不平衡。所以我们要对这8Bit数据进行编码,换一种方式,这种方式既能表示出8bit数所表示的数值,又能保证0和1不会长时间没有翻转,所以8B/10B编码应运而生。我们从10bit中挑出一些0和1差不多的来表示这256个数据,自然就能保证直流平衡。

这里,可能有个疑问,为什么要用10bit,而不是9bit或是11bit,因为这时在提高传输效率和保证传输质量间的最优解,可以体会下~

但凡接触串行通讯的朋友,相比都知道K码,用来实现据对齐到字节/字、通道绑定等功能。记得在学习初期,看到用户接口会在空闲时候发“BC”,当时我想破脑袋也没想明白一件事,接收端是如何区分K码和数据的。因为数据包里也有BC这个值呀?之所以产生这样的疑惑,是因为我简单的把8B/10B编码理解成给8bit数据填上2bit组成10bit数了。而实际不是填上,是从10bit这样1024个数里面挑出256个表示8bit数据,又从这1024个挑出12个来表示K码。所以8B/10B编码分为数据字符和控制字符两类,通过这两种类型数据的组合,我们就能从串行数据中将数据恢复出来。

另外,8B/10B编码还有很多好处,例如有助于时钟恢复,接收端需要根据我们发送的数据通过CDR把时钟恢复出来,只有提供足够的电平翻转,也能恢复出来也不至于PLL失锁。还能具有简单的纠错功能,如果检出10bit数不少标志规定编码,则表示边界未对其或数据存在问题。


  • 第三章  8B/10B编码的实现机制

本章来阐述下将8bit转换为10bit编码是如何实现的,转换的目的是保证DC平衡,所有用10bit表示8bit的原则也是尽可能的从1024个里面挑选出0和1差不多的,而且是01交替差不多的。但即便是1024个数据,0和1差不多且分布均匀的,也是少之又少,那我们怎么实现呢?

IBM公司的Al Widmer和PeterFranaszek为我们指定了编码准则,首先将8bit原始数据差分两个部分,低5bit是一组,可设为EDCBA,其值用X表示,X是十进制数,高3bit作为一组,可设为HGF,其值用Y表示,Y也是十进制数。我们如果表示的是数据,则用“D”表示,所以数据字符就可以表示为DX.Y,例如十进制40,则表示D2.8。控制字符是用K表示,我们称之为K码,或叫“comma”,其表示方法和数据字符方法一样,即KX.Y,例如我们比较常见的K28.5、K28.7。

可能有人问,为什么要拆分5bit和3bit表示呢?因为1024个数还是太少,不拆分无法提供如此多的满足条件的数,但要在保证DC平衡的前提下尽可能的提高传输速率,所以就得在设计上多花些心思了。

可能又有人会问,为什么要拆分5bit和3bit就能保证DC平衡呢?上文我们提到,如果出现连续5个1或0就会造成极性偏差,而串行数据只有0和1。所以我们不仅要保证本组编码后的10bit数没有连续这么多0或1,也要保住和上一组连在一起没有这么多0或1。采用这样“小数据段”的编码方式对硬件来讲更好实现,我们从6bit挑出不超过5个连续0和1的,从4bit数据挑出不超过3个连续0和1的,让它组合起来更有利于我们实现上述目的。那么,它们是怎么组合呢?保证组合起来没有超过连续个0或1,我们先看下图,这是3B/4B和5B/6B的编码表

我们可以看到有些数不止有一种编码方式,而且还有“RD=-1”和“RD=+1”这的标识,这是什么意思呢?

这又引入了一个新的名词,叫做“RD”,全称running disparity,叫做运行不一致性,也就是我们上文提到的极性偏差。这个用来衡量编码数据的不平衡度,所谓的不平衡度就是编码数据中“1”的个数减去“0”的个数后的差值,如果是整数,成为极性为正的编码数据,也就是“RD=+1”,反之“RD=-1”。如果0和1一样多,则分三种情况,例如“111000”、“1100”为正极性,“000111”“0011”为负极性,其他情况为中性。

这里有朋友可能疑惑,是不是说反了,上表中“RD=-1”的明明是1比0多呀?!没有说反,我们看RD这一栏的左边对应的是“input”,也就是说输入如果是“RD=+1”,那么就要选择0比1多的,这就揭示了为什么要分正、负、中极性、3B/4B和5B/6B的组合方式以及上组编码与下组编码的规律。

举例来说,例如8B的“0”,如果6B编码0是“100111”那么4B编码选什么呢?当然是“0100”更好了,虽说选哪个都没有连续5个0和1,但明显“0100”更均衡,例如D7.4,如果选错就造成了5个0了。所以虽说对0的编码有4种组合,实际上只有两组可用的,而这就是极性平衡的要求。如下图就是部分编码组合出来的结果

这里有区分了两组情况,“RD-”和“RD+”,这和6B、4B组合一样,如果本组是RD-,那么下组选择RD+,当然也有种情况,就是6B和4B编码中0和1的个数一样多,如下图,那么选那组就无所谓了。

现在有没有感觉出这个“RD”的作用,就是方便我们进行数据流极性的控制,6B是R-,那么4B就选R+,上组是R-,那么下组就选R+。这里有一点还需要注意,上表中的“-1”不是0比1多1个,而是表示一种状态,无论是6B、4B还是10B,都不可能出现0和1之间差一个,只会出现多两个、少两个和一样多。如果出现其他情况,则说明是有问题的。

接下来我们简单说下K码,也就是控制码,有的地方称之为“逗号”或者“comma”。如下图所示12个K码,我们可以用它表示不同的状态

如下图所示,在数据流中不同的K码充当不同的角色,在数据恢复时,我们可以通过寻找K28.7来实现字节对齐,识别到K28.1准备接收数据,并在这不同阶段可以产生不同的状态信号。


  • 总结

8B/10B编码的机制介绍完了,如何进行程序设计就不赘述了,而且现在很多硬核都实现了该功能,无需我们去敲代码。

当我学习完8B/10B编码后,不得不佩服前辈大牛们的智慧,通过如此巧妙的方式就解决了高速串行通讯中的诸多问题。

其实在我工作中,8B/10B编码用的不是很多,但依旧可以从中学到很多。

剖析8B/10B的实现机制相关推荐

  1. 高速串行总线系列(1)8B/10B编码技术

    目录 8B/10B编码 5B/6B 编码表 3B/4B 编码表 控制字符编码表 8B/10B编码的利用率 参考文献 8B/10B编码 为什么要使用8B/10B编码? 8b/10b编码的特性之一是保证D ...

  2. Aurora 8B/10B、PCIe 2.0、SRIO 2.0三种协议比较

    在高性能雷达信号处理机研制中,高速串行总线正逐步取代并行总线.业界广泛使用的Xilinx公司Virtex-6系列FPGA支持多种高速串行通信协议,本文针对其中较为常用的Aurora 8B/10B和PC ...

  3. 线路/信道编码技术(1)——8B/10B编码

    1. 线路编码技术 线路编码机制将输入原始数据转变为接收器可接收的数据格式,同时保证数据流中有足够的时钟信息提供给接收端的时钟恢复电路.线路编码技术提供了一种将数据对齐到字节/字的方法,可以保持良好的 ...

  4. Aurora 8B/10B光口通信

    8.5.8.1 概述 本课程内容参考XILINX 官方文档PG046(https://www.xilinx.com/support/documentation/ip_documentation/aur ...

  5. #PCIE# 8b/10b 编码

    前言 8B/10B,也叫做8字节/10字节或8B10B.8B/10B方式最初由IBM公司于1983年发明并应用于ESCON(200M互连系统),由Al Widmer和Peter Franaszek在I ...

  6. 让我们来搞清楚8b/10b编码到底是怎么回事吧

    前言:很多知识我们往往只是了解了皮毛,不知道它为什么产生,更不清楚它深层的应用,很多人半瓶水晃荡,而这正是我最厌恶的,对于8B/10B编码这个知识点我就来扯开它的神秘面纱. 8b/10b的由来: 8B ...

  7. 高速串行通信常用的编码方式-8b/10b编码/解码

    绪论 8b/10b编码/解码是高速串行通信,如PCle SATA(串行ATA),以及Fiber Channel中常用的编解码方式.在发送端,编码电路将串行输入的8比特一组的数据转变成10比特一组的数据 ...

  8. 高速信号编码之8B/10B

    1. 线路编码技术 在高速链路中导致接收端眼图闭合的原因,很大部分并不是由于高频的损耗太大了,而是由于高低频的损耗差异过大,导致码间干扰严重,因此不能张开眼睛.针对这种情况,可以通过CTLE和FFE( ...

  9. 【FPGA】8B/10B编码--转自wiki百科

    8B/10B,也叫做8字节/10字节或8B10B.8B/10B方式最初由IBM公司于1983年发明并应用于ESCON(200M互连系统),由Al Widmer和Peter Franaszek在IBM的 ...

最新文章

  1. 十年磨一剑,可重构计算架构将引领未来芯片市场
  2. MySQL CAST与CONVERT 函数的用法
  3. python怎么获取redis中的数据_python 获取的redis里的数据怎么处理
  4. 实验四报告 20135209潘恒 20135204郝智宇
  5. 天上地下,马斯克和贝佐斯终有一战?
  6. 记OC迁移至swift中笔记20tips
  7. 卸载MySQL以及重装卡到Start Services的解决办法(亲测有效,刚重装成功)
  8. Matlab之eval函数
  9. Microsoft Fakes
  10. 暗通道理论详解及的Python实现
  11. 计算机视觉开篇---读史可以明智
  12. word选择粘贴没有html格式,Word选择性粘贴怎么用?Word设置无格式文本粘贴快捷键的方法...
  13. 今天在XP下装SQL2000个人版MB用了两个钟
  14. 四种常用的Git工作流过程分析
  15. 什么是API Mock测试?
  16. Linux iperf 用法介绍
  17. 不疯魔不成活系列【1】
  18. 新手小白如何精准引流?新手小白精准引流思路
  19. 神经学家探寻:机器如何拥有意识!
  20. updater-script命令详解教你写刷机脚本

热门文章

  1. java interface接口和多继承
  2. java封装、继承和多态练习题
  3. 带栩字的优美古诗句_栩字取名的寓意 带栩字好听大气的名字女孩
  4. CIC 滤波器——不同长度的5级CIC滤波器的频谱特性
  5. 学习笔记,C,n+nn+nnn+nnnn+nnnnn
  6. JQueryDOM和遍历
  7. 《痞子衡嵌入式半月刊》 第 15 期
  8. Packet Tracer(第二期)--4RIP
  9. 5,10,15,20-四苯基卟啉(TPP)及金属配合物FeTPP/MnTPP/CuTPP/ZnTPP/NiTPP/CoTPP/PtTPP/PdTPP/CdTPP齐岳供应
  10. Geohash应用——附近乡镇信息挖掘(提升检索召回与准确)