基于半循环码的误差可校 正数据传输方法及其设备 发明的领域
本发明涉及按照多个(S个)信息符号序列的形式传输数字信息信号的方法,其每个符号具有一个相同的位长度,并且每个这样的符号序列出现在各自的输入通道中,由于编码的缘故,检查字被包括在所述传输信号之中以便能够对由所述传输所引起的错误符号进行校正,所述的方法包括下述步骤:
将来自这种输入通道中每一个的、处于第一排列状态的一个第一S符号块提供给一个第一误差校正编码器,以产生P个第一检查符号的序列;
将所述第一块内的每一个符号和所述P个第一检查符号中的每一个符号各延时一个不同地延迟时间,以产生处于第二种排列状态的第二符号块;
将所述的第二符号块提供给第二误差校正编码器,以产生q个第二检查符号的序列,并传输所述的信息符号以及所述的第一和第二检查符号。
本发明还涉及到一种用于执行所述方法的设备。这种方法和设备、特别是它的译码策略在给予本受让人的美国专利4,477,940(PHN10.242 Ref.I)中已经得到了披露,在给予本申请同一受让人的美国专利4,683,572(PHN 10.931,RefII)中披露了另外一种特定的译码策略。特别是,用于本发明的所有代码都是线性代码,所以两个代码字的和还是一个代码字。这也允许将一个系统代码的代码字明确地或隐含地转换成一个非系统代码的一个代码字,反之亦然。现在,所述参考文献涉及到了用于记录和传输高质量音频信号的所述公知小型光盘系统的出错防止。所述系统的各种扩展都是以上述出错防止技术为基础的。在大多数情况下,所述的数字出错防止对于精确地再现所述原始数字输入信号来讲是足够的,而在再现一个音频信号的情况下,是通过某种内插法将不可校正的误差掩蔽到所述音频信号本身上来寻求最后的解决办法。虽然上述的系统已经广泛和成功地商业化,但是,就可达到的数据速率以及增加承受由所述代码本身所提供的误差的能力方面而言,还感到有必要提高其性能。发明概述
因此,本发明的一个目的尤其是要根据所引用的参考文献来改善所述的数据速率以及所述数字出错防止的强度,以避免对上述内插法的需要,并改善在各种不能进行这种内插法的其它领域中的适用性,同时又尽可能简单和有效地保持所述的编码和译码策略。因此,根据本发明的一个方面,本发明的特征在于产生所述的第一和第二检查符号以满足各自的奇偶检查矩阵,所述矩阵中的每一个都分别具有s+p+q个列,并分别具有p和q行,其中,所述半循环码的p.q>1,所述延迟将所述第一排列状态的相邻符号放入所述第二排列状态的均匀间隔的场合(uniformly-spaced instance),并根据所述的第一排列状态将所述的q个第二检查符号向后耦合到所述第一误差校正编码器上。将在后面讨论半循环码的特性。
所述第二检查符号的向后耦合也是在所述第一误差校正代码的保护下安排这些符号。对于整个误差校正能力而言,这个额外的保护被证明是有很大益处的,特别是对于校正随机符号误差而言,更是如此。一个重要的效果是可以使各种代码字的长度增加,从而减少了额外开销。
本发明还涉及到一种利用误差校正进行译码的方法;利用出错防止进行传输的设备、利用误差校正进行译码的设备;以及与在各权利要求中规定的上述方法和/或设备一起应用的、以间隔开的形式提供有信息的载体。特别是,就传输一个有限序列而言,所述第一和第二检查符号的一个尾随序列通过所述的延时和向后耦合来产生,并被限制为仅包括抽象信息符号的s+q-1个第一块的序列。这就产生了可应用来使各数据段相互分离开的第一代码格式,从而就不会发生代码的相互作用。
有益的是,通过将所述第一和第二检查符号的尾随序列按符号方式地相加(symbowise addition)到位于所述有限序列开始部分处所述第一和第二检查符号的最初序列上,从而可以实现一个柱面存储格式。通过使用所述的线性代码,这是可行的,并且允许一种用于相同数量的、储如是在实际载体区域内可表示的用户数据的较短长度的格式。
通过首先在一个预备步骤中对包含有最终的所述第一块的符号的所有C2代码数字进行编码、和将这些C2代码字的所述第二检查符号指定给随后的q个C1代码字,并随后对所有的C1代码字和另一个与第一块的所述有限序列相关的C2代码字进行编码来传输所述第一块的有限序列,将是很有益处的。这允许较早地对所谓的尾部向上格式(tail-up format)进行译码,在这种格式中,不实行外围包封(no Wrapping around)。
通过下述方式来传输(按柱面格式)所述第一数据块m≥s个非零有限序列是有益的:a:在执行了部分b1、b2和从用于o≤y≤m个连续第一数据块中的每一个的最初的所述第一数据块开始以后,首先形成一个C1代码字和接着形成一个C2代码字:
b1:对于一个最终的所述第一数据块的每个数据符号,除了它的最后一个数据符号以外,形成一个相关C2代码字;
b2:从在初始的q个所述第一符号块中对应地设置的数据符号中减去如此形成的所述符号的s行和q列的一个块的所有符号;
c:在执行了b1和b2并从用于o≤z=m-y≤m个连续的第一数据块的每一个相关的一个最终的所述第一数据块开始以后,首先形成一个C2代码字,接着形成一个C1代码字;
d:在产生了所述的部分a和c之后,通过q个C1代码字或通过p个C2代码字产生包含有p×q个检查符号的菱形;
e:在执行了部分b1并完成了含有包括部分b1那些内容的专门检查符号的q列以后,把这些q列的所有符号加到在所述最初的q符号列中相应地设置的符号上,随后删掉所述q检查列的块。这是一个顺向的编码过程。
通过下述方式来传输(按柱面格式)所述第一数据块m≥s个非零有限序列是有益的:a:在执行了部分b1、b2和从用于o≤y≤m个连续第一数据块中的每一个的最初的所述第一数据块开始以后,首先形成一个C1代码字,接着形成一个C2代码字;b1:对于一个最终的所述第一数据块的每个数据符号,除了它的最后一个数据符号以外,形成一个相关的C2代码字;b2:从在初始的q个所述第一符号块中对应地设置的数据符号中减去如此形成的一个s行和q列的块的所有符号;c:在执行了部分b1、b2和从o≤z=m-y≤m个连续的第一数据块的每一个相关的一个最终的所述第一数据块开始以后,首先形成一个C2代码字,接着形成一个C1代码字;d:在产生了部分a和c以后,通过q个C1代码字或通过p个C2代码字产生包含有p×q个检查符号的菱形;e:在执行了部分b1和完成了含有包括部分b1那些内容的专门检查符号的所述q列以后,把这些q列的所有符号加到在最初的q符号列中相应设置的符号中,随后删掉所述的q个检查列的块。
通过下述方式来传输(按柱面格式)所述第一数据块的m<s个非零有限序列是有益的:a:在执行了部分b1、b2和从o≤y≤m个连续的第一数据块中的每一个的初始的所述第一数据块开始以后,首先形成一个C1代码字,接着形成一个C2代码字;b1:对于一个最终的所述第一数据块的每个数据符号,除了它的最后一个数据符号以外,形成一个相关C2代码字,同时使每一个所形成的C2代码字在至一个后续C2代码字的最初数据符号的相邻行之处都具有一个最后数据符号,并且,在它们被产生期间,前一个C2代码字的所述检查符号被叠加到后一个C2代码字的所述检查符号上;b2:从在同一行中设置的数据符号中减去如此形成的具有s行和q列的一个块的所有符号,首先是列j中的数据符号被减,然后是列j+m、列j+2m中的检查符号被减,直到上述行上的所有检查符号都被减一遍为止;c:在执行了部分b1、b2和从o≤z=m-y≤m个连续的第一数据块中的每一个的一个最终的所述第一数据块开始以后,首先形成一个C2代码字和下一个C1代码字;d:在产生了部分a和c以后,通过q个C1代码字或通过p个C2代码字产生包含有p×q个检查符号的菱形;e:在执行部分b1和完成了含有包括部分b1的那些内容的专用检查符号的所述q列以后,以与在b2中所指出的相同方式把这些q列的所有符号加到在最初的q个符号列s中对应地设置的符号上,随后删除q个检查列的所述块。其它的优点方面将在所附权利要求中描述。
本发明的这些和其它的一些概念和优点将在后面参考最佳实施例、特别是参照附图加以描述,其中:附图概述
图1示出了一个编码设备的整个方框图;
图2解释了所谓的菱形码;
图3示出了系统形式的菱形码;
图4示出了所述的当前码和一个乘积码的对应关系;
图5提供了对一个编码实施例的详细解释;
图6示出了各种代码符号的位置;
图7提供了对一个译码实施例的详细解释;
图8示出了一个译码设备的整个方框图;
图9示出了在一个载体上的符号配置;
图10和11示出了用于解释分组码的矩阵;
图12示出了一个卷积编码的数据块;
图13示出了多个重复数据块的编码;
图14示出了柱面编码的数据块;
图15示出了具有奇偶交错的多个短段(short bursts)的定位排列;
图16示出了利用符号置换的奇偶交错;
图17示出了一种以不同的出错防止为特征的改进的存储结构;
图18示出了一个有限支持卷积菱形代码字;
图19示出了一个分组卷积菱形代码字;
图20示出了多个根据图19的并置代码块;
图21示出了用于编码的多个块的准备;
图22示出了以第一种方式对一个短块进行编码;
图23示出了以第二种方式对一个短块进行编码;
图24示出了把一个直立式奇偶检验加到信息上;
图25示出了菱形编码;
图26示出了菱形编码和循环扩充;
图27示出了直立尾部(uprignt fail)的有效产生;
图28示出了修改后的蝎尾(scorpion)预处理;
图29示出了奇偶校验的折叠。最佳实施例描述
以下首先描述本发明的基本解决方案,然后描述各种补充、修改和改进,它们能够按照不同的组合对基本实施例进行补充,以及/或者能够有效地改变该基本实施例的一个或多个方面,以支持通常在相同的发明观念内的不同的解决方案。每一种不同的解决方案用单独的数字来表示。一般来说,参数值是任意的。
1.图1表示编码设备的总体方框图。到达输入端100的数据符号流例如可以是8位宽的,以便容纳8位符号。方框102是输入存储器,它根据到达顺序和根据将符号分配给合适通道的选择机制来接收符号。延迟使各种符号在正确的时刻达到第一编码器级104。注意,将编码器104的垂直输入画成了一条线。但是,各符号在输入之前没有相互作用。编码器104需要按照与输入端100相同的数据率来接收输入符号,对于接收的每一数据符号,它确定该数据符号对于所讨论的数据符号所属于的第一码字的各个预备的第一检查符号所作的贡献。如果需要,以下作为一个例子,它还可以计算数据符号在适用于图9所示的格式时对第一码字的循环的预备的检查符号所作的贡献。如果某一码字的符号的到来以不是邻接地方式而是以循环的方式与一个或多个其它码字的符号所交替,这种情况就适合。方框106是中间存储器,用以调整数据符号和第一检查符号以便供第二编码器级108进行处理。方框108按照与方框104类似的方式计算与第二码字相关的第二检查符号。方框110是输出存储器,它接收数据符号以及第一和第二检查符号,以便按顺序正确地提供给串行输出端112。一旦在编码器108中产生了第二检查符号,则第二检查符号还通过延迟107向后耦合到编码器104,在此它们出对合适的第一码字作出贡献。如该例子所示,图1中的p和q都具有数值8。通常p·q>1。数值s、即数据或用户符号的数目较大,但数值为118就可以产生很好的结果。s的数值为52就已经获得了较大程度的保护。将参看图2和图5-7讨论详细的定时。
图2说明所谓的菱形码。图中每一行表示一系列符号,每个符号覆盖一个方格,每个方格正好被一个符号所占据。通常每个符号具有8位,虽然这一数目不是绝对的限制。箭头C1和C2分别指出C1码字和C2码字的位置:C1码字沿垂直方向而C2码字沿对角线方向。全部码字形成所谓半循环码或弱循环码的一部分。这种码C的定义如下:
(0,C1,C2,……Cn-1)εC<=>(C1,C2,Cn-1,0)εC,或者换句话说,如果左侧以符号零开始的n符号字是码C的字,则如所示地被循环一个符号的字(该字最终是以符号零结束)也是码C的字。当然,以较大数量的零开始的字可被循环相对较大数量的符号位置。但是,沿其它方向的循环不一定产生码字。可以给出具有上述性质的各种码,但是值得注意的一类是由在参考文献中同样被使用的缩短里德-所罗门(Reed-Solomon)码构成。缩短BCH码是也可以使用的更一般的码。在这两种码中,只有最初的符号序列用作数据或检查符号,而全部后面的符号都固有地为零。非缩短里德-所罗门码是周期性的,这意味着其码字的所有可能的循环都还是码字。如果目前使用的码字以零符号开始或结束,则其如公式所示的循环还是码字。这就是半循环的定义:缩短循环码通常是弱循环的。“弱”字指的是缩短循环码不再是全循环的。
在图2中假定在粗垂直线处开始编码,即意味着在其左侧只有零出现。就与该特定C1字的编码有关而言,这些零在时间上较早地出现。如标号20所示,数据符号被分配给多个序列。为清楚起见,只表示了其中的一些序列。标号22表示每一C1码字的4个检查符号。标号24表示每一C2码字的2个检查符号。这些数目只是作为例子而言,码字实际上通常具有较大数目的检查符号。假定第一个非零数据符号是位于行26和列40的符号d(符号2640)。对位于列40中的C1的码字的编码如所示地分别产生出符号c、b、a、l,符号3440通过归一化而具有数值1。可以证明,根据本发明,对于半循环码,符号3440不可能为零。在里德-所罗门码的情况下,符号2840、3040和3240的任一个也都不可能为零。在上述的归一化中,所有符号都被乘以一固定的乘数,但它不影响以后的推论。在有限域GF(256)(它可以用8位来表示)中进行计算。通过选择生成矩阵(generatormatrix),如此编码的C1字将让符号3640和3840等于零。这种字存在于半循环码中。然后对包含符号3440的C2字进行编码,在只具有两个检查符号的这一示范性代码中,这就产生符号e(3642)和f(3844)。对于目前的讨论,e和f的特定值是无关紧要的。列40和42的调整意味着沿垂直方向循环一个位置;根据上述半循环码的定义,因为符号3640现在是零,所以这又产生了一个码字。因为列40、42的所有其它符号都是零,所以适用这一性质。这就证明了图中方框2842、3042、3242和3442的内容分别是ed、ec、eb、ea。类似的推论产生了方框3044、3244、3444、3644的内容,一起构成了列44中C1字的非零部分。
由于方框3642和3844的计算,就已充分考虑了方框3440对第二检查符号的贡献。这意味着列40的任一其它菲零方框对除列42、44外的列中的方框没有任何影响。理由还是由于半循环码的性质的缘故,根据半循环码的上述定义,沿对角线的C2码字在循环了一个位置之后又分别具有了与由一致的乘数a、b、c和d分别表示的C2字的不同的符号。这就证明了非零符号d(2640)的影响限制在以粗线为边界的符号位置的平行四边形内。宽度比C2码检查符号个数大1。沿每一列的规模也比C1码检查符号个数大1。因为该平行四边形的形状,所以将该码称为菱形码。根据选择的码的性质,符号2640和3440都不为零。
列40的另一数据符号可以不为零,例如,利用预定的乘数进行归一化,符号2540也可以具有数值d。将指出:这一非零符号2540对第二检查符号的哪些列有影响。首先,由于码的半循环特性,将图2的菱形图形向上移位一个方框将又在全部3列40、42、44中产生码字。从符号2540和从由此形成的检查符号中减去移位的菱形图形,将使符号2540等于零并将很可能使符号2640和2642不为零。已证明了符号2640的影响向右不超过列44。同样地,符号2642的影响不超过列46。这就证明了任何数据符号的影响总是被限制在有限个数的列内,因此,参看图1所描述的向后耦合到方框104是不会造成编码的不稳定的。对于一列中的s个数据符号和第二码字的q个检查符号,将产生宽度为s+q列的图形。
已将码格式描述为C1字沿垂直方向而C2字从左上至右下的形式。同样地,C2字可以从右上至左下或从右下至左上,在后者的情况下,检查符号最好在顶部。C1字和C2字还可以互换它们的方向。利用基本的变化还可以得到各种其它的可能性。
图3示出了一种系统形式的菱形码。这是一个包含有任意值的s信息符号的单一灰度列(single grey column)。这就使得可产生出通过所述编码变成非零的相同列中的、以及后续列中的pC1检查符号。在下面的q行中,仅在所述阴影区域中可以发生非零C2检查符号。从所述数据列顶部符号开始的虚线确定了在右手一侧的斜边。利用虚线也给出了一个简单的菱形(包括一个用户符号)。为简单起见。各个区域的斜边由直线给出,实际上,这种边缘跟在所述符号的分立的位置之后,且所述的区域具有台阶状的边缘(参看图17)。
图4通过比较给出了一个乘积码格式。乘积码本身被认为是一种公知的一般知识。在所述例3中,数据符号的块D是一个具有6个列、7个行的菱形。为了在块p中获得所述的检查符号,对所述6个列中的每一列计算所述代码字。接着为了在块P和PQ中获得所述的检查符号,对于每11个列(即7个数据符号列和4个检查符号列)计算所述的代码字。由于所述乘积码的特性,所述块PQ包含有那些被块Q中的所述列检查符号用作数据符号的所述行检查符号。由此,附加的两个行代码字不需要进行计算。
根据本发明的所述检查符号的产生以类似于卷积的方式设置所述特定代码字的符号,尽管所述构成码的生产法则是纯的分组码,尽管如此,在与所述小型光盘(Compact Disc)结构明显的区别中,参考图2所作的说明,当前代码具有与乘积码的特性对应的特性:所述的第二检查符号产生用于所述数据符号、用于所述第一检查符号以及用于第二检查符号本身的出错防止;而所述第一检查符号产生用于所述数据符号、用于所述第一检查符号本身、以及用于所述第二检查符号的出错防止。其理由在于所述的第一检查符号是通过参考图1所述的向后耦合来计算的。这种当前码的编码类型与乘积码相比较时的一个附加优点是,与乘积相比较,大约减少了50%的用于处理所需要的存贮空间。相对于所述的CD格式而言的另一个优点是减少了译码等待时间并简化了块同步。
图5给出了一个简单编码设备的示范性方框图,其中,所述代码字的大小被作了基本限制,以尽可能清楚地表示各种延时。在这方面,图6给出了各个代码符号的位置。这里存在有三个分别由1.1,2.1和3.1开始的信息符号流。有一个以4.1开始的一个第一检查符号流。有两个分别以5.1和6.1开始的第二检查符号流。在所述载体上,任一特定列的符号可以被接连地逐列存储。第一检查符号在由图6中第一个矩形所指示的单一列的基础上形成。第二检查符号在图6中第二矩形指出的符号菱形串的基础上形成。若需要,所述第二代码字可以具有更大的交错深度,例如,所述第二代码的任一特定字可以具有在每个第二、第三等列中的符号。在图5中,所述的数据符号1.9、2.9和3.9来自位于所述第一编码器输入端处的第一排列状态的左侧,以用于产生所述的第一检查符号4.9。实际上,由于一个单一的检查符号不能够提供一个误差可校正的符号,所以,总是要产生多个第一检查符号;确实,希望每一个代码字实际上在其自身上提供至少一个误差可校正的符号。为简单起见,由方块150的产生处理所引起的延时忽略不计。在延时块152中,执行用于产生第二排列状态的重新排列。延时相差一个列周期,并从三个周期减少到标称的零。在所达第二编码器154的输入端,示出多个在那个特定瞬间所得到的符号,由此而实现了所述的第二排列状态。根据这样地接收到的4个符号,所述第二编码器产生两个第二检查符号5.10和6.11。在延迟块156中,所述的第二检查字被延时,从而使其在所述第一编码器150的输入端处与与所述的第一排列状态相一致。所述的延时再次地相差一个列周期,且到达所述第一编码器150所述输入端处的第二检查符号的表示分别是5.9和6.9,并且和到达这里的所述数据符号是属于同一列。这意味着所述第一编码器产生了可以被使输给如箭头158所指示的存储媒体或载体的正确的列。很清楚,两个编码器块的位置可以互相改换。从而使未编码的数据首先到达所述第二编码器154的输入端上。但是,这经常花费更多的延时,在上述状态下,如图2所示,所述第一排列状态的相邻列被延迟各个相应的延迟时间,从而将它们放置入所述第二代码的各相邻字中或放入所述第二排列状态的相邻场合中。假如所示的所有延时都被乘以一个一致的因数,这种编排允许较深的交错以加强对误差段(error bursts)的防护,但其代价是高的存储需求。本专业技术领域以内的普通技术人员可以在图5中看到不脱离本发明原理的可能的修改。例如,所述的时间可以与图示相反的方向运行。从而所述的输出端和输入端相互交换。另外,所述的延时可以在RAM内执行。在这种情况下,是通过对所述的RAM进行适当的寻址来实现所述的延时以及反馈的。所述编码所需的矩阵乘法是通过适当编程的标准硬件或通过特定用途的硬件来执行的。如果两个代码具有足够的相似处,那么所述编码器的一部分可以被公用。
为了改善针对误差段进行编码的强度,可以利用奇-偶交错:见上述现有技术参考文献。这意味着相对于所述的偶数通道,所述的奇数通道被延迟一个一致的量,反之亦然。所述的奇-偶交错被提供给被传送给由标号158所指示的所述载体的信息上。所述的奇-偶交错还要被提供给所述译码器,并反过来施加到提供给载体158的信号上。图7中的块159可以被修改以便考虑这种交错。另外一种改进可以通过在所述输出端处进行扰码加以提供。这是通过把一个系统位模式加到所述编码后的符号流上来执行的。这解决了由仅产生零位的有故障的装置所引起的问题。
图7详细地解释了与图5、6的编制相符合的译码。在左手测,一个完整第一代码字的符号从所述载体得出,在那里,当从上述奇-偶交错中、或者例如从广播接收中提取出来时,一个特殊第一代码字的符号被相邻接地设置。块159是用于所述第一代码字的第一译码器。所述译码被假定是瞬时的。所以,符号的计数是不受所述译码的影响的。但是,任何实际的延迟都不会改变所述的推导。接着,在块160中,利用单调地减少延时(D)来延迟所述的符号,从而使得在所述第二译码器162的输入端处重新对一个第二代码字的各个符号进行排列。再一次假定所述的译码是瞬间发生的。若所述的译码具有令人满意的结果,那么,所述译码器162的输出可以通过具有相对于块160而言为反相延时(inverse delays)的第二延迟级164直接发送给一个用户。如果不是这样的话,所述第二译码器162的输出就通过所述的第二延迟级164和第三译码器级166传送给所述用户。在后一种情况下,所述第一代码字被提供给实际上可以与所述块159一起共享硬件的第三译码器级166。若所述C1和C2码有足够的相似之处,所述的块162将参与该共享。在输出端168,提供有所述的用户符号。在放弃执行所述第三译码操作的情况下,尽管保持所述第二延迟级164是有利的,但它仅仅是针对所述用户符号的。若需要,可通过重复所述块162、160来重新构成和再次译码所述和第二代码字。
图8示出了具有比较实际的规模的一个译码设备的方框图。所述编码后的符号流来自于输入端114,它具有供8位符号用的8位宽。块116是所述的输入存储器,它根据到达的顺序并根据一种用于将所述的符号指定给它们原来的通道的选择机制来取得所述的符号。所述的延迟允许将各种符号在正确的瞬间提供给所述第一译码器级118,所述译码器118需要以与在输入端114处相同的速率接收所输入的符号,对于每一个所接收的代码符号而言,如在块130中通过以惊叹号来符号化地表示的那样,它首先要确定出它们对具有上述符号的所述第一代码的字的各种初步伴随符号(preliminary syndrome symbols)的贡献。在产生了所述的伴随信号以后,所述译码器执行适当的译码,它可以具有各种标准输出中的某些种标准输出:发现所述的代码字是正确的并舍去任何校正(a);发现某些可校正的误差并根据所发现的误差校正它们(b),或者是检测到至少是在执行校正策略以前不可校正的所述字(c),情况(a)可以把O.K.标记指定给所述正确字的所有符号;情况(b)可以将一个校正标记有选择性地指定给所述代码字校正后的符号,其余的仍然使用O.K.标记。在情况(c)可以将一个不可靠标记指定给上述代码字的所有符号,该标记还可以进一步规定各种不可靠性等级。在所述参考文献I、II中已经教导了如何使用通过诸如解调的早期处理所产生的各种标记。
接着,所有的通道都进入了译码的第二级。块120是一个对包括第二和第一检查符号在内的所述代码符号进行排列的中间存储器,这些代码符号用于通过所述第二译码器级122进行处理。块122以与块118相类似的方式计算与所述第二代码字相关的伴随符号并执行所述的译码,并原则上具有与译码器118相同的三个可能输出。但是,所述策略可以是不同的:首先,这是由于很多的误差已经被先前级118所校正,其次,是由于附加帮助是通过利用可作为擦除指针的第一译码级提供的不可靠标记以及可建议将被分别进行译码的最大数量的误差符号和擦除信号的O.K标记所提供的。其结果是,在第二级以后,所述剩余误差的数量通常都被减少。所述第2代码字的译码是由块132中的惊叹号标记指示的。
接着,所有通道进入译码的第三级。块124是一个对包括第二和第一检查符号在内的所述代码符号进行排列的中间寄存器,用于通过第三译码器级126进行处理。块126以与块118相类似的方式计算与所述第一代码字相关的伴随符号并且执行译码,并且原则上具有与块118相同的三个可能的输出。但是,所述策略可以不同于参考译码级112所解释的策略。另外,由于所述的中间通路通过所述第二译码器级,所以,在第三级之后剩余误差的数量仍然要少于所述第二译码器级之后的剩余误差的数量。现在利用块134内的惊叹号标记来指示所述第一代码字的译码。应当注意,在所述小型光盘系统中的交叉交错里德-所罗门代码结构中,最多有两级译码是有用的,这是由于在考虑了所述第一代码和第二代码的情况下,每一个单一的译码操作都充分发挥了那个等级的可能性。至少,在各代码相同的情况下,尽管所应用的策略通常不同,但是第三级译码器的硬件可以在相当程度上与所述第一级的硬件共享。如果所述的代码具有对应的特性,特别是如果一个代码是另一个代码的子码,则分别为C1和C2代码所固有的硬件也可以被共享。与小型光盘系统的另一区别在于后者的译码是以与所述编码的相反顺序进行的。根据本发明,译码顺序原则上是任意的。
块128是一个输出存储器,它把用作顺序地正确表示的所述数据符号提供给一个串联输出端130。一般的说,在此之后,将不再考虑所述的检查符号。
图9示出了在一个载体上实际的符号配置。这些数据形成了一个用于译码的源。所述的格式具有一个标为SYNC的同步标题段和一个被标为ADD的辅助标题段部分。所述的后者可以被用于存储诸如一个地址等的不直接属于信息主体的信息。所述的格式可以以如下的方式加以规定,即如图所示,只有所述格式中的预定部分才能获得部分所述SYNC和/或ADD。现在,在所述例子中,每一个格式都分别具有被标记为x和y的交替符号以在所述的符号中实现奇-偶交错。这是针对短误差段的一个对抗措施。在诸如1.1x……6.1x的符号序列中,包括所述相关的第一和第二检查符号在内的所述符号如它们的数字所示的那样按它们在所述第一排列状态中的出现而被单调地存储起来。实际上,各种代码字的符号数量远大于6。注意,所述的符号标志不同于图6中的标志,后者示出了在此被连续化的各通道。为简单起见,通过扰码所产生的附加影响忽略不计。
2.注意,使用这种形式的编码允许全零代码字。如果没有采取进一步的措施,引起发生全零字的硬件误差将会被从有效的全零代码字中识别出来。由此,整个的或有选择的反相的奇偶校验可以在所述载体上进行重写之前优先地直接加以应用。通常,对于所有字来讲,反相是一致的,例如,除了其它的第二检查符号以外,所有的第一检查符号被反相。其它的选择也是可行的。
3.在一系列应用中,所述的用户数据以例如是每段16K字节的段的形式提供。各个段的数据和与这些数据相关的奇偶校验或检查符号一起被写入相应的存储块,特定存储块数据中的改变和所述奇偶校验符号的修改最好是相互伴随进行而不影响其它存储块中的数据或奇偶校验符号。当施加到这种与块相关的应用中时,上面所讨论的编码方法可以得益于为提高其效率而作出的改进。(属于s数据符号的)单一C1字的数据修改不仅仅影响这个特定字的所述C1检查符号,而且也影响下一个跟随的s+q-1C1字,见图3。因此,为了要编码具有ms(m×s)个数据符号的一个段,所需的C1字的总数等于m+s+q-1。
在这方面,图12示出了一个处于所谓柱面格式的卷积编码的数据格式,其中,作为一个例子,s=116,p=8,q=12。包含有涉及到这个数据块的检查字的列的总数是m+127。作为一个扩展,图13示出了多个重复数据块的编码,所述多个重复数据块中的每一个单独具有图12所示单一块的规模。现在如各个较暗区域所表示的,所述相继的块的检查符号被重叠在一起。这意味着取决于额外列的相关内务操作(Overhead)在用户数据量增加时减少。另一方面,这种重叠经常被认为是一种障碍。
下面讨论与块相关应用的有效处理。本发明人发现,假如m≥n=s+p+q,那么就可以利用单一的返折(fold-back)以如上所述的方式按一定数量的mC1字中对ms数据符号的一个段进行编码,并保持同样的误差校正能力。如在图12中所要求的那样,s+q-1个附加的C1字于是便不存在。因此,可以写入所述载体上的数据量增加到1+(s+q-1)/m倍。例如,假如m=n(它属于最佳存储格式之一),同时s+q相对于p而言是很大的,那么可以近似存储两倍那么多的数据。
上述的近似值基于下述的认识。如图10所示,所述新的块代码的代码字是一个m×n矩阵900。所述矩阵900具有例如是列902的多个列及例如是行904的多个行,以及例如是循环对角线906的循环对角线。在这样的前后文关系中,所述的循环对角线是位于连续列中相应的一些列、并位于连续行中相应的一些行内的各个相应矩阵元素的一种排列,所述的行是循环地继续下去的。例如,如图10所示,每当具有一个从左到右,从上到下定向的循环对角线到达所述矩阵的右手边缘时,它都在左手侧循环继续。所述矩阵900包含一定数量的这种定向的m循环对角线。所述矩阵列的每一个位于C1之内,而每一个循环对角线位于C2之内。
通过如上所述地组合译码器C1和C2可以实现一个块代码字的译码。这种比较宽的柱面的编码将结合显示出了一个(n-1+2m)n矩阵1000的图11加以解释。在所述左侧处的第一个n-1列含有多个零,该第一个n-1列此后被称之为全零列。下一个m列被称作数据列。每一个数据列包括在s个顶部行内的s个数据符号和在p+q个底部行内的p+q个奇偶校验符号。最后的m列被称为导出列。每个导出列在其s顶部行中仅含有多个零。注意,由于上述的编码的特性,所述最后m-(s+q-1)导出列仅含有多个零。
在所述数据列中和在所述导出列中的奇偶校验符号根据上面解释的方式来计算,以便产生所有这些列C1字和产生具有至少一个位于数据列C2字中的元素的所有对角线。所述块代码字第i个列等于第i个数据列和第i个导出列之和。现在,当所有的数据列和导出列都位于C1之内时,所述块代码字的所有列都位于C1之内。可以证明,所有的循环对角线全部位于C2之中。事实上,在所述导出列中的奇偶校验符号通过例如是EXOR(异或)的逻辑运算与这些数据列相互组合。在这方面,图14示出了一个扩展了图42所示排列的性能的柱面编码的数据块。如图所示,所述冗余信息的一部分与图12中所产生的相同,而另一部分则是通过把在图12中右侧处的“尾部”叠置于紧跟在所述用户符号下面的区域上而产生的。在所述的右手侧,具有两种C2代码字(用箭头来表示):一个是以直接方式从左上角到右下角,而另一个则是环绕的,从而当其到达了右手侧以后,再一次从左手侧开始。
例如参考图5所公开的设备可以被用于以下述方式进行编码。为了模拟(n-1)个全零列,例如所述延迟装置(例如,延迟块152)被置成零。接着,所述ms个数据符号被加到所述编码设备上。计算和存储用于所述数据列的C1和C2的奇偶性。然后,(s+q-1)s个零符号被加到所述编码器设备上,并且每个被计算的奇偶校验符号被附加到一个在mC1个字的时间周期之前产生的所述奇偶校验符号上。所述的加法可以在逐个C1字的基础上、或者利用部分或整个的并行操作来实现。上述方面的进一步扩展将在下面给出。
4.再一次参看图5,在编码之后,通常在标号158处取得输出。这有一个要求,就是所述多个C1字列仅覆盖所述数据载体上非常短的范围。现在,大部分是短段误差,而不是随机信号位误差。其原因是由于工艺所引起的存储载体的缺陷以及可能由于位于所述通道或媒体与出错防止译码器之间的解调器的操作中所引起的传送误差。对于这个问题,在遵守上述“短范围要求”的同时,已经通过一种具有与奇数通道相比被延迟了一个C1字间隔的偶数通道的所谓的小交错机制(或者别的方式)进行了处理。但是,在与图6中所述C2交错相组合时,这可能引起在一个单一C2字上这两个相连符号误差的变换,这样就出现了一个问题,即示于图15中的具有奇-偶交错的短段的排列问题。其解决方案示于图16,它涉及在交错延迟一个块之后将所述的低序号通道集中而统一地转换成高序号通道,并按相反方式用于所述的低序号通道情况。这种置换可以通过各种其它方式,例如是通过在s序列的一部分中进行置换来执行。当然,在所述的译码器中,要采取相反性的措施。
5.在上述的第3项中,考虑到了用于所述媒体的短长度范围内的有限长度块的所谓柱面存储。然后将在块的基础上执行第4项中的奇-偶置换。从概念上讲,在进行了C1/C2编码之后的柱面由n个环组成,n是所述代码字的长度(即行的总数)。然后,所述的偶数环将相对于所述的奇数环在一个位置上均匀地转动。另外,在每一个相应的列中,所述被延迟的符号或者未被延迟的符号按如上所述方式被置换。
从限制误差传播的观点来看,所述的奇/偶去交错在传送到达用户单元以前不应当被取消。事实上,如果已经知道具有误差的字节,则限制误差是可能的,并且最好通过对一个作为最佳指示符的C1代码进行译码来检测这种字节。因此,在所述译码器中的奇/偶交错仅是作为在其它编码之后和在将所述数据写入载体之前的一个后置处理级而加以提供的。同样,在所述译码器中,所述的奇/偶去交错仅是作为在首次将所述数据输入给C1译码器之前的一个前置处理级而加以提供。
6.在译码时,在如图7所示的第二C1译码之后的输出可以被固定在块166的输出端上。另外,一种解决方案如下:如在块159中的第一C1译码操作是足够成功的,那么,块159的输出被直接联接到一个用户那里。若所述的第一译码操作不够成功,那么块166的输出被联接到用户。通过使用这两个交错块160、164,提供给用户的总是符号的正确序列。在一个较先的译码级处提供用户信息将加速所述的存取。也可以是改换成在块164之后进行输出。
7.图17示出了一种以不相同的出错防止为特征的改进的存储结构。这种概念是基于下述事实:即一个扇区可以包括2048个用户字节外加由少数几个字节组成的特殊标题段信息。这个标题段信息通常包括一个地址、计数数据或其它的用于有选择地存取一个或多个特定扇区的信息。其结果是,这样的标题段能够被很好地加以防护并能快速地存取,因而这是有利的。下述的解决方案也是有益的,即在每个扇区中的标题段构成所述第一C1字的一部分,并且这样就可利用C1的可校正性以及C2的可校正性来加以保护。另外,已经发现,所述的扇区格式仍然具有少数的备用字节。现在将这些备用字节放入所述扇区的第一C1字中,并填入附加的C1检查字,由此以改善用于所述标题段的出错防止。最好,加强的代码C1′是原始代码C1的一个子码,这允许加倍地使用硬件和/或软件功能,若所述信息是通过里德-所罗门码加以防护的,这就单单增加了对所述扇区的这个第一C1代码字的最小汉明(Hamming)距离:对于n-k个检查符号而言,这个距离等于n-k+1。在这种情况下,在所有C1字中全为零的所有符号最好在C1′字中也全部为零。若一个标题段没有被置入一个单一的C1′字中,那么它应当被放置到一串相连的C1′字中。为了具有一个对于含有标题段的字的有限脉冲响应,必须满足下述条件。假若C1′具有多于C1的T个检查符号,那么,在用于对来自一个扇区的标题段信息进行编码的C1′字和用于对来自下一个扇区的标题段信息进行编码的第一C1′字之间,至少具有数量为(T+q-1)C1的字。为了找到一个特定的预期的标题段,在第一种情况下,只对包含有标题段的所述C1′代码字进行译码。假如正确地译码上述C1′代码字成为可能,那么就必须设法获得相关C1字和C2字的完全译码。由于一般只有第一个C1′字需要被译码,所以对所述标题段的存取是非常快的。但是,即使是在对所述C1′字译码失败的情况下,仍然并不总是需要全部译码。例如,可以在一个单调的而不均匀间隔的序列中对所述的扇区进行编号。若所述的前趋扇区比所要寻找的扇区具有较低的序号并且上述扇区具有一个不可校正的C1′标题字,那些首先要试一试下一个扇区。只有在后者比所要寻找的扇区具有较高的序号的情况下,才对中间扇区进行全部译码。如果在与第3项中教导的所述柱面存储相结合而使用这个UEP(不相同的出错防止)特性,那么附加防护的C1字就具有在其它附加防护C1字的顶部上变换的冗余,以便完整地保持它们的奇偶性的有限扩充。
如图17所示,它示出了三个信息扇区224、226和228,其中的每一个都具有它自己的标题段208、210和212。包含有所述标题段的所述C1′字具有它们各自的附加C1′代码检查符号214、216、218。所述的C1检查符号存在于带230中,而C2检查符号存在于带232中。存在着两个抽象的“附加C1”检查符号组220及222,以及一个抽象的信息符号量234。在所述柱面存储情况下,项220的列被叠加在项214的列上,而项222的列被叠加在项216的列上。所述叠加是通过将Galois域内的符号相加而完成的;通常这一直进行到按位方式的模2相加。其它的列以类似方向进行叠加。
8.在某些情况下例如假如m比s小很多的情况下,根据图10、11和14的所述柱面存储器具有太大的存储容量。在图3所示的一种极限形式的情况下,所述的柱面要比图14所示的更加紧密。但是这意味着检查符号的总数量变得比图3所示的低。虽然这种结构在整个的编码格式的情况下是仍然适当的,但是根据可校正误差量的出错防止的程度却可能下降。但是,仍然存在着诸如图13所示的非常长的信息块的那种速率和额外开销量的问题。
9.下面来描述有关上述柱面编码的替换方案。首先,图18示出了一个有限支持或尺寸卷积菱形代码字,它一般对应于图12,但每个C2代码字具有两上附加的检查符号。现在,根据一种有益的块定义,最小的可寻址存储块包含有其中的每一个都具有2088个数据字节的8个扇区。由于每个列都具有116个数据字节,所以每个扇区都存储在18个列之中。现在,在盘空间上所需要的量达129个附加列。这样,在这一级上,效率仅为约44%。对于一个单一扇区而言,所述的存储效率相对要低得多,大约在10%左右。这个指数通常被认为是太低了。
这个问题的解决办法就是以下述的方式来计算符号的冗余列,即:当使用整个本发明时,利用根据同一个半循环和菱形码的代码法则所获得的贡献来精确补偿图18右侧处所示的尾部。换言之,就是要响应这些冗余列,精确地删除从所述冗余列向右侧扩充的冗余行。在这方面,图19示出了被加有14列冗余符号的一个块卷积菱形代码字,所加冗余符号的数量严格等于每个代码字的C2检查符号的数量。即使是对于具有仅一个单一用户字的扇区而言,所述的效率也可以上升到约47%。附加奇偶校验列的数量与信息块的宽度不相干。为此产生的检查符号的序列满足编码法则:每个列是一个C1代码的代码字,且每个对角线是一个C2代码的代码字。所述后一个代码字包括在图19所示块外部右侧处的多个零符号。若可用的话,还包括在图19所示块外部左侧处的多个零符号。所使用的代码为线性码,这意味着两个代码字的和仍然是一个代码字。
在这方面,图20示出了根据图19的代码块的延续。这种格式对于一个在读出之后允许在所述媒体上写入全新的数据的存储结构来讲是非常有益的。由于有限量的信息通常是在一个特定时间产生的,所以它们的存储只占用不包括所述尾部的一部分空间(如图18所示):这就允许相互紧靠地存储相连的块。注意,根据图9,相连代码字也被一个紧跟一个的存储起来。对于所述存储结构的一个附加要求是译码应当很方便地使用相同的硬件。
加粗箭头表示沿特定对角线、即C2代码字对角线运行,被这个箭头所穿过的两个“块”中的每一个都提供了一个单独有效的代码字,而不用考虑这两个块的距离,即使是这个距离为零。所述的两个块不必尺寸相等。这意味着一旦知道了在一个块序列中一个特定块的起点,就可以通过对C2对角线上的任一其它符号填以位于上述块内部内容的外部的多个零对所述的块进行译码,而不必保持任一其它块的踪迹。这就形成去模拟一个仿真的无误差信息环境。所述的存储格式具有两个用途。首先,对于一个可写媒体而言,不再需要在图18的右侧处提供所述很长的尾部,从而提高了存储效率。由于当已经识别出对已编码的一组扇区的开始时可以直接启动译码器的操作,所以对于只读结构而言也是有利的:不必考虑在前的扇区,因此,由于附加了冗余符号的多个列,以较低的存储效率为代价,缩短了所述存取的执行时间。
另外,还需要某种用以将译码器时钟与媒体的同步实行再同步(特别是在每个块开始处)的链接或同步信息。如从所述译码器所看到的,这样一种链接信息最好由仅仅是零的各列来加以替换或者当其内容不连贯时则被完全略去。若与多个列相对应的话,那么这种同步信息的长度是任意的。若重放设备或译码器能够识别这种同步信息,那么所有任意数据格式可以被相互混合,同时利用标准的菱形译码器进行读出而不使校正能力方面产生损失。若所述的译码器不能识别同步信息,就要删除相关列,这就要稍微降低校正能力。若所述的同步机构没有变成丧失同步功能的情况,那么仍然可以正确地读出根据上述的相连块的混合序列。实际上,这种同步信息所占的规模大约相当于三个列。
图21示出了用于进行编码的块的准备。所述编码是根据两个相连步骤的顺序执行的。所述第一步骤包括在右侧准备多个只是奇偶校验列(在这里是14个列)的信息符号,以使得所述编码器在最后奇偶校验列的编码结束处处于全零状态。如图21所示,这可以通过使用用于这种有限的符号的标准的C2代码编码器来实现。把要以这种方式形成的所述C2代码字中的信息符号作为由所述对角线箭头所指出的、包含在这些代码字中的最低阶信息符号来处置。如此产生的检查符号被放入是C2代码字的数据符号的位置内。接着,如先前所解释的那样,以标准方式进行按列方式的和进一步的对角线编码。
下面将更加详细地考虑短块的编码。所述的格式特别涉及到可记录媒体。只读载体和可记录载体应具有尽可能的相互对应的格式。根据图19-21,已经讨论了所述的尾部一向上格式或蝎尾格式。这种格式允许在相连块之间具有一个窄的间隔。为简化起见,图22、23所示的编码考虑了其信息符号具有5个行(s=5)、8个列(m=8)的一个较小的块。另外,奇偶校验符号的数量也较少,即,用于所述列或C1字的三个奇偶校验符号(p=3)以及用于所述对角线或C2字的两个奇偶校验符号(q=2)。存在着四个奇偶校验符号区,这些区可按较为相互独立地来形成:
a:从左侧开始,对于每一个相应列,首先形成一个C1代码字,接着形成第二代码字。在这种情况下,所述C1奇偶校验符号作为用于一个或多个后续C2代码字的数据符号而运作,反之亦然。所述C2奇偶校验符号被置于最低的两个行中并如阴影区所示。其中的每一对都具有一个C1代码字和一个C2代码字的这些对的数量y可以从零变化到m,即0≤y≤m。在图中,y=4。如将在后面要讨论的,除了可以被延迟的最后一个C2字以外,必须遵循所产生的顺序。
b:对于最右边一列的每个数据符号来说,除了它的最低数据符号以外,还要形成相关的C2代码字,它们如阴影区所示。产生的顺序是任意的。所述最低数据符号将在第c项中加以考虑。
c:从右侧开始,相对于上面所述信息列的最低信息符号形成一对代码字,它首先包括一个C2代码字,接着是一个C1代码字。所述的后者占用了其中刚刚形成和设置了所述C1代码字最终奇偶校验符号的所述列。在这种情况下,对于所述编码,所述的C2奇偶校验符号作为用于一个或多个后续C1代码字的数据符号而运作,反之亦然。所述C2奇偶校验符号被置于最高的q=2的行中并被如阴影区所示。这些对的数据z可以从零到m之间变化,即:0≤z=m-y≤m。在所述图中,z=4。除了可以被延迟的最后一个C1代码字以外,必须遵守产生的顺序,部分b的所有C2代码字必须在部分c的所述第一个C1代码字之前产生。在部分a和c之间的执行顺序之间,没有相互关系。
d:在产生了部分a和c的所有对之后,产生包含有p×q的菱形奇偶校验符号。根据图22,它们被形成为qC1代码字;这需要部分a的所述最后一个C2代码字。根据图23,这些被形成为pC2代码字,这些代码字如阴影区所示;这需要部分c中的所述最后C1代码字。对于这个部分d而言,在这两种情况下,产生的顺序是任意的。产生作为C1代码字和C2代码字的混合体的部分d的代码字是可行的。通常以系统方式来形成各种代码字,以优化所述的存储器存取等。
借助于在这里一并作为参考文献的EP-A-584,864和相应的美国专利申请08/107,547(PHN14168)中所叙述的移位寄存器可以有效地执行上述类型的编码。在这个参考文献中,所述的奇偶校验符号被设置成所述代码字的一串连续的、尽管不必是最后的位置处。对于结合图22、23所讨论的格式而言,所述译码器必须与一个新符号列的开始同步。由于在对角线上出现的任一个字是一个所述C2代码的字,所以所述扇区等级上的同步不是特别需要的。若一个对角线包含有多于一个的字,那么这些就是C2代码的串接的字,这表明所述的译码器将总是在正常工作的。当然,得知了各C2字开始部分的知识就允许去分隔它们,这就提高了所述译码器的校正能力。
下面讨论图14所示的所谓柱面格式。这里,每一个块与任一相邻块无关地进行读和写。所述译码器必须同步到所述块边界上。对单独字的译码类似于尾部向上或蝎尾形格式。而去交错过程有某些不同。
首先根据一个能证明其正确性的理想步骤顺序来讨论所述的编码。所述块的规模大于图22和23所示块的规模。现在,若数据列的量m至少等于s,那么,首先编码上述部分b的内容。在如此形成的奇偶校验符号之中,如图24用符号所表示的那样,从所述数据区的第一个q=14的列中以符号方式地减去划出轮廓的最高s=116的行。当然,如果是在诸如GF(2r)的一个特征2的域中操作,所述减法相同于位状态的异或操作(Ex-Oring)。接着,如同参考图22、23所讨论的那样,部分a、c和d剩余的C1代码字和C2代码字被计算。最后,这就产生一个如图25所示的代码块,并且其中所有的代码字都遵循所述的菱形源规则,尽管具有与奇偶校验符号相重叠的所述第一个14列的数据。
现在,在仍然保持一个代码字的同时,与扇区尺寸无关的任一菱形扇区都可以沿着所示线水平移动。但是,通过所使用代码的线性,两个代码字的按符号方式的相加就再次产生了一个代码字。现在假设我们把图25所示的块在水平移动m个列(所述信息部分的宽度)之后加到它本身的拷贝上。由于通过所述的有限域加法使在所述数据符号行上的所述C2奇偶校验相互抵消,所以,通过在水平方向上的周期重复的移动和相加,就产生了一个具有如图14所示所期望的柱面格式的周期性信息结构。通过这个加法,使所有的数据清楚地重新出现。实际上,如同在图26中利用轮廓线形状所概念性的表示一样,所述相同的后置处理是通过把最右侧q=14列中的所有数据和奇偶校验符号加到在左侧相应数量的列上并在所述右侧将它们舍去来执行的。
实际的计算顺序如下:首先计算部分b,然后如图24所示进行减法,再后如图25所示地计算部分a、c和d,最后,如图26所示,把最后的q奇偶校验列加到所述第一q列上。另外如下作也可能是有益的:首先计算部分b中的奇偶校验符号,接着,在考虑提供给它的最右侧q列的奇偶校验符号的贡献的同时,计算部分a、c、d,最后删除这些最右边的q列。
图27示出了在一个数据块的宽度m小于它的高度s=116列的情况下,一个右上角尾部的奇偶校验符号和当然是所述奇偶校验符号的较低p+q行的有效产生。可以利用根据代码C2的所述生成多项式、即g2(x)而运作的一个反馈移位寄存器编码器来有效地产生所述右上尾部的奇偶校验符号。所述粗箭头表示一个用于m大约等于44的合成C2代码字。在所述计算期间,折叠的C2代码字的所有字节被馈送给所述移位寄存器。当到达所述数据块的右手边缘时,所述的移位寄存器含有与随后将要在部分b的那个部分处被写入的所述C2代码字相关的q个奇偶校验符号,在图27中,这些奇偶校验符号利用从所述数据块向右侧延伸的箭头表示。如果需要,在存储了这些字节以后,并且在无需改变所述移位寄存器的状态的情况下,表示所述循环地折叠的C2字的下一个转移指令的所述数据字节被提供给所述编码器。只有在所述信息块上缘处开始一个新的代码字时,所述的移位寄存器才必须被清零。这种折叠信息字的总数等于MIN(s,m)。这种方法仅产生部分b中的所述奇偶校验符号。对于其余的,则根据图24、25和26所示继续进行计算。
图28示出了一种改进的用于所述窄(m<s)柱面格式的处理方法。其中,在所述数据符号的基础上计算奇偶校验符号的较低p+q行。然而,对后述的符号进行的修改可通过从其所述第一q列中减去来自所述部分bq列的相应设置的C2奇偶校验符号(如参考图25所讨论的)来进行。被如此相减的符号位于同一行上,但位于相对于右边m个位置。对于q≤m,从每个数据符号中作减法不必多于一次。对于q>m,所述过程作如下修改:从所述第一个m列的每个数据符号中减去处在同一行、但向右m个位置上的所述奇偶校验符号,以及向右2m、3m……个位置上的所述奇偶校验符号,直到获得所述的列数m+q为止。这个过程导致了精确地与图25所示相同的奇偶校验符号。应当清楚,只有在计算所述奇偶校验符号时才执行所述数据符号的修改,在这种情况下,未修改的数据符号被保存或被包括在已经编码的块中。最后,如图29所示,将所述最右测q=14列的底部p+q=22行从包括至此为止已腾空的位于左下角处的三角形在内的、在所述第一个14列中的它们的对应物中减去。其后的过程是隐含地执行对在右侧处的检查符号q列的减法和稍后的再一次加法。如果m<q,所述相减后的符号被置于向右的m、2m、3m……个位置,直到产生列m+q。应当清楚,用于低值m的柱面格式具有相对少的保护,作为一个极端的例子,若m=1,所述奇偶校验符号的数量仅等于p+q。
对于实际的实施,存在有各种可能性。通常,所述的数据符号被存储在一个适当的RAM存储器中。所需符号单元的存取是通过将正确的地址加载到所述地址发生器、并将这些符号本身提供给Galois域运算器来执行的。对于一个记录器或一个写入设备而言,提供了一个根据上述的菱形译码器,该译码器在写模式时也可以用于产生所述的奇偶校验符号。特别是,由于用于所述编码器的所述C1字的数量等于用于所述译码器的那些相关数量,所以对C1字进行编码的一个很容易的方式就是使用所述C1字译码器,同时将所述的奇偶校验符号作为擦除符号处置。更特别的是,所述的C1奇偶校验符号被完全填入一些行中,在这些行内它们形成符号带状,其中特别是在图23中的部分a具有最大的尺寸(因而部分c仅是抽象的)。
对于编码窄(m<s)数据块的情况,由于在编码以后各种C2字被聚集到一起,所以在通常具有较低符号量的情况下,所述C2字的数量大于用于译码的所需C2字的数量,这通过图27中的所述折叠加以表示。当然,对于分开的和对于复合的字来说,它们的数据内容是相同的。这可能意味着借助于一个擦除译码器进行编码可能占用太多的时间。与其相反,对于移位寄存器编码器,在所述最后一个数据字节被输入给所述移位寄存器之后,可以立即获得所述C2奇偶校验符号。对于这种编码器,在所述信息带的上边行内的所述奇偶校验符号的可变化的位置不会引起问题。另一方面,如果窄数据块必需被极迅速地编码,特别对于编码C2字来说,具有一个单独的反馈移位寄存器型的编码器是有利的。
一个对所述窄块进行编码的不同方法是基于这样的认识:即,在非常窄的带形的情况下,使用两个半循环码并不是一种最佳方案。这一点可以通过对仅包括有一个单一C1代码字的带形进行的编码中看出。在这种情况下,由于它们将共享多个零,所以,所述的C1代码字和所述的C2代码字将不再把它们的防护能力加到一起。已经发现,通过使p和q可变,同时又保持它们的和为一常数可以改善出错防止的程度。这取决于按C1代码字所测量的块的宽度。一个极端的办法就是当所述块宽度刚一低于一个预定界限就使所述的值q等于零。这还可以通过利用图5所示的安排,在使用一个具有增加了p+q全零数量的一个发生器多项式的同时,在所述两个编码器150、154中的仅一个上对这两个编码操作进行变换,从而使扩充的C1代码能够成为基础C1代码的子码的方法来加以实现。注意,先前所考虑的C1′代码是用于加强所述块标题段的保护的。尽管所述的扩充C1代码和所述的C1′代码的检查符号被设置于多个行的不同组内,但它们在很大程度上是相同的。另一方面,在所述C1′代码以外的检查符号的增加量可以进入到所述扩充C1代码的附加检查符号的顶部上。用于对高距离代码、特别是里德-所罗门代码进行译码的简单策略已经在由当前发明人之一发明并转让给相同受让人的美国专利4,642,808(DHN 10,710)中披露了。
所述块规模的检测可以根据包括在所述块标题段中的一个规模指示符进行。与音频-视频数据不同,窄块的特性对于使用计算机数据或类似数据是特别有用的。后者经常具有相对庞大的规模。对于修改后的块的译码,图7所示译码器仅需知道一个特定代码具有多少个零,如所解释的那样,这个数量可以有各种不同的值。在一个特定的实施方案中,可以发现下述选择是有益的,即:使用于其宽度小于其高度约20%的一个块的q=0,所述的宽度和高度都是根据符号的数量测定的。用于编码和用于译码的所述硬件的各个部分都可以随机共享,以引入具有各种不同q值的多个块。当然,在一个诸如磁盘的载体上,一旦译码器和/或编码器可以适用,那就基本上没有什么技术障碍可以阻碍这种引入了。