CN1894857A - 使用Galois域乘法查询表的Reed-Solomon码的编码和解码 - Google Patents
使用Galois域乘法查询表的Reed-Solomon码的编码和解码 Download PDFInfo
- Publication number
- CN1894857A CN1894857A CNA2004800370605A CN200480037060A CN1894857A CN 1894857 A CN1894857 A CN 1894857A CN A2004800370605 A CNA2004800370605 A CN A2004800370605A CN 200480037060 A CN200480037060 A CN 200480037060A CN 1894857 A CN1894857 A CN 1894857A
- Authority
- CN
- China
- Prior art keywords
- symbol
- remainder
- galois field
- word
- field element
- 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.)
- Pending
Links
Images
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
-
- 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/6502—Reduction of hardware complexity or efficient processing
- H03M13/6505—Memory efficient implementations
-
- 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
-
- 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/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/65—Purpose and implementation aspects
- H03M13/6569—Implementation on processors, e.g. DSPs, or software implementations
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
提供了用于对数据编码的方法和设备。该方法包括:(a)提供与码生成器系数相乘的第一分量值的第一表和与所述码生成器系数相乘的第二分量值的第二表,(b)基于消息符号和高阶余数符号确定Galois域元素,(c)将所述Galois域元素分成第一和第二分量,(d)使用所述第一分量和生成器系数索引访问所述第一表中的一个或多个第一表值,并使用所述第二分量和所述生成器系数索引访问所述第二表中的一个或多个第二表,(e)基于具有相等生成器系数索引的第一和第二表值以及先前余数符号确定当前余数符号,(f)针对码生成器的每个生成器系数执行步骤(e)以提供一组余数符号,以及(g)针对码字中的每个消息符号执行步骤(b)-(f)以提供一组最终余数符号,其构成将与所述码字的消息符号一起发送的校验符号。
Description
技术领域
本发明涉及对数据进行编码,且更具体地,涉及用于Reed-Solomon编码的方法和设备。
背景技术
用于使用用于错误检测和校正的Reed-Solomon码发送和接收信息的过程可描述如下。一般表示为位流的待发送信息被划分为某个大小m的小块。这些m位的小块在如下的意义上可利用一种公知为有限域(或Galois域)的数学结构的元素来标识:在m位的所有可能的2m个块的集合与2m维的Galois域(GF)、即GF(2m)的所有2m个元素的集合之间存在一对一映射。Galois域本身可构造为具有来自“基础(ground)”二进制域GF(2)的系数和两个域运算的次数<m的所有多项式的集合,所述“基础”二进制域GF(2)的元素为0和1,且所述两个域运算为加法和乘法,定义如下:加法执行为对有序m元多项式系数的“异或”(XOR)运算,且乘法实施为作为域乘法的以某个m次“本原”二进制多项式为模的多项式乘法,其中“本原”二进制多项式是不可约的(不能进一步因数分解为较低次二进制多项式的积),且另外对于d<2m-1,不除尽形式为xd-1的任何二进制多项式。
最重要和最一般的情形之一是m=8,其中每个这样的块表示为字节,且可以由任何种类的计算机方便地处理,所以下面的讨论针对字节是GF(256)的元素的情形,其中理解“字节”可以是2m维的Galois域的元素或“符号”,其中m≠8。允许GF(256)的构建的本原多项式是p(x)=x8+x4+x3+x2+1。
在建立信息的基本单位(字节或符号)和对应的Galois域(GF)之后,待发送的信息被划分为相等大小k的符号的群,k基于码的所需错误校正能力而得到。每个这样的群称为“消息”。消息进一步被解释为k-1次的GF上的多项式M(x):
M(x)=m0xk-1+m1xk-2+...+mk-1 (1)
其处于升序的系数mi是这样的信息符号:它们处于它们从视作GF元素的位的原始流被获得的顺序。为了构造能够校t个错误的Reed-Solomon码,公知为生成器多项式的2t次多项式G(x)根据下面的公式来定义:
G(x)=(x-a2t-1)(x-a2t-2)...(x-a1)(x-a0)=x2t+g2t-1x2t-1+...+g0 (2)
其中a表示处理两个重要(和相关)特性的GF的所谓“本原”元素,这两个特性是:首先,其满足方程p(a)=0,且第二,作为结果,GF的所有非零元素可表达为本原元素的幂并在GF乘法的运算下形成abelian(或交换)群。正是此特性允许创建“反对数”表,其建立了一种方便的方式来使用此表执行GF元素的乘法。
然后得到消息多项式M(x)与x2t相乘除以生成器多项式G(x)的余数R(x):
M(x)x2t=Q(x)*G(x)+R(x), (3)
该余数是2t-1次的多项式,且最终此多项式的2t个系数用作校验符号,其附加到k个消息符号,形成k+2t个符号的串,该k+2t个符号包括系统形式的“码字”。码字的长度不应超过GF中非零元素的数目n-1。这样在通信信道上实际发送的消息可表示为多项式:
M(x)*x2t+R(x)=M(x)*x2t+r2t-1x2t-1+...+r0 (4)
其中rm是校验符号-允许检测和校正多达t个错误的冗余符号。
因此,编码的任务在于执行其系数为某个GF的符号的多项式的除法。处理GF中的计算的传统软件方法基于使用两个查询表,其中存储了从GF符号的多项式形式到指数形式的变换以及相反的变换。此方法可概括(针对我们的主要情形GF(28))如下:
1.处于多项式形式的符号(GF的元素)表示为字节:
b=(b7b6b5b4b3b2b1b0). (5)
2.符号之和被获得为逐位的XOR运算:f+g=f^g。
3.处于多项式形式的本原元素a表示为a=(00000010),其在多项式表示法中对应于a(x)=x。
4.每个非零符号s是本原元素a的某个升幂s=ak。使用利用二进制多项式的多项式代数操作,预先计算离散的对数表log_table和指数表exp_table以方便(非零)元素的指数(幂)与多项式(字节)表示之间的变换,使得
如果ak=b,则k=log_table[b], b=exp_table[k]. (6)
为了使用这些表对GF符号做乘法,应执行下面的运算链,假定运算数u和v和结果r是以字节的形式:
GFMUL(u,v)=GFMUL(alog_table[u],alog_table[v])=a(log_table[u]+log_table[v])%255 (7)
r=GFMUL(u,v)=exp_table[(log_table[u]+log_table[v])%255] (8)
其中%表示模运算(x%255是x除以255的余数)。
清楚的是,基于此方法的GF上的乘法结果的计算速度由这样的事实所限制,即需要对表进行多次访问,并且还应通过加法来计算到指数表中的条目的地址。在许多情形下,通过修改地址寄存器的访问需要2-3个等待周期,所以一个GF乘法的总时间可以是每符号(字节)10-12个时钟周期。这使得Reed-Solomon码的软件实施成为挑战性的问题-例如在188个数据字节和16个校验字节用以对一个码字进行编码的(204,188,16)Reed-Solomon码的典型情形下,需要188*16*(10-12)~=30-36K个周期,如下面所描述的。因此,例如,对于具有4K符号/秒的传输速率的ADSL应用,仅编码器操作的MIPS的总消耗就是120-144MIPS,这是极高的。
发明内容
根据本发明的第一方面,提供了一种用于对数据编码的方法。该方法包括:(a)提供与码生成器系数相乘的第一分量值的第一表和与所述码生成器系数相乘的第二分量值的第二表,(b)基于消息符号和高阶余数符号确定Galois域元素,(c)将所述Galois域元素分成第一和第二分量,(d)使用所述第一分量和生成器系数索引访问所述第一表中的一个或多个第一表值,并使用所述第二分量和所述生成器系数索引访问所述第二表中的一个或多个第二表,(e)基于具有相等生成器系数索引的第一和第二表值以及先前余数符号确定当前余数符号,(f)针对所述码生成器的每个生成器系数执行步骤(e)以提供一组余数符号,以及(g)针对码字中的每个消息符号执行步骤(b)-(f)以提供一组最终余数符号,其构成将与所述码字的消息符号一起发送的校验符号。
根据本发明的第二方面,提供了一种用于对数据编码的设备。该设备包括:第一查询表,其包含与码生成器系数相乘的第一分量值;第二查询表,其包含与所述码生成器系数相乘的第二分量值;以及处理器。该处理器包括:用于基于消息符号和高阶余数符号确定Galois域元素的装置;用于将Galois域元素分成第一和第二分量的装置;用于使用第一分量和生成器系数索引访问第一查询表中的一个或多个第一表值、并且用于使用第二分量和生成器系数索引访问第二查询表中的一个或多个第二表值的装置;以及用于针对码生成器的每个生成器系数、基于具有相等生成器系数索引的第一和第二表值以及先前余数符号确定当前余数符号提供一组余数符号的装置。码字的每个消息符号被处理以提供一组最终余数符号,其构成将与码字的消息符号一起发送的校验符号。
附图说明
为了更好地理解本发明,参考了附图,其通过参考合并于此,且其中:
图1是用于Reed-Solomon编码的现有技术方法的示意性块图;
图2是图示了用于Reed-Solomon编码的方法的示意性块图,其中Galois域元素在与码生成器系数相乘之前分成半字;
图3是图示了根据本发明一个实施例的Reed-Solomon编码的示意性块图;
图4A和4B图示了用于根据本发明的Reed-Solomon编码的查询表的实施例;
图5是图示了在根据本发明一个实施例的数字信号处理器中的Reed-Solomon编码的示意性块图;以及
图6是图示了根据本发明一个实施例的Reed-Solomon编码的流程图。
具体实施方式
为了描述一种根据本发明的Reed-Solomon(RS)编码过程来执行对消息编码的特定任务的更有效方法,需要对所涉及的计算进行详细描述。该问题被公式化为得到消息多项式M(x)与x2t相乘除以码生成器多项式G(x)的余数。
该余数可通过对该消息进行迭代来计算-增加其长度,将该消息的已接收字节左移并从右移入新字节,使得在第一步,消息M0(x)只包括一个字节m0,
M0(x)=m0x0=m0, (9)
且认为消息M1(x)包括两个字节m1和m0,其中其第一字节m0左移一个位置,这在多项式表示法中可写为:
M1(x)=m0x+m1=M0(x)*x+m1 (10)
引入生成器多项式G(x)的“尾巴”g(x)是方便的:
G(x)=x2t+g2t-1x2t-1+...+g0=x2t+g(x) (11)
具有特性:
G(x)+g(x)=x2t. (12)
使用此特性,在第一步,当仅编码消息的第一符号(得到余数r0)时,下面的关系成立:
M0(x)x2t=m0x2t=Q0(x)G(x)+R0(x),R0(x)=r0,2t-1x2t-1+...+r0,0 (13)
m0x2t=m0G+m0g (14)
因此,迭代开始于:
Q0(x)=m0,R0=m0g. (15)
在第二步之后,余数可计算如下:
M1(x)x2t=(M0(x)*x+m1)x2t=(x*M0(x)*x2t+m1x2t=x*Q0*G+
(x*R0(x)+m1x2t)=
=(Q0*x)*G+(r0,2t-1x2t+m1x2t)+(r0,2t-2*x2t-1+...+r0,0*x)=
=(Q0*x+r0,2t-1+m1)*G+(m1+r0,2t-1)*g(x)+(r0,2t-2*x2t-1+...+r0,0*x+0*x0
+),(16)
因此:
R1(x)=(m1+r0,2t-1)*g(x)+(r0,2t-2*x2t-1+...+r0,0*x+0*x0). (17)
使用此方法,一般而言,第k+1步之后的余数rk+1(x)可以以完全相同的方式根据先前第k步的余数rk(x)和新进来的字节mk+1来计算:
Rk+1(x)=(mk+1+rk,2t-1)*g(x)+(rk,2t-2*x2t-1+...+rk,0*x+0*x0)
=((mk+1+rk,2t-1)*g2t-1+rk,2t-2)*x2t-1+...+((mk+1+rk,2t-1)*g1+rk,0)*x+(mk+1+rk,2t-1)*g0 (18)
此计算可使用包括2t个符号的“移位寄存器”r的一般表示法来实施:
r=r2t-1,r2t-2,...r0. (19)
在每次迭代,2t个符号被左移,其中零符号从右移入,且最左的符号r2t-1移出寄存器-此最左的符号被与进来的符号相加(XOR)并形成“反馈”符号
fk+1=mk+1+rk,2t-1. (20)
使用这些定义,余数Rk(x)根据下面的公式来迭代:
Rk+1(x)=(fk+1g2t-1+rk,2t-2)x2t-1+(fk+1g2t-2+rk,2t-3)x2t-2+...+fk+1g0 (21)
表示余数迭代的示意图在图1中示出。在图1中,对消息符号10(ms)与高阶余数46(r3)求和以提供Galois域元素14(f)。如上面所指出的,Galois域加法以异或运算来执行。Galois域元素14与码生成器系数20、22、24和26(g0、g1、g2和g3)相乘以提供中间值30、32、34和36。对中间值与先前的余数符号求和以提供当前的余数符号。由此,对积fg0与零求和以提供余数符号40(r0);对积fg1与先前的余数符号40求和以提供当前的余数符号42(r1);对积fg2与先前的余数符号42求和以提供当前的余数符号44(r2);且对积fg3与先前的余数符号44求和以提供当前的余数符号46(r3)。针对码字中的每个消息符号10重复此过程。在已处理了码字中的所有消息符号之后,余数符号40、42、44和46表示用于与消息符号一起发送的校验符号。码字由此包括消息符号和校验符号。图1的实例产生用于与消息符号一起发送的四个校验符号,并且能够校正码字中的两个错误。在一个更一般的实例中,码生成器包括16个码生成器系数gi,并且产生16个校验符号,用于校正码字中的八个错误。
可以看出,当使用计算余数多项式的传统查询表方法时,计算流程中的主要瓶颈是GF中的乘法结果的重复计算。对于消息的每个字节,需要2t个乘法,所以为了利用n个信息字节和2t个校验字节对一个码字编码,必须执行2nt个GF乘法。
在利用来自GF(256)t=8,n=239或以下的符号来校正8个错误的Reed-Solomon码的重要情形下,总共执行3824个GF运算。利用10-12个周期/运算,这总计高达40K个周期/码字。
在2002年3月19日授予Yang的美国专利No.6,360,348中,基于如下观察构造了查询表以方便计算:对同一组第二运算数,也就是码生成器多项式g(x)的2t个系数,执行包括在余数多项式的一次迭代中的所有GF运算。对应地,GF的所有n个元素与码生成器多项式g(x)的2t个系数相乘的结果的2t*n个值被预先计算并存储在查询表中,使得表中的每个条目F(f,i)的内容定义为:
F(f,i)=fgi, (22)
其中f代表处于多项式形式的Galois域元素,gi是码生成器多项式的系数,且标记“”表示Galois域乘法运算。
如果使用此方法,即使当所校正的错误的数目相对小,比如8个错误,且所使用的Galois域是GF(256)时,表的大小是4K字节(16*256*1字节,16是用以校正8个错误的校验字节的数目)。经常地,应执行用于RS码的若干不同的选项-例如当在ADSL应用中使用若干等待时间路径(latency path)时,一个等待时间路径中的码字具有16个校验字节,且在另一等待时间路径中具有12个校验字节,在此情形下存储器大小将是7Kb等。
根据本发明的特征,使用两个小表以两步来执行GF运算fgi,其中f代表处于多项式形式的任意GF元素,gi是码生成器多项式的系数,且标记“”表示Galois域乘法运算:
1)任意GF元素f首先表示为其“低”和“高”部分之和-例如,在GF(256)中,我们可写出:
f=H0+0L (23)
其中使用高和低掩码,利用两个与运算,从f容易地获得H和L:
H=f&0xF0,L=f&0x0F (24)
2)使用Galois域的特性,GFMUL运算fgi可以执行为:
fgi=(H+L)gi=Hgi+Lgi (25)
方程(23)~(25)的运算在图2中示出。如所示,根据方程(24),使用高和低掩码将Galois域元素14分成高半字50(H0)和低半字52(HL)。高和低半字各与码生成器系数20、22、24和26中的每个相乘。相应的积被求和以提供中间值。对中间值与先前的余数符号求和以提供当前的余数符号。图2的架构与查询表组合以实现有利的结果。
3)使用方程(25),构造了两个小查询表,每个通过“低”和“高”半字的所有16个可能情形保持生成器多项式系数gi的集合的连续GFMUL(Galois域乘法)结果:
TH(L,i)=(H0)gi (26)
TL(L,i)=(0L)gi (27)
4)在GF(256)和码生成器多项式的16个系数的情形下,每个表的大小是256字节,且这两个表的总大小是512字节-是现有技术方法中的1/8,其中总执行时间只长了~50%,因为运算的~50%不直接与GFMUL运算的执行相联系。
通过单步(一个信息符号/字节)的余数迭代中所涉及的运算可以按如下序列来执行:
f=mk+1^rk,2t-1 (28)
f=H0+0L (29)
for i=1:2t-1 s=TH(H,i)^TL(L,i),ri=s^ri-1,r0=TH(H,0)^TL(L,0). (30)
每次迭代需要对查询表的两次访问,以及在任何微处理器上都可容易实现的后续XOR运算。
使用查询表TH和TL的码生成在图3中示意性地示出。如上面所指出的,第一查询表包含高半字H0与码生成器系数中的每个相乘的值,并且第二查询表包含低半字0L与码生成器系数中的每个相乘的值。高半字值与系数索引一起用于访问表TH以提供一个或多个高表值54,且低半字值与系数索引一起用于访问表TL以提供一个或多个低表值56。具有相同系数索引的相应的高和低表值在求和运算60中被求和以提供中间值,且所述中间值与相应的先前余数符号在求和运算62中被求和以提供当前的余数符号40、42、44和46。如下面所讨论的,查询表可提供待求和的单组表值,或提供待求和的两组或多组表值,这依赖于执行码生成的系统的架构。
根据本发明一个实施例的查询表的内容在图4A和4B中示出。图4A示出了高半字表70(TH),且图4B示出了低半字表72(TL)。如所示,表70包含高半字H0的每个可能值与码生成器系数中的每个相乘的积。由此,表70中的每个条目包含值giH,其中i的范围是从0到2t-1,且H的范围是从0到高半字H的最大值。相似地,表72中的每个条目包含值giL,其中i的范围是从0到2t-1且L的范围是从0到低半字L的最大值。对于消息符号为字节的一般情形,高半字具有16个可能值,范围从00到F0(使用十六进制表示法)。码生成器系数的数目依赖于所需校验符号的数目,且对于八个校验符号的情形可以是16。相似地,表72包含低半字0L的每个可能值与码生成器系数中的每个相乘的积。在消息符号是字节的情形下,低半字值的范围是从0到F。因此,对于消息符号是字节且码生成器具有16个系数的情形,查询表70和72中的每个具有256个条目。在图4A和4B的实例中,表70和72被组织为使得每行包含对应于一个半字值的积。如下面所讨论的,这种组织方便了在典型处理器中的并行执行。
已结合八位Galois域元素划分为高和低半字且利用两个查询表的实施例描述了本发明。在其它实施例中,每个Galois域元素可具有多于八个位。此外,每个Galois域元素可分成多于两个分量,且可利用多于两个查询表。考虑16位Galois域元素。在专利No.6,360,348中描述的方法需要2M字节的查询表。在每个16位Galois域元素分成两个分量的实施例中,需要每个为8K字节(16个系数x 256个半GF元素值x 2字节每条目)的两个查询表。在每个16位Galois域元素分成四个分量的实施例中,需要每个为512字节(16个系数x 16个四分之一GF元素值x2字节每条目)的四个查询表。
对于具有大于8位宽度的数据访问字大小的任何DSP(数字信号处理器)(所有现代DSP都是这样),可简单地实现此实施例的一个附加的优点,这是因为这样的事实,即:可利用单调增加的第二索引来进行表访问,所以该表可用作具有依次入口的一维数组,且移位寄存器单元以严格依次的顺序来使用。此事实极大地加速了执行,首先因为在一个周期中读取多个条目,且其次因为也可同时对多个Galois域符号执行XOR运算-例如,在具有32位数据字路径的DSP上实施时一次4个符号,对于具有64位数据字路径的DSP是8个符号,等等。例如,在有某些限制的具有32位数据路径的Blackfin DSP上的一个特定的实施以接近1.5周期/校验字节/数据字节来工作,这是传统方法的速度的5-6倍快,且甚至是具有内建Galois域乘法器的DSP的速度的2倍快。
用于根据本发明的一个实施例来对数据编码的数字信号处理器的块图在图5中示出。用于根据本发明的一个实施例在具有w个Galois域元素的字宽的数字信号处理器中对数据编码的过程在图6中示出。在图5的实施例中,数字信号处理器的核心处理器100接收消息符号m并提供待与码字的消息符号一起发送的校验符号r。核心处理器100访问高半字查询表110并接收表值giH、gi+1H、gi+2H和gi+3H。核心处理器100还访问低半字查询表110并接收表值giL、gi+1L、gi+2L和gi+3L。在图5的实施例中,消息符号m是字节,且核心处理器100具有32位的字宽。从而,核心处理器100每周期可处理来自查询表110和查询表112中的每个的四个表值,如图5中所示并在下面描述的。具有不同字宽的核心处理器每周期可处理较多或较少的表值。
再次参考图6,下一消息符号m被接收并在步骤150处理。在步骤152,Galois域元素f根据该消息符号和一高阶余数符号来计算,如方程(28)中所示。在步骤154,Galois域元素分成第一和第二分量H0和0L,如方程(23)和(24)中所示。在此实施例中,Galois域元素分成高半字和低半字。然而,在其它实施例中,Galois域元素可分成多于两个分量。
在步骤156,高半字H0和索引i用来从查询表110(图5)访问w个表值。索引i是生成器系数gi的索引。在码字具有16个校验符号且码生成器多项式具有16个系数的实例中,索引i的范围是从0到15。而且在步骤156,低半字0L和索引i用来从查询表112(图5)获得w个表值。如上面所指出的,同时访问的表值的数目依赖于以Galois域元素的单位表示的核心处理器100的字宽。对于核心处理器100具有32位字宽且消息符号是字节的典型情形,在查询表110和112中的每个中,同时访问w=4个表值。
在步骤160和162,针对在步骤156访问的w组表值中的每个计算余数符号ri。更具体地,在步骤160,针对w组表值中的每个计算中间值si,如方程(30)中所示。一组表值包括来自查询表110的表值和来自查询表112的表值,这两个表值具有相同的生成器系数索引。然后,针对w个中间值si中的每个,通过对中间值si与先前的余数符号ri-1进行异或运算来计算当前的余数符号ri,也如方程(30)中所示。由此,在步骤162计算了w个余数符号。
在步骤170,作出关于是否已经计算2t个余数符号的判断,其中2t代表码生成器多项式中的系数的数目。如果尚未计算2t个余数符号,在步骤172指数i被递增w。处理随后返回到步骤156以访问表110中的w个新表值以及表112中的w个新表值。包括步骤156、160、162、170以及172的循环被重复,直到2t个余数符号已经被计算为止。对于w=4以及2t=16的实例,需要该循环的四次迭代。
当2t个余数符号已经被计算时,在步骤180判断是否已经达到码字的结尾。典型的码字可以包括188个消息符号。当尚未达到码字结尾时,处理返回到步骤150以处理下一消息符号m。当已经达到码字结尾时,2t个校验符号在步骤182输出。因此。例如16校验符号可以被输出,用于与码字的188个消息符号一起发送。
在一些应用,如ADSL调制解调器中,RS码的参数可以被设置为“即时(on the fly)”,并且对于一个ADSL通道内的不同承载通道可以是不同的。在此情形下,基于本发明可以实现两种编码方法。
根据第一方法,仅产生用于最高可能数目的校验字节的表,并且如果使用具有较小错误校正能力的码,编码器在如下的两个阶段中工作。
首先,观察较高次数的码生成器多项式G2t包含作为因数的较低次数的码生成器多项式G2s:
G2s(x)=(x-a2s-1)...(x-a0) (31)
G2t(x)=(x-a2t-1)...(x-a0)=(x-a2t-1)...(x-a2s)(x-a2s-1)...(x-a0)=h2d(x)G2s(x)(32)
其中
h2d(x)=(x-a2t-1)...(x-a2s) (33)
且d=t-s是码错误校正能力之间的差。
对应地,次数n的消息多项式被分成两部分-较高的n-2d项以及较低的2d项:
Mn(x)=Mn-2d(x)x2d+M2d(x) (34)
且码生成器多项式应该划分成的移位的消息多项式表示为:
Mn(x)x2s=Mn-2d(x)x2dx2s+M2d(x)x2s=Mn-2d(x)x2s+2d+M2d(x)x2s=Mn-2d(x)x2t+M2d(x)x2s. (35)
现在与较高次数2t的码生成器多项式相关的消息的前n-2d个字节的余数被获得为:
Mn-2d(x)x2t=Q(x)G2t(x)+R(x) (36)
其中第一项可以写为:
Q(x)G2t(x)=Q(x)h2d(x)G2s(x)=Q1(x)G2s(x) (37)
而
Q1(x)=Q(x)h2d(x). (38)
遵循相同的逻辑,由2t组成的“长”余数R(x)被分成两部分-较高的2d项和较低的2s项:
R(x)=r2d(x)x2s+R2s-1(x) (39)
且最终,编码可以根据下列公式执行:
Mn(x)x2s=Mn-2d(x)x2t+M2d(x)x2s=Q1(x)G2s(x)+M2d(x)x2s+r2d(x)x2s+R2s-1(x)
(40)
这等价于相对短的消息的编码(仅2d个字节)
(M2d(x)+r2d(x))x2s=Q2(x)G2s(x)+R2(x) (41)
且将此运算的结果与“长”编码的“缩短的”结果相加:
Mn(x)x2s=Q1(x)G2s(x)+Q2(x)G2s(x)+R2(x)+R2s-1(x)=(Q1(x)+Q-2(x))G2s+R2(x)+R2s-1(x)) (42)
结果是,编码的总链可以描述如下:消息M2d(x)的最后2d个字节与所获得的余数r2d(x)的前(最左的)2d个字节相加(XOR),并且这些2d个字节被作为短消息处理并且使用传统方法来编码;该结果被加到“长”余数R(x)的其余字节-这是编码的最终结果。
此方法具有归因于2d个字节的附加“重新编码”的开销D(t,d),其与编码的字节数以及结果中的字节数成比例:
D(t,d)=K*2d*2(t-d), (43)
其中K是传统编码所需的周期的数目,通常为10-12。对于d=t/2K*t2,此开销具有最大值,并且在K=12,t=8时可以在768个周期的水平,其构成编码的主要部分的~20%。
另一选项是为任何所需码参数即时产生“右”表,其可能需要附加的存储器。但是为了充分利用具有宽数据路径的DSP,在此情形中,根据本发明的一方面,当校验字节的数目不是4的整数倍时,该表以大小32*4k产生,其中4k是往上到校验字节的指定数目的4的最接近的整数倍数-例如对于14为16、对于10为12,等等。其余64个字节由0填充,所以当这些值被读取时,它们不影响计算的结果。
编码器中使用的相同表可以以如下方式用在计算校验子(syndrome)的解码器中。以系统形式的所接收的码字首先“重新编码”-对码字的信息字节运行编码器机制上以获得实际接收的校验字节序列的“拷贝”。随后使用逻辑与算子将此重新构造的“拷贝”与实际接收的校验字节逐位比较,形成与该校验子紧密相关的多项式-即,关于GF本原元素的连续幂的此多项式的值恰好是该校验子的分量,原因在于如下关系:M(x)=Q(x)G(x)+R(x),Sk=M(ak)=Q(ak)G(ak)+R(ak)=R(ak),k=0,1,...2t-1
(44)
这是因为根据如下码生成器多项式的定义,G(ak)=0
G(x)=(x-a2t-1)...(x-a0) (45)
因此,可以使用传统方法对比长度n字节的原始码字短得多的2t字节序列执行校验子的累积。这涉及(2t-1)2非平凡GF乘法,其与执行Berlekamp-Massey或Euclid算法以得到错误定位器多项式的系数所需的运算同阶。由于对运算数之一的固定组执行GF乘法,此计算的速度实际上比一般GF乘法高出30%-50%,因此在(255,239,16)RS码的情形中,至多需要225*6=1350个周期,这是30%的开销。
在已经由此描述了本发明的概念以及许多示例实施例的情况下,对于本领域技术人员很明显的是,本发明可以以各种方式实施,并且对这些人很容易想到修改和改进。因此,给出的实例目的不是限制,并且仅通过实例方式提供。本发明仅根据需要由所附权利要求以及其等效物来限制。
Claims (24)
1.一种用于对数据编码的方法,包括:
(a)提供与码生成器系数相乘的第一分量值的第一表和与所述码生成器系数相乘的第二分量值的第二表;
(b)基于消息符号和高阶余数符号确定Galois域元素;
(c)将所述Galois域元素分成第一和第二分量;
(d)使用所述第一分量和生成器系数索引访问所述第一表中的一个或多个第一表值,并使用所述第二分量和所述生成器系数索引访问所述第二表中的一个或多个第二表;
(e)基于具有相等生成器系数索引的第一和第二表值以及先前余数符号确定当前余数符号;
(f)针对码生成器的每个生成器系数执行步骤(e)以提供一组余数符号;以及
(g)针对码字中的每个消息符号执行步骤(b)-(f)以提供一组最终余数符号,其构成将与所述码字的消息符号一起发送的校验符号。
2.如权利要求1中所述的方法,其中步骤(b)包括对所述消息符号与所述高阶余数符号进行异或运算。
3.如权利要求2中所述的方法,其中步骤(e)包括对所述第一和第二表值进行异或运算以提供一中间值,以及对所述中间值和先前余数符号进行异或运算以提供当前余数符号。
4.如权利要求1中所述的方法,其中所述第一和第二分量分别包括Galois域元素的高半字和低半字。
5.如权利要求1中所述的方法,其中所述码字的消息符号包括消息字节。
6.如权利要求5中所述的方法,其中步骤(g)产生16个校验符号,用于校正所述码字中的多达八个错误。
7.如权利要求1中所述的方法,其中步骤(d)包括并行地访问两组或多组第一和第二表值,并且其中步骤(e)包括并行地确定两个或多个当前余数符号。
8.如权利要求1中所述的方法,其中将所述Galois域元素分成第一和第二分量包括以第一和第二掩码对所述Galois域元素进行与运算。
9.如权利要求1中所述的方法,其中步骤(d)包括并行地访问w组第一和第二表值,其中w表示以所述Galois域元素的单位表示的执行编码的处理器的字宽,并且其中步骤(e)包括并行地确定w个当前余数符号。
10.如权利要求1中所述的方法,其中步骤(a)包括针对指定的码参数在运算期间生成所述第一和第二表中的表值。
11.如权利要求1中所述的方法,其中步骤(g)包括提供与生成器系数的数目相等的一数目的校验符号。
12.如权利要求1中所述的方法,其中步骤(g)包括提供少于生成器系数的数目的一数目的校验符号。
13.一种用于对数据编码的设备,包括:
第一查询表,其包含与码生成器系数相乘的第一分量值;
第二查询表,其包含与所述码生成器系数相乘的第二分量值;以及
处理器,其包括:用于基于消息符号和高阶余数符号确定Galois域元素的装置;用于将Galois域元素分成第一和第二分量的装置;用于使用第一分量和生成器系数索引访问第一查询表中的一个或多个第一表值的装置;用于使用第二分量和生成器系数索引访问第二查询表中的一个或多个第二表值的装置;以及用于针对码生成器的每个生成器系数、基于具有相等生成器系数索引的第一和第二表值以及先前余数符号确定当前余数符号以提供一组余数符号的装置,其中码字的每个消息符号被处理以提供一组最终余数符号,其构成将与码字的消息符号一起发送的校验符号。
14.如权利要求13中所述的设备,其中所述用于确定Galois域元素的装置包括用于对所述消息符号与所述高阶余数符号进行异或运算的装置。
15.如权利要求13中所述的设备,其中所述用于确定当前余数符号的装置包括:用于对所述第一和第二表值执行异或运算以提供一中间值的装置,以及用于对所述中间值与先前余数符号执行异或运算以提供当前余数符号的装置。
16.如权利要求13中所述的设备,其中所述第一和第二分量分别包括Galois域元素的高半字和低半字。
17.如权利要求13中所述的设备,其中所述码字的消息符号包括消息字节。
18.如权利要求13中所述的设备,其中所述处理器配置为产生16个校验符号,用于校正所述码字中的多达八个错误。
19.如权利要求13中所述的设备,其中所述用于访问第一和第二表值的装置包括用于并行地访问两组或多组第一和第二表值的装置,并且其中用于确定当前余数符号的装置包括用于并行地确定两个或多个当前余数符号的装置。
20.如权利要求13中所述的设备,其中所述用于将所述Galois域元素分成第一和第二分量的装置包括用于以第一和第二掩码对所述Galois域元素进行与运算的装置。
21.如权利要求13中所述的设备,其中所述用于访问第一和第二表值的装置包括用于并行地访问w组第一和第二表值的装置,其中w表示以所述Galois域元素的单位表示的处理器字宽,并且其中用于确定当前余数符号的装置包括用于并行地确定w个当前余数符号的装置。
22.如权利要求13中所述的设备,其中所述处理器进一步包括用于针对指定的码参数在运算期间生成所述第一和第二表中的表值的装置。
23.如权利要求13中所述的设备,其中所述码字的每个消息符号被处理以提供与生成器系数的数目相等的一数目的校验符号。
24.如权利要求13中所述的设备,其中所述码字的每个消息符号被处理以提供少于生成器系数的数目的一数目的校验符号。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/735,423 US7162679B2 (en) | 2003-12-12 | 2003-12-12 | Methods and apparatus for coding and decoding data using Reed-Solomon codes |
US10/735,423 | 2003-12-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1894857A true CN1894857A (zh) | 2007-01-10 |
Family
ID=34710449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004800370605A Pending CN1894857A (zh) | 2003-12-12 | 2004-11-16 | 使用Galois域乘法查询表的Reed-Solomon码的编码和解码 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7162679B2 (zh) |
JP (1) | JP4777258B2 (zh) |
KR (1) | KR20060125837A (zh) |
CN (1) | CN1894857A (zh) |
WO (1) | WO2005062472A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095418A (zh) * | 2013-01-18 | 2013-05-08 | 苏州威士达信息科技有限公司 | Cmmb系统rs编码中常系数矩阵的生成装置和方法 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526518B2 (en) * | 2004-10-13 | 2009-04-28 | Cisco Technology, Inc. | Galois field multiplication system and method |
KR100933139B1 (ko) | 2006-02-22 | 2009-12-21 | 삼성전자주식회사 | 통신 시스템에서 신호 수신 장치 및 방법 |
US7814398B2 (en) * | 2006-06-09 | 2010-10-12 | Seagate Technology Llc | Communication channel with Reed-Solomon encoding and single parity check |
CA2663019A1 (en) * | 2006-10-19 | 2008-04-24 | Qualcomm Incorporated | Beacon coding in wireless communications systems |
JP4749383B2 (ja) * | 2007-05-17 | 2011-08-17 | 三菱電機株式会社 | 符号化装置、暗号化装置及びプログラム |
TWI334277B (en) * | 2007-06-06 | 2010-12-01 | Lite On Technology Corp | Method for calculating syndrome efficiently in reed-solomon decoding and machine readable storage medium storing instructions for performing the method |
JP5456766B2 (ja) * | 2008-05-12 | 2014-04-02 | クゥアルコム・インコーポレイテッド | プログラム可能なプロセッサにおける随意選択的なガロア域計算の実行 |
CN101814922B (zh) | 2009-02-23 | 2013-06-19 | 国际商业机器公司 | 基于bch码的多位错纠错方法和装置以及存储系统 |
US8347192B1 (en) * | 2010-03-08 | 2013-01-01 | Altera Corporation | Parallel finite field vector operators |
US8682950B2 (en) * | 2010-05-28 | 2014-03-25 | Microsoft Corporation | Computer-implemented symbolic polynomial factorization |
CN102104446B (zh) * | 2011-02-28 | 2013-01-30 | 华为技术有限公司 | 编码包转发方法、编码包接收处理方法和转发节点 |
JP2014010415A (ja) * | 2012-07-03 | 2014-01-20 | Nec Soft Ltd | 分散情報管理システム、分散情報管理装置、分散情報保持装置、分散情報管理方法およびプログラム |
US10148285B1 (en) | 2012-07-25 | 2018-12-04 | Erich Schmitt | Abstraction and de-abstraction of a digital data stream |
CN103023512B (zh) * | 2013-01-18 | 2016-01-20 | 苏州威士达信息科技有限公司 | Atsc系统rs编码中常系数矩阵的生成装置和方法 |
US9362953B2 (en) * | 2013-08-02 | 2016-06-07 | Infineon Technologies Ag | Efficient error correction of multi-bit errors |
US10795858B1 (en) | 2014-02-18 | 2020-10-06 | Erich Schmitt | Universal abstraction and de-abstraction of a digital data stream |
US10171109B2 (en) * | 2017-01-23 | 2019-01-01 | Hefei High-Dimensional Data Technology Co., Ltd. | Fast encoding method and device for Reed-Solomon codes with a small number of redundancies |
KR20210080807A (ko) | 2019-12-23 | 2021-07-01 | 삼성전자주식회사 | 메모리 컨트롤러 및 메모리 시스템 |
US11184029B1 (en) * | 2020-05-28 | 2021-11-23 | Samsung Electronics Co., Ltd. | Low power ECC for eUFS |
US11438013B2 (en) * | 2020-07-15 | 2022-09-06 | Samsung Electronics Co., Ltd. | Low-power error correction code computation in GF (2R) |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4142174A (en) * | 1977-08-15 | 1979-02-27 | International Business Machines Corporation | High speed decoding of Reed-Solomon codes |
US4567594A (en) * | 1983-06-07 | 1986-01-28 | Burroughs Corporation | Reed-Solomon error detecting and correcting system employing pipelined processors |
GB2155669A (en) | 1984-03-06 | 1985-09-25 | Sony Corp | Galois field multipliers |
JPS61203728A (ja) * | 1985-03-07 | 1986-09-09 | Fujitsu Ltd | 拡大体における求積回路 |
US4763332A (en) * | 1987-03-02 | 1988-08-09 | Data Systems Technology Corp. | Shared circuitry for the encoding and syndrome generation functions of a Reed-Solomon code |
US4847801A (en) * | 1987-10-26 | 1989-07-11 | Cyclotomics, Inc. | Compact galois field multiplier |
JPH0345020A (ja) * | 1989-07-13 | 1991-02-26 | Canon Inc | 巡回符号処理回路 |
US5428629A (en) * | 1990-11-01 | 1995-06-27 | Motorola, Inc. | Error check code recomputation method time independent of message length |
US5948117A (en) * | 1997-01-23 | 1999-09-07 | Quantum Corporation | Modified Reed-Solomon error correction system using (W+i+1)-bit representations of symbols of GF(2w+i) |
US6173429B1 (en) * | 1997-03-14 | 2001-01-09 | Harris Corporation | Apparatus for providing error correction data in a digital data transfer system |
US5942005A (en) * | 1997-04-08 | 1999-08-24 | International Business Machines Corporation | Method and means for computationally efficient error and erasure correction in linear cyclic codes |
JPH113573A (ja) * | 1997-04-15 | 1999-01-06 | Mitsubishi Electric Corp | 拡大リードソロモン符号の誤り訂正復号方法と誤り訂正復号装置、1次伸長拡大リードソロモン符号の誤り訂正方法と誤り訂正装置、および2次伸長拡大リードソロモン符号の誤り訂正方法と誤り訂正装置 |
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 |
US6757862B1 (en) * | 2000-08-21 | 2004-06-29 | Handspring, Inc. | Method and apparatus for digital data error correction coding |
-
2003
- 2003-12-12 US US10/735,423 patent/US7162679B2/en active Active
-
2004
- 2004-11-16 KR KR1020067013905A patent/KR20060125837A/ko not_active Application Discontinuation
- 2004-11-16 JP JP2006543834A patent/JP4777258B2/ja not_active Expired - Fee Related
- 2004-11-16 WO PCT/US2004/038272 patent/WO2005062472A1/en active Application Filing
- 2004-11-16 CN CNA2004800370605A patent/CN1894857A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095418A (zh) * | 2013-01-18 | 2013-05-08 | 苏州威士达信息科技有限公司 | Cmmb系统rs编码中常系数矩阵的生成装置和方法 |
CN103095418B (zh) * | 2013-01-18 | 2016-01-20 | 北京广讯科技有限责任公司 | Cmmb系统rs编码中常系数矩阵的生成装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
US7162679B2 (en) | 2007-01-09 |
JP4777258B2 (ja) | 2011-09-21 |
WO2005062472A1 (en) | 2005-07-07 |
KR20060125837A (ko) | 2006-12-06 |
US20050149832A1 (en) | 2005-07-07 |
JP2007514371A (ja) | 2007-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1894857A (zh) | 使用Galois域乘法查询表的Reed-Solomon码的编码和解码 | |
CN101039119A (zh) | 编码与解码的方法及系统 | |
CN1492589A (zh) | 透平编码器和信道编码方法 | |
CN101080874A (zh) | 纠错编码装置以及在其中使用的纠错编码方法 | |
CN1533045A (zh) | 用于编码和解码传输格式组合指示符的设备和方法 | |
CN1489294A (zh) | 误差校正码的译码方法及其程序和设备 | |
CN1777082A (zh) | 基于预编码的并行卷积ldpc码的编码器及其快速编码方法 | |
CN101032083A (zh) | 用于编码和解码数据的方法和设备 | |
CN1146116C (zh) | 截短法尔码的差错捕获译码方法和装置 | |
CN101047391A (zh) | 低密度奇偶校验编码方法、装置及奇偶校验矩阵生成方法 | |
CN1823474A (zh) | 解码装置及解码方法 | |
CN1176714A (zh) | 用于三错校正和四错校正的改进系统 | |
CN1467918A (zh) | 里得-索罗门解码器 | |
CN101043284A (zh) | 一种宽带码分多址系统中turbo编码器内的交织器 | |
CN1255000A (zh) | 速率匹配方法和数字通信系统 | |
CN1441555A (zh) | 改进的哈夫曼译码方法和装置 | |
CN1636324A (zh) | 纠错解码器的钱搜索单元 | |
CN1302624C (zh) | 基于格子的信道编码所用的解码器 | |
CN1317828C (zh) | 里德索洛蒙码或扩展里德索洛蒙码的译码方法和译码器 | |
CN1822530A (zh) | 一种检测和纠正数据误码的方法及系统 | |
CN1493110A (zh) | 特播解码器、特播解码方法以及存储该方法的存储介质 | |
CN1682449A (zh) | 使用数据窗口来解码数据的方法 | |
CN1599262A (zh) | 宽带无线接入系统中里德索洛门卷积级联码的实现方法 | |
CN1731684A (zh) | 构造低密度奇偶校验矩阵的方法和装置 | |
CN1447528A (zh) | 一种和rs码等效的编码以及其快速编译码的算法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |