| |
RS 码定义在伽罗华域GF(q) 上,其中q是素数或素数的幂。设信息字为(u0, u1, ..., u_{k-1}),其中各信息字符都定义在GF(q)上,则信息字可以用信息多项式u(x)=u0+u1*x+...+u_{k-1}*x^{k-1}表示。相应的码字可通过对u(x) 在GF(q)中不同的q个元素求值得到,即
c0=u(x=0)=u0,
c1=u(x=a^0)=u0+u1+…+u_{k-1}, …,
c_{q-1}=u(x=a^{q-2})=u0+u1*a^{q-2}+...+u_{k-1}*a^ {(q-2)*(k-1)} 。
其中a是GF(q) 的本原元素,并且乘法和加法都定义在GF(q) 上。由於u(x) 的阶数为(k-1) ,所以u(x) =0至多有(k-1)个根,即码字符号c0, c1, ..., c_{q-1}至多有(k-1) 个为零,所以码重至少为q-k+1。因此RS码是(n=q, k, d=n-k+1) 的线性码。而对於线性码,最小码重(码距) 不大於校验符号个数加1,即d<=n-k+1。所以RS码是一种最大距离可分码(MDS)。
常用的RS码是通过对u(x) 在GF(q)中不同的(q-1)个非零元素求值得到的(n=q-1, k, d=n-k+1) 码,同样是MDS码。相应的生成矩阵为范德蒙德阵(Vandermonde) ,
即G=(1 1... 1; 1 a a^2 ... a^(q-2); .......; 1 a^(k-1) ... a^((q-2)*(k-1)))) ,所以编码也可以通过GF(q) 上的DFT来实现,解码可以通过IDFT实现( http://researchweb.watson.ibm.com/journal/rd/233/ibmrd2303G.pdf )。同时可以证明,(n=q-1, k, d=n-k+1) RS码的校验矩阵同样是范德蒙德阵。通用RS码还是循环码,编码可以通过移位寄存器来实现。最为常用的RS码定义在GF(2^8) 上,如(255, 243) 码可以纠6个字节错误。RS码通常和交织器相配合,从而达到提高校正突发错误的能力。例如CD中采用(28, 24) 码 (可以看作是由(255, 251) 码缩短而来) 和(32, 28) 码级联,通过交织,最多可以纠512字节错误,相应于2.408毫米的一道在信轨上的划痕。
以通用RS码为标准,最初定义的(q, k, q-k+1)RS码又被称为扩展RS码,双重扩展RS码的参数为(q+1, k, q-k+2) ,三重扩展RS码的参数为(q+2, q-1, 4) ,都是MDS码。
想要了解利用双变量内插进行RS码的解码,可以参见http://www.systems.caltech.edu/EE/Faculty/rjm/papers/RSD-JPL.pdf 。