专利名称:编码装置及方法、译码装置及方法和纠错系统的制作方法
技术领域:
本发明实施例涉及通信技术领域,特别涉及一种编码装置及方法、译码装置及方 法和纠错系统。
背景技术:
NAND闪存是一种可擦除的存储卡,具有功耗低、速度快、数据可靠性高、重量小以 及静音等优点。基于NAND闪存的固态存储盘(Solid State Disk ;以下简称SSD)已开始 轻薄型笔记本电脑等领域应用。NAND闪存可分为两大架构单层单元(Single Level Cell ; 以下简称SLC)和多层单元(Multi Level Cell ;以下简称MLC)。采用MLC架构的NAND 闪存成本低、容量大,自问世以来得到了多家闪存大厂的垂青。但据统计,采用MLC架构的 NAND闪存在存取数据时的误码率约为10_5,与采用SLC架构的NAND闪存相比,采用MLC架 构的NAND闪存的工作性能不稳定。为保证采用MLC架构的NAND闪存读写数据的准确性和 稳定性,一般采用纠错码(Error Correction Code ;以下简称ECC)技术纠正读写过程中 出现的多位(bit)随机错误。博斯-查德胡里-霍昆格(Bose-Chaudhuri-Hocquenghem ;以下简称BCH)码是一 种纠正多位随机错误的循环码。具有严格的代数结构的线性分组码,具有纠错能力强、构造 简单、编码译码容易等特点,在数据传输过程中有十分重要的应用。发明人在实现本发明的过程中发现现有技术中采用BCH码实现ECC技术时,BCH码 电路的结构固定后,编码前输入的信息位数k、编码后的码字多项式的位数η、以及可以纠 正的错误的位数t等参数也是固定的,由于k、n、t的位数固定,造成可纠错位数也不能根据 需求进行更改或者设置,适应性较差。
发明内容
本发明实施例提供一种编码装置及方法、译码装置及方法和纠错系统,用以解决 现有编码装置参数设置固定、适应性差的确定,可以灵活配置编译码参数、适应性强。本发明实施例提供一种编码装置,包括博斯_查德胡里_霍昆格BCH编码模块和 与所述BCH编码模块连接的控制模块;所述BCH编码模块用于在所述控制模块的控制下,对输入的信息多项式进行BCH 编码,生成码字多项式;所述控制模块用于根据设置的输入所述BCH编码模块的信息多项式的位数和所 述BCH编码模块输出的码字多项式的位数控制所述BCH编码模块对输入的信息多项式进行 BCH编码。本发明实施例又提供一种编码方法,包括设置输入编码装置的信息多项式的位数以及所述编码装置输出的码字多项式的 位数;根据所述设置的信息多项式的位数以及码字多项式的位数对输入的信息多项式进行BCH编码,获取码字多项式。本发明实施例再提供一种译码装置,包括使能模块和BCH译码模块;所述使能模块,用于根据设置的编码后的码字多项式的位数和可纠错位数,控制 所述BCH译码模块对接收的码字多项式进行BCH译码;所述BCH译码模块,用于根据所述码字多项式的位数和所述可纠错位数对所述接 收的码字多项式进行BCH译码,获取正确的码字多项式。本发明实施例还提供一种译码方法,包括设置编码后的码字多项式的位数和可纠错位数;根据所述码字多项式的位数和可纠错位数对接收的码字多项式进行BCH译码,获 取正确的码字多项式。本发明实施例还提供一种纠错系统,包括编码装置,包括BCH编码模块和控制模块,所述BCH编码模块用于在所述控制模块 的控制下,对输入的信息多项式进行BCH编码,生成码字多项式;所述控制模块用于根据设 置的输入所述BCH编码模块的信息多项式的位数和所述BCH编码模块输出的码字多项式的 位数控制所述BCH编码模块对输入的信息多项式进行BCH编码;译码装置,包括使能模块和BCH译码模块,所述使能模块,用于根据设置所述码字 多项式的位数和可纠错位数,控制所述BCH译码模块对接收的码字多项式进行译码;所述 BCH译码模块,用于通过所述码字多项式的位数和所述可纠错位数对所述接收的码字多项 式进行BCH译码,获取正确的码字多项式。根据本发明实施例提供的编码装置及方法、译码装置及方法和纠错系统的技术方 案可以看出,本发明实施例所述的编码装置可以根据设置的编码前输入BCH编码模块的信 息多项式的位数和编码后的码字多项式的位数控制编码模块对输入的信息多项式进行BCH 编码,由于编码前输入的信息多项式的位数和编码后的码字多项式的位数可以根据需求灵 活设置,因此本发明实施例提供的编码装置的应用更加灵活、适用范围广。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。图1为BCH码的编码电路;图2为本发明实施例一提供的编码装置的结构示意图;图3为本发明实施例二提供的编码装置的结构示意图;图4为本发明实施例二提供的编码装置的应用结构示意图;图5为本发明实施例三提供的编码方法的流程示意图;图6为本发明实施例四提供的译码装置的结构示意图;图7为本发明实施例五提供的译码装置的结构示意图;图8为本发明实施例五提供的译码装置中伴随式子模块的结构示意图;图9为本发明实施例五提供的译码装置中采用钱搜索的电路结构示意图10为本发明实施例六提供的译码方法的流程示意图;图11为本发明实施例七提供的纠错系统的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。为了更清楚的阐述本发明实施例,首先介绍采用BCH码进行的编码和译码的原 理图1为BCH码的编码电路,如图1所示,采用BCH码的编码的方法具体为首先乘法器12对根据输入的消息多项式、编码前可以输入的信息位数和编码后 的码字多项式的位数可以对消息多项式进行乘法运算得到乘法结果,具体的是将Xn_k与寄 存器11输出的消息多项式m(x) = Hic^m1X+…%_ιΧΗ进行乘法运算,可以得到以下公式 xn"km(x) = mQXn_k+mlXn_k+1+···HV1Xlri,其中χ为消息多项式系数,k为编码前可以输入的信息 位数,η为编码后的码字多项式的位数。接着,通过n-k级的寄存器11根据生成多项式和上面运算得到的乘法结果可以得 到校验位多项式,具体地是对生成多项式g(x) =和xn_km(x)进行除法 运算,得到的余式b(x)为校验位多项式。最后,加法器13根据校验位多项式和上面的乘法结果可以获得码字多项式,具体 的是将b(x)与xn_km(x)进行加法运算,得到生成的码字多项式c(x) = xn-km (x)+b (x)0码 字多项式C(X)为经过BCH编码后生成的待发送信息。BCH码的译码过程是实现ECC的关键,主要包括以下步骤步骤1、接收BCH码的编码电路发送的数据,接收到的码字多项式可以用公式R(X) =ιν,1+。?-2+···+!^+!^表示,其中Iv1为R(X)的最高位的系数,根据接收的码字多项 式R(X)求出伴随式S,其中伴随式S共有2t项,t为该纠错电路可以纠正的错误的个数,也 叫做纠错能力或可纠错位数。步骤2、根据伯利坎姆-梅西(Berlekamp-Massey ;以下简称BM)迭代算法,由伴 随式S得到错误位置多项式,如下公式(1)所示。V(X)= σ 0+ σ ιΧ+ σ 2χ2+··· + σ ^t(1)公式⑴中V(X)是错误位置多项式,σ为错误多项式的系数,t为纠错能力也叫 做可纠错位数。步骤3、对错误位置多项式V(X)进行钱(CHIEN)搜索,求解V(X)的根,然后可以得 到错误位置判别项E(X)。例如,判断接收的码字多项式R(X)的最高位IV1是否有错时,将α11—1的倒数 α+-1) = a _n a 1 代入式V(X) = σ 0+σ lX+σ 2χ2+...+σ Jt,如果 V ( a ) = 1+σ 工 a + σ 2 a 2+... + OtCit = O,说明?”是ο (χ)的根,最高位IV1有错,否则,说明α μ不是ο (χ)的根, IV1正确。错误位置判别项E(X)则包括V(X)中所有错误的位置的项。步骤4、最后对R(X)和E(X)进行异或运算,可以将R(X)中出现错误的位置的值取 反,得出正确的码字,截取正确的码字中的信息位就可以成功解码。
图2为本发明实施例一提供的编码装置的结构示意图,如图2所示,该编码装置采 用博斯_查德胡里_霍昆格BCH编码模块21和与BCH编码模块21连接的控制模块22构 成,其中BCH编码模块21,用于在控制模块22的控制下,对输入的信息多项式进行BCH编 码,生成码字多项式;控制模块22,用于根据设置的输入BCH编码模块21的信息多项式的位数和BCH编 码模块21输出的码字多项式的位数控制BCH编码模块21对输入的信息多项式进行BCH编码。具体地,由于编码过程与生成多项式的系数和可纠错位数有关,其中可纠错位数T 可以根据编码前输入信息位长度K以及编码后的码字长度N来获得,因此在具体实施过程 中,可以采用硬件描述语言来设定BCH编译码参数N、K、T (其中N、K、T为自然数)使编码 装置的硬件规模控制在可接受的范围内。其中,K为编码装置可以支持的最大的编码前输 入的信息多项式的位数,N为编码装置可以支持的最大的编码后的码字多项式的位数,T为 编码装置可以支持的最大的可纠错位数。在编码装置的硬件规模一定的情况下,在具体的编码过程中,可以根据编码需要 设置具体需要的编码前输入的信息多项式的位数k和编码后的码字多项式的位数n,进行 BCH编码,其中k、n也为自然数,且k小于或等于K、n小于或等于N。控制模块22根据设置 的编码前输入的信息多项式的位数k和编码后的码字多项式的位数η向BCH编码模块21 发送控制信号Ctri,控制BCH编码模块中的与信息多项式第i位对应的寄存器是否参与BCH 编码的运算。具体的,可以为当Ctri为“0”时,BCH编码模块的与信息多项式第i位对应的 寄存器不参与BCH编码的运算,当Ctri为“1”时,BCH编码模块中与信息多项式第i位对 应的寄存器参与BCH编码的运算。通过上述控制方式,使BCH编码模块根据设置的编码前 输入的信息多项式的位数和编码后的码字多项式的位数,对输入的信息多项式进行BCH编 码,生成码字多项式。可以理解的是,在不超过该编码装置的硬件规模的情况下,上述设置的编码前输 入的信息多项式的位数k和编码后的码字多项式的位数η在具体的编码过程中是可变的, 只要k小于或等于K、η小于或等于N即可。从上述实施例可以看出,在本发明实施例中可以根据具体应用的需要设置编码前 输入的信息多项式的位数和编码后的码字多项式的位数,并采用控制模块控制BCH编码模 块对输入的信息多项式进行BCH编码运算,不需要每进行一次编码就需要根据具体要求重 新设计电路,应用更加灵活,适用范围更加广泛。图3为本发明实施例二提供的编码装置的结构示意图,如图3所示,该编码装置包 括BCH编码模块21、控制模块22以及预设模块23,其中预设模块23,用于预先设置输入BCH编码模块21的信息多项式的位数以及BCH编 码模块21编码后输出的码字多项式的位数。具体地,假设编码装置可以支持的最大的编码前输入的信息多项式的位数为K,最 大的编码后的码字多项式的位数为N。根据具体的需求,预设模块23可以根据具体的需求 设置编码前输入的信息多项式的位数k和编码后的码字多项式的位数η。具体地,可以采用 硬件描述语言(Hardware Description Language ;以下简称HDL)来设定BCH编译码参数N、K、T(其中N、K、T为自然数)使编码装置的硬件规模控制在可接受的范围内。其中K为 编码装置可以支持的最大的编码前输入的信息多项式的位数,N为编码装置可以支持的最 大的编码后的码字多项式的位数,T为编码装置可以支持的最大的可纠错位数。设置的编 码前输入的信息多项式的位数k和编码后的码字多项式的位数η的设置范围需要满足k小 于或等于K、η小于或等于N,且k,η也为自然数。控制模块22,根据预设模块23预设的输入BCH编码模块21的信息多项式的位数 以及BCH编码模块21编码后输出的码字多项式的位数控制BCH编码模块21对输入的信息 多项式进行编码。具体的,控制模块22根据k、n的值控制BCH编码模块中参与输入信息进行BCH编 码的寄存器的个数。具体的,控制模块22根据设置的编码前输入的信息多项式的位数k和 编码后的码字多项式的位数η向BCH编码模块21发送控制信号Ctri,控制BCH编码模块中 的与信息多项式第i位对应的寄存器是否参与BCH编码的运算。具体的,可以为当Ctri为 “0”时,BCH编码模块的与信息多项式第i位对应的寄存器不参与BCH编码的运算,当Ctri 为“1”时,BCH编码模块中与信息多项式第i位对应的寄存器参与BCH编码的运算。BCH编码模块21,用于在控制模块22的控制下,对输入的信息多项式进行BCH编 码,生成码字多项式。具体的,BCH编码模块21包括校验子模块211和码字子模块212。其中校验子模块211,用于根据所述信息多项式的位数、所述码字多项式的位数、所述 信息多项式以及生成多项式,获取校验位多项式。具体的,校验子模块211可以根据设置的编码前输入的信息多项式的位数k和 编码后的码字多项式的位数η对输入的信息多项式m(x)进行乘法运算,获取的乘法结果
xn_km(X);之后再对生成多项式g(x)与乘法结果xn_km(x)进行除法运算,获取校验 位多项式b(x),其中校验位多项式b(x)为^^的余式。码字子模块212,用于根据信息多项式的位数、所述码字多项式的位数、所述信息 多项式以及所述校验位多项式,生成码字多项式。具体的,码字子模块212根据校验子模块211获取的校验位多项式b (χ)与乘法结 果#-、00进行加法运算,获取码字多项式C(X) =xn-km(x)+b (χ)0该码字多项式为BCH编 码后得到的码字多项式。为了更清楚的阐述本发明实施例,图4为本发明实施例二提供的编码装置的应用 结构示意图。如图4所示,该编码装置在寄存器42之前,设置有用于控制寄存器是否有输 入输出信号的与门41,与门41的另一端可以连接前一个运算单元的加法器43。当该编码 装置可以支持的最大的编码前输入的信息多项式的位数为K,最大的编码后的码字多项式 的位数为N,最大的可纠错位数为T,并且根据具体的需求设置的编码前输入的信息多项式 的位数为k、编码后的码字多项式的位数为η、可纠错位数为t时,其中K、N、T、k、n、t均为 自然数,控制模块通过与门41输入的控制信号,可以控制BCH编码模块中与与门41连接的 寄存器42的输出结果,即控制相应的寄存器42是否参与编码。如图4所示,当控制信号 CtiVn1到Ctiv2为“1”时,控制输入的信息多项式对应的寄存器参与BCH编码运算。而当控制信号Ctrci到ctrN_(n_k)_2为“0”时,则对应的寄存器不参与BCH编码运算。可以理解 的是,与门41可以有多个,所有的与门41可以均归属于1个控制模块,BCH编码所需要的 加法器43、寄存器42以及乘法器44也可以有多个,且可以一起构成BCH编码模块的一个计 算单元,与门41作为控制模块控制与该与门41连接的BCH编码模块的计算单元是否参予 BCH编码。本实施例采用控制模块可以通过预设模块在编码装置的硬件规模的范围内,根据 具体需求灵活设置编码前输入的信息多项式的位数和编码后的码字多项式的位数,控制模 块根据预设模块的设置控制BCH编码模块对输入的信息多项式进行BCH编码运算,使该编 码装置的应用更加灵活,适用范围更加广泛。图5为本发明实施例三提供的编码方法的流程示意图,如图5所示,该编码方法包 括以下步骤步骤501、设置输入编码装置的信息多项式的位数以及所述编码装置输出的码字 多项式的位数;假设编码装置中可以支持的最大的编码前输入的信息多项式的位数为K,最大的 编码后的码字多项式的位数为N,根据具体的需求,设置的编码前输入的信息多项式的位数 为k、编码后的码字多项式的位数为η。其中通过现场可编程门阵列(Field-Programmable Gate Array ;简称FPGA)等实现BCH码进行纠错时,可以通过外部端口预先设置输入纠错 过程中编译码参数例如设置所需的η值,从而确定的整个电路的开销和可纠错位数t的范 围;然后设定k值以确定可纠错位数t的值,可以满足不同规格的闪存的可纠错位数的需 求。步骤502、根据所述设置的信息多项式的位数以及码字多项式的位数对输入的信 息多项式进行BCH编码,获取码字多项式。编码装置可以根据设置的编码前输入的信息多项式的位数k、编码后的码字多项 式的位数η、输入的信息多项式m(x)和生成多项式g(x),获取校验位多项式,具体包括编 码装置对输入的信息多项式m(x)与xn_k进行乘法运算,获取乘法结果xn_km(x);对生成多项
Sg(X)与乘法结果Xn_km(X)进行除法运算//I、,获取的fS、的余数多项式b(x)为
χ m{x)χ m(x)
校验位多项式。编码装置可以根据信息多项式的位数k、所述码字多项式的位数η、信息多项式 m(x)和校验位多项式b(x),可以获取码字多项式,具体包括编码装置对校验位多项式 b(x)与乘法结果xn_km(x)进行加法运算,获取码字多项式c(x) = xn-km(x)+b (x)0可以理解的是,编码装置可以将编码后的码字多项式c(x)通过信道发送给译码 装置可以进行译码、纠错等处理。本实施例可以根据设置的编码前输入的信息多项式的位数和编码后的码字多项 式的位数,对输入的信息多项式进行BCH编码运算,从而实现利用BCH码纠错,由于在具体 的编码过程中,可以在该编码装置硬件规模一定的范围内,根据具体的编码需求灵活设置 编码前输入的信息的位数和编码后的码字多项式的位数进行编码,不再需要常常更改编码 电路,因此适用范围广,应用灵活。图6为本发明实施例四提供的译码装置的结构示意图,如图6所示,该译码装置包括BCH译码模块61和使能模块63。其中使能模块63,用于根据设置的编码后的码字多项式的位数和可纠错位数,控制所 述BCH译码模块对接收的码字多项式进行BCH译码;BCH译码模块61,用于根据所述码字多项式的位数和所述可纠错位数对所述接收 的码字多项式进行BCH译码,获取正确的码字多项式。具体地,如前所述可以采用硬件描述语言设定BCH编译码参数N、K、T,其中N、K、T 为自然数,使译码装置的硬件规模控制在可接受的范围内。实现利用BCH码进行纠错时,可 以预先设置所需的编码后的码字多项式的位数η值,从而确定整个译码电路的开销和译码 装置的可纠错位数t的范围;还可以预先设定编码前输入的信息多项式的位数k的值以确 定可纠错位数t的值。如前所述,编码装置根据设定的k、η值对输入的信息多项式进行编 码,得到码字多项式后发送给译码装置,译码装置接收编码装置经信道发送的码字多项式 的数据后进行BCH译码。使能模块63,用于控制BCH译码模块61按照设定的k、η、t的值进行BCH译码。具体的,BCH译码模块61可以根据所需的t的值求解接收的码字多项式的伴随式, 根据伴随式获取错误位置多项式,再采用搜索算法(例如钱搜索)求解错误位置多项式, 获取错误位置和错误位数。若错误位数小于或等于t的值,BCH译码模块61可以根据错误 位数、错误位置等信息,对接收的码字多项式中相应的错误位置进行取反运算,以获取正确 的码字多项式,最后截取码字多项式中的信息位,完成译码。本实施例在使能模块的控制下BCH译码模块可以根据编码后的码字多项式的位 数和可纠错位数求解伴随式,获取错误位置多项式、错误位置和错误位数,根据错误位数和 接收的码字多项式获取正确的码字多项式,从而可以保证闪存中数据的正确读写,由于编 码后的码字多项式的位数和可纠错位数可以根据需求设置,不需要每进行一次译码就需要 根据具体要求重新设计电路,因此应用灵活且适用广泛。图7为本发明实施例五提供的译码装置的结构示意图,如图7所示,在本发明译码 装置第一实施例的基础上,该BCH译码模块61包括至少一个伴随式子模块611、错误处理子 模块612和纠错子模块613。其中伴随式子模块611,用于根据所述码字多项式的位数和可纠错位数获取所述接收 的码字多项式的伴随式;具体地,BCH译码模块61根据预先设置的编码前输入的信息多项式的位数k、编码 后的码字多项式的位数η可以获取可纠错位数t。如果译码装置最大的可纠错位数为T,则 需要根据接收的码字多项式计算出2T个伴随式,相当于译码装置最大需要2T个伴随式子 模块611。如果根据编码前输入的信息多项式的位数k和编码后的码字多项式的位数η确 定的可纠错位数为t(其中,t小于等于T),则仅需使2t个伴随式子模块611工作。2t个 伴随式子模块611求解所述接收的码字多项式的伴随式后。下面介绍一种伴随式子模块的示例图8为本发明实施例五提供的译码装置中伴 随式子模块的结构示意图,如图8所示,当使能子模块向伴随式子模块发送有效的使能信 号“EN = 1”时,伴随式子模块按照公式(2)计算接收的码字多项式的伴随式Si = r0+r! α + …+Iv1 (Bi)n-!+-+^ (a1)(2)其中0彡i彡2XT-1,A表示接收的码字多项式R(X)的第i个系数,α为0或
101,η为设置的编码后的码字位数,N为最大的编码后的码字位数。假设T为译码装置最大 的可纠错位数,则该译码装置最多可以有2Τ个伴随式子模块。而若设置的可纠错位数为 t(t^T)时,只需计算出伴随式Stl S2t_i,不需要计算伴随式St S2Tf因此使能子模块 可以向与S。 S2t_i对应的2t个伴随式子模块中的寄存器81发送EN = 1的使能信号,向 St S2H对应的伴随式子模块中的寄存器81发送EN = 0的使能信号。其中EN = 1指示 该伴随式子模块中的寄存器输出信息、进行伴随式运算,EN = 0指示该伴随式子模块中的 寄存器不输出信息或输出“0”、不进行伴随式运算。当编码后的码字位数η确定之后,并且 可以采用计数器83控制每个的伴随式子模块计算的次数,例如使伴随式子模块只计算η 次,计算出Si = ! 。+!^+…+!^(乂广1的部分,而不再计算!^(乂广+…+!^^广1的部分。错误处理子模块612用于根据所述可纠错位数和所述伴随式子模块获取的伴随 式,获取错误位置和错误位数;具体地,t个错误处理子模块612采用迭代算法,根据伴随式子模块计算出的伴随 式获取错误位置多项式,然后采用搜索算法(例如钱搜索算法)求解错误位置多项式,获 取错误位置和错误位数。错误处理子模块按照下面的公式(3)对伴随式进行BM迭代运算, 获取错误位置多项式。
(3)公式(3)中,由于T为译码装置最大可处理的可纠错位数,则最多需要T个迭代单 元,每个迭代单元进行一次迭代运算。根据需要可以选择与设置的可纠错位数为t对应的 t个迭代单元进行t次迭代运算,此时将公式(3)中的T替换为t。使能模块向每一个迭代 单元发送使能信号,使对V(X)进行t次迭代运算对应的t个迭代单元运行,使第t+Ι到T 个迭代单元不工作,并且从第t个迭代单元输出错误位置多项式V(X)。获取错误位置多项式V(X)之后,错误处理模块可以采用搜索算法(例如钱搜索 算法)获取错误位置和错误位数,为了更清楚的阐述本发明实施例的技术方案,下面介绍 一种采用钱搜索算法的电路示例。图9为本发明实施例五提供的译码装置中采用钱搜索的电路结构示意图,如图9 所示,当使能模块向错误位置多项式的第i位对应的伴随式子模块发送有效的使能信号 "EN = 1”时,钱搜索电路按照下面的公式(4)对错误位置多项式的第i位进行钱搜索。 其中,表示错误位置多项式的系数,i为接收的码字多项式的位数,T为译码装 置最大的可纠错位数,N为最大的编码后的码字位数,i的最大取值范围为1 N。若t为 设置的可纠错位数,η为设置的编码后的码字位数,i的取值范围为1 η。此时使能模块 向钱搜索电路发送使能信号,使0t+1a(t+1)Xi oTaTXi对应的寄存器没有输出,即将公式
⑷中的T替换为t。若 σ/^"的计算结果为“1”,说明第i位有错;的计算结果
7=
为“0”,说明第i位没错。将接收的码字多项式所有的位置“1 η”进行钱搜索后,将统计 的错误位置和错误位数存入纠错子模块中。纠错子模块613,用于根据所述错误位置、错误位数以及所述接收的码字多项式获取正确的码字多项式。具体地,当错误位数小于或等于可纠错位数t时,纠错子模块613可以根据错误位 置和错误位数接收的码字多项式获取正确的码字多项式。例如若错误位数小于或等于可 纠错位数t,纠错子模块613可以根据错误位置对接收的码字多项式相应的位置进行取反 运算,可以得到正确的码字多项式。从正确的码字多项式中取出信息位后,完成译码。此 外,使能模块63根据可纠错位数t,向伴随式子模块611、错误处理子模块612和纠错子模 块613发送使能信号,控制进行BCH译码运算的伴随式子模块611、错误处理子模块612和 纠错子模块613的个数。本实施例采用伴随式子模块可以根据编码后的码字多项式的位数和可纠错位数 求解伴随式,错误处理子模块根据伴随式获取错误位置多项式后,求解错误位置多项式获 取错误位置和错误位数,采用纠错子模块可以根据错误位数和接收的码字多项式获取正确 的码字多项式,从而保证闪存中数据的正确读写,由于编码后的码字多项式的位数和可纠 错位数可以根据需求方便设置,因此应用灵活、适用广泛且成本低。图10为本发明实施例六提供的译码方法的流程示意图,如图10所示,该译码方法 包括以下步骤步骤1001、设置编码后的码字多项式的位数和可纠错位数;具体的,译码装置接收到编码装置经信道发送的码字多项式。其中由于编码前输 入的信息多项式的位数k和编码后的码字多项式的位数η可以预先设置,根据η和k的值 可以获取译码所需的可纠错位数t的值。步骤1002、根据所述码字多项式的位数和可纠错位数对接收的码字多项式进行 BCH译码,获取正确的码字多项式。译码装置根据设置的编码后的码字多项式的位数η和可纠错位数t,采用上述实 施例中的公式(2)可以求解接收的码字多项式的伴随式。再根据可纠错位数t对求解出的 伴随式进行t次迭代运算,获取错误位置多项式,如上述公式(3)。然后根据公式(4)对错 误位置多项式的第i位进行钱搜索,获取错误位置并统计错误位数。其中求解伴随式、错误 位置多项式和钱搜索的具体方法可以参照本发明译码装置第二实施例中的相关描述。当由接收的码字多项式计算出来的总的错误位数小于或者等于该译码装置设置 的可处理的可纠错位数时,该译码装置可以根据错误位置对接收的码字多项式的相应位置 进行取反运算,可以得到正确的码字多项式。最后截取码字多项式中的信息位,完成译码。本实施例根据设置的编码后的码字多项式的位数和可纠错位数,对接收的码字多 项式进行BCH译码运算,获取错误位置和错误位数,在错误位数小于或等于可纠错位数时, 根据所述错误位置和接收的码字多项式可以获取正确的码字多项式,从而保证闪存中数据 正确读写,不需要每进行一次译码就需要根据具体要求重新设计电路,应用灵活、适用范围 广且成本低。图11为本发明实施例七提供的纠错系统的结构示意图,如图11所示,该纠错系统 包括编码装置191和译码装置193。其中编码装置191,包括BCH编码模块和控制模块,所述BCH编码模块用于在所述控制 模块的控制下,对输入的信息多项式进行BCH编码,生成码字多项式;所述控制模块用于根 据设置的输入所述BCH编码模块的信息多项式的位数和所述BCH编码模块输出的码字多项式的位数控制所述BCH编码模块对输入的信息多项式进行BCH编码;译码装置193,包括使能模块和BCH译码模块,所述使能模块,用于根据设置所述 码字多项式的位数和可纠错位数,控制所述BCH译码模块对接收的码字多项式进行译码; 所述BCH译码模块,用于通过所述码字多项式的位数和所述可纠错位数对所述接收的码字 多项式进行BCH译码,获取正确的码字多项式。具体地,BCH码纠错系统通过FPGA等实现BCH码纠错时,可以根据需求由外部端 口输入信号预先设置编码前输入的信息多项式的位数k、编码后的码字多项式的位数η和 可纠错位数t。其中k、n、t的值分别小于BCH纠错系统的可以支持的最大的编码前输入的 信息多项式的位数K,最大的编码后的码字多项式的位数N,最大的可纠错位数T。然后编码 装置191根据设置的编码前输入的信息多项式的位数k和编码后的码字多项式的位数n, 对输入的信息多项式m(x)进行BCH编码运算,获取码字多项式c (χ),具体地可以参见本发 明编码装置第一实施例中的相关描述,然后将码字多项式c(X)通过信道向译码装置193发 送。译码装置193接收的码字多项式为R(X)。译码装置193根据设置的编码后的码字多项 式的位数η和可纠错位数t,对接收的码字多项式R(χ)进行BCH译码,可以得到错误位置和 错误位数,具体地可以参见本发明译码装置第一、第二实施例中的相关描述。若所述错误位 数小于或等于可纠错位数,译码装置193根据错误位置和接收的码字多项式获取正确的码 字多项式,例如对接收的码字多项式的错误位置的数据进行取反操作。得到正确的码字多 项式后,截取正确的码字多项式中的信息位,可以完成译码。本实施例中的编码装置、译码 装置可以采用上述实施例中任意一种的编码装置、译码装置。在实际应用中,采用不同多层单元(MLC)的NAND闪存读取数据的误码率有差异, 采用同一MLC的NAND闪存读取数据的误码率和速率要求也不同。由于BCH码的纠错能力与 硬件所占的资源存在矛盾,纠错能力越强(即可纠错位数越多),所占的检验位越多,运算 电路越复杂,运算速率越慢。本发明实施例预先设置编码前输入的信息多项式的位数、编码 后的码字多项式的位数和可纠错位数等参数后,编码装置可以根据设置的编码前输入的信 息多项式的位数、编码后的码字多项式的位数获取码字多项式;译码装置可以根据设置的 编码后的码字多项式的位数和可纠错位数得到错误位置和错误位数,获取正确的码字多项 式,从而保证了对闪存的正确读写,该纠错系统,仅需修改参数,无需常常改动编译码电路, 使用方便、应用灵活且成本低;适用范围广,不仅适用于采用不同MLC的NAND闪存,而且适 用于采用同一 MLC的NAND闪存。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者 光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
权利要求
一种编码装置,其特征在于,包括博斯 查德胡里 霍昆格BCH编码模块和与所述BCH编码模块连接的控制模块;所述BCH编码模块用于在所述控制模块的控制下,对输入的信息多项式进行BCH编码,生成码字多项式;所述控制模块用于根据设置的输入所述BCH编码模块的信息多项式的位数和所述BCH编码模块输出的码字多项式的位数控制所述BCH编码模块对输入的信息多项式进行BCH编码。
2.根据权利要求1所述的编码装置,其特征在于,所述BCH编码模块包括校验子模块,用于根据所述信息多项式的位数、所述码字多项式的位数、所述信息多项 式以及生成多项式,获取校验位多项式;码字子模块,用于根据所述信息多项式的位数、所述码字多项式的位数、所述信息多项 式以及所述校验位多项式,生成码字多项式。
3.根据权利要求1或2所述的编码装置,其特征在于,还包括预设模块,用于预先设置所述信息多项式的位数和所述码字多项式的位数。
4.一种编码方法,其特征在于,包括设置输入编码装置的信息多项式的位数以及所述编码装置输出的码字多项式的位数;根据设置的所述信息多项式的位数以及码字多项式的位数对输入的信息多项式进行 BCH编码,获取码字多项式。
5.根据权利要求4所述的编码方法,其特征在于,所述根据设置的所述信息多项式的 位数以及码字多项式的位数对输入的信息多项式进行BCH编码,包括根据所述信息多项式的位数、所述码字多项式的位数、所述信息多项式和生成多项式, 获取校验位多项式;根据所述信息多项式的位数、所述码字多项式的位数、所述信息多项式和所述校验位 多项式,获取所述码字多项式。
6.一种译码装置,其特征在于,包括使能模块和BCH译码模块;所述使能模块,用于根据设置的编码后的码字多项式的位数和可纠错位数,控制所述 BCH译码模块对接收的码字多项式进行BCH译码;所述BCH译码模块,用于根据所述码字多项式的位数和所述可纠错位数对所述接收的 码字多项式进行BCH译码,获取正确的码字多项式。
7.根据权利要求6所述的译码装置,其特征在于,所述BCH译码模块包括至少一个伴随 式子模块、错误处理子模块和纠错子模块,其中所述伴随式子模块,用于根据所述码字多项式的位数和可纠错位数获取所述接收的码 字多项式的伴随式;所述错误处理子模块,用于根据所述可纠错位数和所述伴随式子模块获取的伴随式, 获取错误位置和错误位数;所述纠错子模块,用于根据所述错误位置、错误位数以及所述接收的码字多项式获取 正确的码字多项式。
8.—种译码方法,其特征在于,包括设置编码后的码字多项式的位数和可纠错位数;根据所述码字多项式的位数和可纠错位数对接收的码字多项式进行BCH译码,获取正 确的码字多项式。
9.根据权利要求8所述的译码方法,其特征在于,所述根据所述码字多项式的位数和 可纠错位数对接收的码字多项式进行BCH译码,包括根据所述码字多项式的位数和可纠错位数获取所述接收的码字多项式的伴随式;根据所述可纠错位数和所述接收的码字多项式的伴随式,获取错误位置和错误位数;根据所述错误位置、错误位数以及所述接收的码字多项式获取正确的码字多项式。
10.一种纠错系统,其特征在于,包括编码装置,包括BCH编码模块和控制模块,所述BCH编码模块用于在所述控制模块的控 制下,对输入的信息多项式进行BCH编码,生成码字多项式;所述控制模块用于根据设置的 输入所述BCH编码模块的信息多项式的位数和所述BCH编码模块输出的码字多项式的位数 控制所述BCH编码模块对输入的信息多项式进行BCH编码;译码装置,包括使能模块和BCH译码模块,所述使能模块,用于根据设置所述码字多项 式的位数和可纠错位数,控制所述BCH译码模块对接收的码字多项式进行译码;所述BCH译 码模块,用于通过所述码字多项式的位数和所述可纠错位数对所述接收的码字多项式进行 BCH译码,获取正确的码字多项式。
全文摘要
本发明实施例涉及一种编码装置及方法、译码装置及方法和纠错系统,其中该编码装置包括博斯-查德胡里-霍昆格BCH编码模块和与所述BCH编码模块连接的控制模块,所述BCH编码模块用于在所述控制模块的控制下,对输入的信息多项式进行BCH编码,生成码字多项式;所述控制模块用于根据设置的输入所述BCH编码模块的信息多项式的位数和所述BCH编码模块输出的码字多项式的位数控制所述BCH编码模块对输入的信息多项式进行BCH编码。本发明实施例可以根据需求灵活设置编码前输入编码装置的信息多项式的位数和编码后的码字多项式的位数对输入的信息多项式进行BCH编码运算,适用范围广。
文档编号H03M13/00GK101931415SQ20091008739
公开日2010年12月29日 申请日期2009年6月19日 优先权日2009年6月19日
发明者梁剑, 邢继元 申请人:成都市华为赛门铁克科技有限公司