用于解码纠错码的方法和设备

申请号 CN02804842.3 申请日 2002-02-04 公开(公告)号 CN1491486A 公开(公告)日 2004-04-21
申请人 汤姆森许可贸易公司; 发明人 亚历山大·克拉夫琴科;
摘要 CIRC码的解码过程包括用于各个输入 帧 的每隔一个数据码符的单码符延迟操作和奇偶校验码符反相操作,C1字解码操作,解交织操作,C2字解码操作和输出前的双码符延迟操作。如果在双码符延迟操作和输出之前,执行两次(双路操作)C1字解码,解交织和C2字解码,可以提高纠错能 力 。本 发明 允许双路操作,也允许单路操作,并使用具有最小容量的单一 存储器 ,其中存储器的三个部分被分配了特定的操作并用一种特殊方式控制存储器。
权利要求

1.一种解码(inp_log,RSDEC,out_log,CONTR,RAM)纠错码 如CIRC码的方法,其特征在于包括步骤:
将包含了纠错位的已编码数据码符的当前存储于存储器(RAM) 的第一部分(M1);
将数据码符的所述当前帧写入(33)所述存储器的第二部分(M2), 并由此将该数据码符的一部分延迟(1SYMDEL)一个数据码符周期,这 些数据码符就表示了一个C1码字;
从所述存储器中读取(34)所述的C1码字,对所述C1码字执行包 括第一次纠错的C1解码(C1DEC),并将已校正的C1码字写入所述存 储器的所述第二部分(M2);
从所述存储器中读取(35)所述已校正的C1码字,对所述已校正的 C1码字执行解交织(UNEQDEL)和包括第二次纠错或疑符校正的C2解 码(C2DEC);
将得到的已校正的C2码字存储于所述存储器的第三部分(M3);
从所述存储器的所述第三部分(M3)读取(39)所述已校正的C2码 字,将码字数据码符的一部分延迟(2SYMDEL)两个数据码符周期,并 将得到的已校正的数据码符写入所述存储器的所述第三部分(M3);
从所述存储器的所述第三部分(M3)输出(out_log)当前帧的已校 正的数据码符。
2.一种解码(inp_log,RSDEC,out_log,CONTR,RAM)纠错码 如CIRC码方法,其特征在于包括步骤:
将包含了纠错位的已编码数据码符的当前帧存储于存储器(RAM) 的第一部分(M1);
将数据码符的所述当前帧写入(33)所述存储器的第二部分(M2), 并由此将该数据码符的一部分延迟(1SYMDEL)一个数据码符周期,这 些数据码符就表示了一个C1码字;
从所述存储器中读取(34)所述C1码字,对所述C1码字执行包括 第一次初步纠错的初步C1解码(C1DEC),并将已初步校正的C1码字 写入所述存储器的所述第二部分(M2);
从所述存储器中读取(35)所述已初步校正的C1码字,对所述已初 步校正的C 1码字执行解交织(UNEQDEL)和包括第二次初步纠错或初 步疑符校正的初步C2解码(C2DEC),并将得到的已初步校正的C2码 字写入所述存储器的所述第二部分(M2);
从所述存储器读取(37)所述已初步校正的C2码字,对所述已初步 校正的C2码字连同纠错位中所需要的部分执行包括第一次纠错的进一步 C1解码(C1DEC),并将已进一步校正的C1码字写入所述存储器的所述 第二部分(M2);
从所述存储器中读取(38)所述已进一步校正的C1码字,对所述已 进一步校正的C1码字执行解交织(UNEQDEL)和包括第二次纠错或疑 符校正的进一步C2解码(C2DEC);
将得到的已进一步校正的C2码字存储于所述存储器的所述第三部分 (M3);
从所述存储器的所述第三部分(M3)中读取(39)所述已校正的C2 码字,将码字数据码符的一部分延迟(2SYMDEL)两个数据码符周期, 并将得到的已校正的数据码符写入所述存储器的所述第三部分(M3);
从所述存储器的所述第三部分(M3)输出(out_log)当前帧的已校 正的数据码符。
3.根据权利要求1或2所述的方法,其特征在于:
所述存储器(RAM)的所述第一部分(M1)由第一数目例如3个存 储体(bk)组成,在所述存储体中,用循环方式写入连续每一帧的数据 码符。
4.根据权利要求1到3之一所述的方法,其特征在于:
所述存储器(RAM)的所述第二部分(M2)由第二数目的存储体(bk) 组成,存储体的数目是所述纠错码存储体数目的二倍,并且所述存储 器的所述第二部分(M2)用于所述的解交织。
5.根据权利要求1到4之一所述的方法,其特征在于:
所述存储器(RAM)的所述第三部分(M3)由第三数目例如3个存 储体(bk)组成。
6.一种用于解码(inp_log,RSDEC,out_log,CONTR,RAM)纠错 码如CIRC码的设备,其特征在于包括:
RS解码器(RSDEC);
存储器(RAM),在所述存储器的第一部分(M1)存储了包含纠错 位的已编码数据码符的当前帧;
控制器(CONTR),控制将数据码符的所述当前帧写入(33)所述存 储器的第二部分(M2),并由此将该数据码符的一部分延迟(1SYMDEL) 一个数据码符周期,这些数据码符就表示了一个C1码字,在该控制器 (CONTR)的进一步控制下:
从所述存储器中读取(34)所述C1码字,在所述RS编码器中对C1 码字执行包括第一次纠错的C1解码(C1DEC),并将已校正的C1码字 写入所述存储器的所述第二部分(M2);
从所述存储器中读取(35)所述已校正的C1码字,对所述已校正的 C1码字执行解交织(UNEQDEL)并在RS解码器中执行包括第二次纠 错或疑符校正的C2解码(C2DEC);
将得到的已校正的C2码字存储于所述存储器的所述第三部分(M3);
从所述存储器的所述第三部分(M3)读取(39)所述已校正的C2码 字,将码字数据码符中的一部分延迟(2SYMDEL)两个数据码符周期, 并将得到的已校正的数据码符写入所述存储器的所述第三部分(M3);
用于从所述存储器的所述第三部分(M3)输出当前帧的已校正的数 据码符的装置(out_log)。
7.一种用于解码(inp_log,RSDEC,out_log,CONTR,RAM)纠错 码如CIRC码的设备,其特征在于包括:
单一的RS解码器(RSDEC);
存储器(RAM),在所述存储器的第一部分(M1)存储了包含纠错 位的已编码数据码符的当前帧;
控制器(CONTR),控制将数据码符的所述当前帧写入(33)所述存 储器的第二部分(M2),并由此将该数据码符的一部分延迟(1SYMDEL) 一个数据码符周期,这些数据码符就表示了一个C1码字,在该控制器 (CONTR)的进一步控制下:
从所述存储器中读取(34)所述C1码字,在所述RS解码器中对所 述C1码字执行包括第一次初步纠错的初步C1解码(C1DEC),并将已 初步校正的C1码字写入所述存储器的所述第二部分(M2);
从所述存储器中读取(35)所述已初步校正的C1码字,对所述已初 步校正的C1码字执行解交织(UNEQDEL)并在RS解码器中执行包括 第二次初步纠错或初步疑符校正的初步C2解码(C2DEC),并将得到的 已初步校正的C2码字写入所述存储器的所述第二部分(M2);
从所述存储器中读取(37)所述已初步校正的C2码字,在所述RS 解码器中对所述已初步校正的C2码字连同纠错位中所需要的一部分执行 包括第一次纠错的进一步C1解码(C1DEC),并将已进一步校正的C1 码字写入所述存储器的第二部分(M2);
从所述存储器中读取(38)所述已进一步校正的C1码字,对所述已 进一步校正的C1码字执行解交织(UNEQDEL)并在所述RS解码器中 执行包括第二次纠错或疑符校正的进一步C2解码(C2DEC);
将得到的已进一步校正的C2码存储于所述存储器的所述第三部分 (M3);
从所述存储器的所述第三部分(M3)中读取(39)所述已校正的C2 码字,将码字数据码符的一部分延迟(2SYMDEL)两个数据码符周期, 并将得到的已校正的数据码符写入所述存储器的所述第三部分(M3);
用于从所述存储器的所述第三部分(M3)输出(out_log)当前帧的 已校正的数据码符的装置。
8.根据权利要求6或7所述的设备,其特征在于:
所述存储器(RAM)的所述第一部分(M1)由第一数目例如3个存 储体(bk)组成,在所述存储体中,用循环方式写入连续每一帧的数据 码符。
9.根据权利要求6到8之一所述的设备,其特征在于:
所述存储器(RAM)的所述第二部分(M2)由第二数目的存储体(bk) 组成,存储体的数目是纠错码块存储体数目的二倍,所述存储器的所述 第二部分(M2)用于所述解交织。
10.根据权利要求6到9之一所述的设备,其特征在于:
所述存储器(RAM)的所述第三部分(M3)由第三数目例如3个存 储体(bk)组成。

说明书全文

技术领域

发明涉及到一种用于解码CIRC(Cross Interleave Reed-solomon Code,交叉交织里德-所罗码)纠错码的方法和设备,特别是一种对 于从光学存储介质读取数字化数据时遇到的突发错误或随机错误具有增 强的校正能的解码方法。

背景技术

例如,一个Reed-Solomon码为(28,24)(C2码)的CIRC码的 编码方法使用24个数据码符(symbol)来完成,每一个码符的字长是8 比特。在典型的音频设备中,每一个音频采样由16比特表示。如果上述 的CIRC码用于这种数字音频信号的信道编码,则每一个采样要用两个8 比特码符来表示。这样每一个8比特码符表示一个音频采样的8个最高 有效位(MSB)或是8个最低有效位(LSB),该音频信号来自立体声音频 信号两个声道中的一个。这些具有第一排列状态的数据码符通过交织操 作被转换为第二排列状态。而(32,28)Reed-Solomon码(C1码字) 进一步进行编码处理的对象就是这28个现在处于第二排列状态的码符。
图1所示为解这种RS码的传统CIRC电路。这种CIRC解码器的主 要处理步骤为:
a)在1SYMDEL级,将每隔一个的输入数据码符延迟一个码符,其中一 部分延迟的码符被反相;
b)在C1DEC级,将RS码C1(32,28,5)解码,从而校正不正确的码 符;
c)在UNEQDEL级解交织;
d)在C2DEC级,将RS码C2(28,24,5)解码,从而校正不正确的码 符;
e)在2SYMDEL级,将一部分已进行了C2解码的数据码符延迟两个码 符;
每32个输入的数据码符形成一并被提供给电路1SYMDEL,在该 电路中,只有编号为偶数的码符被延迟一个数据码符周期,亦即帧的周 期。从电路1SYMDEL输出的32个码符被提供给C1解码器C1DEC,在 这里执行当前的(32,28,5)Reed-Solomon码(C1码字)解码,其中 最多可以校正C1码字中2个不正确的码符。在C1解码器检测到3个或 更多错误的情况下,会给当前的C1码字中的所有数据码符设置C1指针 (即疑符标志-erasure flag)。
数据码符和疑符标志的进一步处理在解交织级UNEQDEL进行,这一 级包括一些长度不等的延迟线。将UNEQDEL级的输出提供给C2解码 器C2DEC。在解交织级UNEQDEL,对C1解码器产生的各个数据码符 的疑符标志进行与数据解交织的方式相同的解交织过程。利用所述的C1 疑符标志,在C2解码器中最多可以校正四个错误。如果已经校正了4个 错误,清除C1疑符标志。如果错误超过了4个,可以将C1疑符标志复 制给这个C2码字,也可以给C2码字中的所有码符设置疑符标志。CIRC 解码的最后一级是双码符延迟器2SYMDEL。
已经有各种用于解码CIRC码的传统方法被发表,例如EP-A-0 497 593,US-A-4 476 562,US-A-4 497 058,US-A-4 546 474,US-A-5 276 674和EP-A-0 156 440。在这些传统的解码方法中,根据所谓的疑符校正 (erasure correction)方法进行错误处理,在这些方法中,错误码符的位 置由指针信息指出,并对该错误码符进行必要的校正。在上述C1和C2 码字的情况下,最多可以检测并校正2个错误,而如果错误位置已知, 最多可以校正4个疑符或是错误。所以,为了增加纠错能力,在解码错 误时,优先采用疑符校正方法。而且发现疑符校正方法在校正突发错误 时特别有效。
如图1所示的传统解码方法不能双路处理CIRC码,双路处理可 以提高纠错能力。为了获得这个附加的特性,可以给传统的CIRC解码器 附加电路,或是改善传统的CIRC解码器。
EP-A-0 278 383公开的解码方法使用了传统的解码方法,即传统的 CIRC解码器,不过它可以双路处理CIRC码。在“双路处理”中,C1解 码和C2解码按照特定的顺序执行两次:将C1码字提供给C1解码器, 该解码器执行当前的(32,28)Reed-Solomon码的解码。最多可能校 正两个错误。如果在C1解码器检测到3个或更多错误,给这个C1码字 中的所有码符设置一个C1指针。在解交织级进行已校正的数据和C1错 误指针的进一步处理。将解交织级的输出提供给C2解码器,利用上述的 C1指针,C2解码器最多可以完成4个疑符的疑符校正。在C2解码器完 成了疑符校正的基础上,清除这些C1指针,这样就没有把指针信息传送 给C2解码周期。在第二个周期,将来自C2解码器的数据提供给交织器, 交织器将数据按照最初的复制顺序返回。接着,与第一个解码周期重复 的第二个解码周期就开始了。因此,利用附加的交织级就实现了CIRC码 的双路处理。
US-A-4 637 021所述的解码方法实现了CIRC码的双路处理,但不能 实现单路处理。利用一个C1和一个C2解码器,通过处理数据字节块来 实现错误检测和校正。为了使数据处理的速度达到最快,C1和C2解码 器同时处理存储于系统存储器中的数据,其中C1解码器在C2解码器之 前处理对应的数据。在第一C1解码级,最多可以进行双纠错错误处理, 而在C2解码级,可参考来自C1解码级的指针信息进行双纠错。C1指针 信息不能增大纠错系统的纠错能力,但可以用于检验解码处理的质量
C1和C2解码器从系统存储器中读取数据字节的顺序如下:第一C1 解码器处理C1数据码符字节块(32字节),接着第一C2解码器处理由 C1解码器处理得到的C2数据码符字节块(28字节)。这样,第一路结束。 第二C1解码器处理由第一路处理得到的数据字节,接着第二C2解码器 处理由第一路和第二C1解码器处理得到的数据字节。这样,第二路结束。 一个解码器周期包括第一路和第二路的操作。每完成一个解码器周期, 地址计数器加1,并开始下一个解码周期。
在数据码符(C1块)准备好进入输入缓存器之后,立刻将新数据写 入系统存储器。这样,在操作中连续地通过系统存储器实现4个解码器 的读取,直至处理完所有的可用数据。
这里使用了不同的方法执行解交织和控制数据。解交织块的执行在 存储器中进行。解交织块的大小为256*32字节,包括两个块,其中C1 块有128*32字节,C2块有128*32字节。C1块的地址从112行到239行。 C2块的地址从240行到255行,接着再从0行到111行。存储器是循环 的。第一解码器处理32个数据字节的C1块,读取C1块的初始位置是地 址112。在每一个连续的解码器周期里(即C1解码器和C2解码器的两 路操作),C1解码器定位并且读取在下一个连续的较高地址的C1块。这 样,对于第二个周期来说,C1块定位在存储器地址为113的位置。第一 C2解码器处理的C2块大小为28个数据字节,读取C2块的初始位置是 存储地址0。包含了C2块的字节沿着二维存储空间的对线放置。在连 续的解码周期里,改变那些包含了C2块的字节。第二C1解码器从初始 位置为存储地址240处读取C1块,而第二C2解码器从初始位置为存储 地址113处读取C2块。通过存储器,连续地执行这四路解码。只要存储 器里仍然有未处理过的数据,解码周期就会继续下去。如果已校正了存 储器中所有的数据,纠错系统的操作过程就完成了。

发明内容

然而,根据US-A-4 637 021给出的CIRC码的解码技术有一些缺点:
a)执行单码符延迟操作和一帧中奇偶码符的反相需要使用附加电路;
b)双码符延迟操作需要使用附加电路;
c)存储器需要256个存储体(bank),加上它们附带的疑符标志,每一个 存储体包括32字节。这样存储容量明显地大于两个CIRC块的存储容量, 其中的每一个块只包含109个存储体;
d)不能进行CIRC解码器的单路操作。
本发明通过解码CIRC码解决了上述问题,该解码过程允许双路操作, 也允许单路操作,避免了不必要的附加电路,并且只需要一个最小的存 储容量。权利要求1公开的方法解决了这个问题。权利要求6公开了一 种采用了该方法的设备。
将经过适当延迟的C1码字提供给执行当前的(32,28)Reed-Solomon 码的解码的C1解码器。最多可能校正两个错误。如果在C1解码器中检 测到3个或更多错误,给该C1码字的所有码符设置一个C1指针。在解 交织级对已校正的数据和C1错误指针的进行进一步处理。将解交织级的 输出提供给C2解码器,C2解码器利用上述的C1指针最多可以执行四个 疑符的疑符校正。如果需要,其后开始第二解码周期,该周期重复进行 上述的第一解码周期。这样,存储于存储器中的第一路C2解码的例如28 个已初步校正的输出字,连同仍存储于存储器中的例如4个奇偶校验位 或字(或对应的纠错位)一起形成第二路C1解码的(例如32个)输入 数据码符。这样就实现了CIRC码的“双路处理”。
根据本发明,利用对存储器特殊的控制和寻址来实现CIRC码的解码 的单码符和双码符延迟操作以及单路、双路CIRC码解码的可行性。其优 势在于无需附加硬件并可以充分地减小存储器的容量。
为了实现双路解码,采用单一的解码器把存储器中的所有数据字节校 正两遍。为了实现解交织,使用了大小为218*32的较小存储器(218对 应着上文所述CIRC块长度的两倍)来取代上文所述解码方法中使用的 256*32的存储器。本发明采用了RS码的疑符校正方法。如果每一个C1 码字最多包含了6个随机错误,则在低输入错误率的情况下,可以非常 有效地校正已被破坏的C1码字里大量的突发错误。
原则上,本发明的方法适用于纠错码的解码,如CIRC码,该方法包 括步骤:
将包含了纠错位的已编码数据码符的当前帧存储于存储器的第一部 分;
将数据码符的所述当前帧写入所述存储器的第二部分,并由此将该数 据码符的一部分延迟一个数据码符周期,这些数据码符就表示了一个C1 码字;
从所述存储器中读取所述的C1码字,对所述C1码字执行包括第一 次纠错的C1解码,并将已校正的C1码字写入所述存储器的所述第二部 分;
从所述存储器中读取所述已校正的C1码字,对所述已校正的C1码 字执行解交织和包括第二次纠错或疑符校正的C2解码;
将得到的已校正的C2码字存储于所述存储器的第三部分;
从所述存储器的所述第三部分读取所述已校正的C2码字,将码字数 据码符的一部分延迟两个数据码符周期,并将得到的已校正的数据码符 写入所述存储器的所述第三部分;
从所述存储器的所述第三部分输出当前帧的已校正的数据码符; 或步骤:
将包含了纠错位的已编码数据码符的当前帧存储于存储器的第一部 分;
将数据码符的所述当前帧写入所述存储器的第二部分,并由此将该数 据码符的一部分延迟一个数据码符周期,这些数据码符就表示了一个C1 码字;
从所述存储器中读取所述C1码字,对所述C1码字执行包括第一次 初步纠错的初步C1解码,并将已初步校正的C1码字写入所述存储器的 所述第二部分;
从所述存储器中读取所述已初步校正的C1码字,对所述已初步校正 的C1码字执行解交织和包括第二次初步纠错或初步疑符校正的初步C2 解码,并将得到的已初步校正的C2码字写入所述存储器的所述第二部 分;
从所述存储器读取所述已初步校正的C2码字,对所述已初步校正的 C2码字连同纠错位中所需要的部分执行包括第一次纠错的进一步C1解 码,并将已进一步校正的C1码字写入所述存储器的所述第二部分;
从所述存储器中读取所述已进一步校正的C1码字,对所述已进一步 校正的C1码字执行解交织操作和包括第二次纠错或疑符校正的进一步C2 解码;
将得到的进一步校正的C2码字存储于所述存储器的第三部分;
从所述存储器的所述第三部分读取所述已校正的C2码字,将码字数 据码符的一部分延迟两个数据码符周期,并将得到的已校正的数据码符 写入所述存储器的所述第三部分;
从所述存储器的所述第三部分输出当前帧的已校正的数据码符。
各自独立的权利要求中公开了本发明方法其它具体的优势。
原则上,本发明用于解码纠错码例如CIRC码的设备包括:
RS解码器;
存储器,在该存储器的第一部分中存储了包含纠错位的已编码数据码 符的当前帧;
控制器,控制将数据码符的所述当前帧写入所述存储器的第二部分, 并由此将该数据码符的一部分延迟一个数据码符周期,这些数据码符就 表示了一个C1码字,在所述控制器的进一步控制下:
从所述存储器中读取所述C1码字,在所述RS解码器中对所述C1码 字执行包括第一次纠错的C1解码,并将已校正的C1码字写入所述存储 器的所述第二部分;
从所述存储器中读取所述已校正的C1码字,对所述已校正的C1码 字执行解交织,并在RS解码器中执行包括第二次纠错或疑符校正的C2 解码;
将得到的已校正的C2码字存储于所述存储器的第三部分;
从所述存储器的所述第三部分读取所述已校正的C2码字,将码字数 据码符中的一部分延迟两个数据码符周期,并将得到的已校正的数据码 符写入所述存储器的所述第三部分;
用于从所述存储器的所述第三部分输出当前帧已校正的数据码符的装 置, 或包括:
单一的RS解码器;
存储器,在所述存储器的第一部分中存储了包含纠错位的已编码数据 码符的当前帧;
控制器,控制将数据码符的所述当前帧写入所述存储器的第二部分, 并由此将该数据码符的一部分延迟一个数据码符周期,这些数据码符就 表示了一个C1码字,所述控制器的进一步控制下:
从所述存储器中读取所述C1码字,在RS解码器中对所述C1码字执 行包括第一次初步纠错的初步C1解码,并将已初步校正的C1码字写入 所述存储器的所述第二部分;
从所述存储器中读取所述已初步校正的C1码字,对所述已初步校正 的C1码字执行解交织,并在所述RS解码器中执行包括第二次初步纠错 或初步疑符校正的初步C2解码,并将得到的已初步校正的C2码字写入 所述存储器的所述第二部分;
从所述存储器中读取所述已初步校正的C2码字,在所述RS解码器 中对所述已初步校正的C2码字连同纠错位中所需要的必要部分执行包括 第一次纠错的进一步C1解码,并将已进一步校正的C1码字写入所述存 储器的所述第二部分;
从所述存储器中读取所述已进一步校正的C1码字,对所述已进一步 校正的C1码字执行解交织,并在RS解码器中执行包括第二次纠错或疑 符校正的进一步C2解码;
将得到的已进一步校正的C2码字存储于所述存储器的所述第三部 分;
从所述存储器的所述第三部分中读取所述已校正的C2码字,将码字 数据码符的一部分延迟两个数据码符周期,并将得到的已校正的数据码 符写入所述存储器的所述第三部分;
用于从所述存储器的所述第三部分输出当前帧的已校正的数据码符的 装置。
各自独立的权利要求中公开了本发明设备其它具体的优势。
附图说明
本发明的实施例描述参考了这里给出的附图:
图1传统CIRC码解码器的功能框图
图2一种本发明CIRC码解码器的方框图,该解码器用于单路和双 路操作;
图3CIRC码的解码流程图,用于单路和双路操作;
图4M1存储器中单码符延迟数据流,M1存储器是图2中RAM的 一部分;
图5用于计算M1存储器中地址的值的电路;
图6M2存储器,c2_1和c2_2解码器的起始位置以及来自M2存储 器不同存储体C2码字的组合结构,M2存储器是图2中RAM的一部分;
图7用于计算M2存储器中地址的值的电路;
图8在CIRC码的解码中的两码符延迟操作过程中,M3存储器中的 数据流;
图9传统的和本发明CIRC码的解码校正结果。

具体实施方式

图2所示为本发明的CIRC码解码器的主要组成部分,其中D表示数 据线或数据总线,A表示地址线或地址总线。这种体系结构可以执行双 路和单路操作。
来自获取级的数据流acq_d存储于能够存储32个码符的输入逻辑 inp_log。该输入逻辑还接收下一帧的起始信号nxf和字节时钟bc。如果 输入逻辑的缓存中已有足够多的有效数据,则将完整的一帧存储于RAM 存储器的M1部分。解码器设备包括传统的RS解码器RSDEC,其采用 上述的疑符校正方法来处理RS码。RSDEC最多能够校正4个疑符或2 个错误,或是满足下述条件的错误与疑符的组合,2*t+E<d,其中,t 为一个码字中错误的数量,E为疑符的数量,d为RS码的汉明(Hamming) 距离,例如在音频光盘应用中,d=5。
控制器CONTR控制存储器RAM中位置的推断和寻址、RAM中数据 或数据字节的读写传送、单码符和双码符延迟操作、解交织操作以及读 写操作。举例说,存储器RAM包括224个存储体,附带疑符标志,每一 个存储体包括32个字节。存储器包括3个部分:
M1部分(例如存储体218-220)用于单码符延迟操作;
M2部分(例如存储体0-217)用于解交织操作;
M3部分(例如存储体221-223)用于双码符延迟操作;
RSDEC分别从存储器RAM的对应部分接收需要的数据和向其中发送 需要的数据。在上述的双码符延迟操作之后,将每24个数据字节连同它 们附带的疑符标志一起从存储器RAM的M3部分载入到输出逻辑 out_log,输出已纠错的数据aud_D,还可能输出一帧的起始信息fr_strt 和字节时钟bc。
如图3所示,在流程图的模块31,CIRC解码器首先进行控制器CONTR 的初始化,为双路或单路操作设置存储器RAM以及复位计数器。M2存 储器的存储体0-217用于CIRC解码器的双路操作,而存储体108-217 用于CIRC解码器的单路操作。在双路模式中,执行两路C1解码和两路 C2解码,而单路模式执行一路C1解码和一路C2解码。在双路操作中, c1_1解码(_1表示第一路)的起始位置在存储体108,c2_1解码的起始 位置在存储体0,c1_2解码(_2表示第二路)的起始位置在存储体217, c2_2解码的起始位置在存储体109。在单路操作中,c1_1解码和c2_1解 码的起始位置分别在存储体108和存储体0。
如果输入逻辑的缓存中已有足够的有效数据,将一帧数据存储于M1 存储器的存储体218,并如步骤32及流程图模块33所示,执行单码符 延迟操作。
如上所述,从输入逻辑inp_log中将一帧的32个码符载入如图4所示 的M1存储器中对应的存储体(图4a和4c中存储体地址为bk_add_m1 218,图4b为存储体219,图4c为存储体220)。箭头“wrt”以循环方式 指向存储体地址218至220中当前写入数据的一个。
图5所示为M1存储器部分地址bk_add_m1和M2存储器基址的计算 过程。当前M1存储体的写地址由下式计算得到:
bk_add_m1_w=ofst_m1+count_m1_w,
这里count_m1_w的值基于写地址计数器count_m1_w,它确定了用于 写操作的M1存储器的存储体的地址,而ofst_m1是一个值为“218”的 固定偏移量。如果count_m1_w>2,则计数器count_m1_w复位为零。
计数器count_b有三个输出(其中一个未在图5中标出),分别输出一 个存储体中的码符地址SYMADRBK和用于M1存储器的奇或偶码符 ev/od。该计数器一般以字节时钟信号bc作为时钟。
M1存储器的M1存储体读地址取决于偶或奇码符ev/od的值是“0” 或“1”,并根据下式计算:
bk_add_m1_r_0=ofst_m1+count_m1_r              偶 
bk_add_m1_r_1=ofst_m1+(count_m1_r+2)mod 3     奇
这里count_m1_r的值基于读地址计数器count_m1_r。如果count_m1_r >2,计数器count_m1_r复位为零。如果ev/od的值为“1”,也就是奇数, 则给初始的计数器count_m1_r值加上2,并将结果通过模3电路“mod 3” 处理,再与ofst_m1相加。
将M1存储器中的一个码符载入暂时寄存器TR。对照图1中C1DEC 的输入,除计数器count_b输出的SYMADRBK值为12,13,14,15,28, 29,30或31的情况之外,该码符的一个字节反相。经三态数据总线DBS, 将相应适合的count_b值写到M2存储器的存储体。被延迟的码符存储于 M2存储器对应的存储体中,例如“108”是在M2存储器中的起始位置。
根据下式计算M2存储体的写地址bk_add_m2_w:
bk_add_m2_w=(ofst_c1_1+count_m2_w)mod 218/109,
这里的ofst_c1_1是一个偏移量,它的值由存储器中M2的起始区域确 定并根据下文所述而改变,count_m2_w是计数器count_m2_w的输出值, 这里和下文中的“mod 218/109”表示双路操作的情况下取“mod 218”, 而在单路操作的情况下取“mod 109”,这是对应的模电路的功能。如果 count_m2_w>mod(218/109-1),计数器count_m2_w复位为零。
在不同的时间周期里,经地址总线ADRBS输出不同的地址值 bk_add_m1,bk_add_m2_w和SYMADRBK。地址值bk_add_m1和 SYMADRBK表示了一个普通地址值的两个部分。
计数器count_m1_w、count_m1_r和count_m2_w的时钟信号是下一帧 信号nxf。计数器count_b的时钟信号是时钟bc,其计数值从0到31。在 3个nxf信号之后,M1存储器中的数据流重复一遍,也就是对于M1部 分来说,图4a和图4d是等同的。
一个单码符延迟操作之后,执行C1解码器的第一路操作(参照图3 中的模块34)。将一个C1码字从M2存储器中读到RS解码器的校正子 (syndrome)发生器。执行C1码字的解码和校正并将已校正的码字存储 于M2存储器。
在读写操作的过程中,C1存储体的地址按照下式计算:
bk_add_c1_fp=(ofst_c1_1+count_rsd)mod 218/109
其中ofst_c1_1的值为固定的108,处理计数器count_rsd(未在图5 标出)的输出值确定了CIRC解码器所作处理的个数。
CIRC解码器的双路操作包括以下步骤,其中每执行一个步骤,处理 计数器加1:
a)c1_1解码,校正;
b)为c2_1解码器解交织;
c)c2_1解码,校正;
d)c1_2解码,校正;
e)为c2_2解码器解交织;
f)c2_2解码,校正;
需要将输入的CIRC编码数据的每一个数据码符处理两次。
CIRC解码器的单路操作包括以下步骤:
a)c1_1解码,校正;
b)为c2_1解码器解交织;
c)c2_1解码,校正;
M2存储器的大小为218*32*9。M2有两个半区。图6a所示为存储器 M2中c1_1、c1_2、c2_1和c2_2解码器的起始位置和来自M2存储 器中不同存储体C2码字的组合结构。垂直位置表示存储器的存储体地址 bk_add,其值从0到217,平位置表示码符地址sym_add,其值从0到 31。从28到31的码符地址被分配给了C1码字的奇偶(校验)部分PARP。 上述处理步骤中,存储体地址偏移量ofst_c1_1、ofst_c1_2、ofst_c2_1和 ofst_c2_2的值分别为108、217、0和109,分别表示了存储器中新的一 帧的起始位置。
将新数据从M1存储器载入到M2存储器的存储体108至217(第一 部分)并由c1_1、c2_1解码器进行处理。如果109存储体已经被c1_1 解码器使用,则从存储体0继续操作。c1_2和c2_2解码器处理M2存储 器中第二部分的旧数据。作为备选,可以将起始位置108和217同0和109 进行交换,也就是可以在存储器的另一半开始四个处理序列。
在第一路,每一个连续的解码器周期中,从C1解码器将已校正的C1 字写到相同的存储体地址。将下一个来自M1存储器的C1字写到M2存 储器的下一个连续的较高存储体地址。例如:
a)从M1存储器将C1码字写到M2存储器的存储体地址#108;
b)从M2存储器的存储体地址#108读取这个C1码字,并将其载入C1 解码器;
c)从C1解码器将已校正的C1码字写到M2存储器的存储体地址#108;
d)从M1存储器将C1码字写到M2存储器的存储体地址#109;
e)从M2存储器的存储体地址#109读取这个C1码字,并将其载入C1 解码器;
f)从C1解码器将已校正的C1码字写到M2存储器的存储体地址#109, 依此类推。
在第二路,每一个连续的解码器周期中,从下一个连续的较高存储体 地址读取C1解码器的输入。将已校正的C1码字载入那个相同的存储器 的存储体地址。
C2码字的码符沿着M2存储器空间的对角线存储。在连续的解码周期 里,会改变代表C2码字的数据码符。在存储器的存储体地址0、数据码 符地址0写C2码字的初始数据码符。
第一路处理之后,将已校正的C2码字载入同一个位置(存储器的存 储地址,数据码符地址)。第二路处理之后,将已校正的C2码字载入M3 存储器。
图7详细地说明了M2存储器部分地址值的计算。有利之处在于,计 数器count_b可以用作不同的计数目的,并确定了当前存储体中的一个码 符地址。图2中来自控制器CONTR的计数模式信号con_mod确定了RS 解码器的当前一路和计数器count_b对应的计数模式:
a)count_mode=00 C1解码器,第一路;
b)count_mode=01 C2解码器,第一路;
c)count_mode=10 C1解码器,第二路;
d)count_mode=11 C2解码器,第二路。
在C1处理的过程中,count_b的值从0到32,而在C2处理的过程中, count_b的值从0到28。在这些时间周期中,计数器count_b的时钟不是 字节时钟信号bc,而是码符地址的递增+1sym_add。
当cnt_mod=00,有四个输入的多路复用器mux4在输入1选择存储 体地址bk_add_c1_fp(fp意为第一路)。将一个已解交织的C1码字转换 为C2码字,并执行C2解码器的第一路(图3中的模块35)。将C2码字 写入RS解码器的校正子发生器。完成C2码字的解码和校正并将已校正 的C2码字存储于M2存储器。
图6b所示为来自M2存储器中不同存储体C2码字的组合结构。第一 行所示为存储体地址编号,而第二行为存储器的存储体中对应的码符地 址。在读/写的操作过程中,所需的28个存储体的地址由下式计算得到: bk_add_c2_fp=(ofst_c2_1+count_rsd+4*count_b)mod 218/109,
这里的count_b确定了当前存储体地址中的码符地址。
当cnt_mod=01,多路复用器mux4在输入2选择存储体地址 bk_add_c2_fp。由CIRC解码器双路操作模式开关的开或合(c2_1解码器, 图3中的模块37)确定执行C1解码器或C2解码器的第二路。从M2 存储器读取C1码字并将其载入RS解码器的校正子发生器。完成C1码 字的解码和校正并将已校正的码字存储于M2存储器。在读/写的操作过 程中,存储体的地址由下式计算得到:
bk_add_c1_fp=(ofst_c1_2+count_rsd)mod 218/109。
当cnt_mod=10,多路复用器mux4在输入3选择存储体地址 bk_add_c1_sp(sp意为第二路)。将一个已解交织的C1码字转换为C2码 字,并执行C2解码器的第二路(c2_1解码器,图3中的模块38)。将C2 码字写入RS解码器的校正子发生器。完成C2码字的解码和校正并将已 校正的C2码字存储于M2存储器。在读/写的操作过程中,所需的28个 存储体的地址由下式计算得到: bk_add_c2_sp=(ofst_c2_2+count_rsd+4*count_b)mod 218/109
当cnt_mod=11,多路复用器mux4在输入4选择存储体地址 bk_add_c2_sp。根据CIRC解码器单路或双路,将C2码字也存储于M3 存储器(对应的存储体)。下面符合“C”语法的规则给出了M2和M3 存储器中读/写地址的寻址。
If(single pass){   for(count_b=0;count_b<28 ;++count_b){   bk_add_c2_fp=(ofst_c2_1+count_rsd+4 times accumulated count_b)mod 109;   M3[ofst_m3][count_b]=M2[bk+add_c2_fp][count_b]; } }else if(double pass){   for(count_b=0;count_b<28;++count_b) {   bk_add_c2_sp=(ofst_c2_2+count_rsd+4 times   accumulated count_b)mod 218 ;   M3[ofst m3][count_b]=M2[bk+add_c2_sp][count_b];   }
为了节省乘法器,当前count_b值的增加量是4的倍数,而不是直接 用count_b乘以4。
计数器count_rsd的时钟是下一次处理信号+1proc。在单路操作中, 如果count_rsd>mod 108,则计数器复位,而在双路操作中,如果count_rsd >mod 217,计数器复位。
计数器count_b的第一输出在存储体中发出码符地址SYMADRBK。 SYMADRBK连同mux4的输出一起经地址总线ADRBS被传送出去。该 计数器的另一个输出信号bk_add_m2表示M2中存储体的地址,它在一 个加法器中与该加法器的延迟输出信号相加,其中通过将加法器的输出 信号存储于暂时寄存器TR1而达到输出信号延迟的目的。加法器的输出 信号经一个AND(与)门提供给第二个加法器,这个加法器的第二个输 入信号是count_rsd的输出信号。如果count_rsd的值为“01”或“11”, 则AND门的第二个输入逻辑值为“1”,否则输入逻辑值为“0”。
第二个加法器的输出信号经过mod 218/109级分别被提供给四个加法 器的输入端。这四个加法器中的第一个在其第二输入端接收偏移量 ofst_c1_1=108,并将输出信号送到mux4的输入1。这四个加法器中的 第二、第三和第四个分别在各自的第二输入端接收偏移量ofst_c2_1=0, ofst_c1_2=217 ofst_c2_2=109,并分别将输出信号送到mux4的输入2、 3或4。
如果执行的是CIRC解码器双路操作,在C2解码器的第二路操作完 成之后执行双码符延迟操作(图3中的模块39)。如果执行的是CIRC解 码器单路操作,在C2解码器的第一路操作完成之后执行双码符延迟操作 (图3中的模块39)。
图8给出了CIRC解码器在双码符延迟操作过程中M3存储器部分的 数据流,其中M3存储器包括三个存储体:bk_221、bk_222和bk_223。 在C2解码和校正之后,将数据m2mem从M2存储器载入存储体bk_221。 双码符延迟操作包括两个步骤:
a)读取已延迟的数据并将其发送到输出逻辑out_log;
b)重写M3存储器。
下面的第一个表用于在第一个步骤的过程中生成地址。 count_b     0     1     2     3     4     5     6     7     8     9     10     11 bank     221     221     221     221     223     223     223     223     221     221     221     221 sym add     0     1     6     7     4     5     6     7     2     3     8     9 count_b     12     13     14     15     16     17     18     19     20     21     22     23 bank     223     223     223     223     221     221     221     221     223     223     223     223 svm add     12     13     14     15     4     5     10     11     20     21     22     23
在这个表中:
a)“count_b”计数器的的计数值;
b)“bank”  RAM中“bk”的存储体地址;
c)“sym_add”存储体中的码符地址。
下面的第二个表用于在第二个步骤的过程中生成读/写地址。 “bank_r”是RAM中用于读的“bk”存储体地址,同样,“bank_w”是 RAM中用于写的“bk”存储体地址。 count_b   0   1   2   3   4   5   6   7     8   9   10   11 bank_r   222   222   222   222   221   221   221   221   222   222   222   222 sym_add   4   5   6   7   16   17   22   23     12   13   14   15 bank_w   223   223   223   223   222   222   222   222   223   223   223   223 sym_add   4   5   6   7   4   5    6   7   12   13   14   15 count_b     12     13     14     15     16     17     18     19     20     21     22     23 bank_r     221     221     221     221     222     222     222     222     221     221     221     221 sym_add     18     19     24     25     20     21     22     23     20     21     26     27 bank_w     222     222     222     222     223     223     223     223     222     222     222     222 sym_add     12     13     14     15     20     21     22     23     20     21     22     23
将输出数据OPLOG从“bk_223”提供给输出逻辑“out_log”。在图3 流程图的步骤39之后,更新控制器CONTR的计数器,接着CIRC解码 器为处理来自输入逻辑的下一帧做好准备。
图9所示为传统的CIRC解码器和本发明的双路CIRC解码器中,已 标志字节率FLGBR相对输入错误率IPERRR的比较结果。传统的CIRC 解码器CCIRCDEC的校正结果如实线所示,本发明的CIRC解码器 NCIRCDEC的校正结果如虚线所示。每一条曲线对应着4个不同输入错 误率的测量结果。下面是用于校正的输入错误组合:
a)20个C1码字“cdw”中的突发错误“brst”,每一个C1码字有3个 错误。
在这里及下文所述的错误形式中,“每一个C1码字有的错误”指随机 错误。
b)20个C1码字中的突发错误,每一个C1码字有4个错误。
c)20个C1码字中的突发错误,每一个C1码字有5个错误。
d)20个C1码字中的突发错误,每一个C1码字有6个错误。
e)30个C1码字中的突发错误,每一个C1码字有3个错误。
f)30个C1码字中的突发错误,每一个C1码字有4个错误。
g)30个C1码字中的突发错误,每一个C1码字有5个错误。
h)30个C1码字中的突发错误,每一个C1码字有6个错误。
i)40个C1码字中的突发错误,每一个C1码字有3个错误。
j)40个C1码字中的突发错误,每一个C1码字有4个错误。
k)40个C1码字中的突发错误,每一个C1码字有5个错误。
l)40个C1码字中的突发错误,每一个C1码字有6个错误。
本发明的CIRC解码器和传统的CIRC解码器可以校正14个完全被破 坏的C1码字中的突发错误。很明显,与传统的CIRC解码器相比,本发 明的CIRC解码器可以校正20个C1码字中的突发错误,其中每一个C1 码字有3个或4个错误。在每一个码字有5个和6个错误的情况下,解 码器不能校正突发错误,但是音频数据的已标志字节率FLGBR仍然明显 低于传统的CIRC解码器。
在“30个C1码字”突发错误的情况下,也可以得到较好的性能。本 发明的CIRC解码器可以校正30个C1码字中的突发错误,其中每一个 码字有3个错误,而且随着每个码字中的错误数增加,已标志字节率 FLGBR也比较低。
本发明也可应用于其它的数字存储介质,如视频CD(VCD)和CD -ROM,也可用于与CIRC码类似码的解码。
QQ群二维码
意见反馈