分享
 
 
 

CD光盘的编码与纠错

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

CD光盘的数据结构

本文是《有多少错误可以忍耐?CD与DVD光盘质量深入探讨》专题的一部分

可以说,CD光盘是人类信息化历史上的一个重要的突破。CD最早于1982年10月份诞生,虽然距今已经有20多年的历史,但它的相关设计在今天看来,仍是非常先进的,而且生命力仍然旺盛,即使是在DVD日益盛行的今天,也是重要的数据载体(媒介)。

要想了解CD光盘的纠错原理,就不能不先了解CD光盘的数据结构,确切的说就是CD光盘上数据的编码原理,它几乎囊括了当时最先进的编码技术,DVD与之相比,也并没有本质的变化。

CD光盘最早的产品是CD-Audio,其技术规范被称为红皮书(Red Book),应用于唱片领域,所以即使有了日后的其他扩展规范,也都是以它为基础制定的。

小资料:CD光盘的规范种类

CD光盘的规范被业界以不同颜色的Book来区分,目前共有以下几种:

除此之外,还有两个从黄皮书和绿皮书扩展出来的规范,它们分别是Multisession CD和Photo CD,索尼与飞利浦(CD的发明者)并没有给它们单独规定颜色。

在CD光盘中,数据的最小的可访问存储单位是Block(块),在CD-ROM规范中则称之为Sector(扇区)。在Red Book规范中规定,它们由若干个子块组成,这个子块就是比较难于理解的帧(Frame)。什么叫帧呢?我们可以理解为CD光盘编码的单位。从下面这张CD光盘的数据流程图中,我们可以了解帧与块的关系和概念。

点击查看大图

CD光盘的数据流程,以CD-Audio为例(点击放大)

我们现在可以反向的来理解CD-Audio的数据结构的设计原理。由于CD-Audio分为左右立体声道,每个声道的取样精度为16bit,取样频率为44.1KHz,也就是说每秒取样44100次。CD-Audio规定,每一秒钟所读取的块数为75个,每个块又包含98个帧,那么采样数分摊下来是多少呢?44100÷75÷98=6,也就是说每一帧的取样次数为6次,每次两个声道,每声道的取样精度为16bit,因此一帧的容量就是6×2×16=192bit=24字节。这就是一帧数据为什么是24字节的来历(请注重图中红圈的部分,那就是决定CD光盘纠错的重要部分,也将是下文中着重介绍的内容)。

我们现在知道了CD光盘一个块的容量就是2352字节,这也是所有CD规范的通用块容量。但是,后来出现的CD-ROM规范中则将扇区的内部设计进行了更改,

点击查看大图

CD-ROM的几种扇区格式(点击放大):Mode 1就是我们常用的CD-ROM电脑数据光盘的格式,Mode 2则是CD-I、VCD、CD-ROM XA等光盘的格式(其中Form 1也是电脑数据光盘格式)。其中ECC代表额外的错误纠正码,EDC为错误检测码(CRC校验)

注重,上图只是扇区(块)的格式图,不要将它与上面的CD数据流程图弄混了,尤其是ECC部分,与图1中的“校验”是两码事,这一点我们将在下文会进一步讲到。

CD光盘的编码与流程

CD光盘使用了两种编码来分别保证光盘的刻录质量,一个是从信息的逻辑正确性上保证,一个是从物理刻录的通道脉冲的识别可靠性上保证。它们分别是CIRC编码与EFM调制编码。

CIRC的全称是交叉交错理德-所罗门编码(Cross Interleaved Read-Solomon Code),它的主旨是除了增加二维纠错编码外,还将源数据打散,根据一定的规则进行扰频和交错编码,使数据相互交叉交错,从而进一步提高纠错的能力,因为这样一来用户数据的错误将很难连续起来,有利于提高整体的纠错能力。

点击查看大图

我们现在再来看看上面这张CD数据流程图(点击放大),图中的编号就是CD刻录时的数据生成的过程。

第一步首先生成一个帧的原始数据,24字节,我们可以称之为初始帧(在相关标准中则叫Frame-1,简称F1)

第二步就是加入CIRC编码,一共8个字节,我们可以称之为校验帧(在相关标准中则叫Frame-2,简称F2),总字节数为32个。我们常说的,所谓的C1与C2纠错码就是在这一阶段加进去的,C1与C2的C就是CIRC编码的缩写。

第三步就是加入控制码,一个字节,我们可以称之为数据帧(在相关标准中则叫Frame-3,简称F3),此时帧的容量为33字节。

之后每个F3帧再加入3个字节的同步信息码就成为了最终用于刻录的帧,总容量为36字节。最后经过EFM调制,基本上是以每字节8bit转换成每字节17 bit的方式生成最终的信道脉冲(Channel bit)以控制刻录激光的开与关。

什么是EFM编码呢?就是Eight to Fourteen Modulation的缩写,即8至14调制。为什么会使用这样的编码对源数据进行“修改”呢?这还要从光盘的读取原理说起。

光盘上的凹坑与平面并不直接代表0和1

光盘的读取是根据反射激光的强弱来进行逻辑1与0的分辨,但激光反射功率的强与弱并不直接代表1或0。反射功率强弱的突变点,也就是反射电平的翻转点,将被判定为逻辑值1,长时间的凹坑与平面则都是逻辑值0。

这样一来,假如是连续的1,那么就意味着凹坑与平面要突变多次,会占用更多的刻录空间,从而将影响有效的数据容积(或者说是信息量),而若以电平的高低来代表1和0,假如连续的0或1很长,又很难判定有多少个1和0,0与1的转变也较难分辨,所以必须要加以一定的规则限制。这个规则可以借助某种编码方式来禁止连续的1,并且又能把连续的0的长度限制在某种范围之内以利于识别,这就是所谓的“游程限制(RLL,Run Length Limited)编码规则”。

EFM就是这样的一种专用于信息记录的信道调制编码,它将原始数据重新进行编排,以保证不会有连续的1出现,而连续的0则被控制在2至10个之间,可以表示为RLL(2,10)。也就是说,光盘上的信息中,两个逻辑1之间,最多有连续10个0,最少要有连续两个0。这样,有了相应的规则后,再配合时钟计时信息(每个信道脉冲的时间长度),就可以准确的分辨出数据了。需要指出的是,当8bit数据重新编成14bit数据后,两个14bit代码之间则还要符合RLL(2,10)的要求,因此还要根据相邻14bit代码的情况加入3bit的合并码(Merging bit),从而使最终的编码长度变为17bit。

EFM调制编码示意图,为了保证两个14位编码之间仍符合RLL(2,10)的要求又加入了3位合并码,因此EFM其实是8至17编码

了解了CIRC与EFM在CD数据刻录中的作用,就不难理解与之相关的CD刻录质量标准的含义,下面我们就将深入介绍有关CD光盘的C1与C2编码与纠错标准。而与EFM相关的就是我们经常能听到“高手”们讨论的Jitter,将在本专题后面的章节具体讲述。

QQread.com

推出各大专业服务器评测 linux服务器的安全性能

SUN服务器

HP服务器

DELL服务器

IBM服务器

联想服务器

浪潮服务器

曙光服务器

同方服务器

华硕服务器

宝德服务器

CIRC编码流程

上文已经讲过,每个24字节的原始数据帧都要附加上8字节的校验码以保证帧数据的可靠性,而这个校验码则分为两个步骤来生成,我们来具体看一下。

点击查看大图

CIRC编码流程图(点击放大),图出的W12代表组成一个F1帧的12个字(16bit),n代表F1帧的编号,A、B代表组成一个字的两个字节(8bit)

第一步:交叉交错后生成C2校验码

在介绍CD数据生成过程的时候,我们知道CIRC编码处于F2生成阶段,因此要先导入F1原始数据帧,也就是24字节。要知道,之所以称为CIRC编码,是因为在编码的过程中,源数据有交叉和交错的过程。首先,源数据要按两个字(图中的A、B)一组分成6个大组,偶数组进行两个字节的延迟,从而形成扰频交错编码。

这里要解释一下所谓的延迟,两个字节的延迟意味着延迟两帧。也就是说,当进行交错之后,偶数组已经不再是原来F1帧中的源数据,而是当前帧的前两帧中的偶数组数据(相对于前两帧,当前帧就意味着两个字节的延迟),原始的偶数组将在后两帧的交错编码中出现。另外,从图中可以看出,字的顺序在交错后发生了很大不同,这种前后帧数据交叉并且顺序交错的过程就是扰频交错编码。

此后,扰频交错后生成的新数据进入C2编码器生成Q校验码。Q校验码为4字节,最后生成的新数据为28字节,因此C2也被称为(28,24)编码,意思是指输入24个字节,输出28个字节。

由此可见,C2编码并是针对原始F1帧的数据进行,但为什么要进行如此复杂的交叉交错的编码呢?这是为了保证纠错效率而设计,下文将有更具体的讲述。

第二步:字节依次延迟4帧后生成C1编码

将C2编码完成后,将进行大规模的字节延迟交错编码,执行这个操作的就是延迟线,延迟单位为4字节,也就是说4帧,操作单位是每个字中的单个字节。这个要怎么理解呢?比方说,C2编码后的的第一个字节不延迟,第二个字节则将延后4帧,第三字节将延后8帧……如此反复直至第28个字节,将被延后108帧。也就是说,C2编码后的28个字节,将被有规律的分散到109个帧中(第一个字节延后0帧,加上最后一个字节延后108帧,一共是109帧)。

延迟操作之后则进入了C1编码器,显然此时的数据与原始的F1帧数据差别更大了,C1编码器将在28个字节的基础上再生成4个字节的P校验码,从而完成了建立了F2帧的操作。由于输入28个字节,输出32个字节,因此C1也被称为(32,28)编码。从这个过程中不难看出,C1编码的对象中包含了C2编码(虽然是交错延后的),也承担了对Q校验码进行保护的任务。

现在的F2帧已经与F1帧有了很大不同,假如帧编号为n,那么F2-n帧中只有一个字节来自于F1-n帧。所以,严格的讲,C1、C2并不是对F1帧的校验编码,因为从C2编码开始,对象就已经不再是F1帧中的原始数据。这样(交叉交错)的目的就在于防止一帧中出现连续大量的错误而无法纠正,假如原原本本地按原始F1——C2编码——C1编码的过程生成校验码,将是非常脆弱的,假如这一帧的24个字节中出现连续大量的错误码,仅凭CIRC的设计,纠错能力仍然有限。若将源数据分散到不同的数据帧中,然后再进行校验,将大大提供单个数据帧的纠错能力。理论上即使24个字节原始数据全有问题,但由于每个字节最终分布在间距为4的28个帧(跨度为109帧)中,也有可能被完全修复。显然,假如不进行交叉交错的话,这种可能性是不会存在的。

QQread.com

推出各大专业服务器评测 Linux服务器的安全性能

SUN服务器

HP服务器

DELL服务器

IBM服务器

联想服务器

浪潮服务器

曙光服务器

同方服务器

华硕服务器

宝德服务器

C1与C2解码纠错

好啦,当我们了解了CD光盘的CIRC编码过程之后,就不难理解CD的解码过程,而解码过程就涉及到了纠错,纠错的效果将体现刻录的质量,或者说是驱动器的读盘能力。

点击查看大图

CD光盘中的C1与C2解码流程图(点击放大)

在解码时,其实就是CIRC解码的反过程,原先C2先编码,现在是C1先解码,原先延迟的,解码时不延迟,而原先不延迟的则会根据规则进行延迟以反交叉交错进行数据还原。

从流程图中,我们可以发现,C1、C2解码是必经的过程,而并不像某些文章中所说的,C1应付不了的错误才会交给C2解码。事实上,不管C1解码过程中有没有错误,都要C2解码。从编码过程中,我们可以知道,两者所解码的对象完全不同,这也是为什么C1纠正不了的错误,C2反而能纠正,其实就是这个道理,而并不是说C2的纠错级别比C1高。

言归正传,C1与C2的纠错标准是怎样的呢?这里,业界使用了错误等级来对C1与C2解码进行了规定,可简写为En1和En2,其中E代表Error(错误),n代表出现错误的次数,1代表一次C1解码过程,2代表一次C2解码过程。

假如在一次C1解码中,发现了一个错误字节,即为E11,假如发现了两个错误字节即为E21,假如发现3个或更多的错误字节即为E31。其中,E11与E21都可以在C1阶段纠正,而E31则不行。但是,不要忘了延迟交错的设计,当前帧(F2)的错误字节是分散在跨度为109帧的28个帧中,经过反延迟后,这些错误的字节肯定不会再在同一帧中了,所以通过C2编码仍然有可能被纠正。此时,假如在一次C2解码中,发现了一个错误字节,即为E12,假如发现了两个错误字节即为E22,假如发现了3个或更多的错误字节,即为E32。与E31一样,E32也不能在C2解码过程被纠正,由于C2是最后一个CIRC解码器,所以E32的出现就意味着出现了一个不可修复的错误帧,因此它又称为CU(C-Uncorrectable,不可修复),对于CD来说,CU是绝对要尽量避免出现的。

在CD测试系统中,专门为C1与C2设置了状态标记(Flag),通过它们即可知道当前的纠错状态:

通过4个C1、C2状态标记来表示纠错状态表

QQread.com

推出各大专业服务器评测 Linux服务器的安全性能

SUN服务器

HP服务器

DELL服务器

IBM服务器

联想服务器

浪潮服务器

曙光服务器

同方服务器

华硕服务器

宝德服务器

有关CD光盘纠错的业界标准

在业界标准中,并没有对C2错误水平进行明确规定,而是更多的对C1错误率进行了限定,这是因为假如C2错误肯定会有C1错误,但假如有C1错误,不见得会有C2错误。

在CD-ROM的规范中规定,随机错误的标准是,每10秒钟出现C1解码的错误(E11、E21或E31)帧数不超过3%。我们可以算一下,按一倍速1秒读取75个扇区,每扇区98个帧计算,10秒钟里共有10×75×98=73500个帧,3%就是2205个帧,约为平均一秒220个帧。由于一个坏帧就意味着一个坏块(扇区),因此也可以认为块错误率(BLER,BLock Error Rate)为每秒220个,我们可以理解为1秒钟C1错误的总合(E11+E21+E31)不能超过220个。

对于连续的突发性错误,CD-ROM规范中规定,当在C1解码时出现E31,则视为不可修复的帧错误,连续出现C1不可修复错误的帧要少于7个。

这里需要指出的是,BLER并不区分哪些块是可以被修复的,哪些块是不能被修复的,因为这里仍包括E31这一C1解码器所不能修复的错误。所以低的BLER并不能说明光盘质量的好坏。比如一张光盘的BLER=210,但没有E31错误,而另一张光盘的BLER=50,但全是E31错误,那么完全可以说后者的质量不及前者,虽然它的BLER更低,但有着E32的隐患。

小常识:关于CD光盘的C3解码

在很多相关的文章中,大都提到CD光盘还会有一个C3解码的过程,但这并不确切。

在上文中,我们已经讲到CD光盘有多种规范,而各规范中的扇区格式并不相同,有的有ECC校验码,有的没有ECC校验码,而这个ECC校验就是所谓的C3解码,可见并不是每个CD光盘规格都具备。

严格的说,扇区的ECC校验并不是C3解码,而是被称为RSPC(Reed-Solomon PRodUCt-like Code,理德-所罗门乘积编码)解码。注重,CIRC是给每一帧进行校验的编码,而RSPC是给数据扇区进行校验的编码,两者不要混淆。我们可以这样理解:每个扇区——RSPC编码——分成98个帧——每个帧再进行CIRC编码——生成最后的 刻录数据。

在支持CD-ROM/-R/-RW的驱动器中,也都会有相应的RSPC解码器,由于RSPC的存在,因此即使在C2解码中出现了E32错误,仍有可能在RSPC解码过程中进行修正。这也是为什么CD-ROM(Mode 1和Mode 2-Form 1)是针对计算机数据存储而开发的原因,保证数据文件的准确性远比保证歌曲数据的准确性更重要。假如是普通的CD-Audio播放机,则不会有RSPC解码器(Decoder)。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有