UID601912
威望11
金钱40907
交易诚信度0
主题33
帖子706
注册时间2009-6-11
最后登录2015-4-30
中级会员
  
交易诚信度0
注册时间2009-6-11
|
转贴一份全面的资料,来源:http://www.soomal.com/doc/10100000331.htm
CD光盘的编码与纠错
赵效民 于 05.01.18 14:42:04 | 源自:www.stor-age.com | 版权:转载 | 分类: 音频 编解码 | 属性: 技术 介绍
平均/总评分:00.00/0 | 书签:编码
纠错
光盘
CD光盘的数据结构
可以说,CD光盘是人类信息化历史上的一个重要的突破。CD最早于1982年10月份诞生,虽然距今已经有20多年的历史,但它的相关设计在今天看来,仍是非常先进的,而且生命力仍然旺盛,即使是在DVD日益盛行的今天,也是重要的数据载体(媒介)。
要想了解CD光盘的纠错原理,就不能不先了解CD光盘的数据结构,确切的说就是CD光盘上数据的编码原理,它几乎囊括了当时最先进的编码技术,DVD与之相比,也并没有本质的变化。
CD光盘最早的产品是CD-Audio,其技术规范被称为红皮书(Red Book),应用于唱片领域,所以即使有了日后的其他扩展规范,也都是以它为基础制定的。CD光盘的规范被业界以不同颜色的Book来区分,目前共有以下几种:
点这里,看大图
CD光盘的规范被业界以不同颜色的Book来区分
除此之外,还有两个从黄皮书和绿皮书扩展出来的规范,它们分别是Multisession CD和Photo CD,索尼与飞利浦(CD的发明者)并没有给它们单独规定颜色。
在CD光盘中,数据的最小的可访问存储单位是Block(块),在CD-ROM规范中则称之为Sector(扇区)。在Red Book规范中规定,它们由若干个子块组成,这个子块就是比较难于理解的帧(Frame)。什么叫帧呢?我们可以理解为CD光盘编码的单位。从下面这张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的几种扇区格式
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数据流程图(点击放大),图中的编号就是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
光盘上的凹坑与平面并不直接代表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调制编码示意图
EFM调制编码示意图,为了保证两个14位编码之间仍符合RLL(2,10)的要求又加入了3位合并码,因此EFM其实是8至17编码
了解了CIRC与EFM在CD数据刻录中的作用,就不难理解与之相关的CD刻录质量标准的含义,下面我们就将深入介绍有关CD光盘的C1与C2编码与纠错标准。而与EFM相关的就是我们常常能听到“高手”们讨论的Jitter,将在本专题后面的章节详细讲述。
CIRC编码流程
上文已经讲过,每个24字节的原始数据帧都要附加上8字节的校验码以保证帧数据的可靠性,而这个校验码则分为两个步骤来生成,我们来具体看一下。
点这里,看大图
CIRC编码流程图
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帧)中,也有可能被完全修复。显然,如果不进行交叉交错的话,这种可能性是不会存在的。
C1与C2解码纠错
好啦,当我们了解了CD光盘的CIRC编码过程之后,就不难理解CD的解码过程,而解码过程就涉及到了纠错,纠错的效果将体现刻录的质量,或者说是驱动器的读盘能力。
点这里,看大图
CD光盘中的C1与C2解码流程图
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状态标记来表示纠错状态表
通过4个C1、C2状态标记来表示纠错状态表
有关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光盘还会有一个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)。
本文链接代码,可直接嵌入论坛正文使用
[Doc]Link=00000331[/Doc]
请您给这篇文章评分,当前的平均评分为 00.00
1分
2分
3分
4分
5分
6分
7分
8分
9分
10分
本文一共有 5 条评论 点击查看全部评论 以树形方式查看全部评论
emptybottle
发送短消息
2005.05.11 16:19:49 To楼主: 你讲的不对! 第5楼
羊吃狼
发送短消息
2005.01.30 14:20:42 To楼主: 还蛮专业呀,只是大概明白了,作者是造刻录机的么?不过文章开始提到的Jitter文中没有具体表述呀。 第4楼
ariesrae
发送短消息
2005.01.19 11:19:24 To楼主: 太专业了吧,偶头晕 第3楼
mclaren
发送短消息
2005.01.18 22:56:34 To楼主: 我靠,赵效民,好久无有看见这zxm老家伙了,过的可好? 第2楼
221.197.***.***
2005.01.18 20:53:18 To楼主: �ゅ 第1楼
提示 本贴可以匿名回复 ,您现在正处在潜水状态
回复
验证码 0635 为防止广告机贴垃圾,不得已而为之
表情
插入 粗体 图片 MP3 WMA WMV ASF Flash 链接
正文
最新的文章
音频设备消费提示耳机篇
音频设备消费提示 耳机篇
Edifier 漫步者 R18USB 微型音箱拆解 图集
感受新技术,体验乐之邦聆听一号 以旧换新活?..
谁需要微型音箱?为什么说这玩意有市场前景? ..
HIVI 惠威 H2 微型音箱测评报告
并非每个音乐节都因音乐而生
德国坦克 TerraTec SixPack 5.1 六声道声卡 ?..
Beyond叶世荣:不是真心的音乐我们绝不做
音频设备消费提示 随身数码设备篇
帝盟 Diamond Sonic Impact S70 声卡 图集
最新的音乐话题
萨顶顶最新专辑 -《天籁之声》下载
莫文蔚 -《回蔚》[APE]下载
贺西格 -《白驹》(White Pony)[马头琴][MP3]?..
齐秦 -《出没》综一[APE]下载
谭咏麟 -《Mr.Tam 再度感动》[APE]
变形金刚2: The Score 原声下载
迈克尔杰克逊成长十部曲
奥斯卡最佳歌曲奖或取消
1993年指控迈克尔杰克逊猥褻自己的Evan Chand ..
纵贯线北京演出火爆
最新的音频话题
比乔布斯更执着的疯子:魅族CEO黄章【纯转载?..
USB声卡 乐之邦lilo V JOY遇到的问题
DTSCD的解码插件for Foobar2000[2009.7.12]
foobar2000 的蓝牙插件,支持手机 PDA遥控操?..
Musepack MPC 解码器 For Winamp 0.99
Musepack MPC 解码器 For Audition/Cool Edit ..
Musepack SV8 tools,MPC编码器和工具[2009.4 ..
《DJ混音模拟软件》(Atomix Virtual DJ Profe ..
DVD-Audio 的解码插件For Foobar2000[2009.7. ..
龙卷风网络收音机 3.0.0.3 [2009年06月29日]
Elapsed Time:0.031 Second Now:2009.08.03 15:39:05 Your IP:119.129.161.153
Your OS and Browser Info:Opera/9.64 (Windows NT 5.1; U; Edition IBIS; zh-cn) Presto/2.1.1
Counter:3130647 |
|