首页 理论教育现场总线差错控制编码技术应用

现场总线差错控制编码技术应用

【摘要】:差错控制的目的是使用一些方法发现差错并加以纠正。不同的码字长度影响了编码的差错检测能力。两个等长码组之间对应位不同的数目称为这两个码组的海明距离,简称码距。由于篇幅的关系,这里仅介绍一种纠错码和一种检错码的编码实现方法。图2-18 海明纠错码格式图中,*表示数据码;P表示冗余校验数据码。工作过程下面以数据(信息)1101为例,给出海明码编码、译码及纠错的工作过程。

差错控制的目的是使用一些方法发现差错并加以纠正。通常在信息码元的基础上增加一些冗余码元,冗余码元与信息码元之间存在一定的关系,传输时,将信息码元与冗余码元组成码组(码字)一起传输。

不同的码字长度影响了编码的差错检测能力。例如,一个事物有“有”、“无”两种状态,若用一位码元表示:“1”表示有,“0”表示无,在出现传输错误时,接收端无法发现;若用两位码元组成的码组表示:“11”表示有,“00”表示无,则接收端可发现一位错误;若用3位码元组成的码组表示:“111”表示有,“000”表示无,则接收端可发现一位错误和两位错误。如果考虑出现一位错的概率远大于出现两位错的概率,并认为两位错极少出现,则接收端可以对一位错进行纠错。两个等长码组之间对应位不同的数目称为这两个码组的海明距离,简称码距。一般来说,码距越大,编码的检错和纠错能力越强。但是随着冗余码的增加,传输效率将降低,而且过多的冗余码也增加了传输出现错误的可能性,因此,选择编码还应考虑信道的误码率

根据对码组处理方式的不同,差错控制的方式基本上有两类:一类是在码组中带有足够的冗余信息,以便在接收后能够发现并自动纠正传输差错,简称纠错;另一类是在码组仅包含足以使接收端发现差错的冗余信息,靠重发保证正确传输,简称检错重发方式,这种方式实现比较简单。

无论是纠错方式,还是检错重发方式,都有很多具体的编码方法。由于篇幅的关系,这里仅介绍一种纠错码和一种检错码的编码实现方法。

1.海明码

(1)工作原理

海明码(Hamming)是一种简单实用的一位错纠错编码,它的码组长度、冗余校验位长度和码组中的最大数据位长度满足下列关系:

978-7-111-35607-3-Chapter02-28.jpg

式中,n为码组位长度;r是冗余校验位长度;k是码组中的最大数据位长度。分析可知,冗余校验位长度越长,码组传输数据的效率越高。当数据长度不能满足上式的最大数据位长度值时,可以用固定的数据位填充。

在海明码的编码过程中,冗余码从左至右依次填充到2jj=0,1,…,r-1)的位置上,码组中剩余位填充数据位,如图2-18所示。

978-7-111-35607-3-Chapter02-29.jpg

图2-18 海明纠错码格式

图中,*表示数据码;P表示冗余校验数据码。

如果冗余码的位数为r,则存在这样一个(2r-1)行×r列的编码矩阵,矩阵元素等于0或1,并且每一行的元素所组成的二进制编码等于行数的二进制编码。对于海明纠错码,要求码组数据与这一矩阵相乘满足下列关系:

978-7-111-35607-3-Chapter02-30.jpg

式中,*和P仍为数据码和校验码;b=1,b=0;l1=l2=…=lr-1=lr=0。根据这一关系可以计算出冗余校验码。这里矩阵的乘除运算与普通矩阵的乘除运算一样,加减运算为“异或”运算。

接收方收到数据后,将码组数据与发送方编码时用的编码矩阵相乘,若得到的行矩阵为零矩阵,说明传输正确;否则传输有错,且出错位是这一行的元素所组成的二进制数所对应的数据位。

(2)工作过程

下面以数据(信息)1101为例,给出海明码编码、译码及纠错的工作过程。

1)编码过程。

根据公式978-7-111-35607-3-Chapter02-31.jpg,可选择数据长k=4,冗余码长r=3,码组长n=7。由关系式

978-7-111-35607-3-Chapter02-32.jpg

可以计算出:P1=1

P2=0

P3=0

所求的海明编码为(1 0 1 0 1 0 1)。

2)译码过程。

假设接收方接收到的数据为(1 0 1 0 1 1 1),传输出错判断:(1 0 1 0(www.chuimin.cn)

978-7-111-35607-3-Chapter02-33.jpg

说明传输出错,(110)2=6,可以进一步判断出第6位出错。

3)纠错。

将接收到的编码左数第6位取反,恢复出正确数据。

(1010111)→(1010101)

2.循环冗余编码

(1)工作原理

循环冗余编码(CRC)的方法是将要发送的数据比特序列当做一个多项式fx)的系数,在发送方用收发双方预先约定的生成多项式Gx)去除,得到一个余数多项式。将余数多项式加到数据多项式之后发送到接收端。接收端用同样的生成多项式Gx)去除接收数据多项式fx),得到计算余数多项式。如果计算余数多项式与接收余数多项式相同,则表示传输无差错;如果计算余数多项式不等于接收余数多项式,则表示传输有差错,由发送方重发数据,直至正确为止。CRC检错能力强,实现容易,是目前应用最广泛的校验方法之一,其工作原理如图2-19所示。

978-7-111-35607-3-Chapter02-34.jpg

图2-19 CRC基本工作原理

(2)工作过程

1)在发送端,发送数据多项式为fxxk,其中k为生成多项式的最高幂值。例如CRC-12的最高幂值为12,则发送fxx12。对于二进制乘法来说,fxx12的意义是将发送数据比特序列左移12位,用来存入余数。

2)将fxxk除生成多项式Gx),即

978-7-111-35607-3-Chapter02-35.jpg

式中,Rx)为余数多项式。

3)将fxxk+Rx)作为整体,从发送端通过通信信道传送到接收端。

4)接收端对接收数据多项式f′x)采用同样的运算,即

978-7-111-35607-3-Chapter02-36.jpg

求得计算余数多项式。

5)接收端根据计算余数多项式R′x)是否等于接收余数多项式Rx)来判断是否出现传输错误。实际的CRC校验码生成是采用二进制模二算法,即减法不借位,加法不进位,这是一种异或操作。

(3)CRC生成多项式

CRC列入国际标准的生成多项式有:

978-7-111-35607-3-Chapter02-37.jpg

生成多项式的结构及检错效果是经过严格的数学分析与实验后确定的。

(4)CRC编码实例

假设发送数据位序列为111011,生成多项式位序列为11001。将发送位序列111011(fx))乘以24得1110110000(fxxk),然后除生成多项式位序列11001(Gx)),不考虑借位,按模二运算,得余数位序列为1110(Rx))。