CN1779833B - 计算错误检测码的方法 - Google Patents
计算错误检测码的方法 Download PDFInfo
- Publication number
- CN1779833B CN1779833B CN 200510107037 CN200510107037A CN1779833B CN 1779833 B CN1779833 B CN 1779833B CN 200510107037 CN200510107037 CN 200510107037 CN 200510107037 A CN200510107037 A CN 200510107037A CN 1779833 B CN1779833 B CN 1779833B
- Authority
- CN
- China
- Prior art keywords
- error
- byte
- row
- detecting code
- program
- 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
Links
Images
Landscapes
- Detection And Correction Of Errors (AREA)
Abstract
一种光盘机计算对应一数据区段的错误检测码的方法。该数据区段包含有排列成一矩阵的多个字节,该矩阵沿一第一方向共有N排而沿与该第一方向垂直的一第二方向共有M排。该方法包含:沿该第一方向,计算该N排中每一排上M个字节所产生的错误检测码,其中对于该N排中的每一排,只有具有至少一错误位的字节会对该排所对应的错误检测码产生不为零的影响;以及根据该N排中每一排与该N排的最后一排间的位移量来位移修正该N排中每一排所对应的错误检测码,接着加总该N排中每一排所对应的位移修正后的错误检测码来得到该数据区段的错误检测码。
Description
技术领域
本发明涉及一种计算错误检测码(error detection code,EDC)的方法,特别是涉及一种可以简化相关电路以及应用流水线计算(pipelinecalculation)的计算错误检测码的方法。
背景技术
在数字数据的编码与译码以及数字数据的读取与写入的过程中,往往是将数字数据编排为二维数组的格式,并在二维数组中加入额外的数码数据,以协助判断二维数组中数字数据的正确性。并且,随着数字数据数量的增加,二维数组往往是由多个具有固定格式的数据区段所形成。请参阅图1,其为已知二维数组的示意图。如图所示,整个二维数组可以区分为多个数据区段,每一数据区段又都可划分为多列(row)CW1~CW208以及多行(column)CW’1~CW’182。每一列所包含的多个字节中,排列在前面并且数目较多的部份字节对应到数字数据,而排列在后面并且数目较少的部份字节则对应到用以校正同一列中所有数字数据的第一错误校正码(parity of inner,PI)。相对地,每一行所包含的多个字节中,排列在前面并且数目较多的部份字节对应到数字数据,而排列在后面并且数目较少的部份字节则对应到用以校正同一行中所有数字数据的第二错误校正码(parity of outer,PO)。并且,在每一个数据区段中还包含有对应循环冗余核对码(cyclic redundancy check,CRC)的字节,举例来说,如图1所示,数据区段(1)中的编码单元2171~2174即对应上述循环冗余核对码,亦即当数据写入至一盘片时,每一数据区段会加入循环冗余核对码。
依据二维数组的规格以及错误检测码和错误校正码二者的数学,诸如Reed-Solomon算法、有限场(Galois Field、GF(28))运算、Euclidean算法、Berlekamp-Massey算法等等,若写入到存储器的二维数组数据都没有任何字节有错误,例如没有因为电路中噪声的干扰或是光学读取头镜片有刮伤等等因素,而使得被写入到存储器中的数据有错误,则每一列的第一错误校正码与其数字数据都是一对一的对应关系,每一行的第二错误校正码与其数字数据也都是一对一的对应关系,并且所有字节对整个数据区段的错误检测码的影响的总和,应该就等于此数据区段所对应的错误检测码(因为没有任何错误字节存在)。
因此,在实际应用中,先利用每一列的第一错误校正码以及每一行的第二错误校正码,找出有错误的部份字节(特别是经过这些错误校正码处理过还无法消除的部份字节);然后,再分别处理每一个数据区段中,有错误的部份字节的错误对整个数据区段的错误检测码的影响,并与此数据区段的非错误校正码部份的最后几个字节所显示的错误检测码(对应上述循环冗余核对码)综合使用,便可以确认应用错误校正码校正这些数字数据的结果。而通过反复使用错误校正码以及错误检测码来处理二维数组中的数字数据,便可以将这些数字数据的错误率,降低至10-12或更低。
现有技术中,在计算某个数据区段中所有错误字节对于此数据区段的错误检测码的影响时,往往以逐列依序(row by row in sequence)与逐行依序(column by column in sequence)的方式来处理每一列与每一行中的数字数据。前者如图2所示,先自第一列的第一个字节开始,逐个处理第一列的所有字节,然后再回到第二列的第一个字节,再逐个处理第二列的所有字节,如此反复直到处理完最后一列的所有字节,而得到数据区段中所有错误字节对错误检测码的影响;后者如图3所示,自第一行的第一个字节开始,依序从头到尾地处理同一行的所有字节后,再接着从头到尾地处理下一行,如此反复地处理完所有的字节,而得到数据区段中所有错误字节对错误检测码的影响。换句话说,当发现某一字节有错误时,计算此错误字节的错误值对于错误检测码的影响的方式,先沿着此错误字节所在的Kth列(或Kth行)进行位移到Kth列(或Kth行)的结尾并计算这些位移对错误值的影响,再位移在Kth+1列(或Kth+1行)的开端并计算这位移对错误值的影响最后再位移到Kth+1列(或Kth+1行)的结尾并计算这些位移对错误值的影响。如此反复执行上述操作以进行位移到某列(某行)结尾、位移到下一列(下一行)开端、位移到下一列(下一行)结尾、位移到下下一列(下下一行)开端...等等的程序,直到位移到最后完成错误检测码的运算为止。
在此,只概略介绍数字数据处理过程中(如应用在光盘片的编码与译码)的二维数组所使用的错误校正码以及错误检测码等基本概要,而未详述。更多的相关知识,请至少参见下列已获准的美国专利:US 4,760,576、US4,979,174、US 5,689,727、US 5,793,724、US 5,948,117、US 5,996,105、US 6,024,286、US 6,044,484、US6,075,920、US 6,260,169、US 6,367,049、US 6,564,362、US 6,574,776、US 6,615,387以及US 6,742,157。
无论如何,由于电子产品持续地往轻、薄、短、小的方向发展,如何降低成本与提升效率始终是电子产品技术研发的重点。因此,如何以更有效率与更低成本的方式来具体应用上述的错误校正码与错误检测码,例如如何更有效率及/或更低成本的方式来计算有错误的字节对整个数据区段的错误检测码的影响,始终是一个开放并值得进一步处理的领域。
发明内容
针对上述的已知技术缺点,本发明提供一种计算错误检测码的方法,特别是能减少具体应用于电子产品时所需要计算流程的计算错误检测码的方法,以及能减少具体应用于电子产品时所需要存储器容量的计算错误检测码的方法。
本发明的一较佳实施例提供一种光盘机计算对应一数据区段的错误检测码的方法。该数据区段包含有多个字节,该多个字节排列成一矩阵,该矩阵沿一第一方向共有N排而沿与该第一方向垂直的一第二方向共有M排。该方法包含:(a)沿该第一方向,计算该N排中每一排上M个字节所产生的错误检测码,其中对于该N排中的每一排,只有具有至少一错误位的字节会对该排所对应的错误检测码产生不为零的影响;以及(b)根据该N排中每一排与该N排的最后一排间的位移量来位移修正该N排中每一排所对应的错误检测码,接着加总该N排中每一排所对应的位移修正后的错误检测码来得到该数据区段的错误检测码。
另外,本发明的其它较佳实施例进一步修改上述实施例,以导入下列作法:引入流水线运算(pipeline calculation)来进行计算。其中,可以通过修改不同流水线的内容以及(或着)不同流水线间连接关系的变化,让不同运算内容可以在相同时间内进行,进而减少计算所需时间或着减少储存计算过程所需要的存储器容量。
附图说明
图1为已知光盘片储存数据的示意图;
图2为已知技术的数据区段进入错误校正程序的第一示意图;
图3为已知技术的数据区段进入错误校正程序的第二示意图;
图4为本发明的数据区段进入错误校正程序的第一示意图;
图5为本发明的数据区段进入错误校正程序的第二示意图;
图6为本发明的数据区段进入错误校正程序的第三示意图;
图7为本发明的数据区段进入错误校正程序的第四示意图;
图8为已知计算某列或某行的错误检测码的示意图;以及
图9至图13为本发明使用流水线运算方式来计算错误检测码运算方法的示意图。
附图符号说明
40、50 数据区段
44、54 字节
42a~42c、46a、46b、52a~52c、56a、56b 编码数据
具体实施方式
本发明的一些特点与一些优点,可以摘要陈述如下:
(1)在计算二维数组(例如数据区段)中各个错误字节的错误值对错误检测码的影响时,执行将任一个错误字节到此二维数组中储存错误检测码位置的位置偏移量的计算,其只包含沿错误字节所在行(或列)位移到此行(或此列)的末端,以及自此行(或此列)的末端直接位移至此二维数组用以储存错误检测码的字节。在此,由于一般都是将错误检测码储存在用以储存数字数据的区域(例如数据区段)的末端,所以才沿错误字节所在行(或列)位移到此行(或此列)的末端,但也可以随着储存错误检测码的字节位置的变化,改为先沿错误字节所在行(或列)经由已知位移修正的操作位移到此行(或此列)中与储存错误检测码的字节位于相同列(或相同行)的字节,然后直接沿着储存错误检测码的字节所位的列(或行),再经由已知位移修正的操作而位移至储存错误检测码的字节,最后经由加总而得到所要的错误检测码。
(2)可以使用流水线计算,使得某错误字节的错误值的计算可以与找寻下一错误字节的操作同时进行,进而减少需要的运作时间。
(3)可以使用流水线计算,使得正在处理的错误字节的错误值计算、找寻下一错误字节的操作、先前已得到的错误值的位置偏移量计算,三者可以同时进行,进而减少需要的运作时间。
(4)可以使用流水线计算,在某流水线的运作找到某错误字节的错误值时,立刻使用另一流水线来计算此错误字节的错误值相对的位置偏移量的计算,而不须等到先前已得到的错误值的位置偏移量的计算完成后才来进行,进而减少需要的运作时间。
(5)可以不使用各个错误字节之间的相对距离来计算,而使用各个字节与所在列(行)的末端的绝对距离来计算,藉以简化计算步骤,并减少实现此计算的电路所需要的硬件的种类与数目。
接下来,将逐渐解释本发明的精神、实现方式、特点与优点。首先,已知技术中用来计算错误检测码的数学运算,具有一个共通的特征:某一字节的错误值对整个数据区段的错误检测码的影响,只与这个字节与储存错误检测码的位码之间的位移量有关,而与如何自此字节移动至储存错误检测码的字节的位移途径无关。每一位移途径在实际的应用上便对应到一种用来实现此位移量的硬件/固件/软件,而由于无法预测每个数据区段中有那些字节会发生错误,因此每一个用来储存实际数据的字节,都需要一个专属的位移量以移动到用来储存错误检测码的字节。当然,实作上为了简化构造以及节省成本,会将所有可能会出现的位移量,依照处理数据区段时各个字节被先后处理的顺序,分解成为几个基本流程,亦即分解成为几个基本的硬件/固件/软件。因此,需要的基本流程越少,需要的基本硬件/固件/软件越少,构造便越简单并且成本便越低。
本发明的发明人进一步指出,已知错误检测码的产生流程可以分为三大部份:(一)找出编码数据(或说数据区段)中具有错误位的字节;(二)计算每一个具有错误位的字节的错误检测码;(三)计算由所有具有错误位的字节的错误检测码所共同产生的错误检测码。其中,由于必须检查所有的字节以及依照一定的规则计算错误检测码,上述(一)与(二)所需要的时间基本上是固定的,换句话说,只有(三)所需要的时间与设备,是可以通过改变处理所有字节的流程而再进一步精简。
根据上述想法,本发明的发明人首先指出,已知技术的逐列逐列依序(row by row in sequence)进行或是逐行逐行依序(column by column insequence)进行的作法,至少需要三个基本位移量操作:(a)沿某行或某列的方向自某个字节移动到下一个字节、(b)自某行或某列的最后一个字节移动到相邻的下一行或下一列的最后一个字节、以及(c)自某行或某列的最后一个字节移动到此行或此列的第一个字节。显然地,基本位移量操作(c)是由于依序(in sequence)处理一个接一个字节的需求所引发的。无论如何,本发明的发明人特别强调,既然错误检测码的计算是与位移路径无关,因此在发现某个字节有错误位而需要修正时,能通过最短的路径(或说最少的运算需要)便将该字节的所在位置所对应的错误检测码位移至最后储存错误检测码的位置,便是(三)这部份的最低成本且最高效率的路径。同时,由于找出所有具有错误位的字节的过程也需要在不同字节间移动,因此若能整合(一)与(三)这两部份的路径(请注意(二)与位移路径无关),便能将整体运作逼近低成本与高效率的极限。
因此,本发明的发明人提出一种光盘机计算对应一数据区段的错误检测码的方法,此数据区段包含有N*M矩阵方式排行的多个字节。本方法的一大基本特征是:只有在每一列或每一行中才或是依序逐渐处理或是个别径行处理所有的字节,并经由适当的位移修正与加法运算来加总此列或此行中所有因为错误位所引发的错误检测码(请注意,对于有限场(Galois Field)运算而言,加法运算是指XOR运算),但在任一列或任一行处理完后(即处理完此列或此行的最后一个字节后),经由位移修正而直接往位于最后一列或最后一行的最后端的用以储存错误检测码的位置移动或者经由位移修正而直接往位于下一列或下一行的最后端的用以储存错误检测码的位置移动,亦即,该数据区段的错误检测码的计算是直接将任一列或任一行处理完后的错误检测码经过未处理的部份列或未处理的部份行的末端朝储存错误检测码的位置移动,而不再如已知技术一般地依序经过未处理的部份列或未处理的部份列的所有字节。
请参见图4与图5所显示的处理流程示意图,并与图2与图3所显示的已知处理流程相比较。显然地,本方法至少具有下列的优点:
(1)在每一列或每一行中都是依序处理每一个字节,可以和(一)这部份检查所有字节的流程相结合;
(2)只需要(a)沿某行或某列的方向自某个字节移动到下一个字节以及(b)自某行或某列的最后一个字节移动到相邻的下一行或下一列的最后一个字节这二个基本位移量操作,相较于已知技术,本发明可节省一个基本位移量操作以及相对应的硬件/固件/软件;
(3)由于任一行或任一列对字节的处理皆可以与其它行或其它列对字节的处理无关,因此不必像已知技术般于处理完某一行或某一列后,才能继续处理下一行或下一列,所以,本发明可分别(甚至同时)处理不同行或不同列,进而节省整体运作所需要耗费的时间;
(4)由于各行可以分别处理,因此可以在每读取完一列的字节后,便对各行进行位于此列的字节的错误检测码处理,而不需要如已知技术般必须等到所有列都读取完后,才能进行各行的错误检测码处理,进而使得本发明在对各行进行处理以得到第二错误校正码与错误检测码处理的过程,可以与读取数据区段的流程相结合,而不会像已知技术般只有在对各列的处理才能与读取数据区段的流程相结合而在对各行的进行便不能与读取数据区段的流程相结合;以及
(5)由于不同具有错误字节的字节对错误检测码的影响,可以分开个别处理,因此还可以在整个数据区段只有少数字节被修改时,只针对这几个字节再进行错误检测码的重新计算;也可以在有需要验证错误检测码时,选择性重新确认几个字节的影响,以判断可能错误的来源。
本发明的发明人也提出一种光盘机计算对应一数据区段的错误检测码的方法,此数据区段包含有N*M矩阵方式排行的多个字节。本方法至少包含下列步骤:处理N*M矩阵中的每一行(并处理各行的所有字节);当处理kth行时发现某字节包含有错误位,先计算对应到这错误字节的错误检测码,藉以校正此字节,再依据此字节与kth行上某预定字节(通常为此行的最后一个字节)间的位置偏移量,调整错误检测码以更新对应此预定字节的错误检测码;当处理完kth行后要再处理kth+1行时,需依照kth行与kth+1行间的位置偏移量,再度调整错误检测码。而当处理完此矩阵的所有行以及每一行的所有字节后,便可将经过位置偏移量修正过的对应到所有存在错误位的所有字节的所有错误检测码予以加总,而得到对应到经处理过的此数据区段的错误检测码。然后,便可以通过比对错误检测码以及某预定数值,来判断处理过的数据区段的内容是否正确。当然,本方法也可以调整成为依序处理N*M矩阵中的每一列(并处理各列的所有字节)。进一步地,在此可以是依序处理每一行(或每一列),也可以是随着读取数据区段的流程,同时处理多行(或多列)。
进一步地,若不考虑与读取数据区段流程能否相结合,本方法还可以变化如下:当发现某个字节的错误检测码,直接判断这个字节到储存错误检测码的位置需要几个沿着列(或行)的方向在相邻字节间的基本位移量,以及几个沿着行(或列)的方向在相邻列或相邻行间的基本位移量,然后直接作完这些基本位移量以及对错误检测码的修正;最后,再加总所有自有错误位的字节转移过来的错误检测码即可。
根据上述的讨论,本发明提供一种可以计算得到第一错误校正码、第二错误校正码以及错误检测码的方法,可以使得对各行与各列的计算都能与读取数据区段的流程相结合,并进而降低成本与提升效率。在此,必须强调地是本发明可以与已知技术混合使用,例如对各列的计算可以使用已知技术,而对各行的计算则应用本发明所接受的操作。
进一步地,本发明在处理每一行或每一列的过程中,还可以具有下列的变化:可以在某列或某行发现某个字节有错误位后,便先在这个字节进行错误检测码的计算,然后再将得到的错误检测码依照此字节到此列或此行的末端(最后一个字节)的位移量,进行修正。
此外,本发明在处理多行或多列的过程中,还可以具有下列的变化:可以在某一行或某一列完成位于其中的字节的错误检测码加总运算后,便先将此行或此列的错误检测码位移量转移到用来储存错误检测码的位置,并作好相对位移量所引发的位移修正,然后等到所有行或所有列都完成错误检测码的加总运算与位移修正后,再一并加总所有行或所有列的结果,而得到最后的错误检测码。另外,也可以在某一行或某一列完成位于其中的字节的错误检测码的加总运算后,便将此行或此列的错误检测码经由位移修正而转移至下一行或下一列的末端,等到下一行或下一列完成其字节的错误检测码运算后,将这二行或这二列的错误检测码一起加总,然后再将加总后的错误检测码经由位移修正而转移到再下一行或再下一列,如此反复直到最后一行或最后一列的错误检测码也被加总进来而得到最后的错误检测码为止。请参见图6与图7所示的实施例,并与图3与图4作比对。当然,第3~7图都是本发明可能的变化。
利用相同的概念,本发明在处理任一行或任一列的过程中,还可以具有下列的变化(未显示于图示中):可以在某一行(或某一列)中完成某个字节的错误检测码后,便先将此错误检测码依照此编码位到此行(或此列)的末端的位移量进行位移修正,然后再继续找寻此行(或此列)中其它具有错误位的编码字节,并执行错误检测码计算与位移修正,等到此行(或此列)中所有的字节都完成错误检测码计算与位移修正后,再一并加总所有字节的结果,而得到此行(或此列)的错误检测码。也可以在某一行(或某一列)中完成第一个字节的错误检测码后,便将其进行移修正到下一字节并与下一字节的错误检测码加总,如此反复直到此行(或此列)的所有字节的错误检测码都被加总,而得到此行(或此列)的错误检测码为止,均属本发明的范畴。
本发明的上述基本特征与已知技术的主要差别,是在于处理第(三)部分以计算由所有具有错误位的字节的错误检测码所共同产生的错误检测码这部份的流程中,两者所使用的位移途径不同。因此,本发明在处理任一行或任一列时,可以如同已知技术那样使用依序(in sequence)的方法来处理。
举例来说,请参见图8,其中V1、V2、V3、V4分别代表在某一行或某一列中四个具有错误位的字节所对应的错误值(error value),T代表任一具有错误位的字节计算其错误值所需要的时间,L1代表第一个具有错误位的字节到此行或此列的开端的距离,L2、L3、L4分别代表相邻两个具有错误位的字节之间的距离,L5代表最后一个具有错误位的字节到此行或此列的末端的距离,T1代表检查完自开端到第一个具有错误位的字节间所有字节所需的时间,T2、T3、T4分别代表检查完位于相邻两个具有错误位的字节间所有字节所需的时间,而T5则代表检查完自最后一个具有错误位的字节到此行或此列的末端间所有字节所需的时间。显然地,此时检查完此行或此列所需要的时间(正比例于频宽(bandwidth)的消耗量)总共是:T1+T+T2+T+T3+T+T4+T+T5=T1+T2+T3+T4+T5+4T。请注意,为了便于说明,图8所显示的L1、L2、L3、L4的长度相等,然而,实际上错误位的发生是不可预测的,因此,具有错误位的字节可视为随机分布的,亦即,L1、L2、L3、L4的长度实际上并不一定相同;同样地,于后续的各个实施例中,具有错误位的字节的位置、位移大小与处理时间长短仅用来作为范例说明,并非为本发明的限制条件,在此先行指出。
无论如何,随着技术的进步,不论是硬件/固件/软件的处理速率越来越快,并且诸如流水线运算(pipeline calculation)等可以提高数据处理速率的方法也逐渐被提出与应用。因此,上述的T1+T2+T3+T4+T5的运算时间便可进一步地缩短。举例来说,如果硬件/固件/软件够好够快,使得计算各个错误值所需要的时间够短,亦即于图8中,T是小于或等于T2、T3与T4中的最小值,本发明方法便可以在数据齐全后,同时进行某一个具有错误位的字节的错误值计算以及下一个具有错误位的字节的找寻,此时,图8的运作流程便进一步变成图9的运作流程,而检查完此行或此列所需要的时间(正比例于频宽的消耗量)总共是T1+T2+T3+T4+T。当然,如果有某二个具有错误位的字节(例如第Nth具有错误位的字节与第Nth+1个具有错误位的字节)的距离过近,使得找寻到第Nth+1个具有错误位的字节的时间会短于计算第Nth具有错误位的字节的错误值所需的时间,此时,则可以于完成Nth具有错误位的字节的错误值计算之后,接着再同时进行Nth+1具有错误位的字节的错误值计算以及Nth+2具有错误位的字节的找寻;此外,本发明也可以一方面进行Nth具有错误位的字节以及Nth+1具有错误位的字节的错误值计算,而另一方面进行Nth+2具有错误位的字节的找寻。显然地,在图9所示的实施例下,最佳状况可以将所有计算错误值所需要的时间都省略掉。
进一步地,图8所示的操作流程可引用流水线运算的机制来进一步地精简整体流程。请参见图10,本实施例分别使用一第一程序(亦即ChienSearch)、一第二程序(Founey)与一第三程序(EDC)来得知各个具有错误位的字节的位置、每个具有错误位的字节的错误值、以及进行错误检测码的计算(或说是各个错误检测码的位移量处理以及加总运算)。在此,自时间T0起,第一程序会找寻具有错误位的字节的位置L1;若找到第一个具有错误位的字节的时间为T1,则自T1起,不只第一程序会继续找寻下一个具有错误位的字节的位置L2,同时第二程序也会计算第一个具有错误位的字节的错误值V1;若找到第二个具有错误位的字节的时间为T2,则自T2起,不只第一程序会继续找寻下一个具有错误位的字节的位置L3,第二程序会计算第二个具有错误位的字节的错误值V2,同时第三程序也会开始计算第一个具有错误位的字节(对应错误值V1)对错误检测码的影响EDC(1)(即会计算错误检测码的位移量转换);若找到第三个具有错误位的字节的时间为T3,则自T3起,不只第一程序会继续找寻下一个具有错误位的字节,第二程序会计算第三个具有错误位的字节的错误值V3,而第三程序也会开始计算第一个具有错误位的字节以及第二个具有错误位的字节对错误检测码的影响EDC(2)(即会计算各个错误检测码的位移量转换并将其加总在一起);如此一直进行到所有的字节都被处理完为止。显然地,相较于图8所示的依序处理的运算流程,图10所示的应用流水线计算的操作较省时并有效率,因为有些操作可以同步进行,而不必如同依序处理的作法一样必须等完成一个操作后才能再进行下一个操作。(当然,本发明还是可以让流水线运算的部份程序不同步进行,例如当硬件效能不够快而不能及时处理完所要的运算时)。
但是,若将图10所示的方法应用在先将各行或各列中所有具有错误位的字节的位置与错误检测码先处理好,再一并处理其对错误检测码的影响的流程,而不是应用在各行或各列中一找到某个具有错误位的字节时,便直接处理其对错误检测码的影响,然后在找到下一个时再处理其对错误检测码的影响的流程,仍会面临一些缺陷。举例来说,第一程序会在一段时间内(如T0至T1)检测某列或某行上多个(只有一个的情形如同前段并不需特别讨论)具有错误位的字节的位置L1(l11~l1n),第二程序会在另一段时间内(如T1至T2)获得这些具有错误位的字节的错误值V1(v11~v1n),而后第三程序才会在再一段时间内(如T2至T3)计算这些具有错误位的字节对于错误检测码的影响EDC(e11~e1n)。因此,在时间T2至T3前(即第三程序被启动前),必须完整记录在T0至T1期间便已得到的所有位置以及在T1至T2期间便已得到的所有错误值。因此,需要的存储器容量较大,需要的存储时间较长,需要在不同程序传输的数据量较大,并且需要的计算与处理的步骤也较多;如此一来,便与一般商业化产品的降低成本与加快处理速率的需求有所冲突。
针对这个问题,本发明的另一种应用流水线运算的方式(如图11所示),基本上是让第二程序与第三程序几乎同步进行,一旦第二程序得到某列或某行上的某一个具有错误位的字节的错误值(例如图11中所示的v11),便立刻进行针对这个字节的第三程序(请注意,此时位置l11与错误值v11为已知),并在得到此字节对错误检测码的影响(例如图11中所示的e11)后,立刻将此字节的位置(l11)与错误值(v11)自存储装置中清除,而只保留其对错误检测码的影响。如此反复进行,直到第二程序所得到的所有错误值都已被第三程序用来计算错误检测码为止。显然地,通过如此的作法,可以一方面将找寻具有错误位的字节的位置以及计算具有错误位的字节的错误值的流程分解开来成为两个流程(第一程序与第二程序),可增加实际应用上的弹性;另一方面又可以让计算具有错误位的字节的错误值的流程与计算错误检测码的流程(亦即第二程序与第三程序)几乎同步进行,因而可节省时间;此外,又可以随着计算错误检测码的流程(第三程序)的进行,每处理好一个具有错误位的编码程序后便立刻不再储存其位置与错误值,因此有助于减少对于存储器容量、存储时间与数据传输量的需求。显然地,图11所示的变化可以较为符合一般商业化产品的降低成本与加快处理速率的需求。
进一步地,本发明具体化实现第三程序的作法(如图12所示)可以是采用依序处理的作法(因为已知技术多是依序地逐列或逐行进行处理)。在处理每一行或每一列时,每处理一个具有错误位的字节,便依照其错误码开始对错误检测码进行位移量处理,而当处理到下一个具有错误位的字节时,便将下一个如此字节的错误码与先前经由位移量处理而来的错误检测码进行加总,接着便进一步对加总后的错误检测码进行位移量处理,上述操作不断进行,直到处理完所有的字节并完成将错误检测码位移至到此行(或此列)的末端为止。而由于在接收到多个具有错误位的字节的位置时,实际上是接收到每一个如此的字节与此行(或此列)的开端的位移量,此时,虽然由于每一行(或每一列)的长度都是固定的(已知的),可以轻易转换成为每一个具有错误位的字节到此行(或此列)的末端的绝对位移量,但由于已知常用的计算错误检测码的计算是使用各个如此的字节之间及其与末端的相对位移量,因此具有错误位的字节对于末端的错误检测码EDC的影响,可由下述对应位移量转换的运算错误检测码EDC的方程式来简单表示(其中L1、L2与L3分别表示三个如此字节与终端之间的绝对位移量量,而V1、V2与V3则分别表示这三个如此字节的错误值):
EDC=ΔL3{ΔL2[(ΔL1V1)+V2]+V3}
=L3{(L2-L3)[(L1-L2)V1+V2]V3}
显然地,此时需要多个计算步骤(二个减法运算、一个加法运算以及三个乘法运算)以及三种硬件(加法器、减法器与乘法器),对于实际的成本与计算的效率,仍有相当的负担以及改善的空间。
针对此一问题,本发明还提出一种新的具体化实现第三程序的作法,如图13所示,此时不再采取依序处理的作法,而是利用错误检测码与错误值的位移过程无关而只与错误值最后的净位移量有关的特性,换句话说,此一实施例经由计算每一个如此的字节的错误码在直接位移到此行(或此列)末端对错误检测码的影响来着手。亦即,此时具有错误位的字节对于末端的错误检测码EDC的影响可以应用下述对应位移量转换的运算错误检测码EDC的方程式来表示:
EDC=L3V3+L2V2+L1V1
显然地,此时不只计算步骤较少,只需要三个乘法运算与二个加法运算,而且也只需要两种硬件(加法器与乘法器)。与图12所示的运算流程相比,图13所示的运算流程可以进一步降低硬件成本以及所需要的运算时间。
最后一提的是,若已将一数据区段分解成为多个数据区段,且每一个数据区段都有其各自对应的错误检测码,则在计算错误检测码时,应该要以数据区段为单位来分开处理。也就是说,当任一列或任一行的任二个具有错误位的字节间的位移量,跨越了两个数据区段的边界,则应该将这段位移量分解成为在不同数据区段的多数段位移量,并在不同数据区段中分别处理其对错误检测码的影响。
以上所述仅为本发明的较佳实施例,凡依本发明的权利要求所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (18)
1.一种光盘机计算对应一数据区段的错误检测码的方法,该数据区段包含有多个字节,该多个字节排列成一矩阵,该矩阵沿一第一方向共有N排而沿与该第一方向垂直的一第二方向共有M排,该方法包含:
(a)沿该第一方向,计算该N排中每一排上M个字节所产生的错误检测码,其中对于该N排中的每一排,只有具有至少一错误位的字节对该排所对应的错误检测码产生不为零的影响;以及
(b)根据该N排中每一排与该N排的最后一排间的位移量来位移修正该N排中每一排所对应的错误检测码,接着加总该N排中每一排所对应的位移修正后的错误检测码来得到该数据区段的错误检测码。
2.如权利要求1所述的方法,其中该N排为该矩阵的N行以及该M排为该矩阵的M列,或者该M排为该矩阵的M行以及该N排为该矩阵的N列。
3.如权利要求1所述的方法,其中步骤(b)还包含有:
在计算出该N排中一第k排的错误检测码后,便先依据该第k排与该N排的最后一排间的位移量来位移修正该第k排所对应的错误检测码,然后才计算第k+1排所对应的错误检测码。
4.如权利要求1所述的方法,其中步骤(b)还包含有:
在该N排中多排已求出其错误检测码后,一并依据该多排中每一排与该N排的最后一排间的位移量来位移修正该多排中每一排所对应的错误检测码。
5.如权利要求1所述的方法,其中步骤(a)以依序处理方式计算该N排中每一排上M个字节所产生的错误检测码,以及该依序处理方式包含:
计算该N排的一第k排中一第一个字节所对应的错误检测码,并设定该第一个字节所对应的错误检测码为该第k排的暂存错误检测码;以及
依序处理该第k排的一第二个字节至一第M个字节,其中处理该第二个字节至该第M个字节中任一字节的程序包含:
依照一正在处理字节与一前一字节间的位移量,对该前一字节所对应的暂存错误检测码进行位移修正;以及
计算该正在处理的字节所对应的错误检测码,并将该第k排所对应的暂存错误检测码设定为该正在处理字节的错误检测码以及经位移修正过的该前一字节所对应的错误检测码的总和。
6.如权利要求1所述的方法,其中步骤(a)以平行处理方式计算该N排中每一排上M个字节所产生的错误检测码,以及该平行处理方式包含:
依序处理该N排的一第k排中一第一个字节至一第M个字节,其中处理该第一个字节至该第M个字节中任一字节的程序包含:
计算一正在处理的字节所对应的错误检测码;以及
依照该正在处理字节与该第k排的最后一字节间的位移量,对该正在处理的字节的错误检测码进行位移修正;以及
加总该第一个字节至该第M个字节中所有字节的经位移修正后的错误检测码来作为该第k排的错误检测码。
7.如权利要求1所述的方法,其使用依序执行多个程序来计算该数据区段的错误检测码,且其在同一时间只进行该多个程序中的一程序,而该程序可以是:一检查某个字节是否具有错误位的程序、一计算某个字节所对应的错误码的程序或者一计算错误检测码的程序。
8.如权利要求1所述的方法,其使用流水线运算来计算该数据区段的错误检测码,并在同一时间进行至少二个程序,该二个程序是由一检查某个字节是否具有错误位的程序、一计算某个字节所对应错误码的程序与一计算错误检测码的程序中选择的二个程序。
9.如权利要求8所述的方法,其将该计算某个字节的错误码的程序以及一找寻下一个具有错误位的字节的程序一起进行,其中该找寻下一个具有错误位的字节的程序使用检查某个字节是否具有错误位的程序来依序检查多个字节。
10.如权利要求8所述的方法,其使用一第一程序来判断每一具有错误位的字节的位置、一第二程序来计算每一具有错误位的字节的错误码以及一第三程序来计算错误检测码。
11.如权利要求10所述的方法,其自一第一时间周期开始于每一时间周期中进行一次该第一程序来逐一检查不同字节,自一第二时间周期开始每一时间周期进行一次该第二程序来依序检查不同的字节,以及自一第三时间周期开始每一时间周期进行一次该第三程序来更新错误检测码,其中在任一时间周期中所进行的该第二程序计算上一时间周期中该第一程序所处理的字节的相对应错误值,而且在任一时间周期中所进行的该第三程序根据上一周期中该第一程序所发现的具有错误位的字节的位置以及上一周期中该第二程序所计算的具有错误位的字节的错误码来更新错误检测码。
12.如权利要求11所述的方法,在任一时间周期,该第一程序检查单一个字节。
13.如权利要求10所述的方法,其自一第一时间周期起开始于每一时间周期中进行一次该第一程序来逐渐检查不同的字节;自一第二时间周期起开始于每一时间周期进行一次该第二程序来依序检查不同字节;以及自该第二时间周期起开始于每一时间周期进行一次该第三程序来更新错误检测码,其中在任一时间周期中所进行的该第二程序计算前一时间周期中该第一程序所处理的字节的错误值,而且在任一时间周期中所进行的该第三程序根据前一周期中该第一程序所发现的具有错误位的字节的位置以及目前周期中该第二程序所发现的具有错误位的字节的错误值来更新错误检测码。
14.如权利要求13所述的方法,其中在任一时间周期中,该第一程序检查多个字节。
15.如权利要求13所述的方法,其中若于一时间周期内发现三个具有错误位的字节:一第一错误字节、一第二错误字节以及一第三错误字节,则该第三程序计算错误检测码EDC的数学式为:EDC=ΔL3{ΔL2[(ΔL1V1)+V2]+V3},其中V1、V2与V3为该第二程序所发现的该第一、第二以及第三错误字节各个具的错误值,ΔL3为该第三个错误字节与一参考位置间的位移量、ΔL2为该第二个错误字节与该第一个错误字节间的位移量,ΔL1为该第一个错误字节与该第二个错误字节间的位移量,以及该参考位置位于该第一、第二、第三错误字节之后。
16.如权利要求13所述的方法,若于一时间周期内发现三个具有错误位的字节:一第一错误字节、一第二错误字节以及一第三错误字节,则该第三程序计算错误检测码EDC的数学式为:EDC=L3V3+L2V2+L1V1,其中V1、V2与V3为该第二程序所发现的该第一、第二以及第三错误字节各个具有的错误值,而L1、L2、L3分别表示该第一错误字节、该第二错误字节以及该第三错误字节到一参考位置间的位移量。
17.一种光盘机计算对应一数据区段的错误检测码的方法,该数据区段包含有多个字节,该多个字节排列成一矩阵,该矩阵沿一第一方向共有N排而沿与该第一方向垂直的一第二方向共有M排,该方法包含:
沿该第一方向,计算该N排中每一排上每一个字节所产生的错误检测码,其中对于该N排中的每一排,只有具有至少一错误位的字节会对该排所对应的错误检测码产生不为零的影响;以及
将每一个不为零的错误检测码,依照其所对应的字节与该矩阵的一参考位置间的位移量作位移修正;以及
加总经位移修正后的各个错误检测码来产生该数据区段的错误检测码。
18.一种光盘机计算对应一数据区段的错误检测码的方法,该数据区段包含有多个字节,该多个字节排列成一矩阵,该矩阵沿一第一方向共有N排而沿与该第一方向垂直的一第二方向共有M排,该方法包含:
(a)沿该第一方向,计算该N排中每一排上M个字节所产生的错误检测码,其中对于该N排中的每一排,只有具有至少一错误位的字节对该排所对应的错误检测码产生不为零的影响;
(b)于计算出该N排的第一排所对应的错误检测码后,依据该第一排与该N排中紧随第一排的一第二排的位移量来位移修正该第一排所对应的错误检测码;以及
(c)计算该第二排所对应的错误检测码,并将该第二排所对应的错误检测码与经位移修正后的该第一排所对应的错误检测码加总后以作为该第二排所对应的错误检测码;以及
反复进行步骤(b)、(c)来得到该数据区段的错误检测码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510107037 CN1779833B (zh) | 2005-09-27 | 2005-09-27 | 计算错误检测码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510107037 CN1779833B (zh) | 2005-09-27 | 2005-09-27 | 计算错误检测码的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1779833A CN1779833A (zh) | 2006-05-31 |
CN1779833B true CN1779833B (zh) | 2011-05-18 |
Family
ID=36770113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510107037 Active CN1779833B (zh) | 2005-09-27 | 2005-09-27 | 计算错误检测码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1779833B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1091535A (zh) * | 1993-01-02 | 1994-08-31 | 麦克罗太克知识和数据统一处理有限公司 | 用于纠错码数据传输的方法和设备 |
CN1538298A (zh) * | 2003-04-17 | 2004-10-20 | 国际商业机器公司 | 计算机***中的纠错方法和装置 |
JP2004348824A (ja) * | 2003-05-21 | 2004-12-09 | Toshiba Corp | Eccエンコード方法、eccエンコード装置 |
CN1647392A (zh) * | 2002-04-05 | 2005-07-27 | 皇家飞利浦电子股份有限公司 | 用于将附加纠错层嵌入到纠错码中的方法和设备 |
-
2005
- 2005-09-27 CN CN 200510107037 patent/CN1779833B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1091535A (zh) * | 1993-01-02 | 1994-08-31 | 麦克罗太克知识和数据统一处理有限公司 | 用于纠错码数据传输的方法和设备 |
CN1647392A (zh) * | 2002-04-05 | 2005-07-27 | 皇家飞利浦电子股份有限公司 | 用于将附加纠错层嵌入到纠错码中的方法和设备 |
CN1538298A (zh) * | 2003-04-17 | 2004-10-20 | 国际商业机器公司 | 计算机***中的纠错方法和装置 |
JP2004348824A (ja) * | 2003-05-21 | 2004-12-09 | Toshiba Corp | Eccエンコード方法、eccエンコード装置 |
Also Published As
Publication number | Publication date |
---|---|
CN1779833A (zh) | 2006-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1183605B1 (en) | System and method for protecting data and correcting bit errors due to component failures | |
CN101635158B (zh) | 编码和/或解码***数据的方法、装置、***和体系结构 | |
EP1204921B1 (en) | System and method for detecting double-bit errors and for correcting errors due to component failures | |
US4675869A (en) | Fast decoder and encoder for Reed-Solomon codes and recording/playback apparatus having such an encoder/decoder | |
JP4791831B2 (ja) | 半導体記憶装置 | |
CN102017425B (zh) | 用于执行级联纠错的方法和*** | |
CN102938653B (zh) | 一种利用图形处理器gpu实现的并行rs译码方法 | |
JP5259343B2 (ja) | メモリ装置 | |
JP4836608B2 (ja) | 半導体記憶装置 | |
JP4846384B2 (ja) | 半導体記憶装置 | |
CN101960723A (zh) | Chien搜索装置和Chien搜索方法 | |
JP2010518464A (ja) | 半導体記憶装置 | |
CN101882467B (zh) | Ecc参数可配置的存储器控制装置 | |
CN101223700A (zh) | 用于配置循环冗余校验(crc)产生电路以对数据流执行crc的方法和设备 | |
CN101477481A (zh) | 一种自动纠错***及方法 | |
CN105808170B (zh) | 一种能够修复单磁盘错误的raid6编码方法 | |
CN101779379B (zh) | 使用通用级联码(gcc)进行编码和解码 | |
US6393597B1 (en) | Mechanism for decoding linearly-shifted codes to facilitate correction of bit errors due to component failures | |
CN103283149A (zh) | 用于处理数据元素序列的装置和方法 | |
US9141466B2 (en) | Correcting double-bit burst errors using a low density parity check technique | |
US9191029B2 (en) | Additional error correction apparatus and method | |
CN1779833B (zh) | 计算错误检测码的方法 | |
JP4891704B2 (ja) | 半導体記憶装置 | |
CN100393017C (zh) | 处理(m)或(2m)比特数据的里德-索罗门解码器及其解码方法 | |
TWI292866B (en) | Method for calculatng an error detection code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: WEISHENG ELECTRONICS CO., LTD. Free format text: FORMER OWNER: WEITENG OPTOELECTRONICS CO., LTD. Effective date: 20080215 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20080215 Address after: Taiwan County, Taipei, China Applicant after: Weisheng Electronic Co., Ltd. Address before: Taiwan County, Taipei, China Applicant before: Weiteng Opto-Electronics Co., Ltd. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |