CN102468855A - 用于纠正在编码比特序列中的至少单比特错误的设备和方法 - Google Patents
用于纠正在编码比特序列中的至少单比特错误的设备和方法 Download PDFInfo
- Publication number
- CN102468855A CN102468855A CN2011103725589A CN201110372558A CN102468855A CN 102468855 A CN102468855 A CN 102468855A CN 2011103725589 A CN2011103725589 A CN 2011103725589A CN 201110372558 A CN201110372558 A CN 201110372558A CN 102468855 A CN102468855 A CN 102468855A
- Authority
- CN
- China
- Prior art keywords
- submatrix
- bit
- component
- row
- line
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/155—Shortening or extension of codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1575—Direct 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/159—Remainder calculation, e.g. for encoding and syndrome calculation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6575—Implementations based on combinatorial logic, e.g. Boolean circuits
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Algebra (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明涉及用于纠正在编码比特序列中的至少单比特错误的设备和方法。一种用于纠正在编码比特序列中的至少单比特错误的设备包括错误校正子发生器和比特错误纠正器。错误校正子发生器确定编码比特序列的错误校正子,其通过将校验矩阵与编码比特序列相乘而得出。
Description
技术领域
根据本发明的实施例涉及数字信号的错误纠正以及错误检测,并且具体地涉及一种用于纠正在编码比特序列中的至少单比特错误的设备和方法。
背景技术
由于电子电路和存储器的高集成密度,错误的频率增加。
除了1比特错误,也越来越多地要考虑也就是要纠正且要检测2比特错误和通常多比特错误。尤其,在错误纠正中,如果可能在当前时钟周期中快速地纠正发生的错误是重要的,以便防止纠正后的数据相较未纠正数据的延迟处理。
频繁地,数据在一地址下写入存储器并在某一时间之后读出。这里有可能数据在从存储器读出时是有错误的或损坏的,以及需要在将其读出之后进行纠正。
这里,单比特错误、双比特错误以及通常多比特错误都会发生,其以降低的概率随机地引起,以及还会发生其中所有存储器单元错误地呈现值0、将被称为“全0”的错误,以及还会发生其中所有存储器单元呈现值1、这里将被称为“全1”的错误。
对于检测具有高概率的可能地址错误也有特别的兴趣,因为例如当从存储器读出时有错误的地址可能导致完全不同的数据。有可能用汉明(Hamming)码或者萧氏(Hsiao)码来纠正单比特错误以及用并行实现的BCH码来相对快速地纠正2比特错误。
用于1比特和2比特错误纠正的现有技术方案的缺点例如是“全0”和“全1”错误不是错误检测的部分。通常,对于提高错误纠正和错误检测原理的可靠性有很高的兴趣。
发明内容
本发明的实施例提供一种用于纠正在编码比特序列中的至少单比特错误的设备。该设备包括错误校正子发生器和比特错误纠正器。该错误校正子发生器被配置为确定通过将校验矩阵与编码比特序列相乘得出的该编码比特序列的错误校正子。校验矩阵包括第一子矩阵、第二子矩阵和第三子矩阵。每个子矩阵包括多条线,其中每条线包括多个二进制分量。进一步地,第一子矩阵的每条线的至少第一预定分量或第二预定分量包括第一比特值。第二子矩阵包括彼此线性无关的线,以及第二子矩阵的每条线的第一预定分量和第二预定分量包括相同的第二比特值。第三子矩阵包括彼此线性无关的线,以及第三子矩阵的每条线的第一预定分量或第二预定分量包括第一比特值。进一步地,如果第一比特值等于1,则第一子矩阵和第三子矩阵的所有线的第一预定分量的XOR(异或)求和等于第二比特值,以及第一子矩阵和第三子矩阵的所有线的第二预定分量的XOR求和等于第二比特值;或者,如果第一比特值等于0,则第一子矩阵和第三子矩阵的所有线的第一预定分量的XNOR(异或非)求和等于第二比特值,以及第一子矩阵和第三子矩阵的所有线的第二预定分量的XNOR求和等于第二比特值。另外,将校验矩阵与测试向量相乘的结果等于将第二子矩阵和结果向量相乘的结果,其中结果向量的至少一个分量包括第二比特值。进一步地,比特错误纠正器被配置为基于所确定的编码比特序列的错误校正子来纠正该编码比特序列中的比特错误。
通过使用根据具有上述属性的校验矩阵所确定的错误校正子,所提出原理的错误纠正和错误检测能力可以显著好于已知原理。例如,所提出原理使得人们能够将每个1比特错误与全1错误或全0错误区别开。因此,在可纠正的1比特错误与全0错误或全1错误混合起来的情况下从存储器读出字的情况可能不是如此。
附图说明
根据本发明的实施例将在后面参考附图进行详细说明,在附图中:
图1是用于纠正在编码比特序列中的至少单比特错误的设备的框图;
图2是在考虑到地址比特情况下的编码的示意图;
图3是在考虑到地址比特情况下的分离H矩阵的编码的示意图;
图4是校正子发生器的集成的示意图;
图5是包括全0和全1检测的校正子发生器的集成的示意图;
图6是用于数据比特的纠正向量的得出的示意图;
图7是用于数据比特和校验比特的纠正向量的得出的示意图;
图8是用于数据比特、校验比特和地址比特的纠正向量的得出的示意图;
图9是地址错误信号的生成的示意图;
图10、11、12和13是纠正信号的得出的示意图;
图14a-14i是纠正值的确定的示意图;以及
图15是用于对有错误的编码比特序列进行解码的解码器的框图;以及
图16是用于纠正在编码比特序列中的至少单比特错误的方法的流程图。
具体实施方式
在下文中,相同的附图标记被部分用于具有相同或相似功能属性的对象和功能单元,以及其关于附图的描述也将适用于其他附图以便减少在实施例描述中的冗余性。
在更详细地描述所提出的原理之前,简单介绍关于线性分组码尤其是汉明码、萧氏码以及BCH码的一些理论基础和基础术语。例如,这些也在“Fujiwara,E.,Code Design for Dependable Systems,Wiley,2006,p.49-53,p.98-101”中以及在“Tzschach,H.and Haflinger,G.,Codes für denDatentransfer,Oldenburg Verlag,1993,p.111-121”中进行了描述。
汉明码是码距为3的线性分组码。如果m是校验比特的数量,其长度为n=2m-1。数据比特的数量为k=2m-1-m。作为任何线性码,汉明码通常可以用生成矩阵G(简称G矩阵)以及校验矩阵H(也称为奇偶校验矩阵)(简称H矩阵)来描述。未缩短的汉明码的校验矩阵为(m,n)矩阵,其各列是不等于0的任何可能不同的2m-1个二进制向量。这些列也被描述为m位二进制数,以及适用下式:
其中ibin将i的表示指定为m位二进制成员。
如任何其他线性分组码那样,通过去除未缩短码的校验矩阵中一定数量的列,可以缩短汉明码。除此之外,还可以对列进行交换,因此可以变换校验矩阵。
可以根据线性码的校验矩阵来确定生成矩阵(简称为G矩阵)。生成矩阵是(k,n)矩阵。如果存在k个信息比特u1,...,uk,用生成矩阵将该k个信息比特编码为码字v
v=(v1,...,vn)=u·G=(u1,...,uk)·G
如果对字v′=v1,...,vn校验其是否是码字,则利用下式形成校正子S,
S=H·v′T
其中S=S1,...,Sm。如果S=0,则没有检测出错误。如果S=hi,则在v′的第i比特中存在1比特错误。
比特v′1,...,v′n的错误纠正可以通过纠正电路K1,...,Kn来完成,所述纠正电路K1,...,Kn根据与v′i进行XOR(用逻辑XOR函数关联)的错误校正子S来确定纠正值Δv1。对于i=1,...,n来说,在1比特错误的情况下,如果S=hi,纠正电路输出值1。如果错误校正子等于0,则纠正电路输出值0。
萧氏码是码距为4的线性码。如果萧氏码具有m个校验比特,其校验矩阵H由包括奇数个1的所有m位二进制向量组成。具有m个校验比特的(未缩短的)萧氏码的长度是n=2m-1,因为存在2m-1个不同的具有奇数个1的m位二进制向量。通过对未缩短的萧氏码的列进行删除和重新排序,获得缩短的萧氏码的校验矩阵。通过校验错误校正子来再次完成对字v′=v1,...,vn′的测试
S=H·v′T
如果S=hj,也就是等于校验矩阵的第j列,则通过将纠正值Δvj=1与v′j进行XOR(应用逻辑XOR函数)来在第j比特中纠正1比特错误。可以根据错误校正子S由纠正电路Kj确定此纠正值Δvj。如果S=hj,则纠正电路Kj输出值1。如果S是具有偶数个1的二进制向量,则指示不可纠正的错误。
因为对将所提出的原理应用于BCH码(Bose-Chaudhuri-Hocquenghem码)也特别感兴趣,所以将对BCH码的一些特性进行描述。例如,它们也在“Tzschach,H.and Haβlinger,G.:Codes für denDatentransfer,Oldenburg Verlag 1993,p.111-121”以及“Lin,S.,Costello,D.:Error Control Coding,Prentice Hall,1983,chapter 6”中进行了描述。
BCH码是特殊循环码,因此是线性码。BCH码可以用特殊生成多项式G(z)描述为循环码,以及用生成矩阵G和用校验矩阵H描述为线性码。
在纠正2比特错误的BCH码的情况下,生成多项式可以以其最简单形式表示为
这里,mα(z)是本原多项式,也用作所考虑的伽罗瓦(Galois)域的模多项式。α是伽罗瓦域的本原元素以及多项式的根。多项式是根为α3的最小多项式。用GF(2M)来指定相关联的伽罗瓦域。则未缩短的BCH码的长度为2M-1。如果考虑总体奇偶性,则G(z)可以表示为以下形式:
在不对总体奇偶性进行整合的情况下,校验矩阵可以以其分离形式表示为
其中α是伽罗瓦域GF(2M)的本原元素,以及α的指数每个要被解释为对2M-1取模。可以通过将校验矩阵选择为下式来在错误检测中包括该奇偶性:
其中在最后行中仅仅具有1。
将在第i比特位置中的1比特错误描述为[i],以及将在位置i1,i2,...,i1中的L比特错误描述为[i1,i2,...,iL]。对于每个错误[i1,...,iL]来说,关联n分量的错误向量e(i1,...,iL)=(e0,...,en-1),其中
当对应的第j比特是有错误的时,错误向量e[i1,...,iL]的分量ej恰好等于1。
对于错误[i1,...,iL]来说,下式的错误校正子与错误向量e=e[i1,...,iL]相关联:
其中s1=H1·e以及s3=H3·e。
如果不考虑奇偶性,则码距是5,以及如果考虑奇偶性,则码距为6。然后,可以使用校正子来纠正1比特错误和2比特错误。包括奇偶性的、所有3比特错误的校正子,不同于所有1比特和2比特错误的校正子,但是它们彼此间可以是相同的。
作为特殊线性码的BCH码和缩短的BCH码的编码可以在生成矩阵的帮助下完成,而其解码则可以在校验矩阵的帮助下完成。在生成多项式与生成矩阵和文本矩阵之间的连接例如在Lin,S.and Costello,D.:Error Control Coding,Prentice-Hall,1983,p.92-95中进行了描述。
在下文中,通过一些通用的实施例和一些详细的实施例对发明原理进行描述。
图1示出了根据本发明实施例的用于在编码比特序列102中纠正至少单比特错误的设备100的框图。该设备100包括连接到比特错误纠正器120的错误校正子发生器110。该错误校正子发生器110确定通过将校验矩阵H与比特序列102相乘而得出的编码比特序列102的错误校正子112。校验矩阵H包括第一子矩阵Hu、第二子矩阵Ha以及第三子矩阵Hc。每个子矩阵包括多条线,以及每条线包括多个二进制分量。第一子矩阵Hu的每条线的至少第一预定分量或第二预定分量包括第一比特值(1或0)。进一步地,第二子矩阵Ha包括彼此线性无关的线(也就是第二子矩阵的每条线与第二子矩阵的每条其他线是线性无关的),以及第二子矩阵Ha的每条线的第一预定分量和第二预定分量包括相同的第二比特值(0或1)。第三子矩阵Hc包括彼此线性无关的线,以及第三子矩阵Hc的每条线的第一预定分量或第二预定分量包括第一比特值(1或0)。如果第一比特值等于1,则第一子矩阵Hu和第三子矩阵Hc的所有线的第一预定分量的XOR求和等于第二比特值0,以及第一子矩阵Hu和第三子矩阵Hc的所有线的第二预定分量的XOR求和等于第二比特值0。如果第一比特值等于0,则第一子矩阵Hu和第三子矩阵Hc的所有线的第一预定分量的XNOR求和等于第二比特值1,以及第一子矩阵Hu和第三子矩阵Hc的所有线的第二预定分量的XNOR求和等于第二比特值1。将校验矩阵H与测试向量相乘的另外结果等于将第二子矩阵Ha与结果向量相乘的结果,其中结果向量的至少一个分量包括第二比特值(0或1)。进一步地,比特错误校正器120基于所确定的编码比特序列102的错误校正子112来纠正在该编码比特序列102中的比特错误,以获得纠正后的比特序列122。
通过使用可用上述校验矩阵得出的错误校正子112,能够实现用于1比特和2比特错误的错误纠正电路,其例如能够还检测全0和全1错误。换句话说,设备100使得能够将每个1比特错误与全1和全0错误区分开。因此,例如,在将可纠正的1比特错误与全0或全1错误混合起来的情况下从存储器读出字的情况可能不再如此。对全0和全1错误的检测和/或纠正有很高的兴趣,因为这些故障是非常常见的。
第一比特值和第二比特值可以是逻辑0或逻辑1,或者电路中信号的高电平或低电平。因此,具有两种可能的情况。第一比特值等于1(逻辑1)且第二比特值等于0(逻辑0),或者第一比特值等于0且第二比特值等于1。这两种情况都表示所述原理的等效实现。
这示出,所述原理能够使用正逻辑或负逻辑来实现。仅有的区别在于:如果第一比特值等于1,则使用XOR求和;以及如果第一比特值等于0,则使用XNOR求和。关于这一点,所有线的第一预定分量的XOR求和意味着将逻辑XOR函数(异或函数)施加到所有线的第一预定分量,导致比特值(0或1)。由此,所有线的第一预定分量的XNOR求和意味着将逻辑XNOR函数(异或非函数)施加到所有线的第一预定分量,导致比特值(0或1)。对于第二预定分量同样有效。这可以例如通过具有与矩阵的线数对应的输入数量的XOR门或XNOR门来实现。
进一步地,矩阵的线可以是矩阵的行或列。因为矩阵容易转置,所以发明原理可以与矩阵的线是行还是列无关地实现。因此,再次具有两种可能的情况。矩阵的每个提及的线是相应矩阵的列,以及矩阵的每条线的相同分量(例如第一预定分量或第二预定分量)表示该矩阵的行。否则,矩阵的每条线是相应矩阵的行,且矩阵的线的相同分量表示此矩阵的列。
由此,结合所述原理,第一子矩阵、第二子矩阵和第三子矩阵的每条线是相应子矩阵的列。第一子矩阵Hu、第二子矩阵Ha和第三子矩阵Hc的线的第一预定分量表示校验矩阵H的行,以及第一子矩阵Hu、第二子矩阵Ha和第三子矩阵Hc的线的第二预定分量表示校验矩阵H的另一行。备选地,第一子矩阵Hu、第二子矩阵Ha和第三子矩阵Hc的每条线是相应子矩阵的行。第一子矩阵Hu、第二子矩阵Ha和第三子矩阵Hc的线的第一预定分量表示校验矩阵的列,以及第一子矩阵Hu、第二子矩阵Ha和第三子矩阵Hc的线的第二预定分量表示校验矩阵H的另一列。
矩阵的每条线包括多个二进制分量。换句话说,每个分量等于1或等于0。关于这一点,第一预定分量和第二预定分量可以实际上是线的第一和第二分量,但是它们也可以是任意其他分量(例如最后以及倒数第二的分量或第三分量以及第五分量或另一预定分量组合)。然而,第一子矩阵、第二子矩阵和第三子矩阵的第一预定分量是在相应矩阵的线中的相同分量,这因而对于第一子矩阵、第二子矩阵和第三子矩阵的线的第二预定分量是有效的。例如,如果第一预定分量是第一子矩阵的线的第n分量,则第二子矩阵的线的第一预定分量也意味着该线的第n分量。对于第三子矩阵以及对于整个校验矩阵同样有效。
校验矩阵也可以称为奇偶校验矩阵。
例如,校验矩阵可以用分离形式来表示。进一步地,校验矩阵可以例如是缩短的汉明码、缩短的萧氏码或者缩短的BCH码的校验矩阵。
错误校正子发生器110可以通过将校验矩阵与编码比特序列102相乘来确定错误校正子112。备选地,错误校正子发生器110可以包括存储器,该存储器包含查找表。此查找表可以包含关于对应于不同的编码比特序列102的错误校正子的信息。换句话说,查找表可以为每个可能的编码比特序列包含通过将校验矩阵与该编码比特序列102相乘而得出的对应错误校正子。在此示例中,错误校正子发生器110可以通过取得与编码比特序列102相关联的、所存储的错误校正子来容易地确定错误校正子112。
错误校正子发生器110、比特错误纠正器120和/或稍后描述的其他可选元件可以是独立的硬件单元,或计算机或微控制器的部分,以及用于在计算机或微控制器上运行的计算机程序或软件产品。
错误校正子发生器110、比特错误纠正器120和/或稍后描述的其他可选元件可以彼此独立地实现或者至少部分一起实现。为此,例如,错误校正子发生器110、比特错误纠正器120和/或下面描述的其他可选元件的功能可以由合成工具至少部分地整合到组合硬件单元或软件单元。
在将校验矩阵H与编码比特序列102相乘期间,将编码比特序列102的第一组比特与第一子矩阵相乘,将编码比特序列的第二组比特与第二子矩阵相乘,并将编码比特序列的第三组比特与第三子矩阵相乘。换句话说,编码比特序列的错误校正子是基于将编码比特序列的第一组比特与第一子矩阵相乘、将编码比特序列的第二组比特与第二子矩阵相乘、并将编码比特序列的第三组比特与第三子矩阵相乘来得出的。
在本发明的一些实施例中,第一组比特可以表示信息比特,第二组比特可以表示地址比特,以及第三组比特可以表示校验比特。因此,第一组比特也可以称为信息比特或(有用)数据比特,第二组比特可以称为地址比特,以及第三组比特可以称为校验比特。
例如,编码比特序列或编码比特序列的部分可以用可寻址存储器进行存储,所述可寻址存储器也称为存储器单元、存储器或存储单元(例如只读存储器、随机存取存储器或非易失性存储器)。
第一组比特(数据比特)可以独立于第二组比特(地址比特)。因此,仅仅编码比特序列的第一组比特和第三组比特可以被存储在用第二组比特所指示的可寻址存储器的地址处。备选地,编码比特序列也可以用内码来编码,以便第一组比特的至少单比特依赖于第二组比特的至少单比特。
在下文中,更详细地描述本发明的实施例。在此示例中,矩阵的线是列,矩阵的线的第一预定分量表示矩阵的第一行,矩阵的线的第二预定分量表示矩阵的第二行,第一比特值等于1,且第二比特值等于0。在详细实施例的描述中,若干另外和/或可选特征能够全部一起实现,或者它们中的一个或一些可以独立于所描述的其他特征得以实现。
在图2中示出了在有用数据比特u=u1,...,uk的编码存储中将如何考虑(例如由地址发生器13提供的)地址a=a1,...al。在编码装置(或编码器)11处,施加k比特宽的有用数据u=u1,...,uk以及l比特宽的地址a=a1,...al(将在该地址处写入存储器12),以便地址a也被施加到存储器12的地址输入。编码器11根据有用数据u(信息比特)和地址a(地址比特)而形成k+l+m比特宽的码字v(编码比特序列),
v=(u,a)·G
在存储器12中在地址a下存储码字v,其比特既依赖于有用数据(信息比特)又依赖于地址(地址比特)。如果生成矩阵以其系统形式加以使用
G=(Ik+1,Pk+1,m)
码字v具有形式v=u,a,c,且添加到有用数据比特和地址比特的校验比特c用下式来指定
c=(u,a)·P,
虽然有用数据比特u和地址比特a在此示例中不进行修正,但是Ik+l是(k+l)维单位矩阵并且P是确定码的测试方程的(k+l,m)矩阵。
包括用于以系统形式的生成矩阵的地址比特的编码在图3中示出。在存储器22(可寻址存储器)中,仅仅存储数据比特u和校验比特c,而地址比特无需存储。这里的校验比特c既依赖于数据比特u又依赖于地址比特a。用地址发生器23生成的地址比特被施加到存储器22的地址输入和以系统形式21的编码装置(或编码器)的对应第一输入,同时在编码器的第二k比特宽的输入处施加有用数据比特u,其同时也被施加到存储器22的第一k比特宽的数据输入。编码器在其m比特宽的输出处生成校验比特c,其被施加到存储器22的第二m比特宽的数据输入。
图4示出根据实施例的用于为纠正2比特错误的缩短的BCH码生成校正子S=(s1,s3)的电路。存储在存储器32(可寻址存储器)中的比特u′和c′在用地址发生器33提供的地址a′下从存储器32输出。这里用地址发生器生成的地址具有字宽度l-1。在图3中用u′,a′,c′来指定数据、地址和校验比特,以指示对应的比特可能被变成有错误。数据比特u′被提供给字宽度为k的第一输入311,校验比特c′被提供给第二输入312,以及地址比特a′被提供给校正子发生器31的字宽度为l-1的第三输入313。在第四1比特宽的输入314处,施加常数值1。校正子发生器31可以是用校验矩阵确定的组合电路。其用于关于下式形成确定为列向量ST的所考虑BCH码的校正子S=(s1,s3):
ST=(s1,s3)T=(S1,S2,...,Sm)T=H·(u′1,...,u′ka′1,...,a′l,c′1,...,c′m)T。
用地址发生器提供的地址比特a′1,...,a′l-1以及常数值1形成地址比特a′1,...,a′l,如稍后详细描述的。缩短的BCH码的校验矩阵H由第一(m,k)子矩阵Hu、第二(m,l)子矩阵Ha和第三(m,m)子矩阵Hc组成,其中校验矩阵H的前k列形成子矩阵Hu,接着l列形成子矩阵Ha,以及最后m列形成子矩阵Hc。子矩阵也可以称为部分矩阵。这里应用下式:
对于校正子S=(S1,...,Sm)=(s1,s3)的分量S1,S2,...,Sm,应用下式:
(s1,s3)T=(S1,...,Sm)T=(Hu,Ha,Hc)·(u1,...,uk,a1,...,al,c1,...,cm)T,
以及校正子发生器31在其m个输出处对于i=1,...,m实现布尔函数
通过从长度为2M-1的未缩短的纠正2比特错误的BCH码的(m,2M-1)校验矩阵的列中删除某些列和对列进行重新排序,来确定矩阵Hu,Ha,Hc,以便m+l+k<2M-1。这里,未缩短的码的校验矩阵例如用其分离形式进行选择。则矩阵具有以下形式
因为矩阵H1的第i列用αi,i=0,...,2M-2来确定并且α是伽罗瓦域GF(2M)的本原元素,所有2M-1个M位二进制向量(除了0之外)作为H1的列发生。现在,选择校验矩阵的前m个分量的第j分量和第k分量,其中j≠k。该第j分量被指定作为第一(选择)分量(第一预定分量),以及第k分量被指定作为第二(选择)分量(第二预定分量)。因为α是伽罗瓦域GF(2M)的本原元素,且所有2M-1个可能的m位二进制向量作为校验矩阵H1的列发生,所以对于值01、10和11中的每个值来说,在两个选择的分量(预定分量)中具有校验矩阵H1的2M-2个列呈现值01、10和11。除此之外,在该两个选择的分量中具有矩阵H1的2M-2-1个列呈现值00。校验矩阵的所有列被分类为四个不相交集Sp00,Sp10,Sp01和Sp11,其中Sp00包含前两个分量为00的全部2M-2-1个列,Sp10包含前两个分量为10的全部2M-2个列,Sp01包含前两个分量为01的全部2M-2个列,以及Sp11包含前两个分量为11的全部2M-2个列。
其中应用
因为Sp00的前两个分量等于00(第一子矩阵的每条线的第一预定分量和第二预定分量包括相同的第二比特值),所以具有m-2个线性无关的列,且应用l≤m-2。对于l=m-2,通过删除前两条线(其假定0,...0)从Ha得到的(l,l)矩阵可以是可逆的。
换句话说,编码比特序列的第二组比特的比特数可以小于或等于编码比特序列的第三组比特的比特数减2。
矩阵Hc的列,
被选择为使得它们是线性无关的并且使得它们前两个分量(第一预定分量和第二预定分量)不等于00(第三子矩阵的每条线的第一预定分量或第二预定分量包括第一比特值),以便对于i=1,...,m来说应用下式:
矩阵Hu的列,
被选择为使得前两个分量不等于00(第二子矩阵的每条线的第一预定分量或第二预定分量包括第一比特值),以便对于i=1,...,k来说应用下式:
换句话说,第一子矩阵的线(在此示例中为列)全部不同于第三子矩阵的线。
除此之外,确定矩阵Hu,Ha,Hc的列以便应用以下情况:
1.横跨所有列的第一分量的XOR求和等于0(第二比特值)。
2.横跨所有列的第二分量的XOR求和等于0(第二比特值)。
3.用下式确定的1维二进制向量a1′,...,al′(结果向量)
i.具有至少一个分量ai′=0,i∈{1,...,l}(结果向量的至少一个分量包括第二比特值)。待与第一子矩阵和第二子矩阵相乘的向量(1,...,1)T也可以称为测试向量。备选地,将测试向量与整个校验矩阵相乘。为此,测试向量包括针对与第二子矩阵的线的分量相乘的比特的0。
换句话说,测试向量的与第一子矩阵和第三子矩阵的线的分量相乘的每个分量包括第一比特值,而测试向量的与第二子矩阵的线的分量相乘的每个分量包括第二比特值。
在下文中,将描述实际上如何可以确定创造性校正子发生器的矩阵Hu,Ha,Hc。
从集Sp10,Sp01和Sp11,通过从每个集删除两个随机列并且将所删除的列汇总到集Sp210,Sp201和Sp211中来形成集Spe10,Spe01,Spe11。因此,集Sp201包含从集Sp01删除的两个列,以便确定集Spe01。
从集{Spe10∪Spe01∪Spe11},确定用指定的m个线性无关的列,且这些列形成矩阵(第三子矩阵)
因此,Hu包含其前两个分量等于10的至少一列,其前两个分量等于01的至少一列,以及其前两个分量等于11的至少一列。
更一般地,第一子矩阵包括:其第一预定分量等于第一比特值且其第二预定分量等于第二比特值的至少一条线;其第一预定分量等于第二比特值且其第二预定分量等于第一比特值的至少一条线;以及其第一预定分量和第二预定分量等于第一比特值的至少一条线。
现在,确定Hu和Hc的列的第一和第二分量的XOR求和。根据该XOR求和的值,考虑以下四种情况:
1.如果XOR求和为(1,1),将Hu的其前两个分量等于(0,1)的一列用Sp210的列替代。然后,在此替代后,Hu的列的前两个分量的XOR求和等于(0,0)。
2.如果XOR求和等于(0,1),将Hu的其前两个分量等于(1,0)的列用来自Sp211的列替代。然后,在该替代后,Hu、Hc的列的前两个分量的XOR求和等于(0,0)。
3.如果XOR求和等于(1,0),则将Hu的其前两个分量等于(0,1)的列用Sp211的列替代。然后,在该替代后,Hu、Hc的列的前两个分量的XOR求和等于(0,0)。
4.如果XOR求和等于(0,0),则在此步骤中不执行任何修正。
根据迄今为止获得的矩阵Hu和Hc,现在通过对下述线性方程组求解来确定向量a′1,...,a′l:
如果i,1≤i≤l使得a′l=0,则用迄今为止确定的校验矩阵H=(Hu HaHc)来确定校正子发生器。在图4的输入314处,则输入第i地址比特的值1(a′i=1)作为常数。如果没有i,1≤i≤l使得a′i=0,则应用下式:
然后必然致使的解为
且
如果a1′,...,al′是方程(9)的解,则Hu至Hu′的此修正后,a′i=0。如图4中所示,则对于地址的第i比特来说,输入常数值1作为输入314。换句话说,与结果向量中的包括第二比特值的至少一个分量相关联的第二组比特中的比特包括第一比特值。
然后,刚才确定的H矩阵可以确定例如实现校正子发生器的XOR树。在此示例中,校正子发生器具有例如以下有利特性:
1.对于任何地址a1,...,ai-lai=1,ai+1...,al并且对于u=0,...,0且c=0,...,0或者u=1,...,1且c=1,...,1来说,没有缩短的BCH码的码向量。因此,错误“全0”和“全1”可能绝不是缩短的BCH码的码向量,由此它们被相对容易地检测出。
i.例如,此特性尤其用恒等于1的某个地址比特的值来实现,使得矩阵Ha的列是线性无关的,使得矩阵Hu和Hc的列的第一和第二分量的XOR求和等于0,且使得矩阵Ha的所有列的第一和第二分量等于0。
2.在数据比特u或校验比特c中恰好包括一个1的字可能绝不是码字。
i.当Hu的列和Hc的列的前两个分量≠00且Ha的前两个分量为(0,0)时,且用于数据比特或校验比特中的1比特错误的校正子S的前两个分量S1,S2总是不等于00,且不可能存在码字。因此,对于被“全0”中的1比特错误损坏的码字来说也是不可能的。
3.在数据比特u或校验比特c中恰好包括0的字可能绝不是码字。
i.当Hu的列和H0的列的前两个分量≠(0,0),且矩阵Hu和Hc的所有列的这些分量的XOR求和等于(0,0),并且Ha的前两个分量等于(0,0)时,校正子S的前两个分量S1,S2总是不等于00并且不可能存在码字。因此,对于待被“全1”中的1比特错误损坏的码字来说也是不可能的。
如果要满足关于校验矩阵的列的进一步条件,则可以相对容易地概括用于通过确定其校验矩阵来确定校正子发生器的所述原理。作为这种条件的示例,考虑如下情况:在校验矩阵的每个列中,该列的分量子集(预定多个分量)中的1的数量是奇数。换句话说,校验矩阵H的每条线的预定多个分量的XOR求和等于相同的比特值。作为这种子集的示例,这里每个列的下方N个分量被认为属于矩阵H3。下方N个分量中的1的数量因此将是奇数。如果满足此条件,则可以经由子校正子s3的分量来确定奇偶性P为XOR求和,这可以通过具有仅仅N个输入的XOR树来完成。然而为了根据数据比特、地址比特和校验比特确定总体奇偶性,需要具有n个输入的XOR树,其中n是码的长度。
例如,对于奇偶性比特来说,可以将包括仅仅1的行添加到校验矩阵。换句话说,校验矩阵的所有线的预定相同分量可以包括相同的比特值。
根据具有2M-1个列的校验矩阵的列,此矩阵的列被确定满足所需条件。这里,其是在N个底部分量中包括奇数个1的列。根据这些列的前两个分量是00,10,01还是11,将这些列与集Sp*00,Sp*10,Sp*01和Sp*11相关联。
基于这些集Sp*00,Sp*10,Sp*01和Sp*11,恰如针对集Sp00,Sp10,Sp01和Sp11所描述的,可以确定校验矩阵H*=(H*u,H*a,H*c)并因此确定校正子发生器,以便其校验矩阵H*的列包括另外特性。这里,其是底部N个分量包括奇数个1的特性。
针对N=7和伽罗瓦域GF(27)描述具体示例。例如在“Peterson,W.,and Weldon,E.:Error Correcting Codes,2.Auflage,MIT Press,1972,Annex C,S.476“中指出的,作为模多项式,使用本原多项式mα=z7+z3+1。未缩短码的长度是n=27-1=127。用于2比特错误纠正的未缩短BCH码的H矩阵则为
其中αj的指数j要被认为是对127取模,以便例如指数3·126意味着(3·126)对127取模=124。在列αi,α3i中的值α1和α3i最初在向量图中示出为2个七位二进制向量,被组合为14位二进制向量且被认为14位二进制数。此14位二进制数可以被表示为十进制数。
应用下式:
(α0,α0)=(00000010000001)bin=129
(α1,α3)=(00000100001000)bin=264
(α0,α0)=(00001001000000)bin=576
其中129是第一列的十进制值,264是第二列的十进制值,以及576是第三列的十进制值。
这里,最左边的比特是第一比特,而最右边的比特是第十四比特。第一比特和第二比特用下划线注出。这些是其在缩短BCH码的校验矩阵的所有列上的XOR求和为0,0的比特。未缩短H矩阵的列则由以下十进制数给出:
129,264,576,1060,2098,4107,8280,1261,2398,4701,9285,3212,6496,12854,8363,1482,2932,5663,11377,7351,14627,13962,10704,6061,12154,6895,13646,11988,6541,13160,8950,399,888,1663,3143,6172,12393,9470,3535,7004,13901,10444,5572,11012,4768,9490,3737,7489,14892,12530,9647,4074,8038,15878,14512,13723,12241,7077,14138,10955,4604,9055,725,1285,2600,5202,10301,5363,10535,5802,11586,7860,15675,16067,14780,14331,11239,5006,10096,2751,5475,10798,4322,8486,1698,3330,6672,13321,11464,7652,15126,12985,8659,1973,3891,7683,15384,15561,15852,16342,15261,13281,9150,1003,1902,3654,7188,14377,13530,11773,8151,16149,15009,12698,10201,3045,5918,11897,6391,12551,9912,2523,4981,9751,2225,4371,8721
基于这127个列,现在形成集Sp00,Sp10,Sp01和Sp11,其在二进制表示下的前两个分量为00,10,01和11。因此,例如列129,264和567是集Sp00的部分,因为这些数字的前两个分量在二进制表示下等于00。
基于集Sp00,Sp10,Sp01和Sp11,用另外条件来确定集Sp*00,Sp*10,Sp*01和Sp*11,所述另外条件是校验矩阵在它们的二进制表示下的列在第8-14比特中包括奇数个1。因此,列1、2和3(129,264,567)属于Sp*00,因为这些列属于Sp*00,且除此之外,在第8-14比特中每个包括一个1,也就是奇数个1。
应用下式:
Sp*00={129,264,576,2098,1261,2398,1482,1663,3535,3737,3330,1003,1902,3654,2523,2225}
Sp*10={8280,9285,12154,11988,8950,10444,11012,9647,12241,10301,11239,10096,8486,9150,11897,9912}
Sp*01={4107,4701,5663,7351,6541,6172,4768,7077,4604,5202,5363,5802,7860,5006,4322,6672,7652,8151,4981,4371}
Sp*11={14627,13160,14892,15675,16067,15126,15561,13281,14377,16149,12698,12551}.
根据集Sp*10,通过移除两个列9647,12241并将这两个列组合为集Sp210={9647,12241},形成集Spe10。应用下式:
Spe10={8280,9285,12154,11988,8950,10444,11012,10301,11239,10096,8486,9150,11897,9912}.
根据集Sp*01,通过移除两个列7077,4604并将这两个列组合为集Sp201={7077,4604},形成集Spe01。应用下式:
Spe01={4107,4701,5663,7351,6541,6172,4768,5202,5363,5802,7860,5006,4322,6672,7652,8151,4981,4371}.
根据集Sp*11,通过移除两个列16149,13281并将这两个列组合为集Sp211={16149,13281},形成集Spe11。应用下式:
Spe10={14627,13160,14892,15675,16067,15126,15561,14377,12698,12551}.
根据集Sp*00,选择m-2=14-2=12个线性无关的向量来形成矩阵Ha。应用下式:
Ha=(129,264,576,2098,1261,2398,1482,3737,3330,1003,3654,2225).
根据集Spe10∪Spe01∪Spe11,确定14个线性无关的列来形成矩阵Hc。应用下式:
Hc=(8280,4107,6672,9285,4768,11012,6172,5202,8486,4371,4322,10444,12551,14377).
根据集选择16个向量来形成Hu的列。确定这些列以便它们包含来自Spe10的至少一个向量、来自Spe01的一个向量以及来自Spe11的一个向量。临时地,得到矩阵Hu为:Hu=(4701,14627,6541,13160,14892,10301,5802,5006,10096,12698,9912,5663,11988,8950,15675,7351).
对于Hu和Hc的列的前两个分量的XOR求和,得到值10。为了获得针对该求和的值00,前两个分量为10的列用Spe11的前两个分量来替代,以便XOR求和现在为00。具体地,列7351用Spe11的列16149来替代。矩阵Hu现在是:
Hu=(4701,14627,6541,13160,14892,10301,5802,5006,10096,12698,9912,5663,11988,8950,15675,16149)
从由此确定的矩阵Hu,Ha,Hc,现在确定向量a1,...,al,对其应用下式:
由于
sAll1=00010000110110
确定a′1,...,a′12作为下述线性方程组的解:
sAll1=Ha·(a′1...,a′12)
其中a′1,...,a′12=101000000011。在例如a′2=0时,例如由简单通过以合成工具实现对应的线性方程而刚刚确定的校验矩阵来确定校正子发生器。
奇偶性信号导致所提出的实施例作为子校正子s3的分量的XOR操作,也就是通过校正子S的第8到14分量的XOR操作。如果不需要文本矩阵的列的副条件8到14包含奇数个1,则也可以用由全1组成的线来补充校验矩阵。在纠正2比特错误的BCH码中,则获得奇数个校验比特。
在图5中示出可以如何监视关于错误“全1”和“全0”的(存储器的)存储器单元的原理。在图5和图4中用相同的数字指定的部分电路和连接具有与图4中相同的含义。除了图4之外,将存储器32的携载信号u(第一组比特,信息比特)的k比特宽的输出和携载信号c(第三组比特,校验比特)的m比特宽的输出两者提供到NOR门34的k+m比特宽的输入中以及还提供到AND门35的k+m比特宽的输入中。如果存储器在任何地址下输出值“All-0(全0)”,则NOR门34输出值All-0=1,而如果存储器在任何地址下输出值All-1(全1),则AND门输出值All-1=1。因为全1或全0均不是任何地址的码字,所以100%地在NOR门34的输出处检测出全0错误,同时100%地在AND门35的输出处检测出全1错误。
更一般地,NOR门34和AND门35也可以称为相同比特值检测器。相同比特值检测器可以提供指示编码比特序列的第一组比特的所有比特和第三组比特的所有比特是否包括相同的比特值(全0或全1)的信号。
图6示出创造性校正子发生器40,其在其m比特宽的输出处输出错误校正子S的值,该输出与电路41,42,4k(其可以是比特错误纠正器的部分)的相应输入相连接以用于确定1比特宽的纠正值Δu1,Δu2,Δuk,其由这些电路在它们相应的输出处输出且与待纠正的数据比特u1′,u2′,...uk′进行XOR。从函数上来说,对于i=1,...,k,纠正值是Δu1:
这里,是矩阵Hu的第i列,以及h是矩阵Hu的列或者矩阵Hc的列,其中
纠正电路例如也在“Okamo,H.and Imai,H.:A ConstructionMethod for Decoders of BCH-Codes for Bose Chaudhuri-Hocquenghemand Reed Salomon Codes,IEEE Trans.Comp.C 36,No 10,pp.1165-1171,1985”中进行了描述。
图7示出了创造性校正子发生器40,其除了图6以外包括进一步电路(其也可以是比特错误纠正器的部分)用于确定纠正值Δc1,Δc2,...,Δcm,其由这些电路在它们的输出处输出并且与校验比特逐分量地进行XOR以纠正所述校验比特。与图6没有区别的电路部分如图6中的那样进行编号。从函数上来说,在1比特或2比特错误的情况下,电路(其中j=1,...,m)实现下述函数:
图8示出创造性校正子发生器40,其除了图7以外包括用于确定地址错误421的进一步电路(其也可以是比特错误纠正器的部分)。当发生了1比特或2比特地址错误时,该电路在其输出处输出值Ea=1。从函数上说,对于用于确定地址错误的电路421,应用下式:
其中ha是矩阵Ha的列,h是矩阵Hu,Ha,Hc的列,其中h≠ha,以及h*和h′是矩阵Hu和Hc的列,其中h*≠h′。
图9示出用于检测地址错误的图8的电路421的特定实施例。图9的电路由用于确定可能错误的地址比特a′1,...,a′l的l个纠正值Δa1,...,Δal的l个电路组成。携载纠正值Δa1,...,Δal的电路51,...,5l的输出被导引到OR门53的输入,该OR门53在其输出处输出地址错误信号Ea。
对于i=1,...,l,对于纠正值Δai,应用下式:
在图10中示出:对于i=1,...,k,电路的输出(其正在输出纠正信号Δui用于纠正比特u′i)如何用具有k个输入的OR门61连接到纠正信号基于信号能够容易地确定是否在比特u′1,...,u′k中发生了纠正。电路i=1,...,k的输出与OR门61的相应第i输入相连接,该OR门61在其输出处输出信号
在图11中,示出:对于i=1,...,k,电路的输出(其在其输出处正在输出纠正信号Δui用于纠正比特u′i)如何用具有k个输入的XOR门62连接到纠正信号基于信号能够容易地确定是否发生了比特u′1,...,u′k的奇数个纠正。电路i=1,...,k的输出与XOR门62的相应第i输入相连接,该XOR门62在其输出处输出信号
在图12中,示出:对于i=1,...,m,电路的输出(其在它们的输出处正在输出纠正信号Δci用于纠正比特c′i)如何用具有m个输入的OR门71连接到纠正信号基于信号能够容易地确定是否在比特c′1,...,c′m中真的发生了纠正。电路i=1,...,m的输出连接到OR门71的相应第i输入,该OR门71在其输出处输出信号
在图13中,示出:对于i=1,...,m,电路的输出(其在它们的输出处正在输出纠正信号Δci用于纠正比特c′i)如何用具有m个输入的XOR门72连接到纠正信号基于信号能够容易地确定是否发生了比特c′1,...,c′m的奇数个纠正。电路i=1,...,m的输出连接到XOR门72的相应第i输入,该XOR门72在其输出处输出信号
因为缩短了所使用的BCH码,可能发生将多比特错误映射到1比特错误的校正子S(1),其中S(1)等于未缩短BCH码的校验矩阵的列,其在约简矩阵时已被删除。当信号和两者均等于0时,能够容易地检测出这种状况,但是存在1比特错误的错误校正子S(1)。
现在,将以具有四个信息比特u1,u2,u3,u4、四个校验比特c1,...,c4以及两个地址比特a1,a2的未缩短汉明码的特定简单示例来描述所提出的原理。字宽度k=4,m=4和l=2被有意选择为小以便能够尽可能清楚地说明原理。
未缩短汉明码的校验矩阵为:
其前两个分量等于0,0的校验矩阵的列的集Sp00为:
Sp00={(0010)T,(0001)T,(0011)T}。
其前两个分量等于0,1的校验矩阵的列的集Sp01为:
Sp01={(0110)T,(0101)T,(0111)T,(0100)T}。
其前两个分量等于1,0的校验矩阵的列的集Sp10为:
Sp10={(1010)T,(1001)T,(1011)T,(1000)T}。
其前两个分量等于1,1的校验矩阵的列的集Sp11为:
Sp11={(1110)T,(1101)T,(1111)T,(1100)T}。
从SP00中选择两个线性无关的列,例如列(0010)T,(0001)T,作为(第二)子矩阵Ha的列。
从Sp10和Sp01中选择四个线性无关的列,也就是列(0100)T,(0111)T,(1000)T,(1001)T,作为(第三)子矩阵Hc的列。从Sp11中选择四个列,也就是列(1100)T,(1101)T,(1110)T,(1111)T,作为(第一)子矩阵Hu的列。在前两个分量中,每个值10,01,11发生偶数次,以便下述矩阵的第一和第二分量的XOR求和等于00:
对于校正子S=S1,S2,S3,S4,得到:
S=H·(u,a,c)T
S1=u1+u2+u3+u4+c1+c4
S2=u1+u2+u3+u4+c2+c3
S3=u2+u4+a1+c3
S4=u3+u4+a2+c3+c4。
对于根据方程(7)确定的二维二进制向量a′1,a′2,得到下式:
并且因此,
其中解为a′1=1且a′2=0。
因为a′2=0,恒定地设置a2=1,这导致以下方程:
S1=u1+u2+u3+u4+c1+c4
S2=u1+u2+u3+u4+c2+c3
S3=u2+u4+a1+c3
S4=u3+u4+1+c3+c4
其在逻辑上描述了根据所述原理的校正子发生器,其实现可以例如利用市场上可买到的合成工具来实现。
可用地址这里仅仅是地址a1,a2=0,1且a1,a2=1,1。向量(0000a1a20000)的校正子是S=(00a11),以及因此不等于0。向量(1111a1,a21111)的校正子等于以及因此不等于0。因此,向量(0000a1,a20000)和(1111a1,a21111)绝不是码向量。
向量0000a1,a20100将被认为在存储器中存储的比特中具有1的向量的示例。相关联的校正子是S(10a11)。其具有至少两个1。通过校验所有可能的1比特错误,更容易确认没有1比特错误能够将向量0000a1,a20100修正为具有错误校正子S=0的码字。
相应的阐述适用于在比特u1,u2,u3,u4 c1,c2,c3,c4中具有恰好一个1的所有向量。用于确定纠正值的电路的示例在图14a-14i中示出。将值S=(S1,S2,S3,S4)插入到纠正电路 中。
恰好在S=1110时,纠正电路输出纠正值Δu2=1。
恰好在S=1000时,纠正电路输出纠正值Δc1=1。
当比特u=u1,...,uk由K个有效载荷数据和从其得出的q个比特组成时,所示出的原理也是适用的。然后对于k=K+q,应用下式:
u1,...,uk,=u1,...,uK,w1,...,wq。
比特w1,...,wq也能够称为内校验比特,以及这些比特作为用下式根据比特u1,...,uK确定的内码的校验比特:
w1=f1(u1,...,uK),
w2=f2(u1,...,uK),
.
.
.
wq=fq(u1,...,uK)。
从而fl,...,fq是K位布尔函数,且应用k=K+q。如果布尔函数fl,...,fq是线性的,则内码是线性的。如果这些函数中的至少一个是非线性的,则码是非线性的。
例如,用缩短BCH码来纠正比特u1,...,uk,=u1,...,uK,w1,...,wq,该缩短BCH码通过使用其校验比特cl,...,cm来纠正2比特错误。为了获得在比特ul,...,uk中的错误的错误检测的尤其高概率,在用BCH码进行的可能的错误纠正之后,能够通过使用内码的校验比特来执行在比特ul,...,uk中的错误检测,而无需增加外码的校验比特的数量。
作为示例,可以使用在文档DE 10 2006 005 836或“M.,Otcheretny,V.,Sogomonyan,E.and Marienfeld,D..:New Methods ofConcurrent Checking,Springer Verlag 2008,p.49-53”中描述的非线性码,其中这里用下式来确定两个内部校验比特:
以及
不同时损坏所有比特ul,...,uk的任何任意错误然后能够至少以1/2的概率有利地检测出,例如如在“M.,Otcheretny,V.,Sogomonyan,E.and Marienfeld,D..:New Methods of ConcurrentChecking,Springer Verlag 2008,p.49-53”中所描述的。也有可能将地址比特包括到内码的校验比特的确定中。例如,w1和w2能够确定为:
以及
也有可能比特wl,...,wq仅仅依赖于地址比特a1,...,al而不依赖于比特ul,...,uk。例如,比特w1,w2能够用下式来确定:
w1w2=(a1+2a2+...+2l-1al)mod3
通过使用所提出的原理,可以启用用于1比特和2比特错误的错误纠正电路,其中地址比特被整合到错误检测中,其中也可以检测出错误全0和全1作为在任何地址值中的错误。
进一步地,所述原理可以使得能够在任何地址下写入任何数据,尤其还将值(0,...,0),(1,...,1)写入到所有数据比特中而不让所有存储器单元被0(1)所占据,以便全1(全0)在所有存储器单元中在任何地址下均不是有效码字。
同样地,电路可以使得能够将每个1比特错误与错误“全1”和“全0”区别开,这是有利的。因此,在可纠正的1比特错误与错误“全0”或“全1”混合起来的情况下从存储器读出字的情况可能不是如此。
在下文中,之前描述的非常详细的示例以还指示可选或附加特征中的一些的更一般措辞进行解释。
具有一种用于生成码C的m位校正子S=(Sl,...,Sm)的电路,其中所述码C纠正长度为n的码字的至少1比特错误,该校正子具有校验矩阵H用于纠正在可寻址的存储器中存储的比特的错误。存在第一组k比特u=u1,...,uk,第二组l比特a=a1,...,al,以及第三组m比特c=cl,...,cm,且第一组k比特和第三组m比特被存储在可寻址的存储器中地址a下。在没有错误的情况下,根据比特u=u1,...,uk和a=a1,...,al通过XOR连接来逻辑上得出比特c=cl,...,cm,n=k+l+m,其中电路具有n个输入,其中应用比特u1,...,uk,a1,...,al,cl,...,cm,其中当应用地址a1,...,al时从存储器输出比特u1,...,uk,cl,...,cm,以及错误校正子S=Sl,...,Sm的值用下式确定:
S=H·(u,a,c)T
以及(u,a,c)T是行向量(u,a,c)和校验矩阵H的转置列向量。
校验矩阵H由三个子矩阵Hu,Ha,Hc组成,其中子矩阵Hu由H的前k个列组成,子矩阵Ha由H的接着l个列组成,以及子矩阵Hc由H的剩余m个列组成,以便应用
H=(Hu,Ha,Hc)。
进一步地,具有每个不等于[0,0]的、Hu和Hc的列的第一预定分量和第二预定分量,且使得Hu的这些列和Hc的这些列的这些第一预定分量的逐分量的XOR求和以及Hu和Hc的这些列的第二预定分量的逐分量的XOR求和每个等于0。
Ha的列的第一预定分量的值和第二预定分量的值每个等于[0,0]。
矩阵Ha的l个列是线性无关的。
矩阵Hc的m个列是线性无关的。
进一步地,具有比特位置r,1≤r≤l,使得应用
其中
a′1,...,a′r-1,a′r+1,...,a′l∈{0,1}
其中m+l+k≤2m-1且l≤m-2。
根据一方面,每个具有m个输入以及用于生成纠正值Δu1,...,Δuk以与从存储器读出的比特ul,...,uk进行XOR连接的输出的k个纠正电路在输出错误校正子S=Sl,...,Sm的m个分量之前,被同时连接到所提及的电路的m个输出。
根据另一方面,电路被配置为使得当a1,a2,...,ar-1,...,al=0,...,0且当
a1,a2,...,ar-1,ar+1...,al=a′1,a′2,...,a′r-1,a′r+1...,a′l时将逻辑上第r地址比特ar设置为1,
其中确定
a′1,a′2,...,a′r-1,a′r+1...,a′l
使得应用
进一步地,其可以配置为使得ar恒定地设置为1。
根据进一步方面,存在具有k+m个输入和用于检测存储器单元的分配全0的输出的进一步子电路Fo,实现(k+m)位布尔函数F0(u,c),对其应用下式:
根据一方面,存在具有k+m个输入和用于检测存储器单元的分配全1的输出的进一步子电路F1,实现(k+m)位布尔函数F1(u,c),对其应用下式:
F1(u,c)=u1∧u2∧...∧uk∧c1∧...∧cm。
根据另一方面,具有校验矩阵H的列的q个分量i1,i2,...,iq,以便对于校验矩阵H的每个列h来说,这些分量的值的XOR求和每个等于1。
另外,可以存在电路构件,该电路构件具有:q个输入;以及输出,用于形成错误校正子的q个分量si1,...,siq的XOR求和以形成奇偶性P,
根据一方面,可以存在用于地址错误检测(相同比特值检测)的进一步子电路,其在地址错误的情况下在其输出处输出错误信号。
进一步地,在码C是1比特错误检测码的情况下用于地址错误检测的子电路可以在1比特错误或没有错误的情况下输出值Ea(S),其中
其中ha是子矩阵Ha的任意列。
另外,在码C是1比特错误和2比特错误纠正码的情况下用于地址错误检测的子电路可以在1比特错误、2比特错误或没有错误的情况下输出值Ea(S),其中
其中ha是矩阵Ha的任意列,h是矩阵Hu,Ha,Hc的任意列,其中h≠ha。
另外,可以将纠正电路的l个输出导引到具有l个输入和一个输出的电路的输入中,实现其输入的逻辑OR连接。
以及hc是子矩阵Kc的第j列。
根据另一方面,存在m个具有m个输入和一个输出的另外纠正电路其中在C是1比特和2比特错误纠正码的情况下,对于j=l,...,m,纠正电路实现m位布尔函数对其来说在1比特错误、2比特错误或没有错误的情况下应用下式:
根据一方面,存储在存储器中的比特uk,...,uk-v用v+1个电路fk,fk-1,...,fk-v从存储在存储器中的比特u1,...,uk-v-1以及地址比特a1,...,al来确定,所述v+1个电路每个具有k-v+1个输入和一个输出,实现(k-v+1)位布尔函数
uk=fk(u1,...,uk-v-1,a1,...,al),
.
.
.
uk-v=fk-v(u1,...,uk-v-1,a1,...,a1)。
另外,布尔函数fk,...,fk-v可以不依赖于地址比特a1,...,al。
进一步地,布尔函数fk,...,fk-v可以不依赖于比特u1,...uk-v-1。
另外,布尔函数fk,...,fk-v中的至少一个可以是非线性的。
进一步地,v可以等于1。
另外,fk可以用下式定义:
以及可选地,fk-1可以用下式定义:
根据一方面,未缩短BCH码的校验矩阵Hunverk具有如下形式:
以及相应的指数j将通过αj对2M-1取模来解析。
根据本发明的一些实施例涉及一种用于纠正在编码比特序列中的至少单比特错误的设备,其包括用于确定错误校正子的装置和用于纠正比特错误的装置。用于确定错误校正子的装置可以确定通过将校验矩阵与编码比特序列相乘而得出的编码比特序列的错误校正子。校验矩阵包括第一子矩阵、第二子矩阵和第三子矩阵,每个子矩阵包括多条线,每条线包括多个二进制分量。第一子矩阵的每条线的至少第一预定分量或第二预定分量包括第一比特值。进一步地,第二子矩阵包括彼此线性无关的线。第二子矩阵的每条线的第一预定分量和第二预定分量包括相同的第二比特值。第三子矩阵包括彼此线性无关的线,且第三子矩阵的每条线的第一预定分量或第二预定分量包括第一比特值。进一步地,如果第一比特值等于1,则子矩阵和第三子矩阵的所有线的第一预定分量的XOR求和等于第二比特值,以及第一子矩阵和第三子矩阵的所有线的第二预定分量的XOR求和等于第二比特值;如果第一比特值等于0,则第一子矩阵和第三子矩阵的所有线的第一预定分量的XNOR求和等于第二比特值,以及第一子矩阵和第三子矩阵的所有线的第二预定分量的XNOR求和等于第二比特值。另外,将校验矩阵与测试向量相乘的结果等于将第二子矩阵与结果向量相乘的结果,其中结果向量的至少一个分量包括第二比特值。用于纠正比特错误的装置可以基于所确定的编码比特序列的错误校正子来纠正在该编码比特序列中的比特错误。
根据本发明的一些进一步实施例可以涉及一种用于对有错误的编码比特序列进行解码的解码器1500,如图15中所示。解码器1500可以包括用于根据上述原理来纠正在编码比特序列中的比特错误的设备以及解码单元1510。解码单元1510可以对由用于纠正在编码比特序列中的比特错误的设备提供的纠正后的比特序列122进行解码,以获得解码后的比特序列1512。
图16示出根据本发明的实施例的用于纠正在编码比特序列中的至少单比特错误的方法1600的流程图。方法1600包括确定1610可通过将校验矩阵与编码比特序列相乘而得出的该编码比特序列的错误校正子。校验矩阵包括第一子矩阵、第二子矩阵和第三子矩阵,每个子矩阵包括多条线,每条线包括多个二进制分量。进一步地,第一子矩阵的每条线的至少第一预定分量或第二预定分量包括第一比特值。第二子矩阵包括彼此线性无关的线,以及第二子矩阵的每条线的第一预定分量和第二预定分量包括第二比特值。第三子矩阵包括彼此线性无关的线,且第三子矩阵的每条线的第一预定分量或第二预定分量包括第一比特值。进一步地,如果第一比特值等于1,则第一子矩阵和第三子矩阵的所有线的第一预定分量的XOR求和等于第二比特值,以及第一子矩阵和第三子矩阵的所有线的第二预定分量的XOR求和等于第二比特值;如果第一比特值等于0,则第一子矩阵和第三子矩阵的所有线的第一预定分量的XNOR求和等于第二比特值,以及第一子矩阵和第三子矩阵的所有线的第二预定分量的XNOR求和等于第二比特值。另外,将校验矩阵与测试向量相乘的结果等于将第二子矩阵与结果向量相乘的结果,其中结果向量的至少一个分量包括第二比特值。进一步地,所述方法1600包括基于所确定的编码比特序列的错误校正子来纠正1620在该编码比特序列中的比特错误。
另外,方法1600可以包括表示上述所提出的原理的一个或多个可选方面的进一步步骤。
虽然所述原理的一些方面已在设备的背景下进行了描述,但是显然,这些方面也表示对应方法的描述,其中块或装置对应于方法步骤或方法步骤的特征。类似地,在方法步骤的背景下描述的方面也表示对应设备的对应块或项或特征的描述。
根据某些实现要求,本发明的实施例可以在硬件中或在软件中实现。该实现能够使用上面存储有电子可读控制信号的数字存储介质来执行,所述数字存储介质例如软盘、DVD、蓝光光盘、CD、ROM、PROM、EPROM、EEPROM或闪速存储器,其与可编程计算机系统协作(或能够与之协作)以便执行相应的方法。因此,数字存储介质可以是计算机可读的。
根据本发明的一些实施例包括具有电子可读控制信号的数据载体,其能够与可编程计算机系统协作以便执行本文中描述的方法之一。
通常,本发明的实施例能够被实现为具有程序代码的计算机程序产品,当计算机程序产品在计算机上运行时该程序代码可操作用于执行方法之一。程序代码例如可以存储在非暂时可机读载体诸如盘或其他介质上。
其他实施例包括存储在可机读载体上的、用于执行本文中描述的方法之一的计算机程序。
换句话说,因此,创造性方法的实施例是计算机程序,该计算机程序具有用于在该计算机程序在计算机上运行时执行本文中描述的方法之一的程序代码。
因此,创造性方法的进一步实施例是非暂时数据载体(或数字存储介质或计算机可读介质),其包括记录于其上的用于执行本文中描述的方法之一的计算机程序。
因此,创造性方法的进一步实施例是表示用于执行本文中描述的方法之一的计算机程序的数据流或信号序列。该数据流或信号序列可以例如被配置为经由数据通信连接例如经由因特网来传输。
进一步实施例包括被配置为或适于执行本文中描述的方法之一的处理装置,例如计算机或可编程逻辑装置。
进一步实施例包括计算机,该计算机上安装有用于执行本文中描述的方法之一的计算机程序。
在一些实施例中,可编程逻辑装置(例如现场可编程门阵列)可以用于执行本文中描述的方法的功能的一些或全部。在一些实施例中,现场可编程门阵列可以与微处理器协作以便执行本文中描述的方法之一。一般地,方法优选用任何硬件设备来执行。
上述实施例仅仅说明了本发明的原理。要理解,本文中描述的布置和细节的修正和变型对于本领域技术人员来说将是显而易见的。因此,意图仅仅由待决的专利权利要求的范围来限定,而不是由经由本文中的实施例的描述和解释所呈现的特定细节来限定。
Claims (21)
1.一种用于纠正在编码比特序列中的至少单比特错误的设备,所述设备包括:
错误校正子发生器,配置为确定编码比特序列的错误校正子,其中所述错误校正子通过将校验矩阵(H)与编码比特序列相乘来得出,
其中所述校验矩阵(H)包括第一子矩阵(Hu)、第二子矩阵(Ha)和第三子矩阵(Hc),其中每个子矩阵包括多条线,其中每条线包括多个二进制分量,
其中第一子矩阵(Hu)的每条线的至少第一预定分量或第二预定分量包括第一比特值,
其中第二子矩阵(Ha)包括彼此线性无关的线,其中第二子矩阵(Ha)的每条线的第一预定分量和第二预定分量包括相同的第二比特值,
其中第三子矩阵(Hc)包括彼此线性无关的线,其中第三子矩阵(Hc)的每条线的第一预定分量或第二预定分量包括第一比特值,
其中如果第一比特值等于1,则第一子矩阵(Hu)和第三子矩阵(Hc)的所有线的第一预定分量的XOR求和等于第二比特值,以及第一子矩阵(Hu)和第三子矩阵(Hc)的所有线的第二预定分量的XOR求和等于第二比特值;或者,如果第一比特值等于0,则第一子矩阵(Hu)和第三子矩阵(Hc)的所有线的第一预定分量的XNOR求和等于第二比特值,以及第一子矩阵(Hu)和第三子矩阵(Hc)的所有线的第二预定分量的XNOR求和等于第二比特值,
其中将校验矩阵(H)与测试向量相乘的结果等于将第二子矩阵与结果向量相乘的结果,其中结果向量的至少一个分量包括第二比特值;以及
比特错误纠正器,配置为基于所确定的编码比特序列的错误校正子来纠正在该编码比特序列中的比特错误。
2.根据权利要求1的设备,其中测试向量中的与第一子矩阵(Hu)和第三子矩阵(Hc)的线的分量相乘的每个分量包括第一比特值,以及其中测试向量中的与第二子矩阵(Ha)的线的分量相乘的每个分量包括第二比特值。
3.根据权利要求1的设备,其中第一子矩阵(Hu)的线全部不同于第三子矩阵(Hc)的线。
4.根据权利要求1的设备,其中编码比特序列的错误校正子基于将第一子矩阵(Hu)与编码比特序列的第一组比特相乘、将第二子矩阵(Ha)与编码比特序列的第二组比特相乘、以及将第三子矩阵(Hc)与编码比特序列的第三组比特相乘来得出。
5.根据权利要求4的设备,其中第一组比特表示信息比特,第二组比特表示地址比特,以及第三组比特表示校验比特。
6.根据权利要求5的设备,包括可寻址存储器,其中编码比特序列的至少第一组比特和第三组比特被存储在用第二组比特指示的存储器单元的地址处。
7.根据权利要求4的设备,其中第一组比特中的至少单比特依赖于第二组比特中的至少一比特。
8.根据权利要求4的设备,其中与包括第二比特值的结果向量的所述至少一个分量相关联的、第二组比特中的一比特包括第一比特值。
9.根据权利要求4的设备,还包括:相同的比特值检测器,配置为提供信号,所述信号指示编码比特序列的第一组比特的所有比特和第三组比特的所有比特是否包括相同的比特值。
10.根据权利要求4的设备,其中编码比特序列的第二组比特的比特数小于或等于编码比特序列的第三组比特的比特数减2。
11.根据权利要求1的设备,其中校验矩阵(H)的每条线的预定多个分量的XOR求和等于相同的比特值。
12.根据权利要求1的设备,其中第一子矩阵(Hu)、第二子矩阵(Ha)和第三子矩阵(Hc)的每条线是相应子矩阵的一列,第一子矩阵(Hu)、第二子矩阵(Ha)和第三子矩阵(Hc)的线的第一预定分量表示校验矩阵(H)的一行,以及第一子矩阵(Hu)、第二子矩阵(Ha)和第三子矩阵(Hc)的线的第二预定分量表示校验矩阵(H)的另一行,或者其中第一子矩阵(Hu)、第二子矩阵(Ha)和第三子矩阵(Hc)的每条线是相应子矩阵的一行,第一子矩阵(Hu)、第二子矩阵(Ha)和第三子矩阵(Hc)的线的第一预定分量表示校验矩阵(H)的一列,以及第一子矩阵(Hu)、第二子矩阵(Ha)和第三子矩阵(Hc)的线的第二预定分量表示校验矩阵(H)的另一列。
13.根据权利要求1的设备,其中错误校正子发生器配置为通过将校验矩阵(H)与编码比特序列相乘来确定所述错误校正子。
14.根据权利要求1的设备,其中错误校正子发生器和比特错误纠正器被至少部分地一起实现。
15.根据权利要求1的设备,其中校验矩阵(H)的所有线的预定相同分量包括相同的比特值。
16.根据权利要求1的设备,其中校验矩阵(H)以分离形式来表示。
17.根据权利要求1的设备,其中校验矩阵(H)是缩短汉明码、缩短萧氏码或缩短BCH码的校验矩阵(H)。
18.根据权利要求1的设备,还包括:解码单元,配置为对来自比特错误纠正器的纠正后的比特序列进行解码。
19.一种用于纠正在编码比特序列中的至少单比特错误的设备,所述设备包括:
用于确定编码比特序列的错误校正子的装置,其中所述错误校正子通过将校验矩阵(H)与编码比特序列相乘来得出,
其中所述校验矩阵(H)包括第一子矩阵(Hu)、第二子矩阵(Ha)和第三子矩阵(Hc),其中每个子矩阵包括多条线,其中每条线包括多个二进制分量,
其中第一子矩阵(Hu)的每条线的至少第一预定分量或第二预定分量包括第一比特值,
其中第二子矩阵包括彼此线性无关的线,其中第二子矩阵的每条线的第一预定分量和第二预定分量包括相同的第二比特值,
其中第三子矩阵(Hc)包括彼此线性无关的线,其中第三子矩阵(Hc)的每条线的第一预定分量或第二预定分量包括第一比特值,
其中如果第一比特值等于1,则第一子矩阵(Hu)和第三子矩阵(Hc)的所有线的第一预定分量的XOR求和等于第二比特值,以及第一子矩阵(Hu)和第三子矩阵(Hc)的所有线的第二预定分量的XOR求和等于第二比特值;或者,如果第一比特值等于0,则第一子矩阵(Hu)和第三子矩阵(Hc)的所有线的第一预定分量的XNOR求和等于第二比特值,以及第一子矩阵(Hu)和第三子矩阵(Hc)的所有线的第二预定分量的XNOR求和等于第二比特值,
其中将校验矩阵(H)与测试向量相乘的结果等于将第二子矩阵与结果向量相乘的结果,其中结果向量的至少一个分量包括第二比特值;以及
用于基于所确定的编码比特序列的错误校正子来纠正在该编码比特序列中的比特错误的装置。
20.一种用于生成用于纠正长度为n的码字的至少1比特错误的码C的m位校正子S=(Sl,...,Sm)的电路,所述校正子具有校验矩阵H用于纠正在可寻址存储器中存储的比特的错误,其中存在第一组k比特u=u1,...,uk、第二组l比特a=a1,...,al以及第三组m比特c=cl,...,cm,以及第一组k比特和第三组m比特被存储在可寻址存储器中地址a下,其中在没有错误的情况下,从比特u=u1,...,uk和a=a1,...,al通过XOR连接来逻辑上得出比特c=cl,...,cm,n=k+l+m,其中所述电路具有n个输入,在该n个输入处施加比特u1,...,uk,a1,...,al,cl,...,cm,其中当施加地址a1,...,al时从存储器输出比特u1,...,uk,cl,...,cm,以及错误校正子S=Sl,...,Sm的值用下式来确定:
S=H·(u,a,c)T
且(u,a,c)T是行向量(u,a,c)和校验矩阵H的转置列向量,
其中校验矩阵H由三个子矩阵Hu,Ha,Hc组成,其中子矩阵Hu由H的前k个列组成,子矩阵Ha由H的接着l个列组成,以及子矩阵Hc由H的剩余m个列组成,以便应用下式:
H=(Hu,Ha,Hc),
其中具有每个不等于[0,0]的、Hu和Hc的列的第一预定分量和第二预定分量,且使得Hu的这些列和Hc的这些列的这些第一预定分量的逐分量的XOR求和以及Hu和Hc的这些列的第二预定分量的逐分量的XOR求和每个等于0,
其中Ha的列的第一预定分量的值和第二预定分量的值每个等于[0,0],
其中矩阵Ha的l个列是线性无关的,
其中矩阵Hc的m个列是线性无关的,
其中具有比特位置r,1≤r≤l,使得应用下式:
其中
a′1,...,a′r-1,a′r+1,...,a′l∈{0,1}
其中m+l+k≤2m-1且l≤m-2。
21.一种用于纠正在编码比特序列中的至少单比特错误的方法,所述方法包括:
确定编码比特序列的错误校正子,其中所述错误校正子通过将校验矩阵(H)与编码比特序列相乘来得出,
其中所述校验矩阵(H)包括第一子矩阵(Hu)、第二子矩阵(Ha)和第三子矩阵(Hc),其中每个子矩阵包括多条线,其中每条线包括多个二进制分量,
其中第一子矩阵(Hu)的每条线的至少第一预定分量或第二预定分量包括第一比特值,
其中第二子矩阵包括彼此线性无关的线,其中第二子矩阵的每条线的第一预定分量和第二预定分量包括相同的第二比特值,
其中第三子矩阵(Hc)包括彼此线性无关的线,其中第三子矩阵(Hc)的每条线的第一预定分量或第二预定分量包括第一比特值,
其中如果第一比特值等于1,则第一子矩阵(Hu)和第三子矩阵(Hc)的所有线的第一预定分量的XOR求和等于第二比特值,以及第一子矩阵(Hu)和第三子矩阵(Hc)的所有线的第二预定分量的XOR求和等于第二比特值;或者,如果第一比特值等于0,则第一子矩阵(Hu)和第三子矩阵(Hc)的所有线的第一预定分量的XNOR求和等于第二比特值,以及第一子矩阵(Hu)和第三子矩阵(Hc)的所有线的第二预定分量的XNOR求和等于第二比特值,
其中将校验矩阵(H)与测试向量相乘的结果等于将第二子矩阵与结果向量相乘的结果,其中结果向量的至少一个分量包括第二比特值;以及
基于所确定的编码比特序列的错误校正子来纠正在该编码比特序列中的比特错误。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/943520 | 2010-11-10 | ||
US12/943,520 US8539321B2 (en) | 2010-11-10 | 2010-11-10 | Apparatus and method for correcting at least one bit error within a coded bit sequence |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410667380.4A Division CN104393878A (zh) | 2010-11-10 | 2011-11-10 | 用于纠正在编码比特序列中的至少单比特错误的设备和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102468855A true CN102468855A (zh) | 2012-05-23 |
Family
ID=46020810
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103725589A Pending CN102468855A (zh) | 2010-11-10 | 2011-11-10 | 用于纠正在编码比特序列中的至少单比特错误的设备和方法 |
CN201410667380.4A Pending CN104393878A (zh) | 2010-11-10 | 2011-11-10 | 用于纠正在编码比特序列中的至少单比特错误的设备和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410667380.4A Pending CN104393878A (zh) | 2010-11-10 | 2011-11-10 | 用于纠正在编码比特序列中的至少单比特错误的设备和方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US8539321B2 (zh) |
CN (2) | CN102468855A (zh) |
DE (1) | DE102011085602B4 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103165193A (zh) * | 2013-03-01 | 2013-06-19 | 中国空间技术研究院 | 一种探测修正存储器两位错误的低冗余加固方法及电路装置 |
CN103886915A (zh) * | 2012-12-19 | 2014-06-25 | 英飞凌科技股份有限公司 | 用于校正包括邻近2比特错误的3比特错误的电路和方法 |
CN104464820A (zh) * | 2013-09-23 | 2015-03-25 | 英飞凌科技股份有限公司 | 电路装置和用于实现用于交叉校验码的校验位压缩的方法 |
CN107612561A (zh) * | 2017-09-30 | 2018-01-19 | 北京北方烽火科技有限公司 | 一种编码、译码方法及装置 |
CN111462807A (zh) * | 2019-01-18 | 2020-07-28 | 华邦电子股份有限公司 | 错误更正码存储器装置和码字存取方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8694872B2 (en) * | 2011-11-28 | 2014-04-08 | Texas Instruments Incorporated | Extended bidirectional hamming code for double-error correction and triple-error detection |
US9362953B2 (en) | 2013-08-02 | 2016-06-07 | Infineon Technologies Ag | Efficient error correction of multi-bit errors |
US20150055405A1 (en) * | 2013-08-23 | 2015-02-26 | Kabushiki Kaisha Toshiba | Memory device and memory system with sensor |
US9787329B2 (en) * | 2015-10-15 | 2017-10-10 | Apple Inc. | Efficient coding with single-error correction and double-error detection capabilities |
JP2019109806A (ja) * | 2017-12-20 | 2019-07-04 | ルネサスエレクトロニクス株式会社 | データ処理装置及びデータ処理方法 |
WO2020237377A1 (en) | 2019-05-27 | 2020-12-03 | École De Technologie Supérieure | Methods and systems for bit error determination and correction |
US11734114B2 (en) * | 2020-12-09 | 2023-08-22 | Advanced Micro Devices, Inc. | Programmable error correction code encoding and decoding logic |
DE102021133678A1 (de) * | 2021-01-20 | 2022-07-21 | Infineon Technologies Ag | Korrektur von bitfehlern |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109707A1 (en) * | 2006-11-03 | 2008-05-08 | Timothy Dell | Forward error correction encoding for multiple link transmission capatible with 64b/66b scrambling |
CN101621299A (zh) * | 2008-07-04 | 2010-01-06 | 华为技术有限公司 | 一种突发纠错的方法、设备和装置 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3623155A (en) * | 1969-12-24 | 1971-11-23 | Ibm | Optimum apparatus and method for check bit generation and error detection, location and correction |
US3714629A (en) | 1971-06-01 | 1973-01-30 | Ibm | Double error correcting method and system |
US4713816A (en) * | 1986-02-25 | 1987-12-15 | U.S. Philips Corporation | Three module memory system constructed with symbol-wide memory chips and having an error protection feature, each symbol consisting of 2I+1 bits |
US5657331A (en) * | 1995-03-13 | 1997-08-12 | Samsung Electronics Co., Ltd. | Method and apparatus for the generation of simple burst error correcting cyclic codes for use in burst error trapping decoders |
US5938773A (en) * | 1996-03-14 | 1999-08-17 | Intel Corporation | Sideband signaling with parity bit schemes |
US5978953A (en) * | 1996-12-19 | 1999-11-02 | Compaq Computer Corporation | error detection and correction |
US6003144A (en) * | 1997-06-30 | 1999-12-14 | Compaq Computer Corporation | Error detection and correction |
US6604222B1 (en) * | 1999-04-30 | 2003-08-05 | Rockwell Collins, Inc. | Block code to efficiently correct adjacent data and/or check bit errors |
US6751769B2 (en) * | 2000-06-06 | 2004-06-15 | International Business Machines Corporation | (146,130) error correction code utilizing address information |
JP2002056671A (ja) | 2000-08-14 | 2002-02-22 | Hitachi Ltd | ダイナミック型ramのデータ保持方法と半導体集積回路装置 |
US6732325B1 (en) * | 2000-11-08 | 2004-05-04 | Digeo, Inc. | Error-correction with limited working storage |
US7093183B2 (en) * | 2001-02-28 | 2006-08-15 | International Business Machines Corporation | Symbol level error correction codes which protect against memory chip and bus line failures |
JP3565798B2 (ja) * | 2001-06-14 | 2004-09-15 | 英二 藤原 | バースト誤りパターン生成方法及びバーストおよびバイト誤り検出・訂正装置 |
WO2003023973A1 (fr) * | 2001-08-28 | 2003-03-20 | Linkair Communications, Inc. | Procede de decodage repete pour le traitement en cascade de code de bloc sur la base du decodage du syndrome de sous-code |
JP4205396B2 (ja) | 2002-10-30 | 2009-01-07 | エルピーダメモリ株式会社 | 半導体集積回路装置 |
US7191380B2 (en) * | 2003-09-10 | 2007-03-13 | Hewlett-Packard Development Company, L.P. | Defect-tolerant and fault-tolerant circuit interconnections |
JP4036338B2 (ja) * | 2005-03-04 | 2008-01-23 | 国立大学法人東京工業大学 | 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置 |
DE102005022107B9 (de) * | 2005-05-12 | 2016-04-07 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge |
JP4547313B2 (ja) | 2005-08-01 | 2010-09-22 | 株式会社日立製作所 | 半導体記憶装置 |
JP2007087530A (ja) * | 2005-09-22 | 2007-04-05 | Rohm Co Ltd | 信号復号方法、信号復号装置および信号記憶システム |
US7844877B2 (en) | 2005-11-15 | 2010-11-30 | Ramot At Tel Aviv University Ltd. | Method and device for multi phase error-correction |
KR20070063851A (ko) * | 2005-12-15 | 2007-06-20 | 삼성전자주식회사 | 패리티 검사 행렬, 패리티 검사 행렬 생성 방법, 인코딩방법 및 에러 정정 장치 |
DE102006005836B4 (de) | 2006-02-08 | 2009-01-02 | Infineon Technologies Ag | Schaltungsanordnung und Verfahren zum Erzeugen von zur Fehlererkennung bei einer digitalen Schaltung auswertbaren Kontrollbits und Anordnung zum Überwachen einer digitalen Schaltung |
CN100571045C (zh) * | 2008-03-03 | 2009-12-16 | 炬才微电子(深圳)有限公司 | 一种解码伴随式的计算方法、电路及解码器 |
KR101449750B1 (ko) * | 2008-03-05 | 2014-10-15 | 삼성전자주식회사 | 저밀도 패리티 검사 부호 생성 장치 및 방법 |
CN101277119B (zh) * | 2008-05-14 | 2010-06-02 | 清华大学 | 里德所罗门码解码器硬件复用方法及其低硬件复杂度解码装置 |
KR101506655B1 (ko) * | 2008-05-15 | 2015-03-30 | 삼성전자주식회사 | 메모리 장치 및 메모리 데이터 오류 관리 방법 |
CN101814922B (zh) * | 2009-02-23 | 2013-06-19 | 国际商业机器公司 | 基于bch码的多位错纠错方法和装置以及存储系统 |
US8887026B2 (en) * | 2009-04-14 | 2014-11-11 | Ben Gurion University Of The Negev | Efficient detection of errors in associative memory |
US8381083B2 (en) * | 2009-10-22 | 2013-02-19 | Arm Limited | Error control coding for single error correction and double error detection |
JP5353655B2 (ja) * | 2009-11-18 | 2013-11-27 | 富士通株式会社 | エラー検出・訂正符号生成回路及びその制御方法 |
US8443249B2 (en) * | 2010-04-26 | 2013-05-14 | Lsi Corporation | Systems and methods for low density parity check data encoding |
CN101873143B (zh) * | 2010-06-01 | 2013-03-27 | 福建新大陆电脑股份有限公司 | 一种rs纠错码解码器中的伴随式计算电路及其计算方法 |
-
2010
- 2010-11-10 US US12/943,520 patent/US8539321B2/en active Active
-
2011
- 2011-11-02 DE DE102011085602.1A patent/DE102011085602B4/de active Active
- 2011-11-10 CN CN2011103725589A patent/CN102468855A/zh active Pending
- 2011-11-10 CN CN201410667380.4A patent/CN104393878A/zh active Pending
-
2013
- 2013-08-26 US US13/975,621 patent/US10200065B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109707A1 (en) * | 2006-11-03 | 2008-05-08 | Timothy Dell | Forward error correction encoding for multiple link transmission capatible with 64b/66b scrambling |
CN101621299A (zh) * | 2008-07-04 | 2010-01-06 | 华为技术有限公司 | 一种突发纠错的方法、设备和装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103886915A (zh) * | 2012-12-19 | 2014-06-25 | 英飞凌科技股份有限公司 | 用于校正包括邻近2比特错误的3比特错误的电路和方法 |
CN103165193A (zh) * | 2013-03-01 | 2013-06-19 | 中国空间技术研究院 | 一种探测修正存储器两位错误的低冗余加固方法及电路装置 |
CN103165193B (zh) * | 2013-03-01 | 2016-03-02 | 中国空间技术研究院 | 探测修正存储器两位错误的低冗余加固方法及电路装置 |
CN104464820A (zh) * | 2013-09-23 | 2015-03-25 | 英飞凌科技股份有限公司 | 电路装置和用于实现用于交叉校验码的校验位压缩的方法 |
US9645883B2 (en) | 2013-09-23 | 2017-05-09 | Infineon Technologies Ag | Circuit arrangement and method for realizing check bit compacting for cross parity codes |
CN104464820B (zh) * | 2013-09-23 | 2018-08-14 | 英飞凌科技股份有限公司 | 电路装置和用于实现用于交叉校验码的校验位压缩的方法 |
CN107612561A (zh) * | 2017-09-30 | 2018-01-19 | 北京北方烽火科技有限公司 | 一种编码、译码方法及装置 |
CN111462807A (zh) * | 2019-01-18 | 2020-07-28 | 华邦电子股份有限公司 | 错误更正码存储器装置和码字存取方法 |
CN111462807B (zh) * | 2019-01-18 | 2022-06-07 | 华邦电子股份有限公司 | 错误更正码存储器装置和码字存取方法 |
Also Published As
Publication number | Publication date |
---|---|
US20120117448A1 (en) | 2012-05-10 |
CN104393878A (zh) | 2015-03-04 |
US20130346834A1 (en) | 2013-12-26 |
US10200065B2 (en) | 2019-02-05 |
DE102011085602B4 (de) | 2020-10-22 |
US8539321B2 (en) | 2013-09-17 |
DE102011085602A1 (de) | 2012-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102468855A (zh) | 用于纠正在编码比特序列中的至少单比特错误的设备和方法 | |
US9450613B2 (en) | Apparatus and method for error correction and error detection | |
CN101946230B (zh) | 用于检测和校正所接收的符号串中的定相突发差错、删除、符号差错和位差错的方法和系统 | |
US7404134B2 (en) | Encoding/decoding device using a reed-solomon encoder/decoder | |
CN101814922B (zh) | 基于bch码的多位错纠错方法和装置以及存储系统 | |
US8806295B2 (en) | Mis-correction and no-correction rates for error control | |
CN101099138A (zh) | 限制了错误字节数的字节内多个斑点字节错误纠正/检测方法和装置 | |
KR20090086523A (ko) | 에러가 발생할 수 있는 확률을 기초로 하여 에러가 보정된 비휘발성 메모리 | |
Gabidulin et al. | Error and erasure correcting algorithms for rank codes | |
US20120331368A1 (en) | Systems and methods for performing concatenated error correction | |
Freudenberger et al. | A configurable Bose–Chaudhuri–Hocquenghem codec architecture for flash controller applications | |
CN100428176C (zh) | 根据(18,9)dec-ted码从数据字生成码字、对其解码的方法和装置 | |
CN103886915A (zh) | 用于校正包括邻近2比特错误的3比特错误的电路和方法 | |
CN102546095B (zh) | 用于检测编码二进制字中的错误的设备和方法 | |
JPH0736717A (ja) | 単一記号エラーと単一ビット・エラー検出のためのエラー訂正方法及び装置 | |
CN102487312A (zh) | 用于检测多个编码二进制字中的错误的设备和方法 | |
US20180122494A1 (en) | Raid decoding architecture with reduced bandwidth | |
TWI385512B (zh) | 在非揮發性半導體記憶體陣列中儲存資料及解碼儲存其中的資料之方法、非揮發性半導體及快閃記憶體系統、及管理快閃記憶體中之資料的方法 | |
Das et al. | Efficient one-step decodable limited magnitude error correcting codes for multilevel cell main memories | |
CN103151078A (zh) | 一种存储器检错纠错码生成方法 | |
US8788915B2 (en) | Apparatuses and methods for encoding using error protection codes | |
Kim et al. | Hamming product code with iterative process for NAND flash memory controller | |
CN104917535A (zh) | 用于分组码的高阶伴随式计算器和计算高阶伴随式的方法 | |
US20170220417A1 (en) | Method of operating a memory device | |
CN101142746A (zh) | 纠错码 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C05 | Deemed withdrawal (patent law before 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120523 |