具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了更清楚的阐述本发明实施例,首先介绍采用BCH码进行的编码和译码的原理:图1为BCH码的编码电路,如图1所示,采用BCH码的编码的方法具体为:
首先乘法器12对根据输入的消息多项式、编码前可以输入的信息位数和编码后的码字多项式的位数可以对消息多项式进行乘法运算得到乘法结果,具体的是将xn-k与寄存器11输出的消息多项式m(x)=m0+m1x+…mk-1xk-1进行乘法运算,可以得到以下公式:xn-km(x)=m0xn-k+m1xn-k+1+…mk-1xn-1,其中x为消息多项式系数,k为编码前可以输入的信息位数,n为编码后的码字多项式的位数。
接着,通过n-k级的寄存器11根据生成多项式和上面运算得到的乘法结果可以得到校验位多项式,具体地是对生成多项式g(x)=g0+g1x+…gn-k-1xn-k-1和xn-km(x)进行除法运算,得到的余式b(x)为校验位多项式。
最后,加法器13根据校验位多项式和上面的乘法结果可以获得码字多项式,具体的是将b(x)与xn-km(x)进行加法运算,得到生成的码字多项式c(x)=xn-km(x)+b(x)。码字多项式c(x)为经过BCH编码后生成的待发送信息。
BCH码的译码过程是实现ECC的关键,主要包括以下步骤:
步骤1、接收BCH码的编码电路发送的数据,接收到的码字多项式可以用公式R(x)=rn-1xn-1+rn-2xn-2+…+r1x+r0表示,其中rn-1为R(x)的最高位的系数,根据接收的码字多项式R(x)求出伴随式S,其中伴随式S共有2t项,t为该纠错电路可以纠正的错误的个数,也叫做纠错能力或可纠错位数。
步骤2、根据伯利坎姆-梅西(Berlekamp-Massey;以下简称:BM)迭代算法,由伴随式S得到错误位置多项式,如下公式(1)所示。
V(x)=σ0+σ1x+σ2x2+…+σtxt (1)
公式(1)中V(x)是错误位置多项式,σ为错误多项式的系数,t为纠错能力也叫做可纠错位数。
步骤3、对错误位置多项式V(x)进行钱(CHIEN)搜索,求解V(x)的根,然后可以得到错误位置判别项E(x)。
例如,判断接收的码字多项式R(x)的最高位rn-1是否有错时,将αn-1的倒数α-(n-1)=α-nα1代入式:V(x)=σ0+σ1x+σ2x2+…+σtxt,如果V(α)=1+σ1α+σ2α2+…+σtαt=0,说明αn-1是σ(x)的根,最高位rn-1有错,否则,说明αn-1不是σ(x)的根,rn-1正确。错误位置判别项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和编码后的码字多项式的位数n向BCH编码模块21发送控制信号ctri,控制BCH编码模块中的与信息多项式第i位对应的寄存器是否参与BCH编码的运算。具体的,可以为当ctri为“0”时,BCH编码模块的与信息多项式第i位对应的寄存器不参与BCH编码的运算,当ctri为“1”时,BCH编码模块中与信息多项式第i位对应的寄存器参与BCH编码的运算。通过上述控制方式,使BCH编码模块根据设置的编码前输入的信息多项式的位数和编码后的码字多项式的位数,对输入的信息多项式进行BCH编码,生成码字多项式。
可以理解的是,在不超过该编码装置的硬件规模的情况下,上述设置的编码前输入的信息多项式的位数k和编码后的码字多项式的位数n在具体的编码过程中是可变的,只要k小于或等于K、n小于或等于N即可。
从上述实施例可以看出,在本发明实施例中可以根据具体应用的需要设置编码前输入的信息多项式的位数和编码后的码字多项式的位数,并采用控制模块控制BCH编码模块对输入的信息多项式进行BCH编码运算,不需要每进行一次编码就需要根据具体要求重新设计电路,应用更加灵活,适用范围更加广泛。
图3为本发明实施例二提供的编码装置的结构示意图,如图3所示,该编码装置包括BCH编码模块21、控制模块22以及预设模块23,其中:
预设模块23,用于预先设置输入BCH编码模块21的信息多项式的位数以及BCH编码模块21编码后输出的码字多项式的位数。
具体地,假设编码装置可以支持的最大的编码前输入的信息多项式的位数为K,最大的编码后的码字多项式的位数为N。根据具体的需求,预设模块23可以根据具体的需求设置编码前输入的信息多项式的位数k和编码后的码字多项式的位数n。具体地,可以采用硬件描述语言(Hardware Description Language;以下简称:HDL)来设定BCH编译码参数N、K、T(其中N、K、T为自然数)使编码装置的硬件规模控制在可接受的范围内。其中K为编码装置可以支持的最大的编码前输入的信息多项式的位数,N为编码装置可以支持的最大的编码后的码字多项式的位数,T为编码装置可以支持的最大的可纠错位数。设置的编码前输入的信息多项式的位数k和编码后的码字多项式的位数n的设置范围需要满足k小于或等于K、n小于或等于N,且k,n也为自然数。
控制模块22,根据预设模块23预设的输入BCH编码模块21的信息多项式的位数以及BCH编码模块21编码后输出的码字多项式的位数控制BCH编码模块21对输入的信息多项式进行编码。
具体的,控制模块22根据k、n的值控制BCH编码模块中参与输入信息进行BCH编码的寄存器的个数。具体的,控制模块22根据设置的编码前输入的信息多项式的位数k和编码后的码字多项式的位数n向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和编码后的码字多项式的位数n对输入的信息多项式m(x)进行乘法运算,获取的乘法结果x
n-km(x);之后再对生成多项式g(x)与乘法结果x
n-km(x)进行除法运算
获取校验位多项式b(x),其中校验位多项式b(x)为
的余式。
码字子模块212,用于根据信息多项式的位数、所述码字多项式的位数、所述信息多项式以及所述校验位多项式,生成码字多项式。
具体的,码字子模块212根据校验子模块211获取的校验位多项式b(x)与乘法结果xn-km(x)进行加法运算,获取码字多项式c(x)=xn-km(x)+b(x)。该码字多项式为BCH编码后得到的码字多项式。
为了更清楚的阐述本发明实施例,图4为本发明实施例二提供的编码装置的应用结构示意图。如图4所示,该编码装置在寄存器42之前,设置有用于控制寄存器是否有输入输出信号的与门41,与门41的另一端可以连接前一个运算单元的加法器43。当该编码装置可以支持的最大的编码前输入的信息多项式的位数为K,最大的编码后的码字多项式的位数为N,最大的可纠错位数为T,并且根据具体的需求设置的编码前输入的信息多项式的位数为k、编码后的码字多项式的位数为n、可纠错位数为t时,其中K、N、T、k、n、t均为自然数,控制模块通过与门41输入的控制信号,可以控制BCH编码模块中与与门41连接的寄存器42的输出结果,即控制相应的寄存器42是否参与编码。如图4所示,当控制信号ctrN-(n-k)-1到ctrN-2为“1”时,控制输入的信息多项式对应的寄存器参与BCH编码运算。而当控制信号ctr0到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、编码后的码字多项式的位数为n。其中通过现场可编程门阵列(Field-Programmable Gate Array;简称:FPGA)等实现BCH码进行纠错时,可以通过外部端口预先设置输入纠错过程中编译码参数例如:设置所需的n值,从而确定的整个电路的开销和可纠错位数t的范围;然后设定k值以确定可纠错位数t的值,可以满足不同规格的闪存的可纠错位数的需求。
步骤502、根据所述设置的信息多项式的位数以及码字多项式的位数对输入的信息多项式进行BCH编码,获取码字多项式。
编码装置可以根据设置的编码前输入的信息多项式的位数k、编码后的码字多项式的位数n、输入的信息多项式m(x)和生成多项式g(x),获取校验位多项式,具体包括:编码装置对输入的信息多项式m(x)与x
n-k进行乘法运算,获取乘法结果x
n-km(x);对生成多项式g(x)与乘法结果x
n-km(x)进行除法运算
获取的
的余数多项式b(x)为校验位多项式。
编码装置可以根据信息多项式的位数k、所述码字多项式的位数n、信息多项式m(x)和校验位多项式b(x),可以获取码字多项式,具体包括:编码装置对校验位多项式b(x)与乘法结果xn-km(x)进行加法运算,获取码字多项式c(x)=xn-km(x)+b(x)。
可以理解的是,编码装置可以将编码后的码字多项式c(x)通过信道发送给译码装置可以进行译码、纠错等处理。
本实施例可以根据设置的编码前输入的信息多项式的位数和编码后的码字多项式的位数,对输入的信息多项式进行BCH编码运算,从而实现利用BCH码纠错,由于在具体的编码过程中,可以在该编码装置硬件规模一定的范围内,根据具体的编码需求灵活设置编码前输入的信息的位数和编码后的码字多项式的位数进行编码,不再需要常常更改编码电路,因此适用范围广,应用灵活。
图6为本发明实施例四提供的译码装置的结构示意图,如图6所示,该译码装置包括:BCH译码模块61和使能模块63。其中:
使能模块63,用于根据设置的编码后的码字多项式的位数和可纠错位数,控制所述BCH译码模块对接收的码字多项式进行BCH译码;
BCH译码模块61,用于根据所述码字多项式的位数和所述可纠错位数对所述接收的码字多项式进行BCH译码,获取正确的码字多项式。
具体地,如前所述可以采用硬件描述语言设定BCH编译码参数N、K、T,其中N、K、T为自然数,使译码装置的硬件规模控制在可接受的范围内。实现利用BCH码进行纠错时,可以预先设置所需的编码后的码字多项式的位数n值,从而确定整个译码电路的开销和译码装置的可纠错位数t的范围;还可以预先设定编码前输入的信息多项式的位数k的值以确定可纠错位数t的值。如前所述,编码装置根据设定的k、n值对输入的信息多项式进行编码,得到码字多项式后发送给译码装置,译码装置接收编码装置经信道发送的码字多项式的数据后进行BCH译码。
使能模块63,用于控制BCH译码模块61按照设定的k、n、t的值进行BCH译码。
具体的,BCH译码模块61可以根据所需的t的值求解接收的码字多项式的伴随式,根据伴随式获取错误位置多项式,再采用搜索算法(例如:钱搜索)求解错误位置多项式,获取错误位置和错误位数。若错误位数小于或等于t的值,BCH译码模块61可以根据错误位数、错误位置等信息,对接收的码字多项式中相应的错误位置进行取反运算,以获取正确的码字多项式,最后截取码字多项式中的信息位,完成译码。
本实施例在使能模块的控制下BCH译码模块可以根据编码后的码字多项式的位数和可纠错位数求解伴随式,获取错误位置多项式、错误位置和错误位数,根据错误位数和接收的码字多项式获取正确的码字多项式,从而可以保证闪存中数据的正确读写,由于编码后的码字多项式的位数和可纠错位数可以根据需求设置,不需要每进行一次译码就需要根据具体要求重新设计电路,因此应用灵活且适用广泛。
图7为本发明实施例五提供的译码装置的结构示意图,如图7所示,在本发明译码装置第一实施例的基础上,该BCH译码模块61包括至少一个伴随式子模块611、错误处理子模块612和纠错子模块613。其中:
伴随式子模块611,用于根据所述码字多项式的位数和可纠错位数获取所述接收的码字多项式的伴随式;
具体地,BCH译码模块61根据预先设置的编码前输入的信息多项式的位数k、编码后的码字多项式的位数n可以获取可纠错位数t。如果译码装置最大的可纠错位数为T,则需要根据接收的码字多项式计算出2T个伴随式,相当于译码装置最大需要2T个伴随式子模块611。如果根据编码前输入的信息多项式的位数k和编码后的码字多项式的位数n确定的可纠错位数为t(其中,t小于等于T),则仅需使2t个伴随式子模块611工作。2t个伴随式子模块611求解所述接收的码字多项式的伴随式后。
下面介绍一种伴随式子模块的示例:图8为本发明实施例五提供的译码装置中伴随式子模块的结构示意图,如图8所示,当使能子模块向伴随式子模块发送有效的使能信号“EN=1”时,伴随式子模块按照公式(2)计算接收的码字多项式的伴随式:
Si=r0+r1α+…+rn-1(ai)n-1+…+rN-1(ai)N-1 (2)
其中0≤i≤2×T-1,ri表示接收的码字多项式R(x)的第i个系数,α为0或1,n为设置的编码后的码字位数,N为最大的编码后的码字位数。假设T为译码装置最大的可纠错位数,则该译码装置最多可以有2T个伴随式子模块。而若设置的可纠错位数为t(t≤T)时,只需计算出伴随式S0~S2t-1,不需要计算伴随式St~S2T-1。因此使能子模块可以向与S0~S2t-1对应的2t个伴随式子模块中的寄存器81发送EN=1的使能信号,向St~S2T-1对应的伴随式子模块中的寄存器81发送EN=0的使能信号。其中EN=1指示该伴随式子模块中的寄存器输出信息、进行伴随式运算,EN=0指示该伴随式子模块中的寄存器不输出信息或输出“0”、不进行伴随式运算。当编码后的码字位数n确定之后,并且可以采用计数器83控制每个的伴随式子模块计算的次数,例如:使伴随式子模块只计算n次,计算出Si=r0+r1α+…+rn-1(ai)n-1的部分,而不再计算rn(ai)n+…+rN-1(ai)N-1的部分。
错误处理子模块612用于根据所述可纠错位数和所述伴随式子模块获取的伴随式,获取错误位置和错误位数;
具体地,t个错误处理子模块612采用迭代算法,根据伴随式子模块计算出的伴随式获取错误位置多项式,然后采用搜索算法(例如:钱搜索算法)求解错误位置多项式,获取错误位置和错误位数。错误处理子模块按照下面的公式(3)对伴随式进行BM迭代运算,获取错误位置多项式。
V(x)=σ0+σ1x+σ2x2+…+σTxT (3)
公式(3)中,由于T为译码装置最大可处理的可纠错位数,则最多需要T个迭代单元,每个迭代单元进行一次迭代运算。根据需要可以选择与设置的可纠错位数为t对应的t个迭代单元进行t次迭代运算,此时将公式(3)中的T替换为t。使能模块向每一个迭代单元发送使能信号,使对V(x)进行t次迭代运算对应的t个迭代单元运行,使第t+1到T个迭代单元不工作,并且从第t个迭代单元输出错误位置多项式V(x)。
获取错误位置多项式V(x)之后,错误处理模块可以采用搜索算法(例如:钱搜索算法)获取错误位置和错误位数,为了更清楚的阐述本发明实施例的技术方案,下面介绍一种采用钱搜索算法的电路示例。
图9为本发明实施例五提供的译码装置中采用钱搜索的电路结构示意图,如图9所示,当使能模块向错误位置多项式的第i位对应的伴随式子模块发送有效的使能信号“EN=1”时,钱搜索电路按照下面的公式(4)对错误位置多项式的第i位进行钱搜索。
其中,σ
j表示错误位置多项式的系数,i为接收的码字多项式的位数,T为译码装置最大的可纠错位数,N为最大的编码后的码字位数,i的最大取值范围为1~N。若t为设置的可纠错位数,n为设置的编码后的码字位数,i的取值范围为1~n。此时使能模块向钱搜索电路发送使能信号,使σ
t+1α
(t+1)×i~σ
Tα
T×i对应的寄存器没有输出,即将公式(4)中的T替换为t。若
的计算结果为“1”,说明第i位有错;
的计算结果为“0”,说明第i位没错。将接收的码字多项式所有的位置“1~n”进行钱搜索后,将统计的错误位置和错误位数存入纠错子模块中。
纠错子模块613,用于根据所述错误位置、错误位数以及所述接收的码字多项式获取正确的码字多项式。
具体地,当错误位数小于或等于可纠错位数t时,纠错子模块613可以根据错误位置和错误位数接收的码字多项式获取正确的码字多项式。例如:若错误位数小于或等于可纠错位数t,纠错子模块613可以根据错误位置对接收的码字多项式相应的位置进行取反运算,可以得到正确的码字多项式。从正确的码字多项式中取出信息位后,完成译码。此外,使能模块63根据可纠错位数t,向伴随式子模块611、错误处理子模块612和纠错子模块613发送使能信号,控制进行BCH译码运算的伴随式子模块611、错误处理子模块612和纠错子模块613的个数。
本实施例采用伴随式子模块可以根据编码后的码字多项式的位数和可纠错位数求解伴随式,错误处理子模块根据伴随式获取错误位置多项式后,求解错误位置多项式获取错误位置和错误位数,采用纠错子模块可以根据错误位数和接收的码字多项式获取正确的码字多项式,从而保证闪存中数据的正确读写,由于编码后的码字多项式的位数和可纠错位数可以根据需求方便设置,因此应用灵活、适用广泛且成本低。
图10为本发明实施例六提供的译码方法的流程示意图,如图10所示,该译码方法包括以下步骤:
步骤1001、设置编码后的码字多项式的位数和可纠错位数;
具体的,译码装置接收到编码装置经信道发送的码字多项式。其中由于编码前输入的信息多项式的位数k和编码后的码字多项式的位数n可以预先设置,根据n和k的值可以获取译码所需的可纠错位数t的值。
步骤1002、根据所述码字多项式的位数和可纠错位数对接收的码字多项式进行BCH译码,获取正确的码字多项式。
译码装置根据设置的编码后的码字多项式的位数n和可纠错位数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、编码后的码字多项式的位数n和可纠错位数t。其中k、n、t的值分别小于BCH纠错系统的可以支持的最大的编码前输入的信息多项式的位数K,最大的编码后的码字多项式的位数N,最大的可纠错位数T。然后编码装置191根据设置的编码前输入的信息多项式的位数k和编码后的码字多项式的位数n,对输入的信息多项式m(x)进行BCH编码运算,获取码字多项式c(x),具体地可以参见本发明编码装置第一实施例中的相关描述,然后将码字多项式c(x)通过信道向译码装置193发送。译码装置193接收的码字多项式为R(x)。译码装置193根据设置的编码后的码字多项式的位数n和可纠错位数t,对接收的码字多项式R(x)进行BCH译码,可以得到错误位置和错误位数,具体地可以参见本发明译码装置第一、第二实施例中的相关描述。若所述错误位数小于或等于可纠错位数,译码装置193根据错误位置和接收的码字多项式获取正确的码字多项式,例如:对接收的码字多项式的错误位置的数据进行取反操作。得到正确的码字多项式后,截取正确的码字多项式中的信息位,可以完成译码。本实施例中的编码装置、译码装置可以采用上述实施例中任意一种的编码装置、译码装置。
在实际应用中,采用不同多层单元(MLC)的NAND闪存读取数据的误码率有差异,采用同一MLC的NAND闪存读取数据的误码率和速率要求也不同。由于BCH码的纠错能力与硬件所占的资源存在矛盾,纠错能力越强(即可纠错位数越多),所占的检验位越多,运算电路越复杂,运算速率越慢。本发明实施例预先设置编码前输入的信息多项式的位数、编码后的码字多项式的位数和可纠错位数等参数后,编码装置可以根据设置的编码前输入的信息多项式的位数、编码后的码字多项式的位数获取码字多项式;译码装置可以根据设置的编码后的码字多项式的位数和可纠错位数得到错误位置和错误位数,获取正确的码字多项式,从而保证了对闪存的正确读写,该纠错系统,仅需修改参数,无需常常改动编译码电路,使用方便、应用灵活且成本低;适用范围广,不仅适用于采用不同MLC的NAND闪存,而且适用于采用同一MLC的NAND闪存。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。