一种解码伴随式的计算方法、电路及解码器的制作方法

文档序号:7513190阅读:174来源:国知局
专利名称:一种解码伴随式的计算方法、电路及解码器的制作方法
技术领域
本发明属于解码技术领域,尤其涉及一种解码伴随式的计算方法、电路及 解码器。
背景技术
BCH码取自Bose、 Ray-Chaudhuri与Hocquenghem的缩写,是纠正多个随机错误的循环码,可以用生成多项式g(x)的根描述,在通信领域和消费类电子领域经常使用BCH码作为检错或纠错的依据。需要纠错或检错的数据通过编 码器生成校验码,并将校验码和原码同时发送出去,然后在解码端解码并同时 纠错或检错。BCH码的解码流程如图1所示,详述如下在步骤S101中,计算伴随式;在步骤S102中,根据伴随式计算错误位置多项式;在步骤S103中,根据错误位置多项式对4普误进行搜索,例如"钱"搜索,并 纠错。其中伴随式的计算是重要的一步,其基本原理是1、 假设输入编码器的序列长度为〖,输入序列多项式M(x)为= m《—!xK—1 + 2x《—2 H-----h w^义i + w0 ( 1 )其中,m,为l或者0, ^表示"在序列中的位置,/ = 0,l,2,3,...,yt-1。2、 编码器有以下等式x"M(X^a(x).g(x) + A(x) (2) 其中,x"MO)表示x"与M(x)的乘积,A为尺(x)的阶数,g(x)为生成多项式,为xSM(x)除以g(x)得到的商多项式,i (x)为接收码元多项式,为(2)式中定义 的余数多项式。生成多项式g(x)表达式为g(xhfjm,.O),其中w(x)为最小多项式。其物理意义为,g(x)是由f个最小多项式项相乘产生,/为BCH码能够纠正的最大错 误个数。3、 编码器输出的序列为r(x),长度为7V, r(义)表示为r(x) = MO),"" +雖) (3 )4、 假设信道产生的错误为五(x),错误位置多项式五(x)的表达式为=i义w—1 + £w_2xW—2 +. . +五,x + £0 ( 4 )其中,£;表示错误值,当£,.为1时表示有错误发生,£,.为O时表示无错误发生。则接收码元多项式可表示为i (x) = 7Xx) + £(>:) (5)5、 由式(2)、 (3)知r(x) = ^M(x) + i (x) = a(x)g(x) ( 6 )即能被a(x)整除。定义伴随式S,.,即S。,…,&h, f为BCH码能够纠正的最大错误个数。伴随 式的表达式为= (7) 其中a'是对应的伽罗华域(Galois Field, GF )乘法GF(2"的元素,M为大于log2 TV 的最小整数。又4妻收码元多项式可以表示为= —;w-1 + —2xw—2 +…++ r0 ( 8 )其中,^表示输入序列w-2,…,^,^的一位,为l或者O, x卩表示r,.在序 列中的位置,y = 0,l,2,3...,W-l。为减少计算量,根据(7)、 (8)式,现有技术中提出如下伴随式的算法<formula>formula see original document page 7</formula>( 9 )图2示出了现有技术提供的计算伴随式的电路结构,图中每个时钟周期从 加法器204处输入(input) 1位数据,并且此时控制(control)位控制选择器 203,使得寄存器202输出的值传递到加法器204中,从而使输入的1位数据与 之相加,相加后的结果通过GF(2"的常数乘法器201进行一次常数乘法运算, 运算结果反馈回寄存器202,在下一个时钟周期与加法器204处的输入数据累 加,不断累加后,当需要校验的数据榆入完成以后通过control位关闭选择器 203,此时寄存器202输出的结果就是输入序列的伴随式值。伴随式的计算采用 串行输入,采用这种方式的计算只需要一个GF(2"的常数乘法器201和一个 GF(2"的加法器204就能够计算出S,。但当BCH码的码字长度7V很大时,例 如BCH( 8191, 8048, 23 )的码字长度为8191个,要算出S,.至少需要8191个 时钟周期,周期太长,计算量很大,对于Flash控制器等需要较短读取周期延 迟的存储或通信系统来说是难以接受的。发明内容本发明实施例的目的在于提供一种解码过程中伴随式并行计算的方法,旨 在解决现有技术中在计算伴随式时采用串行计算,计算周期长、计算量大的问 题。本发明实施例是这样实现的, 一种解码伴随式的计算方法,其特征在于, 所述方法包括下述步骤对输入的分组序列当前周期的M位数据运算输出第一向量; 将当前周期输出的第一向量与上一周期输出的第二向量累加,输出向量累加值,所述上一周期输出的第二向量为上一周期的向量累加值与^(2"的元素 做乘法运算后的输出向量;重复执行上述步骤,当输入的分组序列的最后一组M位数据累加完成后,输出对应的向量累加值作为伴随式S的值; 其中,伴随式S,满足("'r-一3("'.)M+《《=,广w (°o0+。*m+i (w)1+…+。*歸-其中,《为分组序列第乂组第,'位数据运算输出的第一向量,0^y^j-l,0^"2"1,)为不大于爿-l的非负整数,/为不大于2"的非负整数,。,冊为分组序列第乂组第A位数据,为O或l, (Xy^M-1, A为小于等于M-1非负整 数,A/为并行度,为大于1的自然数,iV为分组序列的总长度,a'是计算第f个伴随式时对应的GF(2")的元素,w为大于^g2W的最小整数,所述累加运算采 用GF域中的加法运算,所述乘法计算时采用GF域中的乘法运算。本发明实施例的另一目的在于提供一种解码伴随式的电路,所述电路包括 向量计算电路,用于对输入的分组序列当前周期的M位数据运算输出第一 向量;向量乘法器,用于将上一周期的向量累加值与OF(2m)的元素做乘法运算后 输出第二向量;寄存器,用于保存所述向量乘法器输出的第二向量;向量累加器,用于将当前周期输出的第一向量与所述寄存器中保存的上一周期输出的第二向量累加,输出向量累加值;以及选择器,用于将累加结果控制输入常数向量乘法器中进行并行的向量乘法 计算,直到收到输入的分组序列的最后一组M位数据累加完成的控制信号后, 输出对应的向量累加值作为伴随式的值。其中,伴随式s,.满足——3 +《其中,《为分组序列第乂组第/位数据运算输出的第一向量,QS乂SJ-1, 0"'"卜1, y'为不大于爿-l的非负整数,/为不大于2"的非负整数,r,^为分组序列第乂组第yH立数据,为0或1, OS/^Af-1, A为小于等于M-1非负整 数,M为并行度,为大于1的自然数,W是计算第/个伴随式时对应的GF(2")的元素,m为大于^g2^的最小整数,iV为分组序列的总长度,所述累加运算采用 GF域中的加法运算,所述乘法运算采用OF域中的乘法运算。本发明实施例的另一目的在于提供一种解码器,所述解码器包括上述伴随 式的并行计算电路。本发明的BCH伴随式并行计算实现了任意多路的方式并行工作,将序列分 成多组,输入至伴随式计算电路中进行并行处理,最后输出伴随式的计算值, 减少了计算的计算量,计算速度有显著提升。


图1是现有技术提供的BCH码的解码流程图;图2是现有技术提供的计算伴随式的电i 各结构图;图3是本发明提供的解码伴随式的计算方法流程图;图4是本发明提供的伴随式计算的原理图;图5是本发明实施例提供的伴随式计算电路结构图;图6是本发明实施例提供的伴随式计算电路中的向量计算电路图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明进行进一步详细"i兌明。应当理解,此处所描述的具体实施例4义 仅用以解释本发明,并不用于限定本发明。在本发明实施例中,将序列分成多组,输入至伴随式计算电路中进行并行 处理,可以实现任意多路的方式并行工作,减少了计算周期,加快了计算速度。在本发明实施例中,为了减少计算周期,对计算伴随式的公式做如下改进: ^ == 一 (a'f—1 + rv—2 _2 +…+巧(《'■) + ^AM"o ( 10 )其中,S.为伴随式的表达式,即S。,…,&w,且《=£("')=尺("'),^为BCH 码能够纠正的最大错误个数;"'是计算第/个伴随式时对应的GF(2"的元素,表示巧在序列中的位置,M为序列中码元的位宽度,M为大于lo^iV的最小整数,iV为序列长度;/为小于2,的非负整数,0&^2卜l, 为1或者0, P^,1,2,…,〃-1。假设将序列分成^组,J = "//[W/M],则」为不小于w/M的最小整数, 也就是^*^/为大于等于iV的一个最小整数,其中,W为序列长度,M为序列 处理电路的并行度,M为大于l的整数,则 (1 )若序列长度7V能够被M整除伴随式&可以表示为M「 n1=i;[("" [ ""i)。+ ')'十… +"c]— 产。 (n)此时,将输入序列w-" -"…,n,w分为WM个组,即化w一p 一2,…,rW—M十1, -mL化W一1—", 一1省一1,* 、 一省一(Af一2), —l一w一(M一l)L…,什H,r似一2, " ,。,"。},计算时按计算周期的顺序依次输入,即第一个周期输入b—" —"…, 省+" J,第二个周期输入{"W+A/,rW—l—M—1,…' -卜W—(M—2)' 一一Af一(A/—1)}......最后 一 个周期输入(2)若序列长度7V不能够被M整除 在本发明实施例中,可以定义变量rewfl/"cfer,令rewa/"&r 在 專lr入序歹'j { —!, —2,… 0}最高位前补个.0,得到(0'...,0' 一), 一2,… 0}。10则新的输入序列的多项式表达式为其中"w , ,W+1 " ", ,W+w,Wer—1均为0 。于是M 「" (13 )可见,加入rewa/"tfer个0后不会影响S的值。此时,将输入序歹'j j,…,/;,rj高位补X*A/-W个零,得到(<formula>formula see original document page 11</formula> ,并将补零后的序列分为爿个组,即<formula>formula see original document page 11</formula> , <formula>formula see original document page 11</formula>'.', <formula>formula see original document page 11</formula>, "^"异时^"周期顺序依次输入,即第一个周期输入(0,…,0,^,…,r諸+(M喝"第二个周期输入{ -一M+一M-W… -2M+一M-wJ '最后一个周g月举lr入化n, —2, 。}。观察。,+J"T项,其中"[O,M-l], ge
。可以看出,虽然是^尸(2"')的乘法,但是输入序列宁鹿为0或1,因此伴随式计算电路中的乘法器可简化 为选择器,即A、 如果。,"=1,(",项加入S;B、 如果。*腐=0,(",项不加入&。 又令<formula>formula see original document page 11</formula>则有S-1IF——2 A/!一3十…十《(15)这样,计算的周期就从w个减少到~~^~~或者百个<表示第乂组数据输入后计算得到的第/个支路的值,下标乂代表第乂个时钟,取(^7^^-1,共A/个,上标/代表运算&所需的《个数,取0S"2/-1,共2Z个。由于("卞均为常数,因此可以使用只读存储器(Read Only memory, ROM)来保存(",的值,ROM的存储空间需要MfA^刀位。其中,M为GF(2"域中的 M, w为大于log27V的最小整数,7V为输入序列的长度,M为并行度。解码器计算错误位置多项式时需要个伴随式的值,因此设计个《并 结合式(14)得到如下矩阵表达式《万:及■2"12,—1将(16)式简化表示,有5二 jx尺"),(16)(17)oraM—l 一T0*M可以看出爿矩阵中有许多重复的(",项,ROM的实际存储空间小于 M*Af*2f位,为存储每个(a卞所需的位数。还可以看出>"的值决定{("°)* (a1)*…(W-卞}是否加入向量凡其中 k
。因此计算量从原来每个周期需要完成2/次M*M位的乘法计算, 变成现在需要做Af次比较,并至多进行2/*_M次位的加法,可以大大减少计图3示出了本发明提供的解码伴随式的计算方法的流程,详述如下 在步骤S301中,对输入的分组序列当前周期的Af位数据运算输出第一向量;在本发明实施例中,对计算伴随式的公式变化如下<formula>formula see original document page 13</formula>其中,S为伴随式的表达式,即S。,…,S2w ,且S,;五(a')二尺(a'), f为BCH码能够纠正的最大错误个数;"'是计算第/个伴随式时对应的GF(")的元素, 表示。在序列中的位置,M为序列中码元的位宽度,w为大于bg2W的最小整数, W为序列长度;^为1或者0, P4,1,2,…,7V-1。假设将序列分成爿组,J = C^/[iV/M],则爿为不小于7WM的最小整数, 也就是爿*似为大于等于7V的一个最小整数,其中,7V为序列长度,M为序列 处理电5^的并4亍度,Af为大于l的整数,则 (1)若序列长度7V能够被M整除伴随式&可以表示为(11)(2)若序列长度7V不能够被M整除 在本发明实施例中,可以定义变量rwmZ"der,令rew&"&r =^*似-见在丰lT入序歹廿化n, —2,...,^,r。}最高^立前才卜尸eOTfl/wtfer个0, 4寻到(o,…,o, —i, 一2'… o}。 则新的输入序列的多项式表达式为<formula>formula see original document page 14</formula>其中,iV , +l,…,厂W+r,/"i-1均为0 c于是<formula>formula see original document page 14</formula>可见,加入^w"/m/w个0后不会影响《的值。在步骤S302中,将当前周期输出的第一向量与上一周期输出的第二向量累 加,输出向量累加值,所述上一周期输出的第二向量为上一周期的向量累加值与G^")的元素做乘法运算后的输出向量;在步骤S303中,重复^U亍上述步骤,当tr入的分组序列的最后一组Af位数据累加完成后,输出对应的向量累加值作为伴随式《的值;在本发明实施例中,向量S的计算方法为当。,+「0时输出0,当0*^=1时输出常数("卞,其中0^'^-1, o;'^ —l, 0S"M-1,再将所有输出值相加得到B向量的每一个元素《。作为本发明的一个实施例,计算向量《的方法为按照<formula>formula see original document page 14</formula>,即S二 ^xi 进行计算,其中作为本发明的一个实施例,矩阵W中的元素r,M+A ( 0S7^J-1, 0S;^M-1 )为0或1。在本发明实施例中,伴随式的计算公式为<formula>formula see original document page 15</formula>其中W'(a')为4妄收码元多项式,"'是对应的GF(2")的元素,w为大于log,JV的 最小整数,7V为序列长度,M为并行度。作为本发明的一个实施例,(a。)、(a丁…(a2'-Y均是G^P")的元素。 图4示出了本发明提供的伴随式并行计算的原理,计算时每个时钟周期向 伴随式并行计算电路输入M个数据,即 w^^—(,+f。,其中os/^j-1,直到~~^~一或者i个时钟周期,输出伴随式的计算值s。A…&'—" 图5示出了本发明实施例提供的伴随式并行计算的电路结构,为了便于描 述,仅示出了与本发明实施例相关的部分。首先对整个电路进行初始化,并将向量累加器502和寄存器504清零。然 后根据电路处理数据的并行度M将序列长度为#的序列分成』组,其中 ^ = Ce//[W/M],即爿*7/为大于等于^的最小的一个整数,W为序列长度,M为 并行度,7V、 M为任意大于零的整数。在第y'个时钟周期向向量计算电路501 并行输入M个数据,即 +,, —H,+1)... —d ,并并行计算输出 一组向量 巧,S/…《—,到向量累加器502,向量计算电路501在每个时钟周期计算出一组新的向量《《…化-i,其中 —,一^+w代表每次解码运算中的第7'个时钟输入的第 /个数据,0《y、J-1, 0《/^M-1。向量累加器502同时将寄存器504中的值与向量计算电路501计算出的向量《,5;…《-i相加。累加的结果输送到选择苦503中,此时控制(control)位控制选择器503,使得累加结果直接传递到常数 向量乘法器505中与输入的对应(a')M,即{("'), ,......02'-""进行并行的向量乘法计算。完成向量乘法后将向量乘法器505的计算结果保存到寄存器504中,等待输入向量累加器502用于下一次计算。当电路运行J个时钟周期,序列输入完成。此时控制(control)位关闭选择器503,向量累加器502中的值 输出,输出的结果就是输入序列第/个伴随式的值S,。在本发明实施例中,每个时钟输入的第/个数据^+(-^决定了常数项列("°)', W ')'的值是否加入到对应的向量^,^…《-i中。若 —w阔=0 ,则向量《,《…《的值不做任何变化,若 —w,、^、 =1 ,则向量《A7…《—,加上向量(")',(")'…("—)'。每个时钟周期输入一组数据』—,,,w—H,d(,歸一d,判断一次,再做一次加法。其中,(W六(aY…(W-^均是GF(")的元素,加法指的是^『)域的加法。从上述式(16) (17)可得,可以从常数矩阵^与向量i 相乘计算向量S。 图6示出了本发明实施例提供的向量计算电路501的结构,为了便于描述,仅 示出了与本发明实施例相关的部分。向量计算电路501包括将第)个周期输 入的数据 —吣^+w与每个("';f向量相乘,并输出结果的选择器5011,以及将每 个对应i的选择器输出值累加后,输出第,'个向量《的值的加法器5012。根据 -1-h,+1)d的值选择器5011判断输出(a亇或0,每个加法器5012接收相应的选择器5011输出结果,并将所有结果相加得到对应的向量《,即向量B的每一个元素《由每一行的所述选择器5011输出值相加而 成。在本发明实施例中,由于输入的元素 +(声+"只有0或1,因此使用所述选 择器5011对应常数向量i 中的元素^+w)。当 —=0时所述选择器5011 输出0,当/^—(>阔=1时所述选择器5011输出常数(W,其中0SBM-1,0WS乂-1, '是^(2")的元素,求和采用的是GF(2"域的加法。作为本发明的一个实施例,所述向量计算电路501包括至少一个选择器5011和至少一个加法器5012。在本发明实施例中,BCH解码器可以采用上述并行计算BCH伴随式的电路。在本发明实施例中,采用并行方式计算BCH伴随式,实现了二、三、四以 及任意多路的方式并行工作,计算量从原来每个周期需要完成2/次似*似位的乘法,变成现在需要做M次比较,并至多进行2"M次A/位的GFP"加法,并 且计算速度有M倍的提升,尤其适用于需要快速计算伴随式的情形。采用本发 明实施例实现的BCH解码器可应用于大容量FLASH存储器,例如MP3、MP4、 移动电话存储器,也可应用于光纤通信、卫星通信、4G通信等通信领域的信道 编码中。以上所述^又为本发明的4支佳实施例而已,并不用以限制本发明,凡在本发 明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明 的保护范围之内。
权利要求
1、一种解码伴随式的计算方法,其特征在于,所述方法包括下述步骤对输入的分组序列当前周期的M位数据运算输出第一向量;将当前周期输出的第一向量与上一周期输出的第二向量累加,输出向量累加值,所述上一周期输出的第二向量为上一周期的向量累加值与由GF(2m)元素组成的向量做乘法运算后的输出向量;重复执行上述步骤,当输入的分组序列的最后一组M位数据累加完成后,输出对应的向量累加值作为伴随式Si的值;其中,伴随式Si满足
2、 如权利要求l所述的方法,其特征在于,所述对序列分组的方法为才艮据果数据序列的长度不足MM位,则将接收的数据的最高位补O,使得补零后序 列长度变为_M*X位,其中^ = Ce//[W/M],即j为不小于w/M的最小整数,TV 为序列长度,M为并行度,M、爿均为大于l的自然数。
3、 如权利要求1所述的方法,其特征在于,第一向量的运算方法为当0*腐=0时输出0,当r,腐"时输出常数("'f,再将所有输出值相加得到第一向量,其中<formula>formula see original document page 3</formula>
4、 一种解码伴随式的计算电路,其特征在于,所述电路包括 向量计算电路,用于对输入的分组序列当前周期的M位数据运算输出第一 向量b;向量乘法器,用于将上一周期的向量累加值与由GF(2"的元素组成的向量 做乘法运算后输出第二向量;寄存器,用于保存所述向量乘法器输出的第二向量;向量累加器,用于将当前周期输出的第一向量b与所述寄存器中保存的上 一周期输出的第二向量累加,输出向量累加值;以及选择器,用于将累加结果控制输入常数向量乘法器中进行并行的向量乘法 计算,直到收到输入的分组序列的最后一组M位数据累加完成的控制信号后, 输出对应的向量累加值作为伴随式的值。其中,伴随式&满足<formula>formula see original document page 3</formula>其中,《为计算&时第乂组数据运算后输出的第一向量b的元素,<formula>formula see original document page 3</formula>为不大于j—/的非负整数,/为不大于2"的非负整 数,^冊为分组序列第j'组第H立数据,为O或l, OSi^M-1, A;为小于等于 M-l非负整数,M为并行度,为大于l的自然数,7V为分组序列的总长度,W 是计算第/个伴随式时对应的GF(2"的元素,附为大于1(^2^的最小整数,所述 累加运算采用GF域中的加法运算,所述乘法计算时采用GF域中的乘法运算。
5、如权利要求4所述的计算电路,其特征在于,所述序列的分组为根据电 路处理数据的并行度M将序列长度为W的序列分为^组,每组为M位,如果 数据序列的长度不足MW位,则将接收的数据的最高位补O,使得补零后序列 长度变为MW位,其中J = CW[W/M],即jHcM为大于等于iV的一个最小整数,7V为序列长度,M为并行度,M、爿均为大于l的自然凄t。
6、 如权利要求4所述的计算电路,其特征在于,所述向量计算电路包括选择器,用于将第y个周期输入的数据^力x阔与每个("'f向量相乘,并输出结果,其中0^y^M-l;以及加法器,用于将每个计算Si时使用的选择器输出值累加后,输出向量5j的值。
7、 如权利要求6所述的计算电路,其特征在于,所述选择器当= 0 时输出0,当r肿(>阔=1输出常数("亇,其中0"^ —L 0《BM-1, 0《y."-l。
8、 一种解码器,其特征在于,包括权利要求4所述的电路。
全文摘要
本发明适用于解码技术领域,提供一种解码伴随式的计算方法、电路及解码器,所述方法为对输入的分组序列当前周期的M位数据运算输出第一向量;将当前周期输出的第一向量与上一周期输出的第二向量累加,输出向量累加值,所述上一周期输出的第二向量为上一周期的向量累加值与GF(2<sup>m</sup>)的元素组成的向量做乘法运算后的输出向量;重复执行上述步骤,当输入的分组序列的最后一组M位数据累加完成后,输出对应的向量累加值作为伴随式S<sub>i</sub>的值。本发明实现了二、三、四以及任意多路的方式并行工作,计算速度快。
文档编号H03M13/00GK101257312SQ20081006547
公开日2008年9月3日 申请日期2008年3月3日 优先权日2008年3月3日
发明者洪 彭 申请人:炬才微电子(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1