信号协议编码介绍

文摘   科学   2024-05-13 07:26   北京  

        


         个人微信二维码



本文所要说的信号编码是指将信号原来的01序列按照一定的规则重新排列的过程。

那么信号为什么要进行编码呢?

最主要的原因就是信号本身是高频交流信号,但是原始的信号序列可能出现多个连续的01,那么此时就表现出了一定的低频分量;

第一、如果链路中串有电容器件,前边的文章中讲过,电容对低频分量有一定的衰减

第二、信号中出现比较多的连续的01会使信号的码间干扰更恶劣,眼图更差;

因此,信号协议采取了一定的编码以保持01的平衡;

下面我们看一下,几种常见的编码;

RZreturn to zero,即归零码,电平每次跳变后,都要占用一个bit位进行归零(此bit位不是有效传输数据),此编码只有50%的效率;

NRZnon-return to zero,非归零码,信号每次跳变后,电平不进行归零,序列中发送的bit1,电平则由0跳变到1,序列中发送的bit0,电平则由1跳变到0此编码有100%的效率,但是不能保证链路中的DC平衡;

NRZInon-return to zero inverted,非归零反转码,当序列中发送的是bit1,电平发生跳变,由高到低,或由低到高都可以,当序列中发送的是bit0,信号不发生跳变,此编码不能保证链路中的DC平衡;

MLT-3:multi-level transit-3,多电平传输码,有+10-1三种电平,当序列中发送的是bit1,电平则发生跳变,如果序列中发送的是bit0,则不跳变,跳变时,如果前一个bit+1或者-1,则下一个bit变为0,如果前一个bit0,则下一个bit与最近的一个非0bit相反,这种编码由于有三种电平跳变,直流平衡要好于前两种;

 

Manchester编码:当序列发送的是bit0时,电平由低电平跳变到高电平,当序列发送的是bit1时,信号由高电平跳变到低电平,这种编码里电平的跳变都是强制的,因此每bit就多出了1bit位进行电平调整,所以这种编码虽然保证了每bit信号都发生跳变,但是效率只有50%

4b/5b这种编码是将原来4bit的序列变为5bit,也就是原来一共有24次方(16)种可能的数据,现在有2的五次方(32)种,在这32位种选取16bit0bit1数量相当的组合,如00111/10110等,与原来的4bit序列一一对应,剩下的可以挑选用作控制,4b/5b映射表如下:

 

这样做的好处是在32组序列中可以将其中01数量比较均衡的组合选出16组,从而保持DC平衡;

上表就是由原序列的4bit和编码后的5bit序列进行的一一映射,除了01的平衡,没有别的规律了,直接查表就行;

8b/10b4b/5b编码类似,这种编码是将8bit的数据用10bit表示,要注意,先将原来的8bit数据拆分成3bit5bit,再将高3bit映射为4bit,将低5bit映射为6bit,映射表如下:

 

3bit映射表

 

5bit映射表

从表中可以看到,有些序列是分RD+RD-的,如果,0的数量多,则该序列记为RD+,如果1的数量多,则该序列记为RD-,当前一序列为RD+时,下一序列则用RD-,反之亦然,保持直流平衡;

例如,原序列为000 00000,那么编码后,高3bit映射为1011RD-),那么低5bit映射为011000RD+),以此保证连续01的数量

这种编码种最大连1和连0的数量为5,这种编码的直流平衡得到了保障,但是效率只有80%,比较高速的信号逐渐不采用这种编码了;

另外,需要注意一种数据的表示形式:D.31.2D就是数据,31则表示该8bit数据的低5位,2表示高3位,所以D.31.2就是010 11111

下表是D码的编码表,以及由8bit转为10bit的映射:

 

 

K码表示控制码,如K28.5,则表示控制码,101 11100

K码映射表如下:

下篇文章继续介绍64/66b128/130bPRBS等编码;

推荐阅读

信号包地反而更差?

AC耦合电容位置对信号的影响

公众号分享了一些资料,包括一些信号标准协议,仿真软件,分别在公众后台回复:

“信号协议”获取信号协议网盘链接;

“软件”获取仿真软件网盘链接;

另外,烦请大家帮忙关注,帮忙转发


开仿啦
信号完整性、电源完整性分享平台