具体实施方式
下面将参照示意性实施例对本发明进行描述。本领域内的技术人员可以理解的是,使用本发明的教导可以完成许多替换实施例,并且本发明不仅仅限于为了解释的目的而说明的实施例。
下面将参照附图对本发明的一个示例性实施例进行详细描述。该示例性实施例将本发明应用于能够在光盘上进行高速记录的编码装置和记录设备上。在使用蓝光盘作为光盘的一个例子,并且如果需要的话根据蓝光标准的物理说明进行编码的情况下给出下面的说明。但是,本发明并不限于此,并且可以被用于具有不同编码次序和解码次序的其他类型的盘的记录设备等。
图1为描述包含在蓝光盘的每个数据块中的以字节为单位来排列数据顺序的图。图2为两个扇区Sec 0和Sec 1的放大图。图1和2中所示的值表示以字节为单位沿用户数据方向Q的顺序。数据块41含有304列和216行。该数据块41包括32个扇区。一个扇区由2052字节数据组成:2048字节的用户数据加上4字节EDC。
每个扇区具有304列的块数据,其中每列排列有216字节数据。如果Row表示行号(0≤Row≤215)并且Column表示列号(0≤Column≤303),在扇区0中,例如,列Column=9具有Q=1944至2051字节数据,其占据行Row=0至107。在列Column=9中行Row=108至215被下一扇区Sec1的第0至第107字节数据占据。按这种方式,数据块41的结构使得奇数扇区和偶数扇区形成一个单元,在这里被称为“区”。这样,数据按相同顺序被重复地排列在每个区的具有19列扇区对的每个区中。
在扇区Sec 0至Sec 31中,沿如图1和2中所示用户数据方向Q对用户数据执行预定运算以添加EDC。该数据被加扰,接着被调制,并被记录在盘上。在被记录时,沿图1中的箭头表示的记录帧方向P的顺序记录所述数据块,该记录帧方向P与列方向或用户数据方向Q垂直。该用户数据方向Q与用于添加误差检测码的处理顺序以及在蓝光盘中进行加扰和编码的处理顺序一致。如在后面所述,可以分别对用户数据和EDC进行加扰,然后将它们集成在一块。
如前面所述,数据沿记录帧方向P被记录在蓝光盘上。这样就需要至少在调制之前把数据顺序从用户数据方向Q(这是用于编码的处理顺序)重新排列至记录帧方向P。如果沿记录帧方向P执行编码,则无法计算EDC。由于在读取偶数扇区中的整个扇区中的所有用户数据之前添加EDC,同时根据如图1中所示的扇区中的全部用户数据确定EDC,因此在这种情况下无法生成添加了EDC的数据。
因此,如果作为用户数据顺序(通常编码序列)的用户数据方向Q以及作为在盘上记录数据顺序的记录帧方向P不同,则一般需要进行一些算术运算来计算EDC等,并事先添加所得到的EDC,接着重新排列添加了EDC的数据,从而为记录作准备。在这种情况下,通常可通过临时地将添加了EDC的数据存储在数据缓冲器中,可以对数据进行重新排列。但是,为了实现高速运算,该数据缓冲器应该由昂贵的SRAM组成,因此不实用。
为解决这个问题,根据以本发明申请人的名字提出的美国专利申请第11/366 629号(日本专利申请第2005-060364号)(下文中被称为“参考文献”),一种记录设备包括替换缓冲器,其存储器容量为每个突发传送(burst transfer)等的传送大小m×304字节×2面(用于写入和读取),ECC缓冲器(9728字节×2面),用于临时存储ECC奇偶校验,EDC缓冲器(4字节×32×2面),用于临时存储EDC代码,以及加扰缓冲器(38字节×2面)。上述参考文献中公开的发明通过临时存储通过沿用户数据方向Q编码而得到的EDC、加扰中间值和ECC的处理(路径S1’)以及把EDC添加给用户数据同时重复地从数据缓冲器突发传送用户数据并进行加扰的处理(路径S2’)就能够高速传送数据至替换缓冲器。
在上述的参考文献中公开的发明中,替换缓冲器由不需要更新的存储器构成,并且能够进行随机存取,从而能够高速地将通过突发传送从数据缓冲器中得到的连续数据重新排列为记录帧方向P上的顺序。在这种情况下,即使替换缓冲器的容量小于数据缓冲器的存储器容量,也可以对被重新排列在记录帧方向P上的数据进行加扰,其中该数据是从使用EDC、加扰中间值以及ECC的运算结果中得到的,而该EDC,加扰中间值以及ECC是在路径S1’中计算的并被存储。
因此,虽然一直无法实现高速编码,除非使用能够高速随机存取的临时存储器,例如昂贵的SRAM作为数据缓冲器,但是参考文献中公开的发明仅仅通过给相对小尺寸的电路添加使用并不适于高速随机存取的SDRAM等作为数据缓冲器,就能够以很低的成本进行高速编码。
需要将两簇的数据读入到用于编码的数据存储器并对其中的一个簇进行重新排列。为了沿记录帧方向P记录数据,需要事先沿用户数据方向Q读取一个簇(2048字节×32扇区)的数据,仅仅是为了EDC编码,而这增加了对于数据缓冲器的绝对存取并增加了功率损耗。
实现高速编码需要在高频时钟下运行的高成本数据缓冲器,而这进一步增加了功率损耗。为了解决这个问题,本发明的一个示例性实施例对偶数扇区中的数据进行如下的运算,其中,当沿用户数据方向Q读取数据时,EDC被添加在扇区的末端,而当沿不同于用户数据方向Q的次序,例如沿记录帧方向P读取扇区数据时,EDC被插在中间。特别地,根据本发明的一个示例性实施例的记录设备包括第一运算部分,用于从一部分偶数扇区中计算EDC中间值,这将在后面描述,以及第二运算部分,用于从其余部分和该EDC中间值中计算EDC,并通过两个运算部分来确定EDC。这就降低了对于数据缓冲器的存取,能够进一步的改进编码规范(encoding specification)和降低功率损耗及成本。用户数据方向Q的顺序对应于第一顺序,记录帧方向P的顺序对应于第二顺序,并且偶数扇区对应于运算目标扇区。
下面的示例性说明描述了一种记录设备,通过如下的处理来描述该记录设备:至少从上述的用户数据生成EDC并将其添加到用户数据,特别是在对蓝光盘上的用户数据进行编码时,可以将记录设备和重放设备组合在一块,以形成记录和重放设备。
为了更容易地理解本发明,这里将对在上述参考文献中公开的计算误差检测码的方法进行描述。
图3为显示在参考文献中公开的记录设备中用于计算误差检测码的部分的图。
在该参考文献中,步骤(路径1’)在根据蓝光说明的处理中确定误差检测码,并且步骤(路径2’)插入误差检测码并输出数据。路径2’中的处理顺序地沿记录帧方向P突发传送具有突发传送大小m并被排列在用户数据方向Q上的数据,添加在路径1’中计算的EDC,并输出添加了EDC的数据。
特别地,根据参考文献中公开的发明,一种记录设备包括用于存储用户数据的数据缓冲器11,缓冲器控制器12,EDC发生器13,EDC缓冲器14,以及集成部分15。在下面的例子中,用户数据按照地址升序的顺序沿用户数据方向Q排列,并从该用户数据的头数据开始被临时存储到数据缓冲器11中。该数据缓冲器11是一个用于存储从主机发送出的用户数据的存储器,并由能够进行突发传送的SDRAM等构成。该缓冲器控制器12包括通道CH1,用于读取将在路径1’中使用的用户数据,以及通道CH2,用于读取将在路径2’中使用的用户数据。
由通道CH1沿用户数据方向Q的顺序从数据缓冲器11中读出的用户数据被发送至EDC发生器13。该EDC发生器13由移位寄存器构成,当沿用户数据方向Q输入2048字节用户数据和4字节0数据(这对应于一个扇区的数据)时生成4字节EDC。所生成的EDC被存储在EDC缓冲器14中。
在路径2’中,由通道CH2,将沿用户数据方向Q从数据缓冲器11中读出的用户数据、以用户数据方向Q的顺序的突发传送大小、沿记录帧方向P顺序地传送至集成部分15。特别地,由32个扇区组成的用户数据(数据块41)、以用户数据方向Q的顺序的突发传送大小、沿记录帧方向P被重复地传送304次。在该实施例中,沿用户数据方向Q上突发传送大小m×304字节的部分被称为传送块。如果突发传送大小m为6,则在重复传送36次该传送块之后,该数据块41的传送结束。
在传送该传送块时,该集成部分15在规定的时刻从EDC14中读出EDC,将该EDC添加给要被突发传送的用户数据,并输出该添加有EDC的数据。
该添加了EDC的数据接着被加扰和输出作为记录数据。在上面提到的参考文献中描述了该处理的细节。简要地,该处理将添加有EDC的数据存储在缓冲器(替换缓冲器)中,其中该缓冲器的存储器容量为传送块大小或更大,接着沿记录帧方向P读取数据用于输出。接着,对沿记录帧方向P排列的添加有EDC的数据进行加扰并输出加扰后的数据作为记录数据。该加扰使用加扰中间值,其中在路径1’中一块计算该加扰中间值和EDC。
在路径1’中,由集成部分15为其添加了EDC的数据接着被逐字节顺序地沿用户数据方向Q输出至加扰器。在加扰器中,在输入数据Dk的输入定时,从加扰移位寄存器中输出加扰值Sk,并且计算加扰值Sk与输入数据Dk的异或(异OR),以获得加扰后的数据Dk’。在路径1’中,记录设备将加扰移位寄存器的存储值(16位)存储在加扰缓冲器,作为加扰中间值。该16位加扰中间值被用在路径S2中,以计算沿记录帧方向P,而不是沿用户数据方向Q的加扰值,从而使得可以加扰。
进一步,参考文件中公开的发明计算加扰中间值,并接着根据该数据计算ECC。特别地,在路径1’中,除了EDC和加扰中间值以外,还计算ECC,用于路径2’。如将在后面所述,可以对从集成部分15输出的添加有EDC的数据进行加扰,并将加扰后的数据存储在替换缓冲器中,接着沿记录帧方向P输出数据作为记录数据。
根据参考文献中公开的发明,当在路径1’中计算EDC时以及当在路径2’中输出添加了EDC的数据时,该缓冲器控制器12需要从数据缓冲器11中读出一个簇的用户数据(数据块),该用户数据为2084字节×32扇区。因此,需要在路径1’和路径2’中读出全部两个数据块的用户数据。另一方面,在下面描述的本发明的示例性实施例能够减少读取的用户数据的总量,从而减少对于数据缓冲器的存取,即使当实施与参考文献中相同的两个步骤。特别地,该实施例的处理将在第一步骤中使用的用户数据减少至约四分之一。它可以根据大约四分之一的用户数据来计算EDC中间值,并接着根据其余的用户数据(大约四分之三)和该EDC中间值来计算EDC。这使得在第一步骤中对数据缓冲器的存取降至大约四分之一。该实施例因此降低了对于数据缓冲器的数据存取,以进一步改进编码规范和降低功率损耗及成本。
第一实施例
图4为根据该发明第一示例性实施例的记录设备的示意图。如图4中所示,该记录设备1包括数据缓冲器2,缓冲器控制器3,以及编码器4。该数据缓冲器2对从主机(未示出)传送的用户数据进行缓冲。所述主机可以是音频视频(AV)系统、个人计算机(PC)等,主机指示记录设备1来记录用户数据或从盘中读取数据。
该缓冲器控制器3控制从数据缓冲器2读取用户数据。该缓冲器控制器3根据需要读取用户数据并将所读取的数据传送至编码器4。为了计算EDC,该实施例的记录设备并行地执行:这样的处理(下面被称为路径1),用于从偶数扇区后半段中的数据计算EDC中间值,该后半段约为整个数据块中用户数据的四分之一;以及这样的处理(下面被称为路径2),用于从用户数据的其余四分之三及该EDC中间值中计算EDC。该缓冲器控制器3具有通道CH1,用于读取在路径1的处理中使用的用户数据,以及通道CH2,用于读取在路径2的处理中使用的用户数据,这两者都是从数据缓冲器2中读出。
该编码器4将EDC添加给用户数据,并对添加有EDC的用户数据进行加扰。该编码器4接着输出加扰后的数据(下文中被称为记录数据)以及从该记录数据中得到的ECC。该ECC和记录数据接着与BIS代码结合,通过1-7PP调制,并被记录在盘上。
该编码器4包括EDC发生器31、EDC表32以及EDC缓冲器33,用于进行路径1的处理。它进一步包括EDC发生器32,用于计算路径2中的EDC。该EDC发生器31用作第一运算部分,EDC发生器34用作第二运算部分。在路径1的处理中,EDC发生器31通过参照EDC表32和EDC缓冲器33来进行运算。路径1中在EDC发生器31中执行的运算的结果就是EDC中间值,这将在后面描述。该得到的EDC中间值被写回至EDC缓冲器33。在路径2的处理中,该EDC发生器34参照EDC表32和EDC缓冲器33计算EDC,并将得到的EDC写回至EDC缓冲器33。
该编码器4进一步包括集成部分35,用于将存储在EDC缓冲器33中的EDC添加给从通道CH2中读出的用户数据,并输出添加了EDC的数据。它进一步包括加扰器36,用于对从集成部分35输出的添加了EDC的数据进行加扰,以及加扰值发生器37,用于计算加扰器36所需的加扰值,以对数据进行加扰。该编码器4进一步包括替换缓冲器38,用于把被加扰器36加扰后的数据重新排列为沿记录帧方向P的顺序。该集成部分35、加扰器36、加扰值发生器37以及替换缓冲器38构成了加扰处理器,用于从用户数据和EDC中计算记录数据并输出所得到的记录数据。
另外,该编码器4包括ECC发生器39,用于从加扰后的数据中生成ECC,以及ECC缓冲器40,用于缓冲由ECC发生器39生成的ECC。沿记录帧方向P的顺序从替换缓冲器38中读出的数据被输出作为记录数据。该ECC缓冲器40的数据被输出作为ECC奇偶校验。该记录数据以及ECC奇偶校验被输出至未示出的集成部分,其中该记录数据被重新排列行和列,添加ECC并接着被交错(interleave),从而生成ECC簇(参看图32中的D12)。
进一步,用于生成BIS的另一种编码装置(BIS编码装置)从用户控制数据以及地址单元号(参看图32中的D7和D8)中生成存取块(参看图32中的D9),并进一步生成BISECC(参看图32中的D10)。接着,该BIS编码装置把该存取块以及BISECC提供给集成部分,以生成BIS块(参看图32中的D10)。该BIS块被交错成为BIS簇(参看图32中的D11)。接着,该BIS簇与LDC簇被组合在一起生成ECC簇(参看图32中的D12)。该ECC簇被添加上了帧同步和DSV控制位,生成了物理簇(参看图32中的D13)。接着,对该记录帧执行17PP调制并将run-in和run-out添加给它,以生成记录单元块RUB(参看图32中的D14)。之后,通过盘控制器以RUB为记录单位将数据记录到盘上。
下面将对该示例性实施例进行进一步的详细描述。该实施例在读出一个扇区的用户数据之后并没有计算EDC,而是在路径1中从大约四分之一的用户数据中计算EDC中间值,并接着在路径2中通过根据其余用户数据对该EDC中间值进行校正来计算EDC,从而把在路径1中出现的对于数据缓冲器2的存取减少至约四分之一。
图5是用于描述在根据该实施例的路径S1和路径S2中使用的用户数据的图。编码器4中的处理单位,即数据块41具有偶数扇区,其中当沿用户数据方向Q读取数据时EDC被添加在扇区的末端,而当沿不同于用户数据方向Q的顺序读取一个扇区的数据时,它被插入在中间。在该实施例的路径1中,在沿作为第一顺序的用户数据方向Q读出数据块。在路径2中,另一方面,沿作为不同于所述第一顺序的顺序的记录帧方向P上读出沿用户数据Q方向排列的各具有突发传送大小m的用户数据突发。在这种情况下,偶数号扇区是代码串(运算目标扇区),其中在传送如图5中所示的一个扇区中的全部数据之前,EDC被插入至该代码串。这样,路径1中的处理通过对在路径2中用作运算目标扇区的偶数扇区的一部分进行运算来计算EDC中间值,这是添加了EDC之后被读出的偶数扇区的后一部分。之后,路径2中的处理通过对偶数扇区的其余部分以及奇数扇区的整个部分进行运算来计算EDC。所述奇数扇区为扇区是这样的代码串(非运算目标扇区),当沿用户数据方向Q读取数据时,以及当沿作为不同于上述顺序的记录帧方向P读取突发传送大小为m并且沿用户数据方向Q的顺序排列的用户数据时,在扇区的末端添加EDC,并且因此不需要在路径1中计算EDC中间值。
虽然本实施例每次突发传送6个字节的用户数据,但是也可以按不同的顺序,例如沿记录帧方向P每次传送一个字节的用户数据。由于在该实施例中EDC为4个字节,因此偶数扇区中的EDC被置于这样一个位置:行数Row=104至107,列数Column=109。因此需要在路径2中计算被置于行Row=104和列Column=9的EDC的头字节之前对偶数扇区中的所有用户数据完成如下运算(与期望值的异或运算)。由于这个原因,路径1的处理需要对被置于行Row=105至215和列Column=0至8的用户数据进行处理。这与如下情况相同:突发传送大小小于4个字节,或者突发传送字节为4个字节或更大,以及相继地通过两个传送块来传送数据。特别地,该实施例进行路径1的处理,使得在对被置于Row=104和Column=8或Row=212和Column=18的EDC的头字节进行运算之前计算该扇区中所有用户数据的期望值的异或。后面将描述用于在数据缓冲器2中计算和指定头地址以进行突发传送的方法。
在路径1中,缓冲器控制器3的通道CH1按用户数据方向Q的顺序读出被置于偶数扇区的行Row=108至215中的数据,其中该偶数扇区包含在数据块41中作为如图5中所示的运算目标扇区的一部分,并将所读出的数据输出给EDC发生器31。特别地,顺序地传送列Column=0和行Row=108至215中的用户数据,并接着传送列Column=1和行Row=108至215中的用户数据。由于通道CH1只传送偶数扇区的用户数据,在完成传送列Column=8中的数据之后,跳过扇区1并开始传送扇区2中的用户数据,它们位于Column=19至27和Row=108至215中。重复这种传送过程,直到达到最后的偶数扇区30。该EDC发生器31对偶数扇区的后部分进行运算。
另一方面,在路径2中,缓冲器控制器3的通道CH2按照不同于通道CH1的读取顺序读出数据块41中的全部数据。特别地,通道CH2在路径2中按突发传送大小m来突发传送数据。虽然该实施例中的突发传送大小m为6个字节,但它也可以大于或小于6个字节。该突发传送大小m优选地等于或大于EDC的大小。
首先,对于沿记录帧方向P(行方向)的一个数据块,对沿用户数据方向Q(列方向)排列的6字节数据重复传送304次。在该实施例中,通过把沿用户数据方向Q的6个字节在记录帧方向P上传送304次而得到的数据被称为传送块C。图6为示出数据块中41的传送块的图。在每次执行6个字节的突发传送的情况下,为了传送一个数据块要传送36个传送块。该通道CH2将每6个字节的用户数据通过突发传送的方式提供给集成部分35,并且也将其提供给EDC发生器34。该EDC发生器34对除了已经在路径1中由EDC发生器31对其进行了运算偶数扇区的后部分以外的用户数据的其余部分的数据进行运算,运算该部分为偶数扇区的前半部分以及奇数扇区的整个部分。
下面将对根据示例性实施例的记录设备的运算概述进行描述。图7为示出路径S1和S2中的数据处理时序的图。如图7中所示,数据以1RUB为记录单位被记录在盘上。当在路径S1中处理在第t个RUB中包含的用户数据时,在路径S2中处理在第(t-1)个RUB中包含的用户数据(数据块)。由于根据路径S1的处理结果来进行路径S2的处理,因此该记录设备1能够通过并行地处理在第t个RUB和第(t-1)个RUB中包含的用户数据而以流水线的方式对RUB中包含的用户数据进行编码。路径S1的处理沿用户数据方向Q传送用户数据,路径S2的处理输出了被加扰的用户数据,作为沿记录帧方向P的记录数据。
当在路径S2中处理第(t-1)个RUB中包含的用户数据时,在路径S1中处理第t个RUB中包含的用户数据。这样,在路径S2中开始处理在第(t-1)个RUB中包含的用户数据时,已经完成了路径S1中对第(t-1)个RUB中包含的用户数据的处理。因此,在路径S2对数据进行处理之前,路径S1对至少1个RUB的数据进行了处理。
下面将描述在路径1和路径2中进行的EDC计算。路径1和2中的运算通过使用对应于用户数据方向Q顺序的规定值来计算EDC中间值或EDC。首先将描述该运算方法的原理。
在蓝光盘中,2048个字节(16384位)的用户数据加上了4个字节(32位)的误差检测码。可以通过采用下面的生成多项式除以代码串D(x)来得到32位误差检测码,其中该代码串D(x)具有添加了4字节0数据的2048字节用户数据:
G(x)=X32+X31+X4+1
如果2048字节的用户数据为I(x),则可按如下来表示误差检测码EDC(x):
EDC(x)=∑bt*Xt=I(x)modG(x)(∑:t=31至0)
其中I(x)=∑bt*Xt(∑:t=16415至32)
因此,添加了误差检测码EDC(x)的代码串D(x)被表示如下:
D(x)=I(x)+EDC(x)
其中符号“+”表示异或运算。
如图8所示,可以通过将代码串D(x)输入给32位移位寄存器来得到误差检测码EDC(x)。输入了代码串D(x)的全部符号之后的32位移位寄存器的值就是误差检测码EDC(x)(=0)。在该实施例中,沿用户数据方向Q的位顺序是q,其被表示如下:q=b00000,b00001,…,b16415,t=16415-q等。
可以通过计算XtmodG(x)的异或来得到误差检测码EDC(x),其对应于输入代码串D(x)中具有“1”的位。XtmodG(x)表示在k=16416位的代码串D(x)中除了第(16415-q)(=t)次位以外的位都被设置为0而得到的代码串d(x)除以G(x)之后的余式。
图9为描述上述思想的图。设k位代码串D(x)是基本代码串D’(x),其中k位都为“1”({111…1})。通过把代码串D’(x)输入至如图8所示的移位寄存器50而得到的32位移位寄存器值就是代码串D’(x)的误差检测码E’(x)。在该实施例中,代码串D’(x)包括k=2052*8=16416位。
如图9所示,基本代码串D’(x)被设置作为k个代码串d(x)t,其在这里被称为期望值计算代码串。每个期望值计算代码串d(x)16415至d(x)0都是对应于q的位为“1”而其他位都为“0”。特别地,q=b00000对应于代码串d(x)16415={100…0},其中只有最高有效位(MSB)为“1”,并且q=b00001对应于代码串d(x)16414={010…0},其中只有第二位为“1”。类似地,q=b16415对应于代码串d(x)0={000…1},其中只有最低有效位(LSB)为“1”。通过输入期望值计算代码串d(x)t给移位寄存器50,得到了32位移位寄存器值XtmodG(x)。
这样,期望值计算代码串d(x)除以作为误差检测值的G(x)之后的余式就是XtmodG(x)。XtmodG(x)在这里被称为期望值。期望值XtmodG(x)表示当只有对应于初始代码串D(x)中位顺序q的位数据为假时的伴随值。
通过将代码串D’(x)输入至移位寄存器而得到的32位移位寄存器值(误差检测串E’(x))等于通过对全部32位移位寄存器值(期望值XtmodG(x)=Rt)进行异或而得到的值,其中该32位移位寄存器值是通过将期望值计算代码串d(x)t输入至移位寄存器而得到的。
这样,就能够得到误差检测码E(x)作为全部期望值XtmodG(x)的异或,其对应于代码串D(x)中具有符号“1”的位顺序q。这样,该实施例的处理就准备了期望值计算代码串d(x),其含有与该代码串相同的位数并且具有与该代码串相同的位顺序,其中,对应于每个位顺序的位为“1”并且其他位为“0”。接着,该处理保持或计算通过将期望值计算代码串d(x)输入至移位寄存器而得到的期望值(伴随值),该处理的重复次数与代码串D(x)的位数相同,在该实施例中是k=16416。使用这些期望值可以获得输入代码串D(x)中具有位“1”的所有期望值的异或(EDC)。这样就不需要将代码串D(x)输入至移位寄存器50。通过这种方式,即使按不同于用户数据方向Q的顺序进行运算,只要对应于代码串D(x)每个位的期望值是已知的,就能够获得该代码串D(x)的误差检测码E(x)
以数据块为单位对数据进行处理。该数据块41具有32个扇区(代码串D(x)),并且为每个代码串D(x)计算误差检测值E(x)。这样,从一个数据块41中得到32个误差检测值E(x)。
下面将详细描述该期望值。如图8所示,被输入至移位寄存器50的代码串D(x)就是X,其中被输入给沿用户数据方向Q第109个字节(Q=D00108)最高有效位(q=b00864)的数据为“1”而其他位上的数据都为“0”,例如。这样,代码串X具有16416位,其中第15552次序数据为“1”(B00864=1)而其他值都为“0”。
在这种情况下,通过对移位寄存器50的值初始化为“00000001h”并对该值移位15552次就能够得到将该代码串X输入至32位移位寄存器50而得到的结果。
为了计算EDC,只需要计算数值的XtmodG(x)的异或,其中该代码串的位数据为“1”。如果得到了XtmodG(x)的异或,则也能够计算误差检测值E(x),其中该误差检测值E(x)是该代码串D(x)的32位移位寄存器值。
图10是示出生成期望值的处理的流程图。如图10所示,该处理首先将移位寄存器50初始化为0(步骤S1)。接着,准备16415位的期望值计算代码串d(x)并将该代码串d(x)输入给移位寄存器50。该处理接着对16416位重复循环移位该移位寄存器50(S3和S4)直到该32位寄存器值达到所希望的期望值(32位)(S5)。
该示例性实施例没有保持所有对应于位数据的期望值,而仅仅保存了对应于由扇区0和1组成的区域Area 0中的Row=0的共计19个期望值。在蓝光盘中,数据块具有常规结构,其中有16个数据集,当从用户数据方向Q的顺序看时,每个数据集具有一对扇区0和1并且包括19列。这样,所有的区域具有沿用户数据方向Q的相同位顺序。在路径1中,运算从Row=108开始。由于Row=108的期望值等于Row=0的期望值上的Column+10的值,可以从Row=0的19个期望值中计算出全部的期望值,而无需存储所有的期望值。因此,通过上述运算从19个期望值计算代码串中计算期望值,其中,Row=0的MSB为“1”并且其他为“0”。在该实施例中,该19个期望值被称为初始期望值。具有一对偶数扇区和奇数扇区的区域中的列号为M(0≤M≤18)。
图11为描述路径1中的处理的图。在路径1中,该EDC发生器31仅仅涉及19个期望值(初始期望值),其对应于行Row=0中的最高有效位(MSB)。这样,该EDC表32读出期望值(初始期望值),其对应于行Row=0和列M=0至18中的最高有效位b00000、…、b14688。该初始期望值被预存在例如未示出的存储器等中。仅仅通过将初始期望值输入至移位寄存器(循环移位电路),这将在后面描述,并对该数据移位一次就能够得到每个列方向(用户数据方向Q)的期望值。
该EDC发生器31生成行Row=108至215的期望值。Row=108中每个列号M的期望值对应于Row=0中每个列号M+10的期望值。这样,该EDC发生器31通过参看EDC表32来读出对应于输入用户数据的M+10的初始期望值。接着由期望值发生器(其将在后面描述)对该初始期望值进行移位运算,因此它就变成了对应于输入用户数据的每位的顺序q的期望值。接着对获得的期望值和用户数据进行异或,从而得到行Row=108至215以及列M=0至8中数据(由图11中阴影所示的数据42)的全部异或作为EDC中间值。
图12是示出EDC发生器31细节的一个例子的图。该EDC发生器31包括列计数器61,用于对输入用户数据的一个区域中的列号M进行计数,以及选择器62,用于根据列计数器61的计数值从EDC表32中选择并读出初始期望值。该EDC发生器31还包括EDC期望值发生器63,用于从初始期望值中生成对应于输入用户数据的位顺序q的期望值,选择器64,用于当用户数据为“1”时输出用户数据以及对应于用户数据的位顺序的期望值,以及XOR电路65,用于计算异或。进一步,该EDC发生器31包括扇区计数器67,用于对用户数据中的扇区进行计数,以及选择器68,用于根据扇区计数器67的计数值将XOR电路65对于每个扇区的运算结果传送给EDC缓冲器33。
图13是示出EDC期望值发生器63的一个例子的图。图14是示出EDC表与初始期望值之间的关系的示意图。该EDC期望值发生器63的结构为循环移位的32位移位寄存器,如图13所示。当从选择器62输入列号M的32位初始期望值时,其对应于从缓冲器控制器3的通道CH1提供的用户数据,该EDC期望值发生器63顺序地对该值进行移位和循环移位,从而生成对应于沿用户数据方向Q的位顺序q的期望值。
该初始期望值对应于行Row=0的最高有效位,并且对应于行Row=108的最高有效位的初始期望值就是通过把10加给行号Row=0的列号M所得到的值。这样,由选择器62读取将10加给列计数器61的计数值的对应于列号M的初始期望值,并提供给EDC期望值发生器63。
获得该EDC中间值作为期望值的异或,其对应于用户数据为“1”的位。只有当从通道CH1提供的用户数据为“1”时,该选择器64输出对应于由EDC期望值发生器63生成的用户数据的位顺序q的期望值,并且当用户数据为“0”时,选择并输出“000h”
在路径1中,EDC缓冲器33存储由EDC发生器31更新的运算结果。这样,在完成路径1的处理时,该EDC缓冲器33保持该EDC中间值。在路径2中,EDC缓冲器33存储由EDC发生器34更新的运算结果并这样最终保持EDC。该EDC缓冲器33具有存储区,用于存储每个扇区的运算结果。该数据块41由32个扇区组成,并且每个运算结果有32位;这样,该EDC缓冲器33具有32位存储区的32个扇区。路径1中,在EDC缓冲器33中,存储在对应于奇数扇区的每个存储区中的值为0。
该选择器68读出对应于由扇区计数器67从EDC缓冲器33中选择的扇区的值,并将该值提供给XOR电路65。该XOR电路65计算选择器64的输出以及选择器68的所选值的异或,并将结果提供给选择器68。该选择器68将该结果写入EDC缓冲器33中相应扇区的存储区。
因此,在完成对扇区0的用户数据的输入时,该EDC缓冲器33存储EDC中间值,该EDC中间值是通过对由图11中阴影表示的扇区0后面部分(Row=108至215以及M=0至8)的用户数据以及相应的期望值进行异或运算而得到的。
这里将描述路径2的处理。图15为描述路径2中的处理的图。如图15所示,在路径2中,缓冲器控制器3的通道CH2顺序地将行Row=0至107和列M=0至18中的用户数据以及行Row=108至215和列M=9至18中的用户数据,也即在路径1中没有处理的用户数据,提供给EDC发生器34。
通道CH2顺序地提供传送块,如上所述,该传送块为用户数据方向Q上的突发传送大小m字节×记录帧方向P上的304字节。32个扇区的用户数据被传送至集成部分35。该EDC发生器34可以只提供运算所需的数据。例如,当传送块为偶数扇区(M=0至9)时,可以提供行Row=0至107中的数据,并且当传送块为奇数扇区(M=9至18)时,可以提供所有的数据。可替换地,可以提供数据块中的所有用户数据,并且只选择运算所需的用户数据。
EDC发生器34基本上具有与EDC发生器31相同的结构。图16是示出EDC发生器34的细节的一个例子的图。如图16中所示,该EDC发生器34包括列计数器71,用于对输入用户数据的一个区域中的列号M进行计数,以及选择器72,用于根据列计数器71的计数值从EDC表32中选择并读出初始期望值。该EDC发生器34还包括EDC期望值发生器73,用于从初始期望值中生成对应于输入用户数据的位顺序q的期望值,选择器74,用于当用户数据为“1”时输出用户数据以及对应于用户数据的位顺序的期望值,以及XOR电路75,用于计算异或。进一步,该EDC发生器34包括扇区计数器77,用于对用户数据中的扇区进行计数,以及选择器78,用于根据扇区计数器77的计数值将XOR电路75对于每个扇区的运算结果传送给EDC缓冲器33。
该EDC发生器34或记录设备1具有一个计数器(下文中被称为基本行计数器),用于对用户数据的行号Row进行计数,以及一个计数器(下文中被称为突发传送行计数器),用于对突发传送大小m中的行号进行计数。在下面的说明中,由基本行计数器计数的行号(计数值)为Row(0≤Row≤215)并且由突发传送计数器计数的行号(计数值)为N(0≤N≤m-1)。该EDC发生器34进一步具有EDC标记,用于根据每个计数器的计数值来检测用户数据方向Q上第2049个字节数据的输入定时,以及EDC区域标记,用于检测从第2049到2052字节的4个字节的输入定时,两者都没有被示出。
在路径2中,在完成了一个传送块的传送之后,该传送块被顺序地传送,直到达到最后块。例如,在第一传送块之后立即被传送的传送块中的用户数据从第Row=N+1行开始。这样,当该下一个传送块被传送时,该EDC表32保持对应于第Row=N+1行的最高有效位的期望值。在生成对应于传输块的最后区域中每列中的最后位的期望值时,该值被顺序地重写在EDC表32上。这样,当完成了对于一个传送块的运算时,该EDC表32就会保持对应于下一传送块第一行的最高有效位的期望值。该选择器72将对应于输入用户数据的列号的值提供给期望值发生器73,从而能够生成下一传送块中的期望值。
然后,该XOR电路75对由路径1中的处理存储在EDC缓冲器33中的EDC中间值以及按照上述方式生成并由选择器74选择和输出的期望值进行异或运算,并将结果写回给EDC缓冲器。因此在完成对于每个扇区中的所有用户数据的异或运算时,计算出对应于每个扇区的EDC。这样,首先计算出偶数扇区中的EDC,接着计算奇数扇区中的EDC。当EDC标记变成“1”时计算EDC。由于在该实施例中突发传送大小m为6,对于被输入在第2047至第2052字节的用户数据,直到第2048字节,如果数据为“1”,如上所述,存储在EDC缓冲器33中的值被XOR电路75更新。当EDC区域标记为“1”时,这是当第2049至2052数据被顺序地沿用户数据方向Q输入的时候,该处理不使用第2049至2052字节的用户数据,而使用4字节的0数据作为输入数据进行运算。由于在这期间数据为全0数据,因此该选择器74只是简单地将0000h提供给XOR电路75,而不更新EDC缓冲器33的值。这样,如果输入第2049字节的数据,则该期望值发生器73只是简单地顺序循环移位该值,并且被存储在EDC缓冲器33中的相应扇区的数据被输出至集成部分35作为EDC。
第2049字节数据对应于该数据块中EDC的头数据的位置。这样,传送了2048字节的用户数据之后,如图4中所示的集成部分35根据通道CH2的传送顺序添加EDC。因此,需要在添加EDC头数据之前计算EDC,或者在输入对应于EDC头数据的第2049字节的数据时计算2048个字节的所有用户数据每位是“1”的期望值的异或(=EDC),以使得可输出EDC。
下面将详细说明路径1和2中的EDC生成处理。首先参照图11、12和17来描述路径1的处理。图17是示出路径1中的EDC生成处理的流程图。如上所述,EDC缓冲器33保持每个扇区的运算结果。在下面的说明中,每个扇区的运算结果都被称为EDCValue[0至31]。
该处理首先初始化EDC缓冲器33的EDCValue[0至31]、各个计数器以及EDC表32。特别地,EDC缓冲器33中的所有EDCValue[0至31]都被设置为0(步骤S11)。进一步,扇区计数器67以及列计数器61的计数值被设置为0(步骤S12和S13)。进一步,EDC表32的表值被设为初始期望值(参见图17中的*1)。*1中所示的值表示初始期望值,该初始期望值被设置到EDC表32的19个存储区。下面,存储在EDC表32中的19个期望值各被表示为EDCTable[M]。“M”表示一个区域中的列号,其范围为0至18。例如,如图*1所示,EDCTable[M]被设置成32位值(期望值)=0x8af08bed,它是通过将其中D0000字节的最高有效位为“1”且其他位为“0”的16416位(一个扇区)的代码串输入至移位寄存器50,即图8中所示的EDC发生器,而得到的。
接着,选择器62读取EDCTable[M+10]的值(S15)。如上所述,该实施例使用Row=0的最高有效位中的19个期望值作为初始期望值,并从这19个期望值中生成所有的期望值。
由于列计数器61的计数值M首先被设为M=0,因此该处理会读取EDCTable[M]的值。接着,从下一通道CH1获得用户数据(步骤S16)。如果一个2052个字节的扇区(包括4字节0数据)沿用户数据方向包括D0000至D2051,则步骤S16的处理顺序地得到沿用户数据方向的108字节数据,D0108+216*N(N=0至8)位于其头部。
在该示例性实施例中,得到的数据按一个字节(8位)为单位来存储,并通过如下的方式被处理。首先,如果得到的数据的MSB为“1”,则选择器64把由期望值发生器63生成的期望值输出至XOR电路65。选择器68选择通过相应的处理从EDCValue[0至31]读出扇区的值,并将所选择的值输出给XOR电路65。该XOR电路65计算它们的异或,并将结果输出给选择器68。该选择器68将结果写回EDC缓冲器33中相应扇区的存储区(步骤S18)。接着,该处理循环移位存储在EDC期望值发生器63中的数据(S19),对8位数据进行移位(S20),以及对8位重复8次步骤S17及其后续步骤(S21)。特别地,在步骤S20中该处理移位1位,并确定存储在MSB位置中的位是否是“1”。如果为“1”,则计算期望值的异或并将结果写回EDCValue[0至31]。
之后,对A字节重复上述的处理,在该实施例中该A字节为突发传送大小m=6(S22)。当完成对第一列中108个字节的处理时,该处理确定列计数器61的计数值M是否为8(S23)。如果计数值M不为8,则计数值加1(S24)。如果计数值为8,这就意味着是扇区边界,则该处理对计数值进行复位(S25),并将扇区计数器67的计数值Sector设为+2。如果S23中的判定结果为否,则意味着9列的处理还没有完成,并在步骤S27中判定还没有完成一个扇区的处理(S27中的否)。这样就重复从步骤S15开始的处理。特别地,该处理将初始期望值读入期望值发生器63,其中该初始期望值为列计数器61的计数值M加10,每次获得1位数据时循环移位该移位寄存器并生成对应于该用户数据的期望值。如果用户数据为“1”,则该处理在EDCValue[0至31]中读出相应扇区的值,计算异或,并将该结果写回。
另一方面,如果S23中的判定结果为“是”,则就意味着9列的处理已经完成(S27中的是)。如果存在后续的偶数扇区,则对其进行该处理(S28中的否)。如果对于最后扇区的处理已经完成,或者当扇区计数器67的计数值为32时,该处理结束。从而就完成了在一个数据块中路径1的处理。
下面将参照图15、16以及18至26来详细描述路径2中的EDC生成处理。图18是示出路径2中的EDC生成处理的流程图。图20、21、22、23和25分别是示出图18中步骤S31、S35、S41、S42的处理细节的流程图。图19是描述EDC标记和EDC区域标记的图。图24为描述更新EDC表的方法的图。图26为描述更新扇区计数器的方法的图。
首先,该处理初始化每个计数器、EDC表格等的值(步骤S31)。接着,获得用户数据(S32)。在路径2中得到的数据就是从数据缓冲器2的通道CH2突发传送(burst-transfer)的数据。
在获得该数据之后,该处理确定是否为EDC头部的数据。由于2048字节用户数据被添加了4字节0数据,因此检测到跟在第2048字节数据之后的数据作为EDC的头部数据。在图15中所示的数据块中,检测到对应于行Row=104以及列M=9的位置的数据输入,作为偶数扇区中EDC的头部,并且检测到对应于行Row=212以及列M=18的位置的数据输入,作为奇数扇区中EDC的头部。可以通过检查表示该数据是否为EDC的头的EDC标记是否表示1来检测(S33)。
如果该EDC标记为“1”,则可以确定该数据为EDC的头,并且用00h来替换得到的数据(S36)。该输入的8位数据因此被检测作为“0”并且选择器74选择0000h用于输出。在XOR电路75中进行8位处理之后,重复该处理的次数等于EDC的字节数,总共是4次(S37至S40)并进至步骤S41。当EDC标记不是“1”而EDC区域标记为“1”时,该处理也进至下一步骤S41(S34中的否)。如果输入的8位数据都为“0”,则该EDC发生器34并不更新EDC缓冲器33的值。因此,在实际中,在完成第2048字节的数据的EDC运算时,存储在EDC缓冲器33的数据就是EDC。该EDC标记以及EDC区域标记将在后面详细描述。
另一方面,如果EDC标记为“0”并且表示其是否位于EDC区域中的EDC区域标记为“0”,则处理进行至步骤S35。在步骤S35中,运算运算就像路径1那样,该处理对路径1中未处理的用户数据(这里也称作目标数据)顺序地计算用户数据为“1”的期望值和存储在EDC缓冲器中的运算结果的异或。首先,该处理进行8位(1个字节)目标数据的运算,并接着进至步骤S41(S35)。
在步骤S41中,该处理更新每个计数器和EDC表32(步骤S41)并进一步根据需要更新扇区计数器77。接着,重复上述的处理,重复次数为突发传送大小的字节数m,在该实施例中字节数为6(S43)。在用户数据方向Q上进行6字节的处理。在进行突发传送大小m(在该实施例中为6字节)的处理之后,该处理接着进行304列的处理(S44)。特别地,在按记录帧方向P的顺序对沿用户数据方向Q排列的6字节数据进行304次检索,并重复该处理216/m次,这在该实施例中为36次(S39),从而完成一个数据块的处理。如果216不能被突发传送大小m除尽,则重复次数是对小数做向上取整后的数字。例如,如果m=16,216/16=13.5。在这种情况下,步骤S46确定是否执行小数向上取整后的次数,这里为14次。这时,EDC缓冲器33存储32扇区的EDC。
下面将进一步详细地描述上述处理。步骤S31中的初始化处理将扇区计数器77、基本行计数器(未示出)、突发传送行计数器(未示出)、列计数器71以及区域计数器(未示出)的计数值复位为“0”(S51至S55),并将Row=0的最高有效位的期望值的初始期望值读入如图20的流程图中所示的EDC表32中(S56)。进一步,该处理将EDC标记和EDC区域标记设置为“0”。
如上所述,该基本行计数器相继地对一个数据块中的全部行进行计数,并且该计数值等于行号Row=0至215。进一步,该突发传送行计数器对在每个突发传送中被传送的数据的行号N=0至5进行计数。该突发传送行计数器被用于对突发传送大小进行计数,并且该基本行计数器被用于对整个数据块的行进行计数。该区域计数器对区域进行计数,每个区域都具有一对偶数扇区和计数扇区。扇区Sec 0和Sec 1形成区域Area 0,并且最后两个扇区Sec 30和Sec 31形成区域Area 15。因此,该区域计数器计数的范围是0至15。这些计数值有助于适当地选择要被读出的初始期望值,并控制时序例如将期望值写回EDC表32并进行复位。
下面将对EDC标记和EDC区域标记进行描述。在计算EDC时,对含有2048字节数据和4字节0数据的2052字节的代码串执行规定的运算。特别地,获得该EDC作为32位移位寄存器值,该32位移位寄存器值是通过顺序地将该代码串输入至图8中所示的移位寄存器50而得到的。在该示例性实施例中,还有,通过计算含有2048字节用户数据和4字节0数据的2052字节的期望值的异或来得到EDC。
该4字节0数据沿用户数据方向Q添加至第2048字节之后的数据。这样,就需要检测对应于EDC0的第2049字节,作为EDC的头数据,并通过用00h替换得到的数据来对2049至2052字节的四个字节进行处理。因此,该EDC发生器34每次检索数据时判定下一个要获得的数据是否就是沿用户数据方向Q的第2049字节数据。
为此目的,该示例性实施例设置一个EDC标记,用于检测数据是否为第2049字节数据。这样,该EDC标记就是当添加EDC时,用于检测用作EDC头数据的数据。在下面的说明中,从头数据到第四字节数据的数据用作EDC,被称为EDC0至EDC3。EDC0至EDC3被放置在数据块中的第2049至2052字节。
只有当输入数据是输入在每个扇区中沿用户数据方向Q的顺序的第2094位置中的数据时,该EDC标记标记“1”。由于EDC的计算要对含有2048字节数据和4字节0数据的2052字节代码串的每个字节上的期望值进行异或,因此把要放置EDC的4字节部分(EDC区域)处理成4字节0数据,而与输入无关。因此,除了通过EDC标记来检测EDC头数据以外,还通过EDC区域标记来检测用户数据方向Q上的第2049至2052字节的EDC区域中数据的输入。只有当偶数扇区中列号为9且行号为104,以及奇数扇区中列号为18且行号为212时,该EDC标记才表示“1”。只有当偶数扇区中列号为9且行号为104至107,以及奇数扇区中列号为18且行号为212至215时,该EDC区域标记才表示“1”。根据基本行计数器、突发传送行计数器、列计数器等的计数值来设置这些标记。
之后,该处理将相应列号(列计数器的计数值)M的初始期望值从EDC表读至期望值发生器73(S59)。例如,当在路径2中处理第一数据时,由于具有列号=0和行号=0的扇区Sec 0的用户数据首先被输入,则读取EDCTable[0]。
这里将描述步骤S35的细节。在步骤S35中,如果基本计数器的计数值Row和行计数值N的和为108或更大,并且列号(列计数器71的列计数值)M为0至8时,这是当在路径1中处理用户数据时输入的,该处理进至下一步骤S41(S61)。当用户数据使得Row+N=0至107或当Row+N=108至215并且0≤列计数值M≤8时,进行步骤S62及其后面步骤中的处理。
特别地,如图21中所示,该处理判定是否满足上述的执行条件(步骤S61),并且如果满足条件,这就意味着所获得的数据就是目标数据,则该处理判定是否所获得的数据的每位都是“1”(S62)。如果为“1”,则选择器78读取EDCValue[Sector]并将其提供给XOR电路75。进一步,该选择器74有选择地输出期望值并将其提供给XOR电路75。该XOR电路75计算这些值的异或并将结果输出给选择器78。选择器78将结果写回EDCValue[Sector](S63)。该处理接着循环移位该期望值发生器73的每个数据以生成期望值,并逐位的获得数据,直到完成8位的处理(S63至S66),从而更新(校正)EDC中间值或存储在EDC缓冲器33中的运算结果。步骤S34的处理也将获得数据的1个字节存储在可循环移位的寄存器等中,并对存储在MSB的位置中的位进行从步骤S63开始的处理,以逐位地进行八位处理,这已经在早些时候描述过。
这里将参照图22和23详细地描述步骤S41的细节。该步骤控制每个计数器以及EDC表32的写回和复位。如图22中所示,该处理判定当前处理是否是对最后区域Area 15执行以及用于对突发传送中的行数进行计数的突发传送行计数器的计数值N是否为m-1(S81)。由于在该示例性实施例中m=6,需要确定是否N=5。换句话说,该处理确定是否已经完成了对于最后区域Area 15的一列中的最后字节的处理。在该例子中,如果确定已经完成了对于最后区域Area 15中的第6字节的处理,则该处理将当前期望值(EDCTmp:参看图24)写入EDC表32中相应列的区域EDCtable[M]。
在从头区域0到最后区域15的处理中,每次处理各个区域的列时,该处理从EDC表32中读出期望值。特别地,在Area 0至Area 15中,相同的EDC表值被用于相同传送块的处理。例如,在路径2的第一处理中,该EDC表32保持初始期望值,并且该初始期望值也被顺序地读入在最后区域Area 15中。另一方面,在完成对最后区域Area 15的运算之后,开始对下一传送块的处理并再一次执行从第一区域Area 0开始的处理。在下一传送块的处理中,不需要初始期望值,而需要对应于该传送块中第一行的最高有效位的19个期望值。这样,当处理前一传送块中的最后区域Area 15时,需要循环移位前一传送块中最后行中最低有效位(LSB)的期望值,以生成对应于头区域中首字节的MSB的期望值,并将该期望值写回至EDC表32,用于在下一传送块中生成期望值。
如上所述,由于对于最后区域Area 15的处理使用了与头区域Area0相同的EDC表32的值,因此不能覆盖相应列中的EDB表,直到完成了对于最后区域Area 15的列的处理。这样,该处理首先判定是否对最后区域Area 15执行当前处理(S81)。如果不是最后区域Area 15,则该处理进至步骤S83。如果是最后区域Area 15的最后字节,则保持在期望值发生器73中的值就是通过对期望值(图24中的EDCTmp1)进行循环移位而得到的值(图24中的EDCTmp2),其中该期望值对应于上述步骤S64中传送块的最后行中第6字节的LSB。这样,该期望值就对应于头区域中突发传送的头字节的MSB。该值被写回至EDC表32。
该处理接着使突发传送行计数器的计数值N加1(S83)。进一步,该处理确定行计数值N是否等于m,而该m在该示例性实施例中为6(S84)。如果m=6,则对该行计数值进行复位(S85)。该处理接着将列计数值M加1(S86)并判定该列计数值M是否为19,也就是说递增的结果是否达到了该区域的首行(S87)。如果列计数值M为19,则对列计数值M进行复位并且使得区域计数器的区域计数值Area加1(S89)。接着,该处理判定当前区域是否就是Area 16=Area 0(参看图6),这是传送块的头区域(S90)。如果区域计数值Area为16,则该处理对该值进行复位(S91)并进而对扇区计数器进行复位(S82)。接着该处理将m加给基本行计数器的计数值(S93)。
在将期望值写回至EDC表32以及对计数器等进行复位之后,期望值发生器从EDC表32中读出该值。首先,该处理判定是否该突发行计数值N=0(S95)。如果N=0,则从EDC表32中读出对应于当前列计数值M的值并将该值设置给期望值发生器(S95)。进一步,判定是否Row+突发传送行计数值N=108且M≥9(S96)。在行数Row=108的边界中,如图5所示包括了偶数扇区的首字节。由于行Row=108为奇数扇区与偶数扇区之间的边界,因此就需要将被写回并在S82中被使用一次的期望值复位为初始期望值。因此,如果检测到了行计数值=108的边界,则如*2所示,该处理将EDC表32设置为初始期望值,并读出列计数值(M-9)的EDCTable[M-9]值(S97)。
该处理接着通过后续步骤S98至S105来设置EDC标记以及EDC区域标记。首先,在步骤S98中,判定接下来将获得的用户数据是否被排列在偶数扇区中EDC的头位置。由于第10列第105行的字节就是偶数扇区中的EDC头数据EDC0,判定是否满足列计数值M=9以及Row+N=104的条件。如果该数据被确定为EDC头数据,则该处理设置EDC标记=1(S100)。如果不是偶数扇区中的EDC头数据,则该处理接着判定它是否就是奇数扇区中的头数据。由于第19列第213上的字节就是奇数扇区中的EDC头数据,因此判定是否满足列计数值M=18以及Row+N=212的条件(S99)。如果该用户数据被确定为EDC头数据,则该处理进至步骤S100以设置EDC标记=1。另一方面,如果该数据既不是偶数扇区的EDC头数据也不是奇数扇区的EDC头数据,则该处理将EDC标记设置为等于零(S101)。
接着,如上述步骤S37至S40所述,对于从第2049字节到第2052字节的EDC头数据,在这些以00h替换的字节数据上执行运算。这样,该EDC发生器34就不进行通常的运算,而在检测到第2049字节中的EDC头数据之后对EDC区域中的数据进行步骤S37至S40的处理,直到达到第2052字节。这样就需要在检测到EDC区域之后,在向EDC区域中输入用户数据期间,对这些用户数据进行屏蔽。
为了确定输入数据是否为偶数扇区中第2049至第2052字节的数据,即EDC区域中的数据,该处理判定是否满足列数M=9以及Row+M=104至107的条件(S102)。如果不满足该条件,则该处理进一步通过判定是否满足列数M=18以及Row+M=212至215的条件来确定该输入数据是否就是奇数扇区中第2049至第2052字节的数据,即EDC区域中的数据(S103)。如果该输入数据被判定为步骤S102或S103中的EDC区域中的数据,则该处理设置EDC区域标记=1(S104)。如果确定不是EDC区域中的数据,则该处理设置EDC区域标记=0(S105)。之后,该处理进至步骤S42。
如果例如突发传送大小m为2,则通过第52突发传送来完成直到第106字节的数据传送,并且通过下一个(第53)突发传送来完成直到第108字节的数据传送。在这种情况下,需要按两次突发传送来传送EDC。这样,就需要在第52突发传送中完成对于第2049字节或第2050字节的运算。换句话说,对于4字节EDC的运算需要在输入EDC头字节或EDC1时实现。在上述的情况下,应该在处理偶数扇区中第2049字节数据时完成对于行Row=106和107的用户数据进行期望值运算。因此,在这种情况下,在路径1中,从偶数扇区的行Row=106和215的用户数据中确定EDC中间值。
当EDC被置于两个相继的传送块时,该处理在第一传送块中的最后EDC运算之前计算全部4字节EDC。在这种情况下,需要在第一EDC0的运算时序之前完成对2048字节的用户数据的期望值运算,并且该处理根据该突发传送大小来调整用户数据,在路径1中为该用户数据计算EDC中间值。
这里将描述步骤S42的处理。该步骤的处理确定扇区边界并更新该扇区计数器。图25是示出步骤S42的处理细节的流程图,图26为描述步骤S42的处理的图。如图25中所示,该处理首先确定是否满足行计数值Row+N<108的条件(S111)。特别地,该处理确定是否满足行计数值Row+N<108以及列计数值M=10的条件,用以判定要被传送的下一用户数据是否为奇数扇区中的用户数据(参看步骤S111以及图26)。即使不满足行计数值Row+N<108以及列计数值M=10的条件,如果Row+N≥108并且M=9,接着要被传送的用户数据就是奇数扇区的数据。这样,如果满足Row+N<108且M=10或者Row+N≥108且M=9的条件,则该处理将扇区计数值设置为区域计数器的区域计数值Area*2+1(参看S113和图26)。
另一方面,如果区域计数值Area不为0并且列计数值M为0,(参看S114以及图26),则可以确定接着要被传送的用户数据就是偶数扇区中的数据,并且该处理将扇区计数值设置为区域计数值Area*2(S115)。在其他情况下,部更新扇区计数器并且该处理进至下一步骤S43。
作为上述处理的结果,在路径1中从偶数扇区后部分的用户数据中计算EDC中间值,在路径2中根据其余的用户数据来校正该EDC中间值,并且根据这些值以及奇数扇区中的全部用户数据计算EDC。通过在路径2中进行部分或全部EDC运算,路径1中对数据缓冲器的存取能够被减至约1/4。在路径1中,当顺序地按照不同于用户数据方向Q的顺序传送路径2中的用户数据(偶数扇区的后半部分)时,只对在添加EDC之前无法被输入的用户数据进行运算,从而减少了在路径1中对数据缓冲器2的存取。
图27为描述本实施例中的优点的图。图3中所示的方法在路径1中计算EDC,并接着通过在路径2中使用计算出的EDC来输出添加了EDC的数据。在该方法中,通过通道CH1从数据缓冲器中读出的用户数据是一个包括2048字节×32扇区的数据块。另一方面,该示例性实施例在路径1中只对偶数扇区中的Row 108之后的行中的用户数据进行处理。这样,从数据缓冲器中读出的用户数据就能够被减至972字节×16扇区。
如图27所示,该实施例的记录设备1将EDC发生器34和EDC表32添加给了图3中所示的记录设备。但是,由于该EDC发生器31和EDC发生器34组合在一块,对一个数据块进行处理以计算EDC,因此额外的功耗也仅仅是被用于EDC表32。该EDC表32进行一个数据块的数据处理,并且在EDC运算中该功耗增加2048*32字节(65536字节)。但是,路径1中的数据传送量为如图3所示处理一整个数据块时的数据量的约1/4。因此,关于数据缓冲器和缓冲器控制器3,该功耗缩减了99968字节((2048*32-972*16)*2)。该实施例的结果就是减少了功耗。当数据缓冲器和缓冲器控制器的运算时钟变高时,功耗的降低效果也变得更显著。
如上所述,由于减少了数据缓冲器存取,这种存取是编码的瓶颈,该实施例的优点就是实现了高速编码以及降低了功耗。对于给定长度的时间,可存取数据缓冲器的数据量是固定的,并且该时间随着速度的增加而减少。这样,数据缓冲器存储就是进行高速编码的瓶颈。减小数据存取的绝对数量能够进行更高速的编码并且能够降低由于数据存储量而引起的功耗。进一步,存取的绝对数量的减小允许使用不太昂贵的缓冲器,该不太昂贵的缓冲器在较慢的时钟下运行,同时还能够实现高速编码。另外,还可以降低用于数据缓冲器和缓冲器控制器的运算时钟频率,使得可以高速编码,从而能够降低功耗,尽管存在附加电路中损耗的额外功率。
现在描述用于从按照上述方式生成的添加了EDC的数据中输出记录数据的示例性运算。由每个电路执行从中间值中计算EDC并输出记录数据的处理,作为路径2中的处理。重新参看图4,从通道CH2突发传送的用户数据除了提供给EDC发生器34还提供给集成部分35。
该数据缓冲器2由需要更新并能够随机存取和突发传送的存储器构成,例如SDRAM。下面的说明描述了使用SDRAM的情况。SDRAM是一种DRAM,当存取连续地址时,其能够比随机存取进行更高速的存取,并且使用突发传送功能能够进行更高速的数据传送。从而与能够高速随机存取的存储器例如SRAM相比,可以降低成本。
缓冲器控制器3的通道CH2沿用户数据方向Q从数据缓冲器2中重复读出一个突发传送大小(m字节)的用户数据,并顺序地传送数据使得添加了EDC的数据沿记录帧方向P排列。因此,沿用户数据方向Q突发传送216字节数据,每次一个突发传送大小(m字节),重复304次,该次数就是沿记录帧方向P的字节数(304字节,304交错)。结果,沿记录帧方向P包含在1个RUB中的用户数据(数据块41)被排列为沿用户数据方向Q的m个字节。沿用户数据方向Q的m字节数据接着被加扰,并存储在替换缓冲器38中,该替换缓冲器38可以是能够进行高速随机存取的SRAM,从而沿记录帧方向P输出记录数据。
该通道CH2或集成部分35具有指定突发传送的头地址或控制从EDC缓冲器33读出EDC的时序的功能。
该加扰器36计算用户数据与对应于用户数据方向Q的顺序的加扰值的异或,作为加扰后的数据。这样,当对数据进行加扰时,可以按照如下表达式所示将8位输入数据Di和由加扰器生成的8位加扰数据Si(加扰值)进行模2加(异或)而得到加扰后的数据SDi:
SDi=Si+Di
其中符号“+”表示异或。
蓝光盘中的加扰器设置初始值给16位移位寄存器,用于进行规定运算,并且每次对该值进行移位时沿用户数据方向Q生成加扰值。因此,如果与该实施例一样沿记录帧方向P每次按6字节输入数据,为了获得对应于下一列的加扰值,就需要在获得6字节加扰值之后将数据移位210次,而这会花费时间。为解决该问题,该实施例的记录设备具有加扰值发生器37,其能够从按照该次序输入的用户数据中计算加扰值。该加扰值发生器37把对应于输入数据的加扰值提供给加扰器36。
该替换缓冲器38由不需要更新并能够随机存取的存储器构成,例如SRAM。虽然下面的例子使用了SRAM,但只要能够进行高速随机存取,该替换缓冲器38就不仅限于SRAM。安置该替换缓冲器38就是为了用记录帧方向P上的数据来替换被加扰的数据,并且它能够在记录帧方向P上高速地传送加扰后的数据。该替换缓冲器38具有两个或更多的区域,用于存储具有上述传送块的大小或更大的数据,并且在从一个数据块输出记录数据的同时将一个传送块写入其他区域。该替换缓冲器38的大小可以显著地小于数据缓冲器2的大小,从而与使用SRAM作为数据缓冲器2的情况相比,能够降低成本同时实现了高速传送。
这里将详细描述路径2中的运算。首先详细描述被传送至替换缓冲器38的用户数据。在蓝光盘中,在一列中,沿用户数据方向Q的数据有216字节。该示例性实施例每次进行6字节的突发传送,216个字节被分为36个部分(突发传送大小m=6字节)。
SDRAM是能够按时钟同步方式进行高速突发传送的一种DRAM。例如,如果SDRAM的存储单元由四块组成,每块都能彼此单独地运行,并且通过使用8次连续突发传送,就能够进行32字节的突发传送。如果指定了要被传送的第一地址,通过突发传送规定数据,SDRAM就能进行高速地数据传送。
沿记录帧方向P的数据就是沿用户数据方向Q上看到的每个216字节的数据。由于在蓝光标准中,一个扇区含有2048字节的用户数据和4字节的EDC,并且从数据缓冲器2传送的数据就是还没有添加上EDC的数据,因此一个扇区具有2048个字节,例如。这样,奇数扇区中的第一列字节,这里被称为奇数扇区首列,与偶数扇区相邻,并且该第一列字节就是每212字节而不是216字节的数据。该奇数扇区首列就是扇区Sec 1中沿记录帧方向P顺序的第9或第10列,并且是沿用户数据方向Q的行Row=0至107中的第10列以及行Row=108至215中的第9列。这样,当沿记录帧方向P对应于奇数扇区首列的数据时,该数据不是每个216字节而是每个212字节。由于突发传送中数据缓冲器2的头地址是不同于扇区边界部分中的216字节以及扇区边界中的212字节,因此该缓冲器控制器3通过使用行计数器、用于对区域中的列数进行计数的列计数器等来检测扇区边界,并根据突发传送大小m来计算和指定数据缓冲器2中突发传送的第一地址(头地址)。特别地,当检测到扇区边界时,该处理设置+212,同时在其他情况下顺序地给头地址加上216,从而适当地指定头地址。
在蓝光盘中,当数据沿用户数据方向Q被排列在行Row=104至107时,接着被添加给偶数扇区中最后数据的EDC被安置在一个数据串的中间。这样,当传送包括该地址的用户数据时,该集成部分35从EDC缓冲器33中读出EDC,将其添加至用户数据,并将该添加了EDC的数据输出给加扰器36。
由于被突发传送的6字节数据沿着数据方向Q,因此该加扰值发生器37能够通过使用常规的加扰器来生成加扰值。在处理一个突发的传送数据时,下一列的用户数据被突发传送。因此,由于使用了常规加扰器,所以最多需要等待210个时钟就能获得加扰值。另一方面,蓝光盘的数据为如图2中所示的沿记录帧方向的每个216或108字节。这样,除了在一次移位运算中将数据沿用户数据方向Q移位1个字节的常规加扰器,还安置了这样的移位寄存器,该移位寄存器能够获得在一次移位运算中被移位216次或108次的值,因此每次突发传送时切换移位寄存器。因此,可以将对应于用户数据方向Q的用户数据的加扰值提供给加扰器36,其中该用户数据是从通道CH2传送的。
该替换缓冲器38具有两个或更多的记录区,每个记录区的大小为突发传送大小m×一个记录帧(304字节)。如早些时候所述,为了在路径2中对对应于1RUB的用户数据(数据块)进行处理,读出被写入在一个记录区中的传送块,同时将一个传送块写至其他记录区。该记录区可以具有两个或更多的面。
因此,在输出作为记录数据的用户数据的处理中,记录设备1并不需要沿用户数据方向Q将EDC添加给用户数据以及对添加了EDC的数据进行加扰,将加扰后的数据写回数据缓冲器,并接着再一次沿记录帧方向P读出数据。这就使得能够高速地传送记录数据,而不使用能够对数据缓冲器2进行高速随机存取的昂贵存储器,例如SRAM。进一步,由于如上所述减少了对发生在路径1上的数据缓冲器2的存取,因此可以提供一种光记录盘编码装置或记录设备,其能够实现高速编码并降低功率损耗。
第二实施例
这里对本发明的第二示例性实施例进行描述。图28是示出根据第二实施例的记录设备的图。在图28中所示第二实施例中,用相同的参考标记来表示与图4中所示的第一实施例中相同的元件并且在这里不再详述。该实施例的记录设备81包括编码器84,代替了图4中所示的编码器4。与图4中的编码器4一样,该编码器84在路径1中对偶数扇区的一部分进行EDC运算,并接着在路径2中计算EDC。虽然根据第一实施例的编码器4中的加扰处理器在将EDC添加给用户数据之后进行加扰,但是根据该实施例的编码器84中的加扰处理器分别对用户数据和EDC进行加扰,并然后将加扰后的EDC添加给加扰后的用户数据。
这样,在路径2中,来自通道CH2的用户数据被提供给EDC发生器34,并且也被提供给加扰器96。该加扰器96从加扰值发生器97接收对应于输入用户数据的加扰值,对该数据进行加扰,并将加扰后的用户数据提供给替换缓冲器99。该加扰后的用户数据也被提供给ECC发生器39。
在EDC发生器34中生成的EDC被提供给在该实施例中增加的加扰器98。该加扰器98对EDC进行加扰。该加扰器98从加扰值发生器97中接收对应于EDC的加扰值,对EDC进行加扰,并接着将加扰后的EDC提供给集成部分95和ECC发生器39。
该替换缓冲器99将接收到的加扰后的用户数据提供给集成部分95。该集成部分95从替换缓冲器99接收加扰后的用户数据,以及从加扰器98接收加扰后的EDC,对这些数据进行集成并输出它们作为记录数据,这与图4中所示编码器4中的集成部分35不同。
该ECC发生器39在添加EDC的适当时候,从替换缓冲器99接收加扰后的用户数据,并且也从加扰器98接收加扰后的EDC,从而生成32扇区的ECC。通过ECC缓冲器40输出该生成的ECC。
与根据上述第一实施例的编码器4一样,该实施例的编码器84接收偶数扇区的后部分的用户数据,在路径1中生成EDC中间值,并接着通过使用偶数扇区的EDC中间值在路径2中生成EDC,同时直接地从用户数据中计算EDC以及用于奇数扇区的期望值。因此与上述的参考文献相比,从数据缓冲器3中读出的用户数据被缩减至大约1/4,这样就具有了与第一实施例相同的优点,降低了对于数据缓冲器的存取。
虽然编码器4对添加了EDC的数据进行加扰,但是在添加EDC之前由加扰器84对数据进行加扰,并接着将加扰后的EDC添加给加扰后的用户数据。这就可以很灵活地对计算和添加EDC进行定时。
本发明不仅限于上述实施例,而且在不脱离本发明的范围的情况下可以通过各种方式进行修改。例如,虽然上述实施例描述了硬件结构,但本发明不限于此,并且可以通过在中央处理单元(CPU)上执行计算机程序来实现给定的处理。在这种情况下,可以通过将该计算机程序记录在记录介质上或者通过互联网或其他传输介质对其进行传输,来提供该计算机程序。
进一步,如上面的第二实施例中所述,添加EDC的时间可以是加扰之前或之后。另外,将数据提供给用于EDC添加的电路(例如集成部分、加扰器、加扰值发生器以及替换缓冲器)的次序或时序不限于上面所述,而是可以通过各种方式被改变。
很明显,本发明不限于上面的实施例,并且在不脱离本发明的保护范围和精神的情况下可以进行修改和改变。