最新资讯
蓝光光盘(Blu-ray Disc)的编码
【作者】:南昌光盘制作 【添加时间】:2007-8-4 9:33:47
信息技术(尤其是影音和多媒体技术)的发展,希望数据存储能够随之提供越来越大的存储容量和越来越高的数据传输率。光存储技术作为数据存储技术的一个分支,也从第一代的CD技术、第二代的DVD技术发展到第三代的蓝光光盘技术。CD技术和DVD技术已经得到了广泛的介绍,本文将介绍蓝光光盘中采用的编码技术,包括调制码和纠错码;同时由于光盘上的数据组织与编码直接相关,因此一并介绍。实际上,蓝光光盘的标准还没有得到各大生产厂商和节目提供商的统一承认,目前已经提出的蓝光光盘标准就至少有4种:l)以 Sony和Philips领头9C联盟提出的Blu-ray Disc标准;2)Toshiba和NEC领头的DVD Forum提出的AOD(Advanced Optical Disc)标准;3)台湾工研院光电所提出的HD-DVD标准,包括两种规格,分别类似于Blu-ray Disc标准和AOD标准;4)Plasmon公司提出的UDO(Ultra Density Optical)标准,应用于磁光盘上。其中 Blu-ray Disc较早提出,本文的介绍均以Blu-ray Disc为准;下文中的“蓝光光盘”,除特殊标明外,均指 Blu-ray Disc标准。
1.Blu-ray Disc的基本技术指标光存储技术的每一次革新都可以说是由更高要求的音频/视频需求所推动的:CD技术的诞生满足了人们对高品质音乐的要求,DVD技术满足了对高品质视频的要求;而Sony与Philips等提出蓝光光盘的目的就是为了满足实时的HDTV数字视频录像(DVR:Digital Video Recording)的要求。根据HDTV的规格,容纳一部完整的HDTV影片(按2小时计算),需要光盘的存储容量达到至少22GB,数据传输率达到24~35Mbps;如果还需要在播放一部影片的同时记录另外一部影片,则需要存储容量至少达到40GB,数据传输率达到80Mbps。为了在一张120mm的光盘上达到所需的存储容量和数据传输率,Blu-ray Disc采用了以下几项主要的关键技术(表 1中列出了CD、DVD和Blue-ray具体技术指标的对比):
表1 CD、DVD和Blue-ray技术
1)缩短激光波长至405nrn和增大物镜数值孔径至0.85,这两项指标的变化直接减小了聚焦后的光点直径(与成正比),提高了光学系统的分辨能力,从而可以缩小记录点的直径和道间距;在同样直径的盘片上可以记录更多的数据。但是,物镜数值孔径的增大也减小了光学系统的容差:焦深降低(与成正比),提高了对伺服系统的要求;对盘片的倾斜更敏感(与成正比),要求采用可消除倾斜误差的力矩器或者采用较薄的读出层结构;对盘片厚度均匀度要求更高(与成正比),需要采用更精密的盘片制造设备和更高的工艺。2)在Blu-ray Disc系统中,为了避免采用更复杂的执行机构,问时保证对盘片翘曲误差的容差,只能将盘基厚度变为1.1mm,记录层与保护层厚度变为0.1 mm;激光不再是从盘基一侧入射,而是直接从透明保护层一侧入射;问时各材料层的排列方式也与传统的CD-R、DVD-R等正好相反。盘的结构如图1所示。
图1 Blu-ray Disc的盘片结构
3)Blu-ray Disc系统采用了新的调制码:对可写格式盘采用I7PP码;对只读格式盘采用EFMCC码。这是由于蓝光光盘首先提出的是可写格式(RW)的规范,采用的材料为相变材料;后来提出的只读格式(ROM)须采用深紫外波长的激光器制作母盘。这两种不同情况下的信道特征相差较大,采用同一种调制码无法充分挖掘系统的潜力,因此设计了不同的调制码。这两种编码的效率都有所提高,而且提供了更好的低频分量控制特性。 Blu-ray Disc系统还采用了新的纠错码——Picket code,与DVD系统中采用的RS-PC码相比较,在数据冗余率基本相同的条件下,纠错能力更强。下面将介绍 Blu-ray Disc系统中所采用的编码,包括纠错码Picket code和调制码17PP及EFMCC。需要说明的是,笔者在写作本文时,并未获得完整的Blu-ray Disc规范,而是主要参考了T. Narahara、W. Coene等文献及专利US6496541B1、WO00/07300、US6469645;因此本文介绍的内容可能会与实际的 Blu-ray Disc规范略有差别。
2.Blu-ray Disc的纠错码——Picket code由于用户数据首先经过纠错编码,再经过调制编码才记录到光盘上,这个过程中数据要经过多次变换与交错,实际记录到盘片上的数据与原始的用户数据在内容、顺序和位置都变化很大,且容易使人迷惑。因此,本文从纠错码开始至调制码介绍,其中注重介绍用户数据的变换过程,希望能够给读者一个较清晰的数据变换流程。纠错系统的主要作用就是消除数据中的随机错误和突发错误。随机错误长度较短,在盘片上的分布较为均匀。而突发错误一般由于灰尘、油污、指纹、划伤等引起,错误长度较长,且容易形成集中分布。而与DVD系统相比,Blu-ray Disc的光点更小,而且读取层的厚度也有减小,造成光束落在盘片表面的光斑大为减小(直径约0.14mm,面积约0.015mm2),与DVD系统光斑(直径约0.50mm,面积约0.20 mm2)相对比,更容易受到盘片缺陷的影响,更容易发生突发错误。因此,需要采用更为强有力的纠错系统。下面首先介绍Picket code的编码过程,再介绍Picket code的性能。2.1 Picket code的编码过程在分析DVD系统采用的RS-PC纠错码的实际作用后发现,RS-PC码中水平校验码的主要作用是纠正随机错误和指出突发错误的位置,垂直校验码的作用就是根据已标记的错误位置纠正突发错误;水平校验码的纠正能力略有剩余,而垂直校验码的纠错任务较重。Blu-ray Disc系统中发展了这种纠错方法,取消了水平校验码,代之以垂直方向上的LDS(Long Distance Subcode)和BIS(Burst Indicator Subcode)码。BIS码具有高度冗余的校验码,纠错能力非常强,用来放置重要的地址和控制信息;而BIS纠错过程得到的错误位置作为“警哨”(Picket)”,指示冗余能力较低的LDS码更好的纠正数据中的错误。这种纠错方案就被称为“警哨码(Picket code )”。Blu-ray Disc系统中,数据按64KB为一组进行记录。在数据编码的过程中,需要经过以下阶段:数据帧(Data Frame)、数据扇区(Data Sector)、 ECC扇区 (ECC Sector)、 ECC簇(ECC Cluster)、BIS簇(BIS Cluster)、物理簇(Physical Cluster)和记录帧 (Recording Frame)。图2 展示了 Picket code最后形成的物理簇,下面逐步介绍从用户数据到物理簇的编码过程。2.1.1:数据帧的构成
图2 Picket code的物理簇
一个数据帧由2052字节组成,其中包括2048字节的用户数据,编号为: d0, d1…d2047和4字节的检错码(EDC:Error Detection Code),编号为e2048,e2049,e2050,e2051 。这4字节的检错码是对前面的2048字节用户数据计算得到的:将这2052字节数据看作连续的比特流,以用户数据的最高位开始,以EDC码的最低位结束;最高位记做,最低位记做。则EDC码的各比特bi, i=0.1…31可由公式(1)计算(参考图3):
图3 数据帧的构成根据二进制运算的性质,这样构成的码字多项式c(x)=l (x)+EDC(x) 对G(x)取模正好为0。而在译码端,假定接受到的比特流为b16415,…, e2051,A构成一个新的多项式,并对取模,如果结果为0,则说明传输过程中没有错误发生;如果不为0,则说明有错误发生。这就是检错码的作用。2.1.2:数据扇区的构成一个数据扇区由两个数据帧(A,B)构成。将两个数据帧的字节逐列填入一个19列256行的矩阵中,数据帧A的字节d0,A,… e2051, A, 填充完毕后继续填充数据帧B的字节d0,B,… e2051, B, 最后构成一个4104字节的数据扇区。参考图4。
图4 数据扇区
2.l.3:ECC扇区的构成在一个数据扇区的下部按照一定的纠错规律添加校验码,就构成了一个ECC扇区。首先要对数据扇区中的字节进行一次新的编号,每一列的字节接从上到下的顺序编号为:dl,0,dl,1,…,dl,215,其中l=0,…,18为列号。注意这里的编号方式是列号在前,行号在后与常见的矩阵元素编号正好相反。编号完成后,对每一列的数据按照(248,216,33)长距离RS码计算出32字节的校验码PL,216, PL,217, …,PL,247并附加在原数据列之后;这样每列的248字节构成一个LDS码字,19个LDS码字构成一个ECC扇区 (l9列×248行=4712字节)。参考图5。
图5 ECC扇区(重编号和添加校验字节)
这里使用的长距RS码定义在有限域上。域的所有非0元素由本原多项式的一个本原元产生。中的码元长度为1字节,其8比特由以为基底的多项式确定,其中根表示为。一个LDS码字可以用向量表示;同样也可以用一个最高为247阶的多项式表示,记为(某些项的系数可能为0);其中的高阶部分对应干码字中的数据字节,低阶部分对应于码字中的校验字节,则该码字是系统的。按照RS码的原理,这样构成的一个多项式应为生成多项式(公式2)的倍式:
2.1.4:ECC簇的构成在完成 ECC扇区的构造后,16个连续的 ECC组合成一个152列496行的ECC簇,共75392字节。整个构造过程比较复杂,需要经过几次合并、交错、重编号等操作;下面参考图6作详细的说明。在图6-A中,16个连续的ECC扇区(19列×248行=4712字节)排在一起。在图6-B中,2个连续的ECC扇区(例如扇区0和扇区1)合并成块0(38列×248行=9424字节);16个ECC扇区则合并成8个块。(每一块的偶数列都用阴影标识,以利于分辨后面的操作效果。)在图6-C中,将每块的连续2列(例如块0的第0列和第1列)作一次交错合并,按照列的方向重新安放数据,即首先放置原块第0列第0行的字节,再在列方向上的下一个位置放置原块的1列第0行的字节,再放置原块第0列第1行的字节,如此填满1列(496行);再对剩下的列作类似操作;这样最后形成一个新的块(19列×496行=9424字节)。参考图6-F所示新块0与原块0字节间的对应关系。在图6-D中,每2个连续的块再次会并,形成4个38列496行的新块(这样合并的目的是在块之间插入BIS码)。对这些字节按照行的顺序进行一次重新编号,即为C0,…, C75391。在图6-E中,对ECC簇中的数据进行一次移位交错。交错规则是每两行一起,依次左移3列;从左侧移出的数据添加到本行右侧空出的对应位置。即:第0行和第1行无需移动;第2行和第3行向左移动3列,因此数据C307、C459分别称为新的第2行和第3行的行首,而数据C304、C305、C306和C456、C457、C458依序填充在新行的右侧。其他行类似处理。在进行移位交错后,还需要进行一次新的编号为d0,…d75391,按行优先的顺序编号为;编号方祛类似于图6-D(参考图10)。至此,一个ECC簇就构造完成了,下面介绍如何构成一个BIS簇,以及如何由一个ECC簇和一个BIS簇构成一个物理簇和记录帧。2.1.5:BIS块的构成与ECC簇的构成类似,BIS簇的构成也需要经过添加校验码、交错、重编号等多个步骤。BIS簇中放置的是重要的地址和控制数据,包括逻辑地址和控制数据(18字节/数据帧×32数据帧=576字节),以及物理地址(9字节/物理扇区×16物理扇区=144字节),共720字节。这些数据排列成30列X 24行的矩阵,并编号为b0,0,…,b23,29
图6 ECC簇的构成
(下标中列号在前行号在后);再对每一列的30字节数据按RS(62,30,33)码计算出32字节的校验码,并附加在本数据列的下方,这样每列的62字节构成一个BIS码字,24个BIS码字构成一个BIS块(24列×62行=1488字节)。参考图7。
图7 BIS块(包括24个BIS码字)
这里使用的RS码定义在有限域GF(28)上。 GF(28)域的所有非0元素由本原多项式P(X)=X8+X4+X3+X2+1的一个本原元α产生。GF(28)中的码元长度为1字节,其8比特由以(α7,α6,α5,α4,α3,α2,α1,α)为基底的多项式确定,其中根α表示为α=00000010。一个BIS码字可以用向量bis=(bc,,o,...bc,j,...,bc,29, pbc,61)表示,同样也可以用一个最高为61阶的多项式表示,记为bis(x)(某些项的系数可能为0);其中的高阶部分对应于码字中的数据字节,低阶部分对应于码字中的校验字节,则该码字是系统的。按照RS码的原理,这样构成的一个多项式lds(x)应为生成多项式g(x)。(公式3)的倍式:
2.1.6:BIS簇的构成BIS块中的1488字节需要经过一次交错,排列到一个3列×496行的矩阵中;所得的矩阵就是BIS簇。交错规则可以用一个数学表达示来表示。参考图2中,一个物理簇被划分为16个物理扇区,每个物理扇区为(38×4+3=)155列×31行=4805字节。只考虑其中的BIS数据,如果将物理扇区编号为 S=0,…,15,物理扇区中的行编号为r=0,A,30,物理扇区中的BIS数据列编号为e=0,…,2,那么对于图7中所示BIS块中的字节组bn,c将被交错排列到以下位置:物理扇区号:s={[(N div2)+8-(Cdiv3)]mod8}+8×(Nmod2)物理扇区内的行号:r=N div2物理扇区内的列号:e=[C+(N div2)]mod3上面的表达式中,div表示取整运算,如5div2=2;mod表示取模运算,如5mod3=2。因此,图7中的b0,0。经过交错后将位于第0物理扇区中第0行第0列(注意这里的列号是指BIS数据列);而b15,2将位于第15物理岗扇中第7行第0列。实际上,这里的交错规则是将BIS块中的24列划分成8组(每组3字节),这样的一个3字节组将被放置到BIS簇中的特定行。BIS块中的偶数行(行号0.,2…,60)被映射到BIS簇的物理扇区0到7中;而BIS块中的奇数行(行号1,3,...,61)被映射到BIS簇的物理扇区8到15中。以下以BIS块偶数行的交错过程为例进行说明,奇数行的交错类似。每行的8个3字节组被安放在这8个连续物理扇区(扇区号0,1,...,7)的同一行中,安放的顺序与扇区的编号相反,即:BIS块中N=0行的8组按顺序安放在物理申区0,7,6,5,...,2,l的第0行(即,r=0);BIS块字N=4行的8组按顺序安放在物理扇区2,1,0,7...,4,3的第0行(即,r=2);如此循环....直到N=60,被安放在物理扇区6,5,4,3...,0,7的第30行(即r=30)。
图8 BIS簇的构成
这些行安放完成后,还需要进行一次循环移位,每行有移(r mod3)个位置。因此,第0行右移0个位置,而第1行有移1个位置,第2行右移2个位置,......,第30行右移0个位置。这样就构造了一个BIS簇。图8显示了BIS簇中物理扇区0~7的各字节在BIS块中的位置对应关系。可以将图中列出的对应关系与上述对应规则及交错规则的数学表达式进行对照。2.1.7:物理簇的构成64KB的数据和相应的地址、控制数据分别经过LDS和BIS编码,构成一个ECC簇和一个BIS簇,再经过一次交叉合并,与同步位一起形成一个物理簇。参考图2。一个ECC簇为152列×496行,按每连续的38列划分为一组,一共4组。一个BIS簇为3列×496行,将这3列分别插入到ECC簇的组与组之间;这样就构成了一个 155列 X 496行的矩阵;再加上开头部分的同步位,就构成了一个物理簇。物理簇中的每一行(155字节+同步位)称为一个记录帧;每连续的31行构成一个物理扇区。因此1个物理簇包括16个物理扇区,或496个记录帧。记录时逐帧进行,由于用户数据等都是按列排列的,这样就可以将数据进行分散,以减小突发错误的影响。一个2kB的数据帧经过数次编码和交错后,由9.5个LDS码字组成,其各字节被分散在物理簇不同的行和列中。读出时可以在确定的位置读取到相应的LDS码字,从而组成需要的帧数据。第i个LDS码字(0≤i≤300)的第j字节0≤j≤247即为物理簇的字节da(参考图2),其中α=[(imod2)+2﹡j]﹡152 +{[(idiv2)-3﹡j]mod152}。例如对第0个数据帧,编码后成为第0个数据扇区的第0~8.5个LDS码字,为了读出该数据帧,需要读出这些码字;以第1个LDS码字的第10字节为例,根据上面给出的计算规则,即为物理簇的字节d3162。实际上,每个LDS码字的第0字节总是在物理簇的第0行和第1行,在确定了第0字节的位置后,可以根据每次“行号+2、列号-3”的规则读取下一个字节;这分别对应于ECC簇形成过程中的两列合并(图6-C)和左移3位(图6-E)操作。图9显示了读出规则的实际效果。
图9 LDS码字读出
图10 Picket code编码过程
图10显示了整个编码过程的总结。读者可以与前述编码过程进行对照。2.2 Picket code的性能与DVD系统中采用的RS-PC码相比较, Picket code由于采用了新的编码方法:冗余的校验数据全部放置在表2 RS-PC与Picket code比较列方向上,由BIS的高度冗余和纠错能力保证重要的地址和控制数据能正确读出,并指示可能的错误位置;LDS码根据已指示的纠错位置进行纠错。因此,Picket code的纠错能力大大提高。
表2是RS-PC和Picket code纠错能力的比较。从表2中可以看出,由于Blue-ray将所有的校验码都安排在列方向上,与DVD中行与列方向上都有校验码相比,列方向上的校验码实际增加了1倍;同时,DVD中簇大小为32kB,而Blue-ray中簇大小为64kB,在同等ECC冗余度的情况下,一个簇中可以得到多1倍的校验码。将这两者结合起来,即可以增大数据的交错长度和列方向上纠错码的最小距离,这使得纠错码纠突发错误的能力提高了3~4倍。例如若不考虑随机错误,在Blue-ray中,Picket code可以纠正16~33个300个ECCE字节长的突发错误。而DVD 中的RS—PC码智能纠正5~9个。并且,最大可纠突发错误长度也提高到9920ECC 字节。同时,Picket code与RS—PC码纠随机错误的能力也相差无几。Picket code的纠错能力还可以用一个实验来说明。一张落满灰尘的光盘的原始(字节)误码率为4×10-3,其中包括各种长度的突发错误。实验结果发现,BIS码可以正确地获取地址信息,并能可靠地指示出错误位置,纠错后的误码率低于10-25。根据BIS码指出的错误位置,LDS码纠错后的误码率降低到1.5×10-18。与此对照,若采用 RS—PC码,则纠错后的误码率大约为5.7×10--7。由此可见Picket code确实具有强大的纠错能力。以上详细介绍Blue-ray系统中采用Picket code纠错码,包括纠错编码实现过程和纠错能力。下面将介绍Blue-ray系统中采用的调制编码。
1.Blu-ray Disc的基本技术指标光存储技术的每一次革新都可以说是由更高要求的音频/视频需求所推动的:CD技术的诞生满足了人们对高品质音乐的要求,DVD技术满足了对高品质视频的要求;而Sony与Philips等提出蓝光光盘的目的就是为了满足实时的HDTV数字视频录像(DVR:Digital Video Recording)的要求。根据HDTV的规格,容纳一部完整的HDTV影片(按2小时计算),需要光盘的存储容量达到至少22GB,数据传输率达到24~35Mbps;如果还需要在播放一部影片的同时记录另外一部影片,则需要存储容量至少达到40GB,数据传输率达到80Mbps。为了在一张120mm的光盘上达到所需的存储容量和数据传输率,Blu-ray Disc采用了以下几项主要的关键技术(表 1中列出了CD、DVD和Blue-ray具体技术指标的对比):
表1 CD、DVD和Blue-ray技术
1)缩短激光波长至405nrn和增大物镜数值孔径至0.85,这两项指标的变化直接减小了聚焦后的光点直径(与成正比),提高了光学系统的分辨能力,从而可以缩小记录点的直径和道间距;在同样直径的盘片上可以记录更多的数据。但是,物镜数值孔径的增大也减小了光学系统的容差:焦深降低(与成正比),提高了对伺服系统的要求;对盘片的倾斜更敏感(与成正比),要求采用可消除倾斜误差的力矩器或者采用较薄的读出层结构;对盘片厚度均匀度要求更高(与成正比),需要采用更精密的盘片制造设备和更高的工艺。2)在Blu-ray Disc系统中,为了避免采用更复杂的执行机构,问时保证对盘片翘曲误差的容差,只能将盘基厚度变为1.1mm,记录层与保护层厚度变为0.1 mm;激光不再是从盘基一侧入射,而是直接从透明保护层一侧入射;问时各材料层的排列方式也与传统的CD-R、DVD-R等正好相反。盘的结构如图1所示。
图1 Blu-ray Disc的盘片结构
3)Blu-ray Disc系统采用了新的调制码:对可写格式盘采用I7PP码;对只读格式盘采用EFMCC码。这是由于蓝光光盘首先提出的是可写格式(RW)的规范,采用的材料为相变材料;后来提出的只读格式(ROM)须采用深紫外波长的激光器制作母盘。这两种不同情况下的信道特征相差较大,采用同一种调制码无法充分挖掘系统的潜力,因此设计了不同的调制码。这两种编码的效率都有所提高,而且提供了更好的低频分量控制特性。 Blu-ray Disc系统还采用了新的纠错码——Picket code,与DVD系统中采用的RS-PC码相比较,在数据冗余率基本相同的条件下,纠错能力更强。下面将介绍 Blu-ray Disc系统中所采用的编码,包括纠错码Picket code和调制码17PP及EFMCC。需要说明的是,笔者在写作本文时,并未获得完整的Blu-ray Disc规范,而是主要参考了T. Narahara、W. Coene等文献及专利US6496541B1、WO00/07300、US6469645;因此本文介绍的内容可能会与实际的 Blu-ray Disc规范略有差别。
2.Blu-ray Disc的纠错码——Picket code由于用户数据首先经过纠错编码,再经过调制编码才记录到光盘上,这个过程中数据要经过多次变换与交错,实际记录到盘片上的数据与原始的用户数据在内容、顺序和位置都变化很大,且容易使人迷惑。因此,本文从纠错码开始至调制码介绍,其中注重介绍用户数据的变换过程,希望能够给读者一个较清晰的数据变换流程。纠错系统的主要作用就是消除数据中的随机错误和突发错误。随机错误长度较短,在盘片上的分布较为均匀。而突发错误一般由于灰尘、油污、指纹、划伤等引起,错误长度较长,且容易形成集中分布。而与DVD系统相比,Blu-ray Disc的光点更小,而且读取层的厚度也有减小,造成光束落在盘片表面的光斑大为减小(直径约0.14mm,面积约0.015mm2),与DVD系统光斑(直径约0.50mm,面积约0.20 mm2)相对比,更容易受到盘片缺陷的影响,更容易发生突发错误。因此,需要采用更为强有力的纠错系统。下面首先介绍Picket code的编码过程,再介绍Picket code的性能。2.1 Picket code的编码过程在分析DVD系统采用的RS-PC纠错码的实际作用后发现,RS-PC码中水平校验码的主要作用是纠正随机错误和指出突发错误的位置,垂直校验码的作用就是根据已标记的错误位置纠正突发错误;水平校验码的纠正能力略有剩余,而垂直校验码的纠错任务较重。Blu-ray Disc系统中发展了这种纠错方法,取消了水平校验码,代之以垂直方向上的LDS(Long Distance Subcode)和BIS(Burst Indicator Subcode)码。BIS码具有高度冗余的校验码,纠错能力非常强,用来放置重要的地址和控制信息;而BIS纠错过程得到的错误位置作为“警哨”(Picket)”,指示冗余能力较低的LDS码更好的纠正数据中的错误。这种纠错方案就被称为“警哨码(Picket code )”。Blu-ray Disc系统中,数据按64KB为一组进行记录。在数据编码的过程中,需要经过以下阶段:数据帧(Data Frame)、数据扇区(Data Sector)、 ECC扇区 (ECC Sector)、 ECC簇(ECC Cluster)、BIS簇(BIS Cluster)、物理簇(Physical Cluster)和记录帧 (Recording Frame)。图2 展示了 Picket code最后形成的物理簇,下面逐步介绍从用户数据到物理簇的编码过程。2.1.1:数据帧的构成
图2 Picket code的物理簇
一个数据帧由2052字节组成,其中包括2048字节的用户数据,编号为: d0, d1…d2047和4字节的检错码(EDC:Error Detection Code),编号为e2048,e2049,e2050,e2051 。这4字节的检错码是对前面的2048字节用户数据计算得到的:将这2052字节数据看作连续的比特流,以用户数据的最高位开始,以EDC码的最低位结束;最高位记做,最低位记做。则EDC码的各比特bi, i=0.1…31可由公式(1)计算(参考图3):
图3 数据帧的构成根据二进制运算的性质,这样构成的码字多项式c(x)=l (x)+EDC(x) 对G(x)取模正好为0。而在译码端,假定接受到的比特流为b16415,…, e2051,A构成一个新的多项式,并对取模,如果结果为0,则说明传输过程中没有错误发生;如果不为0,则说明有错误发生。这就是检错码的作用。2.1.2:数据扇区的构成一个数据扇区由两个数据帧(A,B)构成。将两个数据帧的字节逐列填入一个19列256行的矩阵中,数据帧A的字节d0,A,… e2051, A, 填充完毕后继续填充数据帧B的字节d0,B,… e2051, B, 最后构成一个4104字节的数据扇区。参考图4。
图4 数据扇区
2.l.3:ECC扇区的构成在一个数据扇区的下部按照一定的纠错规律添加校验码,就构成了一个ECC扇区。首先要对数据扇区中的字节进行一次新的编号,每一列的字节接从上到下的顺序编号为:dl,0,dl,1,…,dl,215,其中l=0,…,18为列号。注意这里的编号方式是列号在前,行号在后与常见的矩阵元素编号正好相反。编号完成后,对每一列的数据按照(248,216,33)长距离RS码计算出32字节的校验码PL,216, PL,217, …,PL,247并附加在原数据列之后;这样每列的248字节构成一个LDS码字,19个LDS码字构成一个ECC扇区 (l9列×248行=4712字节)。参考图5。
图5 ECC扇区(重编号和添加校验字节)
这里使用的长距RS码定义在有限域上。域的所有非0元素由本原多项式的一个本原元产生。中的码元长度为1字节,其8比特由以为基底的多项式确定,其中根表示为。一个LDS码字可以用向量表示;同样也可以用一个最高为247阶的多项式表示,记为(某些项的系数可能为0);其中的高阶部分对应干码字中的数据字节,低阶部分对应于码字中的校验字节,则该码字是系统的。按照RS码的原理,这样构成的一个多项式应为生成多项式(公式2)的倍式:
2.1.4:ECC簇的构成在完成 ECC扇区的构造后,16个连续的 ECC组合成一个152列496行的ECC簇,共75392字节。整个构造过程比较复杂,需要经过几次合并、交错、重编号等操作;下面参考图6作详细的说明。在图6-A中,16个连续的ECC扇区(19列×248行=4712字节)排在一起。在图6-B中,2个连续的ECC扇区(例如扇区0和扇区1)合并成块0(38列×248行=9424字节);16个ECC扇区则合并成8个块。(每一块的偶数列都用阴影标识,以利于分辨后面的操作效果。)在图6-C中,将每块的连续2列(例如块0的第0列和第1列)作一次交错合并,按照列的方向重新安放数据,即首先放置原块第0列第0行的字节,再在列方向上的下一个位置放置原块的1列第0行的字节,再放置原块第0列第1行的字节,如此填满1列(496行);再对剩下的列作类似操作;这样最后形成一个新的块(19列×496行=9424字节)。参考图6-F所示新块0与原块0字节间的对应关系。在图6-D中,每2个连续的块再次会并,形成4个38列496行的新块(这样合并的目的是在块之间插入BIS码)。对这些字节按照行的顺序进行一次重新编号,即为C0,…, C75391。在图6-E中,对ECC簇中的数据进行一次移位交错。交错规则是每两行一起,依次左移3列;从左侧移出的数据添加到本行右侧空出的对应位置。即:第0行和第1行无需移动;第2行和第3行向左移动3列,因此数据C307、C459分别称为新的第2行和第3行的行首,而数据C304、C305、C306和C456、C457、C458依序填充在新行的右侧。其他行类似处理。在进行移位交错后,还需要进行一次新的编号为d0,…d75391,按行优先的顺序编号为;编号方祛类似于图6-D(参考图10)。至此,一个ECC簇就构造完成了,下面介绍如何构成一个BIS簇,以及如何由一个ECC簇和一个BIS簇构成一个物理簇和记录帧。2.1.5:BIS块的构成与ECC簇的构成类似,BIS簇的构成也需要经过添加校验码、交错、重编号等多个步骤。BIS簇中放置的是重要的地址和控制数据,包括逻辑地址和控制数据(18字节/数据帧×32数据帧=576字节),以及物理地址(9字节/物理扇区×16物理扇区=144字节),共720字节。这些数据排列成30列X 24行的矩阵,并编号为b0,0,…,b23,29
图6 ECC簇的构成
(下标中列号在前行号在后);再对每一列的30字节数据按RS(62,30,33)码计算出32字节的校验码,并附加在本数据列的下方,这样每列的62字节构成一个BIS码字,24个BIS码字构成一个BIS块(24列×62行=1488字节)。参考图7。
图7 BIS块(包括24个BIS码字)
这里使用的RS码定义在有限域GF(28)上。 GF(28)域的所有非0元素由本原多项式P(X)=X8+X4+X3+X2+1的一个本原元α产生。GF(28)中的码元长度为1字节,其8比特由以(α7,α6,α5,α4,α3,α2,α1,α)为基底的多项式确定,其中根α表示为α=00000010。一个BIS码字可以用向量bis=(bc,,o,...bc,j,...,bc,29, pbc,61)表示,同样也可以用一个最高为61阶的多项式表示,记为bis(x)(某些项的系数可能为0);其中的高阶部分对应于码字中的数据字节,低阶部分对应于码字中的校验字节,则该码字是系统的。按照RS码的原理,这样构成的一个多项式lds(x)应为生成多项式g(x)。(公式3)的倍式:
2.1.6:BIS簇的构成BIS块中的1488字节需要经过一次交错,排列到一个3列×496行的矩阵中;所得的矩阵就是BIS簇。交错规则可以用一个数学表达示来表示。参考图2中,一个物理簇被划分为16个物理扇区,每个物理扇区为(38×4+3=)155列×31行=4805字节。只考虑其中的BIS数据,如果将物理扇区编号为 S=0,…,15,物理扇区中的行编号为r=0,A,30,物理扇区中的BIS数据列编号为e=0,…,2,那么对于图7中所示BIS块中的字节组bn,c将被交错排列到以下位置:物理扇区号:s={[(N div2)+8-(Cdiv3)]mod8}+8×(Nmod2)物理扇区内的行号:r=N div2物理扇区内的列号:e=[C+(N div2)]mod3上面的表达式中,div表示取整运算,如5div2=2;mod表示取模运算,如5mod3=2。因此,图7中的b0,0。经过交错后将位于第0物理扇区中第0行第0列(注意这里的列号是指BIS数据列);而b15,2将位于第15物理岗扇中第7行第0列。实际上,这里的交错规则是将BIS块中的24列划分成8组(每组3字节),这样的一个3字节组将被放置到BIS簇中的特定行。BIS块中的偶数行(行号0.,2…,60)被映射到BIS簇的物理扇区0到7中;而BIS块中的奇数行(行号1,3,...,61)被映射到BIS簇的物理扇区8到15中。以下以BIS块偶数行的交错过程为例进行说明,奇数行的交错类似。每行的8个3字节组被安放在这8个连续物理扇区(扇区号0,1,...,7)的同一行中,安放的顺序与扇区的编号相反,即:BIS块中N=0行的8组按顺序安放在物理申区0,7,6,5,...,2,l的第0行(即,r=0);BIS块字N=4行的8组按顺序安放在物理扇区2,1,0,7...,4,3的第0行(即,r=2);如此循环....直到N=60,被安放在物理扇区6,5,4,3...,0,7的第30行(即r=30)。
图8 BIS簇的构成
这些行安放完成后,还需要进行一次循环移位,每行有移(r mod3)个位置。因此,第0行右移0个位置,而第1行有移1个位置,第2行右移2个位置,......,第30行右移0个位置。这样就构造了一个BIS簇。图8显示了BIS簇中物理扇区0~7的各字节在BIS块中的位置对应关系。可以将图中列出的对应关系与上述对应规则及交错规则的数学表达式进行对照。2.1.7:物理簇的构成64KB的数据和相应的地址、控制数据分别经过LDS和BIS编码,构成一个ECC簇和一个BIS簇,再经过一次交叉合并,与同步位一起形成一个物理簇。参考图2。一个ECC簇为152列×496行,按每连续的38列划分为一组,一共4组。一个BIS簇为3列×496行,将这3列分别插入到ECC簇的组与组之间;这样就构成了一个 155列 X 496行的矩阵;再加上开头部分的同步位,就构成了一个物理簇。物理簇中的每一行(155字节+同步位)称为一个记录帧;每连续的31行构成一个物理扇区。因此1个物理簇包括16个物理扇区,或496个记录帧。记录时逐帧进行,由于用户数据等都是按列排列的,这样就可以将数据进行分散,以减小突发错误的影响。一个2kB的数据帧经过数次编码和交错后,由9.5个LDS码字组成,其各字节被分散在物理簇不同的行和列中。读出时可以在确定的位置读取到相应的LDS码字,从而组成需要的帧数据。第i个LDS码字(0≤i≤300)的第j字节0≤j≤247即为物理簇的字节da(参考图2),其中α=[(imod2)+2﹡j]﹡152 +{[(idiv2)-3﹡j]mod152}。例如对第0个数据帧,编码后成为第0个数据扇区的第0~8.5个LDS码字,为了读出该数据帧,需要读出这些码字;以第1个LDS码字的第10字节为例,根据上面给出的计算规则,即为物理簇的字节d3162。实际上,每个LDS码字的第0字节总是在物理簇的第0行和第1行,在确定了第0字节的位置后,可以根据每次“行号+2、列号-3”的规则读取下一个字节;这分别对应于ECC簇形成过程中的两列合并(图6-C)和左移3位(图6-E)操作。图9显示了读出规则的实际效果。
图9 LDS码字读出
图10 Picket code编码过程
图10显示了整个编码过程的总结。读者可以与前述编码过程进行对照。2.2 Picket code的性能与DVD系统中采用的RS-PC码相比较, Picket code由于采用了新的编码方法:冗余的校验数据全部放置在表2 RS-PC与Picket code比较列方向上,由BIS的高度冗余和纠错能力保证重要的地址和控制数据能正确读出,并指示可能的错误位置;LDS码根据已指示的纠错位置进行纠错。因此,Picket code的纠错能力大大提高。
表2是RS-PC和Picket code纠错能力的比较。从表2中可以看出,由于Blue-ray将所有的校验码都安排在列方向上,与DVD中行与列方向上都有校验码相比,列方向上的校验码实际增加了1倍;同时,DVD中簇大小为32kB,而Blue-ray中簇大小为64kB,在同等ECC冗余度的情况下,一个簇中可以得到多1倍的校验码。将这两者结合起来,即可以增大数据的交错长度和列方向上纠错码的最小距离,这使得纠错码纠突发错误的能力提高了3~4倍。例如若不考虑随机错误,在Blue-ray中,Picket code可以纠正16~33个300个ECCE字节长的突发错误。而DVD 中的RS—PC码智能纠正5~9个。并且,最大可纠突发错误长度也提高到9920ECC 字节。同时,Picket code与RS—PC码纠随机错误的能力也相差无几。Picket code的纠错能力还可以用一个实验来说明。一张落满灰尘的光盘的原始(字节)误码率为4×10-3,其中包括各种长度的突发错误。实验结果发现,BIS码可以正确地获取地址信息,并能可靠地指示出错误位置,纠错后的误码率低于10-25。根据BIS码指出的错误位置,LDS码纠错后的误码率降低到1.5×10-18。与此对照,若采用 RS—PC码,则纠错后的误码率大约为5.7×10--7。由此可见Picket code确实具有强大的纠错能力。以上详细介绍Blue-ray系统中采用Picket code纠错码,包括纠错编码实现过程和纠错能力。下面将介绍Blue-ray系统中采用的调制编码。
[关闭窗口]
