
3.4 Reed Solomon码
3.4.1 RS码原理与能力
RS码是1960年由Irving S.Reed和Gustave Solomon提出的编码方法,简称RS码,它有很强的检错和纠错能力。有相对简单的解码算法。由于这些原因,RS码已经在很多领域得到应用,例如,音频CD的差错校正,在移动通信、数字视频广播(DVB)和DAB/DMB也得到应用。按照DVB标准发射的电视信号应用RS码,可使接收机接收的信号的比特差错率改善大于106(例如,由10-3变为10-9)。设计一个数字通信系统,使其能达到10-9的比特差错率,即接收109个比特,发生错误的比特数量不得不多于1个,便可以通过附加应用RS码来实现。RS码在解码后的数据中剩余比特差错的概率,一般来说要比不用RS码时下降很多,这通常称为编码增益。
RS码是以很多符号组成块来工作的,符号一般来说由8比特构成。因此,RS码属于典型的以符号为基础的块码。
如果RS码有n个符号,校正在一个块中k/2个有差错的符号,就必须附加k个校验符号。Reed Solomon编码在时域和频域都是可能的。
在编码器中信息符号这样安排,即它们处在传输的码字的最初的m位。这些码字通过一个特有的码字生成多项式除。这个多项式有这样的特点,它的零位在分布谱中有连续的k位零。这种按模计算结果的k位附加在传输的码字m位的后面。这些这样结合在一起的字c(x)具有n=m+k位。如果在传输后丧失了这种特点,解码器知道发生了差错。它可以借助不同的算法和在频域中的运算产生出差错码字 E(Z),这样就能重新恢复出原始的信息R(Z)=C(Z)-E(Z)。在反变换到时域之后在输出端提供原始的信息r(x)。
如图3-4-1所示是Reed Solomon编码与解码原理。

图3-4-1 Reed Solomon编码与解码原理
一个有m信息字节(这里1符号=1字节)和k校验字节的RS码称为RS(m+k,m)码。一个这样的码可以最多校正每个码字k/2个有差错的符号,识别k个有差错的符号。
【例3-1】RS(255,239)码表示码块长度共239+16=255个符号,其中信息字的长度为239个符号,校验字的长度为16个符号。这样一个由255个符号组成的码块中,最多可以纠正在这个码块中出现的8个分散的、或者8个连续的符号错误,最多识别出16个有差错的符号。
【例3-2】一个常用的RS(255,223)码,每个符号8比特。每个码字包含255个码字字节,其中223个数据字节,32个校验字节。对于这种码来说n=m+k=255,m=223,k=32,k/2=16解码器可以消除在码字中16个符号所有可能的干扰:也就是说,在所有的码字中最多16个符号中的干扰都可以自动消除。
如果给出了每个符号有多少比特的话,那么RS码最大的码字长度为2s-1。例如,一个符号为8比特(s=8),一个码的最大码长为28-1=255字节。
RS码的码长可以缩短,这时,不传输的数据符号的数量在编码器中用0来构成,在解码器中重新插入。
例如,RS(255,223)码可将其缩短为RS(200,168),编码器取168 数据字节的一个块,再与55个0字节相加,形成一个(255,223)的码字,但是仅仅传输168个数据字节与32个校验字节。
RS码对编码器与解码器要求的处理能力,取决于每个码字的校验符号的数量。k的值越大,意味着很多干扰都可以消除,但是,要求的计算能力要比k值小时大。
如果在一个符号中出现1比特的差错,就是出现了一个符号干扰,或者在一个符号中所有的比特都发生了错误,这也是符号干扰。例如,RS(255,223)可以消除16个符号干扰。在最坏的情况下,可能出现16比特干扰,每个可能在不同的符号(字节)中,因此解码器可以消除16个比特干扰。在最好的情况下,出现16个整个字节干扰,这样,解码器消除16×8个比特干扰。
如图3-4-2所示是不同的RS码的剩余比特差错概率。

图3-4-2 不同的RS码的剩余比特差错概率
3.4.2 生成多项式校验符号
在一个RS(n,k)码中,有2k个不同的码字,所有有效的码字正好是能被生成多项式除尽的。因此,RS码字可以通过一个特有的多项式(生成多项式)产生。生成多项式的一般形式是

式中a为GF(2m)的本原元素。GF(2m)是由2m个元素组成的有限域(或称伽罗华域),在M进制分组码中,其元素为0,1,…,(M-1),例如M=4进制码,其元素为0,1,2,3;对应的二进制数为00,01,10,11。对于M进制RS码,M=2m,其元素0,1,…,(2m-1)。
编码后得到的有效码字c(x)是

这里g(x)是生成多项式,i(x)是信息块,c(x)是一个有效码字。
在一个系统RS码字中的k个校验符号为

3.4.3 RS码与卷积码的级联
为了提高编码效率,有这样的可能性,将不同的编码器一个跟一个级联起来。第一个编码器(编码率为R1)称为外编码器,而第二个编码器(编码率为R2)称为内编码器,图3-4-3所示是级联编解码器原理方框图。当传输的源数据率为Ru时,那么在信道上传输的总数据率R0为


图3-4-3 级联编解码器原理方框图
如果选择外编码器为块码编码器(例如RS编码器),而内编码器是卷积码编码器,那么内编码器可以校正单个的比特差错,外编码器可以校正较短的块差错。为了能够校正较长的块差错,可在两个编码器之间接入内交织器。内交织器不是添加新的数据冗余,而是对数据重新整理,使原来一个挨着一个的比特相互离开一个交织深度I。