刻录品质探幽(二):DVD光盘的编码
本文转载自“存储时代”,文章内容不代表本站观点,仅供参考。
DVD光盘于1995年设计定型,与CD相比,在设计之初就考虑得很周全,不会再出现不同的扇区结构设计,不同种类的DVD光盘的主要区别体现在逻辑架构的设计上,至于底层的扇区规格则是一样的。
DVD光盘的数据结构与流程(点击放大)
在DVD光盘中,寻址的单位也是一个数据块,而这个块由于包含了ECC数据,因此又被称为ECC块(ECCB,ECC Block)。DVD所采用的ECC编码与CD-ROM Mode 1、Mode 2-Form 1一样,都是RSPC编码,因此也称为RSPC数据块。
从上图中可以发现,DVD的数据流程要比CD简单不少,但内部校验(PI,Parity of Inner-code)与外部校验码(PO,Parity of Outer-code)则是CD光盘中所没有的。同样,由于没有CIRC的校验数据,因此也就不存在C1、C2编码,因此如果哪天听人说什么DVD光盘的C1、C2错误,那就当个笑话听吧。
DVD的一个ECCB包含16个扇区,在进行刻录时,首先要准备一个ECCB的数据(包括RSPC编码),然后将ECC数据与用户数据分割为16个扇区,再经过符合RLL(2,10)标准的EFMplus(8至16编码)调制,形成的信道脉冲进行刻录。<
DVD的数据以一个RSPC数据块(ECCB)为存储单位,在上文中,我们大概知道了这个数据块由16个扇区的数据+PI/PO校验码组成,在下面这张图中我们能清楚的看到一个ECCB中的数据结构。
一个RSPC数据块的内部结构(点击放大),字节以行、列(也称字节,Byte)为坐标编号(Br,c),如B192,170就表示该字节的位置是第192行/170列,而不是指第192170个字节
从图中可以看出一个ECCB的实际容量为37856字节,而不是我们常说的32KB(32768字节),后者只是真正的用户数据量。那么,它们又是怎么分布到16个扇区中呢?
ECCB分割成16个扇区示意图(点击放大)
首先,ECCB中的数据区为192行,每行172个字节(列),而每一行的172字节横向生成一10字节的PI校验码,每一列的192字节纵向则生成一个16字节的PO校验码,最后再给每一行的PO校验码生成10字节的PI校验码,从而构成完整的ECCB。
此时的ECCB共有208行/182列,分成16个扇区,则每个扇区为13行/182列,那么是不是前15个扇区为数据+相应的PI校验码,最后一个扇区就是PO和相关的PI数据呢?当然不是,在生成刻录扇区时,16行PO和相应PI码分交错分布于16个扇区之中,具体构成如下图所示。
16个扇区的具体构成,灰蓝色为PI码
浅绿色为PO码(点击放大)
从图中可以看出,16行的PO码和相应的PI码被依次分布在16个扇区中,也就是说ECCB的校验数据是分散在16个扇区中的。
由于PI与PO校验码是DVD在读取时的主要纠错手段,因此在PI与PO校验中发现错误的次数与程度就可以被用来评价DVD的刻录质量,而业界也对此做出了相应的规定。<
与CD-ROM只规定了C1错误标准一样,DVD其实也只规定了PI错误标准,而没有PO错误标准,原因很简单,PO编码其实也在PI的保护之下,因此只要保证PI的错误率不超过一定的水平就可以了。
另外,在DVD的相关规范中,也对不可修复的错误进行了明确的界定,并立下了相关的标准。
在DVD-ROM规范中规定:ECCB中某一行如果有一个或更多的字节出现错误,则意味着出现一个PI错误(PIE,PI Error),连续8个ECCB的PI错误不能超过280个。我们可以计算一个,一个ECCB共有208行,8个ECCB则1664行,允许280个PI错误(也就是280行出现错误)则表示错误率为16.8%。
DVD-R/RW的规定与DVD-ROM一样。
在DVD+R/RW规范中则有了更为详细的规定:ECCB中某一行如果有一个或更多的字节出现错误,则意味着出现一个PI错误,当一行中的错误字节超过5个时,此时的PI错误则称为PI-uncorrectable(不可修复的PI错误);连续8个ECCB的PI错误不能超过280个(16.8%);一个ECCB中的PI-uncorrectable不能超过4个(1.92%)。
在DVD光盘规范中,DVD+R/RW对PI错误进行了最详细的规定(点击放大)
现在不少相关测试软件中都以DVD+R/RW的规范来制定测试标准。虽然DVD-ROM与DVD-/RW没有定义PI-uncorrectable(在某些软件中定义为PI Failure,简称PIF),但由于它们都是相兼容的设计,所以DVD+R/RW的相关规定也基本适用于其他两个规范。那么,有没有可能出现PO-uncorrectable(POF)呢?
在一些DVD测试设备的技术文档中笔者也发现了对POF的一些规定,由于DVD想先进行PI纠错,才进行PO纠错,因此PI被认为是第一层纠错,PO则是第二层纠错,如果出现PIF之后又出现POF,那么意味着该ECCB(注意,不是扇区)是不可修复的(理论上,PO能修复4个字节的错误,但即使有超过5行的PIF,也并不意味着错误的字节会在垂直方向上排成一列,因此PIF即使超出标准很多,仍有可能被PO纠正,不过为了保险起见,一个ECCB中的PIF行数不能超过4个),就像CD光盘上的E32错误一样,也就是说POF的数值应该是0,只要满足这个条件,PO错误(POE,PO Error)就无所谓了。因此,在一些测试软件中,只有PIE和PIF的测试,最多再加上POF的测试,而没有POE的测试。