SATA系列专题之二: 2.1 Link layer链路层8b/10b编码解析

简介: 8b/10b编码是目前高速串行通信中经常用到的一种编码方式,直观的理解就是把8bit数据编码成10bit来传输。

一、故事前传

我们上回说到Link layer的结构,link layer的作用大致可以包括以下几点:

  • Frame flow control
  • CRC的生成与检测
  • 对数据与控制字符的Scrmable/Descramble
  • 8b/10b编解码
  • 将传输层进来的数据转为Frame


二、8b/10b编解码

8b/10b编码是目前高速串行通信中经常用到的一种编码方式,直观的理解就是把8bit数据编码成10bit来传输


为什么要引入这种机制呢?其根本目的是“直流平衡”。当高速串行流动逻辑1或逻辑0有多个位没有产生变化时,信号的转换就会因为电压位阶段关系而造成信号错误,直流平衡的最大好处便是可以克服以上问题。


将8bit编码成10bit后,连续的1或者0不能超过5位,所以10b中0和1的位数只可能出现3中情况:

  • 有5个0和5个1
  • 有6个0和4个1
  • 有4个0和6个1

这样引出了一个新术语“不均等性”(Disparity),就是1的位数和0的位数的差值,根据上面3种情况就有对应的3个Disparity0、-2、+2.


在SATA协议中资料值可以统一的表示为Dx.y或Kx.y,其中D表示资料字元,K表示特殊的控制字元, x表示输入的原始资料的低5位元,y表示输入的原始资料的高3位元。 通俗的讲,也就是8bit原始数据会分成两部分,其低5位进行5B/6B编码,高3位则进行3B/4B编码。


对K控制字元的编码方式和D资料字元编码方式一样。

协定中只使用了两个控制字元K28.3和K28.5

  • K28.5只用在Primitive基元ALIGNp byte0,
  • K28.3用在除ALIGNp之外的其他任何Primitive基元的byte0.


举个栗子:例如一个8bit数据10110101,x=10101(十进制为21) y=101(十进制为5),我们就把这8bit数据写成D21.5。对照5B/6B以及3B/4B加密对照表(如下表),可以得到10bit数据为1010101010




相关文章
|
9月前
|
设计模式 算法 程序员
高端程序员的朴素编码方式解析
在互联网信息技术飞速发展的今天,程序员这一职业也一直受到社会的重视和关注,不仅是因为程序员有着相对来说的高薪,而且还有程序员单调且良好的工作、生活习惯。但在程序员群体中,高端程序员无疑是最受关注的一种,高端程序员不仅有着丰富的经验和技术,而且在编码方面也有着自己独特的编码方式和思想。那么接下来本文就来分享一下高端程序员所具备的低调之处,以及高端程序员的朴素编码方式。
104 1
高端程序员的朴素编码方式解析
|
4天前
|
Dubbo Java 应用服务中间件
微服务框架(十七)Dubbo协议及编码过程源码解析
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为Dubbo协议、线程模型、和其基于Netty的NIO异步通讯机制及源码
|
4天前
|
数据安全/隐私保护
URL编码解析方式-特殊字符加密和解密
URL编码解析方式-特殊字符加密和解密
32 0
|
9月前
|
数据安全/隐私保护
URL编码解析方式-特殊字符加密和解密
我们一起来看看为什么要给特殊字符进行加密,那又如何进行解密呢?
79 0
|
9月前
|
前端开发 rax Linux
深度解析shellcode原理及编码技术
深度解析shellcode原理及编码技术
127 0
|
11月前
|
编译器
VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll
VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll
331 0
|
JavaScript
js: 从base64编码中解析图片信息
js: 从base64编码中解析图片信息
193 0
|
存储 JavaScript 算法
计算机组成原理系列(二):计算机编码全解析
你是不是工作了很多年了,一直没搞清楚计算机中的各种编码规则,虽然平时都会使用,但是内部机制原理一直都是之其然而不知其所以然,开发中也会经常涉及到这块内容,但都没有太多重视
|
JSON Go 数据格式
Golang JSON的编码和解析
Golang JSON的编码和解析
127 0
|
测试技术
蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:8.字符串编码
蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:8.字符串编码
87 0
蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:8.字符串编码

推荐镜像

更多