專利名稱::補(bǔ)償存儲(chǔ)器缺損的解碼器的算法的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種補(bǔ)償存儲(chǔ)器缺損(DefectMemory)的解碼器的算法,特別涉及一種補(bǔ)償存儲(chǔ)器缺損的光盤驅(qū)動(dòng)器解碼器的算法。圖1是一種公知的典型光盤驅(qū)動(dòng)器(CD-ROMDrive)系統(tǒng)100的結(jié)構(gòu)圖,請(qǐng)參照?qǐng)D1,其中模擬信號(hào)處理器(AnalogSignalProcessor)40與數(shù)字信號(hào)處理器(DigittalSignalProcessor)50分別負(fù)責(zé)馬達(dá)轉(zhuǎn)速的控制與盤60數(shù)據(jù)的第一次解碼及第二次解碼。解碼器10負(fù)責(zé)第三次解碼及主機(jī)(Host)接口控制。緩沖存儲(chǔ)器(BufferMenory)20供解碼器10作解碼暫存及主機(jī)高速存取(Cache)。另外微控制器(Microcontroller)30和軟件70執(zhí)行整體流程的控制。經(jīng)模擬信號(hào)處理器40與數(shù)字信號(hào)處理器50輸出的數(shù)據(jù),即一般的音頻盤(CD-Audio)的數(shù)據(jù),可經(jīng)由數(shù)字模擬轉(zhuǎn)換器90輸出至喇叭,而光盤(CD-ROM)的數(shù)據(jù)再由解碼器10第三次解碼后,經(jīng)IDE接口或小型計(jì)算機(jī)系統(tǒng)接口(SmallComputerSystemInterface;SCSI)80輸出至主機(jī)(例如PC)。公知的一般解碼器10,當(dāng)主機(jī)要求數(shù)據(jù)且解碼器10收到命令時(shí),就給微控制器30發(fā)送中斷。微控制器30由解碼器10處取得命令,從命令中得知主機(jī)要求扇區(qū)位置及長(zhǎng)度,于是再要求數(shù)字信號(hào)處理器50從光盤60上讀出數(shù)據(jù),送至解碼器10,并要求解碼器10接受數(shù)據(jù)。解碼器10則先將數(shù)據(jù)暫存至緩沖存儲(chǔ)器80,然后由緩沖存儲(chǔ)器80中取出解碼再寫回。最后,微控制器30再要求解碼器10,將完成解碼的數(shù)據(jù)傳送回主機(jī)。以上為公知一般解碼的流程,其作為緩沖/高速存取的存儲(chǔ)器必須是正常良好的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)或靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)。然而,工廠生產(chǎn)存儲(chǔ)器時(shí)由于質(zhì)量問(wèn)題,偶而會(huì)發(fā)生部分產(chǎn)品的數(shù)個(gè)位元損壞,或者,因長(zhǎng)期使用產(chǎn)生存儲(chǔ)器損壞。如果存儲(chǔ)器中有某些存儲(chǔ)單元或位元(CellsorBits)損壞,將造成解碼結(jié)果不正確或傳回主機(jī)數(shù)據(jù)的錯(cuò)誤。因數(shù)據(jù)錯(cuò)誤造成運(yùn)算結(jié)果不正確,對(duì)計(jì)算機(jī)操作是無(wú)法忍受的。因此,本發(fā)明的主要目的就是提供一種補(bǔ)償存儲(chǔ)器電路缺損的算法,用以在光盤驅(qū)動(dòng)器解碼器上補(bǔ)償此存儲(chǔ)器缺損。為實(shí)現(xiàn)本發(fā)明的上述和其他目的,一種補(bǔ)償存儲(chǔ)器缺損的解碼器的算法,其中,該解碼器應(yīng)用在一系統(tǒng)中,且連接在系統(tǒng)中的一微控制器與一緩沖存儲(chǔ)器之間,該算法包括下列步驟a、每一次系統(tǒng)開(kāi)機(jī)時(shí),解碼器接收微控制器的指令,對(duì)緩沖存儲(chǔ)器作掃描,檢測(cè)緩沖存儲(chǔ)器中是否有損壞位元組;b、將與這些損壞位元組位置對(duì)應(yīng)的區(qū)塊位置記錄成一損壞區(qū)塊表;c、判別是否要寫入一數(shù)據(jù)至緩沖存儲(chǔ)器(1)若是沒(méi)有,則結(jié)束數(shù)據(jù)寫入操作;(2)若是有,則選擇一緩沖存儲(chǔ)器區(qū)塊以寫入數(shù)據(jù);以及d、判別緩沖存儲(chǔ)器區(qū)塊位置與損壞區(qū)塊表中記錄的區(qū)塊位置是否相同(1)若區(qū)塊位置相同,則回到步驟c;(2)若區(qū)塊位置不同,則將數(shù)據(jù)寫入緩沖存儲(chǔ)器區(qū)塊,并且回到步驟c;上述方法使得數(shù)據(jù)寫入一良好的緩沖存儲(chǔ)器區(qū)塊。依照本發(fā)明的一較佳實(shí)施例,一種補(bǔ)償存儲(chǔ)器缺損電路的解碼器的算法,其中,該解碼器應(yīng)用在一系統(tǒng)中,其至少包括有一跳過(guò)損壞區(qū)塊電路與一乘法器及加法器組合電路,且連接在系統(tǒng)中的一微控制器與一緩沖存儲(chǔ)器之間,該算法包括下列步驟a、每一次系統(tǒng)開(kāi)機(jī)時(shí),解碼器接收微控制器的指令,對(duì)緩沖存儲(chǔ)器作掃描,檢測(cè)緩沖存儲(chǔ)器中是否有損壞區(qū)塊;b、將緩沖存儲(chǔ)器的損壞區(qū)塊號(hào)碼設(shè)定在跳過(guò)損壞區(qū)塊電路的一損壞區(qū)塊存取寄存器陣列中;c、當(dāng)解碼器使用緩沖存儲(chǔ)器時(shí),一要使用的區(qū)塊號(hào)碼經(jīng)由跳過(guò)損壞區(qū)塊電路,轉(zhuǎn)換成一新區(qū)塊號(hào)碼,跳過(guò)緩沖存儲(chǔ)器的損壞區(qū)塊號(hào)碼;以及d、新區(qū)塊號(hào)碼經(jīng)由乘法器及加法器組合電路,轉(zhuǎn)換成一要使用的緩沖存儲(chǔ)器區(qū)塊地址。為讓本發(fā)明的上述和其他目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文特舉一較佳實(shí)施例,并配合附圖詳細(xì)說(shuō)明如下,附圖中圖1是一公知典型的光盤驅(qū)動(dòng)器系統(tǒng)結(jié)構(gòu)圖;圖2是依照本發(fā)明補(bǔ)償存儲(chǔ)器缺損的解碼器的算法流程圖;圖3是依照本發(fā)明一較佳實(shí)施例的解碼電路370的硬件方框圖;圖4是圖3中跳過(guò)損壞區(qū)塊電路300的硬件方框圖。在光盤上,數(shù)據(jù)的儲(chǔ)存是以扇區(qū)(Sector)為單位,每一扇區(qū)經(jīng)解碼后長(zhǎng)度為2352位元組(Bytes),其中通常包含2048位元組的數(shù)據(jù),12位元組的同步控制,4位元組的讀取標(biāo)頭(Header),及288位元組的錯(cuò)誤更正碼等(其視格式規(guī)定而略有不同)。解碼器在存取緩沖存儲(chǔ)器時(shí),以固定長(zhǎng)度對(duì)應(yīng)至光盤上的扇區(qū),也就是將緩沖存儲(chǔ)器劃分為數(shù)個(gè)區(qū)塊(Blocks)。例如以3k位元組為1個(gè)區(qū)塊(假設(shè)要將全部2352位元組寫入),或以2k位元組為1個(gè)區(qū)塊(假設(shè)只要寫入2048位元組的數(shù)據(jù)部分)。假設(shè)全部緩沖存儲(chǔ)器為256k位元組,若以3k為1個(gè)區(qū)塊長(zhǎng)度,則整個(gè)緩沖存儲(chǔ)器可分成區(qū)塊0、區(qū)塊1、…、區(qū)塊84等85個(gè)區(qū)塊。接著,請(qǐng)同時(shí)參照?qǐng)D1及圖2。圖2示出依照本發(fā)明的一種補(bǔ)償存儲(chǔ)器缺損的解碼器的算法流程圖。方框200及方框201表示,在每一次光盤驅(qū)動(dòng)器系統(tǒng)100開(kāi)機(jī)時(shí),解碼器10接受微控制器30指令,對(duì)整個(gè)緩沖存儲(chǔ)器20作一番掃描,并檢測(cè)出緩沖存儲(chǔ)器20中是否有損壞位元組。此種掃描技術(shù)在個(gè)人計(jì)算機(jī)行業(yè)為成熟常見(jiàn)的技術(shù),只要通過(guò)簡(jiǎn)單的寫入/讀取/比較(Write/Read/Compare)即可實(shí)現(xiàn)。其中,解碼器10可以提供一些存取寄存器(Register),讓微控制器30讀寫,并轉(zhuǎn)換為存儲(chǔ)器控制信號(hào)來(lái)將數(shù)據(jù)寫入或讀出。例如,表1為一寄存器的定義。接著,方框202表示,在微控制器30掃描完緩沖存儲(chǔ)器20后,即將損壞位元組的位置對(duì)應(yīng)的區(qū)塊位置記住(例如存入一個(gè)事先定義的陣列中),也就是將損壞位元組位置對(duì)應(yīng)的區(qū)塊位置記錄成一損壞區(qū)塊表。再來(lái),方框203表示,在建立好損壞區(qū)塊表之后,微控制器30判別是否有要寫入緩沖存儲(chǔ)器20的數(shù)據(jù)。若是沒(méi)有要寫入的數(shù)據(jù),則至方框207,結(jié)束數(shù)據(jù)寫入動(dòng)作;若是有要寫入的數(shù)據(jù),則繼續(xù)方框204的步驟。接著,方框204表示,當(dāng)微控制器30要求解碼器10接受數(shù)據(jù)并解碼時(shí),在解碼器10要將光盤數(shù)據(jù)或經(jīng)解碼后的數(shù)據(jù)寫入緩沖存儲(chǔ)器20過(guò)程中,必須先選取一緩沖存儲(chǔ)器20區(qū)塊作為儲(chǔ)存區(qū)塊,其選取的緩沖存儲(chǔ)器20區(qū)塊位置通常由小至大順序使用。而解碼器10將光盤60的扇區(qū)寫入緩沖存儲(chǔ)器20區(qū)塊的位置,可以由微控制器30控制。在這里同樣可以通過(guò)存取寄存器來(lái)完成,例如表2即提供一組寄存器,讓微控制器30控制寫入緩沖存儲(chǔ)器20區(qū)塊的位置及長(zhǎng)度。表1接下來(lái),在微控制器30要求解碼器10接受數(shù)據(jù)并解碼時(shí),每一次選取緩沖存儲(chǔ)器20區(qū)塊過(guò)程,均需將要使用的緩沖存儲(chǔ)器20區(qū)塊與損壞區(qū)塊表比較。因此,方框205代表將要寫入緩沖存儲(chǔ)器20區(qū)塊位置與損壞區(qū)塊表作比較(1)若緩沖存儲(chǔ)器20區(qū)塊位置與損壞區(qū)塊表中記錄的位置相同,則重新選擇一緩沖存儲(chǔ)器20區(qū)塊以寫入數(shù)據(jù),即再回到方框203。(2)若緩沖存儲(chǔ)器區(qū)塊20位置與損壞區(qū)塊表中記錄的位置不同,則至方框205,將數(shù)據(jù)寫入此緩沖存儲(chǔ)器20區(qū)塊。然后,再回到方框203。如上所述,本發(fā)明雖以光盤驅(qū)動(dòng)器系統(tǒng)為例來(lái)說(shuō)明,但實(shí)際上可以擴(kuò)充實(shí)施至所有相似結(jié)構(gòu)(只要是以解碼器做接口,由微控制器控制,使用緩沖存儲(chǔ)器)的儲(chǔ)存裝置。例如未來(lái)的高密度光碟(DVD-ROM)機(jī)或硬碟(HardDisk)機(jī)等。本發(fā)明的主要特征為,以解碼器配合微控制器,來(lái)掃描存儲(chǔ)器缺損,檢測(cè)并避開(kāi)損壞位元組,即可將數(shù)據(jù)寫入良好的存儲(chǔ)器區(qū)塊,維持?jǐn)?shù)據(jù)存取的正確性,達(dá)到補(bǔ)償存儲(chǔ)器缺損的目的。不管是存儲(chǔ)器生產(chǎn)時(shí)就具有的缺損,或是存儲(chǔ)器因長(zhǎng)期使用而產(chǎn)生損壞,本發(fā)明都可以補(bǔ)償,并且在幾乎不影響效能的情況下,降低整個(gè)光盤驅(qū)動(dòng)器系統(tǒng)的成本。表2</tables>接下來(lái)為依照本發(fā)明的一較佳實(shí)施例,請(qǐng)?jiān)賲⒄請(qǐng)D1,在解碼器10接收微控制器30的指令,掃描完緩沖存儲(chǔ)器20之后,解碼器10為該微控制器30提供至少一組存取寄存器,設(shè)定緩沖存儲(chǔ)器20的損壞區(qū)塊,使得解碼器10使用緩沖存儲(chǔ)器20時(shí),自動(dòng)跳過(guò)已設(shè)定的損壞區(qū)塊位置。亦即微控制器30使用緩沖存儲(chǔ)器20的區(qū)塊時(shí),不必比較前述的損壞區(qū)塊表,此部分計(jì)算可由硬件自動(dòng)執(zhí)行,以節(jié)省微控制器30的運(yùn)算時(shí)間。有關(guān)本實(shí)施例的寄存器可以參考表3的示例。表3以補(bǔ)償緩沖存儲(chǔ)器20中可達(dá)3處的損壞區(qū)塊為例,實(shí)際上此寄存器組可視需要任意擴(kuò)充(實(shí)際應(yīng)用上則以2~4組就已足夠處理所有狀況)。再來(lái),請(qǐng)參照?qǐng)D1及圖2。圖3示出本發(fā)明一較佳實(shí)施例的解碼電路370的硬件方框圖,該解碼電路370為解碼器10的部分電路,用途為將要使用的區(qū)塊號(hào)碼(BlockNumber)320轉(zhuǎn)換為緩沖存儲(chǔ)器地址(Address)360,圖中若省略跳過(guò)損壞區(qū)塊電路300,就是公知的解碼電路。首先每一次光盤驅(qū)動(dòng)器開(kāi)機(jī)時(shí),跳過(guò)損壞區(qū)塊電路300接受微控制器30寫入的損壞區(qū)塊號(hào)碼數(shù)據(jù)330,設(shè)定緩沖存儲(chǔ)器20的損壞區(qū)塊。再來(lái),當(dāng)解碼器10要使用緩沖存儲(chǔ)器時(shí),跳過(guò)損壞區(qū)塊電路300接受要使用的區(qū)塊號(hào)碼320,將它轉(zhuǎn)換成新區(qū)塊號(hào)碼340,以便可以跳過(guò)緩沖存儲(chǔ)器20損壞區(qū)塊號(hào)碼。然后,乘法器及加法器組合電路310,接受新區(qū)塊號(hào)碼340及區(qū)塊偏移(BlockOffset)350,輸出緩沖存儲(chǔ)器20地址360。例如,假設(shè)要使用區(qū)塊號(hào)碼320為n,新區(qū)塊號(hào)碼340為nn,區(qū)塊偏移350為f,每一區(qū)塊長(zhǎng)度為m,緩沖存儲(chǔ)器20地址360為a,則a=nn×m+f。表3緊接著請(qǐng)參照?qǐng)D4,它示出圖3中跳過(guò)損壞區(qū)塊電路300的硬件方框圖。該跳過(guò)損壞區(qū)塊電路300具有x+1個(gè)損壞區(qū)塊存取寄存器B(0)~B(x)組成的損壞區(qū)塊存取寄存器陣列400,x+1個(gè)減法器(Substracter)410,x+1個(gè)比較器(Comparator)420,及1個(gè)加法器(Adder)430。損壞區(qū)塊存取寄存器陣列400中的損壞區(qū)塊存取寄存器B(0)~B(x)的記憶內(nèi)容,由微處理器30掃描完緩沖存儲(chǔ)器20后所得的損壞區(qū)塊號(hào)碼數(shù)據(jù)330的裝入來(lái)設(shè)定,每1個(gè)存取寄存器裝入1個(gè)已損壞區(qū)塊的號(hào)碼,其余未使用的存取寄存器則裝入一最大值(Max)。減法器410輸入為B(j),輸出為B(j)-j。比較器420判別要使用區(qū)塊號(hào)碼320(假設(shè)為n)與B(j)-j的大小,若n≥B(j)-j則輸出為1,若n<B(j)-j則輸出為0。而加法器430則是將n與各比較器410的輸出(1或0)相加,求得新區(qū)塊號(hào)碼340。請(qǐng)?jiān)賲⒄請(qǐng)D3及圖4,假設(shè)損壞區(qū)塊存取寄存器陣列400有4組存取寄存器B(0)~B(3)(一般情形2~4組就已足夠),而在開(kāi)機(jī)時(shí)緩沖存儲(chǔ)器20經(jīng)掃描發(fā)現(xiàn)區(qū)塊2與區(qū)塊5有損壞的位元組,因此設(shè)定B(0)←2,B(1)←5,B(2)←Max,B(3)←Max。當(dāng)n=0時(shí),n=0<B(0)-0且n=0<B(1)-1且n=0<B(2)-2且n=0<B(3)-3,各比較器410結(jié)果為0,0,0,0,所以nn=n+0+0+0+0=0。同理,當(dāng)n=1時(shí),各比較器410結(jié)果為0,0,0,0,所以nn=n+0+0+0+0=1。當(dāng)n=2,各比較器410結(jié)果為1,0,0,0,所以nn=n+1+0+0+0=3。當(dāng)n=3,各比較器410結(jié)果為1,0,0,0,所以nn=n+1+0+0+0=4當(dāng)n=4,各比較器410結(jié)果為1,1,0,0,所以nn=n+1+1+0+0=6。當(dāng)n=5,各比較器410結(jié)果為1,1,0,0,所以nn=n+1+1+0+0=7。同理可得n=6,7,8…。因而此電路設(shè)計(jì)能跳過(guò)損壞的區(qū)塊。雖然已經(jīng)以如上的一較佳實(shí)施說(shuō)明本發(fā)明,然而它并非用以限定本發(fā)明,任何本領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,能夠?qū)Υ诉M(jìn)行改動(dòng)與潤(rùn)飾,因此本發(fā)明的保護(hù)范圍應(yīng)由所附權(quán)利要求規(guī)定的為準(zhǔn)。權(quán)利要求1.一種補(bǔ)償存儲(chǔ)器缺損的解碼器的算法,其中,該解碼器應(yīng)用在一系統(tǒng)中,且連接在該系統(tǒng)中的一微控制器與一緩沖存儲(chǔ)器之間;該算法包括下列步驟a、每一次該系統(tǒng)開(kāi)機(jī)時(shí),該解碼器接收該微控制器的指令,對(duì)該緩沖存儲(chǔ)器作掃描,檢測(cè)緩沖存儲(chǔ)器中是否有損壞位元組;b、將與這些損壞位元組位置對(duì)應(yīng)的區(qū)塊位置記錄成一損壞區(qū)塊表;c、判別是否要將一數(shù)據(jù)寫入緩沖存儲(chǔ)器,其中(1)若是沒(méi)有,則結(jié)束數(shù)據(jù)寫入操作;(2)若是有,則選擇一緩沖存儲(chǔ)器區(qū)塊以寫入數(shù)據(jù);以及d、判別該緩沖存儲(chǔ)器區(qū)塊位置與該損壞區(qū)塊表中記錄的區(qū)塊位置是否相同,其中(1)若區(qū)塊位置相同,則回到該步驟c;(2)若區(qū)塊位置不同,則將該數(shù)據(jù)寫入該緩沖存儲(chǔ)器區(qū)塊,并且回到該步驟c;借此使得該數(shù)據(jù)寫入一良好的緩沖存儲(chǔ)器區(qū)塊。2.如權(quán)利要求1所述的算法,其中該數(shù)據(jù)可以是光盤數(shù)據(jù)。3.如權(quán)利要求1所述的算法,其中該數(shù)據(jù)可以是光盤經(jīng)解碼后的數(shù)據(jù)。4.如權(quán)利要求1所述的算法,其中該系統(tǒng)是光盤驅(qū)動(dòng)器。5.如權(quán)利要求1所述的算法,其中該系統(tǒng)是高密度光盤驅(qū)動(dòng)器。6.如權(quán)利要求1所述的算法,其中該系統(tǒng)是硬盤驅(qū)動(dòng)器。7.一種補(bǔ)償存儲(chǔ)器缺損電路的解碼器的算法,其中,該解碼器應(yīng)用在一系統(tǒng)中,它至少包括一跳過(guò)損壞區(qū)塊電路與一乘法器及加法器組合電路,且連接在該系統(tǒng)中的一微控制器與一緩沖存儲(chǔ)器之間,該算法包括下列步驟a、每一次系統(tǒng)開(kāi)機(jī)時(shí),解碼器接收該微控制器的指令,對(duì)該緩沖存儲(chǔ)器作掃描,檢測(cè)該緩沖存儲(chǔ)器中是否有損壞區(qū)塊;b、將該緩沖存儲(chǔ)器的損壞區(qū)塊號(hào)碼設(shè)定在跳過(guò)損壞區(qū)塊電路的一損壞區(qū)塊存取寄存器陣列中;c、當(dāng)該解碼器使用該緩沖存儲(chǔ)器時(shí),一要使用的區(qū)塊號(hào)碼經(jīng)由跳過(guò)損壞區(qū)塊電路,轉(zhuǎn)換成一新區(qū)塊號(hào)碼,以跳過(guò)該緩沖存儲(chǔ)器的損壞區(qū)塊號(hào)碼;以及d、該新區(qū)塊號(hào)碼經(jīng)由乘法器及加法器組合電路,轉(zhuǎn)換成一要使用的緩沖存儲(chǔ)器區(qū)塊地址。8.如權(quán)利要求7所述的算法,其中該系統(tǒng)是光盤驅(qū)動(dòng)器。9.如權(quán)利要求7所述的算法,其中該系統(tǒng)是高密度光盤驅(qū)動(dòng)器。10.如權(quán)利要求7所述的算法,其中該系統(tǒng)是硬盤驅(qū)動(dòng)器。全文摘要一種補(bǔ)償存儲(chǔ)器缺損的解碼器算法,其中,解碼器連接在一系統(tǒng)中的微控制器與緩沖存儲(chǔ)器之間,該算法的步驟是:每次系統(tǒng)開(kāi)機(jī)時(shí),解碼器接收微控制器的指令,掃描并檢測(cè)緩沖存儲(chǔ)器中的損壞位元組;將與這些損壞位元組位置對(duì)應(yīng)的區(qū)塊位置記錄成損壞區(qū)塊表;然后,判別是否要將數(shù)據(jù)寫入緩沖存儲(chǔ)器并選擇寫入數(shù)據(jù)的緩沖存儲(chǔ)器區(qū)塊;再將此區(qū)塊位置與損壞區(qū)塊表比較,借此使得數(shù)據(jù)寫入良好的緩沖存儲(chǔ)器區(qū),以保持?jǐn)?shù)據(jù)存取的正確性。文檔編號(hào)G11B7/00GK1185618SQ9612323公開(kāi)日1998年6月24日申請(qǐng)日期1996年12月19日優(yōu)先權(quán)日1996年12月19日發(fā)明者陳志賢申請(qǐng)人:聯(lián)華電子股份有限公司