CXP协议的传输层介绍 8b/10b编码

2024-01-08 04:30

本文主要是介绍CXP协议的传输层介绍 8b/10b编码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

8b/10b编码与K码

upconnection 和downconnection均使用8b/10b编码,因此我们先简单回顾一下8b/10b吧

8B/10B编码被广泛应用到高速串行总线,如IEEE1394b、SATA、PCI-Express、Infini-band、FiberChannel、XAUI、RapidIO、USB 3.0、JESD204B、CXP等几乎所有高速串行协议。8B/10B编码将待发送的8位数据转换成10位代码组,其目的是保证直流平衡,避免出现长时间的0或者1,避免有效信号被滤除。

8bit原始数据可以分成两部分:低位的5bit EDCBA(设其十进制数值为X)和高位的3bit HGF(设其十进制数值为Y),可以记为D.X.Y或K.X.Y,其中D.X.Y表示有效数据,K.X.Y表示控制字符。

另外,8B/10B编码中还用到12个控制字符,他们可以作为传输中帧起始、帧结束、传输空闲等状态标识,与数据字符的记法类似,控制字符一般记为K.X.Y。8bit数据有256种,加上12种控制字符,总共有268种。10bit数据有1024种,可以从中选择出一部分表示8bit数据,所选的码型中0和1的个数应尽量相等。8B/10B编码中将K28.1、K28.5和K28.7等作为K码的控制字符,称为“comma”。在任意数据组合中,comma只作为控制字符出现,而在数据负荷部分不会出现,因此可以用comma字符指示帧的开始和结束标志,或始终修正和数据流对齐的控制字符。

DC均衡 DC-balanced

DC banlance表示0和1的个数接近,出于2个目的:1、避免长1长0,这样信号从频谱上看是比较干净的,利于信号的传输;2、保证接收端可以通过数据正确恢复时钟(clock recovery)

不一致性 Disparity

使用 “不一致性(Disparity)”来描述编码中"1"的位数和"0"的位数的差值(1个个数减去0的个数),8b/10b编码仅有"+2"(  "0"比"1"多两个)、"0"( "0"与"1"个数相等)以及"-2"("1"比"0"多两个)这三种状况,这是因为编码由3b/4b 与5b/6b编码组成,他们各自的dispararity都只会有1,0,-1的数值,累加之后就只会有+2,0,-2 三种情形。

运行不一致性 Running Disparity

上述不一致性的说法针对的是一个静态的单10bit编码,会有+2,0,-2三种情形,为了保证DC均衡,我们要保证长时间的累计编码不一致性要接近于0,为了保证这个特性,每个十进制码会对应RD+和RD- 两组编码,RD-对应+2 or 0,RD+ 对应 -2 or 0,Next RD值依赖于Current RD以及当前6B码或者4B码的Disparity。根据Current RD的值,决定5B/4B和 3B/4B编码映射方式,编码映射表如下图所示:

8b/10b编码在CXP 传输层的应用举例

CXP的数据传输全部使用8b/10b编码,每4个10bit编码成为1个word,除了低速数据传输中的trigger触发数据包需要占用6个字符。每个word中对应的4个字符分别成为P0/1/2/3,传输时P0先完成传输,接收端需要先接收对齐控制码来找到正确的边界,然后解析数据。

下表是CXP协议中对于控制码的应用规则。

下图是IDLE word对应的传输,IDLE是CXP处于空闲状态时,总线上必须传输的一组字符,对于高速数据传输来说,每隔99个word应当发送一次IDLE,对于低速传输每隔9999个word应当传输一次IDLE。IDLE对应的K码分别为

根据之前的编码对应表格,我们来分析一下K28.5对应0011111010(因为初始的RD必须是-1), k28.1对应1100000110(RD应该等于+1,从而保证DC平衡)。

那么具体如何实施8b/10b 编码呢?

1、参考原始专利自主编写;

2、参考 open cores https://opencores.org/projects/8b10b_encdec;VHDL

3、参考 https://github.com/fransschreuder/8b10b_VHDL;VHDL

4、参考 http://asics.chuckbenz.com/#My_open_source_8b10b_encoderdecoder ; Verilog

还有一个问题,具体实施中,如何确定byte的boundry呢?即如何对齐呢?

1、利用K28.5做对齐,在接收端的alignement 对齐逻辑中,反复 滑动bit,直到找到K28.5的10bit pattern;

这篇关于CXP协议的传输层介绍 8b/10b编码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/582318

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G

form表单提交编码的问题

浏览器在form提交后,会生成一个HTTP的头部信息"content-type",标准规定其形式为Content-type: application/x-www-form-urlencoded; charset=UTF-8        那么我们如果需要修改编码,不使用默认的,那么可以如下这样操作修改编码,来满足需求: hmtl代码:   <meta http-equiv="Conte