2024年2月15日发(作者:条分缕析)
一.RS码
RS码是有限域GF(p^m)上,码长为n=p^m-1的本原BCH码,它是多进制的BCH码。
RS码不但可以纠正随机错误、突发错误以及二者的组合,而且可以用来构造其它码类。
在计算机中数据是以二进制的形式存在,所以p通常取值为2。
RS码的参数:符号取自GF(2^m),纠t个错的RS(n,k)码的定义如下:
符号大小m.表示符号比特数为m位。码块总长度为n个符号,其中信息长度k个符号,校验位长度K=n—k个符号。RS码的纠错能力是出码块中的冗余数据校验码的长度K决定的。在码块中的错误位置事先并不知道的情况下,RS(n,k)码可以纠正t=K/2个错误符号。显然t值越大,RS码的纠错能力越强,但与之相对应的是更复杂的算法,更长的运算时间,更低效的数据传输率。
RS码既可以纠随机错又可以纠突发错。但RS码中采用符号这一特性使得它特别适用于产生突发错的场合。因为不论一个符号中错了多少位,在RS解码过程中。它只会被认为是产生了一个符号错。一个可以纠t个符号的RS码,它至少可以纠一个(t-1)m+1个连续比特组成的突发错,而当随机错恰好都不在同一个符号中时只能纠正t个比特的随机错。
二.RS码编码
对于GF(2^m)来说,若域中非零元素a的级是2^m-1,则将a称为本原域元素。设符号取自GF(2^m),纠t个错的RS(n,k)码,它的最小距离d=2t+1,则由本原域元素a的2t个连续根m0,,m02t1作为g(x)的根来构造生成多项式g(x)=(x+m0)(x+m01)(x2t1m0)
通常情况下取通常取m0 = 0或m0 = 1
只要将信息码多项式m(x)=mk1xk1m1xm0 乘以xnk次,然后以g(x)为模,求出余式q(x)便可以得到系统码。
q(x)= m(x)
xnkmodg(x)=qnk1xnk1q1xq0
C(x)= m(x)
xnk+ q(x)
例 构造能纠正2个错误,码长为15符号的RS码
n=15,t=2可得m=4,k=11,d=5.因此RS码为(15,11)码,生成多项式为g(x)=(x+)(x+2)(x+3)(x+4) =x413x36x23x10
假设待发送的信息码组为m(x)=m(x)2x103x69x则编码后的码组多项式为C(x)= m(x)
xnk+ m(x)
xnkmodg(x)=2x143x109x5x33x13
编码的实现:
1)首先构造有限域,RS码的性质和运算法则均定义在Galois域上,Galois域是能进行加减乘除运算的有限个元素的封闭集合,它的加减运算符合结合律、交换律和分配律。有限域中的元素有两种表示方法:即指数形式和多项式形式。乘除法运算需用元素指数形式,加减法运算要用多项式形式。
指数形式表示多项式形式的十迸制值为i的元素,它的指数形式的指数
指数形式为i的元素它的多项式形式
GF(24) 元素表 最小多项式为x4x1
序号i 指数形式 多项式形式
2)构造生成多项式g(x)=(x+m0)(x+m01)(x2tm0)
设m0 = 1 g(x)=(x+1)(x+2)(x2t)
nk2t
g(x)gnkxnkg1xg0,g=1
nk3)对信息数据进行编码
RS时域编码原理图(n-k级时域编码器)其电路特征是一个实现除法求模运算的线性反馈移位寄存器,该方法得到的是系统码。
信息码组从高位到低位送入线性反馈移位寄存器,每一个码元一方面经过控制开关送出编码器,另一方面该码元与移位寄存器Dnk的输出进行异或运算,结果作为feedback反馈回电路与系数g[O]到g[n-k-1]相乘后再与各个移位寄存器的输出进行异或运算。当所有的信息码元都输入线性反馈移位寄存器后,n-k个移位寄存器中的值就是生成的n-k个校验码元。这样信息码元在前,校验码元在后,这就完成了编码。
三.RS码的译码
基于伴随式的译码算法,由于其译码过程较为简单,译码速度快,是最为常用的译码算法。伴随式译码的一般步骤为:
1)计算接收码字r(x)的2t个伴随式si,i=l,2,…2t;
2)求出错误位置多项式,确定错误位置;
3)求出错误位置上的错误值:
4)由步骤2和步骤3得到错误图样E(x)的多项式,则纠错后的码字多项式c(x)
为:c(x)=r(x)-e(x)。
假设发送的码字为:c(x)cn1xn1c1xc0
由于在传输过程中发生了错误,接收到的码字为:r(x)rn1xn1r1xr0
错误图案是:e(x)=r(x)-c(x)=en1xn1e1xe0
若信道产生t个错误,则e(x)=Yixli 式中,YiGF(2m),xli称为错误i1t位置数,说明错误发生在r(x)中的第nli位,错误值是Yi.
00Yt0
0Y100m0n1m0n2()()m01n1m01n2T()SHET=()m02t1n1m02t1n2))((1m011m02t11m0m0li1m0li2m0lit)))(((YYY12t=
li1li2lit2t12t12t1mmm000Y1()Y2()Yt()sjYii1tjlir(j)i1jYixi (*)
t1)首先计算伴随式,定义伴随多项式s(x)1s1xs2x2stxt若S(x)=0,则表示接收到的码字没有错误或者发生了无法检测的错误。输出原接收码字。用Horner法实现sir(i){((rn1irn2)irn3)ir1}ir0
2)用BM迭代算法求错误位置多项式,由(*)式中的2t个方程求出2t个未知数xi,Yi。分两步进行,先解出错误位置数xi,再求出错误值。
定义错误位置多项式为(x)(1xix)11xtxt
i1t若xk11为错误位置则(xk)0两边乘以xkt,得
tt1xk1xkt0,k1,2,t
上式jt两1Ykxk边jt1再乘以jjYkxk,jm0,,m0t1得YkxktYkxk0,k1,2,t
对k求和得sjt1sjt1tsj0 (**)
作乘积s(x)(x)并用(x)11x2x2表示,由(**)式可得t+1次以上系数为0。
得关键方程s(x)(x)(x)modx2t1
用关键方程求(x)的迭代译码算法:
用迭代方法求解到第j步时,求得满足
s(x)(j)(x)(j)(x)modxj1的解(j)(x),(j)(x)。
在第j+1步时以xj2为模,(j)(x),(j)(x)不再满足上式。
所以引入一个差值dj,使下式成立
s(x)(j)(x)(j)(x)djxj1modxj2 (***)
(j)t(j)(j)(x)11xD(j)x
将(***)式左边展开推出djsj1sj1iii1D(j)(j)将dj代入关键方程求解得
(j1)(x)(j)(x)djdixji(i)(x)
(x)(j)(x)djdixji(i)(x)
11(j1)I是j之前的某一行,它在所有j行之前各行中的i-D(i)最大,且di0
D(j+1)=max(D(j),j-i+D(i))
迭代过程如下:
设定初值为(1)(x)1,(1)(x)0,D(-1)=0,d11
(0)(0)(x)1,(x)1,D(0)=0,d0s1
开始迭代 j=1,2,……2t
D(j)i1(j)首先计算djsj1sj1ii
若dj=0则(j1)(x)(j)(x)
(j1)(x)(j)(x)
D(j+1)=D(j)
若dj0则找出j之前的某一行i,它在所有j行之前各行中的i-D(i)最大,且di0
(j1)(x)(j)(x)djdixji(i)(x)
(x)(j)(x)djdixji(i)(x)
11(j1)D(j+1)=max(D(j),j-i+D(i))
一直迭代2t次,得到的(2t)(x),(2t)(x)即为所求的(x)和(x)
判断(x)次数是否大于t,如果大于t说明有不可纠的错误,如果小于等于t则求(x)=0的根,即为错误位置数。
3)用钱氏搜索求错误位置
r(x)rn1xn1r1xr0
判断rnl是否错误,nl是否是错误位置数,判断(nl)是否是(x)的根,
(nl)l代入(x)=0
1ltl1t0 则rnl有错
11ltlt0 则rnl正确
3)错误值的计算
用Forney算法
Y(xixii1)'(xi1)
若实际产生的错误个数t
si1Ykxjk
ks(x)1s1xs2x2i1Ykxkxi1six1i1sixi=1+k11xkxs(x)(x)=(1+Ykxkx)(x)=(x)mod11xkxx21
k由于恒等式左边最高次数为2
得出(x)Ykxkxk11xkx=(x)-(x)
Yixix1x(x)+(x)Yjxjx=(x)-(x)
ixjj11ixjx得YxrxYjxjxiix(1jx)+(x)=(x)-(x)
ij1jj1j1ix
jx代入rx1i得Yixix1i(1jxjx11i)=(xi)
i1j因为'(x)r(1i1xixjx)
ij1j****)
(
代入xi1得-xi11(xi)xi(1xjxi)
i1j1ij'1r代入(****)式得-Yixixi得错误值Yi
111(()xi)
xixi1'xi(xi)1(xi)'1
本文发布于:2024-02-15 18:16:31,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1707992191142094.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:RS编译码.doc
本文 PDF 下载地址:RS编译码.pdf
留言与评论(共有 0 条评论) |