CN105024707B - 一种rs纠错解码方法 - Google Patents
一种rs纠错解码方法 Download PDFInfo
- Publication number
- CN105024707B CN105024707B CN201510461188.4A CN201510461188A CN105024707B CN 105024707 B CN105024707 B CN 105024707B CN 201510461188 A CN201510461188 A CN 201510461188A CN 105024707 B CN105024707 B CN 105024707B
- Authority
- CN
- China
- Prior art keywords
- code
- coefficient
- multinomial
- value
- polynomial
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000012937 correction Methods 0.000 title claims abstract description 49
- 208000011580 syndromic disease Diseases 0.000 claims description 16
- 239000000203 mixture Substances 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 102100033312 Alpha-2-macroglobulin Human genes 0.000 description 1
- 101710187168 Alpha-2-macroglobulin Proteins 0.000 description 1
- 101710136034 Alpha-2-macroglobulin homolog Proteins 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1525—Determination and particular use of error location polynomials
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/157—Polynomial evaluation, i.e. determination of a polynomial sum at a given value
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/158—Finite field arithmetic processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1585—Determination of error values
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/159—Remainder calculation, e.g. for encoding and syndrome calculation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/617—Polynomial operations, e.g. operations related to generator polynomials or parity-check polynomials
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6508—Flexibility, adaptability, parametrability and configurability of the implementation
- H03M13/6516—Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Algebra (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明提供了一种RS纠错解码方法,所述方法为:在发送端进行编码时,对于m阶本原多项式P(x),在有限域GF(2m)域上的本原域元素用α表示,建立关于α不同幂次指数的查找表f(αj),其中j的取值为0到2m‑1之间的所有整数,共2m个;将生成多项式G(x)展开得到关于x的多项式,系数是关于α的幂次指数相加或者相减;用码字多项式Q(x)除以生成多项式G(x)所得的余项多项式R(x)为关于x的多项式,系数是关于α的幂次指数相加或者相减;生成多项式G(x)和余项多项式R(x)的系数均通过查找表f(αj)中查找出的数据进行计算。大大节省系统内存,提高RS纠错码应用的灵活性和便捷性。
Description
技术领域
本发明涉及纠错码技术领域,特别涉及一种RS纠错解码方法。
背景技术
在通信系统中,在信息发送之前,需要按照一定的规则,在数据流中人为地加入冗余码以便接收端能够进行误码检测和校正。RS纠错码是目前最有效、应用最广泛的差错控制编码方式之一。RS码可以用于纠正随机错误,也适合于纠正突发错误,已经在卫星通信、数字电视传输等领域得到广泛应用。
常用(c,k,2t)表示RS码;其中c为信息数据与冗余码的总长,k为信息数据长度,2t为冗余码的长度,t为可纠正的最大差错个数,其中c=k+2t。
现有的RS纠错算法中GF域(伽罗华域)的元素个数与本原多项式的次数有关,例如,若本原多项式的次数为8,则GF域的元素个数为28个即256个,GF域的元素被用于RS纠错计算过程中查表使用,查表中元素个数达到256个,若本原多项式的次数为16,则GF域的元素个数为216个即65536个,比较占用内存空间,因此数据处理速度较慢,应用场景受限,此外,如果实际的错误码字超过纠错能力,容易造成越纠越错的情况。
另外,现有的RS纠错算法在找到错误代码并纠错后没有进行校验,因此系统的稳定性和正确性不高。
公开号为CN1303763C的中国发明专利公开了一种用于降低RS码编译码复杂度的方法,主要特征为:通过在发送端进行编码时,利用本原域元素α的幂次表示RS码的码元,RS码的码字均在有限域GF(2m)上,有限域GF(2m)上的所有非零元素都是本原域元素α的整数次幂,在编译码时,对于有限域GF(2m)上的任意两个元素X和Y,X和Y相乘等于对应的两个指数的相加,X和Y相加和相减采用查表法,从而在已有的RS编译码算法的基础上对编译码方法进行了改进,可以避免复杂的乘法运算,提高了编译码速度,但对于有限域GF(2m),需要建立三个查找表,把每组的i和x’存储到两个长的查找表power[]和index[]中,还有查找表f(s),其中的s取值于0到2m-1之间的所有整数,共2m个,计算速度比较快,但所占用的数据内存比较大,且在RS码利用冗余码纠错后没有用有效数据再进行校验,安全性和稳定性低。
发明内容
本发明所要解决的技术问题是:提供一种占用内存小的RS纠错解码方法。
为了解决上述技术问题,本发明采用的技术方案为:
一种RS纠错解码方法,
在发送端进行编码时,用Kl表示信息数据的码字,Tn表示冗余码的码字,本原多项式P(x)的次数为m、GF(2m)域的生成多项式G(x),纠错代码用(c,k,t)表示,其中c为信息数据与冗余码的总长,k为信息数据长度,t为冗余码长度,则码字多项式Q(x)可表示为:
m阶本原多项式P(x)的根是GF(2m)域的本原域元素,本原域元素用α表示,则生成多项式G(x)可表示为:
建立关于α不同幂次指数的查找表f(αj),其中j的取值为0到2m-1之间的所有整数,共2m个;
将生成多项式G(x)展开得到关于x的多项式,其中生成多项式G(x)的系数是关于α的幂次指数相加或者相减;
通过查找表f(αj)查找出关于α不同幂次指数的数值并计算出生成多项式G(x)的系数;
假设冗余码的码字Tn均为0,得到码字多项式
用码字多项式Q(x)除以生成多项式G(x)所得的余项多项式
R(x)的系数Ti是关于α的幂次指数相加或者相减,通过查找表f(αj)查找出关于α的幂次指数的数值并计算余项多项式R(x)的系数,即为冗余码码字Tn。
本发明的有益效果在于:有限域GF(2m)上建立关于本原域元素α的2m个指数组成的查找表f(αj),用于计算生成多项式G(x)的系数以及码字多项式Q(x)除以生成多项式G(x)所得的余项多项式R(x)的系数,查找表f(αj)里面数据的个数大量减少,节省大量系统内存,提高RS纠错算法应用的灵活性和便捷性。
附图说明
图1为本发明实施例一的发送端进行RS编码的流程图;
图2为本发明实施例一的RS编码及纠错的流程图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:对于m阶本原多项式P(x),建立关于α不同幂次指数的查找表f(αj),其中j的取值为0到2m-1之间的所有整数,共2m个,用于计算生成多项式G(x)的系数,以及码字多项式Q(x)除以生成多项式G(x)所得的余项多项式R(x)的系数,大大节省系统内存;在编码时多取一个冗余码,用于纠错解码所得数据的校验,提高系统正确性和稳定性。
本发明涉及的技术术语解释见表1:
表1
请参照图1以及图2,本发明的具体实施方式为:
一种RS纠错解码方法,
在发送端进行编码时,用Kl表示信息数据的码字,Tn表示冗余码的码字,本原多项式P(x)的次数为m、GF(2m)域的生成多项式G(x),纠错代码用(c,k,t)表示,其中c为信息数据与冗余码的总长,k为信息数据长度,t为冗余码长度,则码字多项式Q(x)可表示为:
m阶本原多项式P(x)的根是GF(2m)域的本原域元素,本原域元素用α表示,则生成多项式G(x)可表示为:
建立关于α不同幂次指数的查找表f(αj),其中j的取值为0到2m-1之间的所有整数,共2m个;
将生成多项式G(x)展开得到关于x的多项式,其中生成多项式G(x)的系数是关于α的幂次指数相加或者相减;
通过查找表f(αj)查找出关于α不同幂次指数的数值并计算出生成多项式G(x)的系数;
假设冗余码的码字Tn均为0,得到码字多项式
用码字多项式Q(x)除以生成多项式G(x)所得的余项多项式
R(x)的系数Ti是关于α的幂次指数相加或者相减,通过查找表f(αj)查找出关于α的幂次指数的数值并计算余项多项式R(x)的系数,即为冗余码码字Tn。
进一步的,纠错解码过程为:
假设s为接收端的最大纠错位数,取t=2s+1;
用码字多项式Q(x)除以生成多项式G(x)得到余项多项式
计算出余项多项式R(x)的系数,即得到2s+1个冗余码的码字Tn,n=1,2,…,2s+1;
发送端发送信息数据及2s+1个冗余码至接收端;
接收端接收所述信息数据及2s+1个冗余码;
接收端根据接收到的信息数据及2s+1个冗余码编码得到码字多项式Q(x),码字多项式Q(x)可表示为:
接收端计算2s+1个校正子Si,其中Si=Q(αi),i=1,2,…,2s+1;
若不是所有的校正子Si都等于0,则用校正子S1~S2s计算出错误信息码的位置以及校正值;
将接收端接收到的错误信息码位置上的码字加上校正值得到的解错后的码字;
将纠错后的码字赋值给错误信息码位置上的码字;
重新计算S2s+1=Q(α2s+1),若S2s+1=0,则纠错成功;若S2s+1≠0,则输出接收信息码错误,超出纠错能力。
由上述描述可知,在计算冗余码时取到x的零次幂,得到2s+1个冗余码,在用从第1到第2s个冗余码计算出纠错码后,用第2s+1个冗余码校验纠错后的码字多项式是否正确,有效保证纠错运算的正确性,提高系统运行的稳定性。
进一步的,用码字多项式Q(x)除以生成多项式G(x)所得的余项多项式R(x)的过程中会遇到x的系数的相乘,运算时将乘法转换为加法运算,具体为:
将x的系数用多项式表示方法表示;
将多项式表示方法表示的系数相乘展开得到关于α的不同幂次指数的加法;
通过查找表f(αj)查找出关于α不同幂次指数的数值求解加法。
进一步的,用校正子S1~S2s计算出错误信息码的位置的具体过程为:
根据校正子计算得到以错误信息码的位置为根的方程;
将所述方程的根用多项式表示方法表示,标准基为α的不同幂次指数,系数为关于xi的值,i=0,1,…,m;
将所述方程的系数用多项式表示方法表示,标准基为α的不同幂次指数;
将用多项式表示方法表示的根和系数带入所述方程的多项式;
令多项式中每一项为0,得到关于xi的非齐次线性方程组;
解上述齐次线性方程组可得到xi的值;
将xi的值带入多项式表示方法表示的根计算得到方程的根得到错误信息码的位置;
寻找错误信息码的位置对应的码字多项式Q(x)中的位置。
进一步的,寻找错误信息码的位置对应的码字多项式Q(x)中的位置,具体为:
在查找表f(αj)中寻找到与错误信息码的值相同的数值,则多项式Q(x)中x的指数数值与该数值对应的α的指数数值相等的位置的系数,即为错误信息码对应的码字多项式Q(x)中的位置;
若在查找表f(αj)中未寻找到与错误信息码的值相同的数值,采用如下方法寻找错误信息码的位置,具体为:
S1取p=2*m-1=31,v=α2m-1;
S2令p=p+1;
S3若v的最高的数据bit为1,则先将v左移1位,然后v=v+v0,其中v0为将x=α带入本原多项式P(x)中除x的最高次幂项外所得到的数值;
若v的最高的数据bit为0,则将v左移1位;
S4比较步骤S3所得的v与错误信息码是否相等:
如果相等,则码字多项式Q(x)中x的p次幂所对应的系数即为错误信息码的位置;
若不相等,则转到步骤S2继续执行。
进一步的,用校正子S1~S2s计算出校正值,具体为:
得到错误信息码位置和校正值组成的方程组,其中错误信息码为所述方程的根,所述校正值为方程组的未知数;
将所述方程组的校正值用多项式表示方法表示,标准基为α的不同幂次指数,系数为关于xi的值,i=0,1,…,m;
将所述方程组的错误信息码位置用多项式表示方法表示,标准基为α的不同幂次指数;
将用多项式表示方法表示的校正值和系数带入所述方程组的多项式;
令多项式中每一项为0,得到关于xi的非齐次线性方程组;
解上述非齐次线性方程组可得到xi的值;
根据xi的值带入多项式表示方法表示的校正值计算得到方程组的根得到校正值。
由上述描述可知,在RS运算纠错解码的过程中,将多项式的系数和未知数均用多项式表示方法表示,则可将乘法运算转换为加法运算,将求解方程或者方程组转换为求解非齐次线性方程组,将复杂的运算简单化,简化计算过程,降低对硬件的要求,提高系统运算的准确性;若所查找的数值超出查找表f(αj)的数值范围,则可通过指数运算计算得到,因RS纠错解码过程中超出查找表f(αj)的数值范围的数据比较少,因此查找表f(αj)中只建立2m个数据,用来降低内存消耗。
请参照图1以及图2,本发明的实施例一为:
一种RS纠错解码方法,
在发送端进行编码时,用Kl表示信息数据的码字有五个为0x1234,0x5678,0x3245,0xabcd,0xef10,l=5,本原多项式为P(x)=x16+x5+x3+x2+1,次数为16、GF(216)域的生成多项式G(x),k为信息数据长度,则k为5,t为冗余码长度,s为接收端的最大纠错位数为2,取t=2s+1,则t=5,c为信息数据与冗余码的总长为10,纠错代码用(c,k,t)表示,则(c,k,t)为(10,5,5),Tn表示冗余码的码字,n=1,2,…,5,则码字多项式Q(x)可表示为:
16阶本原多项式P(x)的根是GF(216)域的本原域元素,本原域元素用α表示,则生成多项式G(x)可表示为:
建立关于α不同幂次指数的查找表f(αj),其中j的取值为0到31之间的所有整数,共2m个,具体为:
{1,2,4,8,0x10,0x20,0x40,0x80,0x100,0x200,0x400,0x800,0x1000,0x2000,
0x4000,0x8000,0x2d,0x5a,0xb4,0x168.0x2d0,0x5a0,0xb40,0x1680,0x2d00,
0x5a00,0xb400,0x682d,0xd05a,0xa099,0x411f,0x823e};
将生成多项式G(x)展开得到关于x的多项式,其中生成多项式G(x)的系数是关于α的幂次指数相加或者相减,具体为:
通过查找表f(αj)查找出关于α不同幂次指数的数值并计算出生成多项式G(x)的系数,具体为:G(x)=x5+0x3e*x4+0x318*x3+0x18c0*x2+0x7c00*x+0x8000;
假设冗余码的码字Tn均为0,得到码字多项式具体为:
用码字多项式Q(x)除以生成多项式G(x)所得的余项多项式为
在计算余项多项式R(x)的过程中会遇到乘法,将乘法转换为加法运算,具体为:
以0x1234*0x18c0为例;
将码字多项式Q(x)和生成多项式G(x)中x的系数用多项式表示方法表示,具体为:
0x1234=0*α15+0*α14+0*α13+1*α12+0*α11+0*α10+1*α9+0*α8+0*α7
+0*α6+1*α5+1*α4+0*α3+1*α2+0*α1+0*α0
=α12+α9+α5+α4+α2;
0x18c0=0*α15+0*α14+0*α13+1*α12+1*α11+0*α10+0*α9
+0*α8+1*α7+1*α6+0*α5+0*α4+0*α3+0*α2+0*α1+0*α0
=α12+α11+α7+α6;
将多项式表示方法表示的系数相乘展开得到关于α的不同幂次指数的加法:
0x1234*0x18c0=(α12+α9+α5+α4+α2)*(α12+α11+α7+α6)
=α24+α21+α17+α16+α14+α23+α20+α16+α15+α13+
α19+α16+α12+α11+α9+α18+α15+α11+α10+α8
=α24+α23+α21+α20+α19+α18+α17+α16+α14+α13+α12+α10+α9+α8
=0x2d00+0x1680+0x5a0+0x2d0+0x168+0xb4+0x5a+0x2d
+0x4000+0x2000+0x1000+0x400+0x200+0x100
=0x4a5b;
通过查找表f(αj)查找出关于α的幂次指数的数值并计算余项多项式R(x)的系数,即为冗余码码字Tn,n=1,2,…,5;
所得余项多项式R(x)为:
R(x)=0x15d4*x4+0x2606*x3+0x3587*x2+0x417e*x1+0x121c*x0;
5个冗余码的码字为0x15d4,0x2606,0x3587,0x417e,0x121c;
发送端发送5个信息数据及5个冗余码0x1234,0x5678,0x3245,0xabcd,0xef10,0x15d4,0x2606,0x3587,0x417e,0x121c至接收端;
假设接收端接收到的第三个信息数据及第三个冗余码错误,接收端接收所述信息数据及冗余码为:0x1234,0x5678,0xe305,0xabcd,0xef10,0x15d4,0x2606,0xa513,0x417e,0x121c;
接收端根据接收到的信息数据及冗余码编码得到码字多项式Q(x)为:
接收端计算5个校正子Si,其中Si=Q(αi),i=1,2,…,5,具体为:
S1=Q(α1)=0xed82;
S2=Q(α2)=0xc556;
S3=Q(α3)=0x879a;
S4=Q(α4)=0x4eb7;
S5=Q(α5)=0x7cb9;
若不是所有的校正子Si都等于0,则用校正子S1~S2s计算出错误信息码的位置以及校正值,具体为:根据校正子计算得到方程SS2·x2+SS1·x+SS0=0,方程的根为错误码的位置;
令S1=(S1S2),S2=(S2S3),S3=(S3S4),则
SS2=|S1 T S2 T|=S2*S2+S1*S3=0x219f;
SS1=|S1 T S3 T|=S4*S1+S3*S2=0x4b2c;
SS0=|S2 T S1 T|=S4*S2+S3*S3=0x3537;
则所述方程为0x219f·x2+0x4b2c·x+0x3537=0,方程的解法为:
将所述方程的根用多项式表示方法表示,即将x和x2用多项式表示方法表示为:
x=x15α15+x14α14+x13α13+x12α12+x11α11+x10α10+x9α9
+x8α8+x7α7+x6α6+x5α5+x4α4+x3α3+x2α2+x1α1+x0α0;
x2=x15α30+x14α28+x13α26+x12α24+x11α22+x10α20+x9α18+x8α16
+x7α14+x6α12+x5α10+x4α8+x3α6+x2α4+x1α2+x0α0;
其中xi只能取0或1,i=1,2,…,15;
将x和x2的值带入方程的左边得
0x219f*x2+0x4b2c*x+0x3537
=0xe006x15+0xe5c6x14+0x1799x13+0x1292x12+0x2f1bx11
+0x1e19x10+0x2d6cx9+0xbe3dx8+0x3537x7+0x6d1fx6
+0xoeabx5+0x28f9x4+0x3f92x3+0x3527x2+0x1024x1+0x6ab3x0;
在查找表f(αj)寻找xi的系数对应的α指数,将所述方程的左边转换为关于α的指数和xi的表达式,具体为:
0x219f*x2+0x4b2c*x+0x3537
=0xe006x15+0xe5c6x14+0x1799x13+0x1292x12+0x2f1bx11
+0x1e19x10+0x2d6cx9+0xbe3dx8+0x3537x7+0x6d1fx6
+0xoeabx5+0x28f9x4+0x3f92x3+0x3527x2+0x1024x1+0x6ab3x0
=(x0+x2+x4+x5+x6+x7+x8+x10+x11+x13+1)*α0
+(x0+x2+x3+x5+x6+x7+x11+x12+x14+x15+1)*α1
+(x1+x2+x6+x7+x8+x9+x14+x15+1)*α2
+(x4+x5+x6+x8+x9+x10+x11+x13+0)*α3
+(x0+x2+x3+x4+x6+x7+x8+x10+x11+x12+x13+1)*α4
+(x0+x1+x2+x4+x5+x7+x8+x9+1)*α5
+(x4+x9+x14+0)*α6
+(x0+x3+x4+x5+x12+x13+x14+0)*α7
+(x2+x3+x7+x9+x11+x13+x14+1)*α8
+(x0+x3+x5+x8+x10+x11+x12+x13+0)*α9
+(x2+x3+x5+x7+x8+x9+x10+x11+x13+x14+1)*α10
+(x0+x3+x4+x5+x8+x9+x10+x11+0)*α11
+(x1+x2+x3+x7+x8+x10+x12+x13+1)*α12
+(x0+x2+x3+x4+x6+x7+x8+x9+x11+x14+x15+1)*α13
+(x0+x6+x14+x15+0)*α14
+(x8+x14+x15+0)*α15;
令上述αi的系数均等于0,于是得到16个方程:
x0+x2+x4+x5+x6+x7+x8+x10+x11+x13=1;
x0+x2+x3+x5+x6+x7+x11+x12+x14+x15=1;
x1+x2+x6+x7+x8+x9+x14+x15=1;
x4+x5+x6+x8+x9+x10+x11+x13=0;
x0+x2+x3+x4+x6+x7+x8+x10+x11+x12+x13=1;
x0+x1+x2+x4+x5+x7+x8+x9=1;
x4+x9+x14=0;
x0+x3+x4+x5+x12+x13+x14=0;
x2+x3+x7+x9+x11+x13+x14=1;
x0+x3+x5+x8+x10+x11+x12+x13=0;
x2+x3+x5+x7+x8+x9+x10+x11+x13+x14=1;
x0+x3+x4+x5+x8+x9+x10+x11=0;
x1+x2+x3+x7+x8+x10+x12+x13=1;
x0+x2+x3+x4+x6+x7+x8+x9+x11+x14+x15=1;
x0+x6+x14+x15=0;
x8+x14+x15=0;
将上述16个方程转换为关于xi的非齐次线性方程组,且xi的系数及常数项的数值组成的矩阵为:
解上述非齐次线性方程组得x1=0x0004,x2=0x0080;
在查找表f(αj)寻找x1和x2对应的位置分别为α的2次幂和α的7次幂,则在码字多项式Q(x)中错误信息码的位置为x的2次幂和x的7次幂所对应的系数,即为0xa513和0xe305;
若在查找表f(αj)中未寻找到与x1和x2的值相同的数值,采用如下方法寻找错误信息码的位置,具体为:
S1取p=2*m-1=31,v=α2m-1=0x823e;
S2令p=p+1;
S3若v的最高的数据bit为1,则先将v左移1位,然后v=v+0x1d,其中0x1d为本原多项式为P(x)=x16+x5+x3+x2+1中将x=α带入x5+x3+x2+1所得到的数值;
若v的最高的数据bit为0,则将v左移1位;
S4比较步骤S3所得的v与x1或者x2是否相等:
如果相等,则码字多项式Q(x)中x的p次幂所对应的系数即为错误信息码的位置;
若不相等,则转到步骤S2继续执行;
根据下列2个方程计算错误值:
S1=e1·x1+e2·x2=0xed82;
S2=e1·x1 2+e2·x2 2=0xc556;
将x1和x2的值带入上述两个方程解得e1=0x9094,e2=0xd140,具体为:
计算S1*x1-S2得到(x1·x2-x2 2)·e2=0xed82-0xc556;
将e2用多项式表示法表示为:
e2=x15α15+x14α14+x13α13+x12α12+x11α11+x10α10+x9α9+x8α8
+x7α7+x6α6+x5α5+x4α4+x3α3+x2α2+x1α1+x0α0;
其中xi只能取0或1,i=1,2,…,15;
将e2的值带入(x1·x2-x2 2)·e2=0xed82-0xc556整理得到非齐次线性方程组,解得e2=0xd140;
同理可解得e1=0x9094;
将接收端接收到的错误信息码位置上的码字加上校正值得到的纠错后的码字,具体为:
纠错后的码字多项式Q(x)中x的2次幂的系数为:0xa513+0x9094=0x3587;x的7次幂的系数为:0xe305+0xd140=0x3245;
将纠错后的码字赋值给错误信息码位置上的码字,得到纠错后的码字多项式Q(x)为:
重新计算S5=Q(α5),得S5=0,则纠错成功。
综上所述,本发明提供的RS纠错解码方法,建立关于α不同幂次指数的查找表f(αj),其中j的取值为0到2m-1之间的所有整数,共2m个,用于计算生成多项式G(x)的系数,以及码字多项式Q(x)除以生成多项式G(x)所得的余项多项式R(x)的系数,大大节省系统内存;在编码时多取一个冗余码,用于对纠错解码后所得数据的校验,提高系统正确性和稳定性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (4)
1.一种RS纠错解码方法,其特征在于,
在发送端进行编码时,用Kl表示信息数据的码字,Tn表示冗余码的码字,本原多项式P(x)的次数为m、GF(2m)域的生成多项式G(x),纠错代码用(c,k,t)表示,其中c为信息数据与冗余码的总长,k为信息数据长度,t为冗余码长度,则码字多项式Q(x)可表示为:
m阶本原多项式P(x)的根是GF(2m)域的本原域元素,本原域元素用α表示,则生成多项式G(x)可表示为:
建立关于α不同幂次指数的查找表f(αj),其中j的取值为0到2m-1之间的所有整数,共2m个;
将生成多项式G(x)展开得到关于x的多项式,其中生成多项式G(x)的系数是关于α的幂次指数相加或者相减;
通过查找表f(αj)查找出关于α不同幂次指数的数值并计算出生成多项式G(x)的系数;
假设冗余码的码字Tn均为0,得到码字多项式
用码字多项式Q(x)除以生成多项式G(x)所得的余项多项式
R(x)的系数Ti是关于α的幂次指数相加或者相减,通过查找表f(αj)查找出关于α的幂次指数的数值并计算余项多项式R(x)的系数,即为冗余码码字Tn;
其中,纠错解码过程为:
假设s为接收端的最大纠错位数,取t=2s+1;
用码字多项式Q(x)除以生成多项式G(x)得到余项多项式R(x),
计算出余项多项式R(x)的系数,即得到2s+1个冗余码的码字Tn,n=1,2,…,2s+1;
发送端发送信息数据及2s+1个冗余码至接收端;
接收端接收所述信息数据及2s+1个冗余码;
接收端根据接收到的信息数据及2s+1个冗余码编码得到码字多项式Q(x),码字多项式Q(x)可表示为:
接收端计算2s+1个校正子Si,其中Si=Q(αi),i=1,2,…,2s+1;
若不是所有的校正子Si都等于0,则用校正子S1~S2s计算出错误信息码的位置以及校正值;
将接收端接收到的错误信息码位置上的码字加上校正值得到的解错后的码字;
将纠错后的码字赋值给错误信息码位置上的码字;
重新计算S2s+1=Q(α2s+1),若S2s+1=0,则纠错成功。
2.根据权利要求1所述的RS纠错解码方法,其特征在于,用码字多项式Q(x)除以生成多项式G(x)所得的余项多项式R(x)的过程中会遇到x的系数的相乘,运算时将乘法转换为加法运算,具体为:
将x的系数用多项式表示方法表示;
将多项式表示方法表示的系数相乘展开得到关于α的不同幂次指数的加法;
通过查找表f(αj)查找出关于α不同幂次指数的数值求解加法。
3.根据权利要求1所述的RS纠错解码方法,其特征在于,用校正子S1~S2s计算出错误信息码的位置的具体过程为:
根据校正子计算得到以错误信息码的位置为根的方程;
将所述方程的根用多项式表示方法表示,标准基为α的不同幂次指数,系数为关于xi的值,i=0,1,…,m;
将所述方程的系数用多项式表示方法表示,标准基为α的不同幂次指数;
将用多项式表示方法表示的根和系数带入所述方程的多项式;
令多项式中每一项为0,得到关于xi的非齐次线性方程组;
解上述齐次线性方程组可得到xi的值;
将xi的值带入多项式表示方法表示的根计算得到方程的根得到错误信息码的位置;
寻找错误信息码的位置对应的码字多项式Q(x)中的位置,具体为:
在查找表f(αj)中寻找到与错误信息码的值相同的数值,则多项式Q(x)中x的指数数值与该数值对应的α的指数数值相等的位置的系数,即为错误信息码对应的码字多项式Q(x)中的位置;
若在查找表f(αj)中未寻找到与错误信息码的值相同的数值,采用如下方法寻找错误信息码的位置,具体为:
S1取p=2*m-1=31,v=α2m-1;
S2令p=p+1;
S3若v的最高的数据bit为1,则先将v左移1位,然后v=v+v0,其中v0为将x=α带入本原多项式P(x)中除x的最高次幂项外所得到的数值;
若v的最高的数据bit为0,则将v左移1位;
S4比较步骤S3所得的v与错误信息码是否相等:
如果相等,则码字多项式Q(x)中x的p次幂所对应的系数即为错误信息码的位置;
若不相等,则转到步骤S2继续执行。
4.根据权利要求3所述的RS纠错解码方法,其特征在于,用校正子S1~S2s计算出校正值,具体为:
得到错误信息码位置和校正值组成的方程组,其中错误信息码为所述方程的根,所述校正值为方程组的未知数;
将所述方程组的校正值用多项式表示方法表示,标准基为α的不同幂次指数,系数为关于xi的值,i=0,1,…,m;
将所述方程组的错误信息码位置用多项式表示方法表示,标准基为α的不同幂次指数;
将用多项式表示方法表示的校正值和系数带入所述方程组的多项式;
令多项式中每一项为0,得到关于xi的非齐次线性方程组;
解上述非齐次线性方程组可得到xi的值;
根据xi的值带入多项式表示方法表示的校正值计算得到方程组的根得到校正值。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510461188.4A CN105024707B (zh) | 2015-07-31 | 2015-07-31 | 一种rs纠错解码方法 |
BR112018001700-0A BR112018001700B1 (pt) | 2015-07-31 | 2016-07-22 | Método de codificação e decodificação de correção de erro rs (reedsolomon) |
PCT/CN2016/091012 WO2017020733A1 (zh) | 2015-07-31 | 2016-07-22 | 一种rs纠错解码方法 |
EP16832221.2A EP3309971B1 (en) | 2015-07-31 | 2016-07-22 | Method for encoding and decoding of reed-solomon codes |
US15/871,939 US10447309B2 (en) | 2015-07-31 | 2018-01-15 | RS error correction decoding method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510461188.4A CN105024707B (zh) | 2015-07-31 | 2015-07-31 | 一种rs纠错解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105024707A CN105024707A (zh) | 2015-11-04 |
CN105024707B true CN105024707B (zh) | 2018-05-11 |
Family
ID=54414460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510461188.4A Active CN105024707B (zh) | 2015-07-31 | 2015-07-31 | 一种rs纠错解码方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10447309B2 (zh) |
EP (1) | EP3309971B1 (zh) |
CN (1) | CN105024707B (zh) |
WO (1) | WO2017020733A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105024707B (zh) * | 2015-07-31 | 2018-05-11 | 福建联迪商用设备有限公司 | 一种rs纠错解码方法 |
CN109478996A (zh) * | 2016-07-21 | 2019-03-15 | 皇家飞利浦有限公司 | 用于执行混淆算术的设备和方法 |
RU2693190C1 (ru) * | 2018-07-02 | 2019-07-01 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Владимирский Государственный Университет имени Александра Григорьевича и Николая Григорьевича Столетовых" (ВлГУ) | Способ диагностики недвоичных блоковых кодов |
CN112953570B (zh) * | 2021-02-04 | 2022-08-19 | 山东云海国创云计算装备产业创新中心有限公司 | 一种纠错解码方法、装置、设备及计算机可读存储介质 |
CN112688696B (zh) * | 2021-03-22 | 2021-07-23 | 广州慧睿思通科技股份有限公司 | 有限域编码和译码的方法、装置、设备及存储介质 |
CN114640425B (zh) * | 2022-03-07 | 2023-06-13 | 华南师范大学 | 移动分子扩散通信的传输方法、装置及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1447528A (zh) * | 2003-04-18 | 2003-10-08 | 清华大学 | 一种和rs码等效的编码以及其快速编译码的算法 |
CN1777043A (zh) * | 2005-12-16 | 2006-05-24 | 北京中星微电子有限公司 | BCH编码中Galois扩域运算的快速实现方法 |
CN104639282A (zh) * | 2013-11-14 | 2015-05-20 | 杭州海康威视数字技术股份有限公司 | 通信系统中rs译码方法及其装置 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4597083A (en) * | 1984-04-06 | 1986-06-24 | Ampex Corporation | Error detection and correction in digital communication systems |
US4839896A (en) * | 1987-02-10 | 1989-06-13 | Data Systems Technology Corp. | Fast remainder decoding for a Reed-Solomon code |
US4821268A (en) * | 1987-10-26 | 1989-04-11 | Cyclotomics, Inc. | Soft decision Reed-Solomon decoder |
CA2113941A1 (en) * | 1993-01-25 | 1994-07-26 | Andrew J. Macdonald | Error correcting decoder and decoding method for receivers in digital cellular communications systems |
US6263470B1 (en) * | 1998-02-03 | 2001-07-17 | Texas Instruments Incorporated | Efficient look-up table methods for Reed-Solomon decoding |
US6598201B1 (en) * | 1999-03-15 | 2003-07-22 | Texas Instruments Incorporated | Error coding structure and method |
US6360348B1 (en) * | 1999-08-27 | 2002-03-19 | Motorola, Inc. | Method and apparatus for coding and decoding data |
WO2002101939A2 (en) * | 2001-06-08 | 2002-12-19 | Broadcom Corporation | Robust burst detection and acquisition system and method |
US20030103582A1 (en) * | 2001-12-04 | 2003-06-05 | Linsky Stuart T. | Selective reed-solomon error correction decoders in digital communication systems |
US7020826B2 (en) * | 2002-01-23 | 2006-03-28 | Thomson Licensing | Intra-decoder component block messaging |
US20090199075A1 (en) * | 2002-11-25 | 2009-08-06 | Victor Demjanenko | Array form reed-solomon implementation as an instruction set extension |
US7103830B1 (en) * | 2002-12-18 | 2006-09-05 | Applied Micro Circuits Corporation | DC balanced error correction coding |
US8225185B1 (en) * | 2007-02-07 | 2012-07-17 | Marvell International, Ltd. | RS codec architecture that combines a compact encoder and serial BMA |
CN101442313B (zh) * | 2007-11-20 | 2011-05-11 | 华为技术有限公司 | 数字通信过程中的编解码方法以及编码器、解码器 |
KR101616478B1 (ko) * | 2008-05-12 | 2016-04-28 | 퀄컴 인코포레이티드 | 프로그램가능한 프로세서 상에서의 임의의 갈루아 필드 산술연산의 구현 |
CN201541254U (zh) * | 2009-12-04 | 2010-08-04 | 天津光电通信技术有限公司 | Rs编码解码装置 |
US8677213B2 (en) * | 2011-09-16 | 2014-03-18 | Hitachi, Ltd. | Electronic device comprising error correction coding device and electronic device comprising error correction decoding device |
US8745472B2 (en) * | 2012-09-01 | 2014-06-03 | Texas Instruments Incorporated | Memory with segmented error correction codes |
CN105024707B (zh) * | 2015-07-31 | 2018-05-11 | 福建联迪商用设备有限公司 | 一种rs纠错解码方法 |
-
2015
- 2015-07-31 CN CN201510461188.4A patent/CN105024707B/zh active Active
-
2016
- 2016-07-22 EP EP16832221.2A patent/EP3309971B1/en active Active
- 2016-07-22 WO PCT/CN2016/091012 patent/WO2017020733A1/zh unknown
-
2018
- 2018-01-15 US US15/871,939 patent/US10447309B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1447528A (zh) * | 2003-04-18 | 2003-10-08 | 清华大学 | 一种和rs码等效的编码以及其快速编译码的算法 |
CN1777043A (zh) * | 2005-12-16 | 2006-05-24 | 北京中星微电子有限公司 | BCH编码中Galois扩域运算的快速实现方法 |
CN104639282A (zh) * | 2013-11-14 | 2015-05-20 | 杭州海康威视数字技术股份有限公司 | 通信系统中rs译码方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2017020733A1 (zh) | 2017-02-09 |
BR112018001700A2 (zh) | 2018-11-06 |
CN105024707A (zh) | 2015-11-04 |
US10447309B2 (en) | 2019-10-15 |
US20180138926A1 (en) | 2018-05-17 |
EP3309971B1 (en) | 2024-05-22 |
EP3309971A4 (en) | 2018-07-04 |
EP3309971A1 (en) | 2018-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105024707B (zh) | 一种rs纠错解码方法 | |
Reed et al. | Polynomial codes over certain finite fields | |
EP0973268B1 (en) | Method and device for coding and transmission using a sub-code of a product code | |
Truong et al. | Fast algorithm for computing the roots of error locator polynomials up to degree 11 in Reed-Solomon decoders | |
CA3193957A1 (en) | Forward error correction with compression coding | |
KR101298745B1 (ko) | 데이터를 복호화 및 부호화하는 방법 및 장치 | |
CN108282265A (zh) | 纠错编码方法、装置、设备及计算机可读存储介质 | |
CN106533452A (zh) | 一种多进制ldpc编码方法及编码器 | |
CN101442313B (zh) | 数字通信过程中的编解码方法以及编码器、解码器 | |
US7458007B2 (en) | Error correction structures and methods | |
US6735737B2 (en) | Error correction structures and methods | |
CN115632662A (zh) | 一种rs译码中的伴随式计算方法、装置、设备及介质 | |
CN108494528A (zh) | 一种基于bm译码的卫星通信接收端数据处理方法 | |
Yan et al. | A low-complexity RS decoder for triple-error-correcting RS codes | |
CN104508982A (zh) | 组合的块符号纠错 | |
CN101873143A (zh) | 一种rs纠错码解码器中的伴随式计算电路及其计算方法 | |
Tallini et al. | Reed-Muller codes, elementary symmetric functions and asymmetric error correction | |
CN112152751B (zh) | 单项迹的计算方法及应用单项迹的错误纠正方法 | |
RU2731600C1 (ru) | Способ декодирования кода Рида-Соломона | |
CN109412985B (zh) | 一种级联极化码的球形译码方法 | |
Reed et al. | Polynomial Codes over Certain Finite Fields | |
Levy | A weight distribution bound for linear codes | |
Chr et al. | Decoding the (23, 12, 7) Golay code using a low-complexity scheme | |
Mozhiarasi et al. | An Enhanced (31, 11, 5) Binary BCH Encoder and Decoder for Data Transmission | |
JP2725551B2 (ja) | 誤り訂正符号復号方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |