处理光盘的读回数据发生解码错误的数据管理方法及光驱
技术领域
本发明涉及一种处理解码错误(decoding error)的方法与装置,尤指一种处理光盘的读回数据发生解码错误的数据管理方法与光驱。
背景技术
传统光盘的读取,是以一个数据区段(sector)为解码单位,所以当产生解码错误而必须要重新读取光盘上的未解码数据时,只需重新读取发生错误的数据区段,并且重新解码所述数据区段即可,这种方式不论是利用硬件或是软件来实施都相当地单纯。但是在数字多功能光盘(digital versatile disc,DVD)或者是下一代的蓝光光盘(Blu-ray disc,BD)或高解析光盘(High-definition DVD,HD-DVD)时,数据并非以一个数据区段为解码单位,而是以数个数据区段集合起来所组成的一个数据区块(block)为解码单位,故任一数据区段发生解码错误而需要重新读取光盘上的未解码数据时,会比传统光盘来的复杂。如业界所公知,对于数字多功能光盘而言,其是以16个数据区段组成一个数据区块,其中所述数据区块即为公知的ECC区块;对于蓝光光盘而言,其是以32个数据区段组成一个数据区块,其中所述数据区块即为公知丛集(cluster);至于高解析光盘,其则是以32个数据区段组成一个数据区块,其中所述数据区块即为公知数据段(data segment)。
请参阅图1,图1为现有光驱100的示意图。光驱100可处理一光盘102的读回数据所发生的解码错误(decoding error),其包含有一储存装置110(例如动态随机存取内存)、一控制电路120以及一解码电路130。储存装置110作为一环形缓冲器(ring buffer)来储存由光盘102所读取的读回数据,如图1所示,储存装置110的储存空间可视为划分成多个数据区块(block)BK1~BKn,其中每一个数据区块包含有多个数据区段(sector)SC1~SCm。对数字多功能光盘来说,m值为16(亦即每一ECC区块包含有16个区段),而对蓝光光盘和高规格光盘来说,m值为32(亦即每一丛集与每一数据段均包含有32个区段),如业界所公知,一般而言,写入盘片上的数据会先经过交错化(interleaving)的处理,因此,在将由盘片所读取的数据存入储存装置110之前,会先经过去交错化(de-interleaving)的处理,如此一来,同一数据区段在储存装置110中为连续地存放,此外,也可采用另一种作法而将自盘片上所读取的数据直接存入储存装置110,如此一来,储存在储存装置110的是尚未经过去交错化处理的数据,因此,解码电路130便需具有去交错化的功能,亦即解码电路130本身必须包含一去交错化电路,以便后续的解码动作可顺利执行。另外,n值则取决于储存装置110的储存容量,因此,若储存容量愈大,则储存装置110所能纪录的数据区块的数量亦越大(亦即n值愈大)。控制电路120耦接于储存装置110,且控制电路120包含有一缓存指针(bufferingpointer)BP、一解码指针(decoding pointer)DP、以及一读取指针(reading pointer)RP,用来控制储存装置110内读回数据的存取,换句话说,控制电路120可控制一读写头(未显示)来自光盘102读取数据,并将读回数据储存至储存装置110,另外,控制电路120亦可控制储存装置110将其内部已完成解码的读回数据传递至主机104。解码电路130耦接于控制电路120与储存装置110,用来解码储存装置110中所储存的读回数据,此外,在解码时,解码电路130以数据区段为单位来进行解码,而解码过程还包含公知错误更正(error correction)的动作,若解码电路130在解码一数据区段时产生解码错误,则解码电路130会输出一信号S来告知处理器140,处理器140会进一步控制电路120决定如何调整缓存指针BP、解码指针DP以及读取指针RP。以下简述储存装置110内读回数据和控制电路120内所有指针BP、DP、RP的功能及关连性。
请参阅图2,图2为图1所示的缓存指针BP、解码指针DP以及读取指针RP指向储存装置110中相对应地址的示意图。读回数据Data_1包含有一未解码读回数据Data_2、一解码中读回数据Data_3(即为目前正在解码中的一特定数据区段)以及一己解码读回数据Data_4。缓存指针BP是用来指示(indicate)从光盘102上读取的一未解码读回数据欲写入至储存装置110的起始地址,亦即所述未解码读回数据紧接着未解码读回数据Data_2而写入至储存装置110中;解码指针DP则是用来指示解码中读回数据Data_3在储存装置110上的起始地址(亦即一特定数据区段的起始地址);而读取指针RP则用来指示目前等待着被主机104(例如一个人计算机)读取的己解码读回数据的地址,即为己解码读回数据Data_4在储存装置110中的起始地址。此外,在正常操作下(即未发生解码错误),若是主机104的数据读取速度快于解码电路130的数据解码速度,则可能在解码电路130仍解码读回数据Data_3时,己解码读回数据Data_4已全部被读取至主机104,故读回数据Data_1仅会包含有未解码读回数据Data_2和解码中读回数据Data_3,此时读取指针RP会停留在解码中读回数据Data_3的前一数据区段的结束地址,而当读回数据Data_3已成功地完成解码时,解码指针DP便会移向读回数据Data_3的下一数据区段的起始地址,以及读取指针RP即会指向读回数据Data_3的起始地址。
如业界所公知,光驱100会在三种状况下处理光盘102的读回数据发生解码错误的运作,第一种状况为:在发生解码错误时,解码指针DP所指示的解码中读回数据Data_3(对应一数据区段)在储存装置110上的起始地址恰好为解码中读回数据Data_3所对应的数据区块的起始位置;第二种状况为:在发生解码错误时,解码指针DP与读取指针RP并未对应同一数据区块,且解码指针DP所指示的解码中读回数据Data_3(对应一数据区段)在储存装置110上的起始地址并非为解码中读回数据Data_3所对应的数据区块的起始位置;以及第三种状况为:在发生解码错误时,解码指针DP与读取指针RP对应同一数据区块,且解码指针DP所指示的解码中读回数据Data_3(对应一数据区段)在储存装置110上的起始地址并非为解码中读回数据Data_3所对应的数据区块的起始位置。
请同时参阅图1和图3,图3为图1所示的光驱100应用公知数据管理方法来处理解码错误的第一实施例的示意图。在时间T3时,缓存指针BP指示从光盘102上读取的一未解码读回数据欲写入至储存装置110的起始地址为数据区段SCy(y的数值小于或等于m的数值)的下一数据区段的起始地址,解码指针DP则指示解码中的数据区段SC1的起始地址(请注意,数据区段SC1为数据区块BKi+3的第一个数据区段),读取指针RP是指示目前等待着被主机104读取的己解码读回数据的地址,亦即数据区段SCx(x的数值小于或等于m的数值)的起始地址。当解码电路130对数据区段SC1的信息进行解码而发生解码错误时,解码电路130会输出信号S来告知控制电路120,由于数据区段SC1为数据区块BKi+3的第一个数据区段,因此,在时间T′3时,控制电路120仅需更新缓存指针BP,以使其指向数据区段SC1的起始地址,因此,光驱100便会依据更新后的缓存指针BP来重新将从光盘102上数据区块BKi+3起(例如数据区段SC1至数据区段SCy)的相对应未解码读回数据加载至储存装置110中。如上所述,针对第一种状况,光驱100必须调整一个指针(亦即缓存指针BP)。
请同时参阅图1和图4,图4为图1所示的光驱100应用公知数据管理方法来处理解码错误的第二实施例的示意图。在时间T4时,缓存指针BP是指示从光盘102上读取的一未解码读回数据欲写入至储存装置110的起始地址为数据区段SCy(y的数值小于或等于m的数值)的下一数据区段的起始地址,解码指针DP则指示解码中的数据区段SCz(z的数值小于或等于m的数值)的起始地址(请注意,数据区段SCz并非为数据区块BKi+3的第一个数据区段),读取指针RP指示目前等待着被主机104读取的己解码读回数据的地址,亦即数据区段SCx(x的数值小于或等于m的数值)的起始地址。当解码电路130对数据区段SCz的信息进行解码而发生解码错误时,解码电路130会输出信号S来告知控制电路120,由于数据区段SCz并非为数据区块BKi+3的第一个数据区段,因此,在时间T′4时,控制电路120需一并更新缓存指针BP与解码指针DP,以使其指向数据区块BKi+3的起始地址,因此,光驱100便会依据更新后的缓存指针BP来重新将从光盘102上数据区块BKi+3起的相对应未解码读回数据加载至储存装置110中,另外,光驱100还会依据更新后的解码指针DP来重新对数据区块BKi+3起的后续数据区段进行解码操作。如上所述,针对第二种状况,光驱100必须调整二个指针(亦即缓存指针BP与解码指针DP)。
请同时参阅图1和图5,图5为图1所示的光驱100应用公知数据管理方法来处理解码错误的第三实施例的示意图。在时间T5时,缓存指针BP指示从光盘102上读取的一未解码读回数据欲写入至储存装置110的起始地址为数据区段SCy(y的数值小于或等于m的数值)的下一数据区段的起始地址,解码指针DP则指示解码中的数据区段SCz(z的数值小于或等于m的数值)的起始地址(数据区段SCz并非数据区块BKi+3的第一个数据区段);读取指针RP指示目前等待着被主机104读取的己解码读回数据的地址,亦即数据区段SCj(j的数值小于或等于m的数值)的起始地址。如图5所示,数据区段SCj与数据区段SCz均位于同一数据区块BKi+3中。当解码电路130对数据区段SCz的信息进行解码而发生解码错误时,解码电路130会输出信号S来告知控制电路120,所以,在时间T′5时,控制电路120需一并更新缓存指针BP、解码指针DP(读取指针RP所指向的地址并不会改变),以使其均指向数据区块BKi+3的起始地址,因此,光驱100便会依据更新后的缓存指针BP来重新自光盘102上将数据区块BKi+3起的相对应未解码读回数据加载至储存装置110中,以及依据更新后的解码指针DP来重新对数据区块BKi+3起的后续数据区段进行解码操作。另一方面,由于读取指针RP所对应的地址是超越解码指针DP所对应的地址,因此光驱100会暂停将储存装置110中的已解码读回数据传递至主机104,直到解码指针DP所对应的地址超越读取指针RP为止。如上所述,针对第三种状况,光驱100必须调整二个指针(亦即缓存指针BP与解码指针DP),并且还需要记住已被主机读走的数据,防止被主机重复读取。
如图3至图5所示,当数据区块BKi+3中一数据区段的解码产生错误时(上述第一、第二、第三种状况),数据区块BKi+3会重新进行解码的操作,若数据区块BKi+3一直无法顺利地被解码,则现有光驱100会放弃对数据区块BKi+3中未完成解码的数据区段的解码操作,而当主机104要求时,将数据区块BKi+3中已完成解码的数据区段的信息传递至主机104,若主机104要求传递数据区块BKi+3中未完成解码的数据区段的信息时,则响应处理解码错误的信息给主机104。
综上所述,由于解码指针DP并不固定指向某一数据区块的起始或是结束地址,而是可以指向所述数据区块内的任意一数据区段,因此便导致一旦发生解码错误时,现有处理解码错误的数据管理方法需要针对不同的情况来对缓存指针BP与解码指针DP进行适当的调整,由于判断机制繁复,最后便会造成整体光驱100的复杂度增高,且光驱100处理解码错误的效能也会受到一定的影响而不显著。
发明内容
本发明的目的之一在于提供一种处理一光盘的读回数据发生解码错误的数据管理方法与光驱,以解决上述问题。
本发明揭露一种处理一光盘的读回数据发生解码错误的数据管理方法,所述读回数据储存于一光驱中一储存装置内,所述读回数据包含有多个数据区块,每一数据区块包含有多个数据区段。所述数据管理方法包含有:(a)提供一缓存指针以及一解码指针;(b)使用所述缓存指针来指示自所述光盘所读取的一未解码读回数据写入至所述储存装置的地址;(c)使用所述解码指针来指示所述读回数据内解码中的一数据区块的起始地址,其中在所述数据区块中所有数据区段皆被成功地解码前,所述解码指针持续地指向所述数据区块的起始地址;以及(d)当解码所述数据区块中一特定数据区段而发生解码错误时,更新所述缓存指针以指示所述未解码读回数据写入至所述储存装置的地址对应至所述解码指针所指示的地址,以重新从所述光盘读取对应所述数据区块的未解码读回数据。
本发明还包括:(e)当步骤(d)重复执行一预定次数之后,仅将所述数据区块内已成功解码的数据传递至所述主机。
步骤(a)还包括提供一实际解码指针,所述数据管理方法还包括使用所述实际解码指针来指示所述数据区块内一解码中数据区段的起始地址,以及步骤(e)依据所述解码指针与所述实际解码指针将已成功解码的数据传递至所述主机。
所述储存装置为一动态随机存取内存DRAM。
所述光盘为一数字多功能光盘DVD、一高解析光盘HD-DVD或者一蓝光光盘BD。
此外,本发明另揭露一种光驱,其可处理一光盘的读回数据所发生的解码错误,所述光驱包含有:一储存装置,用来储存所述读回数据,所述读回数据包含有多个数据区块以及所述数据区块包含有多个数据区段;一控制电路,耦接于所述储存装置,用来控制所述储存装置的数据存取;以及一解码电路,耦接于控制电路与所述储存装置。所述控制电路包含有:一缓存指针,用来指示从所述光盘所读取的一未解码读回数据写入至所述储存装置的地址;以及一解码指针,用来指示所述读回数据内解码中的一数据区块的起始地址,其中在所述数据区块中所有数据区段被成功地解码前,所述解码指针持续地指示所述数据区块的起始地址;当所述解码电路解码所述数据区块中一特定数据区段而发生解码错误时,所述控制电路会更新所述缓存指针以指示所述未解码读回数据写入至所述储存装置的地址对应至所述解码指针所指示的地址,以重新自所述光盘读取对应所述数据区块的未解码读回数据。
当所述控制电路重复更新所述缓存指针达一预定次数之后,所述控制电路仅将所述数据区块内已成功解码的数据传递至所述主机。
所述控制电路另包含有一实际解码指针,用来指示所述数据区块内一解码中数据区段的起始地址,以及所述控制电路依据所述解码指针与所述实际解码指针将已成功解码的数据传递至所述主机。
所述储存装置为一动态随机存取内存DRAM。
所述光盘为一数字多功能光盘、一高解析光盘或者一蓝光光盘。
本发明数据管理方法与应用所述数据管理方法的光驱另提供一解码指针来取代现有解码指针的功能,而在一解码中数据区块内所有的数据区段都被成功地解码之前,本发明所揭露的解码指针会一直持续地指示所述解码中数据区块的起始地址而不会有所改变,故不会有现有技术一般地在发生解码错误时需要依据不同的情况来做不同的处理。总而言之,本发明数据管理方法与应用所述数据管理方法的光驱可降低整体系统的复杂度,且光驱处理解码错误的效能也会大幅地提升。
附图说明
图1为现有光驱的示意图。
图2为图1所示的缓存指针、解码指针以及读取指针指向储存装置中相对应地址的示意图。
图3为图1所示的光驱应用现有数据管理方法来处理解码错误的第一实施例的示意图。
图4为图1所示的光驱应用现有数据管理方法来处理解码错误的第二实施例的示意图。
图5为图1所示的光驱应用现有数据管理方法来处理解码错误的第三实施例的示意图。
图6为本发明光驱的一实施例的示意图。
图7为图6所示的光驱应用本发明数据管理方法来处理解码错误的一实施例的示意图。
光驱 100、600
光盘 102、602
储存装置 110、610
控制电路 120、620
解码电路 130、630
主机 104、604
具体实施方式
请参阅图6,图6为本发明光驱600的一实施例的示意图。光驱600的功能与操作类似于图1所示的光驱100,其同样地可处理一光盘(例如DVD)602的读回数据所发生的解码错误(decoding error)。本实施例中,光驱600包含有一储存装置610(例如动态随机存取内存)、一控制电路620以及一解码电路630。本实施例中,储存装置610是作为一环形缓冲器(ring buffer)来储存由光盘602所读取的读回数据,然而,请注意,环形缓冲器仅为储存装置610的一种实施例,对于本发明而言,储存装置610并未局限于环形缓冲器的结构。如图6所示,储存装置610的储存空间可视为划分成多个数据区块BK1~BKn,其中每一个数据区块包含有多个数据区段SC1~SCm。对数字多功能光盘来说,m值为16(亦即每一ECC区块包含有16个区段),而对蓝光光盘和高规格光盘来说,m值为32(亦即每一丛集与每一数据段均包含有32个区段),另外,n值则取决于储存装置610的储存容量,因此,若储存容量愈大,则储存装置610所能纪录的数据区块的数量亦越大(亦即n值愈大)。本发明光驱600与现有光驱100的主要不同点在于控制电路620除了包含有现有的缓存指针BP、解码指针DP以及读取指针RP,其另设置有一实际解码指针(actual decoding pointer)ADP,此外,控制电路620还提供一种新的控制机制来控制解码指针DP,其相关操作于后详述。解码电路630耦接于控制电路620与储存装置610,用来解码储存装置610中所储存的读回数据,此外,若解码电路630在解码一数据区段时产生解码错误,则解码电路630会输出一信号S来告知控制电路620,而控制电路620便会进一步地决定如何调整缓存指针BP、实际解码指针ADP以及读取指针RP。
缓存指针BP和读取指针RP的功能与运作方式和现有技术相同,在此不另赘述,而对于解码指针DP来说,控制电路620是控制其指示储存装置610中正在解码的数据区块的起始地址,请注意,不同于现有技术的是,在所述解码中的数据区块内所有的数据区段(SC1~SCm)都被成功地解码之前,解码指针DP会一直持续地指示所述解码中的数据区块的起始地址而不会有所改变。此外,控制电路620另使用实际解码指针ADP来指示在所述解码中的数据区块内目前正进行解码的数据区段的起始位置,其作用则和现有解码指针DP相同,换句话说,由于解码指针DP的运作在本实施例中不同于其原本操作,故新增的实际解码指针ADP便用来取代原先解码指针DP的功能。请注意,如业界所公知,在正常操作(未发生解码错误)下,解码指针DP以及读取指针RP所对应的地址的移动并不会超越缓存指针BP所对应的地址,以及读取指针RP所对应的地址的移动并不会超越解码指针DP所对应的地址。
请同时参阅图6和图7,图7为图6所示的光驱600应用本发明数据管理方法来处理解码错误的一实施例的示意图。在时间T71时,缓存指针BP是指示从光盘602上读取的一未解码读回数据欲写入至储存装置610的起始地址为数据区段SCC(c的数值小于或等于m的数值)的下一数据区段的起始地址,解码指针DP则指示解码中的数据区块BKi+2的起始地址,实际解码指针ADP是指示解码中的数据区段SCb(b的数值小于或等于m的数值)的起始地址,而读取指针RP是指示目前等待着被主机604读取的己解码读回数据的地址,亦即数据区段SCa(a的数值小于或等于m的数值)的起始地址。当解码电路630对数据区段SCb的信息进行解码而发生解码错误时,解码电路630会输出信号S来告知控制电路620,因此,在时间T72时,控制电路620仅需更新缓存指针BP与实际解码指针ADP,以使其均指向数据区块BKi+2的起始地址,因此,光驱600便会依据更新后的缓存指针BP来重新自光盘602上将数据区块BKi+2起的相对应未解码读回数据加载至储存装置610中,此外,光驱600另会依据更新后的实际解码指针ADP而自数据区块BKi+2中第一个数据区段SC1起开始进行解码的操作。由于数据区块BKi+2中所有的数据区段尚未成功地完成解码,所以,解码指针DP仍会持续地对应数据区块BKi+2的起始地址。
在时间T73时,缓存指针BP是指示从光盘602上读取的一未解码读回数据欲写入至储存装置610的起始地址为数据区段SCe(e的数值小于或等于m的数值)的下一数据区段的起始地址,解码指针DP则继续指示数据区块BKi+2的起始地址,实际解码指针ADP则指示解码中的数据区段SCm(其为数据区块BKi+2的最后一个数据区段)的起始地址,而读取指针RP是指示目前等待着被主机604读取的己解码读回数据的地址,亦即数据区段SCd(d的数值小于或等于m的数值)的起始地址。当解码电路630成功地对数据区段SCm的信息进行解码后,表示数据区块BKi+2中所有的数据区段皆成功地完成解码,所以,在时间T74时,控制电路620便一并更新解码指针DP与实际解码指针ADP,以使其均指向数据区块BKi+3的起始地址,因此,光驱600便会依据更新后的实际解码指针ADP而自数据区块BKi+3中第一个数据区段SC1起开始进行解码的操作。如上所述,对于光驱600而言,当其在解码时发生解码错误,光驱600仅调整两个指针(亦即缓存指针BP与实际解码指针ADP)。
本实施例中,若是某一解码中数据区块一直无法成功地完成解码的操作,则控制电路620可适当地调整读取指针RP、实际解码指针ADP与解码指针DP来直接放弃所述数据区块的所有信息而不将其传递至主机604,亦即即使所述数据区块中已有部分数据区段完成解码,对应所述部分数据区段的已解码读回数据仍会被舍弃。此外,若是某一解码中数据区块一直无法成功地完成解码的操作,则控制电路620也可依据实际解码指针ADP与解码指针DP来将所述数据区块中已可成功解码的部分数据区段的已解码读回数据传送给主机604。
相对于现有技术,本发明数据管理方法与应用所述数据管理方法的光驱另提供一解码指针来取代现有解码指针的功能,而在一解码中数据区块内所有的数据区段都被成功地解码之前,本发明所揭露的解码指针会一直持续地指示所述解码中数据区块的起始地址而不会有所改变,故不会有现有技术一般地在发生解码错误时需要依据不同的情况来做不同的处理。总而言之,本发明数据管理方法与应用所述数据管理方法的光驱可降低整体系统的复杂度,且光驱处理解码错误的效能也会大幅地提升。
以上所述仅为本发明的较佳实施例,凡依据本发明所做的均等变化与修饰,皆应涵盖在本发明的保护范围内。