TWI594583B - 硬決定輸入之一般化低密度同位檢查軟解碼 - Google Patents

硬決定輸入之一般化低密度同位檢查軟解碼 Download PDF

Info

Publication number
TWI594583B
TWI594583B TW104136896A TW104136896A TWI594583B TW I594583 B TWI594583 B TW I594583B TW 104136896 A TW104136896 A TW 104136896A TW 104136896 A TW104136896 A TW 104136896A TW I594583 B TWI594583 B TW I594583B
Authority
TW
Taiwan
Prior art keywords
decoder
codeword
component
gldpc
decoding
Prior art date
Application number
TW104136896A
Other languages
English (en)
Other versions
TW201624930A (zh
Inventor
奈夫塔力 索默
莫堤 泰帝爾
麥恰 安霍特
Original Assignee
蘋果公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 蘋果公司 filed Critical 蘋果公司
Publication of TW201624930A publication Critical patent/TW201624930A/zh
Application granted granted Critical
Publication of TWI594583B publication Critical patent/TWI594583B/zh

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1128Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1142Decoding using trapping sets
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1174Parity-check or generator matrices built from sub-matrices representing known block codes such as, e.g. Hamming codes, e.g. generalized LDPC codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • H03M13/296Particular turbo code structure
    • H03M13/2963Turbo-block codes, i.e. turbo codes based on block codes, e.g. turbo decoding of product codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • H03M13/2975Judging correct decoding, e.g. iteration stopping criteria
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • H03M13/3715Adaptation to the number of estimated errors or to the channel state
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/451Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
    • H03M13/453Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD] wherein the candidate code words are obtained by an algebraic decoder, e.g. Chase decoding

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Error Detection And Correction (AREA)

Description

硬決定輸入之一般化低密度同位檢查軟解碼
本文中所描述之實施例大體上係關於錯誤校正編碼(Error Correcting Coding;ECC),且特別係關於用於ECC解碼之方法及系統。
通常使用反覆解碼程序來解碼一些類型之錯誤校正碼,諸如一般化低密度同位檢查(Generalized Low Density Parity Check;GLDPC)碼。在此項技術中知道用於GLDPC碼之各種解碼方案。舉例而言,美國專利8,812,939(其揭示內容係以引用的方式併入本文中)描述用於使用包括主要解碼器及輔助解碼器之解碼器來解碼資料的系統及方法。自儲存裝置擷取碼字。主要解碼器嘗試使用與碼字相關聯之硬資料來解碼碼字。若主要解碼器失敗,則可由解碼器控制器接收失敗之指示,解碼器控制器啟動輔助解碼器。輔助解碼器嘗試使用與碼字相關聯之硬資料或軟資料來解碼碼字。
美國專利申請公開案2014/0258809(其揭示內容係以引用的方式併入本文中)描述用於解碼資料之系統及方法。在第一時間接收用於可變節點之可變節點值,且在第二時間接收用於可變節點之可靠性資料。在第一時間之後且在第二時間之前使用第一解碼方案來解碼可變節點,且在第二時間之後使用不同於第一解碼方案之第二解碼方案來解碼可變節點。
美國專利申請公開案2012/0240007(其揭示內容係以引用的方式併入本文中)描述包括快閃記憶體及控制器之固態儲存裝置,其經組態以經由複數個通道而將資料儲存於快閃記憶體中。使用低密度同位檢查(LDPC)碼來編碼經儲存資料。硬決定解碼器經組態以使用LDPC碼來解碼經由複數個通道中之各別通道而自快閃記憶體接收之經編碼資料,及回應於來自控制器之一或多個讀取命令而將經解碼資料提供至控制器。軟決定解碼器經組態以使用LDPC碼來解碼自快閃記憶體接收之經編碼資料,及回應於未能解碼經編碼資料之複數個硬決定解碼器中之一者而將經解碼資料提供至控制器。由軟決定解碼器使用複數個讀取再試操作來獲得經編碼資料。
本文中所描述之一實施例提供一種解碼器,其包括電路系統及一軟解碼器。該電路系統經組態以:接收用於包括多個組件碼字之一一般化低密度同位檢查(GLDPC)碼字之各別位元的通道硬決定,該多個組件碼字包括具有一或多個共用位元之第一組件碼字及第二組件碼字;排程該GLDPC碼字之解碼;及在該解碼之後輸出該經解碼GLDPC碼字。該軟解碼器經組態以:接收對應於該第一組件碼字之該等通道硬決定;進一步接收在解碼該第二組件碼字時已被指派至該等共用位元之軟可靠性度量;及基於該等通道硬決定及該等軟可靠性度量而解碼該第一組件碼字。
在一些實施例中,該軟解碼器經組態以在解碼之前將相等可靠性度量指派至該等通道硬決定。在其他實施例中,該電路系統進一步包括一硬解碼器,該硬解碼器經組態以自該等通道硬決定解碼該GLDPC碼字,且該電路系統經組態以回應於該硬解碼器之一解碼失敗而啟動該軟解碼器。在又其他實施例中,該電路系統經組態以:基於一預定義準則而選擇該等通道硬決定或如在一解碼失敗時間出現的 該硬解碼器之一輸出作為用於該軟解碼器之輸入;及使用該軟解碼器而自該經選擇輸入解碼該GLDPC碼字。
在一實施例中,該多個組件碼字已根據各別組件碼予以編碼,該硬解碼器經組態以解碼該多個組件碼字,且該預定義準則係基於作為該解碼失敗之部分而尚未能成功地解碼的該等組件碼之一數目。在另一實施例中,該電路系統經組態以在該數目低於一預定義臨限值數目時選擇該硬解碼器之該輸出,及否則選擇該等通道硬決定。在又一實施例中,該軟解碼器經組態以基於一組最可能組件碼字而將可靠性度量指派至該等各別硬決定,該組最可能組件碼字小於一整組有效組件碼字。
在一些實施例中,該GLDPC碼字儲存於一記憶體裝置中,且該電路系統經組態以自該記憶體裝置接收該等通道硬決定。在其他實施例中,在一通信信號中接收該GLDPC碼字,且該電路系統經組態以自接收該通信信號之一接收器接收該等通道硬決定。
根據本文中所描述之一實施例,另外提供一種用於解碼之方法,其包括在一軟解碼器中接收用於包括多個組件碼字之一一般化低密度同位檢查(GLDPC)碼字之各別位元的通道硬決定,該多個組件碼字包括具有一或多個共用位元之第一組件碼字及第二組件碼字。藉由如下方式來解碼該GLDPC碼字:由該軟解碼器接受對應於該第一組件碼字之通道硬決定,及在解碼該第二組件碼字時已被指派至該等共用位元之軟可靠性度量;且基於該等通道硬決定及該等軟可靠性度量而解碼該第一組件碼字。
此等及其他實施例將自其連同圖式一起所採取的實施例之以下詳細描述得以更充分地理解,在圖式中:
20‧‧‧無線通信系統
24‧‧‧傳輸器
28‧‧‧接收器
32‧‧‧傳輸天線
36‧‧‧接收天線
40‧‧‧RF前端
44‧‧‧數據機
48‧‧‧錯誤校正編碼(ECC)解碼器
52‧‧‧處理器
60‧‧‧資料儲存系統
64‧‧‧記憶體控制器
68‧‧‧記憶體裝置
72‧‧‧陣列
76‧‧‧記憶體胞元
80‧‧‧讀取/寫入(R/W)單元
84‧‧‧ECC單元
88‧‧‧處理器
100‧‧‧一般化低密度同位檢查(GLDPC)解碼器
104‧‧‧GLDPC硬解碼器
108‧‧‧GLDPC軟解碼器
112‧‧‧輸入選擇器
116‧‧‧輸出選擇器
120A‧‧‧組件解碼器
120B‧‧‧組件解碼器
124A‧‧‧解碼器
124B‧‧‧解碼器
128‧‧‧GLDPC控制器
200‧‧‧接收步驟
204‧‧‧硬解碼步驟
208‧‧‧檢查步驟
212‧‧‧硬選擇步驟
214‧‧‧計數步驟
216‧‧‧比較步驟
220‧‧‧硬輸出解碼步驟
224‧‧‧通道選擇步驟
228‧‧‧軟解碼步驟
232‧‧‧軟輸出步驟
250‧‧‧曲線
254‧‧‧曲線
圖1為根據本文中所描述之一實施例的示意性地說明使用錯誤校 正編碼(ECC)之通信系統的方塊圖;圖2為根據本文中所描述之一實施例的示意性地說明使用錯誤校正編碼(ECC)之記憶體系統的方塊圖;圖3為根據本文中所描述之一實施例的示意性地說明一般化低密度同位檢查(GLDPC)解碼器的方塊圖;圖4為根據本文中所描述之一實施例的示意性地說明用於GLDPC解碼之方法的流程圖;及圖5為根據本文中所描述之一實施例的展示GLDPC解碼器之經模擬訊框錯誤率(Frame Error Rate;FER)效能的圖形。
概觀
GLDPC碼通常包含多個子碼或組件碼。GLDPC編碼產生包含多個組件碼字之GLDPC碼字,該多個組件碼字各自係使用基礎組件碼中之一者予以編碼。通常比GLDPC碼字短得多之組件碼字可包含:任何適合線性碼,諸如(例如)漢明(Hamming)碼、博斯-查德胡里-霍昆格姆(Bose-Chaudhuri-Hocquenghem;BCH)碼、里德-所羅門(Reed-Solomon;RS)碼及里德-馬勒(Reed-Muller;RM)碼;或任何適合非線性碼。GLDPC碼可包含少至三十或更少之組件碼,或多至數千或更多之組件碼。
GLDPC碼通常經設計以使得組件碼字中之每一者與至少一個其他組件碼字共用一或多個位元。因此,GLDPC碼字之每一位元屬於單一組件碼字或在多個組件碼字之間被共用。有效GLDPC碼字包含基礎組件碼之有效組件碼字。
用以解碼給定GLDPC碼字之一種可能方式係使用各別組件解碼器來解碼個別組件碼字,例如,循序地。此解碼器將執行一或多次解碼反覆以嘗試達到組件解碼器中之每一者輸出一有效組件碼字的狀 態。除了個別組件碼之錯誤校正能力以外,在組件碼之間共用位元亦會輔助校正錯誤位元。
以上方案中之組件解碼器可包含硬解碼器或軟解碼器,其輸入及輸出分別包含硬決定或軟資訊。除了硬決定以外,軟資訊亦包含被指派至此等硬決定之各別可靠性度量。可靠性度量可包含對數似然比(Log Likelihood Ratio;LLR),其中每一LLR通常具有指示硬決定或位元值之正負號,及指示彼位元值之可靠性的絕對值。替代地,亦可使用任何其他適合可靠性度量。
至GLDPC硬解碼器之輸入習知地包含用於碼字之位元的通道硬決定,且除了硬決定位元以外,至GLDPC軟解碼器之輸入亦習知地包含被指派至此等位元之可靠性度量。基礎組件解碼器中之每一者接收對應於各別組件碼字的部分之輸入。
在GLDPC硬解碼時,硬組件解碼器接受通道硬決定且導出由組件解碼器中之一些用於相同或後續反覆中的輸出硬決定。在一些變型硬解碼器中,組件解碼器之輸出與通道硬決定進行組合以用於後續反覆中。在GLDPC軟解碼時,軟組件解碼器接受通道軟資訊且導出由組件解碼器中之一些用於相同或後續反覆中的輸出軟資訊。在給定反覆中,組件軟解碼器基於通道軟輸入、先前所產生之軟輸出及其解碼結果而更新其輸出軟資訊。
通常,GLDPC軟解碼器相比於GLDPC硬解碼器具有較好的錯誤校正能力,但招致較高複雜度、延時及功率消耗。另外,軟解碼器相比於硬解碼器較不易遭受設陷集合(trapping set)。設陷集合為如下解碼狀態:其中組件碼字中之一或多者未能解碼至有效組件碼字,但應用額外解碼反覆不會解決失敗狀態。舉例而言,當多個組件碼字共用數目超過基礎組件碼之錯誤校正能力的錯誤位元時,在硬解碼器中發生設陷集合。
本文中所描述之實施例提供用於GLDPC解碼之經改良方法及系統。儘管軟解碼器傳統上經設計以接受軟資訊,但在所揭示技術中,GLDPC軟解碼器包含軟組件解碼器,其經組態以接受硬決定或軟決定,因此節省產生軟資訊之成本(例如,延時及功率消耗),此係藉由僅在必要時才如此進行。當避免使用軟資訊之軟解碼時,亦會縮減複雜度。GLDPC解碼器因此首先嘗試基於通道硬決定之解碼,且在此嘗試失敗時基於通道或其他軟資訊而繼續進行解碼。
無軟通道資訊之軟解碼被預期為表現得不好於硬解碼。然而,所揭示技術使用Chase解碼演算法作為實例軟組件解碼器而示範出:儘管為意外的,但基於通道硬決定之GLDPC軟解碼之錯誤校正能力勝過習知GLDPC硬解碼。
所揭示實施例中之一些組合GLDPC硬解碼與GLDPC軟解碼,其中軟解碼係基於通道硬決定,如上文所解釋。在一些實施例中,GLDPC解碼器首先嘗試使用硬解碼來解碼GLDPC碼字,且回應於硬解碼失敗,GLDPC解碼器應用使用硬決定之軟解碼。在一實施例中,若使用通道硬決定之此軟解碼失敗,則軟可靠性度量被指派至通道硬決定,且軟解碼器嘗試使用軟通道輸入進行解碼。軟解碼之選擇性應用會縮減GLDPC解碼器之延時及功率消耗。
在一些實施例中,GLDPC解碼器使用預定義準則來選擇至GLDPC軟解碼器之輸入(亦即,硬輸入或軟輸入)。在一個實施例中,當硬解碼失敗時,GLDPC解碼器遍及與GLDPC硬解碼器相同之輸入或遍及GLDPC硬解碼器輸出而執行GLDPC軟解碼(使用硬輸入)。在另一實施例中,GLDPC解碼器將軟解碼應用於GLDPC硬解碼器之(硬決定)輸出。
在又一實施例中,預定義選擇準則取決於尚未能解碼有效組件碼字(亦即,使用硬解碼)之組件碼之數目。舉例而言,當失敗的硬組 件解碼器之數目低於預定義臨限值數目時,GLDPC硬解碼器很可能已達到設陷集合狀態,且因此,GLDPC解碼器將軟解碼應用於GLDPC解碼器之輸出以解決設陷集合狀態。否則,GLDPC解碼器將軟解碼應用於與GLDPC硬解碼器相同之輸入。
使用軟解碼可顯著地降低解碼錯誤底限。舉例而言,產生8KB之碼字且具有0.90之速率的碼可在使用習知HIHO解碼器予以解碼時在命中錯誤底限之前達成1e-3之訊框錯誤率(FER)。因此,此等碼在不使用重新傳輸機制的情況下係不實用的。然而,使用如在所揭示技術中之SISO解碼器可達成低至1e-11之典型FER。
對於上文所提及之實例碼,本發明人如下示範解碼增益:對於1e-2、1e-3及1e-4之FER值,增益分別為0.2dB、0.6dB及大於1.0dB。下文進一步描述習知GLDPC解碼器及基於所揭示技術之GLDPC解碼器的FER效能圖形(在解碼具有0.94速率之另一碼方面)。
系統描述
圖1為根據本文中所描述之一實施例的示意性地說明使用錯誤校正編碼之無線通信系統20的方塊圖。系統20包含傳輸器24,其將資料傳輸至接收器28。傳輸器接受輸入資料、運用某一ECC來編碼資料(經編碼資料亦被稱作碼字)、根據某一調變方案而調變經編碼資料、將經調變數位信號轉換至類比信號、將類比信號增頻轉換至適合射頻(Radio frequency;RF),且使用傳輸天線32朝向接收器傳輸RF信號。
在接收器28中,接收天線36接收RF信號且將其提供至RF前端40。前端將RF信號降頻轉換至基頻或至適合中頻(Intermediate Frequency;IF),且運用適合類比至數位轉換器(Analog to Digital Converter;ADC一圖中未展示)來數位化信號。由數據機44解調變攜載經ECC編碼資料(亦即,可能地含有一或多個錯誤之經接收碼字)之經數位化信號,且由ECC解碼器48解碼ECC。由處理器52控制解碼器 48。下文詳細地描述解碼器48之結構及功能性。藉由解碼ECC,解碼器48重新建構已被輸入至傳輸器24之資料。提供經重新建構資料作為接收器輸出。
系統20可包含(例如)蜂巢式系統、衛星系統、點對點通信鏈路,或使用ECC之任何其他適合通信系統。儘管圖1之實例係指無線通信系統,但本文中所描述之技術亦可搭配有線通信系統(諸如纜線通信系統或光學通信系統)而使用。
圖2為根據本文中所描述之一替代實施例的示意性地說明使用錯誤校正編碼之資料儲存系統60的方塊圖。系統60包含記憶體控制器64,其將資料儲存於記憶體裝置68中。記憶體裝置68包含陣列72,其包含多個記憶體胞元76。陣列72可包含任何適合類型之揮發性或非揮發性記憶體,諸如(例如)隨機存取記憶體(Random Access Memory;RAM)或快閃記憶體。替代地,裝置68可包含諸如硬碟機(Hard Disk Drive;HDD)之磁性儲存裝置,或任何其他適合儲存媒體。系統60可用於各種主機系統及裝置中,諸如用於計算裝置、蜂巢式電話或其他通信終端機、可卸除式記憶體模組、固態磁碟(Solid State Disk;SSD)、數位攝影機、音樂及其他媒體播放器及/或供儲存及擷取資料之任何其他系統或裝置中。
記憶體裝置68包含讀取/寫入(R/W)單元80,其將資料值寫入至記憶體胞元76中且自記憶體胞元讀取資料值。記憶體控制器64包含ECC單元84,其根據某一ECC而編碼資料以供儲存,且解碼自記憶體胞元擷取之資料之ECC。由處理器88控制單元84。下文詳細地描述單元84之結構及功能性。用於系統20及60中之ECC可包含(例如)一般化低密度同位檢查(GLDPC)碼,以及各種其他類型之ECC。
本文中所描述之ECC解碼方案可用於諸如系統20之通信系統中,以及用於諸如系統60之資料儲存系統中。以下描述適用於通信應用及 儲存應用兩者,且通常係指ECC解碼器。對ECC解碼器之任何參考適用於系統20之解碼器48,以及適用於系統60中之單元84之解碼器功能性。替代地,可由涉及ECC解碼之任何其他適合系統中之任何其他適合元件實行本文中所描述之方法。
GLDPC碼
GLDPC碼通常包含多個組件碼,且根據給定GLDPC碼所產生之碼字(在本文中亦被稱作GLDPC碼字)包含多個組件碼字,該多個組件碼字各自係根據一各別基礎組件碼予以編碼。實例組件碼包括漢明碼、BCH碼、里德-所羅門碼及里德-馬勒碼。
組件碼字中之每一者與GLDPC碼字之至少一個其他組件碼字共用一或多個位元。另外,GLDPC碼字之每一位元屬於單一組件碼字或在多個組件碼字之間被共用。在一些實用實施例中,GLDPC碼包含能夠校正高達四個錯誤之組件碼,且在高達三個組件碼字之間共用GLDPC碼字之每一位元。應注意,共用位元可為由多個組件碼編碼器聯合地編碼之資訊位元或同位檢查位元。
可使用相同或不同組件碼來編碼給定GLDPC碼字之不同組件碼字。GLDPC碼字中之每一位元係由相同數目個組件碼字共用且組件碼字全部係使用同一線性區塊碼予以編碼的GLDPC碼被稱作規則碼(regular code)。否則,GLDPC碼被稱作不規則碼(irregular code)。
可以各種方式建構GLDPC碼。實例GLDPC碼尤其包括渦輪乘積碼(Turbo Product Code;TPC)及串列串連碼(Serially Concatenated Code;SCC)。舉例而言,由Djordjevic等人在Journal of lightwave technology第23卷第5號2005年5月第1939至1946頁之「Generalized Low-Density Parity-Check Codes for Optical communication Systems」中描述GLDPC碼,其揭示內容係以引用的方式併入本文中。舉例而言,由Pyndiah在IEEE Transactions on Communications第46卷第8號 1998年8月第1003至1010頁之「Near-Optimum Decoding of Product Codes:Block Turbo Codes」中描述TPC,其係以引用的方式併入本文中。舉例而言,由Benedetto等人在IEEE Transactions on Information Theory第44卷第3號1998年5月第909至926頁之「Serial Concatenation of Interleaved Codes:Performance Analysis,Design,and Iterative Decoding」中描述SCC,其係以引用的方式併入本文中。
解碼GLDPC碼
根據給定GLDPC碼所產生之有效GLDPC碼字包含基礎組件碼之一組有效組件碼字。適合於解碼GLDPC碼字之解碼器在本文中亦被稱作「GLDPC解碼器」,且適合於解碼給定組件碼字之解碼器在本文中被稱作「組件解碼器」。
在一些實施例中,GLDPC解碼器執行反覆程序,其中反覆中之每一者中之處理包含使用各別組件解碼器而對個別組件碼字進行循序解碼。整體GLDPC解碼在所有組件碼之解碼引起有效各別組件碼字時成功。
應注意,由於每一組件碼字與至少一個其他組件碼字共用一或多個位元,故校正一個組件碼字中之錯誤位元可輔助共用此位元之其他組件碼字之解碼。
組件解碼器可包含:輸入及輸出包含硬決定之硬解碼器,其在本文中亦被稱作硬輸入硬輸出(Hard-Input Hard-Output;HIHO)解碼器;或輸入及輸出包含軟資訊之軟解碼器,其在本文中亦被稱作軟輸入軟輸出(Soft-Input Soft-Output;SISO)解碼器。軟資訊可被視為硬決定與各別可靠性度量之組合,該等可靠性度量被指派至此等硬決定。
在一些實施例中,可靠性度量包含對數似然比(LLR)。每一LLR通常包含指示硬決定或位元值之正負號,及指示彼位元值之可靠性的 絕對值。在一些實施例中,被指派至給定硬決定或位元之LLR取決於位元值為「1」之機率與位元值為「0」之機率之間的比率。然而,所揭示技術並不限於LLR,且可搭配任何其他適合類型之軟可靠性度量而使用。
在反覆解碼期間,組件解碼器導出硬資訊或軟資訊,其係由組件解碼器中之一些用於相同或後續反覆中。因此,儘管給定位元可初始地為錯誤的,但在由某一組件解碼器校正之後,該位元在輸入包括此位元之其他組件解碼器處得到校正。
在一實施例中,傳遞經導出之軟資訊連同通道軟資訊,以由已產生此軟資訊之軟組件解碼器使用,或在當前反覆期間或在後續反覆中由其他軟組件解碼器使用。在一些實施例中,將由某一組件解碼器產生之輸出資料僅傳遞至其他組件解碼器,且不回饋至已產生此資料之同一組件碼字。
通常,GLDPC軟解碼器相比於GLDPC硬解碼器具有較好的錯誤校正能力,此係因為可由該解碼器用於經改良解碼之軟資訊(例如,被指派至硬決定之可靠性度量)僅可用於軟解碼器。然而,與硬解碼相比較,執行軟解碼以及產生軟通道資訊會招致較高複雜度、延時及功率消耗。軟解碼器之另一優勢為:軟解碼器相比於硬解碼器通常較不易遭受設陷集合。
設陷集合係指如下失敗解碼狀態:其中並非所有組件碼係可解碼的,但應用額外解碼反覆不能解決失敗狀態。舉例而言,當多個組件碼字共用數目超過基礎組件碼之錯誤校正能力的錯誤位元時,在硬解碼器中發生設陷集合。舉例而言,假定組件碼可校正高達三個位元,且GLDPC解碼器已達到兩個組件碼字獨自地共用一群四個錯誤位元的狀態。在此狀態中,組件碼中之每一者未能產生一各別有效組件碼字,且因此,組件碼不能輔助彼此在另外反覆期間進行解碼。在 軟解碼中,遍及組件碼之反覆可在某些情形中解決此設陷狀態。
儘管軟解碼器傳統上經設計以接受軟資訊,但在所揭示技術中,GLDPC解碼器包含軟組件解碼器,其經組態以自通道接受硬決定或軟決定,因此節省在使用硬決定輸入之軟解碼成功時產生軟通道資訊的成本,如下文將進一步所描述。
在本專利申請案之上下文中及在申請專利範圍中,諸如「硬資訊」、「硬輸入」、「硬輸出」、「硬決定」、「硬可靠性度量」及「硬位元」之術語全部係指可各自由單一位元表示之值。諸如「軟資訊」、「軟輸入」、「軟輸出」、「軟決定」、「軟可靠性度量」及「軟位元」之術語全部係指各自由一個以上位元表示之值。
當通道軟資訊可用時之組件軟解碼
使用SISO解碼器來解碼組件碼字可以各種方式而進行。舉例而言,在IEEE Communications Letters第9卷第11號2005年11月第1006至1008頁之「Distance-Based Decoding of Block Turbo Codes」(其係以引用的方式併入本文中)中,Le等人描述基於組件碼字之距離屬性的解碼方法。作為另一實例,Fossorier及Lin在Global Telecommunications Conference(GLOBECOM)第5卷1998年11月8日至12日第2828至2833頁之「Soft-input soft-output decoding of linear block codes based on ordered statistics」中描述SISO解碼器,其係以引用的方式併入本文中。作為又一實例,在上文所引用之「Near-Optimum Decoding of Product Codes:Block Turbo Codes」中,Pyndiah描述使用(組件)Chase解碼演算法而對組件碼包含線性區塊碼之乘積碼或區塊渦輪碼進行反覆軟解碼。根據由上文所引用之Pyndiah參照案描述之原理而操作的解碼器亦被稱作「Pyndiah解碼器」。
根據Chase演算法而操作之SISO組件解碼器在本文中亦被稱作「Chase解碼器」。Chase演算法藉由在僅包括被視為最可能解碼成有效 組件碼字之測試型樣的小組中搜尋正確組件碼字而非搜尋整組有效組件碼字而縮減解碼複雜度。
Chase演算法之一些變型實施例基於已被成功地解碼之彼等測試型樣而將可靠性度量獨立地指派至硬決定位元中之每一者。在一實施例中,Pyndiah解碼器使用由Chase演算法指派之可靠性度量以產生用於更新輸入可靠性度量之外來資訊。
線性(n,k)組件碼包含2k個有效組件碼字。在一些實施例中,Pyndiah解碼器包含在組件碼字之間具有距離d(通常,d比k小得多)之組件碼,且組件解碼器之Chase演算法嘗試解碼2(d/2)個測試型樣。
在其他實施例中,Chase解碼器可嘗試較大搜尋。舉例而言,對於(610,580)BCH組件碼,Chase解碼器可嘗試解碼高達212個不同測試型樣,其中少至約250個測試型樣可解碼成有效組件碼字。在其他實施例中,舉例而言,當位元或訊框錯誤率被假定為相對低時,快速Chase解碼器可嘗試解碼26個不同測試型樣,其中高達約15個可引起有效組件碼字。
Chase演算法包含軟輸入及軟輸出。運用通道軟資訊(當可用時)來初始化軟輸入,或藉由其他組件碼之先前SISO解碼而產生經更新軟資訊(或在先前反覆中產生其自有輸出)。該演算法接著產生軟輸出資訊,其用以更新軟輸入。吾人現在描述基於Chase演算法之變型的反覆Pyndiah解碼器。Pyndiah解碼器使用Chase組件解碼器來實施完全GLDPC解碼器。在Chase組件解碼之後,Pyndiah解碼器產生外來資訊、按比例調整外來資訊,且基於經按比例調整外來資訊而產生輸出可靠性度量。Pyndiah解碼器使用反覆解碼方案,其中在每一反覆中解碼所有組件碼。
變型Chase演算法包含以下主要步驟:
‧運用經更新軟資訊來初始化Chase解碼器之輸入(例如,若經更 新軟資訊不可用,則使用通道資訊)。在假定n位元組件碼字的情況下,軟輸入包括n個硬決定及n個各別可靠性度量。
‧使用軟輸入之可靠性度量以識別p個最不可靠位元,且判定2p個n位元測試型樣,其中該等測試型樣中之每一者包含經識別p個位元中之2p個位元組合中之一者,及其他n-p個位元中之各別軟輸入之硬決定。產生2p個n位元測試型樣(或任何其他適合數目)之操作亦被稱作列舉。
‧尋找候選碼字:使用硬解碼來解碼測試型樣中之每一者,且將一各別記分值與每一經成功解碼碼字相關聯。產生包括經成功解碼碼字及關聯記分之候選清單。在一些實施例中,舉例而言,當假定加成性白高斯雜訊(Additive White Gaussian Noise;AWGN)雜訊模型時,記分值等於碼字(其中0係由-1替換且1係由+1替換)與輸入可靠性度量之間的歐機里德(Euclidian)距離。
‧基於候選清單及各別記分而將Chase可靠性度量指派至各別硬決定輸出。
Pyndiah解碼器執行以下主要操作:
‧對於n個位元中之每一者,計算外來資訊作為經指派Chase可靠性度量與各別輸入可靠性度量之間的差。
‧將外來資訊乘以某一因數α(α之值可為恆定的,或取決於反覆數目),將相乘結果加至通道可靠性度量,且使用該結果作為經更新軟輸入以用於下一反覆。將經更新硬決定導出為經更新軟值之正負號資訊。
在一實施例中,GLDPC解碼器執行反覆解碼程序。在每一解碼反覆內,GLDPC解碼器使用(例如)Chase解碼器來解碼組件碼中之每一者。GLDPC解碼器(例如,Pyndiah解碼器)重複解碼反覆直至解碼有效碼字或反覆數目超過預定義最大數目。
使用通道硬決定之組件軟解碼
如上文所描述,有可能設計自通道接受軟資訊之軟組件解碼器。舉例而言,上文所描述之Chase演算法使用軟資訊以產生一小群候選碼字。
另一方面,在所揭示技術中,GLDPC解碼器首先嘗試基於通道硬輸入之硬解碼,且在此解碼失敗的情況下嘗試基於硬輸入(亦即,通道或硬解碼輸出之硬決定)之軟解碼。當基於硬輸入之軟解碼失敗時,GLDPC解碼器嘗試基於軟輸入之解碼。
使用通道硬決定之軟解碼可被預期為無益,此係因為:在Chase演算法中,舉例而言,當通道軟資訊不可用時,解碼器將相等可靠性度量指派至通道硬決定。(替代地,關於給定組件碼之軟可靠性度量可取決於共用此等輸入之組件碼當中已失敗之組件碼的數目。因此,許多組件碼成功解碼所針對之位元被指派高可靠性,且反之亦然)。
當將相等可靠性度量指派至通道硬決定時,如上文所描述,Chase演算法可最多隨機地(或在固定預定義位置處)選擇p個最不可靠位元,從而引起在候選清單中(亦即,在包括可解碼測試型樣之組中)包括正確碼字之低機率。然而,所揭示技術示範出所提出之方法實際上有益,如下文將描述。
在一些實施例中,即使當通道軟資訊不可用時,在某些情形中,Chase解碼器亦很可能在候選清單中包括正確碼字。此可(例如)在如下情況下發生:當輸入硬決定僅包括小數目個錯誤位元(例如,在硬解碼階段之錯誤校正能力內)時,或當p個最不可靠位元被隨機地選擇之2p個測試型樣中之一者成功地解碼為正確碼字時。
由Chase演算法指派至正確碼字之記分值通常比由該演算法指派至其他候選碼字之記分低得多(例如,當記分係基於經成功解碼測試型樣與經接收軟輸入相隔之歐機里德距離時),此引起將高可靠性度 量指派至各別輸入硬決定。另一方面,當Chase解碼器並不在候選清單中包括正確碼字時,Chase演算法通常將相似記分值指派至候選清單中之前置碼字及其他碼字,從而引起將低可靠性度量指派至輸入硬決定。
因此,隨著GLDPC解碼器之反覆前進,在若干組件碼字之間被共用且先前未由各別組件解碼器中之任一者校正(例如,因為已自候選清單排除正確碼字)的錯誤位元很可能得到低可靠性度量(如上文所解釋)。因此,將此等位元包括於p個最不可靠位元內之機率相應地增加。當最不可靠的p個位元包括足夠大數目個錯誤位元時,測試型樣中之一者(其仍可在錯誤校正能力內包括數個錯誤)解碼為正確碼字。
組態GLDPC軟解碼器之軟組件解碼器以對通道硬決定(而非軟資訊)進行操作亦可有益於解決設陷集合。舉例而言,假定GLDPC硬解碼器達到設陷集合狀態。吾人示範出可藉由將GLDPC軟解碼器應用於已達到設陷集合狀態之GLDPC硬解碼器之輸出而解決設陷集合。
應注意,在GLDPC解碼器之反覆期間,軟組件解碼器(例如,Chase解碼器)很可能將較低可靠性度量指派至與其他位元相比較造成設陷集合狀態之位元。造成設陷集合之位元在未能解碼之多個組件碼之間被共用,且其Chase列舉通常不包括正確組件碼字,此引起將低可靠性度量指派至此等位元。
隨著GLDPC反覆前進,造成設陷集合狀態之位元很可能包括於p個最不可靠位元當中,此增加在候選清單中包括正確碼字之機率。因此,正確碼字被預期為在少許反覆內出現於軟組件解碼器中之一或多者之候選清單中,因此解決設陷集合狀態。
組合硬解碼與軟解碼
圖3為根據本文中所描述之一實施例的示意性地說明GLDPC解碼器100的方塊圖。解碼器100可用以實施以上圖1之解碼器48,或以上 圖2之ECC單元84之解碼部分。解碼器100接受有效ECC碼字或包含經損毀碼字(例如,由雜訊損毀)且因此含有錯誤之其他輸入作為輸入。換言之,至解碼器之輸入可不總是包含EC之有效碼字。在本實例中,有效ECC碼字包含根據給定GLDPC碼之GLDPC碼字。
在以下描述中,至解碼器100之輸入亦被稱作通道輸出,且在圖中被表示為CHO。GLDPC解碼器100執行解碼以嘗試重新建構碼字中傳送之資料。在一典型實施中,每一GLDPC碼字包含大約數百個至數千個位元,但可使用任何其他適合碼字大小。
解碼器100包含GLDPC硬解碼器104及GLDPC軟解碼器108。硬解碼器104使用硬解碼技術來解碼通道輸出CHO之硬決定部分(在圖中被表示為HIN),且導出輸出硬決定HIHO_OUT。輸入選擇器112將CHO或HIHO_OUT遞送至軟解碼器108之輸入SIN。GLDPC軟解碼器108使用軟解碼技術來解碼輸入SIN,從而引起軟決定輸出SISO_OUT。GLDPC解碼器100進一步包含輸出選擇器116,其遞送關於SISO_OUT(例如,SISO_OUT軟資訊之正負號部分)之HIHO_OUT或硬決定作為最終GLDPC碼字位元。下文進一步描述用於組合硬解碼與軟解碼之各種方案。
在一些實施例中,硬解碼器104包含多個硬組件解碼器120,其各自經組態以接收對應於各別基礎組件碼字的HIN之部分。替代地,硬組件解碼器處理多個組件碼的其他組態亦係可能的。在一實例實施例中,GLDPC解碼器包含處理所有組件碼之單一組件解碼器。圖3描繪多個組件解碼器中之兩者120A及120B,其輸入分別被表示為HI1及HI2。硬解碼器104反覆地處理HIN,使得在給定反覆中,解碼器104使用各別硬組件解碼器120來循序地(或以任何其他適合次序)解碼組件碼字中之每一者。當硬組件解碼器之解碼成功時,各別經解碼組件碼字替換HIN之相關輸入。舉例而言,組件解碼器120A及120B之輸出 HHO1及HHO2替換HIN之各別HI1部分及HI2部分。在替代實施例中,經解碼組件碼字不替換HIN之相關輸入,而是用於更新此等輸入。
在一些實施例中,軟解碼器108可包含(例如)包含多個軟組件解碼器124之Pyndiah解碼器,圖3描繪該等軟組件解碼器中之兩個解碼器124A及124B。替代地,一或多個軟解碼器可經組態以處理多個組件碼。進一步替代地,單一組件解碼器可經組態以處理所有組件碼。軟解碼器124可包含執行上文所描述之Chase演算法的Chase解碼器。替代地,軟解碼器124可包含任何其他適合軟解碼器。軟解碼器124之輸入包含硬輸入或軟輸入。舉例而言,至解碼器124A及124B之輸入分別包括硬決定HI3、HI4,且在必要時亦包括可靠性度量SI1、SI2。
解碼器124接收對應於各別基礎組件碼字(亦即,硬決定HI3及HI4)的SIN之部分。在一實施例中,當基於通道硬輸入進行解碼時,解碼器124運用相等可靠性度量來初始化軟資訊(例如,圖中之SI1及SI2)。解碼器124解碼其各別輸入,且產生經回饋以更新解碼器之軟輸入的軟輸出。GLDPC軟解碼器108相似於GLDPC硬解碼器104而反覆地處理其輸入SIN。
GLDPC解碼器100包含GLDPC控制器128,其管理該解碼器之各種任務。在一些實施例中,GLDPC控制器128自硬解碼器104(例如,每硬組件解碼器)接收成功/失敗指示,且基於該等指示而啟動軟解碼器108。在一些實施例中,GLDPC控制器128另外自軟解碼器108接收成功/失敗指示。當由軟解碼器108使用硬決定輸入進行之軟解碼失敗時,控制器128可組態解碼器100以產生通道軟資訊,且組態軟解碼器108以使用軟通道輸入進行重新解碼。GLDPC控制器128另外組態輸入選擇器112及輸出選擇器116以判定端對端及內部資料流程。
GLDPC解碼器100可以各種方式排程GLDPC硬解碼器104及GLDPC軟解碼器108之操作。通常,硬解碼器104在處理延時及功率 消耗方面優於軟解碼器108。在下文將描述之實施例中,GLDPC解碼器100開始獨自地執行硬解碼器104,且回應於硬解碼器104之解碼失敗而啟動軟解碼器108。
在一個實施例中,當硬解碼器104失敗時,軟GLDPC解碼器組態輸入選擇器112以將通道輸出CHO遞送至解碼器108,亦即,由硬解碼器104使用之相同輸入。在另一實施例中,輸入選擇器112將硬解碼器104之輸出(HIHO_OUT)遞送至軟解碼器108。在又一實施例中,基於預定義準則而判定輸入選擇器112之選擇,該預定義準則係關於(例如)成功的及/或失敗的組件碼(使用硬解碼)之數目。
如上文所指出,當軟解碼器108未能基於通道硬決定或輸出硬決定而解碼時,GLDPC解碼器100可產生由選擇器112遞送至軟解碼器108的用於硬決定之通道軟資訊。
圖3中之解碼器100之組態為一實例組態,且在替代實施例中,亦可使用任何其他適合組態。舉例而言,儘管在圖3中,HIHO解碼器120及SISO解碼器124處理單一組件碼字,但在其他實施例中,諸如(例如)當GLDPC碼包含渦輪乘積碼(TPC)時,解碼器120及/或124中之每一者可解碼多個組件碼字(分別對應於TPC矩陣之列及行),例如,並列地。
在本專利申請案之上下文中及在申請專利範圍中,排除軟解碼器108的GLDPC解碼器100之所有元件被共同地稱作電路系統。在以上圖3之實例中,電路系統包含硬解碼器104、輸入選擇器112、輸出選擇器116及GLDPC控制器128。在一些實施例中,電路系統處置諸如(例如)以下各者之任務:接收用於給定GLDPC碼字之各別位元的通道硬決定;排程GLDPC碼字之解碼,例如,使用硬解碼器104、軟解碼器108或此兩者;及在解碼之後輸出經解碼GLDPC碼字。
在圖3之實例組態中,硬解碼器104及軟解碼器108各自包含多個 基礎組件解碼器。然而,此組態並非必選的,且亦可使用其他適合組態。舉例而言,在替代實施例中,硬解碼器及/或軟解碼器中之一或多個例項可各自經組態以處理兩個或兩個以上組件碼。在一實例實施例中,單一(硬或軟)例項解碼器處理所有基礎組件碼。
圖4為根據本文中所描述之一實施例的示意性地說明用於GLDPC解碼之方法的流程圖。該方法自如下操作而開始:在接收步驟200處,GLDPC解碼器100自通道輸出接收硬決定輸入。在硬解碼步驟204處,GLDPC硬解碼器104嘗試基於通道硬決定而解碼GLDPC碼字。
在檢查步驟208處,GLDPC解碼器100檢查硬解碼器104是否已成功解碼GLDPC碼字。若在步驟208處,硬解碼已成功,則在硬選擇步驟212處,輸出選擇器116輸出經成功解碼GLDPC碼字,且循環回至步驟200以自通道接收後續輸入。否則,在步驟208處之硬解碼已失敗,且GLDPC解碼器100在計數步驟214處計數已失敗之組件碼的數目,且在比較步驟216處比較此計數數目與預定義臨限值數目。
在替代實施例中,在步驟216處可使用其他準則。舉例而言,此等準則可涉及關於位元翻轉事件、經校正錯誤之數目、每位元所應用之經重復位元翻轉之數目及/或任何其他適合準則的統計資訊。
若在步驟216處,計數數目小於臨限值數目(或當滿足如上文所提及之某一其他適合準則時),則硬解碼器104很可能已達到設陷集合,且在硬輸出解碼步驟220處,GLDPC解碼器100組態輸入選擇器112以將硬解碼器104之輸出遞送至GLDPC軟解碼器108。否則,在步驟216處之計數數目等於或大於臨限值數目,且GLDPC解碼器100在通道選擇步驟224處組態輸入選擇器112以將通道輸出遞送至GLDPC軟解碼器108。
在軟解碼步驟228處,GLDPC解碼器100啟動GLDPC軟解碼器108 以便解碼GLDPC碼字。在軟輸出步驟232處,輸出選擇器116輸出由GLDPC軟解碼器108解碼之GLDPC碼字,且方法循環回至步驟200以自通道接收後續輸入。
作為實例而給出圖4中之解碼組態,且亦可使用其他適合解碼組態。舉例而言,在一些實施例中,當硬解碼在步驟208處失敗時選擇至軟解碼器108之輸入獨立於失敗的組件碼之數目,且解碼器100跳過步驟214及216。在一個實施例中,解碼器100繼續至步驟220以選擇硬解碼器104之輸出。替代地,解碼器100繼續至步驟224以選擇通道硬決定。
在一些實施例中,當在步驟228處基於硬決定輸入之軟解碼失敗時,GLDPC解碼器100將可靠性度量指派至至GLDPC軟解碼器108之硬決定輸入,GLDPC軟解碼器108接著使用此等軟輸入來執行軟解碼。
圖1之ECC解碼器48、圖2之ECC單元84及圖3之ECC解碼器100可以軟體、以硬體或使用硬體元件與軟體元件之組合予以實施。在一些實施例中,解碼器48、單元84及/或解碼器100包含能夠執行軟體以用於實行本文中所描述之功能的一或多個處理器。軟體可經由(例如)網路而以電子形式下載至處理器,或其可替代地或另外被提供及/或儲存於非暫時性有形媒體(諸如磁性、光學或電子記憶體)上。
在一些實施例中,解碼器48、單元84及/或解碼器100(包括硬解碼器104、軟解碼器108、輸入選擇器112、輸出選擇器116及GLDPC控制器128)係以硬體予以實施,諸如使用一或多個特殊應用積體電路(Application-Specific Integrated Circuit;ASIC)、場可程式化閘陣列(Field-Programmable gate Array;FPGA)及/或離散組件予以實施。GLDPC解碼器100功能中之一些或全部可替代地以軟體予以實施,或使用軟體元件與硬體元件之組合予以實施。
圖5為展示習知GLDPC解碼之經模擬訊框錯誤率(FER)效能(曲線250)及基於所揭示技術之GLDPC解碼之經模擬訊框錯誤率(FER)效能(曲線254)的圖形。曲線250及254依據信雜比(SNR)而給出GLDPC解碼器之FER效能。兩組結果皆係指具有8KB之碼字及等於0.94之編碼速率的GLDPC碼。基礎組件碼包含具有錯誤校正能力T=3(亦即,每一組件碼可校正高達三個錯誤)之BCH碼。
在實施組件Chase解碼器時,Chase演算法經組態以嘗試解碼212個不同測試型樣。如在圖5中所見,基於所揭示技術之解碼器顯著地勝過習知GLDPC解碼器。舉例而言,在FER=1e-4下,各別效能增益為約1dB。此外,基於所揭示技術之解碼使得GDLPC解碼器能夠達成在習知GLDPC解碼器不能達成的低FER值。
所揭示技術可用於(例如)以極高資料速率(例如,在60GHz下之短距離通信中)而操作之通信系統中。在此等高速率系統中,實施類比至數位A/D轉換器以用於產生軟輸入可具高成本,且因此,解碼可有利地基於硬決定輸入。
應瞭解,作為實例而引用上文所描述之實施例,且以下申請專利範圍並不限於上文中已特定地展示及描述之內容。實情為,範疇包括上文中所描述之各種特徵之組合及子組合兩者,以及其變化及修改,其將由熟習此項技術者在閱讀前述描述後就想到且未在先前技術中予以揭示。以引用的方式併入本專利申請案中之文件應被視為本申請案之整體部分,惟以下情況除外:在此等所併入文件中以與本說明書中明確地或隱含地作出之定義衝突之方式定義任何術語的程度上,應僅考慮本說明書中之定義。
100‧‧‧GLDPC解碼器
104‧‧‧GLDPC硬解碼器
108‧‧‧GLDPC軟解碼器
112‧‧‧輸入選擇器
116‧‧‧輸出選擇器
120A‧‧‧組件解碼器
120B‧‧‧組件解碼器
124A‧‧‧解碼器
124B‧‧‧解碼器
128‧‧‧GLDPC控制器

Claims (20)

  1. 一種解碼器,其包含:電路系統,其經組態以:接收用於包含多個組件碼字之一一般化低密度同位檢查(GLDPC)碼字之各別位元的通道硬決定,該多個組件碼字包括具有一或多個共用位元之第一組件碼字及第二組件碼字;排程該GLDPC碼字之解碼;及在該解碼之後輸出該經解碼GLDPC碼字;及一軟解碼器,其經組態以:接收對應於該第一組件碼字之該等通道硬決定;接收在解碼該第二組件碼字時已被指派至該等共用位元之軟可靠性度量;及基於該等通道硬決定及該等軟可靠性度量而解碼該第一組件碼字。
  2. 如請求項1之解碼器,其中該軟解碼器經組態以在解碼之前將相等可靠性度量指派至該等通道硬決定。
  3. 如請求項1之解碼器,其中該電路系統進一步包含一硬解碼器,該硬解碼器經組態以自該等通道硬決定解碼該GLDPC碼字,且其中該電路系統經組態以回應於該硬解碼器之一解碼失敗而啟動該軟解碼器。
  4. 如請求項3之解碼器,其中該電路系統經組態以:基於一預定義準則而選擇該等通道硬決定或如在一解碼失敗時間出現的該硬解碼器之一輸出作為用於該軟解碼器之輸入;及使用該軟解碼器而自該經選擇輸入解碼該GLDPC碼字。
  5. 如請求項4之解碼器,其中該多個組件碼字已根據各別組件碼予 以編碼,其中該硬解碼器經組態以解碼該多個組件碼字,且其中該預定義準則係基於作為該解碼失敗之部分而尚未能成功地解碼的該等組件碼之一數目。
  6. 如請求項5之解碼器,其中該電路系統經組態以:在該數目低於一預定義臨限值數目時選擇該硬解碼器之該輸出;及否則選擇該等通道硬決定。
  7. 如請求項1之解碼器,其中該軟解碼器經組態以基於一組最可能組件碼字而將可靠性度量指派至該等各別硬決定,該組最可能組件碼字小於一整組有效組件碼字。
  8. 如請求項1之解碼器,其中該GLDPC碼字儲存於一記憶體裝置中,且其中該電路系統經組態以自該記憶體裝置接收該等通道硬決定。
  9. 如請求項1之解碼器,其中在一通信信號中接收該GLDPC碼字,且其中該電路系統經組態以自接收該通信信號之一接收器接收該等通道硬決定。
  10. 一種用於解碼之方法,其包含:在一軟解碼器中接收用於包含多個組件碼字之一一般化低密度同位檢查(GLDPC)碼字之各別位元的通道硬決定,該多個組件碼字包括具有一或多個共用位元之第一組件碼字及第二組件碼字;及藉由如下方式來解碼該GLDPC碼字:由該軟解碼器接受對應於該第一組件碼字之通道硬決定,及在解碼該第二組件碼字時已被指派至該等共用位元之軟可靠性度量;且基於該等通道硬決定及該等軟可靠性度量而解碼該第一組件碼字。
  11. 如請求項10之方法,其中接受該等可靠性度量包含:在解碼之前將相等可靠性度量指派至該等通道硬決定。
  12. 如請求項10之方法,其中解碼該GLDPC碼字包含:使用一硬解碼器來解碼該GLDPC碼字;及回應於該硬解碼器之一解碼失敗而啟動該軟解碼器。
  13. 如請求項12之方法,其中解碼該GLDPC碼字包含:基於一預定義準則而選擇該等通道硬決定或如在一解碼失敗時間出現的該硬解碼器之一輸出作為至該軟解碼器之一輸入;及使用該軟解碼器而自該經選擇輸入解碼該GLDPC碼字。
  14. 如請求項13之方法,其中該多個組件碼字已根據各別組件碼予以編碼,其中使用該硬解碼器來解碼該GLDPC碼字包含解碼該多個組件碼字,且其中選擇該輸入包含基於作為該解碼失敗之部分而尚未能成功地解碼的該等組件碼之一數目而選擇該輸入。
  15. 如請求項14之方法,其中選擇該輸入包含:在該數目低於一預定義臨限值數目時選擇該硬解碼器之該輸出;及否則選擇該等通道硬決定。
  16. 如請求項10之方法,其中解碼該GLDPC碼字包含:基於一組最可能組件碼字而將可靠性度量指派至該等各別硬決定,該組最可能組件碼字小於一整組有效組件碼字。
  17. 如請求項10之方法,其中接收該等通道硬決定包含:自一記憶體裝置擷取該GLDPC碼字。
  18. 如請求項10之方法,其中接收該GLDPC碼字包含:在一通信信號中接收該GLDPC碼字。
  19. 一種包括指令之非暫時性電腦可讀媒體,該等指令在由一或多個處理器執行時致使該一或多個處理器執行一解碼方法,該解碼方法包含:於一軟解碼器中接收用於包含多個組件碼字之一一般化低密 度同位檢查(GLDPC)碼字之各別位元的通道硬決定,該多個組件碼字包括具有一或多個共用位元之第一組件碼字及第二組件碼字;及藉由如下方式來解碼該GLDPC碼字:由該軟解碼器接受對應於該第一組件碼字之通道硬決定,及在解碼該第二組件碼字時已被指派至該等共用位元之軟可靠性度量;且基於該等通道硬決定及該等軟可靠性度量而解碼該第一組件碼字。
  20. 如請求項19之非暫時性電腦可讀媒體,其中接收該等通道硬決定包含自一記憶體裝置擷取該GLDPC碼字。
TW104136896A 2014-12-18 2015-11-09 硬決定輸入之一般化低密度同位檢查軟解碼 TWI594583B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/574,411 US10084481B2 (en) 2014-12-18 2014-12-18 GLDPC soft decoding with hard decision inputs

Publications (2)

Publication Number Publication Date
TW201624930A TW201624930A (zh) 2016-07-01
TWI594583B true TWI594583B (zh) 2017-08-01

Family

ID=54366533

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104136896A TWI594583B (zh) 2014-12-18 2015-11-09 硬決定輸入之一般化低密度同位檢查軟解碼

Country Status (3)

Country Link
US (1) US10084481B2 (zh)
TW (1) TWI594583B (zh)
WO (1) WO2016099646A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160021515A1 (en) * 2014-07-18 2016-01-21 Samsung Electro-Mechanics Co., Ltd. Electronic shelf label gateway, electronic shelf label system and communications method thereof
US10205469B2 (en) * 2016-08-11 2019-02-12 SK Hynix Inc. Low latency soft decoder architecture for generalized product codes
US10673465B2 (en) * 2016-11-30 2020-06-02 Toshiba Memory Corporation Memory controller, memory system, and control method
US10180794B2 (en) * 2017-02-07 2019-01-15 Western Digital Technologies, Inc. Soft decoding scheduling
JP2018147231A (ja) * 2017-03-06 2018-09-20 東芝メモリ株式会社 メモリコントローラ、メモリシステムおよびメモリシステムの制御方法
US10187086B2 (en) * 2017-03-15 2019-01-22 SK Hynix Inc. State-based decoding of product codes
US10153785B1 (en) * 2017-05-26 2018-12-11 SK Hynix Inc. Generalized low-density parity-check (GLDPC) code with variable length constituents
US10707899B2 (en) * 2017-08-31 2020-07-07 SK Hynix Inc. Bit-flipping decoder for G-LDPC codes with syndrome-decoding for component codes
JP6847796B2 (ja) * 2017-09-20 2021-03-24 キオクシア株式会社 メモリシステム
US10511326B2 (en) * 2017-11-14 2019-12-17 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
JP6957392B2 (ja) * 2018-03-15 2021-11-02 キオクシア株式会社 メモリシステム
EP3591845B1 (en) * 2018-07-05 2023-08-09 Universite De Bretagne Sud Sorting device and method for elementary check node processing for message-passing decoding of non-binary codes
EP4233177A4 (en) * 2020-11-16 2023-11-15 Huawei Technologies Co., Ltd. EFFICIENT DECODING OF GLDPC CODES
US11711099B1 (en) * 2022-03-23 2023-07-25 Samsung Electronics Co., Ltd. Low gate-count encoding algorithm and hardware of flexible rate GLDPC ECC
US11750221B1 (en) * 2022-03-28 2023-09-05 Samsung Electronics Co., Ltd. Encoding and decoding of data using generalized LDPC codes
US11824556B1 (en) * 2022-07-25 2023-11-21 Samsung Electronics Co., Ltd. Error correction using soft decision bits and multiple hypotheses
CN115642924B (zh) * 2022-11-01 2024-02-27 杭州海宴科技有限公司 一种高效的qr-tpc译码方法及译码器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120054576A1 (en) * 2010-08-25 2012-03-01 The Royal Institution For The Advancement Of Learning / Mcgill University Method and system for decoding

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4414623A (en) 1980-10-01 1983-11-08 Motorola, Inc. Dual deadman timer circuit
US4845713A (en) 1987-06-08 1989-07-04 Exabyte Corporation Method and apparatus for determining the coefficients of a locator polynomial
US5267242A (en) 1991-09-05 1993-11-30 International Business Machines Corporation Method and apparatus for substituting spare memory chip for malfunctioning memory chip with scrubbing
AU2276995A (en) * 1994-04-08 1995-10-30 Echelon Corporation Method and apparatus for robust communications based upon angular modulation
US6047395A (en) 1998-01-30 2000-04-04 Cirrus Logic, Inc. Error correction processor for correcting a multi-dimensional code by generating an erasure polynomial over one dimension for correcting multiple codewords in another dimension
US6385751B1 (en) 1998-12-30 2002-05-07 Texas Instruments Incorporated Programmable, reconfigurable DSP implementation of a Reed-Solomon encoder/decoder
US6353909B1 (en) 1999-05-11 2002-03-05 Globespan, Inc. Configurable encoder and method for generating a Reed-Solomon codeword
US6631488B1 (en) 2000-06-30 2003-10-07 Agilent Technologies, Inc. Configurable error detection and correction engine that has a specialized instruction set tailored for error detection and correction tasks
US6518892B2 (en) 2000-11-06 2003-02-11 Broadcom Corporation Stopping criteria for iterative decoding
US6938196B2 (en) 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
US7114086B2 (en) 2002-01-04 2006-09-26 Ati Technologies, Inc. System for reduced power consumption by monitoring instruction buffer and method thereof
US20040019842A1 (en) * 2002-07-24 2004-01-29 Cenk Argon Efficient decoding of product codes
JP2007516631A (ja) 2003-06-27 2007-06-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 低電力モードで電力消費を低減するための受信器および方法
JP2007502458A (ja) 2003-08-12 2007-02-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ デコーダ回路
US7322002B2 (en) 2004-05-26 2008-01-22 Micron Technology, Inc. Erasure pointer error correction
JP4191100B2 (ja) 2004-06-18 2008-12-03 エルピーダメモリ株式会社 半導体記憶装置
US6965537B1 (en) 2004-08-31 2005-11-15 Micron Technology, Inc. Memory system and method using ECC to achieve low power refresh
KR100641052B1 (ko) 2004-12-08 2006-11-02 한국전자통신연구원 Ldpc 부호기 및 복호기, 및 ldpc 부호화 방법 및복호화 방법
US7475103B2 (en) 2005-03-17 2009-01-06 Qualcomm Incorporated Efficient check node message transform approximation for LDPC decoder
EP1717959A1 (en) 2005-04-29 2006-11-02 STMicroelectronics N.V. Method and device for controlling the decoding of a LDPC encoded codeword, in particular for DVB-S2 LDPC encoded codewords
CN101194428A (zh) 2005-06-27 2008-06-04 汤姆森许可贸易公司 迭代解码器中的停止准则
KR100638741B1 (ko) 2005-07-05 2006-10-30 한국전자통신연구원 프로그램 가능한 오류정정 부호화 장치
US7770090B1 (en) * 2005-09-14 2010-08-03 Trident Microsystems (Far East) Ltd. Efficient decoders for LDPC codes
US20070113143A1 (en) 2005-10-25 2007-05-17 Yu Liao Iterative decoder with stopping criterion generated from error location polynomial
KR100876735B1 (ko) 2005-11-07 2008-12-31 삼성전자주식회사 이동통신 시스템에서 반복 복호 정지 장치 및 방법
US7853854B2 (en) 2005-11-15 2010-12-14 Stmicroelectronics Sa Iterative decoding of a frame of data encoded using a block coding algorithm
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
CN103280239B (zh) 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
US7783905B2 (en) 2006-06-13 2010-08-24 Via Technologies Inc. Method for reducing power consumption of a computer system in the working state
US20080052594A1 (en) * 2006-07-28 2008-02-28 Yedidia Jonathan S Method and system for replica group-shuffled iterative decoding of quasi-cyclic low-density parity check codes
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
US7783952B2 (en) * 2006-09-08 2010-08-24 Motorola, Inc. Method and apparatus for decoding data
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US7975209B2 (en) * 2007-03-31 2011-07-05 Sandisk Technologies Inc. Non-volatile memory with guided simulated annealing error correction control
US8429493B2 (en) 2007-05-12 2013-04-23 Apple Inc. Memory device with internal signap processing unit
US7930621B2 (en) 2007-06-01 2011-04-19 Agere Systems Inc. Systems and methods for LDPC decoding with post processing
US8386879B2 (en) * 2007-08-23 2013-02-26 Nec Laboratories America, Inc. GLDPC encoding with Reed-Muller component codes for optical communications
US20090070659A1 (en) 2007-09-11 2009-03-12 Legend Silicon Corp. Ldpc decoder with an improved llr update method using a set of relative values free from a shifting action
US8074154B2 (en) 2007-09-13 2011-12-06 Joseph Schweiray Lee Methods and apparatus for encoding and decoding cyclic codes by processing multiple symbols per cycle
US8068360B2 (en) 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
WO2009053961A2 (en) 2007-10-25 2009-04-30 Densbits Technologies Ltd. Systems and methods for multiple coding rates in flash devices
US8607128B2 (en) 2007-12-05 2013-12-10 Densbits Technologies Ltd. Low power chien-search based BCH/RS decoding system for flash memory, mobile communications devices and other applications
WO2009072103A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells
WO2009074979A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Chien-search system employing a clock-gating scheme to save power for error correction decoder and other applications
US8255758B2 (en) 2008-01-21 2012-08-28 Apple Inc. Decoding of error correction code using partial bit inversion
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US8327242B1 (en) 2008-04-10 2012-12-04 Apple Inc. High-performance ECC decoder
US8139426B2 (en) 2008-08-15 2012-03-20 Qualcomm Incorporated Dual power scheme in memory circuit
US8429498B1 (en) 2009-03-25 2013-04-23 Apple Inc. Dual ECC decoder
US8453038B2 (en) 2009-06-30 2013-05-28 Apple Inc. Chien search using multiple basis representation
US8601352B1 (en) 2009-07-30 2013-12-03 Apple Inc. Efficient LDPC codes
US8301987B2 (en) 2009-10-29 2012-10-30 Sandisk Il Ltd. System and method of decoding data with reduced power consumption
US8832534B1 (en) * 2010-01-04 2014-09-09 Viasat, Inc. LDPC decoder architecture
US8341502B2 (en) * 2010-02-28 2012-12-25 Densbits Technologies Ltd. System and method for multi-dimensional decoding
US8627175B2 (en) 2010-09-27 2014-01-07 Seagate Technology Llc Opportunistic decoding in memory systems
US20120240007A1 (en) 2010-10-20 2012-09-20 Stec, Inc. Ldpc decoding for solid state storage devices
US8549382B2 (en) 2010-12-17 2013-10-01 Intel Corporation Storage drive with LDPC coding
US8812939B2 (en) 2011-01-28 2014-08-19 Marvell World Trade Ltd. Soft decoding systems and methods for flash based memory systems
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
CN102567134B (zh) 2012-01-06 2015-01-07 威盛电子股份有限公司 存储器模块的错误检查与校正***以及方法
EP2675069A1 (en) * 2012-06-15 2013-12-18 Alcatel Lucent Method for encoding with GLDPC codes based on reed-solomon component codes
US9239754B2 (en) 2012-08-04 2016-01-19 Seagate Technology Llc Single read based soft-decision decoding of non-volatile memory
JP2014140111A (ja) 2013-01-21 2014-07-31 Sony Corp コントローラ、情報処理システム、コントローラの制御方法およびプログラム
US9369152B2 (en) 2013-03-07 2016-06-14 Marvell World Trade Ltd. Systems and methods for decoding with late reliability information
RU2013125784A (ru) * 2013-06-04 2014-12-10 ЭлЭсАй Корпорейшн Устройство для обработки сигналов, переносящих кодированные с модуляцией биты четности
US9722634B2 (en) * 2013-10-14 2017-08-01 Nec Corporation Multiple component codes based generalized low-density parity-check codes for high-speed optical transport

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120054576A1 (en) * 2010-08-25 2012-03-01 The Royal Institution For The Advancement Of Learning / Mcgill University Method and system for decoding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
S. Hirst and B. Honary, "Application of efficient Chase algorithm in decoding of generalized low-density parity-check codes," in IEEE Communications Letters, vol. 6, no. 9, pp. 385-387, Sept. 2002. *

Also Published As

Publication number Publication date
US20160182087A1 (en) 2016-06-23
US10084481B2 (en) 2018-09-25
TW201624930A (zh) 2016-07-01
WO2016099646A1 (en) 2016-06-23

Similar Documents

Publication Publication Date Title
TWI594583B (zh) 硬決定輸入之一般化低密度同位檢查軟解碼
US10554223B2 (en) Apparatus and methods for polar code construction
US10411735B1 (en) Systems and methods for an iterative decoding scheme
US8566666B2 (en) Min-sum based non-binary LDPC decoder
US9214958B2 (en) Method and decoder for processing decoding
JP5670411B2 (ja) トラッピング・セットを破壊するための装置および方法
US10090865B2 (en) Performance optimization in soft decoding of error correcting codes
US9048870B2 (en) Low density parity check decoder with flexible saturation
US20170179980A1 (en) Techniques for low complexity soft decoder for turbo product codes
US10205469B2 (en) Low latency soft decoder architecture for generalized product codes
US10848182B2 (en) Iterative decoding with early termination criterion that permits errors in redundancy part
US10090862B2 (en) Hybrid soft decoding algorithm for multiple-dimension TPC codes
WO2020108586A1 (zh) 一种极化码译码方法及装置、多级译码器、存储介质
US20170093528A1 (en) Staggered parity
US9853661B2 (en) On-the-fly evaluation of the number of errors corrected in iterative ECC decoding
US20140082449A1 (en) LDPC Decoder With Variable Node Hardening
US10128869B2 (en) Efficient convergence in iterative decoding
WO2018179246A1 (en) Check bit concatenated polar codes
Grinchenko et al. Improving performance of multithreshold decoder over binary erasure channel
US10187086B2 (en) State-based decoding of product codes
JP6972424B2 (ja) 復号装置および復号方法
US10530395B2 (en) Iterative message-passing decoding with global code embedded with local code in time-division manner for fault tolerance improvement
JP4900168B2 (ja) 無線受信装置
JP7038910B2 (ja) 復号装置、制御回路および記憶媒体
Zolotarev et al. Usage of divergence within concatenated multithreshold decoding convolutional codes

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees