基于bch码的多位错纠错方法和装置以及存储系统的制作方法

文档序号:7516114阅读:295来源:国知局

专利名称::基于bch码的多位错纠错方法和装置以及存储系统的制作方法
技术领域
:本发明涉及信息
技术领域
,具体地,涉及基于BCH码的多位错纠错方法和装置以及存储系统。
背景技术
:随着半导体技术的发展,人们已经能够在单个芯片上构建数亿个晶体管。这对于存储器系统来说,允许存储器系统的小型化。但是,同时,这也对存储器系统的可靠性带来了挑战。在存储器系统的设计中,广泛引入冗余位来确保高级别的可靠性。通常,在存储器系统中,通过在存储数据时,对数据进行某种方式的编码来添加冗余位。另一方面,在读取数据时,对数据进行相应方式的解码,并且在解码过程中利用冗余位来进行纠错。传统上,一位错纠错一直以来是存储器系统中的主要技术。在这样的技术中,一次纠错处理只能够对所处理的数据纠错一位。但是,随着存储器系统的不断小型化以及存储容量的不断扩大,位错误的出现频率随之增加。例如,对于能够以较低的硅成本存储大量数据的NAND闪存而言,多级单元(Multi-LevelCell,MLC)技术能够将NAND闪存中每个单元的位存储容量增加到两倍,同时降低总电路尺寸。但是,与标准的二级单元(Binary-LevelCell,BLC)技术相比较,采用MLC技术的NAND闪存的可靠性相对较低,其性能极大地低于采用BLC技术的NAND闪存。图1示出了BLC闪存与MLC闪存之间据报道的错误概率的比较。其中,EDC/ECC能力表示检错/纠错能力,NA表示在当前条件下没有可以获得的实验数据。如图1所示,相对于BLC闪存而言,MLC闪存的错误概率、即错误出现频率有所增加。为了应对错误频率的增加,需要一种有效的多位错纠错方法,来提高纠错效率。所谓多位错纠错,是指一次纠错处理能够对所处理的数据纠错多位。目前,有采用BCH码来实现多位错纠错的技术。也就是说,采用BCH码对数据进行编码、解码,并在解码中利用在BCH编码过程中所添加的冗余位来进行纠错。BCH码具有很高的纠错能力以及纠多个错误的能力,人们可以根据所要求的纠错能力,构造BCH码的生成多项式,进而利用所构造的生成多项式构造出相应的BCH码。但是,现有的采用BCH码的多位错纠错技术都是基于短的BCH码而实现的。也就是说,这些技术所实现的纠错能力仅限于利用简单的生成多项式生成的较短的BCH码。基于较短的BCH码的纠错方式,相对于较长的BCH码而言,具有较低的码密度(有效数据位相对于整个BCH码所占的比重),因为在基于较短的BCH码的纠错方式下所引入的冗余位的比例必然多于基于较长的BCH码的方式。举例来说,在32位的较短BCH码的情况下,例如每一个32位的BCH码引入8位冗余,但是如果采用例如1000位的长BCH码,则可以做到使每一个1000位的BCH码同样也引入8位冗余。这样,在采用长BCH码的情况下,有效数据位所占的比重将极大增加,能够形成较高的码密度,从而能够实现存储空间的有效利用。但是,由于相对于较短的BCH码而言,较长的BCH码的解码复杂度急剧增加,所以目前并没有基于较长的BCH码来实现多位错纠错的技术。
发明内容鉴于上述问题,本发明提供了一种基于BCH码的多位错纠错方法和装置以及存储系统,以便能够基于较长的BCH码来实现多位错纠错。根据本发明的一个方面,提供了一种基于BCH码的多位错纠错方法,包括对要进行纠错的BCH码做如下循环操作将该BCH码的每个码位依次向右移1位,右移后的BCH码不足的位用0填补;计算上述BCH码的与该移位相应的伴随值;基于上述BCH码的与该移位相应的伴随值,确定在该移位下该BCH码中的第一错误数量;在上述第一错误数量不等于0的情况下计算上述BCH码的与该移位相应的修改的伴随值,其中上述修改的伴随值是上述BCH码在该移位下当前的最右位变为相反值的情况下的伴随值;基于上述BCH码的与该移位相应的修改的伴随值,确定在该移位下该BCH码中的第二错误数量;以及根据上述第二错误数量是否比上述第一错误数量减少1,确定上述BCH码在该移位下当前的最右位是否包含错误。根据本发明的另一个方面,提供了一种基于BCH码的多位错纠错装置,包括伴随值生成模块,用于将要进行纠错的BCH码的每个码位依次向右移1位,右移后的BCH码不足的位用0填补,计算该BCH码的与该移位相应的伴随值;修改伴随值生成模块,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,计算上述BCH码的与该移位相应的修改的伴随值,其中上述修改的伴随值是上述BCH码在该移位下当前的最右位变为相反值的情况下的伴随值;错误数量确定模块,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,基于上述伴随值生成模块计算的伴随值确定在该移位下该BCH码中的第一错误数量,并且基于上述修改伴随值生成模块计算的修改的伴随值确定在该移位下该BCH码中的第二错误数量;以及纠错模块,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,根据上述第二错误数量是否比上述第一错误数量减少1,确定上述BCH码在该移位下当前的最右位是否包含错误。根据本发明的再一个方面,提供了一种存储系统,包括上述的基于BCH码的多位错纠错装置。如果采用本发明,则由于在BCH码的纠错过程中通过一边将BCH码移位一边确定错误的数量是否减少来确定包含错误的位,所以即使对于较长的BCH码来说,也能够简单地进行纠错,从而能够基于较长的BCH码来实现多位错纠错,能够提高码密度,减少冗余,同时提高纠错效率。当然,采用本发明,也能够实现基于较短的BCH码的多位错纠错。相信通过以下结合附图对本发明具体实施方式的说明,能够使人们更好地了解本发明上述的特点、优点和目的。图1是示出BLC闪存与MLC闪存之间的错误概率的比较的图表;图2是根据本发明实施例的基于BCH码的多位错纠错方法的流程图;图3是根据本发明实施例的基于BCH码的多位错纠错装置的电路框图4是t=4的情况下、图3的装置中的乘法阵列的电路框图;以及图5是根据本发明实施例的存储系统的框图。具体实施例方式在对本发明的各个优选实施例进行详细说明之前,首先对BCH码进行简单介绍。该介绍以长度为n=2m-l的t位错纠错BCH码(n,m,t)为例来进行。其中,t是一次纠错处理能够纠错的个数。BCH码t位错纠错BCH码(n,m,t)能够由生成多项式g(x)以下述三个步骤来确定1)首先,找到度数为m的与生成多项式g(x)相关的本原多项式p(x),在该本原多项式P(X)之上,构造Galois域GF(2m)。2)其次,在Galois域GF(2m)中找到本原元素,在此,定义为α。使Ft(X)为α1的最小多项式,找到F1(x)、F3(χ).....F2H(χ)。3)再次,g(x)是F1UhF3(X).....F2t^1(χ)的最小公倍数(leastcommonmultiple,LCM),写作为<formula>formulaseeoriginaldocumentpage8</formula>(1)利用该生成多项式g(x),BCH码的编码过程可以表示为<formula>formulaseeoriginaldocumentpage8</formula>(2)其中,I(χ)是与要进行编码的信息码有关的信息多项式,其长度是k,C(x)表示所得到的BCH码。生成多项式g(x)由Galois域上的本原元素乘积产生。通常本原元素对应一个质数。例如F1(X)=+1(质数5)不00=+1+1(质数7),800=F1(X)XF3(X)=χ4+χ3+χ+1ο例如,如果要对信息码(1,1,0,0,1,1,0)进行BCH编码,则将该信息码的信息多项式写作为<formula>formulaseeoriginaldocumentpage8</formula>(3)并且设定η=24_1,从而利用式⑵对上述信息码进行编码,可得到BCH码(1,1,0,0,1,1,0,0,0,0,0,1,0,0,1)。其中,可以看出,后面的8位是在BCH编码过程中添加的冗余位,利用这些冗余位,可以检测、纠正错误。此外,在纠错后,可以利用与生成多项式g(x)对应的多项式对纠错后的BCH码进行解码,以获得其中正确的信息码。基于上述内容,下面描述在本发明中将应用到的关于BCH码的一些已有理论。关于BCH码的已有理论假设E(X)是误差模式,C(χ)是原始的BCH码,则在解码前所获取的、包含了错误的BCH码可以描述为<formula>formulaseeoriginaldocumentpage8</formula>(4)对于该BCH码R(X),可以根据下式(4)计算其相应的伴随值(syndromevalue)<formula>formulaseeoriginaldocumentpage8</formula>(5)其中,Mod表示取模运算,ρ(χ)如前所述是与生成多项式g(x)相关的本原多项式,α是本原元素。上述伴随值可以利用2004年在“PublishingHouseofElectronicslndustry"杂志上刊登的文章“TheTheoryofInformationandCoding=SecondEdition”中公开的伴随值生成器来计算。此外,根据上述伴随值,可以确定所获取的BCH码R(X)中错误的位置。具体地,参照1965年10月在IEEETrans的"OnInformationTheory"(vol.ΙΤ-ΙΙ,ηο.4,pp.580-585)上干丨J登的文章"Step-by-stepDecodingoftheBose-Chaudhuri-HocquenghemCodes,,、1993年在IEEETransStJ"OnCircuitsandSystemforVideoTechnology"(vol.3,no.2,pp.138-147)上刊登的文章"Ahigh-speedreal-timebinaryBCHdecoder”以及2005年在“ChinaMachinePress”上刊登的文章“InformationTheory,CodingandCryptography”,在错误的位置与伴随值之间存在两个重要的关系。在此,分别表示为下面的定理1和定理2。定理1对于任意的整数j彡0,定义S/⑴=⑴Μ=1,3,...,2-1为是与BCH码R(X)的每个码位依次向右移j位后计算得到的伴随值,R(X)右移后不足的位用0填补。并且,对于j彡0,5/+,(x)=MoJ{[x5/(x)]/p(x)}。定理2对于BCH码(n,m,t),定义伴随值矩阵Lpjp=1,2,…,t如下<formula>formulaseeoriginaldocumentpage9</formula><formula>formulaseeoriginaldocumentpage9</formula>其中,ρ表示错误的数量。所谓错误的数量,是以位为单位,表示产生了错误的位的数量。根据用于求取上述伴随值矩阵%的行列式的值的函数detOV)能够确定与R(X)每个码位依次向右移j位,右移后不足的位用0填补的情况相应的错误特征向量V。基于上述内容,本发明的发明人们提出了一种新的基于BCH码的多位错纠错理论。下面对其进行详细描述。本发明的基于BCH码的多位错纠错理论为了容易参考,在本发明中,对于错误的数量ρ=1,2,3,4的情况,归纳det(Z/)det(Lpj)如下表1<formula>formulaseeoriginaldocumentpage10</formula>其中,《S/是与R(X)每个码位依次向右移j位,右移后不足的位用0填补的情况相应的伴随值。根据上面表1的内容,与R(X)每个码位依次向右移j位,右移后不足的位用0填补的情况相应的错误特征向量Ψ定义如下<formula>formulaseeoriginaldocumentpage10</formula>根据上式(6)中的错误特征向量V^能够容易地确定与R(X)每个码位依次向右移j位,右移后不足的位用0填补的情况对应的错误的数量。基本的判定规则如下<table>tableseeoriginaldocumentpage10</column></row><table>其中,Nctm表示根据上述判定规则所确定的错误的数量。在本发明中,定义修改的伴随值。具体地,假设在要进行纠错的BCH码R(χ)中,在第j位的位置产生了错误,其错误模式表达为V,则修改的伴随值^^为<formula>formulaseeoriginaldocumentpage10</formula>其中,M/称为修改因子(MF),匁是与R(x)每个码位依次向右移j位,右移后不足的位用0填补的情况相应的伴随值,ρ(χ)如前所述是与生成多项式g(x)相关的本原多项式。这样,对于所获取的BCH码R(X)的每个码位依次向右移位j次并且移位后不足的位用0填补的情况,通过计算相应的伴随值5;"、基于该伴随值的错误特征向量以及修改的伴随值‘)、进而基于该修改的伴随值的错误特征向量,能够确定在错误特征向量Ψ和戸的情况下错误的数量Notot是否发生变化,来确定R(x)中的第j位(相当于在每个码位依次向右移位j位后,BCH码R(X)中当前的最右位)是否是产生了错误的位。进而,通过对产生错误的位进行修正,能够实现基于BCH码的多位错纠错。这便是本发明的特征所在。优选实施例在上述本发明的基于BCH码的多位错纠错理论的基础上,下面结合附图对本发明的各个优选实施例进行详细说明。需要说明的是,在下面的各优选实施例中,以t位错纠错BCH码为例来进行说明。图2是根据本发明实施例的基于BCH码的多位错纠错方法的流程图。如图2所示,本实施例的基于BCH码的多位错纠错方法,首先在步骤205,对于所接收的要进行解码的BCH码R(X),使其除以生成多项式g(x),即R(X)/g(x),以确定该BCH码R(χ)是否能够被生成多项式g(x)整除。并且,如果能够整除,则该过程转到步骤270,否则执行下面的步骤210-265的纠错过程。也就是说,对于BCH码这样的循环码来说,任一码字C(X)都应该能够被其相应的生成多项式g(x)整除。所以,在接收端可以使所接收的码字R(X)与其相应的生成多项式g(x)相除。若在传输中未发生错误,则接收码字R(X)与发送码字C(x)相同,故接收码字R(χ)必定能够被其相应的生成多项式g(x)整除;若在传输中发生了错误,则接收码字ROO被相应的生成多项式g(x)除时,可能会除不尽而有余项。因此,可根据余项是否为零来确定所接收的BCH码R(x)中有无错误。在步骤210,设置j=0,Nerror=0。其中,j表示BCH码R(X)的每个码位依次向右移的移位数,Nerror表示错误的数量。在步骤215,对于BCH码R(X),根据上式(5)和(10),计算伴随值匆和修改因子Μ!,i=1,3,...,2t-l。其中,t是一次纠错处理能够纠错的个数。在步骤220,根据表1和上式(6),计算基于伴随值&的错误特征向量Vj。在步骤225,判断是否错误特征向量Vj=Q。,其中根据上式(7),0°=(fcP。/位在该步骤中,如果错误特征向量W=Qtl,则表明该BCH码R(X)中不再有错误,从而转到步骤265;否则,前进到步骤230。在步骤230,根据上式(7),基于错误特征向量W确定Qk,并且设定错误的数量Nerrorkο在步骤235,根据上式(9),基于伴随值^和修改因子M/,计算修改的伴随值WMo在步骤240,用修改的伴随值_替代伴随值&‘来计算基于修改的伴随值^^的错误特征向量戸。在步骤245,判断是否错误特征向量P=^m,即判断错误特征向量的情况下的错误的数量C是否比错误特征向量炉的情况下的错误数量减少1。如果是,则能够确定该BCH码R(x)中的第j位是产生了错误的位,从而前进到步骤250;否则,转到步骤255。也就是说,在本实施例中,对于R(χ)中的第j位,首先在该位的值不变的情况下计算相应的错误特征向量W,进而基于该错误特征向量W来确定此时R(X)中的错误的数量Nerror;然后假设该第j位包含了错误,从而求取将该第j位变换为相反值(即1变为0,0变为1)的情况下的修改的伴随值@,来计算基于修改的伴随值_的错误特征向量^7,进而基于该错误特征向量来确定此时R(X)中的错误的数量》丨并且,通过比较两次计算所得到的错误的数量与[.是否相等,来确定该第j位是否是产生了错误的位。在步骤250,将BCH码R(X)中的第j位(相当于BCH码R(X)每个码位向右移j位,右移后不足的位用0填补后当前的最右位)的值h校正,即对&求反,例如,如果h为0,则求反后变为1。在步骤255,判断是否j=η并且Nj=Q0,其中η是BCH码R(X)的码长度。如果是,则纠错完毕,获得了纠错后的BCH码R(X),从而转到步骤270,否则,前进到步骤260。在步骤260,判断是否j=n并且炉兴Q。。如果是,则纠错失败,该过程结束,否贝IJ,前进到步骤265。也就是说,如果j=η并且ΨΦQ0,则表明错误数量超过了t,从而该方法不能够获得BCH码R(X)中的正确的信息码。在步骤265,j=j+1,并返回到步骤215,以进行与BCH码R(X)的下一移位相应的处理。在步骤270,利用与生成多项式g(x)对应的多项式对纠错后的BCH码R(x)进行解码,以获得其中的信息码。并且,该过程结束。以上就是对本实施例的基于BCH码的多位错纠错方法的详细描述。在本实施例中,通过对于所获得的BCH码中的各位,首先在该位的值不变的情况下计算错误特征向量从而确定其中的错误的数量,然后假设在该位中包含了错误,从而将该位的值变换为相反值的情况下计算此时的错误特征向量从而确定错误的数量,并比较两次计算所得到的错误的数量是否相等,来确定该位是否是包含错误的位。进而,在包含错误的情况下,通过对包含错误的位进行校正,来实现基于BCH码的多位错纠错。可以理解,在本实施例中,由于采用这样的纠错方式,即使对于较长的BCH码来说,也能够简单地进行纠错,从而能够基于较长的BCH码来实现多位错纠错,从而能够提高码密度,并且提高纠错效率。当然,在本实施例中,使用相同的方法也能够实现基于较短的BCH码的多位错纠错.在同一发明构思下,本发明提供一种基于BCH码的多位错纠错装置。下面结合附图对其进行描述。图3是根据本发明实施例的基于BCH码的多位错纠错装置的电路框图。具体地,如图3所示,本实施例的基于BCH码的多位错纠错装置30包括FIFO(FirstInFirstOut,先进先出)缓冲器31、并-串转换模块(P2S)32、解码FIR滤波器33、串-并转换模块(S2P)34、FIFO缓冲器35、BCH码纠错部分36以及加法器37。其中,FIFO缓冲器31用于从外部接收并存储要进行解码的BCH码。并-串转换模块32按照顺序从FIFO缓冲器31中获取要进行解码的BCH码R(X),并对其进行并-串转换。解码FIR滤波器33将由并-串转换模块32进行了并-串转换后的BCH码R(X)除以生成多项式g(x),以确定R(X)是否能够被生成多项式g(x)整除。并且,如果确定BCH码R(X)能够被生成多项式g(x)整除,则解码FIR滤波器33根据该生成多项式g(x),对该BCH码R(X)进行解码,以获得其中的信息码。另一方面,如果确定ROO不能够被生成多项Sg(X)整除,则该解码FIR滤波器33发出“ErrorFind”信号,以指示在BCH码R(x)中发现了错误。本领域技术人员能够理解,解码FIR滤波器33可以根据本领域的现有技术,利用FIR滤波器来实现。更具体地,该FIR滤波器可以用通常的移位寄存器和XOR门来实现。接着,串-并转换模块34对由解码FIR滤波器33解码后所获得的信息码进行串-并转换,并将串-并转换后的信息码输出到FIFO缓冲器35中。FIFO缓冲器35缓存从串_并转换模块34接收的信息码,以待传输到外部。此外,BCH码纠错部分36,在解码FIR滤波器33发出“ErrorFind”信号时被启动,其用于对解码FIR滤波器33发现有错误的BCH码R(X)进行多位错纠错。具体地,如图3所示,BCH码纠错部分36进一步包括伴随值生成模块361、修改伴随值生成模块362、错误数量确定模块363以及纠错模块364。其中,伴随值生成模块361将要进行纠错的BCH码R(X)的每个码位依次向右移1位,右移后的BCH码不足的位用0填补,计算该BCH码R(X)的与该移位相应的伴随值。根据本发明的一种实施方式,可以利用DSP编程实现伴随值生成模块361,其中伴随值生成模块361与要进行纠错的BCH码R(X)的每次移位对应地,根据上式(5),计算与该移位相应的伴随值邛,对,匆,...Atn。其中,t是一次多位错纠错处理能够纠错的个数,j表示BCH码R(X)的当前移位数。根据本发明的另一种实施方式,伴随值生成模块361可以根据2004年在"PublishingHouseofElectronicsIndustry”杂志上干丨J登的文章"TheTheoryofInformationandCoding=SecondEdition”中公开的伴随值生成器,利用FIR滤波器来实现。更具体地,该FIR滤波器可以用通常的移位寄存器和XOR门来实现。修改伴随值生成模块362与要进行纠错的BCH码R(X)的每个码位依次向右移1位对应地,计算该BCH码R(X)的与该移位相应的修改的伴随值,其中该修改的伴随值是BCH码ROO在该移位下当前的最右位变为相反值的情况下的伴随值。根据本发明的一种实施方式,可以利用DSP编程实现修改伴随值生成模块362。根据本发明的另一种实施方式,修改伴随值生成模块362进一步包括修改因子生成器3621和加法阵列3622,如图3所示。其中,修改因子生成器3621与上述BCH码R(X)的每个码位依次向右移1位对应地,根据指示,根据上式(10),生成修改因子M/,Mi,Mi,这些修改因子用于修改由伴随值生成模块361生成的伴随值W,句,W,...,殆μ)。该修改因子生成器3621可以利用FIR滤波器来实现。更具体地,该FIR滤波器可以用通常的移位寄存器和XOR门来实现。加法阵列3622在修改因子生成器3621被指示生成修改因子的情况下,根据上式(9),将伴随值生成模块361生成的伴随值针,衫义,...,绍,_,)和修改因子生成器3621生成的修改因子,似丨,Λ^,...,Λ^2Μ)分别相加,从而得到修改的伴随值,该修改的伴随值是上述BCH码R(X)在该移位下当前的最右位变为相反值的情况下的伴随值。并且,这些修改的伴随值被输入到错误数量确定模块363。另一方面,在修改因子生成器3621未被指示生成修改因子的情况下,由伴随值生成模块361生成的伴随值对,匀,衫,…,硌μ)不被修改因子修改,而直接通过加法阵列3622被输入到错误数量确定模块363。错误数量确定模块363与上述BCH码R(X)的每个码位依次向右移1位对应地,基于上述伴随值生成模块361计算的伴随值确定在该移位下该BCH码中的第一错误数量,并且基于上述修改伴随值生成模块362计算的修改的伴随值确定在该移位下该BCH码中的第二错误数量。根据本发明的一种实施方式,可以利用DSP编程实现错误数量确定模块363。根据本发明的另一种实施方式,错误数量确定模块363进一步包括特征向量乘法阵列3631和错误计数器3632,如图3所示。其中,与上述BCH码R(X)的每个码位依次向右移1位对应地,在修改因子生成器3621未被指示生成修改因子的情况下,根据从伴随值生成模块361通过加法阵列3622直接传送来的伴随值针,衫,匆,...,S(V1),特征向量乘法阵列3631根据上表1,并行地实现基于该伴随值的伴随值矩阵Det(Li),Det(L2),Det(L3),...,Det(Lt)的计算,并且根据上式(7),这些伴随值矩阵Det(Li),Det(L2),Det(L3),...,Det(Lt)的值形成了错误特征向量V,即V={Det(Li),Det(L2),Det(L3),...,Det(Lt)}。此外,错误计数器3632基于该错误特征向量V,根据上式(8)确定在该移位下基于上述伴随值对,衫M,…,殆的第一错误数量。另一方面,在修改因子生成器3621被指示生成修改因子的情况下,根据从加法阵列3622传送来的修改的伴随值,特征向量乘法阵列3631根据上表1,并行地实现基于该修改的伴随值的伴随值矩阵Det(Li),Det(L2),Det(L3),...,Det(Lt)的计算,并且根据上式(7),这些伴随值矩阵Det(Li),Det(L2),Det(L3),...,Det(Lt)的值形成了错误特征向量V,即V={Det(Li),Det(L2),Det(L3),...,Det(Lt)}。此外,错误计数器3632基于该错误特征向量V,根据上式(8)确定在该移位下基于上述修改的伴随值的第二错误数量。图4示出了t=4的情况下特征向量乘法阵列3631的具体实现。返回到图3,纠错模块364与上述BCH码R(X)的每个码位依次向右移1位对应地,根据上述第二错误数量是否比上述第一错误数量减少1,确定该BCH码R(X)在该移位下当前的最右位是否包含错误。并且,在确定当前的最右位包含错误的情况下,纠错模块364指示对该当前的最右位进行校正,以将其变为相反值。下面以一种实施方式为例,示意性地说明BCH码纠错部分36的工作过程,其主要包括以下(1)、⑵两个阶段。阶段(1)在修改伴随值生成模块362不工作,即其中的修改因子生成器3621不被指示生成修改因子的情况下,确定上述BCH码R(X)中的错误的数量EN。该阶段的具体过程如下。首先,设定Len=n,其中η表示该BCH码R(X)的位长度,而Len表示BCH码R(X)的当前位的位置。接着,伴随值生成模块361生成与BCH码R(X)向右移位j=n-Len位(在阶段(1)中还未移位)的情况相应的伴随值对,衫,衫,...,吆,-,),并且这些伴随值通过修改伴随值生成模块362中的加法阵列3622直接被输入到错误数量确定模块363。错误数量确定模块363中的乘法阵列3631根据伴随值针,匆,匆,...,,计算伴随值矩阵Det(L(),Det{L{),Det(Li),...,Det(Lj)的值,并且这些伴随值矩阵Det(Li),Det(Lj2),Det(Li),...,的值形成错误特征向量V,被传输到错误计数器3632。错误计数器3632基于错误特征向量V,根据上式(8)确定错误的数量Ne(第一错误数量),并传输到纠错模块364。在纠错模块364中,如果确定错误的数量Nem,超过了t,则输出Fail信号,以表示纠错失败。如果错误的数量未超过t,则记录错误的数量EN=NCTra。阶段(2)在修改伴随值生成模块362工作,即其中的修改因子生成器3621被指示生成修改因子的情况下,依次对BCH码R(X)中的各位进行检错、纠错。该阶段的具体过程如下。首先,伴随值生成模块361生成与BCH码R(X)向右移位j=n-Len位的情况相应的伴随值訂,衫,W,...,硌M)。接着,修改伴随值生成模块362中的修改因子生成器3621生成与BCH码R(X)向右移位j=n-Len位的情况相应的修改因子M/,M/,M/,...,Md)。并且,由伴随值生成模块361生成的伴随值对,匀,匆,...,\iM)和由修改因子生成器3621生成的修改因子,MiMi,-,M^,在加法阵列3622处被分别相加,从而得到修改的伴随值。这些修改的伴随值被输入到错误数量确定模块363。错误数量确定模块363中的乘法阵列3631根据修改的伴随值,计算伴随值矩阵Det{L[),DetiU1),DetilJi),...,Detm)的值,并且这些伴随值矩阵Det(Li),Det(L{),Det{L'3),…,/^⑷)的值形成错误特征向量V,被传输到错误计数器3632。错误计数器3632基于错误特征向量V,根据上式(8)确定错误的数量Ne(第二错误数量),并传输到纠错模块364。在纠错模块364中,如果确定错误的数量Nemff(第二错误数量)比纠错模块364中已经记录的错误数量EN(第一错误数量)减少1,则表明该BCH码R(X)中的当前第j位(相当于BCH码R(X)向右移位j次后当前的最右位)存在错误。从而,纠错模块364通过加法器37修正R(X)中的该第j位,使其0—1或1—0。另一方面,在纠错模块364中,设定EN=EN-I,Len=Len-Ι,并且发出Ec信号,以表明已经发现并纠正了第j位的错误。此时,伴随值生成模块361在纠错模块364发出了Ec信号之后,重新生成与BCH码R(X)向右移位j位的情况相应的伴随值訂,匀,W,...,S/2I_]},修改伴随值生成模块362中的修改因子生成器3621重新生成相应的修改因子M/,Mi,Mi,...,M(V1)。需要说明的是,伴随值生成模块361重新生成伴随值对,衫,衫,场,…的过程可以通过在伴随值生成模块361中将针对前一次移位生成的伴随值向右移1位并且左端空出的位用0填充来实现。修改因子生成器3621重新生成相应的修改因子W/,M/,Mi,...,^(Vi)的过程则可以通过在该修改因子生成器3621中将针对前一次移位生成的修改因子向右移1位并且左端空出的位用1填充来实现。接着,由伴随值生成模块361重新生成的伴随值对,匆,衫,...,%_,)和由修改因子生成器3621重新生成的修改因子M/,M3',Mi,-.,M^0,在加法阵列3622处被分别相加,从而得到与此时的移位j=n-Len相应的修改的伴随值。错误数量确定模块363中的特征向量乘法阵列3631则根据这些修改的伴随值计算相应的伴随值矩阵&収丨),Det(L12),Det(Li),...,伪私/)的值,以形成错误特征向量V。错误计数器3632根据错误特征向量V,确定错误的数量Nemff(第二错误数量),并传输到纠错模块364。在纠错模块364中,判断错误的数量Nemff是否比已经记录的错误数量EN(第一错误数量)减少1,以确定该BCH码R(X)的当前第j位是否存在错误。并在减少1、即存在错误的情况下,对该第j位进行校正。可以理解,对于BCH码R(X)中的后续的各位,上述阶段(2)将重复执行到错误数量EN等于0为止。以上就是对本实施例的基于BCH码的多位错纠错装置的详细描述。其中,该装置30及其各个组成部分,可以由专用的电路或芯片构成,也可以通过计算机(处理器)执行相应的程序来实现。本发明还提供一种存储系统。图5是根据本发明实施例的存储系统的框图。如图5所示,本实施例的存储系统50包括上述基于BCH码的多位错纠错装置30。此外,需要说明的是,本发明的基于BCH码的多位错纠错方法和装置不仅能够应用于存储系统,而且对于任何需要基于BCH码来进行多位错纠错的领域都是可以应用的。以上虽然通过一些示例性的实施例对本发明的基于BCH码的多位错纠错方法和装置以及存储系统进行了详细的描述,但是以上这些实施例并不是穷举的,本领域技术人员可以在本发明的精神和范围内实现各种变化和修改。因此,本发明并不限于这些实施例,本发明的范围仅以所附权利要求为准。权利要求一种基于BCH码的多位错纠错方法,包括对要进行纠错的BCH码做如下循环操作将该BCH码的每个码位依次向右移1位,右移后的BCH码不足的位用0填补;计算上述BCH码的与该移位相应的伴随值;基于上述BCH码的与该移位相应的伴随值,确定在该移位下该BCH码中的第一错误数量;在上述第一错误数量不等于0的情况下计算上述BCH码的与该移位相应的修改的伴随值,其中上述修改的伴随值是上述BCH码在该移位下当前的最右位变为相反值的情况下的伴随值;基于上述BCH码的与该移位相应的修改的伴随值,确定在该移位下该BCH码中的第二错误数量;以及根据上述第二错误数量是否比上述第一错误数量减少1,确定上述BCH码在该移位下当前的最右位是否包含错误。2.根据权利要求1所述的方法,其中基于上述BCH码的与该移位相应的伴随值,确定在该移位下该BCH码中的第一错误数量的步骤进一步包括根据下表和下式,计算基于上述伴随值的错误特征向量<table>tableseeoriginaldocumentpage2</column></row><table>其中j表示上述BCH码的当前移位数,《表示上述BCH码的与该移位相应的伴随值矩阵,det(g)是用于求取该伴随值矩阵%的行列式的值的函数,&表示与该移位相应的伴随值,Vj表示错误特征向量,t表示一次纠错处理的纠错数量;以及根据下式,确定在该移位下该BCH码中的第一错误数量<formula>formulaseeoriginaldocumentpage2</formula>其中,表示上述第一错误数量。3.根据权利要求2所述的方法,其中计算上述BCH码的与该移位相应的修改的伴随值的步骤是根据下式执行的<formula>formulaseeoriginaldocumentpage3</formula>其中,_表示修改的伴随值,S/表示上述伴随值,M/是修改因子,并且<formula>formulaseeoriginaldocumentpage3</formula>,P(χ)是与上述BCH码的生成多项式相关的本原多项式。4.根据权利要求3所述的方法,其中基于上述BCH码的与该移位相应的修改的伴随值,确定在该移位下该BCH码中的第二错误数量的步骤进一步包括计算基于上述修改的伴随值的错误特征向量;以及基于上述错误特征向量,确定在该移位下该BCH码中的第二错误数量。5.根据权利要求4所述的方法,其中根据上述第二错误数量是否比上述第一错误数量减少1,确定上述BCH码在该移位下当前的最右位是否包含错误的步骤进一步包括如果上述第二错误数量比上述第一错误数量减少1,则确定上述BCH码在该移位下当前的最右位存在错误;以及对上述当前的最右位进行校正,以将其变为相反值。6.一种基于BCH码的多位错纠错装置,包括伴随值生成模块,用于将要进行纠错的BCH码的每个码位依次向右移1位,右移后的BCH码不足的位用O填补,计算该BCH码的与该移位相应的伴随值;修改伴随值生成模块,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,计算上述BCH码的与该移位相应的修改的伴随值,其中上述修改的伴随值是上述BCH码在该移位下当前的最右位变为相反值的情况下的伴随值;错误数量确定模块,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,基于上述伴随值生成模块计算的伴随值确定在该移位下该BCH码中的第一错误数量,并且基于上述修改伴随值生成模块计算的修改的伴随值确定在该移位下该BCH码中的第二错误数量;以及纠错模块,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,根据上述第二错误数量是否比上述第一错误数量减少1,确定上述BCH码在该移位下当前的最右位是否包含错误。7.根据权利要求6所述的装置,其中上述修改伴随值生成模块进一步包括修改因子生成器,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,根据下式生成用于对上述伴随值生成模块计算的伴随值进行修改的修改因子<formula>formulaseeoriginaldocumentpage3</formula>其中M/是修改因子,j表示上述BCH码的当前移位数,ρ(χ)是与该BCH码的生成多项式相关的本原多项式;以及加法阵列,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,根据下式将上述伴随值生成模块计算的伴随值与上述修改因子生成器生成的修改因子进行相加,以生成修改的伴随值<formula>formulaseeoriginaldocumentpage3</formula>其中,<formula>formulaseeoriginaldocumentpage3</formula>.表示修改的伴随值,S/表示上述伴随值生成模块计算的伴随值。8.根据权利要求7所述的装置,其中上述错误数量确定模块进一步包括特征向量乘法阵列,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,根据下表和下式,基于来自上述加法阵列的输入,计算错误特征向量<table>tableseeoriginaldocumentpage4</column></row><table>其中4表示上述BCH码的与该移位相应的伴随值矩阵,是用于求取该伴随值矩阵仏的行列式的值的函数,Vj表示错误特征向量,t表示一次纠错处理的纠错数量;以及错误计数器,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,根据上述错误特征向量,确定错误数量<formula>formulaseeoriginaldocumentpage4</formula>其中,表示错误数量。9.根据权利要求8所述的装置,其中在上述BCH码的每个码位没有依次向右移位的情况下上述修改因子生成器不被启动;上述伴随值生成模块计算的伴随值通过上述加法阵列被直接传输到上述特征向量乘法阵列;上述特征向量乘法阵列根据上述伴随值,计算错误特征向量;以及上述错误计数器根据上述错误特征向量,确定上述BCH码中的错误数量,作为上述第一错误数量。10.根据权利要求9所述的装置,其中在上述BCH码的每个码位依次向右移位数不为O的情况下上述修改因子生成器被启动,以生成用于对上述伴随值生成模块计算的该BCH码的与该移位相应的伴随值进行修改的修改因子;上述加法阵列将上述伴随值生成模块计算的伴随值与上述修改因子生成器生成的修改因子进行相加,以生成修改的伴随值;上述特征向量乘法阵列根据上述修改的伴随值,计算错误特征向量;上述错误计数器根据上述错误特征向量确定错误数量,作为第二错误数量。11.根据权利要求6-10中的任意一项所述的装置,其中上述纠错模块与上述BCH码的各次移位对应地,判断上述第二错误数量是否比上述第一错误数量减少1,如果是,则确定上述BCH码在该移位下当前的最右位存在错误;指示对上述当前的最右位进行校正,以将其变为相反值。12.根据权利要求6-10中的任意一项所述的装置,其中在上述BCH码的每个码位向右依次移位数不为0的情况下上述伴随值生成模块通过将与上述BCH码的前一次移位对应地计算的伴随值向右移1位并且左端的位用0填充,生成与该移位相应的伴随值;上述修改因子生成器通过将与上述BCH码的前一次移位对应地生成的修改因子向右移1位并且左端的位用1填充,生成与该移位相应的修改因子。13.根据权利要求6-10中的任意一项所述的装置,其中上述伴随值生成模块和上述修改因子生成器均利用移位寄存器和XOR门实现。14.一种存储系统,包括上述权利要求6-13中的任意一项所述的基于BCH码的多位错纠错装置。全文摘要本发明提供一种基于BCH码的多位错纠错方法和装置。该方法包括对要进行纠错的BCH码做如下循环操作将该BCH码的每个码位依次向右移1位,右移后的BCH码不足的位用0填补;计算BCH码的与该移位相应的伴随值;基于与该移位相应的伴随值,确定在该移位下该BCH码中的第一错误数量;在上述第一错误数量不等于0的情况下计算BCH码的与该移位相应的修改的伴随值,其中该修改的伴随值是BCH码在该移位下当前最右位变为相反值的情况下的伴随值;基于修改的伴随值,确定在该移位下该BCH码中的第二错误数量;以及根据第二错误数量是否比第一错误数量减少1,确定BCH码在该移位下当前的最右位是否包含错误。文档编号H03M13/15GK101814922SQ20091000739公开日2010年8月25日申请日期2009年2月23日优先权日2009年2月23日发明者李宇飞,杨浩,汪翼,陆泳申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1