背景技术
图1、图2及图3表示数据写入至光盘的格式化以及其错误修正程序(error correcting process)。DVD的错误修正程序。
如图1所示,记录在DVD的信息的实体架构包括多个数据区段20。由起始位置开始,一个数据区段20依序包括此数据区段20的起始位置的识别信息(ID)21、用以修正在识别信息21的识别信息错误检测码(IDE)22、储备数据(RSV)23、主数据(DATA)24、被记录的构成数据以及用来检测识别信息21、识别信息错误检测码22、储备数据23以及主数据24错误的错误检测码(EDC)25。被记录的数据包括依序排列的多个数据区段20。
图2表示在藉由多个数据区段(如图所示一个数据区段标示为20)以建立ECC(error correction code)区块30的编码程序。如图所示,当藉由16个数据区段建立一个ECC区块30时,每一个包含ID、IED、RSV、DATA以及EDC总共2064位的数据区段首先被划分成12个数据列并以数组的形式排列,其中,每一个数据列包括172字节(byte)。而第一数据列以ID、IED以及RSV开始,其后接有160字节的数据;而下10个数据列则分别包含有172字节的数据;最后一个数据列则包含有168字节的数据并后接4字节的EDC。
对于每一数据列而言,具有10字节的ECC内码(inner-code Parity,PI)31被加在数据列的末端,以构成一个修正区块34,如图2右侧所示。在此阶段,ECC内码31所加入的修正区块34沿着Y轴方向排列成12列。在这之后,以16个数据区段来重复此程序。因此,可以获得192(=12×16)列的修正区块34。
接下来,沿着Y轴方向,以每一字节来将192列的修正区块34分割,使得修正区块34分别沿着Y轴方向排列。然后,16个ECC外码(outer-codeparity,PO)32被加入每一垂直分割的数据行。这里需注意,ECC内码32也被加入至修正区块34中的部分ECC内码31。
根据上述的程序,产生了包括16个数据区段的ECC区块30,如图2所示。此时,包含在一个ECC区块30内的信息总量,以下列式子表示:
(172+10)字节×(192+16)列=37856字节
其中的数据24由下列式子表示:
2048字节×16=32768字节
在图2的ECC区块30中,由16个数据区段排列成192列,每一列172字节,而此192列每个分别还有10字节的内码PI附加其后,因此形成182行,此外还有另外16列每列16位的外码PO附加其后。因此,形成了一208列每列182字节的ECC区块30。在此ECC区块30中,每一个字节以Bi,j来表示(其中i为列数,j为行数)。例如,B1,0是指示位在第1列及第0行,B190,170是指示位在列190及行170。因此,i从0至207,j从172至181的Bi,j为内码31;而i从192至207,j从0至171的Bi,j为外码32。修正区块34连续地记录于一光盘片中。
ECC区块30包括内码PI 31及外码PO 32,如第1B的右侧所示,图2中沿着X轴方向排列的数据由内码PI 31所修正,且沿着Y轴方向排列的数据由外码32所修正。因此,可以实现沿着ECC区块30内的两轴来执行错误修正。
更具体的说明,例如,假使包括外码31而一共具有182 byte且连续地记录至光盘片的某些修正区块43,因光盘的物理性损伤而被破坏时,以Y轴方向而言,在一行中只有一个与外码32相关的字节数据遗失。因此,藉由使用在每一行的外码32来完成错误修正,既使是一个修正区块34完全地被破坏,也能够正确地由损坏位置来重制信息。
图3是说明实际记录一包含于ECC区块30的数据区段20的方法。在图3中,以Bi,j所指示的数据对应至图2中右侧的数据。在图3中,记录数据区段20的时间上的程序,是藉由编码器来执行。
当记录ECC区块30至一光盘片中时,首先,ECC区块30中的修正区块34沿着X轴方向形成一列,如图3的最上层所示,且ECC区块30接着被分散以分割成16个记录区段40(如图3的第二上层)。此时,一个记录区段40具有2366字节(=37856字节/16),是包含数据区段20、外码PO 31及内码PI 32的总字节。然而,数据区段20内的识别信息21(参阅图1)为在每一记录区段40的起始位置。
记录区段40被划分成多个数据节41且标头H附加于每一数据节41,其中,每一数据节41包括数据及具有91字节。接着,藉由将具有多对数据节41及标头H的记录区段40由8位调制为16位,使得由一个数据节41产生一个同步帧42。此时,一个同步帧42是由标头H’及数据节43所组成(如图3的中层所示)。更进一步地,一个同步帧42的数据量如下式所表示:
91字节×8×(16/8)=1456字节
然后,数据是以连续同步帧42的方式写入光盘。此时,一个纪录区段40包括26个同步帧42。
使用所披露的实体格式以储存至一光盘片,当重制数据时,执行8至16解调器及结合(图3),以有效执行错误修正来重制原本的ECC区块30,以实现正确地重制数据。
如上所述,错误检测码EDC为一4字节的检查码附加于先前2060字节(包括ID、IED、RSV的12个字节的区段数据讯息以及2048字节的主数据(maindata))的数据之后,用以检查区段数据讯息以及主数据是否有错误。若以位(bit)为单位考虑数据区段,则最高有效位MSB(most significant bit)为ID的第一个字节的第一个位,而最低有效位LSB(least significant bit)则为EDC最后一个字节的最后一位。因此MSB即为b16511,而LSB即为b0。而EDC的每一个位即可写成:
where
g(x)=x32+x31+x4+1
图4是表示传统光盘的编码流程。首先,自主机读取2048字节的主数据,并将主数据写入至DRAM中(步骤S1)。接着,产生2字节的识别信息错误检测码(IDE)以修正在4字节的识别信息(ID)的错误(步骤S2)。然后,产生了代表著作权的6字节储备数据(RSV)(步骤S3)。接下来,上述识别信息(ID)、识别信息错误检测码(IDE)、储备数据(RSV)以及主要数据是储存至DRAM中(步骤S4)。接下来,由DRAM读取上述识别信息(ID)、识别信息错误检测码(IDE)、储备数据(RSV)以及主数据(步骤S5)。根据上述识别信息(ID)、识别信息错误检测码(IDE)、储备数据(RSV)以及主数据计算出4字节的错误检测码(EDC)(步骤S6)。
然而,用以产生错误检测码(EDC)的信息,包括识别信息(ID)、识别信息错误检测码(IDE)、储备数据(RSV)以及主数据,总共为2060字节。因此,在产生错误检测码(EDC)时,大量的数据传送于光驱驱动IC以及数据缓存器(DRAM)之间,造成DRAM频宽的浪费。
因此,使用传统错误检测码(EDC)产生方法的光盘烧录速度将受限于存储缓冲器的频宽。藉由增加内存总线的时脉速度可增加光盘的记录速度,但是却增加了能量消耗。
具体实施方式
有一于2004/02/19已申请的发明名称为“光学记录方法”的申请案为本申请案的相关发明。其中在上述申请案中已披露了一种以较少内存存取次数而产生同位检查码(parity code)的方法。 而在上述的申请案中提供了垂直混编(vertically scrambling)的方法用以在产生PI之前先产生PO,如此,产生所需要ECC区块的内存的存取次数可以大为减少(只需3次),同时内存频宽较先前技术可以被更有效的利用。为了实现上述申请案的目的,本发明提供了一种在产生同位检查码之前产生错误检测码的方法。
图5表示根据本发明实施例所述的错误检测码产生方法。首先,当主数据从主机中被读出时,利用将未知的12字节的区段数据讯息(包括ID、IED以及RSV)以及2048位的主数据代入上述Eq(1)中,以得到第一错误检测码PEDC(步骤510)。其中值得注意的是,当主数据从主机中读出时,此一12字节的区段数据讯息并不知道(因为还不知道主数据会被写到哪一个区块中),因此这12字节未知的区块数据讯号可被视为“0”代入Eq(1)中(亦即数据区段中的b16511-b16416视为“0”)。接着,当主数据被写入一个ECC区块的其中一个数据区段中时,此时将已知的12字节区段数据讯息(包括ID、IED以及RSV)以及2048位的主数据代入上述的Eq(1)中,以得到第二错误检测码MEDC(步骤520)。其中值得注意的是,当主数据写入所要的数据区段时,区段数据讯息可以得到,同时此时2048字节的主数据会被视为”0”代入Eq(1)中(亦即数据区段中的b16415-b32视为“0”)。最后,将第一错误检测码PEDC以及第二错误检测码MEDC执行异或(exclusive-OR)运算以得到真正的错误检测码EDC(步骤530),并将真正的错误检测码EDC写入DRAM中。而错误检测码EDC的表达式如下:
EDC=PEDCMEDC;Eq.(2)
其中“”表示为异或运算。
如上所述,可以发现到因为第一错误检测码PEDC是在当主数据从主机中读取时同时产生的,因此内存的存取次数可减少。此外当计算第二错误检测码MEDC时,只需存取12字节的区段数据讯号即可,也就是说内存存取的频宽使用减少(因为不用存取2048字节的主数据)。
此外,如上所述当计算第一错误检测码PEDC时的12字节区段数据讯息以及当计算第二错误检测码MEDC时的2048字节主数据分别再计算时被视为“0”而代入Eq(1)中,但事实上用任何其它的数值代入也可以,而同时也不限定要用相同的数值代入。如此则EDC的表达式可以改写成:
EDC=PEDCMEDCC;Eq.(3)
其中C表示为一个修正常数,举例来说,当改用“1”代入时,则修正常数C即为使得经过异或运算之后可以得到与用“0”代入相同EDC结果的一个可预期的常数。
在本发明中计算第二错误检测码MEDC时,主数据顺序被一取代数值所代入(例如:“0”),亦即总计算时间还是一样。举例来说,假设1字节的计算时间为1T,则产生第二错误检测码MEDC的总计算时间为2060T(包括计算12字节区段数据讯息需要12T以及计算2048字节设定为“0”(假设)的主数据需要2048T)。
因此,为了节省计算的时间,本发明同时提供了另一种计算第二错误检测码MEDC的方法。上面所提到的计算错误检测码所使用的表达式Eq(1)是以位(bit)为单位,将所需要的数据依序1位1位的代入Eq(1)中,因此,同样的当主数据在以“0”代入的情况下,Eq(1)可以改写成一次以2048字节为单位代入的型式,如此一来就可以一次跳过依序计算2048字节的时间,亦即计算第二错误检测码MEDC的时间可以减少。相同地假设计算1字节所需要的时间为1T,如此一来利用此一方法之后,则只需要13T的时间即可以计算出第二错误检测码MEDC(包括计算12字节区段数据讯息需要12T以及利用运算试跳过依序计算2048字节所需1T的时间)。
相较之下,传统错误检测码产生方法必须计算识别信息(ID)、识别信息错误检测码(IDE)、储备数据(RSV)以及主要数据。因此,大量的数据传送于光驱驱动IC以及数据缓存器(DRAM)之间,造成DRAM频宽的浪费。然而根据本发明所披露的错误检测码产生方法,当由主机存取主数据的同时,根据未知的区段数据讯息(以一取代数据代入)以及主数据产生第一错误检测码PEDC。接下来,当主数据写入数据区段时,再根据区段数据讯息(包括识别信息(ID)、识别信息错误检测码(IDE)、储备数据(RSV))其结果与传统错误检测码产生方法所得的错误检测码相同。
根据本发明实施例所述的错误检测码产生方法的优点在于有效的减少由存储缓存器的数据存取量。根据本发明,于自主机读取主数据时所产生的第一错误检测码时,识别信息(ID)、识别信息错误检测码(IDE)以及储备数据(RSV)等区段数据讯息并不知道。而产生第二错误检测码时,并不需要存取数据缓存器的主数据。再者,最终错误检测码仅需根据分别为4字节的第一错误检测码以及第二错误检测码即可产生,无须存取整个2060字节的数据。
再者,在特定的情况中,当相同的主数据需被重复写入不同数据区段(ID不同)时(例如:有关固件的程序)。则因为主数据均相同的关系,因此第一错误检测码PEDC均相同。因此具有相同主要数据的不同数据区段的最终错误检测码可根据个别的第二错误检测码以及单一第一错误检测码而得,因此,有效提升产生错误检测码的运算速度。
本发明虽以较佳实施例披露如上,然其并非用以限定本发明的范围,本领域的技术人员在不脱离本发明的精神和范围的前提下,可做若干的更动与润饰,因此本发明的保护范围视本发明的权利要求为准。