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