專利名稱:盤驅(qū)動(dòng)器仿真器的糾錯(cuò)方法與裝置的制作方法
本申請(qǐng)為名為“多用途糾錯(cuò)計(jì)算電路”的Zook于1994年9月16日提交的美國(guó)專利申請(qǐng)(序列號(hào)08/306,918)的部分繼續(xù)申請(qǐng);后者又為名為“有限域反演”的Zook于1994年11月4日提交的美國(guó)專利申請(qǐng)(序列號(hào)08/147,758)的部分繼續(xù)申請(qǐng),通過引用將它們都結(jié)合在此。
本發(fā)明涉及計(jì)算機(jī)技術(shù),更具體地涉及帶有改進(jìn)的糾錯(cuò)的固態(tài)盤驅(qū)動(dòng)器仿真設(shè)備。
計(jì)算機(jī)系統(tǒng)廣泛采用硬磁盤驅(qū)動(dòng)器供大容量存儲(chǔ)。然而磁盤驅(qū)動(dòng)器是笨重的,需要復(fù)雜的讀/寫電子器件,并采用容易出現(xiàn)可靠性問題的高精度運(yùn)動(dòng)機(jī)械部件。再者,盤驅(qū)動(dòng)器需要大量電力,因此在便攜式計(jì)算機(jī)中使用不大令人滿意。
諸如快速EEPROM等非易失性固態(tài)存儲(chǔ)器設(shè)備的存儲(chǔ)密度的劇烈提高,允許固態(tài)盤驅(qū)動(dòng)器仿真磁盤驅(qū)動(dòng)器供計(jì)算機(jī)系統(tǒng)中大容量存儲(chǔ)。類似于磁盤驅(qū)動(dòng)器,非易失性固態(tài)盤驅(qū)動(dòng)器即使在電源斷開后也能保持?jǐn)?shù)據(jù)。相對(duì)于磁盤驅(qū)動(dòng)器而言,由于快速存儲(chǔ)器沒有運(yùn)動(dòng)部件所以是廉價(jià)與更可靠的。再者,固態(tài)盤驅(qū)動(dòng)器使用較少的復(fù)雜讀/寫電子器件并消耗較少功率。通常,PCMCIA插件將快速EEPROM包含進(jìn)緊致與便攜式設(shè)備中。因此,固態(tài)盤驅(qū)動(dòng)器更適用于諸如便攜式計(jì)算機(jī)等特殊應(yīng)用。
明顯地,采用固態(tài)盤具有一些缺點(diǎn),從而避免了使磁盤驅(qū)動(dòng)器過時(shí)。例如,在磁盤驅(qū)動(dòng)器中存儲(chǔ)極大量數(shù)據(jù)(數(shù)億字節(jié))比在固態(tài)驅(qū)動(dòng)器中遠(yuǎn)為便宜。而且諸如快速EEPROM等固態(tài)存儲(chǔ)器只有有限的壽命并在一定次數(shù)的擦除/寫入周期(通常為1,000至10,000周期)之后會(huì)是不可靠的。另一缺點(diǎn)是從損壞的存儲(chǔ)單元或漏泄的存儲(chǔ)單元產(chǎn)生的錯(cuò)誤會(huì)使固態(tài)盤驅(qū)動(dòng)器更不可靠。
克服損壞的存儲(chǔ)單元導(dǎo)致的錯(cuò)誤的一種方法公開在頒發(fā)給Harari等人的5,297,148號(hào)美國(guó)專利中。Harari專利公開了用冗余單元取代損壞的存儲(chǔ)單元的方法。在故障圖中存儲(chǔ)將損壞的單元的地址連接到替代單元的故障指針。每一次存取損壞的單元時(shí),用來自替代單元的好數(shù)據(jù)取代其壞數(shù)據(jù)。然而這一方法的缺點(diǎn)在于只在制造期間執(zhí)行故障映像而并不彌補(bǔ)在正常操作期間出故障的單元。再者,快速EEPROM設(shè)備中的故障率隨擦除/寫入周期的增加而增加。
通常采用磁盤驅(qū)動(dòng)器的傳統(tǒng)糾錯(cuò)(ECC)來補(bǔ)償經(jīng)過一段時(shí)間之后成為損壞的單元所導(dǎo)致的錯(cuò)誤及漏泄的單元導(dǎo)致的軟錯(cuò)誤。然而磁盤ECC系統(tǒng)是為與磁性記錄相關(guān)的錯(cuò)誤優(yōu)化的。磁性記錄中的錯(cuò)誤通常是由磁性介質(zhì)中的缺陷導(dǎo)致的不同長(zhǎng)度的脈沖串錯(cuò)誤(若干順序位)。傳統(tǒng)的ECC系統(tǒng)采用復(fù)雜的糾錯(cuò)算法來糾正這些錯(cuò)誤。從而實(shí)現(xiàn)這些算法需要費(fèi)電與昂貴的復(fù)雜電路。再者,用來檢測(cè)與糾正與磁性記錄相關(guān)的錯(cuò)誤的復(fù)雜算法中內(nèi)在的可觀的等待時(shí)間量會(huì)減慢設(shè)備的總的存取時(shí)間。
與固態(tài)盤驅(qū)動(dòng)器相關(guān)的錯(cuò)誤與磁盤驅(qū)動(dòng)器明顯不同。通常,固態(tài)盤驅(qū)動(dòng)器每一扇區(qū)出現(xiàn)一位或兩位的錯(cuò)誤。這些錯(cuò)誤通常由有缺陷的單元(硬錯(cuò)誤)或漏泄一段時(shí)間的單元(軟錯(cuò)誤)引起。為了糾正通常與快速存儲(chǔ)器關(guān)聯(lián)的每一扇區(qū)一位或兩位的錯(cuò)誤,動(dòng)用糾正與磁性介質(zhì)相關(guān)的錯(cuò)誤的復(fù)雜糾錯(cuò)算法是低效的。
因此,本發(fā)明的總目的為提供能在計(jì)算機(jī)系統(tǒng)中用作非易失性存儲(chǔ)設(shè)備的改進(jìn)的快速EEPROM固態(tài)盤驅(qū)動(dòng)器。另一目的為減少糾正通常與用作固態(tài)盤驅(qū)動(dòng)器的存儲(chǔ)元件的快速EEPROM關(guān)聯(lián)的每一扇區(qū)一位或兩位錯(cuò)誤的類型的復(fù)雜性與等待時(shí)間。
提供了用于糾正存儲(chǔ)在仿真盤驅(qū)動(dòng)器的固態(tài)非易失性存儲(chǔ)器(12)中的每一扇區(qū)多達(dá)兩位的糾錯(cuò)系統(tǒng)(10)。該糾錯(cuò)系統(tǒng)(10)包括一個(gè)ECC/余數(shù)發(fā)生器100、一組余數(shù)寄存器(102)及一計(jì)算電路(104),它們?nèi)谝豢刂破?106)的監(jiān)控下。在寫入存儲(chǔ)器操作期間,糾錯(cuò)系統(tǒng)(10)生成供存儲(chǔ)在存儲(chǔ)器(12)中的ECC字節(jié)。在寫操作中,使用從存儲(chǔ)器(12)得到的整個(gè)扇區(qū)來生成ECC校驗(yàn)余數(shù)字節(jié)REM0-REM3。利用校驗(yàn)余數(shù)字節(jié)REM0-REM3生成校正子S1,S3及一因子SB,又利用該校正子來得到一個(gè)或兩個(gè)出錯(cuò)單元位置(αL1,αL2)。數(shù)學(xué)計(jì)算電路(104)不僅生成校正子S1,S3與因子SB以及出錯(cuò)單元位置(αL1,αL2),還生成位錯(cuò)誤在扇區(qū)中的地址(L1-64[補(bǔ)碼],L2-64[補(bǔ)碼])。
從下面示出在附圖中的較佳實(shí)施例的更具體的描述中,本發(fā)明的上述與其它目的、特征與優(yōu)點(diǎn)將一目了然,附圖中的參照字符在全體各視圖中指相同的部件。附圖沒有必要按比例,而是將重點(diǎn)放在展示本發(fā)明的原理上。
圖1為包括一微控制器、盤控制器、盤仿真系統(tǒng)、兩位脈沖串糾錯(cuò)系統(tǒng)及存儲(chǔ)器陣列的固態(tài)盤驅(qū)動(dòng)器的概要圖。
圖2為包含在圖1的固態(tài)盤驅(qū)動(dòng)器中的糾錯(cuò)系統(tǒng)的示意性方框圖。
圖3為包含在圖2的糾錯(cuò)系統(tǒng)中的ECC/余數(shù)發(fā)生器的示意性方框圖。
圖4為包含在圖2的糾錯(cuò)系統(tǒng)中的一組余數(shù)寄存器的示意性方框圖。
圖5A為包含在圖2的糾錯(cuò)系統(tǒng)中的計(jì)算電路的第一部分的示意性方框圖。
圖5B為包含在圖2的糾錯(cuò)系統(tǒng)中的計(jì)算電路的第二部分的示意性方框圖。
圖6為包含在圖5A的計(jì)算電路中的乘法器電路的示意性方框圖。
圖7為展示圖2的糾錯(cuò)系統(tǒng)在寫操作中所執(zhí)行的總步驟的流程圖。
圖8為展示圖2的糾錯(cuò)系統(tǒng)在讀操作中所執(zhí)行的總步驟的流程圖。
圖9示出由軌道的行與扇區(qū)的列組成的存儲(chǔ)器陣列的數(shù)據(jù)格式。
圖10為展示包含在圖2的糾錯(cuò)系統(tǒng)的讀操作中的對(duì)數(shù)確定操作中所執(zhí)行的總步驟的流程圖。
圖11為展示包含在圖2的糾錯(cuò)系統(tǒng)的讀操作中的對(duì)數(shù)確定操作中所執(zhí)行的更詳細(xì)的步驟的流程圖。
圖1示出本發(fā)明的固態(tài)盤驅(qū)動(dòng)器6的概要。傳統(tǒng)的盤控制器4提供固態(tài)驅(qū)動(dòng)器與主機(jī)系統(tǒng)之間的接口。盤控制器4可以是任何適當(dāng)?shù)目刂破?,包括諸如可從加州Milpitas,Cirrus Logic公司購(gòu)得的型號(hào)CL-SH350。微控制器2為盤控制器4及盤仿真器8建立初始操作參數(shù)。微控制器4還協(xié)調(diào)基于盤的命令及往來于主機(jī)的數(shù)據(jù)傳送。盤仿真器8提供仿真磁盤驅(qū)動(dòng)器必需的盤控制信號(hào)。它接收來自盤控制器4與微控制器2的典型控制信號(hào),諸如要讀/寫的道與扇區(qū)號(hào),并處理這些命令以便從/向快速EEPROM設(shè)備的存儲(chǔ)器陣列12讀/寫所請(qǐng)求的數(shù)據(jù)。一位或兩位糾錯(cuò)系統(tǒng)10檢測(cè)與糾正由損壞的或泄漏的存儲(chǔ)單元導(dǎo)致的錯(cuò)誤。對(duì)于固態(tài)盤驅(qū)動(dòng)器的控制與仿真的全面討論,參見頒發(fā)給Challa等人的名為“硬盤仿真方法與裝置”的美國(guó)專利(專利號(hào)5,291,584),通過引用將其內(nèi)容結(jié)合在此。
在固態(tài)盤驅(qū)動(dòng)器中,通常將存儲(chǔ)器陣列12的數(shù)據(jù)格式格式化成圖9中所示的道行與扇區(qū)列的陣列。道行與扇區(qū)列表示磁盤上的同心的道。如上所述,快速EEPROM存儲(chǔ)器陣列中的損壞或泄漏單元能導(dǎo)致每一扇區(qū)一位或兩位錯(cuò)誤。糾錯(cuò)系統(tǒng)10包含特別適用于糾正這些一位或兩位錯(cuò)誤的糾錯(cuò)算法。
圖2示出該糾錯(cuò)系統(tǒng)10包括一ECC/余數(shù)發(fā)生器100;一組余數(shù)寄存器102;一計(jì)算電路104;及一控制器106。將線107上的8位數(shù)據(jù)字節(jié)作用在ECC余數(shù)發(fā)生器100及MUX110的輸入端0上。參照?qǐng)D3更詳細(xì)地討論ECC/余數(shù)發(fā)生器。如此后所見,ECC/余數(shù)發(fā)生器100生成四個(gè)8位ECC字節(jié),并將它們?cè)诰€112上輸出到MUX110的輸入端1上。
再次提到糾錯(cuò)系統(tǒng)10必須在512字節(jié)扇區(qū)中定位高達(dá)兩位的錯(cuò)誤。由于在這一情況中必需一個(gè)14位多項(xiàng)式來定位一個(gè)一位錯(cuò)誤,糾正兩個(gè)一位錯(cuò)誤必需兩個(gè)14位多項(xiàng)式。由于2×14之積等于28不是8的倍數(shù),所以選擇32作為代碼生成多項(xiàng)式的長(zhǎng)度并相應(yīng)地作為此后描述的各種寄存器,尤其是參照計(jì)算器電路104。從而,代碼生成多項(xiàng)式為如下的兩個(gè)14位多項(xiàng)式及一個(gè)4位多項(xiàng)式之積G(X)=(X14+X10+X9+X6+X5+X4+X1)(X14+X6+X5+X2+1)(X4+1)=(X32+X27+X24+X23+X22+X15+X12+X7+X2+1)4位多項(xiàng)式的生成得出4位因子SB的生成,它在校驗(yàn)糾錯(cuò)系統(tǒng)10的操作中具有重大意義。
再者,糾錯(cuò)系統(tǒng)10采用面向位的代碼,即使輸入其中的數(shù)據(jù)及從其中輸出的ECC字節(jié)是以字節(jié)形式的。
ECC/余數(shù)發(fā)生器100是用四條余數(shù)輸出總線116連接到余數(shù)寄存器102組上的。參照?qǐng)D4更詳細(xì)地討論余數(shù)寄存器組102。一條一位輸出線118將余數(shù)寄存器組102連接在計(jì)算電路104上。參照?qǐng)D5A與5B更詳細(xì)地討論計(jì)算電路104。
控制器106監(jiān)控與定序糾錯(cuò)系統(tǒng)10的操作,并相應(yīng)地用控制總線120連接到ECC/余數(shù)發(fā)生器100;余數(shù)寄存器組102;及計(jì)算電路104的各個(gè)上。雖然在此沒有必要示出,但應(yīng)理解此后所討論的對(duì)MUX的各種選擇信號(hào)及操作的定時(shí)是由總的指示為控制總線120的構(gòu)成部分的控制線提供的。
計(jì)算電路104的一種功能為在作用在糾錯(cuò)系統(tǒng)10的一個(gè)扇區(qū)的數(shù)據(jù)中定位多達(dá)兩位的錯(cuò)誤。相應(yīng)地,計(jì)算電路104輸出若干信號(hào)給控制器106,其中包括NO ERRORS(無錯(cuò)誤)信號(hào);UNC信號(hào)(表示不能糾正的扇區(qū));信號(hào)L1-64[補(bǔ)碼](它提供第一錯(cuò)誤位在扇區(qū)中的地址);及信號(hào)L2-64[補(bǔ)碼](它提供第二錯(cuò)誤位在扇區(qū)中的地址)。如此后所討論的,總稱為“L”的錯(cuò)誤位定位子值L1與L2為12位值,高9位用于定位扇區(qū)中的錯(cuò)誤字節(jié);低3位用于定位錯(cuò)誤字節(jié)中的錯(cuò)誤位。
結(jié)構(gòu)ECC余數(shù)發(fā)生器如此后所描述的,ECC/余數(shù)發(fā)生器100在寫操作期間生成ECC字節(jié)而在讀操作期間生成ECC余數(shù)字節(jié)。在寫操作中利用ECC余數(shù)字節(jié)生成校正子S1與S3,后者又被用來確定錯(cuò)誤位定位子值L1與L2。
如圖3中更詳細(xì)地所示,ECC/余數(shù)發(fā)生器100包括四個(gè)ECC/余數(shù)寄存器1400-1403;一組加法器142;與門144;及線性邏輯數(shù)據(jù)發(fā)生器146。加法器1423的第一端連接在進(jìn)入數(shù)據(jù)線107上;加法器1423的第二輸入端連接在寄存器1403的輸出端上。加法器1423的輸出端連接在與門144的第一輸入端上,與門144的第二輸入端連接成接收來自控制器106的信號(hào)ECC。與門144的輸出端連接在線性邏輯數(shù)據(jù)發(fā)生器146的一個(gè)輸入端上。
線性邏輯數(shù)據(jù)發(fā)生器為一組邏輯部件,包含用于根據(jù)從與門144接收的輸入信號(hào)在總線152上輸出特定輸出信號(hào)的異或門。表1示出如何根據(jù)對(duì)線性邏輯數(shù)據(jù)發(fā)生器146的輸入信號(hào)推導(dǎo)總線152的輸出信號(hào)。表1的第一組8列用于生成總線1523的輸出信號(hào),表1的第二組8列用于生成總線1522的輸出信號(hào),表1的第三組8列用于生成總線1521的輸出信號(hào),表1的第四組8列用于生成總線1520的輸出信號(hào)。各組的第一列對(duì)應(yīng)于輸出信號(hào)的最高位,各組的最后一列對(duì)應(yīng)于輸出信號(hào)的最低位。各列中的“1”表示要異或在一起以生成輸出信號(hào)的輸入信號(hào)的位位置。例如,對(duì)于總線1523上的輸出信號(hào),輸出信號(hào)的位7是通過異或輸入信號(hào)的位4與7生成的。熟悉本技術(shù)者能很好利用表1來構(gòu)成產(chǎn)生表1所要求的輸出的電路。
線性邏輯數(shù)據(jù)發(fā)生器146具有四條輸出總線1520-1523。各線性邏輯輸出總線152為8位總線。線性邏輯輸出總線1521-1523分別連接在加法器1420-1422的第一輸入端上。線性邏輯輸出總線1520連接在ECC/余數(shù)寄存器1040的一個(gè)輸入端上。
各寄存器1400-1403的輸出端分別連接在相應(yīng)的加法器1420-1423的第二輸入端上。此外,寄存器1400-1403的輸出端分別連接在余數(shù)輸出總線1160-1163上。加法器1420-1422的輸出端分別連接在寄存器1401-1403的輸入端上。從而將寄存器140連接構(gòu)成移位寄存器,使之能將在其中生成的ECC字節(jié)(在ECC生成之后)在線112上移出到MUX110供傳輸給存儲(chǔ)器12。這方面,如此后所討論的,ECC/余數(shù)發(fā)生器100在寄存器1400中生成第一ECC字節(jié)ECC0,在寄存器1401中生成第二ECC字節(jié)ECC1,在寄存器1402中生成第三ECC字節(jié)ECC2,并在寄存器1403中生成第四ECC字節(jié)ECC3。
結(jié)構(gòu)余數(shù)寄存器圖4中更詳細(xì)地示出余數(shù)寄存器組102。更具體地,組102包含四個(gè)8位移位寄存器1020-1023,為了示例在圖4中用虛線框起寄存器1020及1022。將寄存器1022想象成具有一個(gè)6位低位部分及一個(gè)兩位高位部分。MUX1602饋入寄存器1022的低位部分的位5,MUX1602的輸入端0連接在寄存器1022的位6上。將寄存器1020想象成具有一個(gè)四位低位部分及一個(gè)四位高位部分。MUX1600饋入寄存器1020的低位部分的位3,MUX1600的輸入端口連接在寄存器1020的位4上。
余數(shù)輸出總線1163將一個(gè)8位值(并行)加載到余數(shù)寄存器1023中。余數(shù)輸出總線1162的6個(gè)低位連接成(并行)加載余數(shù)寄存器1022的(6位)低位部分。余數(shù)輸出總線1162的兩個(gè)高位連接成(并行)加載余數(shù)寄存器1022的(兩位)高位部分。余數(shù)輸出總線1161(并行)加載一個(gè)8位值到余數(shù)寄存器1021中。余數(shù)輸出總線1160的四個(gè)低位連接成(并行)加載余數(shù)寄存器1020的(四位)低位部分。余數(shù)輸出總線1160的四個(gè)高位連接成(并行)加載余數(shù)寄存器1020的(四位)高位部分。
如以圖4的底部所示的方式所組合的,余數(shù)寄存器組102也稱作SREG3、SREG1與SREGB寄存器。寄存器SREG3包含寄存器1023及寄存器1022的6個(gè)低位;寄存器SREG1包含寄存器1022的兩個(gè)高位、寄存器1021的所有位及寄存器1300的四個(gè)低位;寄存器SREGB為寄存器1020的四個(gè)高位。SREG1特別注明為用于較正子S1的最終存儲(chǔ);寄存器SREG3用于存儲(chǔ)較正子S3;而寄存器SREGB用于存儲(chǔ)因子SB。為了饋出存儲(chǔ)在SREGB、SREG1與SREG3中的值,線SREGB(0)連接在寄存器1020的位4上;線SREG1(0)連接在寄存器1021的位6上;以及線SREG3(0)連接在寄存器1023的位0上。
結(jié)構(gòu)計(jì)算電路圖5A中更詳細(xì)地示出的計(jì)算電路104包括三個(gè)初級(jí)工作寄存器;具體地說寄存器400(也稱寄存器R1);寄存器401(也稱寄存器R2);及寄存器402(也稱寄存器R3)。各寄存器400、401與402為14位移位寄存器,雖然在每一次操作中不一定必須利用全部14位。
如此后會(huì)看到的,計(jì)算電路104在存儲(chǔ)在寄存器400、401與402中的項(xiàng)上執(zhí)行多種數(shù)學(xué)運(yùn)算。作為一個(gè)實(shí)例,電路104頻繁地執(zhí)行第一項(xiàng)(存儲(chǔ)在寄存器400中以β基表示)與第二項(xiàng)(存儲(chǔ)在寄存器401中以α基表示)的乘法,并將積輸出到寄存器402中(以β基表示)。作為另一實(shí)例,用寄存器400與401的內(nèi)容執(zhí)行線性變換。又進(jìn)一步,電路104執(zhí)行其轉(zhuǎn)換與求倒。
計(jì)算電路104的進(jìn)一步細(xì)節(jié)在下面描述并且也能從名為“多用途糾錯(cuò)計(jì)算電路”的Zook在1994年9月16日提交的美國(guó)專利申請(qǐng)(代理人文件號(hào)1777-11)中公開的類似電路中理解,通過引用將該專利申請(qǐng)結(jié)合在此。
計(jì)算電路104包括一個(gè)內(nèi)積電路404,它求出寄存器400與401的內(nèi)積并輸出一串行位信號(hào)IP。內(nèi)積信號(hào)IP是通過或門406傳輸供作為啟動(dòng)信號(hào)作用在一組與門426上的。寄存器402的各位連接到組426中一個(gè)對(duì)應(yīng)與門的一個(gè)輸入端上。包含在組426中的與門的輸出端連接到加法器組428中的相應(yīng)加法器的“B”輸入端上。寄存器401的位連接到加法器組426的對(duì)應(yīng)“A”輸入端上。
寄存器400、401與402具有分別用于有選擇地加載數(shù)據(jù)的開關(guān)系統(tǒng)430、431與432。數(shù)據(jù)的轉(zhuǎn)換(總是串行的)進(jìn)寄存器400是受開關(guān)系統(tǒng)430控制的。開關(guān)系統(tǒng)430包含MUX430A與430B。MUX430B的一個(gè)輸出端連接到寄存器400的一個(gè)數(shù)據(jù)輸入端上。MUX430B的一個(gè)數(shù)據(jù)輸入端連接到MUX430A的輸出端上。MUX430A的其它數(shù)據(jù)輸入端連接到線FULL_FIELD、R3_OUT、SREG1(0)[見圖4]及SREG3(0)[見圖4]上。
MUX 430A的數(shù)據(jù)輸入端連接到反饋系統(tǒng)436上,后者為全字段值或子字段值提供反饋乘積。具體地,反饋系統(tǒng)436包括用于將寄存器400乘以一個(gè)全字段反饋常數(shù)的異或門436A及用于將寄存器400乘以一個(gè)子字段常數(shù)的異或門436B。門436A與436B異或的位位置取決于所利用的字段生成多項(xiàng)式。在示出的實(shí)例中,全字段生成多項(xiàng)式為X14+X10+X9+X6+X5+X4+1而子字段生成多項(xiàng)式為X7+X5+X3+X+1。從而將位0、4、5、6、9與10連接到異或門436A;位7、8、10與12連接到異或門436B。異或門436A的輸出端連接到MUX430A的第一數(shù)據(jù)輸入端;異或門436B的輸出端連接到MUX430A的第二數(shù)據(jù)輸入端。
數(shù)據(jù)是經(jīng)由開關(guān)系統(tǒng)431加載進(jìn)寄存器401中的。開關(guān)系統(tǒng)431包括并行加載MUX431A;串行加載MUX431B;及前置MUX431C。并行加載MUX431A的輸出端連接在寄存器401的各位上。寄存器401的一個(gè)串行輸入針連接在串行加載MUX431B的一個(gè)輸出端上。連接在串行加載MUX431B的輸入端上的可選擇線包括來自MUX431C的輸出線;線R3_OUT;線SREG1(0)[見圖4];及線SREG3(0)[見圖4]。
計(jì)算電路104還包括LIN440。在示出的實(shí)施例中,LIN440為其中存儲(chǔ)有查找表的ROM,包含用于如此后所述執(zhí)行用于“y”的線性組合的查找表及用于尋找供在線性組合運(yùn)算中使用的值的查找表,這一運(yùn)算得出錯(cuò)誤指針的子字段元素X1,X0。LIN440是輸出執(zhí)行用于“y”的線性組合的值還是輸出子字段值取決于從控制器106作用在其上的選擇信號(hào)。LIN440的14位輸出端并行連接在并行加載MUX431A的輸入端之一上。
如上所述,并行加載MUX431A的一個(gè)數(shù)據(jù)輸入端連接在LIN440的輸出端上。MUX431A的第二數(shù)據(jù)輸入端連接成接收加法器組428的并行輸出。
數(shù)據(jù)經(jīng)由開關(guān)系統(tǒng)432加載進(jìn)寄存器402中。開關(guān)系統(tǒng)431包括并行加載MUX432A;串行加載MUX432B;及前置MUX432C。MUX432A的第一數(shù)據(jù)輸入端連接在寄存器402的位上;MUX432A的第二數(shù)據(jù)輸入端連接在乘法器電路450的一個(gè)輸出端上。
乘法器電路450能有選擇地參加除法運(yùn)算;參加基轉(zhuǎn)換;或?qū)⑤斎肫渲械闹?從寄存器402并行加載的)乘以α或α3。從圖6中可理解乘法器電路450的結(jié)構(gòu)。圖6的上方部分示出如何將乘法器的輸入與輸出端連接成乘以α;圖6的下方部分示出如何將乘法器的輸入與輸出端連接成乘以α3。乘以α3發(fā)生在校正子生成期間,因此在校正子生成期間作用的控制信號(hào)ENA DIV得出正在經(jīng)由內(nèi)部MUX輸出用α3的積。乘法器電路450的輸出端連接在MUX432A的輸入端上。
寄存器402的串行加載輸入端連接在串行加載寄存器432B的一個(gè)輸出端上。MUX432B的第一輸入端連接在MUX432C的輸出端上。MUX432B的第二輸入端連接在或門406的輸出端上。前置MUX432C的第一輸入端連接在反饋電路460上;前置MUX432C的第二輸入端連接在線SREG1(0)上[見圖4]。
反饋電路460包含與門462及異或門464。異或門464連接在寄存器402的位1、3、6與7上。異或門464的輸出端連接在與門462的第一輸入端上。與門462的第二輸入端連接在一個(gè)啟動(dòng)信號(hào)上。
圖5A中還示出一個(gè)校正子發(fā)生與門470,其第一端連接在線SREG3(0)上,其第二端連接成接收校正子啟動(dòng)控制信號(hào)ENA DIV。與門470的輸出端連接在異或門436A的一個(gè)輸入端上。
寄存器402的位0與13連接在MUX472的第一與第二數(shù)據(jù)輸入端上。MUX472的輸出端連接在異或門474的第一輸入端上。異或門474的第二輸入端連接成接收一個(gè)控制信號(hào)。異或門474的輸出端連接在線R3-OUT上,后者分別經(jīng)由MUX430B與431B連接在寄存器400與401上。
如圖5B中所示,計(jì)算電路104還包括一個(gè)LOG ROM480;加法器482與484;加法器輸入MUX486與488;非門490;及包含低位累加器500L與高位累加器500H的累加器寄存器500。將來自寄存器402的位7-13的數(shù)據(jù)并行加載到LOG ROM480中。LOG ROM480的一個(gè)7位輸出端連接在MUX488的第一輸入端及非門490上。MUX488的輸出端連接到加法器484的B輸入端上。加法器484的第二輸入端連接在高位累加器500H的輸出端上。高位累加器500H的輸出端還連接在MUX486的第一輸入端上;MUX486的第二輸入端連接在低位累加器500L的輸出端上。MUX486的輸出端連接在加法器482的第一輸入端上,加法器482的第二輸入端連接在非門490的輸出端上。加法器482的輸出端連接在低位累加器500L的數(shù)據(jù)輸入端上。加法器484的輸出端連接在高位累加器500H的數(shù)據(jù)輸入端上。加法器482的“進(jìn)位”輸出針連接在加法器484的“進(jìn)位入”輸入針上。
操作概述糾錯(cuò)系統(tǒng)10參與寫與讀操作(諸如將信息存儲(chǔ)到非易失性存儲(chǔ)器12及訪問存儲(chǔ)在非易失性存儲(chǔ)器12中的信息的操作)。在寫入一個(gè)扇區(qū)到存儲(chǔ)器12中,將512個(gè)數(shù)據(jù)字節(jié)及多達(dá)4個(gè)標(biāo)題字節(jié)傳輸給糾錯(cuò)系統(tǒng)10。利用一個(gè)扇區(qū)的這512個(gè)數(shù)據(jù)字節(jié)及多達(dá)4個(gè)標(biāo)題字節(jié),糾錯(cuò)系統(tǒng)10生成4個(gè)ECC字節(jié)。在從非易失性存儲(chǔ)器12中讀存儲(chǔ)的信息中,糾錯(cuò)系統(tǒng)10的ECC/余數(shù)發(fā)生器100利用這512個(gè)數(shù)據(jù)字節(jié)、4個(gè)標(biāo)題字節(jié)及4個(gè)ECC字節(jié)生成ECC校驗(yàn)余數(shù)。計(jì)算電路104利用ECC校驗(yàn)余數(shù)生成校正子S1與S3。進(jìn)而利用校正子S1、S3來判定該扇區(qū)是否無錯(cuò)誤,扇區(qū)中是存在一個(gè)還是兩個(gè)錯(cuò)誤位,以及該扇區(qū)中的一個(gè)或兩個(gè)錯(cuò)誤位位置(L1-64[補(bǔ)碼]與L2-64[補(bǔ)碼])。
操作寫操作在寫操作中,將512個(gè)字節(jié)的數(shù)據(jù)(冠以多達(dá)4個(gè)字節(jié)的標(biāo)題)作用在既到達(dá)MUX110端又到達(dá)糾錯(cuò)系統(tǒng)10的線107上。作用在MUX110上的數(shù)據(jù)(冠以多達(dá)4個(gè)標(biāo)題字節(jié))是傳輸?shù)椒且资源鎯?chǔ)器12的。
當(dāng)一個(gè)新扇區(qū)作用在到達(dá)糾錯(cuò)系統(tǒng)10的線107上時(shí),清除包含寄存器140在內(nèi)的所有寄存器(見圖7中步驟7-1)并由控制器106發(fā)送一個(gè)ECC生成啟動(dòng)信號(hào)ECC到門144(步驟7-2)。
步驟7-3示出標(biāo)題字節(jié)與數(shù)據(jù)字節(jié)正在作用到糾錯(cuò)系統(tǒng)10,具體地到加法器1423的第一輸入端上(見圖3)。輸入數(shù)據(jù)是作為二進(jìn)制值多項(xiàng)式D(X)對(duì)待的,其中各字節(jié)提供8個(gè)系數(shù)給D(X)。各字節(jié)的位0為來自各字節(jié)的最高次系數(shù)。對(duì)于寫操作,D(X)包括可選用的標(biāo)題字節(jié)后隨數(shù)據(jù)字節(jié)。ECC/余數(shù)發(fā)生器100展開ECC多項(xiàng)式。
ECC(X)=D(X)X32mod G(X)從而各扇區(qū)能作為一個(gè)碼字C(X)寫入非易失性存儲(chǔ)器12中,其中
C(X)=D(X)X32+ECC(X)。
從而,按照上文,步驟7-3描述作用512個(gè)字節(jié)數(shù)據(jù)(冠以多達(dá)4個(gè)字節(jié)標(biāo)題)到加法器1423上,每一時(shí)鐘一個(gè)字節(jié)。隨著各字節(jié)的作用,進(jìn)入的字節(jié)被加法器1423加上(異或)當(dāng)前存儲(chǔ)在寄存器1403中的字節(jié)。由于門144已被ECC信號(hào)接通(見步驟7-2),來自加法器1423的和作用在線性邏輯數(shù)據(jù)發(fā)生器146上。
如上面討論的,根據(jù)輸入其中的8位模式,線性邏輯數(shù)據(jù)發(fā)生器146在其輸出總線1520-1523上輸出字節(jié)。線性邏輯數(shù)據(jù)發(fā)生器146輸出的信號(hào)是為各輸出總線152在每一時(shí)鐘唯一地確定。輸出總線1521-1523上的信號(hào)分別作用在加法器1420-1422的輸入端上。輸出總線1520上的信號(hào)作用在寄存器1400的輸入端上。隨著各時(shí)鐘,求和(異或)輸入到加法器142的信號(hào)并加載進(jìn)各自的下游寄存器140中(即圖3中位于加法器142的右側(cè)或輸出側(cè)的寄存器)。
在以上述方式輸入且由ECC/余數(shù)發(fā)生器100運(yùn)算了所有數(shù)據(jù)字節(jié)與標(biāo)題字節(jié)之后(步驟7-3),在步驟7-4,控制器106關(guān)掉信號(hào)ECC,表示已完成了四個(gè)ECC字節(jié)的生成。此時(shí),四個(gè)ECC字節(jié)ECC3、ECC2、ECC1、ECC0分別位于寄存器1403-1400中。然后在步驟7-5,作為該扇區(qū)的ECC字節(jié)移位出寄存器140的內(nèi)容。為了ECC字節(jié)ECC3、ECC2、ECC1、ECC0能向右移位出寄存器1403-1400,首先將字節(jié)ECC3的字節(jié)位0作用在到達(dá)MUX110的線112上(供輸出到非易失性存儲(chǔ)器12)。從而第一ECC字節(jié)ECC3來自R(X)的高位端而各ECC字節(jié)中的最高次R(X)系數(shù)為該字節(jié)的位0。隨著字節(jié)ECC3移位出寄存器1403,ECC字節(jié)向右移位,使得ECC字節(jié)ECC0、ECC1、ECC2接著分別位于寄存器1401-1403中。字節(jié)ECC2接著移位出,在連續(xù)的時(shí)鐘周期中后面跟著字節(jié)ECC1與ECC0。
從而,在完成圖7中所示的寫操作時(shí),ECC/余數(shù)發(fā)生器100已生成與輸出四個(gè)ECC字節(jié)ECC3、ECC2、ECC1、ECC0,這些ECC字節(jié)跟在扇區(qū)數(shù)據(jù)字節(jié)后面輸出到非易失性存儲(chǔ)器12。
讀操作在讀操作中(一般性地示出在圖8中),糾錯(cuò)系統(tǒng)10的ECC/余數(shù)發(fā)生器100利用512個(gè)數(shù)據(jù)字節(jié)、4個(gè)標(biāo)題字節(jié)及4個(gè)ECC字節(jié)生成4個(gè)ECC校驗(yàn)余數(shù)字節(jié)。計(jì)算電路104利用ECC校驗(yàn)余數(shù)生成校正子S1與S3。進(jìn)一步利用校正子S1、S3來判定該扇區(qū)是否無錯(cuò)誤,扇區(qū)中有一個(gè)還是兩個(gè)錯(cuò)誤位,及扇區(qū)中一個(gè)或兩個(gè)出錯(cuò)地址(L1-64[補(bǔ)碼]及L2-64[補(bǔ)碼])。
現(xiàn)在更具體地參見圖8的各步驟,在步驟8-1,將糾錯(cuò)系統(tǒng)10的所有寄存器清零。在步驟8-2,將“ECC”發(fā)生信號(hào)接通,以使能與門144。
在步驟8-3,逐個(gè)字節(jié)地將從非易失性存儲(chǔ)器12得到的扇區(qū)作用在糾錯(cuò)系統(tǒng)10上,具體地到達(dá)加法器1423的線107上。R(X)是在讀扇區(qū)時(shí)接收的多項(xiàng)式,R(X)=C(X)+E(X),其中C(X)為想要存儲(chǔ)在非易失性存儲(chǔ)器12中的原扇區(qū),而E(X)為所接收的扇區(qū)的錯(cuò)誤多項(xiàng)式。在執(zhí)行步驟8-3中,得出余數(shù)多項(xiàng)式REM(X),其中REM(X)=R(X)X32mod G(X)=E(X)X32mod G(X)。從而,在步驟8-3,包含ECC字節(jié)在內(nèi)的扇區(qū)的所有字節(jié)輸入到ECC/余數(shù)發(fā)生器100中。以上面參照步驟7-4描述的類似的校正子生成方式,加法器142將線107上進(jìn)入的字節(jié)與寄存器1403的內(nèi)容相加,并將和(經(jīng)由與門144)輸出到線性邏輯數(shù)據(jù)發(fā)生器146。以前面描述的方式利用表1,線性邏輯數(shù)據(jù)發(fā)生器146在總線152上輸出信號(hào)。直接將總線1520上的信號(hào)加載進(jìn)寄存器1400中,(分別由加法器1420-1422)將總線1521-1523上的信號(hào)與上游寄存器140的原有內(nèi)容分別異或以生成新值供存儲(chǔ)在寄存器1401-1403中。在步驟8-3結(jié)束時(shí),寄存器1400-1403中將包含ECC校驗(yàn)余數(shù)字節(jié)REM0、REM1、REM2、REM3。
在步驟8-4,分別在總線1160-1163上將校驗(yàn)余數(shù)字節(jié)REM0-REM3并行加載進(jìn)余數(shù)寄存器1020-1023中。然后在步驟8-5,生成校正子S1、S3及因子SB。
校正子S1、S3及因子SB生成如下S1=R(X)X32|X=α=REM(α)S3=R(X)X32|X=α3=REM(α3)SB=REM(X)mod(X4+1)在步驟8-5生成校正子S1、S3及因子SB中,接通校正子生成與門470并將來自寄存器102(輸出在線SREG3(0)上)的32位值串行饋送到各寄存器400、401與402。對(duì)32個(gè)時(shí)鐘,用反饋計(jì)時(shí)寄存器400、401與402。寄存器400的反饋是用異或門436A施加的,寄存器401的反饋是從其位10施加的,寄存器402的反饋是由α乘法器450提供的α3乘法施加的。在32個(gè)時(shí)鐘結(jié)束時(shí),校正子S1與S3分別位于寄存器400與402中,而因子SB則位于寄存器401中。
在步驟8-7,校驗(yàn)是否校正子S1=校正子S3=因子SB=0。如果步驟8-7的校驗(yàn)是肯定的,控制器106知道該扇區(qū)不包含錯(cuò)誤而結(jié)束錯(cuò)誤定位與糾正操作。否則,處理以步驟8-9繼續(xù)進(jìn)行。
在步驟8-9,計(jì)算值“C”如下 更詳細(xì)地描述計(jì)算電路104的“C”計(jì)算,在子步驟8-9(1)進(jìn)行求倒運(yùn)算,從而將1/S1加載進(jìn)寄存器401中。在這一求倒中,寄存器400(包含量S1)接收13個(gè)反饋時(shí)鐘,此后在寄存器401中得出(以α基表示的)倒數(shù)量。
在子步驟8-9(1)的求倒之后,在子步驟8-9(2),將量1/S1(以α基表示)移入寄存器402中。在子步驟8-9(3)將量1/S1轉(zhuǎn)換成β基表示并結(jié)束在寄存器400中。在子步驟8-9(4),將寄存器400中的量1/S1(以β基表示)乘以寄存器401中的量1/S1(以α基表示),將積[以β表示的1/S12]生成在寄存器402中。然后在子步驟8-9(5),將寄存器402的內(nèi)容[以β表示的1/S12]送至寄存器400供進(jìn)一步用寄存器401中的量1/S1[以α基表示]相乘(子步驟8-9(6)),在寄存器402中產(chǎn)生以β表示的積1/S13。在子步驟8-9(7),將寄存器402的內(nèi)容[β表示的1/S13]送至寄存器400并將存儲(chǔ)在寄存器SREG3中的值(即S3)加載進(jìn)寄存器401。在子步驟8-9(8)將寄存器400與401的內(nèi)容相乘,從而在寄存器402中生成積S3/S13[β表示]。在子步驟8-9(9)將積S3/S13[β表示]移到寄存器400并在其上加上α°(1),從而上述“C”的表達(dá)式在寄存器400中。
在步驟8-10判定“C”的“痕跡”(trace)(“tr”)是否為零。步驟8-10的判定采取將存儲(chǔ)在寄存器400中的“C”的位4與8加在一起的方法。如果“C”的痕跡為零,則控制器106輸出一個(gè)信號(hào)(在步驟8-11)說明該扇區(qū)是不能糾正的。
假定“C”的痕跡非零,則在步驟8-12校驗(yàn)“C”的值是否為零。如果“C”的值為零,控制器106知道(由步驟8-13表示)該扇區(qū)中只有一個(gè)錯(cuò)誤,且該錯(cuò)誤的位置(αL1)為校正子S1。
如果C不等于零,控制器106知道該扇區(qū)有兩個(gè)錯(cuò)誤(具有位置αL1與αL2)。在確定錯(cuò)誤位置值αL1與αL2之前,必須找到一個(gè)y使得y2+y+c=0在步驟8-14,通過取下述線性組合得出y的位yk=∑jak,jCj在步驟8-14取線性組合時(shí),應(yīng)記住“C”存儲(chǔ)在寄存器400中。從而,為了取得線性組合,對(duì)各時(shí)鐘循環(huán),必須將“ak,j”的一個(gè)適當(dāng)?shù)闹导虞d進(jìn)寄存器401中?!癮k,j”的值是從LIN440得到的。從LIN440輸出的“ak,j”的具體值可參照表2得知。例如,為a0,j輸出表2的最后一列,最后一列的最上面一位為a0,0。為a1,j輸出表2的最后第二列,對(duì)于14個(gè)和的各個(gè)依次類推,構(gòu)成“y”的總和。y的線性組合[α基表示]生成在寄存器402中。
在步驟8-14確定了y之后,在步驟8-15計(jì)算電路104便能在扇區(qū)中有兩個(gè)錯(cuò)誤的情況中計(jì)算αL1。具體地,在兩個(gè)錯(cuò)誤的情況中,αL1是由步驟8-15指示的αL1=S1y。當(dāng)然在一個(gè)錯(cuò)誤的情況中,αL1已經(jīng)確定為S1(如上面確定的,見步驟8-12與8-13)。在一個(gè)錯(cuò)誤的情況中,將S1移到寄存器402中。
結(jié)合步驟8-15,在子步驟8-15(1)將校正子S1(β表示)移入寄存器400中。將值y(α基表示)移入寄存器401中。然后在子步驟8-15(2)將寄存器400與401相乘,在寄存器402中生成結(jié)果αL1=S1y(β表示)。在子步驟8-15(3),將αL1=S1y保存在寄存器SREG3中(見圖4)。
步驟8-16包含確定αL2,具體地,αL2=S1+αL1。從而,在子步驟8-16(1)將校正子S1從寄存器SREG1復(fù)制到寄存器401中。在子步驟8-16(2),將寄存器401與402相加,從而在寄存器402中得到結(jié)果αL2=S1+αL1(β表示)。在子步驟8-16(3),將結(jié)果αL2=S1+αL1存儲(chǔ)在寄存器400中。
這樣,在為兩位錯(cuò)誤情況完成了步驟8-15與8-16時(shí),便確定了αL1與αL2的值。在步驟8-17,通過確定logαL1與logαL2而確定L1及(為兩個(gè)錯(cuò)誤情況)L2。從參照?qǐng)D10更詳細(xì)地討論的對(duì)數(shù)運(yùn)算中可以了解這一對(duì)數(shù)確定的細(xì)節(jié)。
作為步驟8-17的對(duì)數(shù)確定的結(jié)果,最終為每一錯(cuò)誤位得到一個(gè)14位地址值。只利用地址中的12位,其中地址值的位4-11表示扇區(qū)的出錯(cuò)字節(jié)而地址值的位0-3表示出錯(cuò)字節(jié)內(nèi)的出錯(cuò)位。
在步驟8-18控制器106校驗(yàn)L1與L2的值的適當(dāng)位地址次序來判定該扇區(qū)是否能糾正及提供關(guān)于錯(cuò)誤位是在數(shù)據(jù)中還是在ECC或標(biāo)題中的狀態(tài)信息。在進(jìn)行校驗(yàn)中控制器106既使用因子SB(和校正子一起生成的)還使用值L1與L2。具體地,控制器106觀察L1與L2的最低位來確定與因子SB的對(duì)應(yīng)性。這一方面,對(duì)于一個(gè)錯(cuò)誤情況,控制器106判定SB是否等于XL1mod4。對(duì)于兩個(gè)錯(cuò)誤情況,控制器106校驗(yàn)確認(rèn)SB等于XL1mod4+XL2mod4。
為了在實(shí)際尋址中能使用,應(yīng)將在步驟8-17得到的L1與L2的值置于適當(dāng)?shù)奈淮涡蛑小亩诓襟E8-19通過對(duì)其中存儲(chǔ)有L1與L2的寄存器進(jìn)行求補(bǔ)而將L1與L2置于適當(dāng)次序中。
在步驟8-19確定了可用的錯(cuò)誤地址時(shí),在步驟8-20控制器106指示翻轉(zhuǎn)值L1-64[補(bǔ)碼](及在兩個(gè)錯(cuò)誤情況中的值L2-64[補(bǔ)碼])所指的錯(cuò)誤位。如果地址L1所指的出錯(cuò)位為“1”,則控制器106指令將存儲(chǔ)器12中的該位翻轉(zhuǎn)為“0”。當(dāng)然這是該位能具有的唯一其它值。在兩個(gè)錯(cuò)誤情況中對(duì)地址L2所指的位進(jìn)行相同的糾正。
操作對(duì)數(shù)確定圖10中描述了與確定錯(cuò)誤位置值αL1與αL2的對(duì)數(shù)相關(guān)的一般步驟。不是單獨(dú)地示出αL1與αL2的對(duì)數(shù)確定,圖10示出用于確定一個(gè)代表性錯(cuò)誤定位子值αL(它可能是αL1或αL2)的對(duì)數(shù)的步驟。
對(duì)數(shù)確定通常包含查閱諸如存儲(chǔ)在存儲(chǔ)器中的查找表。鑒于確定諸如αL這樣的14位量的對(duì)數(shù)包含查詢極大的查找表這一事實(shí),本發(fā)明在步驟10-1將錯(cuò)誤位置值αL轉(zhuǎn)換成其子字段表示,即兩個(gè)7位元素X1與X0。此后如步驟10-2所述糾錯(cuò)系統(tǒng)10確定值J,其中J=log(αsX12+αs49X1X0+X02)。然后在步驟10-3,根據(jù)X1、X0的值選擇一個(gè)值K。利用在步驟10-2與10-3確定的值J與K,在步驟10-4如下確定尋找的值L
L=(129J+127K)64mod(127×129)。
現(xiàn)在參照?qǐng)D11更詳細(xì)地討論計(jì)算電路104在實(shí)際計(jì)算錯(cuò)誤位置值的對(duì)數(shù)的圖10的步驟中的具體操作。步驟10-1所述將αL轉(zhuǎn)換成其子字段表示包含使用字段生成式Fs(X)=X2+αs49X+αs其中使用來自GF(27)的系數(shù),GF(27)的字段生成式為X7+X5+X3+X+1其中αs為GF(27)的基本元素??蓪⒌刂乏罫從其全字段表示轉(zhuǎn)換成包含來自GF(27)的元素對(duì)X1、X0的子字段表示。X1、X0的位是通過取αL的位的線性組合取得的。如上面討論的生成“y”的線性組合(見步驟8-14),LIN440參與確定子字段元素X1、X0的線性組合。
一開始計(jì)算電路確保αL1位于寄存器400中以便能夠開始線性組合操作。然后在子步驟10-2,控制LIN440輸出能用在以αL1生成X1與X0的線性組合中的一序列14位值。
表3示出為子步驟10-2生成所示實(shí)例中的子字段值X1與X2而輸出到寄存器401的14位值。寄存器401在線性組合的各時(shí)鐘中取得不同的14位值(來自表3的不同列)。這便是,在線性組合的第一時(shí)鐘利用表3的最后一列,第二時(shí)鐘利用最后第二列,及以此類推,隨著各線性組合,輸出位IP移位進(jìn)寄存器402中。七個(gè)時(shí)鐘之后,寄存器402的高7位中包含X1(見圖1步驟11-1)。
如對(duì)步驟10-2提及的,計(jì)算電路104為確定J而工作,其中J=log(αsX12+αs49X1X0+X02)式1。J也能表示為J=log(X12(α+α49X0X1,+(X0X1)2))]]>式2J=2logX1+log(α+α49X0X1+(X0X1)2)]]>式3J=2logX1mod127+log(α+X0X1(α49+X0X1))]]>式4
參見式4,令TERM1=2logX1mod127TERM2=X0/X1TERM3=(α49+X0/X1)TERM4=(X0/X1)(α49+X0/X1)TERM5=α+(X0/X1)(α49+X0/X1)TERM6=log[α+(X0/X1)(α49+X0/X1)]利用上文中的項(xiàng)定義來說明計(jì)算電路104的以下操作。
在步驟11-1生成了X1之后(位于寄存器402的高位中),在步驟11-2將X1送至控制器106去判定是否X1=0。如果X1=0,控制器設(shè)置標(biāo)志LOG_FLAG(步驟11-3)。由于X1=0,J的表達(dá)式(見式1)簡(jiǎn)化成J=logX02式5在步驟11-4也將包含X1的寄存器402的7個(gè)高位并行加載進(jìn)LOG RAM480供確定log(X1)。在步驟11-42,參照LOG RAM480中的查找表確定log(X1)。具體地,表4示出對(duì)LOG RAM480的128種可能輸入的7位對(duì)數(shù)值,表4的第一行為輸入值0000000的輸出,表4的第二行為值0000001的輸出,及以此類推。如果在步驟11-2判定X1為零,LOG RAM480為logX1輸出值0。
基本上與步驟11-4同時(shí),在線性組合的第二組7個(gè)時(shí)鐘結(jié)束時(shí),在寄存器402的高位中生成子字段X0(步驟11-5)并將子字段值X1移位進(jìn)寄存器402的低位中。然后,如果標(biāo)志LOG_FLAG尚未設(shè)置(如在步驟11-6判定的),計(jì)算電路104進(jìn)行按照式4的更難的確定J的任務(wù)。否則,在步驟11-7計(jì)算電路104采用式5中提出的J的簡(jiǎn)化表達(dá)式。
在步驟11-7,計(jì)算電路104將子字段元素X0(現(xiàn)在在寄存器402的高位中)發(fā)送到LOG ROM480中。寄存器402的高位是可以并行加載進(jìn)LOG ROM480中的。為了找出logX0,LOG ROM480利用其查找表4,然后將log X0值發(fā)送到累加器500H中。為了得出logX02,對(duì)于乘以2累加器500H只需進(jìn)行移位(由于logX02=2logX0)。
參見累加器500,其中所有產(chǎn)生進(jìn)位出信號(hào)的運(yùn)算引起在累加器500上加上“1”。從而,累加器500始終實(shí)現(xiàn)mod(127×129)的運(yùn)算。
在標(biāo)志LOG_FLAG未設(shè)置的情況中,計(jì)算電路104執(zhí)行圖11中所示的步驟11-8至11-20。
如步驟11-8中所示,將步驟11-4確定的值log(X1)發(fā)送到累加器500的高位端(位7-13)(即到累加器500H)。
在步驟11-9,通過移位累加器ACC-H(以便將內(nèi)容乘以2)而在累加器ACC_H(即累加器500H)中得到TERM1,而如果在累加器ACC_H的一端移位出一位,則在ACC_H的低位上加“1”。對(duì)于在步驟11-8中放入累加器ACC_H的log X1值,在步驟11-9完成時(shí),該值成為TERM1(即2logX1)。
在步驟11-10構(gòu)成X1的倒數(shù)(即1/X1)。在完成了用于生成X1與X0的線性組合時(shí),值X1在寄存器402的低位中。在準(zhǔn)備X1的倒數(shù)中,將X1移入寄存器SREG1的低位中(見圖4)。為了倒數(shù)運(yùn)算,將值X1從寄存器SREG1移位進(jìn)寄存器400中。在步驟11-10,執(zhí)行倒數(shù)運(yùn)算6個(gè)時(shí)鐘,后面跟隨6個(gè)時(shí)鐘的子字段反饋(利用異或門436B)。在求倒步驟11-10的十二個(gè)時(shí)鐘結(jié)束時(shí),寄存器401的高位端包含1/X1(α表示)。
當(dāng)將X1復(fù)制到寄存器SREG1的低位(表示為SIL)時(shí),將X0從寄存器402的高位復(fù)制到寄存器SREG1的高位(表示為SIH)。
在完成了步驟11-10時(shí),計(jì)算電路已準(zhǔn)備好在步驟11-11生成TERM2(即X0/X1)。從而,將X0從寄存器SREG1的高位移位到寄存器400中。計(jì)算電路104在寄存器400與401中的值上執(zhí)行乘法,以β表示將積X0/X1輸出到寄存器402(高位)。
為了進(jìn)行乘法來獲得TERM4=(X0/X1)(α49+X0/X1)帶括號(hào)的因子之一必須是β基表示而另一個(gè)為α基表示。到此為止計(jì)算電路104已得到項(xiàng)X0/X1,但只是在β基表示中。為了進(jìn)行產(chǎn)生TERM4的乘法,還必須得出α基表示的項(xiàng)X0/X1。因此,在步驟11-12,執(zhí)行β至α基轉(zhuǎn)換來得到α基表示的X0/X1。
在執(zhí)行步驟11-12之前,將β基表示的X0/X1存儲(chǔ)在寄存器402的高位端中。在步驟11-12中,將β基表示的X0/X1移位到寄存器402的低位端中。然后利用異或門406反饋(利用寄存器402的位1、3、5與7),定時(shí)寄存器402以便在其高位中生成α基表示(但反向位次序的)的X0/X1。從而在步驟11-12結(jié)束時(shí),寄存器402的低位端(即低7位)具有β基表示的X0/X1而寄存器402的高位端(即高7位)則具有α基表示(但反向位次序)的X0/X1。作為步驟11-12的結(jié)果,已得到α基表示的X0/X1,但為了在得出TERM3中有用,即TERM3=(α49+X0/X1)因子X0/X1的位模式必須顛倒(由于它是以倒的位次序存儲(chǔ)在寄存器402的高位端中的)。為了以正確的位次序放置因子X0/X1(α基表示),在步驟11-13,在7個(gè)時(shí)鐘周期的各個(gè)中寄存器402并行加載α乘法器450及來自乘法器450的輸入并行加載寄存器402時(shí),切斷對(duì)α乘法器與寄存器402的反饋。在各時(shí)鐘中將寄存器402的位13的內(nèi)容串行加載進(jìn)寄存器401中,結(jié)果在寄存器401中得到正確位次序的(α基表示的)因子X0/X1。圖4中示出這樣運(yùn)算的α乘法器450的結(jié)構(gòu)。
這樣,步驟11-13的運(yùn)算等價(jià)于寄存器402的左移,使之能以位13、位12等的次序從其中讀出位13-7,這意味著以位次序0、1,…,6讀出因子X0/X1(α基表示)。從而將正確位次序的因子X0/X1(α基表示)讀出到寄存器401并在將因子X0/X1(β基表示)移到寄存器400中之后移位成在寄存器402的高位中。
在步驟11-14,控制器106輸出加到因子X0/X1(α基表示)上的α47的值(α基表示)。然后在步驟11-15,可將乘法因子α47+X0/X1(在寄存器400中以α基表示)乘以因子X0/X1(在寄存器402中以β基表示)而在寄存器402中得出積(即TERM4)(β基表示)。
在步驟11-16,為了得到TERM5,即TERM5=α+(X0/X1)(α49+X0/X1)而將α加在TERM4上。為了得到TERM5,控制器106將常數(shù)值010000放在寄存器401的高位中并為了將寄存器401與402的內(nèi)容相加而接通信號(hào)FORCE_IP,結(jié)果在寄存器401中形成TERM5。
在步驟11-16中形成了TERM5之后,在步驟11-17取其對(duì)數(shù)。為了這樣做,將TERM5加載進(jìn)寄存器402中。如果未設(shè)置標(biāo)志LOG_FLAG,則將寄存器402的高位中的TERM5并行施加在LOGROM480上(見圖5B)。LOG ROM480利用表4作為查找表來生成對(duì)應(yīng)于輸入信號(hào)的對(duì)數(shù)輸出。作為步驟11-17的結(jié)果,從LOGROM480輸出TERM6,即TERM6=log[α+(X0/X1)(α49+X0/X1)]。
在步驟11-18將(步驟11-14從LOG ROM480輸出的)TERM6加到存儲(chǔ)在ACC_H(即累加器500H)中的TERM1=2logX1mod127上,借此產(chǎn)生尋找值J。
如L的表達(dá)式,即L=(129J+127K)64mod(127×129)所示,必須將J(現(xiàn)在在ACC_H中)乘以129。這樣,不論在步驟11-18(對(duì)于X1≠0)還是在步驟11-17(對(duì)于X1=0)得出J,在步驟11-19發(fā)生這一乘法。具體地,將會(huì)理解一個(gè)值用129乘與乘以128再將積加在原來的值上是一樣的。為了完成這樣做,在步驟11-19將ACC_H(即寄存器500H)中的J值復(fù)制進(jìn)寄存器ACC-L(即寄存器500L)中,從而復(fù)合寄存器500中有129J。
J值只是確定值L所需的一個(gè)因子。如前面對(duì)步驟10-3所指出的,確定L所需的另一值為“K”。
在步驟11-20,按照下述方法確定KK=0若X1=01若X1≠0且X0=0f(X0/X1)若X1≠0且X0≠0其中f(X0/X1)=log(y1α+y0)且log是以α為底的并且是從查找表得到的,并且y1,y0是使得log(y1α+y0)<129且y0/y1=X0/X1成立的來自GF(27)的唯一元素對(duì)。對(duì)于X1≠0且X2≠0的每一對(duì)X1,X0存在一對(duì)y1,y0。
如果在步驟11-16確定K=0,則已基本上完成了L的計(jì)算(L=129J,在步驟11-16之后L位于寄存器500中)。
如果X1不等于零,則如上所述利用LOG ROM480來生成f(X0/X1)。如果0<K<128則K將是LOG ROM480的輸出。LOGROM480的輸出K示出在表5中。表5和表4一樣列出所有128種輸入(從0開始的遞增輸入值次序,值在列中連續(xù)排列,并從一列的底部到下一列的頂部連續(xù)排列,如表4與5中所示)。
在步驟11-21,將K乘以127。步驟11-21利用127×K=128K-K這一事實(shí)。從而,在步驟11-18的乘法是通過在累加器500的高位端(即已包含J的ACC_H)上加K并從累加器500的低位端(即ACC_L)中減K完成的。結(jié)合減法,在K的7位值前面加載7個(gè)零,該量是由非門490求補(bǔ)的(即1變成0及0變成1)。將求補(bǔ)后的整個(gè)14位值加到累加器500以完成減去K。從而在步驟11-21結(jié)束時(shí)累加器500具有(129J+127K)mod(127×129)。因?yàn)槿缟纤鰧?duì)于產(chǎn)生進(jìn)位出的所有運(yùn)算將一個(gè)“1”加在累加器500上,所以項(xiàng)mod(127×129)包含在累加器500中。
在步驟11-22,從位7取L的輸出,它等價(jià)于乘以64?,F(xiàn)在能看出已得出所要求的值L-64[補(bǔ)碼]。減法(由上述運(yùn)算完成)的原因?yàn)槿サ?2位ECC及32位自左乘。
將會(huì)理解結(jié)合一個(gè)扇區(qū)中兩個(gè)錯(cuò)誤的情況圖11中的步驟是為各個(gè)錯(cuò)誤執(zhí)行的。此后,如步驟8-18所示,在L值(即L1與L2)上執(zhí)行范圍校驗(yàn);將L值放置成可用的尋址次序(步驟8-19);并在具有由糾錯(cuò)系統(tǒng)10確定的地址L1(及在兩個(gè)錯(cuò)誤情況中的L2)的位上執(zhí)行糾正。
雖然在此已詳細(xì)公開與描述了較佳實(shí)施例,對(duì)于熟悉本技術(shù)的人員而言,顯而易見可在其中作出各種形式上與細(xì)節(jié)上的改變而不脫離其精神與范圍。
表1線性邏輯數(shù)據(jù)表00001001 11000000 10010000 1000010100010011 10000001 00100001 0000101000100111 00000010 01000010 0001010001001110 00000100 10000100 0010100010011100 00001001 00001000 0101000000110001 11010010 10000000 0010010101100011 10100101 00000000 0100101011000111 01001010 00000000 10010100
表2生成y的線性組合的LIN輸出值0110100010111000111010111100001110101111101111100011110001010010010100101101011000001111100011011000101111000000100100000000101100101001100010010000111000001111111101001101011010010001011010011100表3生成子字段元素X1與X0的線性組合的LIN輸出值1000000000000000000001000000010000011100100111001110100101101001000001010000001000100010001011010100110100111011101110100100100001001101111101011110010011000100110010010100100100100011001000000001
表4LOG ROM的對(duì)數(shù)查找表00000000000011000001000101111111110101001100111011110000001001110101011100100110011111111011011101101001001101100010010100010010101001110001000011001000011010110110100001001111011011010001011010011111100011100110111001101010010101100010010001010001000101111101000011000010110010000100000011101110000101110110100101000111110110011010011001001001011010111101100011000111000001101011101011110011010101010011100010101010111001100100001000110000110110010111101001000011110011001100000010000110000110000101111001101111000111100010111100101000001011101011010111101110011111100000000011110100100100101001100101010010100001111010111000110101010000100011100111101011000001011111101001111001110111001100110010110110100110110000110111110100000000101011110010110010100111000101001101010110110111110110001001110010001101101111110001110000001100110110000000011101011000000111110100001111000101000111011010110101
表5LOG ROM的函數(shù)查找表0000001101100001000000101111011010000100011110101111011111001110111001001010111111111110010110001011010110111011101101000100001000001001101001111001001111100001000011110100001011000110111100000000000011100111010011011100110110100011010100100111011000000110101110110101010101111010100101000011100101011010011101001010011000000010010001010110110000101110010000110111001100111110010011111101110001110001010101010100101100000100010000100111100001001100110001110001001010000100100111111100010010110010010111110111110100011111100011001011010011010100110110010110100011110111101100111001110110010010110110100110111011100001010110100101110001100001010011111000100011100001100111001100110101101111101001000000001111011011100111111000001100000100101100010010010001101111000110101010100101110110000011000010100001000010100010101100111010000110111111010101110001001101100110111101000010110101111101111110010權(quán)利要求
1.一種用于仿真磁盤驅(qū)動(dòng)器操作的固態(tài)盤驅(qū)動(dòng)器,包括(a)一個(gè)盤控制器,用于向主機(jī)系統(tǒng)提供磁盤接口;及(b)一個(gè)固態(tài)盤驅(qū)動(dòng)器仿真器,響應(yīng)盤驅(qū)動(dòng)器將磁盤命令翻譯成兼容的固態(tài)命令;及(c)一個(gè)固態(tài)存儲(chǔ)設(shè)備陣列,用于存儲(chǔ)非易失性計(jì)算機(jī)數(shù)據(jù);及(d)一個(gè)糾錯(cuò)系統(tǒng),響應(yīng)固態(tài)存儲(chǔ)設(shè)備陣列,能糾正多達(dá)兩位由存儲(chǔ)器陣列中的損壞或漏泄單元導(dǎo)致的錯(cuò)誤。
2.權(quán)利要求1中所述的固態(tài)盤驅(qū)動(dòng)器,其中該固態(tài)存儲(chǔ)器陣列包括快速EEPROM存儲(chǔ)器。
3.權(quán)利要求1中所述的固態(tài)盤驅(qū)動(dòng)器,其中(a)該固態(tài)存儲(chǔ)器陣列配置成存儲(chǔ)器單元的行與列;及(b)行表示磁盤的道并包括扇區(qū)的列;及(c)多達(dá)兩位錯(cuò)誤發(fā)生在一個(gè)扇區(qū)中。
4.權(quán)利要求1中所述的固態(tài)盤驅(qū)動(dòng)器,其中該糾錯(cuò)系統(tǒng)采用每次處理一個(gè)字節(jié)的面向位的代碼。
5.一種用于仿真磁盤驅(qū)動(dòng)器的操作的固態(tài)盤驅(qū)動(dòng)器的糾錯(cuò)系統(tǒng),該糾錯(cuò)系統(tǒng)包括一個(gè)ECC/余數(shù)發(fā)生器,順序地接收一個(gè)扇區(qū)的字節(jié),且在寫操作中生成ECC字節(jié)及在讀操作中生成校驗(yàn)余數(shù)字節(jié);一組余數(shù)寄存器,其中加載有校驗(yàn)余數(shù)字節(jié);一個(gè)計(jì)算電路,串行接收余數(shù)寄存器組的內(nèi)容以生成兩個(gè)校正子。
6.權(quán)利要求5的糾錯(cuò)系統(tǒng),其中該余數(shù)寄存器組并行加載有校驗(yàn)余數(shù)字節(jié)。
7.權(quán)利要求6的糾錯(cuò)系統(tǒng),其中該余數(shù)寄存器組包括并行加載有校驗(yàn)余數(shù)字節(jié)的四個(gè)8位寄存器,其中這四個(gè)8位寄存器是連接成作為一個(gè)串行移位寄存器操作的,及其中生成了兩個(gè)校正子之后,將這兩個(gè)校正子串行加載進(jìn)串行移位寄存器的低位中。
8.權(quán)利要求5的糾錯(cuò)系統(tǒng),其中該計(jì)算電路串行接收余數(shù)寄存器組的內(nèi)容用于生成兩個(gè)校正子及一個(gè)范圍校驗(yàn)因子。
9.權(quán)利要求8的糾錯(cuò)系統(tǒng),其中該糾錯(cuò)系統(tǒng)利用兩個(gè)14位多項(xiàng)式與一個(gè)4位多項(xiàng)式之積的一個(gè)32位代碼生成多項(xiàng)式,及其中該4位多項(xiàng)式用來生成范圍校驗(yàn)因子。
10.權(quán)利要求8的糾錯(cuò)系統(tǒng),其中該計(jì)算電路利用該范圍校驗(yàn)因子來校驗(yàn)糾錯(cuò)系統(tǒng)所執(zhí)行的糾正的有效性。
11.權(quán)利要求5的糾錯(cuò)系統(tǒng),其中該糾錯(cuò)系統(tǒng)采用兩個(gè)14位多項(xiàng)式與一個(gè)4位多項(xiàng)式之積的一個(gè)32位代碼生成多項(xiàng)式。
12.權(quán)利要求11的糾錯(cuò)系統(tǒng),其中兩個(gè)14位多項(xiàng)式的第一個(gè)為多項(xiàng)式(X14+X10+X9+X6+X5+X4+X1),其中兩個(gè)14位多項(xiàng)式的第二個(gè)為多項(xiàng)式(X14+X6+X5+X2+1),及其中該4位多項(xiàng)式為多項(xiàng)式(X4+1)。
13.權(quán)利要求5的糾錯(cuò)系統(tǒng),其中該計(jì)算電路包括第一計(jì)算寄存器組及第二計(jì)算寄存器組,及其中該第一計(jì)算寄存器組及該第二計(jì)算寄存器組具有一個(gè)反饋電路,及其中將余數(shù)寄存器組的內(nèi)容串行移位進(jìn)各該第一計(jì)算寄存器組及第二計(jì)算寄存器組用于在第一計(jì)算寄存器組中生成第一校正子及在第二計(jì)算寄存器組中生成第二校正子。
14.權(quán)利要求13的糾錯(cuò)系統(tǒng),其中該計(jì)算電路計(jì)算表達(dá)式
其中S1為第一校正子,S3為第二校正子,而α°為1,及其中該計(jì)算電路利用計(jì)算C來確定扇區(qū)中的錯(cuò)誤數(shù)目。
15.權(quán)利要求14的糾錯(cuò)系統(tǒng),其中計(jì)算電路計(jì)算C的痕跡函數(shù)來判定該扇區(qū)是否可糾正。
16.權(quán)利要求13的糾錯(cuò)系統(tǒng),其中該計(jì)算電路利用第一校正子來確定至少第一錯(cuò)誤定位子值。
17.權(quán)利要求16的糾錯(cuò)系統(tǒng),其中該計(jì)算電路利用公式αL1=S1y確定第一錯(cuò)誤定位子值αL1,其中S1為第一校正子則y而是通過取線性組合yK=∑jαk,jCj使得y2+y+c=0找到的,及其中ak,j之值是存儲(chǔ)在計(jì)算電路中所包含的線性查找表中的。
18.權(quán)利要求17的糾錯(cuò)系統(tǒng),其中該計(jì)算電路利用公式αL2=S1+αL1確定第二錯(cuò)誤定位子值αL2。
19.權(quán)利要求16的糾錯(cuò)系統(tǒng),其中該計(jì)算電路包括第三組計(jì)算寄存器,及其中將余數(shù)寄存器組的內(nèi)容串行移位進(jìn)第三組計(jì)算寄存器中用于生成第三組計(jì)算寄存器中的范圍校驗(yàn)因子。
20.權(quán)利要求19的糾錯(cuò)系統(tǒng),其中該計(jì)算電路利用至少一個(gè)錯(cuò)誤定位子值來判定扇區(qū)的數(shù)據(jù)部分中是否有一錯(cuò)誤位。
21.權(quán)利要求16的糾錯(cuò)系統(tǒng),其中該計(jì)算電路取至少一個(gè)錯(cuò)誤定位子值的對(duì)數(shù)來確定錯(cuò)誤地址。
22.權(quán)利要求21的糾錯(cuò)系統(tǒng),其中該計(jì)算電路將該至少一個(gè)錯(cuò)誤定位子值加載進(jìn)第一組計(jì)算寄存器中,及其中該計(jì)算電路包括用于生成一序列值的裝置;一個(gè)線性組合電路,為了在第二組計(jì)算寄存器中生成線性組合X1而將第一組值序列與至少一個(gè)錯(cuò)誤定位子線性組合,其中包含在X1中的位數(shù)是包含在錯(cuò)誤定位子中的位數(shù)的一半;確定log(X1)的存儲(chǔ)在存儲(chǔ)器中的一張查找表;其中用該線性組合電路線性組合第二組值序列以生成線性組合X0,其中包含在X0中的位數(shù)是包含在錯(cuò)誤定位子中的位數(shù)的一半;以及其中該查找表確定log(X0)。
23.一種用于仿真磁盤驅(qū)動(dòng)器的操作的固態(tài)盤驅(qū)動(dòng)器的糾錯(cuò)方法,該糾錯(cuò)方法包括順序地接收一個(gè)扇區(qū)的字節(jié)并且在寫操作中生成ECC字節(jié)而在讀操作中生成校驗(yàn)余數(shù)字節(jié);用校驗(yàn)余數(shù)字節(jié)加載一組余數(shù)寄存器;將余數(shù)寄存器組的內(nèi)容串行輸入到計(jì)算電路中并用該計(jì)算電路在讀操作中生成兩個(gè)校正子。
24.權(quán)利要求23的糾錯(cuò)方法,其中該余數(shù)寄存器組是用校驗(yàn)余數(shù)字節(jié)并行加載的。
25.權(quán)利要求24的糾錯(cuò)方法,其中該余數(shù)寄存器組包括用校驗(yàn)余數(shù)字節(jié)并行加載的四個(gè)8位寄存器,及其中該方法還包括作為串行移位寄存器操作這四個(gè)8位寄存器用于將其內(nèi)容移位進(jìn)計(jì)算電路中;以及生成兩個(gè)校正子之后,將這兩個(gè)校正子串行加載進(jìn)該串行移位寄存器的低位中。
26.權(quán)利要求23的糾錯(cuò)方法,還包括將余數(shù)寄存器組的內(nèi)容串行輸入到計(jì)算電路中;以及利用計(jì)算電路生成兩個(gè)校正子及一個(gè)范圍校驗(yàn)因子。
27.權(quán)利要求26的糾錯(cuò)方法,其中該糾錯(cuò)方法使用兩個(gè)14位多項(xiàng)式及一個(gè)4位多項(xiàng)式之積的一個(gè)32位代碼生成多項(xiàng)式,及其中該4位多項(xiàng)式被用來生成范圍校驗(yàn)因子。
28.權(quán)利要求26的糾錯(cuò)方法,還包括利用至少一個(gè)錯(cuò)誤定位子值來判定錯(cuò)誤位是否在該扇區(qū)的數(shù)據(jù)部分中。
29.權(quán)利要求23的糾錯(cuò)方法,其中該糾錯(cuò)方法使用兩個(gè)14位多項(xiàng)式及一個(gè)4位多項(xiàng)式之積的一個(gè)32位代碼生成多項(xiàng)式。
30.權(quán)利要求29的糾錯(cuò)方法,其中這兩個(gè)14位多項(xiàng)式中的第一個(gè)為多項(xiàng)式(X14+X10+X9+X6+X5+X4+X1),其中這兩個(gè)14位多項(xiàng)式中的第二個(gè)為多項(xiàng)式(X14+X6+X5+X2+1),及其中該4位多項(xiàng)式為多項(xiàng)式(X4+1)。
31.權(quán)利要求23的糾錯(cuò)方法,還包括將余數(shù)寄存器組的內(nèi)容串行移位到構(gòu)成計(jì)算電路的第一組計(jì)算寄存器及第二組計(jì)算寄存器的各組中;以及在第一組計(jì)算寄存器中生成第一校正子并在第二組計(jì)算寄存器中生成第二校正子。
32.權(quán)利要求31的糾錯(cuò)方法,還包括利用計(jì)算電路來計(jì)算表達(dá)式
其中S1為第一校正子,S3為第二校正子,且α°為1;以及利用計(jì)算電路來計(jì)算C以判定該扇區(qū)中的錯(cuò)誤數(shù)目。
33.權(quán)利要求32的糾錯(cuò)方法,還包括利用計(jì)算電路來計(jì)算C的一個(gè)痕跡函數(shù)以判定該扇區(qū)是否可以糾正。
34.權(quán)利要求31的糾錯(cuò)方法,還包括利用計(jì)算電路用第一校正子來確定至少第一錯(cuò)誤定位子值。
35.權(quán)利要求34的糾錯(cuò)方法,其中該計(jì)算電路利用公式αL1=S1y確定第一錯(cuò)誤定位子值αL1,其中S1為第一校正子而y則是通過取線性組合yk=∑jαk,jCj使y2+y+c=0找出的,及其中αk,j的值是從包含在計(jì)算電路中的線性查找表中得到的。
36.權(quán)利要求35的糾錯(cuò)方法,還包括利用計(jì)算電路用公式αL2=S1+αL1確定第二錯(cuò)誤定位子值αL2。
37.權(quán)利要求34的糾錯(cuò)方法,還包括將余數(shù)寄存器組的內(nèi)容串行移位到包含在該計(jì)算電路中的第三組計(jì)算寄存器中供在該第三組計(jì)算寄存器中生成范圍校驗(yàn)因子。
38.權(quán)利要求37的糾錯(cuò)方法,還包括操作計(jì)算電路來利用該至少一個(gè)錯(cuò)誤定位子值來判定錯(cuò)誤位是否在該扇區(qū)的數(shù)據(jù)部分中。
39.權(quán)利要求34的糾錯(cuò)方法,還包括操作計(jì)算電路取該至少一個(gè)錯(cuò)誤定位子值的對(duì)數(shù)并借此確定錯(cuò)誤地址。
40.權(quán)利要求39的糾錯(cuò)方法,其中操作計(jì)算電路取該至少一個(gè)錯(cuò)誤定位子值的對(duì)數(shù)包括將該至少一個(gè)錯(cuò)誤定位子值加載進(jìn)第一組計(jì)算寄存器中;生成一序列的值;為了在第二組計(jì)算寄存器中生成線性組合X1,將第一組值序列與該至少一個(gè)錯(cuò)誤定位子線性組合,其中包含在X1中的位數(shù)是包含在該錯(cuò)誤定位子中的位數(shù)的一半;訪問存儲(chǔ)在存儲(chǔ)器中的查找表來確定log(X1);為了生成線性組合X0,將第二組值序列與該至少一個(gè)錯(cuò)誤定位子線性組合,其中包含在X0中的位數(shù)是包含在該錯(cuò)誤定位子中的位數(shù)的一半;以及訪問該查找表來確定log(X0)。
41.權(quán)利要求23的糾錯(cuò)方法,其中該計(jì)算電路用于將余數(shù)寄存器組的內(nèi)容串行接收到構(gòu)成計(jì)算電路的第一組計(jì)算寄存器與第二組計(jì)算寄存器的各組中并在第一組計(jì)算寄存器中生成第一校正子及在第二組計(jì)算寄存器中生成第二校正子;將余數(shù)寄存器組的內(nèi)容串行接收到第三組計(jì)算寄存器中并生成一個(gè)范圍校驗(yàn)因子;判定該扇區(qū)是否可以糾正;判定該扇區(qū)中的錯(cuò)誤數(shù)目;利用第一校正子確定一個(gè)第一錯(cuò)誤定位子值;確定第二錯(cuò)誤定位子值;取第一錯(cuò)誤定位子值及第二錯(cuò)誤定位子值之對(duì)數(shù)并借此確定錯(cuò)誤在該扇區(qū)中的地址。
42.權(quán)利要求41的糾錯(cuò)方法,其中扇區(qū)中的錯(cuò)誤數(shù)目是通過計(jì)算表達(dá)式
確定的,其中S1為第一校正子,S3為第二校正子而α°為1。
43.權(quán)利要求41的糾錯(cuò)方法,其中該計(jì)算電路利用公式αL1=S1y確定第一錯(cuò)誤定位子值αL1,其中S1為第一校正子而y則是通過取線性組合yk=∑jαk,jCj使y2+y+c=0而找出的,及其中αk,j之值是從包含在計(jì)算電路中的線性查找表得到的。
44.權(quán)利要求41的糾錯(cuò)方法,其中該計(jì)算電路利用公式αL2=S1+αL1確定第二錯(cuò)誤定位子值αL2。
45.權(quán)利要求41的糾錯(cuò)方法,其中取至少一個(gè)錯(cuò)誤定位子值的對(duì)數(shù)包括將該至少一個(gè)錯(cuò)誤定位子值加載進(jìn)第一組計(jì)算寄存器中;生成一序列的值;將第一組序列值與該至少一個(gè)錯(cuò)誤定位子線性組合以便在第二組計(jì)算寄存器中生成線性組合X1,其中包含在X1中的位數(shù)是包含在錯(cuò)誤定位子中的位數(shù)的一半;訪問存儲(chǔ)在存儲(chǔ)器中的查找表以確定log(X1);將第二組序列值與至少一個(gè)錯(cuò)誤定位子線性組合以便生成線性組合X0,其中包含在X1中的位數(shù)是包含在錯(cuò)誤定位子中的位數(shù)的一半;以及訪問查找表以確定log(X0)。
46.一種用于仿真磁盤驅(qū)動(dòng)器的固態(tài)盤驅(qū)動(dòng)器的糾錯(cuò)系統(tǒng),該糾錯(cuò)系統(tǒng)利用一個(gè)32位代碼生成多項(xiàng)式糾正作用在系統(tǒng)上的每一扇區(qū)的多達(dá)兩個(gè)錯(cuò)誤,該32位代碼生成多項(xiàng)式為兩個(gè)14位多項(xiàng)式及一個(gè)4位多項(xiàng)式之積,及其中利用該4位多項(xiàng)式來生成用于判定錯(cuò)誤是否出現(xiàn)在該扇區(qū)的數(shù)據(jù)部分中的范圍校驗(yàn)因子。
47.權(quán)利要求46的糾錯(cuò)系統(tǒng),其中兩個(gè)14位多項(xiàng)式中的第一個(gè)為多項(xiàng)式(X14+X10+X9+X6+X5+X4+X1),其中兩個(gè)14位多項(xiàng)式中的第二個(gè)為多項(xiàng)式(X14+X6+X5+X2+1),及其中的4位多項(xiàng)式為多項(xiàng)式(X4+1)。
48.權(quán)利要求46的糾錯(cuò)系統(tǒng),該糾錯(cuò)系統(tǒng)包括一個(gè)ECC/余數(shù)發(fā)生器,順序地接收扇區(qū)的字節(jié)并在寫操作中生成ECC字節(jié)及在讀操作中生成校驗(yàn)余數(shù)字節(jié);一組加載有校驗(yàn)余數(shù)字節(jié)的余數(shù)寄存器;一個(gè)計(jì)算電路,串行接收余數(shù)寄存器組的內(nèi)容以生成兩個(gè)校正子。
49.一種用于固態(tài)盤驅(qū)動(dòng)器的糾錯(cuò)系統(tǒng),該糾錯(cuò)系統(tǒng)利用三個(gè)多項(xiàng)式之積的一個(gè)生成多項(xiàng)式,該糾錯(cuò)系統(tǒng)包括一個(gè)ECC/余數(shù)發(fā)生器,順序地接收扇區(qū)的字節(jié)并在寫操作中生成ECC字節(jié)及在讀操作中生成校驗(yàn)余數(shù)字節(jié);一組加載有校驗(yàn)余數(shù)字節(jié)的余數(shù)寄存器;一個(gè)計(jì)算電路,串行接收余數(shù)寄存器組的內(nèi)容并利用這三個(gè)多項(xiàng)式中的第一個(gè)生成第一校正子;這三個(gè)多項(xiàng)式中的第二個(gè)生成第二校正子;及三個(gè)多項(xiàng)式中的第三個(gè)生成范圍校驗(yàn)因子。
50.權(quán)利要求49的糾錯(cuò)系統(tǒng),其中該糾錯(cuò)系統(tǒng)仿真磁盤驅(qū)動(dòng)器的操作。
51.權(quán)利要求49的糾錯(cuò)系統(tǒng),其中該糾錯(cuò)系統(tǒng)利用一個(gè)32位代碼生成多項(xiàng)式糾正作用在系統(tǒng)上的每個(gè)扇區(qū)的多達(dá)兩個(gè)錯(cuò)誤,該32位代碼生成多項(xiàng)式為兩個(gè)14位多項(xiàng)式及一個(gè)4位多項(xiàng)式之積,及其中該4位多項(xiàng)式用于生成范圍校驗(yàn)因子。
52.權(quán)利要求51的糾錯(cuò)系統(tǒng),其中這兩個(gè)14位多項(xiàng)式中的第一個(gè)為多項(xiàng)式(X14+X10+X9+X6+X5+X4+X1),其中這兩個(gè)14位多項(xiàng)式的第二個(gè)為多項(xiàng)式(X14+X6+X5+X2+1),及其中該4位多項(xiàng)式為多項(xiàng)式(X4+1)。
53.權(quán)利要求49的糾錯(cuò)系統(tǒng),其中利用至少一個(gè)錯(cuò)誤定位子值來判定錯(cuò)誤是否出現(xiàn)在該扇區(qū)的數(shù)據(jù)部分中。
54.權(quán)利要求49的糾錯(cuò)系統(tǒng),其中該余數(shù)寄存器組包括用校驗(yàn)余數(shù)字節(jié)并行加載的四個(gè)8位寄存器,其中這四個(gè)8位寄存器連接成作為一個(gè)串行移位寄存器工作,及其中在生成了兩個(gè)校正子及范圍校驗(yàn)因子之后,串行地將這兩個(gè)校正子及范圍校驗(yàn)因子加載進(jìn)該串行移位寄存器中。
55.權(quán)利要求49的糾錯(cuò)系統(tǒng),其中該糾錯(cuò)系統(tǒng)采用每次處理一個(gè)字節(jié)的面向位的代碼。
全文摘要
提供了一種糾錯(cuò)系統(tǒng)(10),用于糾正存儲(chǔ)在仿真盤驅(qū)動(dòng)器的固態(tài)非易失性存儲(chǔ)器(12)中的每一扇區(qū)的多達(dá)兩位。該糾錯(cuò)系統(tǒng)(10)包括一個(gè)ECC/余數(shù)發(fā)生器(100),一組余數(shù)寄存器(102)及一個(gè)計(jì)算電路(104),它們都在控制器(106)的監(jiān)控下。在寫入存儲(chǔ)操作中,糾錯(cuò)系統(tǒng)(10)生成ECC字節(jié)供存儲(chǔ)在存儲(chǔ)器(12)中。在寫操作中,利用從存儲(chǔ)器(12)得出的整個(gè)扇區(qū)生成ECC校驗(yàn)余數(shù)字節(jié)REM
文檔編號(hào)G06F12/06GK1169785SQ95196746
公開日1998年1月7日 申請(qǐng)日期1995年10月20日 優(yōu)先權(quán)日1995年10月20日
發(fā)明者C·P·佐克 申請(qǐng)人:西爾拉斯邏輯公司