CN1113474C - Crc/edc校验器系统和方法 - Google Patents
Crc/edc校验器系统和方法 Download PDFInfo
- Publication number
- CN1113474C CN1113474C CN95196066A CN95196066A CN1113474C CN 1113474 C CN1113474 C CN 1113474C CN 95196066 A CN95196066 A CN 95196066A CN 95196066 A CN95196066 A CN 95196066A CN 1113474 C CN1113474 C CN 1113474C
- Authority
- CN
- China
- Prior art keywords
- byte
- error pattern
- added
- add
- buffer
- 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.)
- Expired - Lifetime
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
-
- 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/01—Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
当在纠正扫描中正在纠正一块数据时,EDC/CRC校验器(70)执行EDC/CRC校验,借此免除块纠正后的用于EDC/CRC目的的缓冲器访问。在纠正扫描中,累计一个EDC/CRC和,在完成该块的扫描时,块中的零EDC/CRC字节证实已纠正了该块。在块的单一纠正扫描中,将未纠正的最新码字的字节加在累计和上。(必要时)纠正前一码字中与最新码字的字节具有字节同步关系的字节,并(在发生纠正时)将包含用来纠正前一码字的字节的错误模式的错误模式因子也加在累计和上。在示出的实施例中,将块概念化成具有码字的列,字节同步关系为使正在累计一个未纠正的字节时,对紧接的前一码字的对应字节进行纠正。本发明的各实施例能同时处理多个码字。
Description
本申请与下列同时提交的专利申请有关:名为“多用途纠错计算电路”的Chris Zook于1994年9月16日提交的美国专利申请(序列号为08/306,918);名为“通用纠错系统”的Chris Zook于1994年9月16日提交的美国专利申请(序列号为08/307,259);通过引用将上文全部结合在此。
发明领域
本发明涉及纠错系统,包括但不限于利用CRC(循环冗余码)校验特征的纠错系统。
背景技术
诸如盘驱动器等信息存储装置通常具有纠错能力。从装置转换的信息通常以字节的形式存储在缓冲器中。存储的信息通常格式化成多个字节块。对于CD(密致盘)盘驱动器,缓冲器包含多个扇区(在处理计算机数据时)或帧(在处理数字音频数据时),在这里统称为块。
根据纠错能力,各扇区通常具有多个CRC或EDC(检错码)校验字节。图2例示组合成86列每列26个字节的块。在块内,各列字节构成一个列码字,各列的最后两个字节构成列码字的ECC(纠错码)部分而各列的其余部分(即前面24个字节)构成该列码字的数据部分。例如,字节0000,0086,0172,......,1978构成列码字CW0的数据部分;字节0001,0087,0173,...,1979构成列码字CW1的数据部分;以此类推。如图2中所示,各块的最后四个数据字节(诸如字节2060,2061,2062,2063)包含纠错信息并相应地称作EDC或CRC字节。在某些格式中,CRC字节不一定是一块的数据部分的最后字节。例如,不完全充满图2的块的数据格式可将CRC字节放在数据后面而在CRC字节后面放入零的填充字节直到填满块为止。
除了纠错多项式的运算之外,CRC或EDC校验字节提供额外的校验措施。通常,CRC字节是通过将数据字节(或者如本例中的位)作为字节值(或位值)数据多项式D(X)的系数对待并计算D(X)Xn-k而生成的,其中K为数据码元数,n-k为CRC码元数,而G(X)为CRC发生器多项式。对于密致盘(CD)驱动器,CRC发生器是位值的。
历史上,利用CRC或EDC字节的缓冲器校验发生在缓冲器已校正之后。具体地,在纠错阶段中,缓冲器的字节是作为码字被访问的并用纠错多项式在上面运算。纠错多项式在码字上的运算导致指示码字中出错的字节的出错指针以及用来校正这些指针所定位的字节的错误模式的生成。生成出错指针与错误模式之后,为了纠正指针指示的字节的目的而访问缓冲器中的字节。
纠正了指针指示的字节之后,为CRC或EDC校验的特殊目的再度访问缓冲器。在CRC或EDC校验中,将由缓冲器中所有字节(包括CRC字节)构成的多项式除以CRC发生器多项式。如果余数为零,便确认该块的正确纠正。
虽然CRC或EDC特征有利地提供附加的数据完整性保证,用于CRC/EDC校验特殊需要的缓冲器访问降低了总体运算速度。
EDC/CRC校验器在纠正扫描(PASS)中正在纠正一块数据时执行EDC/CRC校验,借此避免块纠正之后为EDC/CRC目的的缓冲器访问。在纠正扫描中,累计EDC/CRC和,而在该块完成该扫描时如果该块中的EDC/CRC字节证实该块已被纠正则该和为零。在块的单一纠正扫描中,将未纠正的最新码字加在累计和上。(必要时)纠正与最新码字的字节具有字节同步关系的前一码字的字节,以及(在发生纠正时)还将包含用来纠正前一码字的字节的错误模式的错误模式因子加在累计和上。在例示的实施例中,将块概念化成具有码字的列及字节同步关系为当正在累计一个未纠正的字节时,下一个前一码字的对应字节发生纠正。
发明概述
从而,本发明的EDC/CRC校验器允许在正用于最新码字CWn的校正子生成的块字节上执行CRC校验,同时为前一码字(诸如CWn-1)的对应位置的字节执行纠正。在为前一码字的对应字节执行纠正时,也将用于前一码字的对应字节的错误模式因子加在累计和上,因为早先已将这一对应字节作为未纠正的字节加在该和上。实际上,错误模式因子为错误模式的常数倍。常数倍的值取决于所实现的字节位置同步关系。
有利地,本发明的EDC/CRC校验器进行EDC/CRC校验而不需要对缓冲器的单独访问。再者,本发明与并不完全充满块并在数据结束后放置CRC字节及在CRC字节后面填充零的填充字节直到充满块为止的数据格式是兼容的。
从下面对附图中所示的较佳实施例的更具体的描述中,本发明的上述与其它目的、特征及优点将是显然的,附图中的参照字符在全部各种视图中都指相同的部件。附图没有必要按比例,而是将重点放在说明本发明的原理上。
附图说明
图1为利用按照本发明的EDC/CRC校验器的示范性纠错系统的示意性方框图。
图2展示存储在缓冲器中的一个数据扇区,该扇区概念化成以行与列存储。
图3A为展示按照本发明的一个实施例的EDC/CRC校验器电路的示意图。
图3B为展示按照本发明的实施例的EDC/CRC校验器电路的示意图,其中数据字节与错误模式是基本上可以同时访问的。
图4A为展示按照本发明的实施例的EDC/CRC校验器电路的示意图,其中一次可以处理两个码字(诸如两列)。
图4B为展示与图4A的电路等效的EDC/CRC校验器电路的示意图。
图4C为展示按照本发明的实施例的EDC/CRC校验器电路的示意图,其中一次可以处理两个码字(诸如两列)并且其中的数据字节与错误模式是基本上可以同时访问的。
图5展示概念化为分成两个交错的块的一个缓冲器,各块依次具有概念化为组织成行与列的字节。
图6为描述包含在EDC/CRC校验操作中的步骤的流程图。
图7为展示图4A的校验器的面向芯片的实现的示意性方框图。
发明详述
图1示出通过系统控制器10与缓冲器(一般性地用虚线15描绘)通信的纠错系统。缓冲器中存储有多个诸如图2中所示的块。图1的纠错系统还包括一个发生器或发生部件20(诸如用于生成校正子);一个计算器或计算部件30(诸如用于计算错误模式);一个校正器或校正部件60;及一个EDC校验器部件70。图1的纠错系统的全部活动都由控制器10监控,诸如利用在总线CBUS上传输的控制与其它信号。
如图1中所示,将EDC/CRC校验器70连接成在线ERR上接收来自校正器60的错误模式及在线GDAT上接收缓冲器数据。系统控制器10利用控制总线CBUS监控EDC/CRC校验器70以及校正器60与缓冲器存取的全体操作。参照名为“通用纠错系统”的Chris Zook在1994年9月16日提交的美国专利申请(序列号为08/307,259),在密致盘(CD)驱动器的上下文中理解系统控制器的操作与校正,通过引用将其结合在此。然而,应理解本发明的原理不限于这一实例,而是在广义上可应用于EDC/CRC校验。
如下面更详细地描述的,在系统控制器10的监控下,EDC/CRC校验器70有利地与校正器60协同操作在缓冲器正在校正字节的同一扫描中执行校正准确性的EDC/CRC验证。
图3A示出适用于处理数据(如存储在图2的缓冲器中)的EDC/CRC校验器及用于说明本发明的原理的功能示意图。图3A的校验器70的特色为以累计寄存器702的形式的存储器。累计寄存器702是由寄存器馈入开关或MUX704馈入的,该开关是由最终连接到系统控制器10上的选择线705操作的。寄存器馈入MUX704连接在三个交替的信号源上:加法器706;行乘法器708;及列乘法器710。行乘法器708连接在加法器712上。寄存器702的内容-余数或累计和-可在寄存器输出线714上获得。寄存器输出线714连接在列乘法器710、加法器712与加法器706上。
将来自缓冲器的未纠正的数据字节作用在去往与门715的第一端的线GDAT上。与门715的第二端接收来自系统控制器10的信号NOT_LAST_COL。只要校验器70仍在为求和目的从缓冲器中获取数据字节,信号NOT_LAST_COL有效地选通来自缓冲器的未纠正的数据字节,通过与门715作用在加法器712上。
加法器712将寄存器702中的累计和(在线714上获取)与来自缓冲器的未纠正的数据字节(作用在线GDAT上)加在一起。将加法器712产生的和作为输入作用在行乘法器708上。如上所述,来自行乘法器708的输出为作用在MUX704上的可选择输入之一。
携带来自校正器60的错误模式的线ERR连接在乘法器716上。为了在当前码字与前一码字之间提供字节同步位移(即列位移),乘法器716乘以一个常数X8mod G(X)以生成一个错误模式因子。将乘法器716生成的积(错误模式因子)作用在加法器706的第一输入端上,加法器706的第二输入端连接在上述寄存器输出线714上。
图3A中,行乘法器708的乘法常数为X8·86mod G(X),它的作用为前进到下一行(即在缓冲器中前进86个字节,每一字节8位)。列乘法器710的乘法常数为X-(86·24-1)·8mod G(X),它的作用为从一个列码字的数据部分的最后字节移动到下一列码字的顶部(即在缓冲器中向后移动2063字节,每一字节8位)。
图3A中的说明包括未纠正的数据的一个字节(在线GDAT上)与块中另一字节位置同步的字节的错误模式不能立即一起获得,而是顺序地作用在校验器上(首先是错误模式,随后是数据字节)的情况。另一方面,图3B的实施例示出一个校验器70′,其中未纠正的数据字节与错误模式两者是可以同时访问的。图3B的实施例中,去掉加法器706,使MUX704成为一个两输入端开关,并将乘法器716的输出作为第三输入作用在加法器712上。
图4A示出配置成处理两个码字(诸如一次两列)的校验器70″,如为了性能原因在某些实施例中可能希望的。图4A的实施例可用于诸如将缓冲器概念化成包含两个交错的块及一次处理缓冲器的两个码字时。例如,图5示出两个交错的块(偶块与奇块),块中各列中的字节构成一个列码字。这便是,表示为0000,0043,0086,...,0989的字节构成偶块的第一列码字的数据部分;字节0001,0044,0087,...,0990构成偶块的第二列码字的数据部分,以此类推到各偶块与奇块中总数为43个列码字。再者,如图5中所示,各块的最后两个字节(具体地表示为1030,1031的字节)为EDC或CRC字节。
图4A的校验器70″包含一个累计寄存器702″。对寄存器702″的馈入是由开关或MUX704″控制的,如用选择信号705″控制的。校验器70″接收四个输入信号:一个低位数据输入信号DATL;一个低位错误模式输入信号ERRL;一个高位数据输入信号DATH;及一个高位错误模式输入信号ERRH。参照图5的交错块情况,例如,低位输入可对应于偶块而高位输入可对应于奇块。即,DATL可以是来自偶块的列码字CWevenN的所选择的字节的未纠正的数据;ERRL可以是用于一个字节(在列码字CWevenN-1中)的错误模式,该字节是与列码字CWevenN的选择的字节有规定的字节同步关系的;DATH可以是来自奇块的列码字CWoddN的所选择的字节的未纠正的数据;ERRH可以是用于一个字节(在列码字CWoddN-1中)的错误模式,该码字是与列码字CWoddN的所选择的字节有同步关系的。
校验器70″还包括5个乘法器,包含列乘法器710″;行乘法器708″;及分别设置在线DATH、ERRL与ERRH上的乘法器750、760与770。乘法器708”、710”、750、760与770的乘法常数由表1提供。
表1
乘法器 | 乘法常数 |
708″ | x86·8modG(x) |
710″ | x-(86·24-2)8modG(x) |
750 | x8modG(x) |
760 | x16modG(x) |
770 | x24modG(x) |
乘法器750、760、770的输出端连接在开关或MUX780的相应输入端上。MUX780的输出端连接在加法器790的第一输入端上;加法器790的第二输入端连接在寄存器702″的输出线714″上。加法器790的输出端连接在MUX704″的第一输入端上,MUX704″的其它两个输入端连接在乘法器708″与710″的输出端上。如图3A实施例中,线DATL具有与门715″连接在其上用于只要信号NOT_LAST_COL为on时便通过它选通数据字节。
图4B示出基本上是图4A的电路70″的等效物的校验器电路70。图4B的校验器电路70与图4A的电路70″有少许不同。第一差别涉及信号DATL16、DATH16、ERRH16、及ERRL16的格式,它们是转换成16位值的。具体地,ERRH16为通过连接ERRH与8个零位而得到的一个16位值,ERRH在高位位置上。ERRL16是通过连接8个零位与ERRL得到的一个16位值,ERRL在低位位置上。DATH16与DATL16分别以ERRH16与ERRL6类似的方式构成。由于连接以前错误与数据字节各为8位长度而CRC多项式为16位长度,ERR或DAT乘以X8为简单地从低8位移位到高8位,并且(如下面讨论的)方便了图4B中的乘法器765的使用而不是图4A的乘法器750、760与770。
图4B与图4A的第二差别为线ERRH16与ERRL16馈入MUX767,后者又依次馈入乘法器765。乘法器765的乘法常数为X16mod G(X)。乘法器765与DATH16两者都连接在MUX780上。MUX780的输出端连接加法器790上。
图7示出提供用于以两个16位多项式进行两个校验的两个CRC/EDC电路的图4B的面向芯片的实现。图7的校验器70包括一对左乘法器(premultiplier)芯片730(0),730(1);一对累计寄存器732(0),732(1);及一个EDC比较器734。在校验器70中,两个电路(通过各自的左乘法器730(0)、730(1))接收相同的错误模式后面跟着相同的数据。
图7中,左乘法器730(0)利用多项式X16+X15+X2+1,而左乘法器730(1)利用多项式X16+X2+X+1。对于图4B中所示的各乘法器,例如,图7中的各左乘法器730具有其本身的异或逻辑门组。用于左乘法器730的一个乘法器的逻辑门组的配置等效于用该乘法器独有的一个16×16二进制矩阵去乘对该特定乘法器的输入信号(诸如配对行与列并取其内积)以得出一个16位输出信号。如上面相对于乘法以前的信号DATL16、DATH16、ERRH16与ERRL16所讨论的,输入信号(例如诸如DATL等8位输入矢量)是在一端或另一端上用8个零填充以构成用以乘法的(例如产生矢量DATL16)一个16位矢量的。
各乘法器的输出矢量的位为输入矢量的位的线性组合并从而能用矩阵乘法得出,即〔0〕=〔I〕〔T〕K,其中〔I〕与〔0〕为位0在右边的输入与输出行矢量,而〔T〕为用于乘以XmodG(X)的矩阵。
对于左乘法器730(0),说明乘法器765的乘法的16×16二进制矩阵提供在表2中;用于行乘法器708″的矩阵提供在表3中;用于列乘法器710″的矩阵提供在表4中。对于左乘法器730(1),说明乘法器765的乘法的16×16二进制矩阵提供在表5中;用于行乘法器708″的矩阵提供在表6中;用于列乘法器710″的矩阵提供在表7中。
作为上文的一个实例,ERRH·X24modG1(x)=ERRH·X8·X16mod G1(x)=ERRH16·X16mod G1(x)
[I]=[E 0 E 1 E 2...E70000000]输出的位0为
E 0 +E 2 +E 3 +E 4 +E 5 +E 6 +E 7 .
与图3A相似,图4A与图4B的示例包含用于块的另一字节位置同步的字节的未纠正的两个字节(在线GDAT上)与两个错误模式不能立即一起获得的情况,而是顺序地作用在校验器70″上(首先是错误模式,后随数据字节)。图4C实施例与图4A实施例不同之处在于图4C的校验器70拥有基本上同时可获得的数据字节与错误模式的对。用于图4C实施例的行与列乘法器常数与图4A实施例的那些相同。
在图4C实施例中,校验器70″″包括由列乘法器710″″或行乘法器708″″(通过两输入端MUX705″″)馈入的寄存器702″″。寄存器输出线714″″连接在加法器790″″的第一输入端上,加法器790″″的其它四个输入端连接在各自的线DATL、DATH、ERRL及ERRH上。线DATH、ERRL及ERRH分别具有连接在其上的乘法器750″″、760″″及770″″。加法器790″″的输出端作用在行乘法器708″″的输入端上。与门715″″设置在线DATL与DATH上。
操作
如上面参照图2描述的,例如,本发明的一个扇区包括86列的一块,块中每一列中的字节构成一个码字。对于CRC/EDC校验目的,只利用码字的数据部分。从而除非另有规定,此后所用的“码字”只指码字的数据部分而言(不包含码字的ECC部分)。例如,表示为0000、0086、0172、...1978的字节构成第一列码字的数据部分;字节0001,0087,0173,...1979构成第二码字的数据部分,并依此类推到块中总共86个码字。再者,如图1中所示,各块的最后四个数据字节(具体地表示为诸如字节2060,2061,2062,2063)为BDC或CRC字节。
图7中示出包含在系统控制器对EDC/CRC的监控中的步骤。在步骤S2中,将计数器ROWCOUNT与COLCOUNT的值以及累计寄存器702中的值(REGSUM)初始化为零。同时将最后列标志(LASTCOL)初始化为假。初始化步骤S2之后,便执行包括偶数编号的步骤S4至S22的循环。
此循环开始时(步骤S4),作出判定是否对正在与用ROWCOUNT与COLCOUNT的当前值引用的字节有同步字节关系的缓冲器中的字节进行纠正。由于在所示的实施例中,字节同步关系是使前一码字(即对于前一码字的字节ROWCOUNT,即〔COLCOUNT-1,ROWCOUNT〕)发生纠正,在为缓冲器中的第一列码字执行该循环时将不实现纠正。
具体地,对于所示的实施例,字节位置同步为在步骤S2判定对于块的字节(COLCOUNT-1,ROWCOUNT)是否有错误模式存在。如上所述,在处理一块的第一码字时步骤1608的判定将是否定的。然而,在处理以后的列码字中的判定可代表性地表示如下:当用ROWCOUNT与COLCOUNT的当前值访问图1的字节0001时,关于错误模式的生成的判定是对字节0000进行的;当ROWCOUNT与COLCOUNT的当前值指示图1的字节0087时,有关错误模式生成的判定是对字节0086进行的;等等。应理解本发明不限于这一特定字节同步关系,只要根据整个系统的其它考虑合适也能采用其它位移(诸如不同程度的列位移)。
对于对应于第一码字以外的其它码字的循环的执行,前一码字的对应字节可能需要纠正。需要纠正时,在步骤S6上将用于同步字节(诸如前一码字的同步字节)的错误模式因子加到寄存器702中。该错误模式因子是通过用乘法器716将错误模式(E(X),信号ERR所携带的)乘以一个乘法器常数(X8mod·G(X))而得到的。换言之,在步骤S6上寄存器702得到REGSUM+E(X)X8mod G(X)。同步字节从最新访问的块的字节位移一列(即一个字节或8位)这一事实便是所同步的字节的错误模式必须乘以X8modG(X)的原因。在循环的同一次执行中,步骤S6中所用的错误模式也用来纠正缓冲器中的块中的数据字节。
在步骤S8上判定是否已将来自缓冲器的所有未纠正的数据字节都加入寄存器702中(即COLCOUNT是否已超过了缓冲器中的码字数)。这一判定是通过校验标志LASTCOL的值进行的。如果尚未加上来自缓冲器的全部未纠正的数据字节,执行从步骤S10继续进行。否则,执行从步骤S12继续进行。
在步骤S10上,校验器70从块中得到下一个未纠正的数据字节。具体地,在步骤S10上来自块中的下一未纠正数据字节为数据字节(COLCOUNT,ROWCOUNT)。对于循环的第一次执行,得到的第一字节将是字节0000。对于循环的继续进一步执行,在步骤S10上以ECC列码字的次序访问块中其它字节(诸如,字节0086,0172,...,1978,0001,0087,...,1979,0002,...,2063)。在步骤S10上,将步骤S10得到的字节作用(在线GDAT上)并加(用加法器712)到寄存器702中的累计和(REGSUM)上。再将加法器712的和乘以行乘法器708的行前进乘法常数X86·8mod G(X),并将积存储在寄存器702中。从而,在步骤S10上,将下一个未纠正的数据字节因子D(X)X8·86mod G(X)加在寄存器702中的值(REGSUM)上。
当来自该块的全部未纠正的数据字节都已加到寄存器702中时(诸如在步骤S10上)便执行步骤S12,并且只进行处理最后的码字的错误模式因子。在步骤S12上,将寄存器702的内容乘以行乘法器708的乘法常数X86·8mod G(X)。
在执行了步骤S10或S12之一之后,在步骤S14上将ROWCOUNT的值增加一。结果在步骤S16上判定增加后的ROWCOUNT值不等于24,为当前码字的下一字节执行在步骤S4上开始的循环。然而,如果增加后的ROWCOUNT值等于24,则执行步骤S18。ROWCOUNT的值不允许超过24,因为在每一个列码字中只有24个数据字节。
在步骤S18上,有鉴于前进到一个新列,列乘法器710的作用为将寄存器702的内容乘以列调整常数X-(86·24-1)·8mod G(X)。
步骤S18之后,在步骤S20上,将ROWCOUNT复位到零并将COLCOUNT增加一。步骤S22校验是否设置了标志LASTCOL。如果未设置标志LASTCOL,(在步骤S24上)进行校验看看COLCOUNT的值是否超过了最后一列的号码(诸如COLCOUNT为86)。如果尚未超过该块中最后一列(诸如最后码字),返回到步骤S2去为该块中新码字的第一字节继续执行。否则,在返回到步骤S2去为块中的最后码字处理任何错误模式之前,在步骤S26上将标志LASTCOL设置为真。
将用于块中最后码字的错误模式因子(如果有的话)加入寄存器702之后,标志LASTCOL设定为“真”导致(在步骤S22)执行跳转至步骤S28。在步骤S28上,对寄存器702的值(即值REGSUM)是否为零作出判定。在所有循环完成时寄存器702中的值为用CRC发生器多项式去除缓冲器中所有字节(包含CRC字节)构成的多项式时的余数。寄存器702的零值证实校正器60所执行的纠错是正确的。
从而可以看出将块中有可能受到破坏(即未纠正)的数据字节加到寄存器702中在时间上是与将块中位置上同步的字节的错误模式因子(如果有的话)加入寄存器702协调的。
参照前面对包含在图7中的步骤的讨论明白了图3B的校验器70′、图4A的校验器70″、图4B的校验器70及图4C的校验器70″″的操作。在图4A、图4B与图4C中一次处理两个码字。在图7实施例中,为两个分支校验器电路70中每一个执行图6的步骤,各分支校验器电路接收相同的数据但用两个16位多项式中不同的一个操作。结束时,对于可纠正的块两个校验器电路必须都得出零。
从而,从上文中可以看出,按照本发明,在与通过缓冲器的实现数据字节纠正的同一遍扫描中进行CRC/EDC校验。本发明的方法包含顺序地访问缓冲器中的字节及将缓冲器中第一个选择的字节加到累计和上(诸如步骤S10),如果需要对其纠正则被访问的字节尚未受到纠正。虽然这一遍是针对第一选择的字节的,使用用于第二字节的错误模式纠正该块中的第二字节,其中第一选择的字节与第二选择的字节之间存在着字节位置同步关系,且第二字节在未纠正时已加入累计和中。将用于第二字节的错误模式因子加到累计和上(诸如步骤S6)。随后在同一遍中,将用于第一字节的错误模式因子加到累计和上。
虽已参照其较佳实施例具体展示与描述了本发明,熟悉本技术者应理解可在其中进行形式上与细节上的各种改变而不脱离本发明的精神与范围。例如在愿意时可提供两个以上的交错。
表2 表3 表41000000000001001 0001111111110110 00110111101101001000000000000110 0000111111111011 00011011110110100100000000000011 1100011111111111 00001101111011011110000000000011 1010001111111101 11000110111101001011000000000011 1001000111111100 01100011011110101001100000000011 0100100011111110 00110001101111011000110000000011 0010010001111111 11011000110111001000011000000011 1101001000111101 01101100011011101000001100000011 1010100100011100 00110110001101111000000110000011 0101010010001110 11011011000110011000000011000011 0010101001000111 10101101100011101000000001100011 1101010100100001 01010110110001111000000000110011 1010101010010010 11101011011000011000000000011011 0101010101001001 10110101101100101000000000001111 1110101010100110 01011010110110011000000000000101 0111010101010011 1110110101101110
表5 表6 表71000000000001001 0001010111000000 11101110001000111100000000000111 0000101011100000 11110111000100101110000000000000 0000010101110000 01111011100010010111000000000000 0000001010111000 10111101110001110011100000000000 0000000101011100 11011110111000000001110000000000 0000000010101110 01101111011100000000111000000000 0000000001010111 00110111101110000000011100000000 1000000000101000 00011011110111000000001110000000 0100000000010100 00001101111011100000000111000000 0010000000001010 00000110111101110000000011100000 0001000000000101 10000011011110000000000001110000 1000100000000001 01000001101111000000000000111000 1100010000000011 00100000110111100000000000011100 1110001000000010 00010000011011110000000000001110 0111000100000001 10001000001101000000000000000111 1011100010000011 0100010000011010
Claims (29)
1.一种用于校验以块形式存储在缓冲器中的信息字节的系统,该系统包括:
一个纠正单元,它在缓冲器的纠正访问期间输出供在纠正块中的指定字节中使用的错误模式;
一个CRC/EDC校验器,它确认块是纠正的;
其特征在于CRC/EDC校验器在缓冲器的纠正访问期间,通过将从块中选择的一个字节加到和上,随后用对于选择的字节的错误值纠正选择的字节和将包含用于该选择字节的错误值的因子加在和上,确认该块是纠正了的。
2.权利要求1的系统,其中该CRC/EDC校验器进行运算求出块中字节之和。
3.权利要求2的系统,其中在纠正访问期间,在正被校正的字节与正被求和的字节之间存在着字节位置同步关系。
4.如权利要求1的系统,进一步包含:
在其中累计所述和的一个存储装置;
一个加法器,它将下述各项加到累计在存储器中的和上;
(1)尚未被纠正单元纠正的缓冲器中的一个字节;及
(2)已加在和上的一个字节的一个错误模式。
5.权利要求4的系统,其中加在和上的字节与正在加上其错误模式的字节具有字节位置同步关系。
6.权利要求5的系统,其中将缓冲器概念化成包括多个列与行,及其中加在缓冲器中的字节与相加其错误模式的字节在同一行中。
7.权利要求5的系统,其中该错误模式是包含在加在累加和上的错误模式因子中的,及其中该错误模式因子还包含一个常数倍。
8.权利要求7的系统,其中常数倍的值取决于字节位置同步关系。
9.一种用于校验存储在缓冲器中的信息字节的方法,该方法的特征在于以下步骤:
访问缓冲器中的第一选择的字节并将该第一选择的字节加在累加和上;
利用缓冲器中的用于第二选择的字节的错误模式纠正缓冲器中的第二选择的字节;
将用于第二选择字节的该错误模式加在累加和上;
当累加和有预定值时,确认错误模式纠正第二选择字节。
10.权利要求9的方法,其中在第一选择的字节与第二选择的字节之间存在着字节位置同步关系。
11.权利要求10的方法,其中将缓冲器概念化成包括多个列与行,及其中第一选择的字节与第二选择的字节在同一行中。
12.权利要求10的方法,其中该错误模式包含在加到累加和上的错误模式因子中,及其中该错误模式因子还包含一个常数倍。
13.权利要求12的方法,其中常数倍的值取决于字节位置同步关系。
14.权利要求9的方法,其中信息字节在缓冲器的一遍扫描中以块格式存储至缓冲器中,该方法进一步包括:
在该一遍扫描中将该第一选择的字节加在累加和上;
在累加和上加上用于第一选择的字节的错误模式。
15.权利要求14的方法,还包括在将第一选择的字节加在累加和上之后,利用该错误模式来纠正第一选择的字节。
16.权利要求15的方法,其中该错误模式包含在加在累加和上的错误模式因子中,及其中该错误模式因子还包含一个常数倍。
17.权利要求16的方法,其中该常数倍的值取决于字节位置同步关系。
18.权利要求14的方法,进一步包括:
在访问时将该第一选择字节加在累加和上;如果需要纠正则第一选择字节尚未纠正;
利用用于第二字节的错误模式纠正块中的第二字节;第二字节在尚未纠正时已加在累加和中;
将用于第二字节的错误模式加在累加和上;然后接着在同一遍扫描中,
将第三字节加在累加和上;
用用于该第一选择字节的错误模式纠正第一字节;
将用于该第一选择字节的错误模式加在累加和上;和
当和有预定值时,确认错误模式纠正第二选择字节。
19.权利要求18的方法,其中在第一选择的字节与第二选择的字节之间存在着字节位置同步关系。
20.权利要求19的方法,其中将缓冲器概念化成包括多个列与行,及其中第一选择的字节与第二字节在同一行中。
21.权利要求19的方法,其中该错误模式包含在加在累加和上的错误模式因子中,及其中该错误模式因子还包含一个常数倍。
22.权利要求21的方法,其中常数倍的值取决于字节位置同步关系。
23.权利要求18的方法,其中在完成通过块的单一遍扫描访问时,如果已经正确地纠正了该块,累加和便是零。
24.权利要求9的方法,进一步包括:
在访问一个未纠正的数据字节时,判定该块中一个与位置相关的数据字节是否具有可利用的错误模式,该与位置相关的数据字节已加在累加和上;以及,如果存在可利用的错误模式,
将用于与位置相关的数据字节的可利用的错误模式加在累加和上;和
当累加和有预定值时,确认可用错误模式纠正位置相关数据字节。
25.权利要求24的方法,还包括
在顺序访问块中的未纠正的数据字节期间纠正与位置相关的数据字节。
26.权利要求24的方法,其中该与位置相关的数据字节与被访问的未纠正数据字节成字节同步关系。
27.权利要求9的方法,进一步包括:
在访问用于最新码字的未纠正的数据字节时,判定前一码字中的一个对应数据字节是否具有可利用的错误模式,该前一码字的该对应数据字节已加在累加和上,以及如果存在可利用的错误模式,
将用于前一码字的对应数据字节的可利用错误模式加在累加和上;和
当累加和有预定值时,确认块已经被纠正。
28.权利要求27的方法,还包括
在正在将最新码字的未纠正的数据字节加到累加和的同时,纠正该前一码字的对应数据字节。
29.权利要求27的方法,其中该前一码字的对应数据字节与正在加到累加和上的最新码字的数据字节具有字节同步关系。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/306,917 US5592498A (en) | 1994-09-16 | 1994-09-16 | CRC/EDC checker system |
US08/306,917 | 1994-09-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1164941A CN1164941A (zh) | 1997-11-12 |
CN1113474C true CN1113474C (zh) | 2003-07-02 |
Family
ID=23187456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN95196066A Expired - Lifetime CN1113474C (zh) | 1994-09-16 | 1995-09-15 | Crc/edc校验器系统和方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US5592498A (zh) |
EP (1) | EP0781471B1 (zh) |
JP (1) | JP3281387B2 (zh) |
KR (1) | KR970706656A (zh) |
CN (1) | CN1113474C (zh) |
DE (1) | DE69524430T2 (zh) |
WO (1) | WO1996008874A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6012839A (en) * | 1995-06-30 | 2000-01-11 | Quantum Corporation | Method and apparatus to protect data within a disk drive buffer |
US6048090A (en) * | 1997-04-23 | 2000-04-11 | Cirrus Logic, Inc. | Error correction and concurrent verification of a product code |
US5920578A (en) * | 1997-04-23 | 1999-07-06 | Cirrus Logic, Inc. | Method and apparatus for efficiently processing a multi-dimensional code |
US5974580A (en) * | 1997-07-23 | 1999-10-26 | Cirrus Logic, Inc. | Concurrent row/column syndrome generator for a product code |
US5991911A (en) * | 1997-11-14 | 1999-11-23 | Cirrus Logic, Inc. | Concurrent generation of ECC error syndromes and CRC validation syndromes in a DVD storage device |
US6052815A (en) * | 1997-11-14 | 2000-04-18 | Cirrus Logic, Inc. | ECC system for generating a CRC syndrome over randomized data in a computer storage device |
US5996105A (en) * | 1997-11-14 | 1999-11-30 | Cirrus Logic, Inc. | ECC system employing a data buffer for storing codeword data and a syndrome buffer for storing error syndromes |
US6128760A (en) * | 1998-10-13 | 2000-10-03 | Lsi Logic Corporation | Method and apparatus for calculating a CRC remainder |
JP3527873B2 (ja) * | 1999-09-03 | 2004-05-17 | 松下電器産業株式会社 | 誤り訂正装置 |
CN101673296B (zh) * | 2009-09-02 | 2011-07-20 | 太仓市同维电子有限公司 | 数据通讯过程中文件校验的方法 |
CN102487282A (zh) * | 2010-12-03 | 2012-06-06 | 上海华虹集成电路有限责任公司 | 一种实现可变长crc运算的电路 |
CN103809147A (zh) * | 2012-11-12 | 2014-05-21 | 苏州工业园区新宏博通讯科技有限公司 | 一种交流电表故障自诊断方法 |
US10489240B2 (en) * | 2015-09-25 | 2019-11-26 | Microsoft Technology Licensing, Llc | Efficient detection of corrupt data |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN85109458A (zh) * | 1985-12-27 | 1987-02-11 | 复旦大学 | 交叉穿插的里德-所罗门码的高速纠错译码系统 |
US4712215A (en) * | 1985-12-02 | 1987-12-08 | Advanced Micro Devices, Inc. | CRC calculation machine for separate calculation of checkbits for the header packet and data packet |
EP0291167A2 (en) * | 1987-04-14 | 1988-11-17 | Matsushita Electric Industrial Co., Ltd. | A code error detecting method |
CN1033889A (zh) * | 1987-05-15 | 1989-07-12 | 计数设备公司 | 字节写错误码的方法和装置 |
CN1158676A (zh) * | 1994-09-16 | 1997-09-03 | 西尔拉斯逻辑公司 | 通用纠错系统 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3868632A (en) * | 1972-11-15 | 1975-02-25 | Ibm | Plural channel error correcting apparatus and methods |
US3851306A (en) * | 1972-11-24 | 1974-11-26 | Ibm | Triple track error correction |
US4703485A (en) * | 1986-02-10 | 1987-10-27 | International Business Machines Corporation | Method and apparatus for computing and implementing error detection check bytes |
US4782490A (en) * | 1987-03-16 | 1988-11-01 | Cythera Corporation | Method and a system for multiple error detection and correction |
JPS63255876A (ja) * | 1987-04-14 | 1988-10-24 | Matsushita Electric Ind Co Ltd | 符号誤り検出方法 |
JPS63257966A (ja) * | 1987-04-15 | 1988-10-25 | Matsushita Electric Ind Co Ltd | 符号誤り検出方法 |
US5220568A (en) * | 1988-05-31 | 1993-06-15 | Eastman Kodak Company | Shift correcting code for channel encoded data |
US5218691A (en) * | 1988-07-26 | 1993-06-08 | Disk Emulation Systems, Inc. | Disk emulation system |
EP0388495B1 (de) * | 1989-03-22 | 1994-06-08 | Siemens Aktiengesellschaft | Verfahren zur Qualitätsüberwachung wenigstens zweier Übertragungsabschnitte einer Digitalsignal-Übertragungsstrecke und Vorrichtung zur Durchführung des Verfahrens |
DE69033262T2 (de) * | 1989-04-13 | 2000-02-24 | Sandisk Corp., Santa Clara | EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher |
US5384786A (en) * | 1991-04-02 | 1995-01-24 | Cirrus Logic, Inc. | Fast and efficient circuit for identifying errors introduced in Reed-Solomon codewords |
US5291584A (en) * | 1991-07-23 | 1994-03-01 | Nexcom Technology, Inc. | Methods and apparatus for hard disk emulation |
US5422895A (en) * | 1992-01-09 | 1995-06-06 | Quantum Corporation | Cross-checking for on-the-fly Reed Solomon error correction code |
US5329535A (en) * | 1992-04-30 | 1994-07-12 | International Business Machines Corporation | Variable block lengths on-the-fly error correcting decoder |
-
1994
- 1994-09-16 US US08/306,917 patent/US5592498A/en not_active Expired - Lifetime
-
1995
- 1995-09-15 JP JP51040696A patent/JP3281387B2/ja not_active Expired - Lifetime
- 1995-09-15 DE DE69524430T patent/DE69524430T2/de not_active Expired - Lifetime
- 1995-09-15 CN CN95196066A patent/CN1113474C/zh not_active Expired - Lifetime
- 1995-09-15 WO PCT/US1995/011988 patent/WO1996008874A1/en active IP Right Grant
- 1995-09-15 EP EP95934469A patent/EP0781471B1/en not_active Expired - Lifetime
- 1995-09-15 KR KR1019970701714A patent/KR970706656A/ko not_active Application Discontinuation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4712215A (en) * | 1985-12-02 | 1987-12-08 | Advanced Micro Devices, Inc. | CRC calculation machine for separate calculation of checkbits for the header packet and data packet |
CN85109458A (zh) * | 1985-12-27 | 1987-02-11 | 复旦大学 | 交叉穿插的里德-所罗门码的高速纠错译码系统 |
EP0291167A2 (en) * | 1987-04-14 | 1988-11-17 | Matsushita Electric Industrial Co., Ltd. | A code error detecting method |
CN1033889A (zh) * | 1987-05-15 | 1989-07-12 | 计数设备公司 | 字节写错误码的方法和装置 |
CN1158676A (zh) * | 1994-09-16 | 1997-09-03 | 西尔拉斯逻辑公司 | 通用纠错系统 |
Also Published As
Publication number | Publication date |
---|---|
JP3281387B2 (ja) | 2002-05-13 |
KR970706656A (ko) | 1997-11-03 |
WO1996008874A1 (en) | 1996-03-21 |
CN1164941A (zh) | 1997-11-12 |
DE69524430D1 (de) | 2002-01-17 |
US5592498A (en) | 1997-01-07 |
DE69524430T2 (de) | 2002-08-14 |
JPH10508988A (ja) | 1998-09-02 |
EP0781471A1 (en) | 1997-07-02 |
EP0781471B1 (en) | 2001-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5592404A (en) | Versatile error correction system | |
US4928280A (en) | Fast processor for multi-bit error correction codes | |
EP0387924B1 (en) | Method and apparatus for decoding error correction code | |
CN1113474C (zh) | Crc/edc校验器系统和方法 | |
US5099484A (en) | Multiple bit error detection and correction system employing a modified Reed-Solomon code incorporating address parity and catastrophic failure detection | |
EP0278383B1 (en) | Error correction method using reed-solomon code | |
JP3232602B2 (ja) | ユークリッドの互除回路 | |
US5668976A (en) | Error correction method and apparatus for disk drive emulator | |
US20040010742A1 (en) | Method and apparatus for error detection | |
US20050149834A1 (en) | (18, 9) Error correction code for double error correction and triple error detection | |
US4994993A (en) | System for detecting and correcting errors generated by arithmetic logic units | |
JPS632370B2 (zh) | ||
US6738947B1 (en) | Method and apparatus for error correction | |
CN110908827A (zh) | 用于NAND Flash闪存纠错的并行BCH解码方法 | |
US5555516A (en) | Multipurpose error correction calculation circuit | |
JP3345385B2 (ja) | チェンサーチ装置 | |
CN1214575A (zh) | 采用新多项式排列结构里德-索罗门解码器及解码方法 | |
US9191029B2 (en) | Additional error correction apparatus and method | |
EP0595326B1 (en) | Reed-Solomon decoding with Euclid algorithm | |
JP2001292066A (ja) | 誤り訂正装置および誤り訂正方法 | |
Lala | A single error correcting and double error detecting coding scheme for computer memory systems | |
JP2553565B2 (ja) | ガロア体演算装置 | |
CN1167373A (zh) | 用在里德-所罗门解码器中的多项式求值器 | |
US20240333307A1 (en) | Ecc optimization | |
JPS61277230A (ja) | 誤り検出訂正符号発生方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term |
Granted publication date: 20030702 |
|
EXPY | Termination of patent right or utility model |