1 级联纠错编码原理
纠错编码技术是通过引入可控制的冗余来提高系统的可靠性。它的理论基石是1948年Shannon在《通信的数字理论》中提出的著名的有扰信道编码定理。纠错码按照不同的分类标准,有着不同的分类。我们常用的是按照对信息元处理的不同方法来分类的,分为分组码和卷积码。分组码是把信源输出的信息序列,以k个码元划分为一段,通过编码器把这段的k个信息元,按一定规则产生r个校验(监督)元,输出长为n=k+r的一个码组。比较常用的有BCH码、RS码、Hamming码等。卷积码是把输出信源输出的信息序列,以k0个(k0通常小于k)码元分为段,通过编码器输出长为n0(≥通常小于k)码元分为一段,通过编码器输出长为n0(≥通常小于k)码元分为一段,通过编码器输出为n0(≥k0)的一的码以。但是该码段的n0-k0个校验元不仅与本组的信息有关,而且也与其前m段信息元有关,称m为编码存储。因此卷积码用(n0,k0,k)表示。
由信道编码理论可知,随着码长n的增加,解码错误概率以指数方式趋近于零。因此,为提高纠错码的有效性,就必须使用长码。但码长增加,码率会相应下降,解码设备的复杂性与计算量也相应增加,级联码有针对性的解决这了一矛盾。它将编码过程分为前后串行的几级完成,可以满足信道纠错对编码长度的要求,得到与长码相同的纠错能力和高编码增益;而且增加的编/解码复杂度不是很大。其原理示意框图如图1所示。
级联码有内码和外码两级,内码是GF(2)上的一个[n,k]码,外码是GF(2k)上的[N,K]寿终正寝,编码规则如下。
①先将k×k个二进制信息元划分成K段,每段有k个信息元。
②每段的k个信息元可看成是GF(2k)上的一个符号。将K个符号按外码的编码规则编成一个外码,码长为N,有K个信息符号,N-K个校验符号,最小码距为do,码率Ro=K/N。
③外码的每一个符号,看成是k个二进制码元的码组,输入内码编码器,得到一个内存,码长n,有n-k个校验元,最小码距为di,码率Ri=k/n,由此得到N个[n,k]内码的码字序徇。两级编码总共得到N×n个二进制码元,K×k个信息元,组成[K×n,K×k,do×di]级联码的码。
我们选用的外码为RS(31,15)码,生成多项式为G(X)=1+x2+x3,内码用卷积码(2,1,7),其生成多项式G0=171,G1=131(都是八进制)。RS码是GF(q)(q!=2)上,码长N=q-1的本原BCH码,具有很强的纠错能力,其最大可能的最小距离是校验元的个数加1,因而RS码是一种极大最小距离可分码(MDS),是一种最佳的线性循环码。本例中使用的RS(31,15)码的汉明距为17,可以纠8个错误。交织技术是抗突发干扰的重要手段,它是采用一个交织矩阵,存储方向与发送时的方向不一样,从而将突发错误离散化,提高抗突发干扰的能力。本方案中RS编码按行存储,发送时按列,并且对每列都进行卷积编码,可以抵抗8×列长的突发干扰。卷积编码Viterbi软判决解码,可以充分的利用各个码组之间的相关性,提高很高的编码增益。各个组成码和级联后的纠错性能仿真图如图2所示。
考点----校验码
二进制数据经过传送、存取等环节,会发生误码(1变成0或0变成1),这就有如何发现及纠正误码的问题。所有解决此类4问题的方法就是在原始数据(数码位)基础上增加几位校验(冗余)位。
一、码距
一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit)数叫这两个码字的码距,而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距。
如图1所示的一个编码系统,用三个bit来表示八个不同信息中。在这个系统中,两个码字之间不同的bit数从1到3不等,但最小值为1,故这个系统的码距为1。如果任何码字中一位或多位被颠倒了,结果这个码字就不能与其它有效信息区分开。例如,如果传送信息001,而被误收为011,因011仍是表中的合法码字,接收机仍将认为011是正确的信息。
然而,如果用四个二进数字来编8个码字,那么在码字间的最小距离可以增加到2,如图2的表中所示。
信息序号
二进码字
a2
a1
a0
0
0
0
0
1
0
0
1
2
0
1
0
3
0
1
1
4
1
0
0
5
1
0
1
6
1
1
0
7
1
1
1
图 1
信息序号
二进码字
a3
a2
a1
a0
0
0
0
0
0
1
1
0
0
1
2
1
0
1
0
3
0
0
1
1
4
1
1
0
0
5
0
1
0
1
6
0
1
1
0
7
1
1
1
1
图 2
注意,图8-2的8个码字相互间最少有两bit的差异。因此,如果任何信息的一个数位被颠倒,就成为一个不用的码字,接收机能检查出来。例如信息是1001,误收为1011,接收机知道发生了一个差错,因为1011不是一个码字(表中没有)。然而,差错不能被纠正。假定只有一个数位是错的,正确码字可以是1001,1111,0011或1010。接收者不能确定原来到底是这4个码字中的那一个。也可看到, 在这个系统中,偶数个(2或4)差错也无法发现。为了使一个系统能检查和纠正一个差错,码间最小距离必须至少是“3”。最小距离为3时,或能纠正一个错,或能检二个错,但不能同时纠一个错和检二个错。编码信息纠错和检错能力的进一步提高需要进一步增加码字间的最小距离。 图8-3的表概括了最小距离为1至7的码的纠错和检错能力。
码距
码 能 力
检错 纠错
1
2
3
4
5
6
7
0 0
1 0
2 或 1
2 加 1
2 加 2
3 加 2
3 加 3
码距越大,纠错能力越强,但数据冗余也越大,即编码效率低了。所以,选择码距要取决于特定系统的参数。数字系统的设计者必须考虑信息发生差错的概率和该系统能容许的最小差错率等因素。要有专门的研究来解决这些问题。
二、奇偶校验
奇偶校验码是一种增加二进制传输系统最小距离的简单和广泛采用的方法。例如,单个的奇偶校验将使码的最小距离由一增加到二。
一个二进制码字,如果它的码元有奇数个1,就称为具有奇性。例如,码字“10110101”有五个1,因此,这个码字具有奇性。同样,偶性码字具有偶数个1。注意奇性检测等效于所有码元的模二加,并能够由所有码元的异或运算来确定。对于一个n位字,奇性由下式给出:
奇性=a0⊕a1⊕a2⊕…⊕an
奇偶校验可描述为:给每一个码字加一个校验位,用它来构成奇性或偶性校验。例如,在图8-2中,就是这样做的。可以看出,附加码元d2,是简单地用来使每个字成为偶性的。因此,若有一个码元是错的,就可以分辨得出,因为奇偶校验将成为奇性。奇偶校验编码通过增加一位校验位来使编码中1个个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2。因为其利用的是编码中1的个数的奇偶性作为依据,所以不能发现偶数位错误。
再以数字0的七位ASCII码(0110000)为例,如果传送后右边第一位出错,0变成1。接收端还认为是一个合法的代码0110001(数字1的ASCII码)。若在最左边加一位奇校验位,编码变为10110000,如果传送后右边第一位出错,则变成10110001,1的个数变成偶数,就不是合法的奇校验码了。但若有两位(假设是第1、2位)出错就变成10110011,1的个数为5,还是奇数。接收端还认为是一个合法的代码(数字3的ASCII码)。所以奇偶校验不能发现。
奇偶校验位可由硬件电路(异或门)或软件产生:
偶校验位 an =a0⊕a1⊕a2⊕…⊕an-1, 奇校验位 an =NOT(a0⊕a1⊕a2⊕…⊕an-1)。
在一个典型系统里,在传输以前,由奇偶发生器把奇偶校验位加到每个字中。原有信息中的数字在接收机中被检测, 如果没有出现正确的奇、偶性,这个信息标定为错误的,这个系统将把错误的字抛掉或者请求重发。
在实际工作中还经常采用纵横都加校验奇偶校验位的编码系统--分组奇偶校验码。
现在考虑一个系统, 它传输若干个长度为m位的信息。如果把这些信息都编成每组n个信息的分组,则在这些不同的信息间,也如对单个信息一样,能够作奇偶校验。图4中n个信息的一个分组排列成矩形式样,并以横向奇偶(HP)及纵向奇偶(VP)的形式编出奇偶校验位。
m位数字
横向奇偶位
n
个
码
字
a1
a2
…
am-1
am
HP1
b1
b2
…
bm-1
bm
HP2
c1
c2
…
cm-1
cm
HP3
…
…
…
…
…
…
n1
n2
…
nm-1
nm
HPn
VP1