system: [SYSTEM]

user: 3. 纠错码技术 [ 2 ] - [ 9 ] 纠错码技术是通过在发送端传输的信息序列中加入一些冗余的监督码进行纠错。在发送端由发送设备按一定算法生成冗余码插入到要传输的数据流中，接收端按同样算法对接收到的数据流进行译码，根据接收到的码流确定误码的位置并进行纠错。最众多编码方法中，应用较广泛的有RS码、Tubro码和LDPC码等。 3.1. RS码 RS码首先由Reed和Solomon于1960年构造出来，是目前最为有效、应用最为广泛的差错控制编码之一，是一类具有很强纠错能力的多进制BCH码，它不仅可以纠正突发错误，还可以纠正随机错误。 具有纠正t个错误的RS码由如下参数：每个符号比特数m；每个符号可以看成是有限域中的一个元素；码长 n = 2 m − 1 ；信息段有k个符号；监督段有 n − k = 2 t 个符号；最小码距离 d = 2 t + 1 。RS码用于纠正的突发错误图样是：总长度为 b i = ( t − 2 i ) m + 2 i − 1 比特的是i个突发。 RS码的一个重要性质是：真正的最小距离总是相同的。每种RS码都是一个最大距离的可分码，最小距离等于n − k − 1。当省掉RS码的某些信息符号后，分组长度缩短，但是最小距离并不减小，故任何一种缩短的码仍是一个最大距离可分码。 RS码的另一个重要形式是在其码字内的任何k个位置都是可用信息集合。(n， k)RS码中，输入信息分成km比特一组，每组包括k个符号，每个符号由m比特组成。RS码的编译码是基于一组码元而不是单独的0或1，这也是RS码纠错能力特别强的原因，这也使得RS特别适合处理突发错误。 3.1.1. RS编码原理 RS(n， k)码具有以下性质： n为码长，k为信息位长，n − k为校验位长。一般 n = q − 1 ， n − k = 2 t ，q为有限域的阶数，是素数或素数的幂次，实用中一般取q为2的幂次。最小距离为 d min = 2 t + 1 ，t为设计的纠错能力。RS码主要是围绕生成多项式构成的，其生成多项式为： g ( x ) = ( x − α m ) ( x − α m + 1 ) ⋯ ( x − α 2 t + m − 1 ) = a n − k x n − k + a n − k − 1 x n − k − 1 + ⋯ + a x x + a 0 a为GF(q)域上本原多项式的根，a的各次幂可构成扩域GF(qm)上的所有元素。 编码器结构示意图如图1。 图1. 编码器示意图 3.1.2. RS码译码原理 RS译码分为以下几步： 第一步：计算多个伴随式值； 第二步：由伴随式值确定差错定位多项式； 第三步：求出错误位置值； 第四步：由所得的错误位置值计算错误值； 1) 伴随式的求解 设G(q)是RS码所在的伽罗华域(Galoisfield)，n为RS码的编码长度，q是一个不为1的素数或者素数的幂，t为RS码的纠错长度，则RS码的生成多项式为： g ( x ) = ( x − a 0 ) ( x − a 1 ) ⋯ ( x − a 2 t − 1 ) 由编译码理论可知，对于以上式为生成多项式的RS码，其校验矩阵为： H = [ ( a 0 ) n − 1 ( a 0 ) n − 2 ⋯ ( a 0 ) 1 ( a 0 ) 0 ( a 1 ) n − 1 ( a 2 ) n − 2 ⋯ ( a 2 ) 1 ( a 2 ) 0 ⋮ ⋮ ⋱ ⋮ ⋮ ( a 2 t − 1 ) n − 1 ( a 2 t − 1 ) n − 2 ⋯ ( a 2 t − 1 ) 1 ( a 2 t − 1 ) 0 ] 设接收到的码组为R(x)，其系数矩阵为： R = [ R n − 1 ， ⋯ ， R 1 ， R 0 ] ，且设信道产生的错误码数 S j = ∑ i = 1 t E l i x i j − 1 ，     j = 1 ， 2 ， ⋯ ， 2 t 2) 差错位置多项式的确定 鉴于非线性方程直接求解比较困难，因此引入一个称为错误位置多项式的中间变量σ(x)，先求出错误位置数x i ，再求出 E l i ，给出如下定义： σ ( x ) = ( 1 − x 1 x ) ( 1 − x 2 x ) ⋯ ( 1 − x t x ) = 1 + σ 1 x + σ 2 x 2 + ⋯ + σ t x t 设 x 1 σ ， x 2 σ ，L， x t σ 是σ(x)的解，由σ(x)的定义有 x 1 = ( x 1 σ ) − 1 ， x 2 = ( x 2 σ ) − 1 ， ⋯ ， x t = ( x t σ ) − 1 所以求错误位置就是求解错误位置多项式。 3) 关键方程的求解 关键方程的求解可通过ME迭代算法来实现。 ME迭代算法可以简单描述为以下几个公式和约束条件的迭代。首先初始化： R 0 ( x ) = x 2 t ； Q 0 ( x ) = S ( x ) ； L 0 ( x ) = 0 ； U 0 ( x ) = 1 ；迭代后如果 deg ( R i ( x ) ) 或 deg ( Q i ( x ) ) 小于8，则算法迭代结束。此时 ω ( x ) = R i ( x ) ， σ ( x ) = L i ( x ) 。 4) 错误位置的确定 求得σ(x)后接下来就要求出它的根，这个过程可以用钱搜索来实现。设 R ( x ) = r n − 1 x n − 1 + r n − 2 x n − 2 + ⋯ + r 1 x + r 0 为了要检验第一位 r n − 1 是否错误，相当于译码器要确定 α − ( n − 1 ) 是否是错误位置数，这等于要校验 α − ( n − 1 ) 是否是σ(x)的根。若是，则有： σ ( α − ( n − 1 ) ) = σ ( α ) = 1 + σ 1 α + σ 2 α 2 + ⋯ + σ t α t = 0 所以得到了σ(x)后，为了译 r n − 1 ，译码器首先验证 σ 1 α + σ 2 α 2 + ⋯ + σ t α t = − 1 是否成立，若成立则α是错误位置数， r n − 1 码元是错误码元；否则 r n − 1 是正确的。 同理为了译 r n − 1 ，译码器必须验证 σ 1 α l + σ 2 α 2 l + ⋯ + σ t α t l = − 1 是否成立，若是则 r n − 1 是错误码元，若不成立，则 r n − 1 不是错误码元。 这样一次对每一个 r ( l = 1 ， 2 ， ⋯ ， n ) 进行检验，就求得了σ(x)的根，这个过程称为钱搜索。 5) 差错幅值的求解 差错幅值的求解通过Forney算法来实现。Forney算法描述如下： 若实际产生错误个数 γ ≤ t ；则 s t = ∑ k = 1 7 Y k x k i − σ ′ ( x i − 1 ) x i − 1 = ∏ j = 1 j ≠ i γ ( 1 − x j x − 1 ) ，同时得到 Y i x i x i − 1 ( − σ ′ ( x i − 1 ) ) ( x i − 1 ) = ω ( x i − 1 ) 所以错误值为 Y = − x i ω ( x i − 1 ) σ ′ ( x i − 1 ) 。 3.2. Turbo码 Turbo码是C. Berrou等人提出了一种新型的纠错码。它采用一种并行级联的方法实现了长码的编码，同时构造了相应的解码器来完成长码的解码，是一种实用的纠错码，它的性能非常逼近香农的性能界，使其在较低的信噪比条件下仍能够保持良好的性能。目前Turbo码在CDMA的应用得到各国学者的重视，Turbo迭代的思想已经渗透到物理链路层先进的信号处理技术的各个领域，它域调制、均衡、空时编码和OFDM相结合极大的促进了技术的进步和发展。 图2. Turbo码编码框图 图2表示了经典的Turbo码编码框图，它主要由分量编码器1、分量编码器2、交织器以及删余矩阵和复接器构成。分量编码器一般选择为递归系统卷积码(RSC)，通常两个分量编码器采用相同的生成矩阵。因此Turbo码又被称为并行级联卷积码。 在Turbo码编码过程中，两个分量编码器的输入序列是相同的，长度为N的信息序列 { u k } 在送入第一个分量编码器进行编码的同时作为系统输出 { x k s } 直接送自复接器，同时 { u k } 经过交织器I后的交织序列 { u n } 送入第二个分量编码器。其中， n = I ( k ) ， 0 ≤ n ， k ≤ N − 1 。 I ( ⋅ ) 为交织映射函数，N为交织深度，即为信息序列长度。两个分量编码器输入序列仅仅是码元的输入顺序不同。两个分量编码器输出的校验序列分别为 { x k 1 p } 和 { x k 2 p } 。为了提高码率和系统频谱效率，可以将两个校验序列经过删余矩阵删余后，再与系统输出 { x k s } 一起经过构成码字序列 { c k } 。 交织器和分量码的结合可以确保Turbo码编码输出码字具有较高的汉明重量。在Turbo编码器中交织器的作用是将信息序列中的比特顺序重置。当信息序列经过第一个分量编码器后输出的码字汉明重量较低时，交织器可以使交织后的信息序列经过第二个分量编码器编码后以很大的概率输出高重码字，从而提高码字的汉明重量；同时好的交织器还可以有效的降低效验序列间的相关性。通过交织，编码序列在长为2N或3N比特的范围内无记忆性，从而由简单短码构造近似随机长码。交织器实际上是一个一一映射函数，作用使将输入信息序列重的比特位置进行重置，以减小分量编码器输出效验序列的相关性和提高码重。因此，交织器设计的好坏在很大程度上影响Turbo码的性能。删余矩阵的作用是提高编码效率，其元素取自集合{0， 1}。矩阵重每一行分别余两个分量编码器对应，其中“0”表示相应位置上的效应比特被删除，而“1”则表示保留相应位置的效应比特。 3.3. LDPC(低密度奇偶校验)码 LDPC码是Gallager于1962年提出的一种性能接近于香农限的好码，限于当时计算机水平和硬件技术LDPC码在很长一段时间内一直未受到人们重视，直到Berrou等人提出Turbo码后，LDPC码才重新引起人们的研究兴趣并成为研究的热点。计算机仿真结果表明，最好的非规则LDPC码(长度为10 6 )可获得在BER = 10 −6 时仅偏离容量0.13 dB的性能，优于迄今所知道的最佳Turbo码，当码长为10 7 码率为1/2时，其性能距香农限只差0.04 dB。 LDPC码的特点是：性能优于Turbo码，具有较大灵活性和较低的差错平底特性；译码复杂度低于Turbo码，且可实现完全的并行操作，在编码器和译码器之间不需要交织器，硬件复杂度低，因而适合硬件实现；吞吐量大，适合高码率的应用，极具高速译码潜力。此外，LDPC码在干扰、衰落等原因引起的突发误码情况下有更优良的性能。但LDPC码在硬件实现上难点是它的不规则结构，大部分的LDPC码的结构都是非常随机的，使得它的编码器要比Turbo码的复杂一些。另一个缺点是不能灵活地改变码率和码长，要改变通常需要重新构造奇偶校验矩阵和相应地生成矩阵，使得硬件改动困难。 图3给出了4种不同的帧长，即N = 2048 bits、N = 1024 bits、N = 512 bits、N = 256 bits，它们的码率R都为1/2，(3， 6)规则的LDPC码。图3可以很明显地看出：在相同码率的情况下，随着码长的增加性能会越来越好，这是码字间的码距随着码长的增加而增大的结果。 高速LDPC编译码器硬件实现的关键在于码结构以及译码算法的选取。为适合高速硬件实现，一般应选用准循环结构的LDPC码。准循环结构使得编码器可以用移位寄存器快速实现，而译码器高速实现的关键是并行度的选取以及译码算法的选取。