專利名稱:錯誤修正碼的編碼及解碼方法以及編碼解碼器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信技術(shù)領(lǐng)域,更具體地說,涉及一種錯誤修正碼的編碼及解碼 方法以及編碼解碼器。
背景技術(shù):
錯誤修正碼(error correction code)用于修正數(shù)據(jù)的錯誤。通信系統(tǒng)所傳輸 的數(shù)據(jù)于傳輸端傳送前經(jīng)常事先被編碼為錯誤修正碼(包含數(shù)據(jù)訊息及檢查碼)。當接 收端收到錯誤修正碼數(shù)據(jù)時,即使數(shù)據(jù)于傳輸過程中遭受損毀而產(chǎn)生隨機錯誤,亦可藉解 碼錯誤修正碼而回復正確的數(shù)據(jù)。同樣的,數(shù)據(jù)儲存系統(tǒng)亦經(jīng)常在儲存數(shù)據(jù)前將所儲存的 數(shù)據(jù)編碼為錯誤修正碼。當數(shù)據(jù)于儲存過程中遭受損毀而產(chǎn)生隨機錯誤時,亦可藉解碼 錯誤修正碼而回復正確的數(shù)據(jù)。常見的錯誤修正碼如BCH碼(Bose,Ray-Chaudhuri, and Hocquenghem code)及 RS 碼(Reed-Solomon code)。BCH 碼常用于閃存數(shù)據(jù)的儲存,而 RS 碼常用于光盤數(shù)據(jù)的儲存。當數(shù)據(jù)儲存系統(tǒng)欲取出其所儲存的數(shù)據(jù)時,所取出的為編碼后的錯誤修正碼,因 此在數(shù)據(jù)使用前必須先解碼錯誤修正碼,以還原為原始數(shù)據(jù)。圖1為錯誤修正碼的習知解 碼方法100的流程圖。首先,解碼器接收一錯誤修正碼(步驟102)。接著,解碼器依據(jù)該 錯誤修正碼的檢查碼(parity)計算多個癥狀碼(syndrome)(步驟104)。接著,解碼器檢 查是否該等癥狀碼皆為零(步驟106)。若該等癥狀碼為零,表示錯誤修正碼沒有發(fā)生錯 誤,因此不需進一步的修正。反之,若該等癥狀碼有其中之一不為零,表示錯誤修正碼有錯 誤發(fā)生,因此必須對錯誤修正碼進行修正。首先,解碼器依據(jù)該等癥狀碼計算一錯誤多項 式(error-location polynomial)的多個系數(shù)(步驟108)。接著,解碼器執(zhí)行一秦氏搜尋 (Chien search)以找出該錯誤多項式的根(步驟110)。由于該錯誤多項式的根指示錯誤 修正碼中發(fā)生錯誤的位的位置,因此解碼器便可依據(jù)該錯誤多項式的根修正該錯誤修正碼 (步驟112),而得到無錯誤的錯誤修正碼,亦即得到正確的數(shù)據(jù)。然而,當解碼器于步驟108計算錯誤多項式的系數(shù)時,會耗費許多時間。同樣的, 當解碼器于步驟110進行秦氏搜尋以找出錯誤多項式的根時,亦會耗費許多時間。于習知 的解碼方法100中,只要錯誤修正碼的多個癥狀碼其中之一不為零便表示有錯誤發(fā)生,因 此必須執(zhí)行步驟108與步驟110以便修正錯誤,也因而造成系統(tǒng)的解碼時間的延遲。于錯 誤修正碼的多個癥狀碼不為零時,若能在部分情況中以其它方式修正錯誤修正碼,進而避 免于步驟108中計算錯誤多項式的系數(shù)以及于步驟110中進行秦氏搜尋以找出錯誤多項式 的根,則可大大的減少所需的解碼時間,而增進解碼器的效能。因此,需要一種可減少錯誤 修正碼的解碼時間的編碼及解碼方法。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于針對現(xiàn)有技術(shù)的上述缺陷,提供一種錯誤修正碼 的編碼及解碼方法以及編碼解碼器。
5
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案之一是構(gòu)造一種錯誤修正碼的編 碼及解碼方法,其包括下列步驟接收一原始數(shù)據(jù);將該原始數(shù)據(jù)分割為多個區(qū)段數(shù)據(jù); 依據(jù)一第一產(chǎn)生多項式(generator polynomial)分別產(chǎn)生該等區(qū)段數(shù)據(jù)之短檢查碼 (short parity);附加該等短檢查碼于該等區(qū)段數(shù)據(jù)之后,以分別產(chǎn)生多個短碼字(short codeword);結(jié)合該等短碼字以得到一編碼數(shù)據(jù);依據(jù)一第二產(chǎn)生多項式(generator polynomial)以產(chǎn)生該編碼數(shù)據(jù)之長檢查碼(long parity),其中該第一產(chǎn)生多項式為該第 二產(chǎn)生多項式之至少一個最小多項式(minimumpolynomial)的函式;附加該長檢查碼于該 編碼數(shù)據(jù)之后,以產(chǎn)生該錯誤修正碼之一長碼字(long codeword) 0本發(fā)明所述的錯誤修正碼的編碼及解碼方法,其中該第一產(chǎn)生多項式為該第二產(chǎn) 生多項式的至少一個最小多項式的最小公倍式。本發(fā)明所述的錯誤修正碼的編碼及解碼方法,更包括儲存該長碼字于一儲存媒體 中。本發(fā)明所述的錯誤修正碼的編碼及解碼方法,更包括自一儲存媒體讀出該長碼字;自該長碼字取出其所包含的該等短碼字;依據(jù)該等 短碼字的該等短檢查碼計算該等短碼字的多個短癥狀碼;檢查是否該等短癥狀碼皆為零; 以及當該等短癥狀碼其中的一至數(shù)個非零短癥狀碼不為零時,利用該等非零短癥狀碼更正 對應的該等短碼字。本發(fā)明所述的錯誤修正碼的編碼及解碼方法,更包括當該等短癥狀碼計算完畢后,依據(jù)該長碼字的該長檢查碼計算該長碼字的一長癥 狀碼;檢查是否該長癥狀碼為零;當該長癥狀碼不為零時,檢查是否該等非零短癥狀碼均 可正確更正對應的該等短碼字;以及當該等非零短癥狀碼均可正確更正對應的該等短碼字 時,利用該等非零短癥狀碼更正該長癥狀碼,以得一更正后長癥狀碼。本發(fā)明所述的錯誤修正碼的編碼及解碼方法,更包括當該長癥狀碼不為零,且該等非零短癥狀碼的部分無法正確更正對應的該等短碼 字時,利用該長癥狀碼對無法正確更正的該等短碼字進行修正。本發(fā)明所述的錯誤修正碼的編碼及解碼方法,其中該長碼字及該等短碼字為BCH 碼或RS碼。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案之二是構(gòu)造一種錯誤修正碼的編 碼解碼器,其包括一錯誤修正碼編碼器以及一錯誤修正碼解碼器;該錯誤修正碼編碼 器接收一原始數(shù)據(jù),將該原始數(shù)據(jù)分割為多個區(qū)段數(shù)據(jù),產(chǎn)生該等區(qū)段數(shù)據(jù)之短檢查碼 (short parity),附加該等短檢查碼于該等區(qū)段數(shù)據(jù)之后以分別產(chǎn)生多個短碼字(short codeword),結(jié)合該等短碼字以得到一編碼數(shù)據(jù),產(chǎn)生該編碼數(shù)據(jù)之長檢查碼(long parity),以及附加該長檢查碼于該編碼數(shù)據(jù)之后以產(chǎn)生一長碼字(long codeword),以供 儲存于一儲存媒體;該錯誤修正碼解碼器自該儲存媒體讀出該長碼字,自該長碼字取出其 所包含的該等短碼字,依據(jù)該等短碼字的該等短檢查碼計算該等短碼字的多個短癥狀碼 (short syndrome),檢查是否該等短癥狀碼皆為零,以及當該等短癥狀碼其中之一至數(shù)個 非零短癥狀碼不為零時,利用該等非零短癥狀碼更正對應之該等短碼字。本發(fā)明所述的錯誤修正碼的編碼解碼器,其中該錯誤修正碼編碼器依據(jù)一第一產(chǎn) 生多項式以產(chǎn)生該等區(qū)段數(shù)據(jù)的該等短檢查碼,并依據(jù)一第二產(chǎn)生多項式以產(chǎn)生該編碼數(shù)據(jù)的該長檢查碼,其中該第一產(chǎn)生多項式為該第二產(chǎn)生多項式的至少一個最小多項式的函 式。本發(fā)明所述的錯誤修正碼的編碼解碼器,其中該第一產(chǎn)生多項式為該第二產(chǎn)生多 項式的至少一個最小多項式的最小公倍式。本發(fā)明所述的錯誤修正碼的編碼解碼器,其中該錯誤修正碼編碼器包括一短碼字編碼器,依據(jù)該第一產(chǎn)生多項式以產(chǎn)生該等區(qū)段數(shù)據(jù)的該等短檢查碼; 一第一添附器,附加該等短檢查碼于該等區(qū)段數(shù)據(jù)之后以分別產(chǎn)生該等短碼字;一長碼字 編碼器,結(jié)合該等短碼字以得到該編碼數(shù)據(jù),并依據(jù)該第二產(chǎn)生多項式以產(chǎn)生該編碼數(shù)據(jù) 的該長檢查碼;以及一第二添附器,附加該長檢查碼于該編碼數(shù)據(jù)之后以產(chǎn)生該長碼字。本發(fā)明所述的錯誤修正碼的編碼解碼器,其中當該等短癥狀碼計算完畢后,該錯 誤修正碼解碼器依據(jù)該長碼字的該長檢查碼計算該長碼字的一長癥狀碼,檢查是否該長癥 狀碼為零,當該長癥狀碼不為零時檢查是否該等非零短癥狀碼均可正確更正對應的該等短 碼字,當該等非零短癥狀碼均可正確更正對應的該等短碼字時,利用該等非零短癥狀碼更 正該長癥狀碼以得一更正后長癥狀碼。本發(fā)明所述的錯誤修正碼的編碼解碼器,其中當該長癥狀碼不為零,且該等非零 短癥狀碼的部分無法正確更正對應的該等短碼字時,該錯誤修正碼解碼器利用該長癥狀碼 對無法正確更正的該等短碼字進行修正。本發(fā)明所述的錯誤修正碼的編碼解碼器,其中該錯誤修正碼解碼器包括一癥狀碼計算模塊,依據(jù)該等短碼字的該等短檢查碼計算該等短碼字的該等短癥 狀碼,并依據(jù)該長碼字的該長檢查碼計算該長碼字的該等長癥狀碼;一控制電路,檢查是否該等短癥狀碼皆為零,當該等短癥狀碼其中的該等非零短 癥狀碼不為零時利用該等非零短癥狀碼更正對應的該等短碼字,檢查是否該長癥狀碼為 零,當該長癥狀碼不為零時檢查是否該等非零短癥狀碼均可正確更正對應的該等短碼字, 以及當該等非零短癥狀碼均可正確更正對應的該等短碼字時利用該等非零短癥狀碼更正 該長癥狀碼。本發(fā)明所述的錯誤修正碼的編碼解碼器,其中該長碼字及該等短碼字為BCH碼或 RS碼。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案之三是構(gòu)造一種錯誤修正碼的解碼方 法,其包括下列步驟接收該錯誤修正碼之一長碼字(long codeword),其中該長碼字包括 多個短碼字(short codeword)及一長檢查碼(long parity),每一該等短碼字均包括一短 檢查碼(short parity);自該長碼字取出其所包含的該等短碼字;依據(jù)該等短碼字的該等 短檢查碼計算該等短碼字的多個短癥狀碼(short syndrome);檢查是否該等短癥狀碼皆為 零;當該等短癥狀碼其中之一至數(shù)個非零短癥狀碼不為零時,利用該等非零短癥狀碼更正 對應之該等短碼字;當該等短癥狀碼計算完畢后,依據(jù)該長碼字的該長檢查碼計算該長碼 字的一長癥狀碼(long syndrome);檢查是否該長癥狀碼為零;當該長癥狀碼不為零時,檢 查是否該等非零短癥狀碼均可正確更正對應之該等短碼字;當該等非零短癥狀碼均可正確 更正對應之該等短碼字時,利用該等非零短癥狀碼更正該長癥狀碼,以得一更正后長癥狀 碼。本發(fā)明所述的錯誤修正碼的解碼方法,更包括
當該長癥狀碼不為零,且該等非零短癥狀碼的部分無法正確更正對應的該等短碼 字時,利用該長癥狀碼對無法正確更正的該等短碼字進行修正。本發(fā)明所述的錯誤修正碼的解碼方法,其中該等短碼字的該等短檢查碼依據(jù)一第 一產(chǎn)生多項式所產(chǎn)生,該長碼字的該長檢查碼依據(jù)一第二產(chǎn)生多項式所產(chǎn)生,其中該第一 產(chǎn)生多項式為該第二產(chǎn)生多項式的至少一個最小多項式的函式。本發(fā)明所述的錯誤修正碼的解碼方法,其中該第一產(chǎn)生多項式為該第二產(chǎn)生多項 式的至少一個最小多項式的最小公倍式。本發(fā)明所述的錯誤修正碼的解碼方法,其中該長碼字及該等短碼字為BCH碼或RS碼。實施本發(fā)明的技術(shù)方案,具有以下有益效果減少了錯誤修正碼的解碼時間,降低 了誤判的機率,增進了解碼器的效能。
下面將結(jié)合附圖及實施例對本發(fā)明作進一步說明,附圖中圖1是錯誤修正碼的習知解碼方法的流程圖;圖2是本發(fā)明的數(shù)據(jù)儲存系統(tǒng)的區(qū)塊圖;圖3A是本發(fā)明的錯誤修正碼編碼器的區(qū)塊圖;圖3B是本發(fā)明的錯誤修正碼的編碼方法的流程圖;圖4是本發(fā)明所產(chǎn)生的一長碼字的示意圖;圖5是本發(fā)明的編碼器的電路圖,該編碼器可為圖3A的短碼字編碼器或長碼字編 碼器;圖6是本發(fā)明的錯誤修正碼解碼器的區(qū)塊圖;圖7是本發(fā)明的癥狀碼計算模塊的電路圖;圖8是本發(fā)明的錯誤修正碼的解碼方法的流程圖。圖中,202是主機;204是數(shù)據(jù)儲存裝置;212是控制器;214是儲存媒體;222是錯 誤修正碼編碼器;224是錯誤修正碼解碼器;300是錯誤修正碼編碼器;302是短碼字編碼
器;304是第一添附器;306是長碼字編碼器;308是第二添附器從是長碼字;CS1、CS2.....
Csn是短碼字辦、D2.....Dn是區(qū)段數(shù)據(jù);PS^ PS2.....PSn是短檢查碼孔是長檢查碼;500
是短碼字編碼器或長碼字編碼器;530,511-51N是緩沖器;501-50N是加法器;521-52N是 乘法器;600是錯誤修正碼解碼器;602是癥狀碼計算模塊;604是錯誤多項式計算模塊;
606是秦氏搜尋模塊;608是控制電路;700是癥狀碼計算模塊;701、702.....70K是癥狀碼
產(chǎn)生器;731-73K是加法器;721-72K是乘法器;711-71K是緩沖器。
具體實施例方式圖2是本發(fā)明的數(shù)據(jù)儲存系統(tǒng)200的區(qū)塊圖。于一實施例中,數(shù)據(jù)儲存系統(tǒng)200 包括一主機202以及一數(shù)據(jù)儲存裝置204。該數(shù)據(jù)儲存裝置204包括一控制器212及一儲 存媒體214。于一實施例中,控制器212包括一錯誤修正碼編碼器222以及一錯誤修正碼 解碼器224。當主機202欲儲存數(shù)據(jù)D1入數(shù)據(jù)儲存裝置204時,控制器212的錯誤修正碼 編碼器222先將數(shù)據(jù)D1編碼為錯誤修正碼C1,控制器212再將錯誤修正碼C1儲存于儲存媒
8體214。當主機202自數(shù)據(jù)儲存裝置204讀取數(shù)據(jù)D2時,控制器212先自儲存媒體214讀 取包含數(shù)據(jù)D2的錯誤修正碼C2,再由控制器212的錯誤修正碼解碼器224將錯誤修正碼C2 解碼為數(shù)據(jù)D2,最后控制器212再將數(shù)據(jù)D2傳送至主機202。于一實施例中,數(shù)據(jù)儲存裝 置204為一記憶卡,儲存媒體214為一閃存,而錯誤修正碼C1與C2為BCH碼。于另一實施 例中,數(shù)據(jù)儲存裝置204為一光驅(qū),儲存媒體214為一光盤片,而錯誤修正碼C1與C2為RS 碼。請注意到,儲存裝置與錯誤修正碼的類型并非本發(fā)明的限制,熟悉此項技藝者在本發(fā)明 的實施例的教導下當可將其應用至任何類型的儲存裝置與錯誤修正碼。圖3A是本發(fā)明的錯誤修正碼編碼器300的區(qū)塊圖。于一實施例中,錯誤修正碼編 碼器300包括短碼字編碼器302、第一添附器304、長碼字編碼器306、以及第二添附器308。 圖3B是本發(fā)明的錯誤修正碼的編碼方法350的流程圖。圖3A的錯誤修正碼編碼器300依 據(jù)圖3B的編碼方法350將原始數(shù)據(jù)D編碼為錯誤修正碼的一長碼字Q。首先,錯誤修正碼 編碼器300接收一原始數(shù)據(jù)D (步驟352)。接著,錯誤修正碼編碼器300將該原始數(shù)據(jù)D分 割為多個區(qū)段數(shù)據(jù)(步驟354)。當短碼字編碼器302收到該等區(qū)段數(shù)據(jù)后,短碼字編碼器 302接著依據(jù)一第一產(chǎn)生多項式(generator polynomial)依序產(chǎn)生該等區(qū)段數(shù)據(jù)的短檢 查碼(short parity) Ps (步驟 356)。接著,第一添附器304附加該等短檢查碼Ps于該等區(qū)段數(shù)據(jù)之后,以分別產(chǎn)生多 個短碼字(short codeword) Cs (步驟358)。長碼字編碼器306接著結(jié)合該等短碼字Ps以 得到一編碼數(shù)據(jù)(步驟360),并依據(jù)一第二產(chǎn)生多項式(generator polynomial)以產(chǎn)生 該編碼數(shù)據(jù)的長檢查碼(long parity)Pl(步驟362)。最后,第二添附器308附加該長檢查 碼于該編碼數(shù)據(jù)之后,以產(chǎn)生該錯誤修正碼的一長碼字(long codeword) CJ步驟364)。 其中,短碼字編碼器302的第一產(chǎn)生多項式為長碼字編碼器306的第二產(chǎn)生多項式的至少 一個最小多項式(minimum polynomial)的函式。于一實施例中,該第一產(chǎn)生多項式為該 第二產(chǎn)生多項式的至少一個最小多項式的最小公倍式(least common multiple,LCM)。舉 例來說,假設長碼字編碼器306對應的第二產(chǎn)生多項式g(x)為多個最小多項式Ψ^χ)、
Ψ2(χ).....Ψ“χ)的最小公倍式(W1(X)XW2U)X... XWk(x)}。于一實施例中,短碼
字編碼器302對應的第一產(chǎn)生多項式g’ (χ)為最小多項式Ψ^χ)。于另一實施例中,短碼 字編碼器302對應的第一產(chǎn)生多項式g’ (χ)為最小多項式W1(X)與Ψ2(χ)的最小公倍式 [W1(X) X Ψ2(χ)]。圖4是本發(fā)明所產(chǎn)生的一長碼字Q的示意圖。長碼字Q由N個短碼字CS1、CS2.....
Csn及一個長檢查碼&所組成。每一個短碼字CS1、Cs2.....Csn包括一區(qū)段數(shù)據(jù)及一短檢查
碼。舉例來說,短碼字Csi由檢查碼Psi接續(xù)于相對應的區(qū)段數(shù)據(jù)D1之后而形成,短碼字Cs2 由檢查碼Ps2接續(xù)于相對應的區(qū)段數(shù)據(jù)D2之后而形成,而短碼字Csn由檢查碼Psn接續(xù)于相
對應的區(qū)段數(shù)據(jù)Dn之后而形成。原始數(shù)據(jù)被切割為多個區(qū)段數(shù)據(jù)Dp D2.....Dn,而原始數(shù)
據(jù)在經(jīng)由圖3A的錯誤修正碼編碼器300編碼后形成圖4的長碼字Q。圖5是本發(fā)明的編碼器500的電路圖,該編碼器500可為圖3A中的短碼字編碼器 302或長碼字編碼器306。假設編碼器500依據(jù)一產(chǎn)生多項式g(x)將數(shù)據(jù)Da轉(zhuǎn)換為檢查碼
P,而產(chǎn)生多項式g(x)的一次項系數(shù)為^、二次項系數(shù)為&.....N次項系數(shù)為&。編碼器
500包括加法器540、乘法器521 52N、加法器501 50N、以及緩沖器511 51N及530。 首先,數(shù)據(jù)Da的位依次被送至加法器540。加法器540依次將數(shù)據(jù)Da的位與緩沖器51N儲
9存的數(shù)據(jù)位Ddn相加而得到數(shù)據(jù)Db。乘法器521、522.....52N接著分別將數(shù)據(jù)Db與產(chǎn)生多
項式g(x)的系數(shù)gl、&.....gN相乘而分別得到數(shù)據(jù)Dci、Dc2.....Dcn。數(shù)據(jù)Db在經(jīng)過緩沖
器530的儲存后,依次由加法器501、502.....50N分別與數(shù)據(jù)Dei、De2.....Dcm相加,而得到
數(shù)據(jù)Ddn。最后,緩沖器51N儲存數(shù)據(jù)Ddn后,將數(shù)據(jù)Ddn輸出為檢查碼P。圖6是本發(fā)明的錯誤修正碼解碼器600的區(qū)塊圖。于一實施例中,錯誤修正碼解 碼器600包括癥狀碼計算模塊602、錯誤多項式計算模塊604、秦氏搜尋模塊606、以及控制 電路608。當錯誤修正碼解碼器600收到錯誤修正碼的一長碼字時,錯誤修正碼解碼器600 自該長碼字取出其所包含的多個短碼字。首先,癥狀碼計算模塊602依據(jù)該等短碼字的短 檢查碼計算該等短碼字的多個短癥狀碼(short syndrome) Sla, Slb,...,Sin,并依據(jù)該長碼 字的該長檢查碼計算該長碼字的多個長癥狀碼(long Syn(Irome)SljS2,.. .,SK。錯誤多項式 計算模塊604用以依據(jù)長碼字的長癥狀碼S1, S2,. . .,Sk計算該長碼字的錯誤多項式(error location polynomial)的系數(shù)。秦氏搜尋模塊606用以找出該錯誤多項式的多個根,以供 修正錯誤修正碼的長碼字。此外,當短碼字的短癥狀碼Sla,Slb,. . .,Sin不為0時,錯誤多項 式計算模塊604亦會依據(jù)不為零的短癥狀碼計算短碼字的錯誤多項式,并由秦氏搜尋模塊 606進行秦氏搜尋找出短碼字的錯誤多項式的根,以立即更正短碼字發(fā)生的錯誤。與圖1的 習知方法100類似,控制電路608檢查長癥狀碼S1, S2,...,Sk是否為零,并于該等長癥狀碼 S1, S2, ...,Sk皆為零時停止錯誤多項式計算模塊604對錯誤多項式的系數(shù)的計算,并停止 該秦氏搜尋模塊606對錯誤多項式的根的搜尋。然而,控制電路608尚有其它功能,可減少 解碼長碼字所需的時間,而提升錯誤修正碼解碼器600的效能。此部分功能將以圖8說明。于一實施例中,由于用以編碼短碼字的第一產(chǎn)生多項式是用以編碼長碼字的第二 產(chǎn)生多項式的最小多項式的函式,因此可利用同一組癥狀碼計算模塊602計算長碼字的癥 狀碼與短碼字的癥狀碼。圖7是本發(fā)明的癥狀碼計算模塊700的電路圖。癥狀碼計算模塊
700包括多個癥狀碼產(chǎn)生器701,702.....70K,該等癥狀碼產(chǎn)生器701,702.....70K分別
產(chǎn)生長癥狀碼的長癥狀碼SpS2.....SK。癥狀碼產(chǎn)生器701亦產(chǎn)生多個短碼字的短癥狀碼
Sla,Slb,...,Sino于一實施例中,長碼字的數(shù)據(jù)位D被依次遞送至癥狀碼產(chǎn)生器702.....
70K,當長碼字的數(shù)據(jù)位D被處理完畢,癥狀碼產(chǎn)生器702.....70K便產(chǎn)生長碼字的長癥狀
碼&.....SK。同時,短碼字的數(shù)據(jù)位D亦依序被遞送至癥狀碼產(chǎn)生器701。每當一短碼字
的數(shù)據(jù)位D被處理完畢,癥狀碼產(chǎn)生器701便產(chǎn)生該短碼字相應的一短癥狀碼。例如,當區(qū) 段數(shù)據(jù)D1與短檢查碼Psi被輸入至癥狀碼產(chǎn)生器701時,癥狀碼產(chǎn)生器701便產(chǎn)生短碼字 Csi的短癥狀碼;當區(qū)段數(shù)據(jù)D2與短檢查碼Ps2被輸入至癥狀碼產(chǎn)生器701時,癥狀碼產(chǎn)生器 701便產(chǎn)生短碼字Cs2的短癥狀碼。由于長碼字由多個短碼字所組成,當癥狀碼產(chǎn)生器701 將長碼字所包括的多個短碼字的數(shù)據(jù)位D均處理完畢,癥狀碼產(chǎn)生器701便產(chǎn)生長碼字的 長癥狀碼Sp圖7中的每一癥狀碼產(chǎn)生器701、702.....70K包括一加法器、一乘法器、以及一緩
沖器。舉例來說,于第一癥狀碼產(chǎn)生器701中,緩沖器711儲存數(shù)據(jù)D1并將其輸出。加法 器731將長碼字的數(shù)據(jù)位D與緩沖器711輸出的數(shù)據(jù)D1相加后得到一第一癥狀碼Sp乘法 器721將系數(shù)α與癥狀碼S1相乘后得到數(shù)據(jù)D1,而新得到的數(shù)據(jù)D1再被送至緩沖器711 中儲存。癥狀碼產(chǎn)生器701的系數(shù)α為長碼字編碼器的產(chǎn)生多項式與短碼字編碼器的產(chǎn) 生多項式的共同根,而其它癥狀碼產(chǎn)生器702.....70Κ的系數(shù)分別為α2.....α κ。而α、α2.....α κ為長碼字編碼器的產(chǎn)生多項式的根。圖8是本發(fā)明的錯誤修正碼的解碼方法800的流程圖。圖6的錯誤修正碼解碼 器600依據(jù)方法800進行錯誤修正碼的解碼。首先,錯誤修正碼解碼器600接收一長碼字 (步驟802)。接著,癥狀碼計算模塊602循序計算該長碼字中一短碼字的短癥狀碼(步驟 804),例如,錯誤修正碼解碼器600首先對長碼字Q中第一個短碼字Csi進行計算。此時控 制電路608檢查是否計算得到的短癥狀碼為零(步驟806)。當短癥狀碼為零時,表示短碼 字正確無誤,因此癥狀碼計算模塊602繼續(xù)計算該長碼字中其它的短碼字的短癥狀碼(步
驟804),例如,接著計算第二個短碼字Cs2、第三個短碼字Cs3......直到該長碼字中所有短
碼字均處理完畢為止(步驟812)。當短癥狀碼不為零時,表示短碼字有錯誤,因此控制電 路608利用非零短癥狀碼更正該短碼字并紀錄更正結(jié)果(步驟808),再由癥狀碼計算模塊 602繼續(xù)計算該長碼字中的短碼字的短癥狀碼(步驟804),直到該長碼字中所有短碼字均 處理完畢為止(步驟810)。接著,癥狀碼計算模塊602計算長碼字的長癥狀碼(步驟814)。若長癥狀碼為零 (步驟816),表示長碼字正確無誤,則該長碼字的解碼結(jié)束。若長癥狀碼不為零(步驟816), 表示長碼字有錯誤。此時控制電路608繼續(xù)檢查是否所有非零短癥狀碼均可正確更正短碼 字(步驟818)。若所有非零短癥狀碼均可正確更正短碼字(步驟818),則控制電路608利 用非零短癥狀碼更正長癥狀碼(步驟820),例如,若第四短碼字的Cs4的短癥狀碼并非全為 零,則利用該非零短癥狀碼去更正非零長癥狀碼中相對應的位置。若更正后長癥狀碼為零 (步驟822),表示該些錯誤已藉由短癥狀碼更正成功,則可將該些利用短碼字更正的更正 結(jié)果回復予主機,無需再利用長癥狀碼進行更正整個長碼字,可大幅節(jié)省時間。若更正后長 癥狀碼不為零(步驟822),或部分非零短癥狀碼無法正確更正短碼字(步驟818),則控制 電路608利用原本的長癥狀碼針對無法正確更正的短碼字進行修正(步驟824),以得到正 確的長碼字,而該長碼字的解碼結(jié)束。若當所有短癥狀碼為零時即認為該長碼字正確無誤,可能會發(fā)生誤判。因為短癥 狀碼的更正能力較低,可能僅有一個或兩個位的更正能力,而當該短碼字發(fā)生的錯誤超過 該短癥狀碼的更正能力時,例如出現(xiàn)8個位的錯誤,該短癥狀碼亦可能被計算為零。因此需 要利用更正能力較強的長癥狀碼再度進行檢驗。長癥狀碼的更正能力較高,可能有24個位 的更正能力。故若某短碼字中出現(xiàn)8個位的錯誤,仍可通過長癥狀碼發(fā)現(xiàn),并進行后續(xù)更 正。發(fā)生誤判的機率就可降低。雖然本發(fā)明已以較佳實施例揭露如上,然其并非用以限定本發(fā)明,任何熟習此項 技術(shù)者,在不脫離本發(fā)明的精神和范圍內(nèi),當可作些許的更動與潤飾,因此本發(fā)明的保護范 圍當視后附的申請專利范圍所界定者為準。
權(quán)利要求
一種錯誤修正碼的編碼及解碼方法,其特征在于,包括下列步驟接收一原始數(shù)據(jù);將該原始數(shù)據(jù)分割為多個區(qū)段數(shù)據(jù);依據(jù)一第一產(chǎn)生多項式分別產(chǎn)生該等區(qū)段數(shù)據(jù)的短檢查碼;附加該等短檢查碼于該等區(qū)段數(shù)據(jù)之后,以分別產(chǎn)生多個短碼字;結(jié)合該等短碼字以得到一編碼數(shù)據(jù);依據(jù)一第二產(chǎn)生多項式以產(chǎn)生該編碼數(shù)據(jù)的長檢查碼,其中該第一產(chǎn)生多項式為該第二產(chǎn)生多項式的至少一個最小多項式的函式;附加該長檢查碼于該編碼數(shù)據(jù)之后,以產(chǎn)生該錯誤修正碼的一長碼字。
2.根據(jù)權(quán)利要求1所述的錯誤修正碼的編碼及解碼方法,其特征在于,其中該第一產(chǎn) 生多項式為該第二產(chǎn)生多項式的至少一個最小多項式的最小公倍式。
3.根據(jù)權(quán)利要求1所述的錯誤修正碼的編碼及解碼方法,其特征在于,更包括儲存該 長碼字于一儲存媒體中。
4.根據(jù)權(quán)利要求1所述的錯誤修正碼的編碼及解碼方法,其特征在于,更包括 自一儲存媒體讀出該長碼字;自該長碼字取出其所包含的該等短碼字;依據(jù)該等短碼字的該等短檢查碼計算該等短碼字的多個短癥狀碼; 檢查是否該等短癥狀碼皆為零;以及當該等短癥狀碼其中的一至數(shù)個非零短癥狀碼不為零時,利用該等非零短癥狀碼更正 對應的該等短碼字。
5.根據(jù)權(quán)利要求4所述的錯誤修正碼的編碼及解碼方法,其特征在于,更包括 當該等短癥狀碼計算完畢后,依據(jù)該長碼字的該長檢查碼計算該長碼字的一長癥狀碼;檢查是否該長癥狀碼為零;當該長癥狀碼不為零時,檢查是否該等非零短癥狀碼均可正確更正對應的該等短碼 字;以及當該等非零短癥狀碼均可正確更正對應的該等短碼字時,利用該等非零短癥狀碼更正 該長癥狀碼,以得一更正后長癥狀碼。
6.根據(jù)權(quán)利要求5所述的錯誤修正碼的編碼及解碼方法,其特征在于,更包括 當該長癥狀碼不為零,且該等非零短癥狀碼的部分無法正確更正對應的該等短碼字時,利用該長癥狀碼對無法正確更正的該等短碼字進行修正。
7.根據(jù)權(quán)利要求1所述的錯誤修正碼的編碼及解碼方法,其特征在于,其中該長碼字 及該等短碼字為BCH碼或RS碼。
8.一種錯誤修正碼的編碼解碼器,其特征在于,包括一錯誤修正碼編碼器,接收一原始數(shù)據(jù),將該原始數(shù)據(jù)分割為多個區(qū)段數(shù)據(jù),產(chǎn)生該等 區(qū)段數(shù)據(jù)的短檢查碼,附加該等短檢查碼于該等區(qū)段數(shù)據(jù)之后以分別產(chǎn)生多個短碼字,結(jié) 合該等短碼字以得到一編碼數(shù)據(jù),產(chǎn)生該編碼數(shù)據(jù)的長檢查碼,以及附加該長檢查碼于該 編碼數(shù)據(jù)之后以產(chǎn)生一長碼字以供儲存于一儲存媒體;以及一錯誤修正碼解碼器,自該儲存媒體讀出該長碼字,自該長碼字取出其所包含的該等短碼字,依據(jù)該等短碼字的該等短檢查碼計算該等短碼字的多個短癥狀碼,檢查是否該等 短癥狀碼皆為零,以及當該等短癥狀碼其中的一至數(shù)個非零短癥狀碼不為零時,利用該等 非零短癥狀碼更正對應的該等短碼字。
9.根據(jù)權(quán)利要求8所述的錯誤修正碼的編碼解碼器,其特征在于,其中該錯誤修正碼 編碼器依據(jù)一第一產(chǎn)生多項式以產(chǎn)生該等區(qū)段數(shù)據(jù)的該等短檢查碼,并依據(jù)一第二產(chǎn)生多 項式以產(chǎn)生該編碼數(shù)據(jù)的該長檢查碼,其中該第一產(chǎn)生多項式為該第二產(chǎn)生多項式的至少 一個最小多項式的函式。
10.根據(jù)權(quán)利要求9所述的錯誤修正碼的編碼解碼器,其特征在于,其中該第一產(chǎn)生多 項式為該第二產(chǎn)生多項式的至少一個最小多項式的最小公倍式。
11.根據(jù)權(quán)利要求9所述的錯誤修正碼的編碼解碼器,其特征在于,其中該錯誤修正碼 編碼器包括一短碼字編碼器,依據(jù)該第一產(chǎn)生多項式以產(chǎn)生該等區(qū)段數(shù)據(jù)的該等短檢查碼;一第一添附器,附加該等短檢查碼于該等區(qū)段數(shù)據(jù)之后以分別產(chǎn)生該等短碼字;一長碼字編碼器,結(jié)合該等短碼字以得到該編碼數(shù)據(jù),并依據(jù)該第二產(chǎn)生多項式以產(chǎn) 生該編碼數(shù)據(jù)的該長檢查碼;以及一第二添附器,附加該長檢查碼于該編碼數(shù)據(jù)之后以產(chǎn)生該長碼字。
12.根據(jù)權(quán)利要求8所述的錯誤修正碼的編碼解碼器,其特征在于,其中當該等短癥狀 碼計算完畢后,該錯誤修正碼解碼器依據(jù)該長碼字的該長檢查碼計算該長碼字的一長癥狀 碼,檢查是否該長癥狀碼為零,當該長癥狀碼不為零時檢查是否該等非零短癥狀碼均可正 確更正對應的該等短碼字,當該等非零短癥狀碼均可正確更正對應的該等短碼字時,利用 該等非零短癥狀碼更正該長癥狀碼以得一更正后長癥狀碼。
13.根據(jù)權(quán)利要求8所述的錯誤修正碼的編碼解碼器,其特征在于,其中當該長癥狀碼 不為零,且該等非零短癥狀碼的部分無法正確更正對應的該等短碼字時,該錯誤修正碼解 碼器利用該長癥狀碼對無法正確更正的該等短碼字進行修正。
14.根據(jù)權(quán)利要求12所述的錯誤修正碼的編碼解碼器,其特征在于,其中該錯誤修正 碼解碼器包括一癥狀碼計算模塊,依據(jù)該等短碼字的該等短檢查碼計算該等短碼字的該等短癥狀 碼,并依據(jù)該長碼字的該長檢查碼計算該長碼字的該等長癥狀碼;一控制電路,檢查是否該等短癥狀碼皆為零,當該等短癥狀碼其中的該等非零短癥狀 碼不為零時利用該等非零短癥狀碼更正對應的該等短碼字,檢查是否該長癥狀碼為零,當 該長癥狀碼不為零時檢查是否該等非零短癥狀碼均可正確更正對應的該等短碼字,以及當 該等非零短癥狀碼均可正確更正對應的該等短碼字時利用該等非零短癥狀碼更正該長癥 狀碼。
15.根據(jù)權(quán)利要求8所述的錯誤修正碼的編碼解碼器,其特征在于,其中該長碼字及該 等短碼字為BCH碼或RS碼。
16.一種錯誤修正碼的解碼方法,其特征在于,包括下列步驟接收該錯誤修正碼的一長碼字,其中該長碼字包括多個短碼字及一長檢查碼,每一該 等短碼字均包括一短檢查碼;自該長碼字取出其所包含的該等短碼字;依據(jù)該等短碼字的該等短檢查碼計算該等短碼字的多個短癥狀碼; 檢查是否該等短癥狀碼皆為零;當該等短癥狀碼其中的一至數(shù)個非零短癥狀碼不為零時,利用該等非零短癥狀碼更正 對應的該等短碼字;當該等短癥狀碼計算完畢后,依據(jù)該長碼字的該長檢查碼計算該長碼字的一長癥狀碼;檢查是否該長癥狀碼為零;當該長癥狀碼不為零時,檢查是否該等非零短癥狀碼均可正確更正對應的該等短碼 字;以及當該等非零短癥狀碼均可正確更正對應的該等短碼字時,利用該等非零短癥狀碼更正 該長癥狀碼,以得一更正后長癥狀碼。
17.根據(jù)權(quán)利要求16所述的錯誤修正碼的解碼方法,其特征在于,更包括當該長癥狀碼不為零,且該等非零短癥狀碼的部分無法正確更正對應的該等短碼字 時,利用該長癥狀碼對無法正確更正的該等短碼字進行修正。
18.根據(jù)權(quán)利要求16所述的錯誤修正碼的解碼方法,其特征在于,其中該等短碼字的 該等短檢查碼依據(jù)一第一產(chǎn)生多項式所產(chǎn)生,該長碼字的該長檢查碼依據(jù)一第二產(chǎn)生多項 式所產(chǎn)生,其中該第一產(chǎn)生多項式為該第二產(chǎn)生多項式的至少一個最小多項式的函式。
19.根據(jù)權(quán)利要求16所述的錯誤修正碼的解碼方法,其特征在于,其中該第一產(chǎn)生多 項式為該第二產(chǎn)生多項式的至少一個最小多項式的最小公倍式。
20.根據(jù)權(quán)利要求16所述的錯誤修正碼的解碼方法,其特征在于,其中該長碼字及該 等短碼字為BCH碼或RS碼。
全文摘要
本發(fā)明涉及一種錯誤修正碼的編碼及解碼方法,其包括接收一原始數(shù)據(jù);將該原始數(shù)據(jù)分割為多個區(qū)段數(shù)據(jù);依據(jù)一第一產(chǎn)生多項式分別產(chǎn)生該等區(qū)段數(shù)據(jù)之短檢查碼;附加該等短檢查碼于該等區(qū)段數(shù)據(jù)之后,以分別產(chǎn)生多個短碼字;結(jié)合該等短碼字以得到一編碼數(shù)據(jù);依據(jù)一第二產(chǎn)生多項式以產(chǎn)生該編碼數(shù)據(jù)之長檢查碼,其中該第一產(chǎn)生多項式為該第二產(chǎn)生多項式之至少一個最小多項式的函式;附加該長檢查碼于該編碼數(shù)據(jù)之后,以產(chǎn)生該錯誤修正碼之一長碼字。本發(fā)明還涉及一種錯誤修正碼的編碼解碼器,其包括一錯誤修正碼編碼器和一錯誤修正碼解碼器。本發(fā)明還涉及一種錯誤修正碼的解碼方法。本發(fā)明減少了錯誤修正碼的解碼時間,增進了解碼器的效能。
文檔編號H03M13/00GK101938280SQ20091016802
公開日2011年1月5日 申請日期2009年8月10日 優(yōu)先權(quán)日2009年7月1日
發(fā)明者楊宗杰 申請人:慧帝科技(深圳)有限公司;慧榮科技股份有限公司