Bch预搜索电路、bch解码电路、bch预搜索方法及bch纠错方法

文档序号:10698500阅读:424来源:国知局
Bch预搜索电路、bch解码电路、bch预搜索方法及bch纠错方法
【专利摘要】本发明提供一种BCH预搜索电路、BCH解码电路、BCH预搜索方法以及BCH纠错方法,该BCH预搜索电路包括空搜索码长计算电路,根据BCH标准码长及BCH截短码长计算空搜索码长;首个调整因子计算电路,具有第一有限域乘法器,应用空搜索码长数值的每一位数值与调整常数计算首个调整因子;后续调整因子计算电路,具有第二有限域乘法器,根据首个调整因子计算多个后续调整因子;错误位置多项式乘法电路,具有第三有限域乘法器,将错误位置多项式的各项分别乘以对应的首个调整因子或后续调整因子。BCH解码电路具有上述的BCH预搜索电路。BCH预搜索方法是应用BCH预搜索电路实现预搜索的方法。本发明可以大大减小BCH解码电路的芯片的面积。
【专利说明】
BCH预搜索电路、BCH解码电路、BCH预搜索方法及BCH纠错方法
技术领域
[0001]本发明涉及BCH纠错编码译码领域,具体地,是提供一种BCH预搜索电路、能够对任 意码长的BCH截短码进行预搜索的BCH解码电路以及BCH预搜索方法、BCH纠错方法。
【背景技术】
[0002]在NandFlash等大容量存储设备的控制芯片中,当数据写入存储单元时可能发生 写入错误或者读取错误的情况,例如,某一位数据应该是二进制数"0",写入存储单元时被 错误写成二进制数"1"。为了避免写入或者读出错误的数据,需要对数据进行校验,通常的 做法是写入数据后,人为地写入一部分冗余数据用于差错控制,以保证数据读出时能进行 误码检测和校正。
[0003] BCH纠错码是一种通常用于纠正随机差错的循环校验码,该校验码由R.C.Bose、 D.K. Chaudhuri和A.Hocquenghem共同提出,它是一种具有严格的代数结构、纠错能力强、构 造简单、编码较其它码容易等特点的线性分组码。
[0004] 使用二进制BCH纠错码进行纠错时,通常需要使用解码器对已经译码的码字进行 解码。假设BCH纠错码可以纠正的随机错误的个数为t个,则解码时,首先根据接收到的码字 R(X)计算出伴随式S1-S2t,然后根据伴随式S1-S2t计算出错误位置多项式 〇(x),计算错误 位置多项式通常使用IBM迭代算法获得。接着,使用有限域GF(2 n)上的截短码时,如果截短 码的长度为K(K〈2n-l),则需要将错误位置多项式〇( X)的各项预先乘以对应的调整因子+、 a2L、a3L· · .atL,从而进行预搜索,以跳过L· bit(L = 2n-1-K)不需要搜索的位置来缩短钱氏搜 索的运算时间。然后,应用钱氏搜索(Chien Search)求解错误位置多项式〇(X)的根,从而求 解出错误位置。最后,根据错误位置,对原数据取反。这样就可以将错误位置上的数据修改 为正确的数据,实现纠错。
[0005] 由于在将错误位置多项式σ(χ)的各项预先乘以对应的调整因子心、〇21、〇 31. . .atl 的步骤中,现有的方法通常是采用纯组合逻辑一次完成所有&~atl的有限域乘法实现,例 如公开号为CN101252361A的中国发明专利申请公开了名为"一种支持预搜索的面积紧凑型 BCH并行译码电路"的发明创造,该方法就是将错误位置多项式〇(X)的各项一次性乘以对应 的调整因子. .atl,因此需要使用t个常数乘法器来完成。而且,缩短码码长L不同 时,需要再存储t个不同的系数,如果有y种缩短码码长L,那么总共需要存储的系数数量会 高达y X t个。
[0006] 然而,目前Flash等大容量存储设备中,BCH纠错码需要纠正的位数t通常大于70, 导致纯组合逻辑一次完成所有有限域乘法的电路非常庞大。而且为了适应各种不同的 flash的纠错需求,需要纠正的位数t会不相同,数据长度也会不相同,因此通常需要支持上 百种不同的缩短码码长L,那么调整因子的数量将会超过7000个。但是,由于芯片的面积是 有限的,不可能将所有不同码长的调整因子&~,都存储在芯片中,这导致BCH解码器只能 对有限的几种码长进行预搜索,严重影响BCH解码器的解码速度。

【发明内容】

[0007] 本发明的第一目的是提供一种在有限域GF(2n)时只需存储η个调整常数的能够对 任意位数进行纠错的BCH解码电路的预搜索电路。
[0008] 本发明的第二目的是提供一种在有限域GF(2n)时只需存储η个调整常数的不会占 用大量芯片的面积存储调整因子的BCH解码电路。
[0009] 本发明的第三目的是提供一种纠错能力强的BCH纠错方法使用的BCH预搜索方法。
[0010] 本发明的第四目的是提供一种能够节省芯片面积的BCH纠错方法。
[0011] 为了实现上述的第一目的,本发明提供的BCH预搜索电路包括空搜索码长计算电 路,根据BCH标准码长及BCH截短码长计算空搜索码长;首个调整因子计算电路,具有第一有 限域乘法器,应用空搜索码长数值的每一位数值与调整常数计算首个调整因子;后续调整 因子计算电路,具有第二有限域乘法器,根据首个调整因子计算多个后续调整因子;错误位 置多项式乘法电路,具有第三有限域乘法器,将错误位置多项式的各项分别乘以对应的首 个调整因子或后续调整因子。
[0012] 由上述方案可见,由于首个调整因子以及多个后续调整因子并不是预先存储在芯 片内,而是通过调整常数计算得到,因此BCH预搜索电路不需要使用大量的芯片面积存储大 量的调整因子。并且,由于调整因子是计算得到,因此BCH预搜索电路可以对任意码长的BCH 截短码进行预搜索,使BCH解码电路应用范围更广。
[0013] -个优选的方案是,BCH预搜索电路还包括调整因子寄存器,用于存储计算获得的 调整因子。
[0014] 由上可见,将计算获得的多个调整因子预先存储在寄存器内,可以方便后续的计 算。
[0015] 为实现上述的第二目的,本发明提供的BCH解码电路包括错误位置多项式计算电 路,接收伴随式,并具有多个有限域乘法器,用于计算错误位置多项式;预搜索电路,接收错 误位置多项式的各项的值;错误地址计算电路,接收预搜索电路输出的数值,并且计算错误 地址;纠正电路,用于将错误位置的数据取反;其中,预搜索电路包括:空搜索码长计算电 路,根据BCH标准码长及BCH截短码长计算空搜索码长;首个调整因子计算电路,应用空搜索 码长数值的每一位数值与调整常数计算首个调整因子;后续调整因子计算电路,根据首个 调整因子计算多个后续调整因子;错误位置多项式乘法电路,将错误位置多项式的各项分 别乘以对应的首个调整因子或后续调整因子。
[0016] 由上述方案可见,BCH解码电路使用调整常数计算多个调整因子,也就是不需要预 先将不同截短码对应的调整因子存储在芯片中,又因为调整常数的数量在有限域GF(2 nMt 只有η个,一般η小于等于14个,远远小于【背景技术】中提及的支持多个不同截短码长的调整 因子的数量,因此可以大大节省存储调整因子的存储空间,从而让BCH解码电路适应不同截 短码码长进行预搜索的场合。
[0017] -个优选的方案是,预搜索电路复用错误位置多项式计算电路的多个有限域乘法 器。
[0018] 由此可见,通过复用有限域乘法器可以大大节省芯片的面积,并且不会过多增加 运算时间,有利于减少BCH解码电路的面积、降低BCH解码电路的生产成本。
[0019] 为实现上述的第三目的,本发明提供的BCH预搜索方法包括根据BCH标准码长及 BCH截短码长计算空搜索码长;应用空搜索码长数值的每一位数值与调整常数计算首个调 整因子;根据首个调整因子计算多个后续调整因子;将错误位置多项式的各项分别乘以对 应的首个调整因子或后续调整因子。
[0020] 由上述方案可见,进行BCH预搜索时,不需要使用预先存储的调整因子,调整因子 由调整常数计算获得,由于调整常数的数量远远小于不同码长的截短码的调整因子的数 量,因此BCH预搜索时需要存储的调整因子数量大大减少,从而BCH预搜索电路的面积。
[0021] 为实现上述的第四目的,本发明提供的BCH纠错方法包括计算错误位置多项式;并 且进行BCH预搜索,预搜索步骤包括根据BCH标准码长及BCH截短码长计算空搜索码长;应用 空搜索码长数值的每一位数值与调整常数计算首个调整因子;根据首个调整因子计算多个 后续调整因子;将错误位置多项式的各项分别乘以对应的首个调整因子或后续调整因子; 求解错误位置多项式的根,计算错误位置;将错误位置的数据取反。
[0022]由此可见,进行BCH纠错时,调整因子并不是预先存储在芯片上,而是通过调整常 数计算获得,这样,BCH纠错可以针对不同码长的BCH截短码进行预搜索,BCH纠错方法的适 应性更广。
【附图说明】
[0023]图1是本发明BCH解码电路实施例的结构框图。
[0024]图2是本发明BCH预搜索电路实施例的结构框图。
[0025] 图3是本发明BCH预搜索电路实施例的结构原理图。
[0026] 图4是本发明BCH纠错方法实施例的流程图。
[0027] 以下结合附图及实施例对本发明作进一步说明。
【具体实施方式】
[0028] 本发明的BCH纠错方法是基于BCH截短码进行预搜索实现纠错的方法。本发明的方 法能够对任意码长的BCH截短码进行预搜索并且实现纠错,因此BCH解码电路设置有BCH预 搜索电路。
[0029]参见图1,本发明的BCH解码电路具有错误位置多项式计算电路10、预搜索电路20、 错误地址计算电路30以及纠错电路40、有限域乘法器阵列50。
[0030] 错误位置多项式计算电路10接收由码字R(X)计算出来的伴随式S1-S2t,并根据伴 随式S 1-S2t计算出错误位置多项式O(X)。通常,错误位置多项式计算电路10应用大量有限 域乘法器实现错误位置多项式的计算,如使用常见的IBM迭代算法计算错误位置多项式σ (叉)的各项11〇、111、112~111:,并且将错误位置多项式〇(1)的各项11〇、111、112~111:的值输出至预 搜索电路20。
[0031] 预搜索电路20根据错误位置多项式O(X)的各项u0、ul、u2…ut的值分别乘以对应 的调整因子,获得预搜索结果。
[0032] 预搜索电路的实现方式如图2所示,预搜索电路20设有空搜索码长计算电路21、首 个调整因子计算电路22、后续调整因子计算电路23以及错误位置多项式乘法电路24。
[0033]假设在有限域GF(2n)的BCH码的最大码长为2n-l,最大码长即本实施例中BCH纠错 码的标准码长。由于需要使用BCH截短码进行解码,且BCH截短码的码长通常比最大码长2n-1短,假设BCH截短码的码长为K,则空搜索码长计算电路21计算空搜索码长L为L = 2n-1-K。 这样,进行预搜索时,跳过不需要搜索的L位数据,从而提高计算错误地址时的效率。
[0034] 用二进制表示空搜索码长L,因为空搜索码长L的数值不大于(2n-l),所以空搜索 码长L的二进制位宽为η位,假设用L.x代表空搜索码长L的二进制的第X位,则有
[0035] L = L.(n-l)*2(n-D+L. (n-2)*2(n-2)+L.(n-3)*2(n-3)+…
[0036] 所以可以得到首个调整因子
[0037]其中
的周整常数。本实施例中,调整常数是预先设定 的常数。由于在L
a此,式1中所有项都是常数项,所以只 需要进行η次常数有限域乘法即可求得任意码长的空搜索码长L时的首个调整因子的值。 [0038]因此,首个调整因子计算电路22可以设置有限域乘法器,应用调整常数以及空搜 索码长L每一位的值计算首个调整因子的值。
[0039]接着,后续调整因子计算电路23根据首个调整因子计算电路22所计算的首个调整 因子士的值,计算后续多个调整因子a2L~atL,例如,a2L = aL*aL、a3L = a2L*aL、· · .atL = a(t-1)L* a1,如此类推,共通过t_l次有限域乘法运算即可以计算获得后续的多个调整因子。因此,后 续调整因子计算电路23也可以设置有限域乘法器,用于进行t-Ι次有限域乘法运算。
[0040]假设〇(X)是根据伴随式S1-S2t计算出的错误位置多项式,将错误位置多项式 〇(X) 的各项分别乘以调整因子αι、α2?、α 3?. . .atl,即完成预搜索。具体地,错误位置多项式乘法电 路24将错误位置多项式σ(χ)的各项分别乘以对应的调整因子aW^a 31. . .atl,即错误位置 多项式σ(Χ)的第一项乘以首个调整因子&、第二项乘以第二个调整因子α 2?,如此类推,错误 位置多项式σ(Χ)的第t项乘以第t个调整因子a。这样,共通过t次有限域乘法运算即可以获 得预搜索结果1]〇'、1]1'、1]2'"_仍'。因此,错误位置多项式乘法电路24也可以设置有限域乘 法器,用于进行多次有限域乘法运算。
[0041 ]接着,预搜索电路20计算获得预搜索结果1]〇'、1]1'、1]2'"_1^'后,将结果输出到错 误地址计算电路30。错误地址计算电路30为钱氏搜索电路,计算出错误位置多项式〇(X)的 根,计算出来的根也就是错误的地址,即错误数据所在的位。最后,纠正电路40将错误位置 上的数据取反,也就完成纠错处理。
[0042] 本实施例设有有限域乘法器阵列50,该阵列内设有多个有限域乘法器。错误位置 多项式计算电路10以及预搜索电路20均接收有限域乘法器阵列50的信号,因此,预搜索电 路20实际上是复用错误位置多项式计算电路10的多个有限域乘法器50。由于错误位置多项 式计算电路10的有限域乘法运算次数约为(3t+2)t次,预搜索电路20需要进行(2t+n-l)次 有限域乘法运算。因此,当t较大时,如t>40时,(2t+n-l)远远小于(3t+2)t。因此,预搜索电 路20复用计算错误位置多项式计算电路10的有限域乘法器,既不会占用太多运算时间,也 可以节省芯片的大量面积,降低BCH解码器的生产成本。
[0043] 需要说明的是,如果预搜索电路20复用错误位置多项式计算电路10的有限域乘法 器,则不需要在首个调整因子计算电路22、后续调整因子计算电路23、错误位置多项式乘法 电路24上设置有限域乘法器,从而减小芯片的面积。
[0044]预搜索电路20的典型电路原理图如图3所示,空搜索码长计算电路21计算出空搜 索码长L的数值,也就是获取空搜索码长L的每一位的数值。然后,应用有限域乘法器阵列的 有限域乘法器51计算出首个调整因子的值。同时,使用首个调整因子的值,应用有限域 乘法器52、53···54计算t-Ι个后续调整因子α 2?~α'多个调整因子α^α'α3、. 输出至错 误位置多项式乘法电路24中,且错误位置多项式乘法电路24计算预搜索结果U0'、U1'、 U2,…Ut,。
[0045] 下面结合图4介绍BCH纠错方法的工作流程。首先,接收由码字R(X)计算出来的伴 随式S^S2t,并根据伴随式S^S 2t计算出错误位置多项式〇(1),即执行步骤S1。然后,执行 预搜索操作,先执行步骤S2,根据BCH的最大码长以及BCH截短码的码长K计算空搜索码长L。 假设n=14,BCH截短码码长K=12287,则对任意码长的BCH截短码进行预搜索时,计算出的 空搜索码长 L = 2n-1-K = 214-1-12287 = 4096。
[0046] 本实施例中,用二进制表示空搜索码长L,则有L= 1_0000_0000_0000,则 L = 0*2 ~ 13 + 1*2 ~ 12+0*2 ~ 11+0*2 ~ 10+......0*2 ~ 1+0*2 ~ 0。接着,执行步骤 S3,计 算首个调整因子α 1的值,根据前述描述的方法可知,首个调整因子
[0048]接着,执行步骤S4,计算多个后续调整常数α2?~atl,根据前述的方法可知,α 2? = 0X06BF*0X06BF、a3L = a2L*0X06BF、. . .atL= a(t-1)l*〇X〇6BF。
[0049] 然后,执行步骤S5,将错误位置多项式〇(x)的各项分别乘以对应的调整因子a1、 <^、<^...(^,将结果输出至1」钱搜索模块进行搜索。最后,求解错误位置多项式(^)获得错 误位置多项式σ(χ)的根,也就是执行步骤S6,从而获得错误位置,并且执行步骤S7,将错误 位置的数据取反,实现纠错。
[0050] 本实施的BCH纠错方法中,在预搜索过程中需要完成的有限域乘法运算共2t+12 次,而计算错误位置多项式σ(χ)的有限域乘法运算次数约为(3t+2)t次。因此,在预搜索过 程中复用计算错误位置多项式时使用的有限域乘法器,将增加 BCH纠错的时间,所增加的时 间比率c为:C = (2t+12)/( (3t+2)t)。由于现在的Nand Flash要求BCH的纠错能力通常会大 于40bit。当t = 40时,复用有限域乘法器所增加的时间比率c = 92/4880 = 0.019。可见,纠错 位数t越大,所增加的时间比率c越小。因此,在进行预搜索时复用计算错误位置多项式时的 有限域乘法器,不会占用太多的运算时间,但可以节省电路板的大量面积,从而减小存储设 备的体积,也降低BCH解码电路的生产成本。
[0051]当然,上述的方案只是本发明优选的实施方案,实际应用是还可以有更多的变化, 例如,预搜索电路可以不复用错误位置多项式计算电路的有限域乘法器,也就是预搜索电 路与错误位置多项式计算电路分别使用各自的有限域乘法器,这些改变都不影响本发明的 实施,也应该包括在本发明的保护范围内。
【主权项】
1. BCH预搜索电路,其特征在于,包括: 空搜索码长计算电路,根据BCH标准码长及BCH截短码长计算空搜索码长; 首个调整因子计算电路,具有第一有限域乘法器,应用空搜索码长数值的每一位数值 与调整常数计算首个调整因子; 后续调整因子计算电路,具有第二有限域乘法器,根据所述首个调整因子计算多个后 续调整因子; 错误位置多项式乘法电路,具有第三有限域乘法器,将错误位置多项式的各项分别乘 以对应的所述首个调整因子或所述后续调整因子。2. 根据权利要求1所述的BCH预搜索电路,其特征在于: 还包括调整因子寄存器,用于存储计算获得的所述调整因子。 3. BCH解码电路,包括: 错误位置多项式计算电路,接收伴随式,并具有多个有限域乘法器,用于计算错误位置 多项式; 预搜索电路,接收所述错误位置多项式的各项的值; 错误地址计算电路,接收所述预搜索电路输出的数值,并且计算错误地址; 纠正电路,用于将错误位置的数据取反; 其特征在于,所述预搜索电路包括: 空搜索码长计算电路,根据BCH标准码长及BCH截短码长计算空搜索码长; 首个调整因子计算电路,应用空搜索码长数值的每一位数值与调整常数计算首个调整 因子; 后续调整因子计算电路,根据所述首个调整因子计算多个后续调整因子; 错误位置多项式乘法电路,将错误位置多项式的各项分别乘以对应的所述首个调整因 子或所述后续调整因子。4. 根据权利要求3所述的BCH解码电路,其特征在于: 所述预搜索电路复用所述错误位置多项式计算电路的多个所述有限域乘法器。5. 根据权利要求3或4所述的BCH解码电路,其特征在于: 所述预搜索电路还包括调整因子寄存器,用于存储计算获得的所述调整因子。 6. BCH预搜索方法,其特征在于,包括: 根据BCH标准码长及BCH截短码长计算空搜索码长; 应用空搜索码长数值的每一位数值与调整常数计算首个调整因子; 根据所述首个调整因子计算多个后续调整因子; 将错误位置多项式的各项分别乘以对应的所述首个调整因子或所述后续调整因子。7. 根据权利要求6所述的BCH预搜索方法,其特征在于: 将计算获得的所述调整因子存储在寄存器中。 8. BCH纠错方法,包括: 计算错误位置多项式; 其特征在于: 进行BCH预搜索,预搜索步骤包括:根据BCH标准码长及BCH截短码长计算空搜索码长; 应用空搜索码长数值的每一位数值与调整常数计算首个调整因子;根据所述首个调整因子 计算多个后续调整因子;将错误位置多项式的各项分别乘以对应的所述首个调整因子或所 述后续调整因子; 求解错误位置多项式的根,计算错误位置; 将错误位置的数据取反。9. 根据权利要求8所述的BCH纠错方法,其特征在于: 所述预搜索步骤中,复用计算错误位置多项式时的有限域乘法器。10. 根据权利要求8或9所述的BCH纠错方法,其特征在于: 将计算获得的所述调整因子存储在寄存器中。
【文档编号】H03M13/15GK106067825SQ201610517470
【公开日】2016年11月2日
【申请日】2016年7月1日
【发明人】陈文捷
【申请人】建荣集成电路科技(珠海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1