CN101814922B - 基于bch码的多位错纠错方法和装置以及存储系统 - Google Patents

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

Info

Publication number
CN101814922B
CN101814922B CN2009100073923A CN200910007392A CN101814922B CN 101814922 B CN101814922 B CN 101814922B CN 2009100073923 A CN2009100073923 A CN 2009100073923A CN 200910007392 A CN200910007392 A CN 200910007392A CN 101814922 B CN101814922 B CN 101814922B
Authority
CN
China
Prior art keywords
mentioned
value
bch code
following
displacement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2009100073923A
Other languages
English (en)
Other versions
CN101814922A (zh
Inventor
李宇飞
陆泳
杨浩
汪翼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN2009100073923A priority Critical patent/CN101814922B/zh
Priority to US12/704,231 priority patent/US8402352B2/en
Publication of CN101814922A publication Critical patent/CN101814922A/zh
Priority to US13/588,700 priority patent/US9037953B2/en
Application granted granted Critical
Publication of CN101814922B publication Critical patent/CN101814922B/zh
Priority to US14/685,019 priority patent/US9450615B2/en
Priority to US15/240,648 priority patent/US10243589B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1525Determination and particular use of error location polynomials
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1565Decoding beyond the bounded minimum distance [BMD]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/17Burst error correction, e.g. error trapping, Fire codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Abstract

本发明提供一种基于BCH码的多位错纠错方法和装置。该方法包括:对要进行纠错的BCH码做如下循环操作:将该BCH码的每个码位依次向右移1位,右移后的BCH码不足的位用0填补;计算BCH码的与该移位相应的伴随值;基于与该移位相应的伴随值,确定在该移位下该BCH码中的第一错误数量;在上述第一错误数量不等于0的情况下:计算BCH码的与该移位相应的修改的伴随值,其中该修改的伴随值是BCH码在该移位下当前最右位变为相反值的情况下的伴随值;基于修改的伴随值,确定在该移位下该BCH码中的第二错误数量;以及根据第二错误数量是否比第一错误数量减少1,确定BCH码在该移位下当前的最右位是否包含错误。

Description

基于BCH码的多位错纠错方法和装置以及存储系统
技术领域
本发明涉及信息技术领域,具体地,涉及基于BCH码的多位错纠错方法和装置以及存储系统。
背景技术
随着半导体技术的发展,人们已经能够在单个芯片上构建数亿个晶体管。这对于存储器系统来说,允许存储器系统的小型化。但是,同时,这也对存储器系统的可靠性带来了挑战。
在存储器系统的设计中,广泛引入冗余位来确保高级别的可靠性。通常,在存储器系统中,通过在存储数据时,对数据进行某种方式的编码来添加冗余位。另一方面,在读取数据时,对数据进行相应方式的解码,并且在解码过程中利用冗余位来进行纠错。
传统上,一位错纠错一直以来是存储器系统中的主要技术。在这样的技术中,一次纠错处理只能够对所处理的数据纠错一位。但是,随着存储器系统的不断小型化以及存储容量的不断扩大,位错误的出现频率随之增加。
例如,对于能够以较低的硅成本存储大量数据的NAND闪存而言,多级单元(Multi-Level Cell,MLC)技术能够将NAND闪存中每个单元的位存储容量增加到两倍,同时降低总电路尺寸。但是,与标准的二级单元(Binary-Level Cell,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-1的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)为αi的最小多项式,找到F1(x)、F3(x)、...、F2t-1(x)。
3)再次,g(x)是F1(x)、F3(x)、...、F2t-1(x)的最小公倍数(least commonmultiple,LCM),写作为:
g(x)=LCM[F1(x),F3(x),...,F2t-1(x)]        (1)
利用该生成多项式g(x),BCH码的编码过程可以表示为:
C(x)=I(x)g(x)=(i0+i1x+…+ikxk)g(x)=c0+c1x+…+cn-1xn-1  (2)其中,I(x)是与要进行编码的信息码有关的信息多项式,其长度是k,C(x)表示所得到的BCH码。生成多项式g(x)由Galois域上的本原元素乘积产生。通常本原元素对应一个质数。例如F1(x)=x2+1(质数5),F3(x)=x2+x+1(质数7),g(x)=F1(x)×F3(x)=x4+x3+x+1。
例如,如果要对信息码(1,1,0,0,1,1,0)进行BCH编码,则将该信息码的信息多项式写作为:
I(x)=x+x2+x5+x6      (3)
并且设定n=24-1,从而利用式(2)对上述信息码进行编码,可得到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(x)是原始的BCH码,则在解码前所获取的、包含了错误的BCH码可以描述为:
R(x)=C(x)+E(x)=r0+r1x+…+rn-1xn-1   (4)
对于该BCH码R(x),可以根据下式(4)计算其相应的伴随值(syndromevalue):
S i ( α ) = Mod [ R ( x ) / p ( x ) ] | x = α i = s i , 0 + s i , 1 α + · · · + s i , m - 1 α m - 1 , i = 1,3 , · · · , 2 t - 1 - - - ( 5 )
其中,Mod表示取模运算,p(x)如前所述是与生成多项式g(x)相关的本原多项式,α是本原元素。
上述伴随值可以利用2004年在“Publishing House of ElectronicsIndustry”杂志上刊登的文章“The Theory of Information and Coding:Second Edition”中公开的伴随值生成器来计算。
此外,根据上述伴随值,可以确定所获取的BCH码R(x)中错误的位置。具体地,参照1965年10月在IEEE Trans的“On Information Theory”(vo1.IT-11,no.4,pp.580-585)上刊登的文章“Step-by-step Decoding of theBose-Chaudhuri-Hocquenghem Codes”、1993年在IEEE Trans的“OnCircuits and System for Video Technology”(vol.3,no.2,pp.138-147)上刊登的文章“A high-speed real-time binary BCH decoder”以及2005年在“China Machine Press”上刊登的文章“Information Theory,Coding andCryptography”,在错误的位置与伴随值之间存在两个重要的关系。在此,分别表示为下面的定理1和定理2。
定理1:
对于任意的整数j≥0,定义 S i j ( x ) = Mod { [ x j R ( x j ) ] / p ( x ) } , i = 1,3 , . . . , 2 t - 1 为是与BCH码R(x)的每个码位依次向右移j位后计算得到的伴随值,R(x)右移后不足的位用0填补。并且,对于j≥0, S i j + 1 ( x ) = Mod { [ x S i j ( x ) ] / p ( x ) } .
定理2:
对于BCH码(n,m,t),定义伴随值矩阵Lp j,p=1,2,…,t如下:
L p j = S 1 j 1 0 · · · 0 S 3 j S 2 j S 1 j · · · 0 · · · · · · · · · · · · · · · S 2 p - 1 j S 2 p - 2 j S 2 p - 3 j · · · S p j - - - ( 6 )
其中,p表示错误的数量。所谓错误的数量,是以位为单位,表示产生了错误的位的数量。
根据用于求取上述伴随值矩阵Lp j的行列式的值的函数det(Lp j),能够确定与R(x)每个码位依次向右移j位,右移后不足的位用0填补的情况相应的错误特征向量V。
基于上述内容,本发明的发明人们提出了一种新的基于BCH码的多位错纠错理论。下面对其进行详细描述。
本发明的基于BCH码的多位错纠错理论
为了容易参考,在本发明中,对于错误的数量p=1,2,3,4的情况,归纳det(Lp j)如下:
表1
  p   det(Lp j)
  1   S1 j
  2   S1 j3+S3 j
  3   S1 j6+S1 j3S3 j+S1 jS5 j+S3 j2
  4   S1 j10+S1 j7S3 j+S1 j5S5 j+S1 j3S7 j+S1 j2S3 jS5 j+S1 jS3 j3+S3 jS7 j+S5 j2
其中,Si j是与R(x)每个码位依次向右移j位,右移后不足的位用0填补的情况相应的伴随值。
根据上面表1的内容,与R(x)每个码位依次向右移j位,右移后不足的位用0填补的情况相应的错误特征向量Vj定义如下:
Figure G2009100073923D00071
根据上式(6)中的错误特征向量Vj,能够容易地确定与R(x)每个码位依次向右移j位,右移后不足的位用0填补的情况对应的错误的数量。基本的判定规则如下:
Figure G2009100073923D00072
Figure G2009100073923D00073
Figure G2009100073923D00075
其中,Nerror表示根据上述判定规则所确定的错误的数量。
在本发明中,定义修改的伴随值Si j(x)。
具体地,假设在要进行纠错的BCH码R(x)中,在第j位的位置产生了错误,其错误模式表达为xj,则修改的伴随值Si j(x)为:
S i j ( x ) ‾ = Mod [ ( R ( x ) + x j ) / p ( x ) ] | x = α i = Mod [ R ( x ) / p ( x ) ] | x = α i + Mod [ x j / p ( x ) ] | x = α i = S i j ( x ) + M i j - - - ( 9 )
其中,
M i j = Mod [ x j / p ( x ) ] | x = α i - - - ( 10 ) ,
其中,Mi j称为修改因子(MF),Si j是与R(x)每个码位依次向右移j位,右移后不足的位用0填补的情况相应的伴随值,p(x)如前所述是与生成多项式g(x)相关的本原多项式。
这样,对于所获取的BCH码R(x)的每个码位依次向右移位j次并且移位后不足的位用0填补的情况,通过计算相应的伴随值Si j、基于该伴随值的错误特征向量Vj,以及修改的伴随值Si j(x)、进而基于该修改的伴随值的错误特征向量Vj,能够确定在错误特征向量Vj和Vj的情况下错误的数量Nerror是否发生变化,来确定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(x)是否能够被生成多项式g(x)整除。并且,如果能够整除,则该过程转到步骤270,否则执行下面的步骤210-265的纠错过程。
也就是说,对于BCH码这样的循环码来说,任一码字C(x)都应该能够被其相应的生成多项式g(x)整除。所以,在接收端可以使所接收的码字R(x)与其相应的生成多项式g(x)相除。若在传输中未发生错误,则接收码字R(x)与发送码字C(x)相同,故接收码字R(x)必定能够被其相应的生成多项式g(x)整除;若在传输中发生了错误,则接收码字R(x)被相应的生成多项式g(x)除时,可能会除不尽而有余项。因此,可根据余项是否为零来确定所接收的BCH码R(x)中有无错误。
在步骤210,设置j=0,Nerror=0。其中,j表示BCH码R(x)的每个码位依次向右移的移位数,Nerror表示错误的数量。
在步骤215,对于BCH码R(x),根据上式(5)和(10),计算伴随值Si j和修改因子Mi j,i=1,3,...,2t-1。其中,t是一次纠错处理能够纠错的个数。
在步骤220,根据表1和上式(6),计算基于伴随值Si j的错误特征向量Vj
在步骤225,判断是否错误特征向量Vj=Q0,其中根据上式(7),
Figure G2009100073923D00091
在该步骤中,如果错误特征向量Vj=Q0,则表明该BCH码R(x)中不再有错误,从而转到步骤265;否则,前进到步骤230。
在步骤230,根据上式(7),基于错误特征向量Vj确定Qk,并且设定错误的数量Nerror=k。
在步骤235,根据上式(9),基于伴随值Si j和修改因子Mi j,计算修改的伴随值Si j(x)。
在步骤240,用修改的伴随值Si j(x)替代伴随值Si j来计算基于修改的伴随值Si j(x)的错误特征向量Vj
在步骤245,判断是否错误特征向量Vj=Qk-1,即判断错误特征向量Vj的情况下的错误的数量Nerror是否比错误特征向量Vj的情况下的错误数量Nerror减少1。如果是,则能够确定该BCH码R(x)中的第j位是产生了错误的位,从而前进到步骤250;否则,转到步骤255。
也就是说,在本实施例中,对于R(x)中的第j位,首先在该位的值不变的情况下计算相应的错误特征向量Vj,进而基于该错误特征向量Vj来确定此时R(x)中的错误的数量Nerror;然后假设该第j位包含了错误,从而求取将该第j位变换为相反值(即1变为0,0变为1)的情况下的修改的伴随值Si j(x),来计算基于修改的伴随值Si j(x)的错误特征向量Vj,进而基于该错误特征向量Vj来确定此时R(x)中的错误的数量Nerror;并且,通过比较两次计算所得到的错误的数量Nerror与Nerror是否相等,来确定该第j位是否是产生了错误的位。
在步骤250,将BCH码R(x)中的第j位(相当于BCH码R(x)每个码位向右移j位,右移后不足的位用0填补后当前的最右位)的值rj校正,即对rj求反,例如,如果rj为0,则求反后变为1。
在步骤255,判断是否j=n并且Vj=Q0,其中n是BCH码R(x)的码长度。如果是,则纠错完毕,获得了纠错后的BCH码R(x),从而转到步骤270,否则,前进到步骤260。
在步骤260,判断是否j=n并且Vj≠Q0。如果是,则纠错失败,该过程结束,否则,前进到步骤265。
也就是说,如果j=n并且Vj≠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(First In First Out,先进先出)缓冲器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)进行解码,以获得其中的信息码。另一方面,如果确定R(x)不能够被生成多项式g(x)整除,则该解码FIR滤波器33发出“Error Find”信号,以指示在BCH码R(x)中发现了错误。
本领域技术人员能够理解,解码FIR滤波器33可以根据本领域的现有技术,利用FIR滤波器来实现。更具体地,该FIR滤波器可以用通常的移位寄存器和XOR门来实现。
接着,串-并转换模块34对由解码FIR滤波器33解码后所获得的信息码进行串-并转换,并将串-并转换后的信息码输出到FIFO缓冲器35中。
FIFO缓冲器35缓存从串-并转换模块34接收的信息码,以待传输到外部。
此外,BCH码纠错部分36,在解码FIR滤波器33发出“Error Find”信号时被启动,其用于对解码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),计算与该移位相应的伴随值S1 j,S3 j,S5 j,...,S(2t-1) j。其中,t是一次多位错纠错处理能够纠错的个数,j表示BCH码R(x)的当前移位数。
根据本发明的另一种实施方式,伴随值生成模块361可以根据2004年在“Publishing House of Electronics Industry”杂志上刊登的文章“TheTheory of Information and Coding:Second Edition”中公开的伴随值生成器,利用FIR滤波器来实现。更具体地,该FIR滤波器可以用通常的移位寄存器和XOR门来实现。
修改伴随值生成模块362与要进行纠错的BCH码R(x)的每个码位依次向右移1位对应地,计算该BCH码R(x)的与该移位相应的修改的伴随值,其中该修改的伴随值是BCH码R(x)在该移位下当前的最右位变为相反值的情况下的伴随值。
根据本发明的一种实施方式,可以利用DSP编程实现修改伴随值生成模块362。
根据本发明的另一种实施方式,修改伴随值生成模块362进一步包括修改因子生成器3621和加法阵列3622,如图3所示。
其中,修改因子生成器3621与上述BCH码R(x)的每个码位依次向右移1位对应地,根据指示,根据上式(10),生成修改因子M1 j,M3 j,M5 j,...,M(2t-1) j,这些修改因子用于修改由伴随值生成模块361生成的伴随值S1 j,S3 j,S5 j,...,S(2t-1) j
该修改因子生成器3621可以利用FIR滤波器来实现。更具体地,该FIR滤波器可以用通常的移位寄存器和XOR门来实现。
加法阵列3622在修改因子生成器3621被指示生成修改因子的情况下,根据上式(9),将伴随值生成模块361生成的伴随值S1 j,S3 j,S5 j,...,S(2t-1) j和修改因子生成器3621生成的修改因子M1 j,M3 j,M5 j,...,M(2t-1) j分别相加,从而得到修改的伴随值,该修改的伴随值是上述BCH码R(x)在该移位下当前的最右位变为相反值的情况下的伴随值。并且,这些修改的伴随值被输入到错误数量确定模块363。
另一方面,在修改因子生成器3621未被指示生成修改因子的情况下,由伴随值生成模块361生成的伴随值S1 j,S3 j,S5 j,...,S(2t-1) j不被修改因子修改,而直接通过加法阵列3622被输入到错误数量确定模块363。
错误数量确定模块363与上述BCH码R(x)的每个码位依次向右移1位对应地,基于上述伴随值生成模块361计算的伴随值确定在该移位下该BCH码中的第一错误数量,并且基于上述修改伴随值生成模块362计算的修改的伴随值确定在该移位下该BCH码中的第二错误数量。
根据本发明的一种实施方式,可以利用DSP编程实现错误数量确定模块363。
根据本发明的另一种实施方式,错误数量确定模块363进一步包括特征向量乘法阵列3631和错误计数器3632,如图3所示。
其中,与上述BCH码R(x)的每个码位依次向右移1位对应地,在修改因子生成器3621未被指示生成修改因子的情况下,根据从伴随值生成模块361通过加法阵列3622直接传送来的伴随值S1 j,S3 j,S5 j,...,S(2t-1) j,特征向量乘法阵列3631根据上表1,并行地实现基于该伴随值的伴随值矩阵Det(L1),Det(L2),Det(L3),...,Det(Lt)的计算,并且根据上式(7),这些伴随值矩阵Det(L1),Det(L2),Det(L3),...,Det(Lt)的值形成了错误特征向量V,即V={Det(L1),Det(L2),Det(L3),...,Det(Lt)}。此外,错误计数器3632基于该错误特征向量V,根据上式(8)确定在该移位下基于上述伴随值S1 j,S3 j,S5 j,...,S(2t-1) j的第一错误数量。
另一方面,在修改因子生成器3621被指示生成修改因子的情况下,根据从加法阵列3622传送来的修改的伴随值,特征向量乘法阵列3631根据上表1,并行地实现基于该修改的伴随值的伴随值矩阵Det(L1),Det(L2),Det(L3),...,Det(Lt)的计算,并且根据上式(7),这些伴随值矩阵Det(L1),Det(L2),Det(L3),...,Det(Lt)的值形成了错误特征向量V,即V={Det(L1),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)、(2)两个阶段。
阶段(1):在修改伴随值生成模块362不工作,即其中的修改因子生成器3621不被指示生成修改因子的情况下,确定上述BCH码R(x)中的错误的数量EN。该阶段的具体过程如下。
首先,设定Len=n,其中n表示该BCH码R(x)的位长度,而Len表示BCH码R(x)的当前位的位置。
接着,伴随值生成模块361生成与BCH码R(x)向右移位j=n-Len位(在阶段(1)中还未移位)的情况相应的伴随值S1 j,S3 j,S5 j,...,S(2t-1) j,并且这些伴随值通过修改伴随值生成模块362中的加法阵列3622直接被输入到错误数量确定模块363。
错误数量确定模块363中的乘法阵列3631根据伴随值S1 j,S3 j,S5 j,...,S(2t-1) j,计算伴随值矩阵Det(L1 j),Det(L2 j),Det(L3 j),...,Det(Lt j)的值,并且这些伴随值矩阵Det(L1 j),Det(L2 j),Det(L3 j),...,Det(Lt j)的值形成错误特征向量V,被传输到错误计数器3632。
错误计数器3632基于错误特征向量V,根据上式(8)确定错误的数量Nerror(第一错误数量),并传输到纠错模块364。
在纠错模块364中,如果确定错误的数量Nerror超过了t,则输出Fail信号,以表示纠错失败。如果错误的数量Nerror未超过t,则记录错误的数量EN=Nerror
阶段(2):在修改伴随值生成模块362工作,即其中的修改因子生成器3621被指示生成修改因子的情况下,依次对BCH码R(x)中的各位进行检错、纠错。该阶段的具体过程如下。
首先,伴随值生成模块361生成与BCH码R(x)向右移位j=n-Len位的情况相应的伴随值S1 j,S3 j,S5 j,...,S(2t-1) j
接着,修改伴随值生成模块362中的修改因子生成器3621生成与BCH码R(x)向右移位j=n-Len位的情况相应的修改因子M1 j,M3 j,M5 j,...,M(2t-1) j
并且,由伴随值生成模块361生成的伴随值S1 j,S3 j,S5 j,...,S(2t-1) j和由修改因子生成器3621生成的修改因子M1 j,M3 j,M5 j,...,M(2t-1) j,在加法阵列3622处被分别相加,从而得到修改的伴随值。这些修改的伴随值被输入到错误数量确定模块363。
错误数量确定模块363中的乘法阵列3631根据修改的伴随值,计算伴随值矩阵Det(L1 j),Det(L2 j),Det(L3 j),...,Det(Lt j)的值,并且这些伴随值矩阵Det(L1 j),Det(L2 j),Det(L3 j),...,Det(Lt j)的值形成错误特征向量V,被传输到错误计数器3632。
错误计数器3632基于错误特征向量V,根据上式(8)确定错误的数量Nerror(第二错误数量),并传输到纠错模块364。
在纠错模块364中,如果确定错误的数量Nerror(第二错误数量)比纠错模块364中已经记录的错误数量EN(第一错误数量)减少1,则表明该BCH码R(x)中的当前第j位(相当于BCH码R(x)向右移位j次后当前的最右位)存在错误。从而,纠错模块364通过加法器37修正R(x)中的该第j位,使其0→1或1→0。
另一方面,在纠错模块364中,设定EN=EN-1,Len=Len-1,并且发出Ec信号,以表明已经发现并纠正了第j位的错误。
此时,伴随值生成模块361在纠错模块364发出了Ec信号之后,重新生成与BCH码R(x)向右移位j位的情况相应的伴随值S1 j,S3 j,S5 j,...,S(2t-1) j,修改伴随值生成模块362中的修改因子生成器3621重新生成相应的修改因子M1 j,M3 j,M5 j,...,M(2t-1) j
需要说明的是,伴随值生成模块361重新生成伴随值S1 j,S3 j,S5 j,...,S(2t-1) j的过程可以通过在伴随值生成模块361中将针对前一次移位生成的伴随值向右移1位并且左端空出的位用0填充来实现。修改因子生成器3621重新生成相应的修改因子M1 j,M3 j,M5 j,...,M(2t-1) j的过程则可以通过在该修改因子生成器3621中将针对前一次移位生成的修改因子向右移1位并且左端空出的位用1填充来实现。
接着,由伴随值生成模块361重新生成的伴随值S1 j,S3 j,S5 j,...,S(2t-1) j和由修改因子生成器3621重新生成的修改因子M1 j,M3 j,M5 j,...,M(2t-1) j,在加法阵列3622处被分别相加,从而得到与此时的移位j=n-Len相应的修改的伴随值。
错误数量确定模块363中的特征向量乘法阵列3631则根据这些修改的伴随值计算相应的伴随值矩阵Det(L1 j),Det(L2 j),Det(L3 j),...,Det(Lt j)的值,以形成错误特征向量V。
错误计数器3632根据错误特征向量V,确定错误的数量Nerror(第二错误数量),并传输到纠错模块364。
在纠错模块364中,判断错误的数量Nerror是否比已经记录的错误数量EN(第一错误数量)减少1,以确定该BCH码R(x)的当前第j位是否存在错误。并在减少1、即存在错误的情况下,对该第j位进行校正。
可以理解,对于BCH码R(x)中的后续的各位,上述阶段(2)将重复执行到错误数量EN等于0为止。
以上就是对本实施例的基于BCH码的多位错纠错装置的详细描述。其中,该装置30及其各个组成部分,可以由专用的电路或芯片构成,也可以通过计算机(处理器)执行相应的程序来实现。
本发明还提供一种存储系统。图5是根据本发明实施例的存储系统的框图。如图5所示,本实施例的存储系统50包括上述基于BCH码的多位错纠错装置30。
此外,需要说明的是,本发明的基于BCH码的多位错纠错方法和装置不仅能够应用于存储系统,而且对于任何需要基于BCH码来进行多位错纠错的领域都是可以应用的。
以上虽然通过一些示例性的实施例对本发明的基于BCH码的多位错纠错方法和装置以及存储系统进行了详细的描述,但是以上这些实施例并不是穷举的,本领域技术人员可以在本发明的精神和范围内实现各种变化和修改。因此,本发明并不限于这些实施例,本发明的范围仅以所附权利要求为准。

Claims (14)

1.一种基于BCH码的多位错纠错方法,包括:
对要进行纠错的BCH码做如下(1)-(4)循环操作:
(1)将该BCH码的每个码位依次向右移1位,右移后的BCH码不足的位用0填补;
(2)计算上述BCH码的与该移位相应的伴随值;
(3)基于上述BCH码的与该移位相应的伴随值,确定在该移位下该BCH码中的第一错误数量;
(4)在上述第一错误数量不等于0的情况下:
计算上述BCH码的与该移位相应的修改的伴随值,其中上述修改的伴随值是上述BCH码在该移位下当前的最右位变为相反值的情况下的伴随值;
基于上述BCH码的与该移位相应的修改的伴随值,确定在该移位下该BCH码中的第二错误数量;以及
根据上述第二错误数量是否比上述第一错误数量减少1,确定上述BCH码在该移位下当前的最右位是否包含错误。
2.根据权利要求1所述的方法,其中基于上述BCH码的与该移位相应的伴随值,确定在该移位下该BCH码中的第一错误数量的步骤进一步包括:根据下表和下式,计算基于上述伴随值的错误特征向量:
Figure FSB00000884940900011
V j = ( v 1 j , v 2 j , . . . , v t j ) ,
Figure FSB00000884940900013
其中j表示上述BCH码的当前移位数,
Figure FSB00000884940900021
表示上述BCH码的与该移位相应的伴随值矩阵,
Figure FSB00000884940900022
是用于求取该伴随值矩阵
Figure FSB00000884940900023
的行列式的值的函数,
Figure FSB00000884940900024
表示与该移位相应的伴随值,Vj表示错误特征向量,t表示一次纠错处理的纠错数量;以及
根据下式,确定在该移位下该BCH码中的第一错误数量:
如果Nerror=0,Vj=Q0
如果Nerror=1,Vj=Q1
Figure FSB00000884940900026
如果Nerror=k,Vj=Qk
Figure FSB00000884940900027
如果Nerror=t,Vj=Qt
Figure FSB00000884940900028
其中,Nerror表示上述第一错误数量。
3.根据权利要求2所述的方法,其中计算上述BCH码的与该移位相应的修改的伴随值的步骤是根据下式执行的:
S i j ( x ) ‾ = Mod [ ( R ( x ) + x j ) / p ( x ) ] | x = a i = Mod [ R ( x ) / p ( x ) ] | x = a i + Mod [ x j / p ( x ) ] | x = a i = S i j ( x ) + M i j
其中,
Figure FSB000008849409000210
表示与该移位相应的修改的伴随值,
Figure FSB000008849409000211
表示上述与该移位相应的伴随值,
Figure FSB000008849409000212
是修改因子,并且
Figure FSB000008849409000213
p(x)是与上述BCH码的生成多项式相关的本原多项式。
4.根据权利要求3所述的方法,其中基于上述BCH码的与该移位相应的修改的伴随值,确定在该移位下该BCH码中的第二错误数量的步骤进一步包括:
计算基于上述与该移位相应的修改的伴随值的错误特征向量;以及
基于上述与该移位相应的修改的伴随值的错误特征向量,确定在该移位下该BCH码中的第二错误数量。
5.根据权利要求4所述的方法,其中根据上述第二错误数量是否比上述第一错误数量减少1,确定上述BCH码在该移位下当前的最右位是否包含错误的步骤进一步包括:
如果上述第二错误数量比上述第一错误数量减少1,则:
确定上述BCH码在该移位下当前的最右位存在错误;以及
对上述当前的最右位进行校正,以将其变为相反值。
6.一种基于BCH码的多位错纠错装置,包括:
伴随值生成模块,用于将要进行纠错的BCH码的每个码位依次向右移1位,右移后的BCH码不足的位用0填补,计算该BCH码的与该移位相应的伴随值;
修改伴随值生成模块,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,计算上述BCH码的与该移位相应的修改的伴随值,其中上述与该移位相应的修改的伴随值是上述BCH码在该移位下当前的最右位变为相反值的情况下的与该移位相应的伴随值;
错误数量确定模块,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,基于上述伴随值生成模块计算的与该移位相应的伴随值确定在该移位下该BCH码中的第一错误数量,并且基于上述修改伴随值生成模块计算的与该移位相应的修改的伴随值确定在该移位下该BCH码中的第二错误数量;以及
纠错模块,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,根据上述第二错误数量是否比上述第一错误数量减少1,确定上述BCH码在该移位下当前的最右位是否包含错误。
7.根据权利要求6所述的装置,其中上述与该移位相应的修改伴随值生成模块进一步包括:
修改因子生成器,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,根据下式生成用于对上述伴随值生成模块计算的与该移位相应的伴随值进行修改的修改因子:
M i j = Mod [ x j * p ( x ) ] | x = a i
其中
Figure FSB00000884940900032
是修改因子,j表示上述BCH码的当前移位数,p(x)是与该BCH码的生成多项式相关的本原多项式;以及
加法阵列,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,根据下式将上述伴随值生成模块计算的与该移位相应的伴随值与上述修改因子生成器生成的修改因子进行相加,以生成与该移位相应的修改的伴随值:
S i j ( x ) ‾ = Mod [ ( R ( x ) + x j ) / p ( x ) ] | x = a i = Mod [ R ( x ) / p ( x ) ] | x = a i + Mod [ x j / p ( x ) ] | x = a i = S i j ( x ) + M i j
其中,
Figure FSB00000884940900042
表示与该移位相应的修改的伴随值,
Figure FSB00000884940900043
表示上述伴随值生成模块计算的与该移位相应的伴随值。
8.根据权利要求7所述的装置,其中上述错误数量确定模块进一步包括:
特征向量乘法阵列,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,根据下表和下式,基于来自上述加法阵列的输入,计算错误特征向量:
Figure FSB00000884940900044
V j = ( v 1 j , v 2 j , . . . , v t j ) ,
Figure FSB00000884940900046
其中
Figure FSB00000884940900047
表示上述BCH码的与该移位相应的伴随值矩阵,
Figure FSB00000884940900048
是用于求取该与该移位相应的伴随值矩阵
Figure FSB00000884940900049
的行列式的值的函数,Vj表示错误特征向量,t表示一次纠错处理的纠错数量;以及
错误计数器,用于与要进行纠错的BCH码的每个码位依次向右移1位对应地,根据上述错误特征向量,确定错误数量:
如果Nerror=0,Vj=Q0
Figure FSB000008849409000410
如果Nerror=1,Vj=Q1
Figure FSB000008849409000411
如果Nerror=k,Vj=Qk
Figure FSB000008849409000412
如果Nerror=t,Vj=Qt
Figure FSB000008849409000413
其中,Nerror表示错误数量。
9.根据权利要求8所述的装置,其中在上述BCH码的每个码位没有依次向右移位的情况下:
上述修改因子生成器不被启动;
上述伴随值生成模块计算的与该移位相应的伴随值通过上述加法阵列被直接传输到上述特征向量乘法阵列;
上述特征向量乘法阵列根据上述与该移位相应的伴随值,计算错误特征向量;以及
上述错误计数器根据该错误特征向量,确定上述BCH码中的错误数量,作为上述第一错误数量。
10.根据权利要求9所述的装置,其中在上述BCH码的每个码位依次向右移位数不为0的情况下:
上述修改因子生成器被启动,以生成用于对上述伴随值生成模块计算的该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码的多位错纠错装置。
CN2009100073923A 2009-02-23 2009-02-23 基于bch码的多位错纠错方法和装置以及存储系统 Active CN101814922B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN2009100073923A CN101814922B (zh) 2009-02-23 2009-02-23 基于bch码的多位错纠错方法和装置以及存储系统
US12/704,231 US8402352B2 (en) 2009-02-23 2010-02-11 Multi-bit error correction method and apparatus based on a BCH code and memory system
US13/588,700 US9037953B2 (en) 2009-02-23 2012-08-17 Multi-bit error correction method and apparatus based on a BCH code and memory system
US14/685,019 US9450615B2 (en) 2009-02-23 2015-04-13 Multi-bit error correction method and apparatus based on a BCH code and memory system
US15/240,648 US10243589B2 (en) 2009-02-23 2016-08-18 Multi-bit error correction method and apparatus based on a BCH code and memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100073923A CN101814922B (zh) 2009-02-23 2009-02-23 基于bch码的多位错纠错方法和装置以及存储系统

Publications (2)

Publication Number Publication Date
CN101814922A CN101814922A (zh) 2010-08-25
CN101814922B true CN101814922B (zh) 2013-06-19

Family

ID=42622057

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100073923A Active CN101814922B (zh) 2009-02-23 2009-02-23 基于bch码的多位错纠错方法和装置以及存储系统

Country Status (2)

Country Link
US (4) US8402352B2 (zh)
CN (1) CN101814922B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8539321B2 (en) * 2010-11-10 2013-09-17 Infineon Technologies Ag Apparatus and method for correcting at least one bit error within a coded bit sequence
US8422296B2 (en) 2010-12-22 2013-04-16 HGST Netherlands B.V. Early detection of degradation in NAND flash memory
US8422303B2 (en) 2010-12-22 2013-04-16 HGST Netherlands B.V. Early degradation detection in flash memory using test cells
US8369143B2 (en) 2010-12-22 2013-02-05 HGST Netherlands B.V. Early detection of degradation in NOR flash memory
US8599609B2 (en) 2010-12-22 2013-12-03 HGST Netherlands B.V. Data management in flash memory using probability of charge disturbances
US8649215B2 (en) 2010-12-22 2014-02-11 HGST Netherlands B.V. Data management in flash memory using probability of charge disturbances
CN102298973B (zh) * 2011-06-02 2014-02-26 哈尔滨工业大学 抗辐射故障保护型存储装置及其抗辐射故障保护方法
FR2992504A1 (fr) * 2012-06-26 2013-12-27 Commissariat Energie Atomique Dispositif et procede pour la correction d'erreurs dans un mot de code
US10498362B2 (en) 2016-12-19 2019-12-03 Kabushiki Kaisha Toshiba Low power error correcting code (ECC) system
US10312944B2 (en) 2017-03-17 2019-06-04 Micron Technology, Inc. Error correction code (ECC) operations in memory for providing redundant error correction
US10831596B2 (en) 2018-01-22 2020-11-10 Micron Technology, Inc. Enhanced error correcting code capability using variable logical to physical associations of a data block
US10855314B2 (en) * 2018-02-09 2020-12-01 Micron Technology, Inc. Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords
DE102021109391B3 (de) * 2021-04-14 2022-08-25 Infineon Technologies Ag Multibytefehler-Erkennung
CN113608924A (zh) * 2021-06-29 2021-11-05 航天东方红卫星有限公司 一种小卫星程控数据容错方法
CN114153393A (zh) * 2021-11-29 2022-03-08 山东云海国创云计算装备产业创新中心有限公司 一种数据编码方法、系统、设备以及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487077A (en) * 1994-05-23 1996-01-23 International Business Machines Corporation Location dependent variable error correction processing for multi-track recording media using variable length coding means
CN1247355A (zh) * 1999-07-12 2000-03-15 南京师范大学 群变换方法构成的bch符号编码、解码、多重纠错器件
US6199139B1 (en) * 1998-01-27 2001-03-06 International Business Machines Corporation Refresh period control apparatus and method, and computer
CN101047388A (zh) * 2006-03-30 2007-10-03 富士通株式会社 纠错装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3568148A (en) * 1969-04-02 1971-03-02 Radiation Inc Decoder for error correcting codes
US4107650A (en) * 1976-08-13 1978-08-15 The Johns Hopkins University Error correction encoder and decoder
US4201976A (en) * 1977-12-23 1980-05-06 International Business Machines Corporation Plural channel error correcting methods and means using adaptive reallocation of redundant channels among groups of channels
US4541091A (en) * 1982-06-11 1985-09-10 Hitachi, Ltd. Code error detection and correction method and apparatus
US4754457A (en) * 1986-09-03 1988-06-28 Motorola, Inc. Digital sequence polarity detection with adaptive synchronization
US5068858A (en) * 1989-12-21 1991-11-26 International Business Machines Corporation Error correction capability varied with track location on a magnetic or optical disk
US5157671A (en) 1990-05-29 1992-10-20 Space Systems/Loral, Inc. Semi-systolic architecture for decoding error-correcting codes
US5379305A (en) * 1992-07-20 1995-01-03 Digital Equipment Corporation Error correction system with selectable error correction capabilities
US5654746A (en) * 1994-12-01 1997-08-05 Scientific-Atlanta, Inc. Secure authorization and control method and apparatus for a game delivery service
US5936978A (en) * 1996-12-05 1999-08-10 Telefonaktiebolaget L M Ericsson (Publ) Shortened fire code error-trapping decoding method and apparatus
US6427219B1 (en) * 1998-06-24 2002-07-30 Conexant Systems, Inc. Method and apparatus for detecting and correcting errors using cyclic redundancy check
US6516443B1 (en) * 2000-02-08 2003-02-04 Cirrus Logic, Incorporated Error detection convolution code and post processor for correcting dominant error events of a trellis sequence detector in a sampled amplitude read channel for disk storage systems
US6735737B2 (en) 2000-02-18 2004-05-11 Texas Instruments Incorporated Error correction structures and methods
US7254771B1 (en) 2000-05-23 2007-08-07 Lucent Technologies Inc. Error-erasure decoding of interleaved reed-solomon code
US7103825B2 (en) 2003-08-19 2006-09-05 Mitsubishi Electric Research Laboratories, Inc. Decoding error-correcting codes based on finite geometries
US7162679B2 (en) 2003-12-12 2007-01-09 Analog Devices, Inc. Methods and apparatus for coding and decoding data using Reed-Solomon codes
EP1612949B1 (en) 2004-06-30 2010-04-21 STMicroelectronics Srl Method and system for correcting errors in electronic memory devices
US7788570B1 (en) * 2005-03-23 2010-08-31 Marvell International Ltd. Optimized Reed-Solomon decoder
US8458560B2 (en) * 2008-01-22 2013-06-04 Ciena Corporation Systems and methods for efficient parallel implementation of burst error correction codes
US8261165B2 (en) * 2008-11-14 2012-09-04 Silicon Laboratories Inc. Multi-syndrome error correction circuit

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487077A (en) * 1994-05-23 1996-01-23 International Business Machines Corporation Location dependent variable error correction processing for multi-track recording media using variable length coding means
US6199139B1 (en) * 1998-01-27 2001-03-06 International Business Machines Corporation Refresh period control apparatus and method, and computer
CN1247355A (zh) * 1999-07-12 2000-03-15 南京师范大学 群变换方法构成的bch符号编码、解码、多重纠错器件
CN101047388A (zh) * 2006-03-30 2007-10-03 富士通株式会社 纠错装置

Also Published As

Publication number Publication date
US9037953B2 (en) 2015-05-19
US10243589B2 (en) 2019-03-26
US20150222292A1 (en) 2015-08-06
US20100218068A1 (en) 2010-08-26
CN101814922A (zh) 2010-08-25
US8402352B2 (en) 2013-03-19
US20120311399A1 (en) 2012-12-06
US20160359503A1 (en) 2016-12-08
US9450615B2 (en) 2016-09-20

Similar Documents

Publication Publication Date Title
CN101814922B (zh) 基于bch码的多位错纠错方法和装置以及存储系统
US7956772B2 (en) Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
JP3328093B2 (ja) エラー訂正装置
JPH03136524A (ja) 長バースト誤りに対する誤り検出及び訂正システム
US20080244362A1 (en) Bose-chaudhuri-hocquenghem error correction method and circuit for checking error using error correction encoder
US4473902A (en) Error correcting code processing system
CN101946230B (zh) 用于检测和校正所接收的符号串中的定相突发差错、删除、符号差错和位差错的方法和系统
US7047478B2 (en) Multipurpose method for constructing an error-control code for multilevel memory cells operating with a variable number of storage levels, and multipurpose error-control method using said error-control code
CN101288232B (zh) 对数据进行编码和解码的方法以及设备
CN104393878A (zh) 用于纠正在编码比特序列中的至少单比特错误的设备和方法
US20100198892A1 (en) Parallel residue arithmetic operation unit and parallel residue arithmetic operating method
CN111597072B (zh) 差错控制编码ecc系统及包括ecc系统的存储器设备
Kim et al. Product Reed-Solomon codes for implementing NAND flash controller on FPGA chip
CN106708654A (zh) 一种用于NANDflash的BCH纠错码的电路结构
US9191029B2 (en) Additional error correction apparatus and method
CN103151078B (zh) 一种存储器检错纠错码生成方法
US20060010363A1 (en) Method and system for correcting low latency errors in read and write non volatile memories, particularly of the flash type
US8977936B2 (en) Strong single and multiple error correcting WOM codes, coding methods and devices
CN1561005B (zh) 快速纠双错bch码译码器
KR20140074600A (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법
CN117632577A (zh) 一种基于bch编码的快速ecc纠错电路
Luo et al. Optimized Algebraic Decoding Algorithm for (47, 24, 11) QR Code
CN116208180A (zh) 一种bch码高效并行编解码方法
Rajab et al. Product codes and generalized concatenated codes for flash memories
CN117850880A (zh) 一种面向高误码率存储器的三级流水线bch译码方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant