线性分组码修正系统与方法 【发明领域】
本发明是关于一种线性分组码修正系统与方法;特别是有关于一种应用于光学记录系统的线性分组码修正系统与方法。
背景技术
光学记录系统在进行数据的写入或读取时,需要先进行数据的编码或解码。以数字多功能光盘(Digital Versatile Disc,DVD)系统为例,当DVD系统在进行数据的编码写入时,是以一个纠错区块(Error CorrectionCode block,ECC block)作为单位,循序将一个纠错区块中的数据写入至DVD碟片中。
欲写入至DVD片的数字数据是先被分解成多个2048比特的主要数据,并暂存至光学记录系统的缓冲存储器中。在DVD系统中,每一个主要数据是具有一代表其位置及号码的4比特认证数据(identification data)以及关于版权问题的一6比特版权管理信息(copyright management information)。DVD系统编码数字数据的第一个步骤,便是对于认证数据进行纠错计算,以获得2比特的一认证纠错码(identification error detection code)。
在获得认证纠错码之后,DVD系统便将认证数据、认证纠错码、版权管理信息以及主要数据暂存至DVD系统的缓冲存储器中,并在缓冲存储器中储存成12×172(12列172行)的区块。接着,DVD系统会将暂存于存储器中的数据读出,并对这些数据进行纠错计算,以获得这些数据的纠错码(Errordetection Code,EDC)。
认证纠错码以及纠错码是采用循环冗余码(Cyclic Redundancy Code,CRC)检测读出数据是否有错。CRC是用以检错,具有很强的检错功能,但却无法对发生错误的数据进行修补,因此熟知CRC皆仅用来检错。在数字数据的编码过程中,纠错码的计算是其中相当重要的一个步骤。
在计算完纠错码后,DVD系统会将主要数据自缓冲存储器中读出,并将其加扰(scramble),以产生一加扰数据(scrambled data),之后再暂存至缓冲存储器中。此一步骤完成后,便称之为一加扰数据区段(scrambled data sector)。在完成16个加扰数据区段后,由于每一个加扰数据区段仅有纠错码进行纠错,但没有纠错码进行错误的纠正。因此,DVD系统会在针对16个加扰数据区段进行纠错计算,以获得16个加扰数据区段的纠错码。将纠错码暂存至缓冲存储器后,即完成一个纠错区块。
然而在数据编码地过程当中,常常容易发生数据更改的问题,例如数据在某一比特从0变成1或从1变成0的情况发生。当发生这种情况时,熟知的编码技术就必须从头计算纠错码以及纠错码,因此造成严重的硬件浪费及执行时间的浪费。
为了解决此一问题,美国专利第6357030号特别针对纠错码的计算方式提出一套解决方案。第6357030号专利中提到可以不用重新计算整个纠错区块,仅需针对错误的位置以及比特变化(0变1或1变0),便可重新计算出修正纠错码,在加入原本的纠错码中即可得到新的纠错码。
然而第6357030号专利所揭露的技术在进行更正时,必须重新根据错误比特进行计算,以获得用来修正的修正码。无法直接快速的填入修正码,对于硬件的资源节省上没有很大的帮助。而且并未对纠错区块内部的纠错码进行更正,因此纠错码仍须重新进行计算。
【发明内容】
本发明的一目的在于提供一种纠错码的修正方法,可以在数据发生更改时,避免重新计算纠错码。
一种纠错码修正系统,当一原始数据中一认证数据加入一差错修正数据时,用以修正该认证数据经过一认证编码程序所产生的一认证纠错码以及修正该原始数据经过一数据编码程序产生的一纠错码。该修正系统包含一编码模块以及一修正模块。该编码模块是用以根据该认证编码程序对该差错修正数据进行编码而产生一差错认证纠错码,以及根据该数据编码程序对该差错修正数据以及该差错认证纠错码进行编码而产生一相对应的差错码。该修正模块是用以储存该差错认证纠错码以及该差错码,并将差错认证纠错码与该认证纠错码做修正运算而产生一认证纠错取代码以取代该认证纠错码,最后将该差错码与该纠错码做修正运算而产生一取代码以取代该纠错码。
当一原始数据发生了数据更改时,透过本发明可以直接找出造成数据更改的差错修正数据,以及相对应的差错码。之后便将该差错码与原始纠错码进行修正运算,而获得一取代码来取代原始的纠错码。因此本发明不需要重复进行繁复的数据编码程序,因而可以节省系统处理数据更改的时间,并且不会耗费硬件的资源。
关于本发明的优点与精神可以藉由以下的发明详述及所附附图得到进一步的了解。
【附图说明】
图1是本发明第一具体实施例修正系统及一存储器的示意图。
图2是本发明第二具体实施例修正系统示意图。
图3是本发明的修正方法的流程图。
附图标号说明
10、40:修正系统 12、42:编码模块
14、44:修正模块 16:存储器
20、50:原始数据 22:线性分组码
24:预定修正部分 25:线性分组码的修正部分
30、60:差错修正数据 31、65:差错码
32、66:取代码 52:纠错码
53:认证数据 54:认证纠错码
55:版权管理信息 56:主要数据
57:认证纠错码的修正部分 59:纠错码的修正部份
62:认证差错修正数据 63:差错认证纠错码
64:认证纠错取代码
【具体实施方式】
请参阅图1,图1是本发明第一具体实施例的修正系统10及存储器16的示意图。当光学记录系统(未显示)在编码暂存一段数据后,如果该段数据其中一原始数据20发生更改,意即于原始数据20中一预定修正部分24加入了一差错修正数据30以做修正时,本发明则提供一种修正系统10可对原始数据20经过一数据编码程序所产生的一线性分组码22进行修正。其中,原始数据20与线性分组码22则是暂存于光学记录系统中的一存储器16中。
修正系统10包含一编码模块12以及一修正模块14。如图1所示,其中虚线箭头L11表示编码模块12是用以事先根据该数据编码程序将差错修正数据30进行编码而产生一相对应的差错码31,并将差错码31储存至修正模块14中。修正模块14将差错码31与线性分组码修正部分25做XOR逻辑运算产生取代码32,并将取代码32写入并取代线性分组码22。在本发明的第一具体实施例中,编码模块12是与熟知光学记录系统中用以编码数据的装置相同,并且因为差错修正数据30为事先已知,因此编码模块12可以被软件取代,再将结果送至修正模块14即可。意即编码模块12可以是一程序模块,不需另外增加熟知光学记录系统的硬件需求。
藉此,本发明的修正系统10则直接将取代码32加入取代原始的线性分组码22,便可以获得原始数据20更改后的线性分组码。线性分组码的种类则包含了纠错码(Error Detection Code,EDC),以及纠错码中的外部检查码(OuterParity Code,PO)及内部检查码(Inner Parity Code,PI)。如此一来,当原始数据20发生更改时,光学记录系统就不需要再对更改后的原始数据重新进行数据编码程序,可以有效节省光学纪录系统的硬件资源以及存储器的频宽要求。
本发明第一具体实施例是针对原始数据20经过一次编码获得相对应线性分组码22的情形。如果原始数据20内包含的数据,是经过编码处理的数据时,其情形会较为复杂。请参阅图2,图2是本发明第二具体实施例的修正系统40的示意图。本发明第二具体实施例中,一原始数据50以及其相对应的一纠错码52是暂存于存储器16中。原始数据50包含了一认证数据53、一认证纠错码54、一版权管理信息(copyright management infromation)55以及一主要数据56。认证数据53是用以标明主要数据56的来源位置。认证纠错码54是用以对认证数据53进行纠错与验证,其是由认证数据53经过一认证纠错码编码程序编码而得。版权管理信息55是用以标明原始数据50的版权。
图2的实施例中,原始数据50内包含了认证数据53以及认证纠错码54。因此当原始数据50的一预定修正部分58发生更改,即加入一差错修正数据60时,如果差错修正数据60同时造成认证数据53发生更改,意即差错修正数据60包含一认证差错修正数据62时,则认证数据53所对应的认证纠错码54亦需随认证数据53而更改。如此一来,原始数据50相对应的纠错码52不能直接针对差错修正数据相对应的更改,纠错码52必须确认更改后的认证纠错码后,才获得整个原始数据更改后的完整内容,才可以依据这个完整内容再进行更改。
如图2所示,修正系统40包含了一编码模块42以及一修正模块44。当一差错修正数据60加入于原始数据50,且差错修正数据60包含认证差错修正数据62以修正认证数据53时,修正系统40则用以修正认证数据53经过一认证编码程序所产生的认证纠错码54以及用以修正原始数据50经过一数据编码程序产生的纠错码52。
如图2所示,其中虚线箭头L41表示编码模块42会事先依据该认证纠错码编码程序将认证码差错修正数据62编码为一相对应的差错认证纠错码63,修正模块44则将差错认证纠错码63与认证纠错码的修正部分57做XOR产生认证纠错取代码64以取代原始的认证纠错码54。同样,虚线箭头L43则表示编码模块42会事先根据纠错码编码程序将差错修正数据62及已编好的差错认证纠错码63编码而成一对应的差错码65。修正模块44则会储存差错认证纠错码63以及差错码65,以便发生更改时得以直接进行修正运算。当发生更改时,修正模块44将差错码65与纠错码的修正部分59做XOR逻辑运算而产生取代码66以取代原始纠错码52。在本发明的第二具体实施例修正系统40中,编码模块42是与熟知光学记录系统中用以编码数据的装置相同,并且编码模块的功能可以被软件取代,再将结果送至修正模块即可,不需另外增加熟知光学记录系统的硬件需求。
藉此,本发明的修正系统则直接将认证纠错取代码64以及取代码66加入原始的认证纠错码54以及纠错码52,便可以获得发生数据更改后的认证纠错码以及纠错码。如此一来,当发生数据更改时,光学记录系统就不需要再对更改后的数据重新进行数据编码程序,可以有效节省光学纪录系统的硬件资源以及存储器的频宽要求。
如图2所示,接下来将以实例说明本发明。首先解释用以计算认证纠错码的认证纠错码编码程序。首先可将认证数据53表示为ID(x),认证纠错码54表示为IED(x),则认证纠错码编码程序用以计算认证纠错码的方程序如下:
IED(x)=Σj=45C0,ix5-j={ID(x)·x2}mod{g(x)}]]>
其中,ID(x)=Σj=03C0,jx3-j,]]>g(x)=(x+1)(x+α),α是为多项式p(x)=x8+x4+x3+x2+1的根。
接下来可将新的认证数据ID_NEW(x)表示为ID(x)+DATA_BIT(x),而此时认证纠错码应随的更改为新的认证纠错码IED_NEW(x),此时新的认证数据与新的认证纠错码的关系式应该表示如下:
IED_NEW(x)={ID_NEW(x)·x2}mod{g(x)}
将ID_NEW(x)=ID(x)+DATA_BIT(x)代入,
则得
IED_NEW(x)
={(ID(x)+DATA_BIT(x))·x2}mod{g(x)}
={ID(x)·x2}mod{g(x)}+{DATA_BIT(x)·x2}mod{g(x)}
=IED(x)+IED_DATA_BIT(x)
其中,IED_DATA_BIT(x)即为差错认证纠错码
假设差错修正数据60是修改认证数据53中的一比特数据使其由0转变为1时,根据上式计算,其代表为原来的认证数据53加上「h020000」,此「h020000」即为本发明所称的差错修正数据60。如果再将「h020000」代入方程序中,则会得到其所代表的差错认证纠错码63为「h3e3c」。
接下来描述本发明编码模块编码纠错码的方法。由于纠错码必须随着认证数据以及认证纠错码更改而更改,如果将认证数据表示为ID(x),认证纠错码表示为IED(x),版权管理信息表示为CPR MAI(x),主要数据表示为M(x),因此数据编码程序编码纠错码的方式可以表示如下:
EDC(x)=Σi=310bixi=I(x)mod{g(x)}]]>
其中,I(x)=ID(x)+IED(x)+CPR_MAI(x)+M(x)=Σi=1651132bixi]]>
其中b是为多项式g(x)=x32+x31+x4+1的根。
接下来同样将新的认证数据IDN_EW(x)表示为ID(x)+DATA_BIT(x),新的认证纠错码IED_NEW(x)亦随之表示为IED(x)+IED_DATA_BIT(x),并将新的纠错码表示为EDC_NEW(x),此时数据编码程序所用以计算纠错码的方程序可以表示为:
EDC_NEW(x)
={ID_NEW(x)+IED_NEW(x)+CPR_MAI(x)+M(x)}mod{g(x)}
={ID(x)+IED(x)+CPR_MAI(x)+M(x)}mod{g(x)}+
{DATA_BIT(x)+IED_DATA_BIT(x)}mod{g(x)}
=EDC(x)+{DATA_BIT(x)+IED_DATA_BIT(x)}mod{g(x)} 由上式可知,新的纠错码可分解成原先的纠错码加上修正数据以及认证纠错修正码进行数据编码计算而得的修正码。
假设差错修正数据60是修改认证数据53中的一比特数据使其由0转变为1时,根据上式计算,其代表为原来的认证数据53加上「h020000」,此「h020000」即为本发明所称的差错修正数据60。如果再将「h020000」代入方程序中,则会得到其所代表的差错码为「hbc8ea19d」。
从上面这个结果可以看出,当光学记录系统在编码数据时,如果发生已经编码结束的数据,其认证数据中一比特由原先的0转变为1,则此时的光学记录系统仅需利用本发明的修正系统40将先前已计算而得的差错认证纠错码「h3e3c」送到修正模块44,修正模块44将差错认证纠错码与认证纠错码的修正部分做XOR逻辑运算产生认证纠错取代码以取代原先的认证纠错码。以及将差错纠错码「hbc8ea19d」送到修正模块44,修正模块44将差错纠错码与纠错码的修正部分做XOR逻辑运算产生取代码以取代原始纠错码,不需再重新进行计算认证纠错码编码程序以及数据编码程序。
因此本发明的修正系统不需再对认证修正数据重新计算,即可利用先前计算完成的认证纠错修正码填入至原始的认证纠错码中,较熟知技术方便许多。
请参阅图3,图3是本发明的修正方法的流程图。接下来将详述本发明的方法流程,本发明的纠错码修正方法包含下列步骤:
步骤S70:开始,接收差错修正数据60。
步骤S72:判断差错修正数据60是否包含认证差错修正数据62,若是则进行步骤S74,若否则进行步骤S76。
步骤S74:事先根据认证编码程序对认证差错修正数据62进行编码而产生差错认证纠错码63。
步骤S76:根据数据编码程序对差错修正数据60以及差错认证纠错码63进行编码而产生一相对应的差错码65。
步骤S77:储存差错认证纠错码63以及差错码63。
步骤S78:将差错认证纠错码63与认证纠错码的修正部分57做XOR逻辑运算产生认证纠错取代码64。
步骤S79:将差错码65与纠错码的修正部分59做XOR逻辑运算以产生取代码66。
步骤S80:根据认证纠错取代码64来取代认证纠错码54。
步骤S82:根据取代码66来取代纠错码56。
步骤S84:结束。
当一原始数据在纠错码编码完成后,该原始数据如果发生数据更改,并且其更改的差错部份为已知,熟知技术则需要在重复进行繁复的数据编码程序,以获得新的纠错码。透过本发明的实行,只要是线性区块的编码(LinearBlock Code),即可以直接找出造成数据更改的修正数据,以及相对应的修正码后,直接修正发生更改前的纠错码而获得更新后的纠错码。因此可以节省系统处理数据更改的时间,并且不会耗费硬件的资源。
藉由以上较佳具体实施例的详述,是希望能更加清楚描述本发明的特征与精神,而并非以上述所揭露的较佳具体实施例来对本发明的范畴加以限制。相反地,其目的是希望能涵盖各种改变及具相等性的安排于本发明所欲申请的权利要求的范畴内。因此,本发明所申请的权利要求的范畴应该根据上述的说明作最宽广的解释,以致使其涵盖所有可能的改变以及具相等性的安排。