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编码与纠错标准。
电报的编码
电报是欧美人发明的,早期在发送电报时,都会使用莫尔斯编码,将字母或数字编码,然后利用电报机发送,而莫尔斯编码就是用点和划的组合来表示一个字符。
之后,电报传到了入了天朝,而中国写的是汉字,不是英文字母,所以需要另外一套编码。
1873年 -中国最早的汉字电码
由于汉字由许多部首组成,结构复杂,字型繁多,一个字一个"面孔",拍电报不直接用电码来表示。因此,采用由四个阿拉伯数字代表一个汉字的方法,简称"四码电报", 中国汉字多达6万字,常用的汉字只有一万个, 所以用10的4次方(10,000)来表示("四码电报"的来历)。1873年,法国驻华人员威基杰(S·A·Viguer)参照《康熙字典》的部首排列方法,挑选了常用汉字6800多个,编成了第一部汉字电码本,名为《电报新书》。后由我国的郑观应将其改编成为《中国电报新编》。这是中国最早的汉字电码本。
所以说,我们发送一封中文电报,需要经过2次编码,先将中文编成四码,然后再将每个数字编成对应的莫尔斯编码。最后通过电建的敲击发送给对方。
在发报时,发报员如果使连接发报机与接收机的电路接通时间长一些,接收机就会产生一声“嗒”,如果接通时间稍微短一些,接收机就会产生一生“嘀”,这样交替着发送长短信号(分别用”━ “,”.“),几个信号连在一起就可以代表一个字母和符号,当然,信号和信号间,字母和字母间也要有一定时间间隔,否则就会使接收方无法辨认,混在一起。
以下就是莫尔斯对字母和数字用“嘀”、“嗒”的表示方法,也就是传说中的莫尔斯码:
A ·━
B ━··
C ━·━·
D ━··
E ·
F ··━·
G ━ ━ ·
H ····
I ··
J ·━ ━ ━
K ━·━
L ·━··
M ━ ━
N ━ ·
O ━ ━ ━
P ·━ ━·
Q ━ ━ ·━
R ·━·
S ···
T ━
U ··━
V ···━
W ·━ ━
X ━··━
Y ━··━
Z ━ ━··
1 ·━ ━ ━ ━
2 ··━ ━ ━
3 ···━ ━
4 ····━
5 ·····
6 ━····
7 ━ ━···
8 ━ ━ ━··
9 ━ ━ ━ ━·
0 ━ ━ ━ ━ ━
? ··━ ━··
/ ━··━·
( ) ━·━ ━ ·━
- ━····━
。 ·━·━·━
莫尔斯码的余光
在二战后,计算机、有线电话、手提电话、互联网先后走进了人们的生活,电报逐渐退出了历史舞台。在计算机和数字通信中,无论是眩目电脑游戏画面,还是悦耳动听的音乐,背后都是由一个个“1”,“0”的二进制代码进行计算和传输。有人曾设想在计算机中继续使用莫尔斯码,将电报中的长和短分别换成“1”,“0”,但不幸的是,莫尔斯码中代表每一个字母和数字的代码长度会不同,有的只有一个,有的却长达六个,这种方式不方便于计算机的运算,于是设计出了一种新的标准——ASCII码:
所有的大小写字母、数字、符号都统一使用八位二进制数字(两位十六进制数字)表示。
到1999年,莫尔斯码不再继续作为一种国际标准使用,正式退出了历史舞台。不过很多领域中,它仍然发挥着余热。
最著名的例子要数SOS求救信号了,在莫尔斯码中,字母S是三声短,字母O是三声长,从二十世纪初到今日,“嘀嘀嘀, 嗒嗒嗒, 嘀嘀嘀”一直作为作为国际通用的求救信号。
在电影《尼罗河上的惨案》中,主人公大侦探波洛发现身边有一条眼镜蛇时,不敢大声求救,而轻轻地敲击墙壁,敲出类似于“嘀嘀嘀,嗒嗒嗒,嘀嘀嘀”的声音来通知隔壁的上校军官来救他。