TWI551060B - Bch解碼方法及其解碼器 - Google Patents
Bch解碼方法及其解碼器 Download PDFInfo
- Publication number
- TWI551060B TWI551060B TW103133093A TW103133093A TWI551060B TW I551060 B TWI551060 B TW I551060B TW 103133093 A TW103133093 A TW 103133093A TW 103133093 A TW103133093 A TW 103133093A TW I551060 B TWI551060 B TW I551060B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- bch
- data
- error
- encoded data
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1525—Determination and particular use of error location polynomials
- H03M13/153—Determination and particular use of error location polynomials using the Berlekamp-Massey algorithm
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1525—Determination and particular use of error location polynomials
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/155—Shortening or extension of codes
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Description
本發明提供一種解碼方法及其解碼器,且特別是利用BCH碼進行解碼之解碼方法及其解碼器。
近年來無線通訊快速發展,使得資料傳輸的便捷性大幅提升。然而,資料在傳輸過程中難免會受到雜訊干擾,或是因傳輸媒介的可靠度差,使得所傳輸的資料產生錯誤並且失真。而錯誤更正碼(Error control coding)的作用即是還原這些失真的資料。常用的錯誤更正碼有漢明碼(Hamming Code)、里德所羅門碼(Reed Solomon Code)、BCH碼(Bose Chaudhuri Hocquengham Code)、以及低密度奇偶校驗碼(Low Density Parity Check Code,簡稱LDPC碼)等。其中,BCH碼是一種被廣泛使用的錯誤更正碼,常被運用於存儲裝置與通訊裝置中,以確保資料的可靠性及正確性。
BCH編碼以及BCH解碼均可以線性迴授位移暫存器(Linear Feedback Shift Register)架構來實現。但相較於BCH編碼,BCH解碼程序較為複雜。詳細地說,請參閱圖1,圖1是傳統的BCH解碼方法之流程圖。首先,於步驟S101中接收編碼資料。於步驟S102,利用接收到的編碼資料計算徵狀值(Syndrome)。於步驟S103,利用徵狀值計算錯誤位置多項式(Error Location Polynomial)。於步驟S104,利用錯誤位置多項式計算錯誤發生位置(Error Location)。最後,於步驟S105,根據錯誤發生位置進行
錯誤更正。
值得一提的是,利用錯誤位置多項式計算錯誤發生位置需要耗費不少時間。因此,相較於圖1所示之傳統的BCH解碼方法,目前更有一種BCH解碼方法,能夠降低BCH解碼程序所耗費的時間。詳細地說,請參閱圖2,圖2是另一種傳統的BCH解碼方法之流程圖。首先,於步驟S201中接收編碼資料。於步驟S202,利用接收到的編碼資料計算徵狀值。於步驟S203,判斷徵狀值是否滿足零向量。換句話說,將遭受雜訊干擾後的編碼資料乘上校驗矩陣HX T,若相乘後的結果全為0(即徵狀值滿足零向量),則此編碼資料為一個有效的編碼資料,進入步驟S208。若徵狀值不滿足零向量,則進入步驟S204。於步驟S204,利用徵狀值計算錯誤位置多項式。於步驟S205,利用錯誤位置多項式計算錯誤發生位置。於步驟S206,判斷是否可進行錯誤更正。若編碼資料中錯誤的位元數目未超出錯誤更正能力之範圍時,則進入步驟S207。若編碼資料中錯誤的位元數目超出錯誤更正能力之範圍時,則進入步驟S208。於步驟S207,根據錯誤發生位置進行錯誤更正。於步驟S208,結束BCH解碼。
也就是說,圖2所示之傳統的BCH解碼方法是根據徵狀值是否滿足零向量來判斷是否繼續進行BCH解碼流程。當徵狀值滿足零向量時,BCH解碼器判斷對編碼資料的解碼成功,並輸出BCH解碼資料。換句話說,當徵狀值滿足零向量時,BCH解碼器將不會進行步驟S204~S207的運算,以減少整體解碼的時間。
由上述內容可知,圖2所示之傳統的BCH解碼方法雖然可以減少BCH解碼方法整體所消耗的時間,但是傳統的BCH解碼方法還是要到計算完錯誤發生位置才能判斷編碼資料是否可以被成功解碼(例如上述步驟S206)。換句話說,若編碼資料無法被成功解碼,那麼花費在此編碼資料上的運算時間便浪費了,使得整體解碼的吞吐量降低。因此,需要一種BCH解碼方法及其解碼器之
設計,在能夠降低整體解碼時間的前提下,亦能提高整體解碼的吞吐量。
本發明實施例提供一種BCH解碼方法。於此BCH解碼方法中,首先接收編碼資料,並計算編碼資料之徵狀值。在計算出編碼資料之徵狀值後,根據徵狀值計算至少一錯誤發生位置。接著,偵測編碼資料所包含之第一位元串的至少一判斷位元。最後,對至少一錯誤發生位置進行錯誤更正以輸出解碼資料。其中,編碼資料包括第一位元串、第二位元串以及第三位元串。第一位元串包括多個預設位元以及判斷位元。第二位元串包括多個資料位元。第三位元串包括多個查核位元。
本發明實施例提供一種BCH編碼器。此BCH編碼器包括BCH編碼單元以及傳輸單元。BCH編碼單元用以對原始資料進行編碼,並輸出編碼資料。傳輸單元耦接於BCH編碼單元,用以輸出編碼資料。其中,對原始資料進行編碼的步驟更包括:將原始資料中第一位元串之至少一位元設置為判斷位元,再對原始資料進行編碼,以產生編碼資料。
本發明實施例提供一種BCH解碼器。此BCH解碼器包括接收單元以及BCH解碼單元。接收單元用以接收編碼資料。BCH解碼單元耦接於接收單元,用以對編碼資料進行解碼。其中,BCH解碼器解碼編碼資料的步驟包括:接收編碼資料;計算編碼資料之徵狀值;根據徵狀值計算至少一錯誤發生位置;偵測編碼資料所包含之第一位元串的至少一判斷位元;對至少一錯誤發生位置進行錯誤更正以輸出解碼資料。其中,編碼資料包括第一位元串、第二位元串以及第三位元串。第一位元串包括多個預設位元以及判斷位元,第二位元串包括多個資料位元,第三位元串包括多個查核位元。
綜上所述,本發明實施例所提供的BCH解碼方法及其解碼器,透過徵狀值以及判斷位元即可判斷編碼資料是否可被成功地解碼。當BCH解碼器判斷編碼資料無法被成功解碼,則BCH解碼器將直接結束解碼程序。也就是說,本發明實施例所提供的BCH解碼方法及其解碼器可避免計算完錯誤發生位置才發現編碼資料無法被成功解碼的情況,以提高整體解碼的吞吐量。此外,本發明實施例之BCH解碼方法及其解碼器不需要將所有的徵狀值計算出來以偵測徵狀值是否滿足零向量。因此,相較於傳統之BCH解碼器,本發明實施例不需要利用複雜的電路設計去計算出編碼資料的所有徵狀值。換句話說,本發明實施例更減少了BCH解碼器的成本與硬體複雜度。
為使能更進一步瞭解本發明之特徵及技術內容,請參閱以下有關本發明之詳細說明與附圖,但是此等說明與所附圖式僅係用來說明本發明,而非對本發明的權利範圍作任何的限制。
S101~S105‧‧‧步驟流程
S201~S208‧‧‧步驟流程
4、Ec‧‧‧編碼資料
Eo‧‧‧原始資料
Ed‧‧‧解碼資料
30‧‧‧BCH編碼器
31‧‧‧BCH解碼器
301‧‧‧BCH編碼單元
302‧‧‧傳輸單元
311‧‧‧接收單元
312‧‧‧BCH解碼單元
n‧‧‧編碼資料的碼字區塊長度
k‧‧‧資料位元之位元數
p‧‧‧查核位元之位元數
Epreset‧‧‧預設位元
Edata‧‧‧資料位元
Eparity‧‧‧查核位元
Edet‧‧‧判斷位元
S501~S507‧‧‧步驟流程
S601~S608‧‧‧步驟流程
圖1是傳統的BCH解碼方法之流程圖。
圖2是另一種傳統的BCH解碼方法之流程圖。
圖3A是本發明實施例之BCH編碼器的示意圖。
圖3B是本發明實施例之BCH解碼器的示意圖。
圖4是本發明實施例之編碼資料的示意圖。
圖5是本發明實施例之BCH解碼方法的流程圖。
圖6是本發明另一實施例之BCH解碼方法的流程圖。
在下文將參看隨附圖式更充分地描述各種例示性實施例,在隨附圖式中展示一些例示性實施例。然而,本發明概念可能以許多不同形式來體現,且不應解釋為限於本文中所闡述之例示性實
施例。確切而言,提供此等例示性實施例使得本發明將為詳盡且完整,且將向熟習此項技術者充分傳達本發明概念的範疇。在諸圖式中,可為了清楚而誇示層及區之大小及相對大小。類似數字始終指示類似元件。
應理解,雖然本文中可能使用術語第一、第二、第三等來描述各種元件,但此等元件不應受此等術語限制。此等術語乃用以區分一元件與另一元件。因此,下文論述之第一元件可稱為第二元件而不偏離本發明概念之教示。如本文中所使用,術語「或」視實際情況可能包括相關聯之列出項目中之任一者或者多者之所有組合。
請參閱圖3A,圖3A是本發明實施例之BCH編碼器的示意圖。BCH編碼器30包括BCH編碼單元301以及傳輸單元302。BCH編碼單元301用以對原始資料Eo進行編碼,並輸出編碼資料Ec。傳輸單元302耦接於BCH編碼單元301,用以輸出編碼資料Ec。值得一提的是,BCH編碼單元301係以線性迴授位移暫存器(Linear Feedback Shift Register)架構來實現。
配合圖3A,請參閱圖4,圖4是本發明實施例之編碼資料的示意圖。編碼資料Ec包括多個預設位元Epreset、多個資料位元Edata以及多個查核位元Eparity。於本實施例中,預設位元Epreset位於資料位元Edata的前面。查核位元Eparity位於資料位元Edata的後面。資料位元Edata為原本所要傳送的訊號(即編碼後的原始資料Eo)。查核位元Eparity為具有更正作用的訊號。預設位元Epreset為不具影響力的訊號。需注意的是,本發明實施例所提供之編碼資料Ec的結構僅為一種實施態樣,並非用以限制編碼資料Ec的結構。
BCH碼是一種區塊碼,也就是說,編碼資料Ec除了原本所要傳輸的訊號外(即資料位元Edata),更包括了查核位元Eparity。此外,本發明實施例係以短BCH碼(Shorten BCH Code)為例,因此,編碼資料Ec中除了資料位元Edata以及查核位元Eparity外,還包括了
多個預設位元Epreset。由於預設位元Epreset並不會被送入BCH編碼單元301進行編碼,故預設位元Epreset並不會影響BCH編碼單元301的初始狀態。也就是說,預設位元Epreset所造成的影響可以被忽略。需注意的是,本發明實施例雖然以短BCH碼的BCH編碼單元301為例,然而,本發明並不以此為限,使用者亦可依實際需求自行設計BCH編碼單元301。
值得一提的是,預設位元Epreset之值與線性迴授位移暫存器的初始狀態相關。具體來說,只要改變線性迴授位移暫存器的初始狀態即可改變預設位元Epreset。為方便說明,本發明實施例將全部的預設位元之位元值設定為0。然而,本發明並不以此為限,使用者亦可自行調整線性迴授位移暫存器的初始狀態,以設定不同的預設位元Epreset。
舉例來說,本發明實施例係以(n,k)短BCH碼對原始資料Eo進行編碼,以輸出編碼資料Ec,其中n、k為大於0之整數。編碼資料Ec的碼字區塊長度(Codeword Length)為n,亦即編碼資料Ec係由n個位元所構成。而在編碼資料Ec之n個位元中,包括了k個資料位元Edata以及p個查核位元Eparity。換句話說,編碼資料Ec中包括n-(k+p)個預設位元Epreset。
在編碼時,BCH編碼單元301在原始資料Eo之前方插入n-(k+p)個預設位元Epreset。接著,由n-(k+p)個預設位元Epreset中選擇至少一個位元,並將被選擇的位元設置為判斷位元Edet。判斷位元Edet的位元值亦可由使用者自行設計。於本發明實施例中,判斷位元Edet的位元值為1,然而,本發明並不以此為限。在判斷位元Edet設置完畢後,BCH編碼單元301對原始資料Eo進行編碼,以產生編碼資料Ec。為了方便說明,本發明實施例僅將n-(k+p)個預設位元Epreset中的一個位元設置為判斷位元Edet,此判斷位元Edet位於資料位元Edata的前一個位元。此外,使用者亦可依實際需求將判斷位元Edet設置於不同的位置,或者將n-(k+p)個預設位
元Epreset中的多個位元設置為判斷位元Edet,本發明並不以此做為限制。
在BCH編碼單元301完成對原始資料Eo的編碼後,BCH編碼單元301將編碼資料Ec輸出至傳輸單元302,傳輸單元302再將編碼資料Ec輸出。
請參閱圖3B,圖3B是本發明實施例之BCH解碼器的示意圖。BCH解碼器31包括接收單元311以及BCH解碼單元312。接收單元311用以接收由傳輸單元302所輸出的編碼資料Ec。BCH解碼單元312耦接於接收單元311,用以對編碼資料Ec進行解碼,以輸出解碼資料Ed。值得一提的是,BCH解碼單元312同樣係以線性迴授位移暫存器架構來實現。
接收單元311收到編碼資料Ec後,接著接收單元311將編碼資料Ec輸出至BCH解碼單元312。BCH解碼單元312收到編碼資料Ec後,即進入解碼程序。
詳細地說,BCH解碼單元312收到編碼資料Ec後,首先要判斷在傳送的過程中,編碼資料Ec是否有發生錯誤。而編碼資料Ec是否有發生錯誤則可由徵狀值得知。因此,BCH解碼單元312先利用接收到的編碼資料Ec計算徵狀值。一般來說,當徵狀值滿足零向量時,BCH解碼單元312判斷編碼資料Ec在傳輸過程中並未發生錯誤。反之,當徵狀值滿足不零向量時,BCH解碼單元312判斷編碼資料Ec在傳輸過程中有發生錯誤,則開始進行錯誤更正。有關徵狀值的詳細計算方式為所屬技術領域具通常知識者常用的技術,故在此不再贅述。
值得一提的是,一般以短BCH碼進行編碼的編碼資料Ec中,預設位元Epreset中的位元值會對應線性迴授位移暫存器的初始狀態呈現對應的模式(以本實施例來說,預設位元Epreset所呈現的模式為全0)。然而,本發明實施例在預設位元Epreset中設置了一個判斷位元Edet(以本實施例來說,其位元值為1),因此,BCH解碼
單元312計算出來的徵狀值將不滿足零向量。也就是說,BCH解碼單元312不需要將編碼資料Ec的所有徵狀值計算出來,即可判斷出徵狀值不滿足零向量,並繼續解碼程序。舉例來說,假設編碼資料具有100個徵狀值,BCH解碼單元312可能僅需要計算其中10個便能判斷徵狀值不滿足零向量。需注意的是,上述BCH解碼單元312所需計算的徵狀值數目僅為一例,本發明並不以此為限。
BCH解碼單元312判斷徵狀值不滿足零向量後,將進一步地偵測造成徵狀值不滿足零向量的位元是否為判斷位元Edet。BCH解碼單元312利用徵狀值計算錯誤位置多項式。BCH解碼單元312透過錯誤位置多項式的次項數,來判斷編碼資料Ec中是否存在判斷位元Edet以外的位元發生錯誤。舉例來說,當編碼資料Ec之資料位元Edata以及查核位元Eparity皆未發生錯誤時,BCH解碼單元312計算出的錯誤位置多項式將只有一次項之係數,此項係數係對應至判斷位元Edet。反之,當編碼資料Ec之資料位元Edata或查核位元Eparity有發生錯誤時,BCH解碼單元312計算出的錯誤位置多項式將有至少二次項之係數,其中資料位元Edata或查核位元Eparity發生錯誤的位元數越多,則錯誤位置多項式的次項數將隨之增加。值得一提的是,目前已有多種演算法可用以計算錯誤位置多項式,例如彼得森-葛侖斯坦-徹勒演(Peterson Gorenstein Zierler,PGZ)演算法或者伯利坎普-梅西(Berlekamp-Massey,BM)演算法。然而,本發明並不限定運用哪一種演算法去計算錯誤位置多項式。此外,有關錯誤位置多項式的詳細計算方式為所屬技術領域具通常知識者常用的技術,故在此不再贅述。
在計算出錯誤位置多項式後,BCH解碼單元312偵測判斷位元Edet是否存在。由於判斷位元Edet的位置係決定好的(由上述內容可知,本發明實施例之判斷位元Edet的位置係位在資料位元Edata的前一位元),因此,BCH解碼單元312可以直接偵測判斷位元
Edet是否存在。當BCH解碼單元312沒有偵測到判斷位元Edet時,BCH解碼單元312判斷此編碼資料Ec無法被成功解碼,並直接結束解碼程序。當BCH解碼單元312有偵測到判斷位元Edet時,則BCH解碼單元312將繼續進行解碼程序。
在偵測到判斷位元Edet後,BCH解碼單元312利用錯誤位置多項式計算錯誤發生位置。詳細地說,由於錯誤位置多項式的根即為錯誤發生位置,因此,BCH解碼單元312只要解錯誤位置多項式便可得知錯誤發生位置。本發明實施例係利用秦式搜尋法解錯誤位置多項式,以尋找錯誤位置多項式的根。此外,有關以秦式搜尋法解錯誤位置多項式的詳細計算方式為所屬技術領域具通常知識者常用的技術,故在此不再贅述。
最後,在求出錯誤發生位置後,BCH解碼單元312即可根據錯誤發生位置對編碼資料Ec進行錯誤更正,以輸出解碼資料Ed。
於本發明另一實施例中,BCH解碼單元312在計算完徵狀值後,更可偵測徵狀值是否與預定模式相符,以決定是否繼續進行解碼程序。詳細地說,由於編碼資料Ec之預設位元Epreset的位元值以及判斷位元Edet的位置係決定好的,因此,當資料位元Edata以及查核位元Eparity皆未發生錯誤時,BCH解碼單元312所計算出來的徵狀值將為固定的模式。也就是說,BCH解碼單元312將資料位元Edata以及查核位元Eparity皆未發生錯誤時所得出的徵狀值定義為預定模式。如此一來,每當BCH解碼單元312接收編碼資料Ec並計算出徵狀值後,只要比較此徵狀值與預定模式是否相符,即可偵測出資料位元Edata以及查核位元Eparity中是否有錯誤發生。
當徵狀值與預定模式相符時,BCH解碼單元312判斷編碼資料Ec之資料位元Edata以及查核位元Eparity中並未發生錯誤,即結束解碼程序。反之,當徵狀值與預定模式不相符時,BCH解碼單元312判斷編碼資料Ec之資料位元Edata以及查核位元Eparity中有
發生錯誤,則BCH解碼單元312根據徵狀值計算錯誤位置多項式,並繼續解碼程序。
接著,請參閱圖5,圖5是本發明實施例之BCH解碼方法的流程圖。本發明實施例之BCH解碼方法適用於前述之BCH解碼單元312,其步驟包括:於步驟S501,BCH解碼單元312接收編碼資料Ec。編碼資料Ec的結構與前述實施例相同,於此不再贅述。於步驟S502,BCH解碼單元312利用接收到的編碼資料Ec計算徵狀值。BCH解碼單元312得出徵狀值後,將進一步地偵測造成徵狀值不滿足零向量的位元是否為判斷位元Edet。有關徵狀值的詳細計算方式為所屬技術領域具通常知識者常用的技術,故在此不再贅述。
於步驟S503,BCH解碼單元312利用徵狀值計算錯誤位置多項式。BCH解碼單元312透過錯誤位置多項式的係數,來判斷編碼資料Ec中是否存在判斷位元Edet以外的位元發生錯誤,使得徵狀值不滿足零向量。舉例來說,當編碼資料Ec之資料位元Edata以及查核位元Eparity皆未發生錯誤時,BCH解碼單元312計算出的錯誤位置多項式將只有一次項之係數,此項係數係對應至判斷位元Edet。反之,當編碼資料Ec之資料位元Edata或查核位元Eparity有發生錯誤時,BCH解碼單元312計算出的錯誤位置多項式將有至少二次項之係數,其中資料位元Edata或查核位元Eparity發生錯誤的位元數越多,則錯誤位置多項式的次項數將隨之增加。值得一提的是,目前已有多種演算法可用以計算錯誤位置多項式,例如彼得森-葛侖斯坦-徹勒演(Peterson Gorenstein Zierler,PGZ)演算法或者伯利坎普-梅西(Berlekamp-Massey,BM)演算法。然而,本發明並不限定運用哪一種演算法去計算錯誤位置多項式。此外,有關錯誤位置多項式的詳細計算方式為所屬技術領域具通常知識者常用的技術,故在此不再贅述。
於步驟S504,BCH解碼單元312偵測判斷位元Edet是否存在。由於判斷位元Edet的位置係決定好的(由上述內容可知,本發明實施例之判斷位元Edet的位置係位在資料位元Edata的前一位元),因此,BCH解碼單元312可以直接偵測判斷位元Edet是否存在。當BCH解碼單元312沒有偵測到判斷位元Edet時,BCH解碼單元312判斷此編碼資料Ec無法被成功解碼,並直接進入步驟S507,以結束解碼程序。當BCH解碼單元312有偵測到判斷位元Edet時,則BCH解碼單元312將繼續進行解碼程序,並進入步驟S505。
於步驟S505,BCH解碼單元312利用錯誤位置多項式計算錯誤發生位置。由於錯誤位置多項式的根即為錯誤發生位置,因此,BCH解碼單元312只要解錯誤位置多項式便可得知錯誤發生位置。本發明實施例係利用秦式搜尋法解錯誤位置多項式,以尋找錯誤位置多項式的根。此外,有關以秦式搜尋法解錯誤位置多項式的詳細計算方式為所屬技術領域具通常知識者常用的技術,故在此不再贅述。於步驟S506,BCH解碼單元312根據錯誤發生位置對編碼資料Ec進行錯誤更正,以輸出解碼資料Ed。最後,於步驟S507,BCH解碼單元312結束解碼程序。
請參閱圖6,圖6是本發明另一實施例之BCH解碼方法的流程圖。本發明另一實施例之BCH解碼方法同樣適用於前述BCH解碼單元312,且其步驟大致類似於圖5所示之BCH解碼方法,於此不再贅述。後續僅針對不同處進行說明。
圖6所示之BCH解碼方法不同於圖5之BCH解碼方法的地方在於,於步驟S603,BCH解碼單元312偵測徵狀值是否與預定模式相符,以決定是否繼續進行解碼程序。詳細地說,由於編碼資料Ec之預設位元Epreset的位元值以及判斷位元Edet的位置係決定好的,因此,當資料位元Edata以及查核位元Eparity皆未發生錯誤時,BCH解碼單元312所計算出來的徵狀值將為固定的模式。
也就是說,BCH解碼單元312將資料位元Edata以及查核位元Eparity皆未發生錯誤時所得出的徵狀值定義為預定模式。當BCH解碼單元312接收編碼資料Ec並計算出徵狀值後,只要比較此徵狀值與預定模式是否相符,即可偵測出資料位元Edata以及查核位元Eparity中是否有錯誤發生。
當徵狀值與預定模式相符時,BCH解碼單元312判斷編碼資料Ec之資料位元Edata以及查核位元Eparity中並未發生錯誤,即進入步驟S608,並結束解碼程序。反之,當徵狀值與預定模式不相符時,BCH解碼單元312判斷編碼資料Ec之資料位元Edata以及查核位元Eparity中有發生錯誤,則進入步驟S604。步驟S604~S607中BCH解碼單元312所執行的動作類似於圖5之步驟S504~S506,於此不再贅述。
綜上所述,本發明實施例所提供的BCH解碼方法及其解碼器,透過徵狀值以及判斷位元即可判斷編碼資料是否可被成功地解碼。當BCH解碼器判斷編碼資料無法被成功解碼,則BCH解碼器將直接結束解碼程序。也就是說,本發明實施例所提供的BCH解碼方法及其解碼器可避免計算完錯誤發生位置才發現編碼資料無法被成功解碼的情況,以提高整體解碼的吞吐量。此外,本發明實施例之BCH解碼方法及其解碼器不需要將所有的徵狀值計算出來以偵測徵狀值是否滿足零向量。因此,相較於傳統之BCH解碼器,本發明實施例不需要利用複雜的電路設計去計算出編碼資料的所有徵狀值。換句話說,本發明實施例更減少了BCH解碼器的成本與硬體複雜度。
以上所述,僅為本發明最佳之具體實施例,惟本發明之特徵並不侷限於此,任何熟悉該項技藝者在本發明之領域內,可輕易思及之變化或修飾,皆可涵蓋在以下本案之專利範圍。
S501~S507‧‧‧步驟流程
Claims (18)
- 一種BCH解碼方法,包括:接收一編碼資料;計算該編碼資料之一徵狀值;根據該徵狀值計算至少一錯誤發生位置;偵測該編碼資料所包含之一第一位元串的至少一判斷位元,其中該判斷位元係用於判斷該編碼資料是否繼續解碼;以及對該至少一錯誤發生位置進行錯誤更正以輸出一解碼資料;其中,該編碼資料包括該第一位元串、一第二位元串以及一第三位元串,該第一位元串包括多個預設位元以及該判斷位元,該第二位元串包括多個資料位元,該第三位元串包括多個查核位元。
- 如請求項第1項所述之BCH解碼方法,其中當沒有偵測到該判斷位元時,則結束解碼。
- 如請求項第1項所述之BCH解碼方法,其中對一原始資料進行編碼的步驟更包括:將該原始資料中該第一位元串之至少一位元設置為該判斷位元;以及對該原始資料進行編碼,以產生該編碼資料。
- 如請求項第3項所述之BCH解碼方法,其中該判斷位元位於該第一位元串之任一位元。
- 如請求項第1項所述之BCH解碼方法,其中根據該徵狀值計算該至少一錯誤發生位置的步驟包括:根據該徵狀值計算一錯誤位置多項式;以及計算該錯誤位置多項式的根,該錯誤位置多項式的根即為該至少一錯誤發生位置。
- 如請求項第5項所述之BCH解碼方法,其中該BCH解碼方法透過伯利坎普一梅西(Berlekamp-Massey,BM)演算法計算該錯誤位置多項式。
- 如請求項第5項所述之BCH解碼方法,其中該BCH解碼方法透過秦式搜尋法(Chien Search Algorithm)解錯誤位置多項式,以獲得該至少一錯誤發生位置。
- 如請求項第1項所述之BCH解碼方法,其中該BCH解碼方法更包括:偵測該徵狀值是否與一預定模式相符;以及當該徵狀值與該預定模式不符時,則根據該徵狀值計算該錯誤發生位置。
- 如請求項第8項所述之BCH解碼方法,其中當該徵狀值與該預定模式相符時,則結束解碼。
- 一種BCH編碼器,包括:一BCH編碼單元,用以對一原始資料進行編碼,並輸出一編碼資料;以及一傳輸單元,耦接於該BCH編碼單元,用以輸出該編碼資料;其中,對該原始資料進行編碼的步驟更包括:將該原始資料中一第一位元串之至少一位元設置為一判斷位元,其中該判斷位元係用於判斷該編碼資料是否繼續被解碼;以及對該原始資料進行編碼,以產生該編碼資料。
- 如請求項第10項所述之BCH編碼器,其中該判斷位元位於該第一位元串之任一位元。
- 一種BCH解碼器,包括:一接收單元,用以接收一編碼資料;以及一BCH解碼單元,耦接於該接收單元,用以對該編碼資 料進行解碼;其中,該BCH解碼器解碼該編碼資料的步驟包括:接收該編碼資料;計算該編碼資料之一徵狀值;根據該徵狀值計算至少一錯誤發生位置;偵測該編碼資料所包含之一第一位元串的至少一判斷位元,其中該判斷位元係用於判斷該編碼資料是否繼續被解碼;以及對該至少一錯誤發生位置進行錯誤更正以輸出一解碼資料;其中,該編碼資料包括該第一位元串、一第二位元串以及一第三位元串,該第一位元串包括多個預設位元以及該判斷位元,該第二位元串包括多個資料位元,該第三位元串包括多個查核位元。
- 如請求項第12項所述之BCH解碼器,其中當沒有偵測到該判斷位元時,則結束解碼。
- 如請求項第12項所述之BCH解碼器,其中根據該徵狀值計算該至少一錯誤發生位置的步驟包括:根據該徵狀值計算一錯誤位置多項式;以及計算該錯誤位置多項式的根,該錯誤位置多項式的根即為該至少一錯誤發生位置。
- 如請求項第14項所述之BCH解碼器,其中BCH解碼單元透過透過伯利坎普-梅西(Berlekamp-Massey,BM)演算法計算該錯誤位置多項式。
- 如請求項第14項所述之BCH解碼器,其中BCH解碼單元透過秦式搜尋法(Chien Search Algorithm)解錯誤位置多項式,以獲得該至少一錯誤發生位置。
- 如請求項第12項所述之BCH解碼器,其中BCH解碼器解碼 該編碼資料的步驟更包括:偵測該徵狀值是否與一預定模式相符;以及當該徵狀值與該預定模式不符時,則根據該徵狀值計算該至少一錯誤發生位置。
- 如請求項第17項所述之BCH解碼器,其中當該徵狀值與該預定模式相符時,則結束解碼。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103133093A TWI551060B (zh) | 2014-09-24 | 2014-09-24 | Bch解碼方法及其解碼器 |
US14/562,519 US9419652B2 (en) | 2014-09-24 | 2014-12-05 | BCH decoding method and decoder thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103133093A TWI551060B (zh) | 2014-09-24 | 2014-09-24 | Bch解碼方法及其解碼器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201613279A TW201613279A (en) | 2016-04-01 |
TWI551060B true TWI551060B (zh) | 2016-09-21 |
Family
ID=55526740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103133093A TWI551060B (zh) | 2014-09-24 | 2014-09-24 | Bch解碼方法及其解碼器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9419652B2 (zh) |
TW (1) | TWI551060B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI603190B (zh) * | 2016-09-30 | 2017-10-21 | 旺宏電子股份有限公司 | 用以尋找一碼字中錯誤位置的方法及電子裝置 |
US10698740B2 (en) | 2017-05-02 | 2020-06-30 | Home Box Office, Inc. | Virtual graph nodes |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050149834A1 (en) * | 2003-12-23 | 2005-07-07 | International Business Machines Corporation | (18, 9) Error correction code for double error correction and triple error detection |
US7962836B1 (en) * | 2000-01-06 | 2011-06-14 | Supertalent Electronics, Inc. | Electronic data flash card with bose, ray-chaudhuri, hocquenghem (BCH) error detection/correction |
-
2014
- 2014-09-24 TW TW103133093A patent/TWI551060B/zh not_active IP Right Cessation
- 2014-12-05 US US14/562,519 patent/US9419652B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7962836B1 (en) * | 2000-01-06 | 2011-06-14 | Supertalent Electronics, Inc. | Electronic data flash card with bose, ray-chaudhuri, hocquenghem (BCH) error detection/correction |
US20050149834A1 (en) * | 2003-12-23 | 2005-07-07 | International Business Machines Corporation | (18, 9) Error correction code for double error correction and triple error detection |
Also Published As
Publication number | Publication date |
---|---|
US9419652B2 (en) | 2016-08-16 |
US20160087650A1 (en) | 2016-03-24 |
TW201613279A (en) | 2016-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI516914B (zh) | 用於使用位元可靠度之錯誤校正碼的錯誤校正偵測之系統及方法 | |
KR100881192B1 (ko) | 에러 패턴 검출 방법, 에러 정정 장치, 및 데이터 부호화 방법 | |
JP5043562B2 (ja) | エラー訂正回路、その方法及び前記回路を備える半導体メモリ装置 | |
US7721185B1 (en) | Optimized reed-solomon decoder | |
US7774687B2 (en) | Method and system for LDPC code erasure decoding | |
KR101819152B1 (ko) | 오류 정정 코드를 디코딩하기 위한 방법 및 이와 관련된 디코딩 회로 | |
JP2008165808A (ja) | 誤り訂正確率を減らすエラー訂正回路、その方法及び前記回路を備える半導体メモリ装置 | |
KR20090018252A (ko) | 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법 | |
US8694872B2 (en) | Extended bidirectional hamming code for double-error correction and triple-error detection | |
US20090110109A1 (en) | Apparatus and method for generating a transmit signal and apparatus and method for extracting an original message from a received signal | |
JP3875274B2 (ja) | 短縮ファイア符号エラートラッピング復号方法および装置 | |
US20100199156A1 (en) | Method And Circuit For Encoding An Error Correction Code | |
US8347191B1 (en) | Method and system for soft decision decoding of information blocks | |
TWI397811B (zh) | 錯誤修正碼之編碼及解碼方法以及編碼解碼器 | |
TWI551060B (zh) | Bch解碼方法及其解碼器 | |
US20180131394A1 (en) | Data processing system and data processing apparatus | |
JP6567238B1 (ja) | 誤り訂正復号装置および誤り訂正復号方法 | |
US11362679B2 (en) | Method and apparatus for generating redundant bits for error detection | |
TWI487291B (zh) | 循環碼解碼器及其方法 | |
WO2012092902A2 (zh) | 一种译码方法和译码装置 | |
KR101154923B1 (ko) | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법 | |
KR20140074600A (ko) | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 | |
TWI527383B (zh) | A Fast BCH Code Decoding Method | |
CN109787717B (zh) | 一种基于fpga的qr31码译码方法 | |
JP2005057741A (ja) | インラインワイヤ誤り訂正 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |