TW201629981A - 記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法 - Google Patents

記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法 Download PDF

Info

Publication number
TW201629981A
TW201629981A TW104105187A TW104105187A TW201629981A TW 201629981 A TW201629981 A TW 201629981A TW 104105187 A TW104105187 A TW 104105187A TW 104105187 A TW104105187 A TW 104105187A TW 201629981 A TW201629981 A TW 201629981A
Authority
TW
Taiwan
Prior art keywords
parity check
code
decoding
check bit
error correction
Prior art date
Application number
TW104105187A
Other languages
English (en)
Other versions
TWI557747B (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 瑞昱半導體股份有限公司
Priority to TW104105187A priority Critical patent/TWI557747B/zh
Priority to CN201510090521.5A priority patent/CN105991230B/zh
Priority to US14/965,723 priority patent/US9985657B2/en
Publication of TW201629981A publication Critical patent/TW201629981A/zh
Application granted granted Critical
Publication of TWI557747B publication Critical patent/TWI557747B/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/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/2906Coding, 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 using block codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
    • 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/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
    • 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/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations
    • 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
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/152Bose-Chaudhuri-Hocquenghem [BCH] codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)

Abstract

本發明揭露記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法。記憶體控制模組包含:一暫存單元、一錯誤更正碼單元以及一讀寫控制單元。暫存單元用來暫存一目標資料。錯誤更正碼單元包含複數個第一編碼器及一第二編碼器;第一編碼器對該目標資料進行編碼運算以產生複數組第一同位元檢查位元,該複數組第一同位元檢查位元係具有至少兩種長度;第二編碼器對該目標資料及該複數組第一同位元檢查位元進行編碼運算,以產生一組第二同位元檢查位元。讀寫控制單元將該目標資料、該複數組第一同位元檢查位元及該組第二同位元檢查位元轉換成該記憶體模組之資料格式。

Description

記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法
本發明是關於記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法,尤其是關於使用LDPC碼編/解碼器與複數個碼長度不相等的BCH碼編/解碼器串接之記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法。
錯誤更正碼(Error-Correcting Code, ECC)廣泛地應用於與數位資料相關的系統或裝置中,例如通訊系統、儲存裝置等,其中又以BCH(Bose- Chaudhuri-Hocquenghem)碼及LDPC(Low Density Parity Check,,低密度同位元檢查)碼較為常見。圖1A為習知應用一個LDPC編碼器與複數個BCH編碼器串接(concatenation)的錯誤更正碼的編碼端。ECC編碼電路100包含n個BCH編碼器110-1~110-n,以及LDPC編碼器120,每個BCH編碼器110具有相同的碼長度。BCH編碼器110對目標資料D0編碼後產生資料D1,其包含目標資料D0及複數組BCH碼同位元檢查位元(parity check bit),每組BCH碼同位元檢查位元對應一個BCH編碼器110。之後LDPC編碼器120再將資料D1編碼後產生資料D2,其包含目標資料D0、複數組BCH碼同位元檢查位元及一組LDPC碼同位元檢查位元。圖1B為對應圖1A之錯誤更正碼的解碼端。ECC解碼電路150包含n個BCH解碼器160-1~160-n,以及LDPC解碼器170,同樣的,BCH解碼器160具有相同的碼長度,且碼長度與BCH編碼器110的碼長度相同。LDPC解碼器170接收資料D2’(對應資料D2,但可能有若干錯誤位元),並依據其中的該組LDPC碼同位元檢查位元對錯誤位元進行修正,之後產生資料D1’。n個BCH解碼器160分別對資料D1’進行解碼,以修正殘餘的錯誤位元。最後可得到資料D0’,如果所有的錯誤位元都獲得修正,則資料D0’將等於目標資料D0。
LDPC碼的缺點為其在位元錯誤率(bit error rate, BER)對應訊號雜訊比(signal-to-noise ratio, SNR)的關係圖上有錯誤地板區(error floor region)的存在,其代表LDPC碼的錯誤更正能力受到限制。因此ECC解碼電路150使用複數個具有不同特性但碼長度相同的BCH解碼器160,以提高修正殘餘的錯誤位元的機率。如此設計除了降低位元錯誤率之外,還可使LDPC碼的錯誤地板區變得較不明顯。然而每個BCH編碼器110或BCH解碼器160所使用的碼長度固定,亦即每個BCH編碼器110或BCH解碼器160處理相同長度的BCH碼同位元檢查位元,限制了ECC編/解碼電路的效能。
鑑於先前技術之不足,本發明之一目的在於提供一種記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法。
本發明揭露了一種記憶體控制模組,用來控制一記憶體模組,包含:一暫存單元、一錯誤更正碼單元以及一讀寫控制單元。暫存單元用來暫存一目標資料;錯誤更正碼單元,耦接該暫存單元,包含複數個第一編碼器及一第二編碼器;第一編碼器對該目標資料進行編碼運算以產生複數組第一同位元檢查位元,該複數組第一同位元檢查位元係具有至少兩種長度;第二編碼器,耦接該些第一編碼器,用來對該目標資料及該複數組第一同位元檢查位元進行編碼運算,以產生一組第二同位元檢查位元。讀寫控制單元耦接該錯誤更正碼單元,用來將該目標資料、該複數組第一同位元檢查位元及該組第二同位元檢查位元轉換成該記憶體模組之資料格式。
本發明另揭露了一種控制方法,用於控制一記憶體模組,包含:暫存一目標資料;使用一第一編碼方法對該目標資料進行編碼運算以產生複數組第一同位元檢查位元,其中該複數組第一同位元檢查位元係具有至少兩種長度;使用一第二編碼方法對該目標資料進行編碼運算,以產生一組第二同位元檢查位元;以及將該目標資料、該複數組第一同位元檢查位元及該組第二同位元檢查位元轉換成該記憶體模組之資料格式。
本發明另揭露了一種錯誤更正碼解碼電路,包含:一第一解碼器,依據一組第一同位元檢查位元對一目標資料執行一LDPC碼解碼運算;以及複數個第二解碼器,耦接該第一解碼器,依據複數組第二同位元檢查位元對該目標資料執行一以BCH碼為基礎的解碼運算;其中,該些第二解碼器係具有至少兩種碼長度。
本發明另揭露了一種錯誤更正碼解碼方法,包含:依據一組第一同位元檢查位元對一目標資料執行一LDPC碼解碼運算;以及依據複數組第二同位元檢查位元對該目標資料執行一以BCH碼為基礎的解碼運算;其中,該複數組第二同位元檢查位元係具有至少兩種長度。
本發明之記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法使用不同碼長度的BCH碼編/解碼器來實作BCH碼的編/解碼運算,相較於習知的錯誤更正碼編/解碼電路,本發明有較低的位元錯誤率。
有關本發明的特徵、實作與功效,茲配合圖式作實施例詳細說明如下。
以下說明內容之技術用語係參照本技術領域之習慣用語,如本說明書對部分用語有加以說明或定義,該部分用語之解釋係以本說明書之說明或定義為準。
本發明之揭露內容包含記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法,能夠降低位元錯誤率。在實施為可能的前提下,本技術領域具有通常知識者能夠依本說明書之揭露內容來選擇等效之元件或步驟來實現本發明,亦即本發明之實施並不限於後敘之實施例。由於本發明之記憶體控制模組以及錯誤更正碼編/解碼電路所包含之部分元件單獨而言可能為已知元件,因此在不影響該裝置發明之充分揭露及可實施性的前提下,以下說明對於已知元件的細節將予以節略。此外,本發明之記憶體模組之控制方法以及錯誤更正碼編/解碼方法可以是軟體及/或韌體之形式,在不影響該方法發明之充分揭露及可實施性的前提下,以下方法發明之說明將著重於步驟內容而非硬體。
記憶體於存取資料時容易受到溫度、電壓等環境因素的影響,而造成資料錯誤,因此常利用ECC編/解碼方法來減少資料的錯誤率。圖2為本發明之記憶體控制模組的功能方塊圖。記憶體控制模組210用來控制記憶體模組220的資料存取,包含暫存單元212、錯誤更正碼單元214以及讀寫控制單元216。記憶體模組220例如是快閃記憶體(flash memory)、固態硬碟(Solid State Drive, SSD)等的記憶體模組。目標資料可能經由PCI(Peripheral Component Interconnect)匯流排、PCI Express匯流排、串列ATA(Serial ATA, Serial Advanced Technology Attachment)匯流排或通用序列匯流排(Universal Serial Bus, USB)等介面傳輸至記憶體控制模組210。將目標資料寫入記憶體模組220時,目標資料先暫存在暫存單元212,之後再經由錯誤更正碼單元214計算出該目標資料的同位元檢查位元。同位元檢查位元連同該目標資料經由讀寫控制單元216轉換成記憶體模組220之訊號格式,而後寫入該記憶體模組220。讀出時,讀寫控制單元216從記憶體模組220讀取資料,讀取的資料包含該先前儲存的目標資料以及該些同位元檢查位元。讀取的資料可能受雜訊、溫度及記憶體模組220本身的誤差影響而出現錯誤。目標資料及同位元檢查位元經讀寫控制單元216轉換格式後,由錯誤更正碼單元214依據同位元檢查位元對資料進行錯誤更正運算。更正後的目標資料先暫存於暫存單元212再輸出。
圖3為本發明錯誤更正碼單元214之細部功能方塊圖,以及圖4為本發明之記憶體模組之控制方法的流程圖。錯誤更正碼單元214包含錯誤更正碼編碼電路310及錯誤更正碼解碼電路360。錯誤更正碼編碼電路310在將資料寫入記憶體模組220的程序中對資料進行錯誤更正碼編碼運算,其包含BCH編碼模組312及LDPC編碼器316。BCH編碼模組312包含控制單元313及k個(k>1)BCH編碼器314。先前暫存於暫存單元212中的目標資料D0(步驟S410)進入BCH編碼模組312後,由復數個BCH編碼器314對該目標資料進行編碼運算以產生複數組BCH碼同位元檢查位元(步驟S420)。在此步驟中,控制單元313依據BCH編碼器314的碼長度將目標資料D0分割,使每個BCH編碼器314接收到對應自己的碼長度的資料量。此處,碼長度代表一個BCH編碼器314處理的資料量加上所產生的同位元檢查位元的長度;舉例來說,假設一個BCH編碼器314所處理的原始資料的資料量為16384位元,其更正能力為120位元,則根據BCH編/解碼器的特徵:(N為原始資料的資料量,m為BCH編/解碼器的階數,T為BCH編/解碼器的更正能力),階數m=15。因此可得此BCH編碼器314的同位元檢查位元的長度為位元,亦即該BCH編碼器314的碼長度等於16384+1800=18184位元。不同碼長度的BCH編碼器314代表其各自所處理的原始資料長度或是所產生的同位元檢查位元的長度不同。此k個BCH編碼器314具有至少兩種碼長度。其中一實施為該k個BCH編碼器314的碼長度皆不相同;在其他的實施例中,其中的兩個碼長度可以相同(此時k>2)。因此控制單元313依據各BCH編碼器314的碼長度將目標資料D0分割;舉例來說,BCH編碼模組312包含4個BCH編碼器314,其能夠處理的原始資料的長度分別為:1024位元、2048位元、4096位元及8192位元,因此一個資料長度為15360位元的目標資料D0便會被分割成這四個長度的資料。每個BCH編碼器314完成編碼後產生各自的同位元檢查位元(PB1、PB2、…、PBk),最後該k組同位元檢查位元及目標資料D0由控制單元313組合成資料D1後,傳送至LDPC編碼器316。之後LDPC編碼器316對資料D1編碼,產生相對應的同位元檢查位元(PBL)(步驟S430)。最後所有資料組合成資料D2(包含目標資料D0、k組BCH編碼器314所產生的同位元檢查位元 PB1~PBk以及LDPC編碼器316所產生的同位元檢查位元 PBL)輸出,資料D2則由讀寫控制單元216轉換為記憶體模組220的資料格式(步驟S440)。
錯誤更正碼解碼電路360在將資料讀出記憶體模組220的程序中對資料進行錯誤更正碼解碼運算,其包含BCH解碼模組362及LDPC解碼器366。BCH解碼模組362包含控制單元363及k個BCH解碼器364。讀取資料時讀寫控制單元216先依據記憶體模組220的儲存內容產生資料D2’(步驟S450),資料D2’再經由LDPC解碼器366解碼。資料D2’大致上與資料D2的內容相同,但可能有若干位元出現錯誤。LDPC解碼器366依據資料D2’中的該組LDPC碼同位元檢查位元 PBL來對資料D2’的其他部分(對應目標資料D0及該複數組BCH碼同位元檢查位元 PB1~PBk,但可能有若干錯誤位元)解碼,解碼後產生資料D1’(步驟S460)。資料D1’包含經過LDPC解碼器366解碼的目標資料D0’及該複數組BCH碼同位元檢查位元 PB1~PBk。控制單元363判斷解碼後的目標資料D0’是否已經沒有錯誤位元,可以是依據目標資料D0’的本身作判斷,或是依據LDPC解碼器366所另外傳遞的控制訊號(圖未示,用以指示目標資料D0’是否仍有錯誤位元)作判斷(步驟S470)。如果已經沒有錯誤位元,則控制單元363將資料D1’中的該複數組BCH碼同位元檢查位元 PB1~PBk去除後,輸出目標資料D0’(實質上等於目標資料D0),則完成錯誤更正碼的編/解碼程序(步驟S480及步驟S485);如果仍有錯誤位元,則控制單元363選擇其中一個BCH解碼器364,令其依據相對應的一組BCH碼同位元檢查位元 PBx(1≤ x ≤k)對資料D1’中除了BCH碼同位元檢查位元 PB1~PBk的部分進行BCH碼解碼運算(步驟S490)。之後控制單元363再將BCH碼解碼運算後的資料連同BCH碼同位元檢查位元 PB1~PBk組合成回授資料DF,傳送給LDPC解碼器366。LDPC解碼器366再次依據LDPC碼的同位元檢查位元 PBL對回授資料DF進行解碼,以重新生成資料D1’(步驟S460)。
雖然在相同的同位元檢查位元下LDPC碼相對於BCH碼有較好的更正能力,但LDPC碼無法保證所有的錯誤位元皆能夠得到更正,這也就是地板區存在的原因。相對的,BCH編碼器314為一種保證錯誤更正碼,若錯誤的位元數在其更正能力的範圍內,則能保證該些錯誤的位元一定能夠被更正。本發明除了藉由串接的BCH碼編/解碼器及LDPC碼編/解碼器來提升資料的正確性之外,其中複數BCH編碼器314及BCH解碼器364更設計為具有不同的碼長度。在步驟S490中,使用BCH解碼模組362解碼時,係依據BCH解碼器364之碼長度的順序選取對應的BCH解碼器364進行解碼。舉例來說,假設BCH解碼器364-1~364-k的碼長度由小至大排列(BCH解碼器364-1的碼長度最小,而BCH解碼器364-k的碼長度最大),第一次使用BCH碼解碼時,使用碼長度最小的BCH解碼器364-1進行解碼,之後再依序遞增碼長度。如此設計的原因在於,錯誤的位元可以在數次的遞迴解碼的過程中被依序解回,使錯誤位元得到更正的成功率大幅提高。相對的,如果是習知般使用相同長度的BCH碼編/解碼器,則每個BCH碼編/解碼器有可能在相同的資料大小中累積太多錯誤位元而造成全數的BCH碼解碼器皆無法更正錯誤位元的情形。上述選取BCH解碼器364的順序(亦即參考複數組BCH碼同位元檢查位元 PB1~PBk之順序)不限於碼長度由小到大,亦可由大到小或其他預先定義之順序。
一般而言,記憶體模組220對同位元檢查位元有長度限制,因此在本發明中,BCH編碼器314之複數組同位元檢查位元PB1~PBk之長度的總和加上LDPC編碼器316之同位元檢查位元PBL之長度後的總位元數,應小於等於記憶體模組220所提供的同位元檢查位元的長度(對一次的存/取操作而言)。再者,如前所述,在同樣的同位元檢查位元長度下,LDPC碼的更正能力較BCH碼佳。因此在一個實施例中,可以設計為讓LDPC碼的同位元檢查位元PBL的長度超過資料D2之所有同位元檢查位元的一半,也就是資料D2中LDPC碼的同位元檢查位元PBL的長度超過所有BCH碼的同位元檢查位元PB1~PBk的長度總和。圖5為本發明錯誤更正碼單元所產生之資料D2的結構示意圖。在此假設BCH編碼模組312包含4個BCH編碼器314(同理BCH解碼模組362包含4個BCH解碼器364)。資料D2包含資料1~資料4(其組合即為資料D0)以及5組同位元檢查位元1~ 5。同位元檢查位元1~4分別為對應資料1~4的BCH碼的同位元檢查位元,同位元檢查位元5設計為LDPC碼的同位元檢查位元。在一個實施例中,資料1~資料4的長度分別為1024位元、2048位元、4096位元及8192位元(即資料D0的長度為1024+2048+4096+8192=15360位元),因此其所對應之BCH碼編/解碼器的階數分別為11、12、13及14。並且假設每個BCH碼編/解碼器的錯誤更正能力為3位元,則同位元檢查位元1~4的長度分別為33位元、36位元、39位元及42位元(總和為33+36+39+42=150位元)。同位元檢查位元5為1064位元,大於同位元檢查位元1~4的長度總和。其中資料1~4及同位元檢查位元1~4的組合即為資料D1。
本發明的錯誤更正碼單元214除了可以應用於記憶體模組之外,亦可應用於採用BCH碼及LDPC碼的通訊系統。圖6為通訊系統之發射端或接收端之功能方塊圖。錯誤更正碼單元214應用於發射端時,基頻電路610所產生之目標資料由錯誤更正碼單元214編碼後(此時錯誤更正碼單元214可以只包含錯誤更正碼編碼電路310),再交由調變/解調變單元620調變後(此時調變/解調變單元620可以只包含調變電路),由天線630送出。對應於發射端的應用,本發明之錯誤更正碼編碼方法,其流程與圖4之步驟S420~S440類似,差別在於步驟S440由執行資料格式之轉換改為執行訊號調變。另一方面,當錯誤更正碼單元214應用於接收端時,其錯誤更正碼解碼方法的流程圖如圖7所示。調變/解調變單元620由天線630接收射頻訊號並解調變(此時調變/解調變單元620可以只包含解調變電路)後產生目標資料(步驟S710),再由錯誤更正碼單元214進行解碼運算(此時錯誤更正碼單元214可以只包含錯誤更正碼解碼電路360)。目標資料同樣包含發射端所傳輸的訊息部分、一組LDPC碼的同位元檢查位元 PBL及複數組BCH碼的同位元檢查位元 PB1~PBk。LDPC解碼器366依據該組LDPC碼的同位元檢查位元 PBL對目標資料進行LDPC碼解碼運算(步驟S720)。之後控制單元363檢查是否已經沒有任何錯誤位元(步驟S730),若沒有,則移除目標資料中所有同位元檢查位元的部分後輸出完成解碼的訊息部分,並結束解碼程序(步驟S740、步驟S750);如果還有錯誤位元存在,則BCH解碼模組362對訊息的部分進行以BCH碼為基礎的解碼運算(步驟S760)。控制單元363選擇BCH解碼器364之順序可參考前述之實施例,並且目標資料之結構可參考圖5,其細節不再重覆贅述。請注意,通訊系統常用一種名為里德-所羅門碼(Reed-solomon codes)的編/解碼運算,事實上里德-所羅門碼為BCH碼的其中一個特例,所以錯誤更正碼單元214亦適用於里德-所羅門碼的運算。
圖8為本發明與習知方法應用於記憶體時之區塊錯誤率(Block Error Rate, BLER)與原始位元錯誤率(Raw BER)之關係圖。在圖中,愈靠近左邊的曲線代表有較佳的錯誤更正能力,同時代表記憶體有更久的使用壽命。曲線810為單純使用LDPC碼編/解碼器之曲線,曲線840為單純使用BCH碼編/解碼器(更正能力T=123位元)之曲線。如前所述,一般而言LDPC碼的更正能力較BCH碼佳,但是曲線810在圖上呈現地板區(即圖中區塊錯誤率約為10-5 的轉折處)。曲線830實際上為兩條幾近疊合的曲線,其中之一代表使用複數個碼長度相等的BCH碼編/解碼器與LDPC碼編/解碼器串接的結果,其效果相當近似使用單一BCH碼編/解碼器(更正能力T=187位元)之曲線,也就是說使用複數個碼長度相等的BCH碼編/解碼器與LDPC碼編/解碼器串接比單純使用BCH碼編/解碼器(更正能力T=123位元)的效果來得好。曲線820實際上為兩條幾近疊合的曲線,其中之一代表使用複數個碼長度不相等的BCH碼編/解碼器與LDPC碼編/解碼器串接的結果,其效果相當近似使用單一BCH碼編/解碼器(更正能力T=208位元)之曲線,也就是說使用複數個碼長度不相等的BCH碼編/解碼器與LDPC碼編/解碼器串接比使用複數個碼長度相等的BCH碼編/解碼器與LDPC碼編/解碼器串接的效果來得好。另外,對應本發明之曲線在區塊錯誤率約為10-5 之位置處沒有地板區,代表本發明可改善LDPC碼之受限的錯誤更正能力。
本發明在解碼運算時亦可以先執行BCH碼之解碼運算再執行LDPC碼之解碼運算。圖9為本發明錯誤更正碼單元214之另一實施方式之細部功能方塊圖,圖10為其相對應的記憶體模組之控制方法的流程圖。編碼時,暫存的目標資料(步驟S410)先經由BCH編碼模組312編碼(步驟S420),再經由錯誤更正碼編碼電路310之LDPC編碼器316編碼(步驟S430),之後的步驟S440與圖4相同。解碼時,從記憶體模組220讀出資料後(步驟S450),先利用錯誤更正碼解碼電路960的BCH解碼模組362以一順序對資料D2’解碼(步驟S1010)。第一次解碼時,控制單元363控制所有的BCH解碼器364對資料D2’進行解碼。如果解碼完的資料已經正確(意即無錯誤位元)(步驟S1020),則BCH解碼模組362去除資料D2’中的複數組BCH碼同位元檢查位元,並且LDPC解碼器366去除資料D1’中的該組LDPC碼同位元檢查位元後,輸出完成解碼的資料(步驟S1030),然後結束解碼流程(步驟S1040)。然而如果經步驟S1010解碼完的資料仍有錯誤位元(步驟S1020),則先對BCH碼區塊進行資料處理(意即先更正BCH碼所能更正的錯誤)(步驟S1050)以得到資料D1’,再由LDPC解碼器366對資料D1’解碼產生回授資料DF(步驟S1060)。之後BCH解碼模組362再次對回授資料進行解碼(步驟S1010)。此時控制單元363依據步驟S490中所述之順序依序使用BCH解碼器364進行解碼。因此步驟S1010所述之順序包含第一次解碼時使用全部的BCH解碼器364進行解碼,以及之後的疊代(iteration)運算中所依循之順序。圖11為應用於通訊系統之接收端時,錯誤更正碼解碼方法的另一實施方式的流程圖。解調變後的資料(步驟S1110),先進行以BCH碼為基礎的解碼運算(步驟S1120),再進行LDPC碼解碼運算(步驟S1170)。圖11流程的操作細節可以由圖10之流程得知,故不再贅述。前述之實施例中先執行BCH碼解碼運算再執行LDPC碼解碼運算的好處在於,其一,一般而言BCH碼的解碼速度比LDPC碼來得快,所以若解碼程序一次即解碼成功,步驟S1010(或步驟S1120)所花費的時間比步驟S460(或步驟S720)來得短;其二,整體解碼程序的終止條件由BCH碼的解碼程序決定,可有效減輕錯誤地板區的影響。
由於本技術領域具有通常知識者可藉由圖2、圖3及圖6之裝置發明的揭露內容來瞭解圖4及圖7之方法發明的實施細節與變化以及由圖2、圖6及圖9之裝置發明的揭露內容來瞭解圖10及圖11之方法發明的實施細節與變化,因此,為避免贅文,在不影響該方法發明之揭露要求及可實施性的前提下,重複之說明在此予以節略。請注意,前揭圖示中,元件之形狀、尺寸、比例以及步驟之順序等僅為示意,係供本技術領域具有通常知識者瞭解本發明之用,非用以限制本發明。另外,於實施為可能的前提下,本技術領域人士可依本發明之揭露內容及自身的需求選擇性地實施任一實施例之部分或全部技術特徵,或者選擇性地實施複數個實施例之部分或全部技術特徵之組合,藉此增加本發明實施時的彈性。再者,前揭實施例雖以記憶體及通訊系統為例,然此並非對本發明之限制,本技術領域人士可依本發明之揭露適當地將本發明應用於其它需要錯誤更正碼編碼及/或解碼的裝置與系統。
雖然本發明之實施例如上所述,然而該些實施例並非用來限定本發明,本技術領域具有通常知識者可依據本發明之明示或隱含之內容對本發明之技術特徵施以變化,凡此種種變化均可能屬於本發明所尋求之專利保護範疇,換言之,本發明之專利保護範圍須視本說明書之申請專利範圍所界定者為準。
100‧‧‧ECC編碼電路
110、314‧‧‧BCH編碼器
120、316‧‧‧LDPC編碼器
150‧‧‧ECC解碼電路
160、364‧‧‧BCH解碼器
170、366‧‧‧LDPC解碼器
210‧‧‧記憶體控制模組
212‧‧‧暫存單元
214‧‧‧錯誤更正碼單元
216‧‧‧讀寫控制單元
220‧‧‧記憶體模組
310‧‧‧錯誤更正碼編碼電路
312‧‧‧BCH編碼模組
313、363‧‧‧控制單元
360、960‧‧‧錯誤更正碼解碼電路
362‧‧‧BCH解碼模組
610‧‧‧基頻電路
620‧‧‧調變/解調變單元
630‧‧‧天線
810、820、830、840‧‧‧曲線
S410~S490、S710~S760、S1010~S1060、S1110~S1170‧‧‧步驟
[圖1A]及[圖1B]為習知應用一個LDPC編碼器與複數個BCH編碼器串接的錯誤更正碼的編碼端與解碼端; [圖2]為本發明之記憶體控制模組的功能方塊圖; [圖3]為本發明錯誤更正碼單元214之細部功能方塊圖; [圖4]為本發明之記憶體模組之控制方法的流程圖; [圖5]為本發明錯誤更正碼單元所產生之資料D2的結構示意圖; [圖6]為通訊系統之發射端或接收端之功能方塊圖; [圖7]為本發明錯誤更正碼解碼方法的流程圖; [圖8]為本發明與習知方法應用於記憶體時之區塊錯誤率與原始位元錯誤率之關係圖; [圖9]為本發明錯誤更正碼單元214之另一實施方式之細部功能方塊圖; [圖10]為本發明之記憶體模組之控制方法的另一實施方式的流程圖;以及 [圖11]為本發明錯誤更正碼解碼方法的另一實施方式的流程圖。
310‧‧‧錯誤更正碼編碼電路
312‧‧‧BCH編碼模組
313、363‧‧‧控制單元
314‧‧‧BCH編碼器
316‧‧‧LDPC編碼器
360‧‧‧錯誤更正碼解碼電路
362‧‧‧BCH解碼模組
364‧‧‧BCH解碼器
366‧‧‧LDPC解碼器

Claims (34)

  1. 一記憶體控制模組,用來控制一記憶體模組,包含: 一暫存單元,用來暫存一目標資料; 一錯誤更正碼單元,耦接該暫存單元,包含 複數個第一編碼器,用來對該目標資料進行編碼運算以產生複數組第一同位元檢查位元,其中該複數組第一同位元檢查位元係具有至少兩種長度;以及 一第二編碼器,耦接該些第一編碼器,用來對該目標資料進行編碼運算,以產生一組第二同位元檢查位元;以及 一讀寫控制單元,耦接該錯誤更正碼單元,用來將該目標資料、該複數組第一同位元檢查位元及該組第二同位元檢查位元轉換成該記憶體模組之資料格式。
  2. 如申請專利範圍第1項所述之記憶體控制模組,其中該讀寫控制單元依據該記憶體模組之儲存內容產生一讀取資料,該讀取資料包含一中間資料、該複數組第一同位元檢查位元及該組第二同位元檢查位元,並且該錯誤更正單元更包含: 複數個第一解碼器,用來依據該複數組第一同位元檢查位元對該中間資料進行解碼運算,以修正該中間資料之錯誤位元;以及 一第二解碼器,耦接該些第一解碼器,用來依據該組第二同位元檢查位元對該中間資料進行解碼運算,以修正該中間資料之錯誤位元。
  3. 如申請專利範圍第2項所述之記憶體控制模組,其中該第二解碼器係早於該些第一解碼器對該中間資料進行運算。
  4. 如申請專利範圍第2項所述之記憶體控制模組,其中該些第一解碼器係早於該第二解碼器對該中間資料進行運算。
  5. 如申請專利範圍第2項所述之記憶體控制模組,更包含: 一控制單元,耦接該些第一解碼器,用來依據一順序控制該些第一解碼器之解碼順序。
  6. 如申請專利範圍第5項所述之記憶體控制模組,其中該順序係依據該些第一解碼器之碼長度順序。
  7. 如申請專利範圍第1項所述之記憶體控制模組,其中該些第一編碼器係執行BCH碼之編碼運算,該第二編碼器係執行LDPC碼之編碼運算。
  8. 如申請專利範圍第1項所述之記憶體控制模組,其中該記憶體模組係具有一記憶體容量,該複數組第一同位元檢查位元及該組第二同位元檢查位元之長度的總和與該記憶體容量有關。
  9. 如申請專利範圍第8項所述之記憶體控制模組,其中該記憶體模組為快閃記憶體模組。
  10. 如申請專利範圍第1項所述之記憶體控制模組,其中該複數組第一同位元檢查位元之長度的總和小於該組第二同位元檢查位元之長度。
  11. 一種控制方法,用於控制一記憶體模組,包含: 暫存一目標資料; 使用一第一編碼方法對該目標資料進行編碼運算以產生複數組第一同位元檢查位元,其中該複數組第一同位元檢查位元係具有至少兩種長度; 使用一第二編碼方法對該目標資料進行編碼運算,以產生一組第二同位元檢查位元;以及 將該目標資料、該複數組第一同位元檢查位元及該組第二同位元檢查位元轉換成該記憶體模組之資料格式。
  12. 如申請專利範圍第11項所述之控制方法,更包含: 依據該記憶體模組之儲存內容產生一讀取資料,該讀取資料包含一中間資料、該複數組第一同位元檢查位元及該組第二同位元檢查位元; 使用一第一解碼方法並依據該複數組第一同位元檢查位元對該中間資料進行解碼運算,以修正該中間資料之錯誤位元;以及 使用一第二解碼方法並依據該組第二同位元檢查位元對該中間資料進行解碼運算,以修正該中間資料之錯誤位元。
  13. 如申請專利範圍第12項所述之控制方法,其中該第一解碼方法係早於該第二解碼方法對該中間資料進行運算。
  14. 如申請專利範圍第12項所述之控制方法,其中該第二解碼方法係早於該第一解碼器對該中間資料進行運算。
  15. 如申請專利範圍第12項所述之控制方法,更包含: 依據一順序參考該複數組第一同位元檢查位元,以對該中間資料進行解碼運算。
  16. 如申請專利範圍第15項所述之控制方法,其中該順序係依據該複數組第一同位元檢查位元之長度順序。
  17. 如申請專利範圍第11項所述之控制方法,其中該些第一編碼方法係對應BCH碼之編碼運算,該第二編碼方法係對應LDPC碼之編碼運算。
  18. 如申請專利範圍第11項所述之控制方法,其中該記憶體模組係具有一記憶體容量,該複數組第一同位元檢查位元及該組第二同位元檢查位元之長度的總和與該記憶體容量有關。
  19. 如申請專利範圍第18項所述之控制方法,其中該記憶體模組為快閃記憶體模組。
  20. 如申請專利範圍第11項所述之控制方法,其中該複數組第一同位元檢查位元之長度的總和小於該組第二同位元檢查位元之長度。
  21. 一種錯誤更正碼解碼電路,包含: 一第一解碼器,依據一組第一同位元檢查位元對一目標資料執行一LDPC碼解碼運算;以及 複數個第二解碼器,耦接該第一解碼器,依據複數組第二同位元檢查位元對該目標資料執行一以BCH碼為基礎的解碼運算; 其中,該些第二解碼器係具有至少兩種碼長度。
  22. 如申請專利範圍第21項所述之錯誤更正碼解碼電路,其中該第一解碼器係早於該些第二解碼器對該目標資料進行運算。
  23. 如申請專利範圍第21項所述之錯誤更正碼解碼電路,其中該些第二解碼器係早於該第一解碼器對該目標資料進行運算。
  24. 如申請專利範圍第21項所述之錯誤更正碼解碼電路,更包含: 一控制單元,耦接該些第二解碼器,用來依據一順序控制該些第二解碼器之解碼順序。
  25. 如申請專利範圍第24項所述之錯誤更正碼解碼電路,其中該順序係依據該些第二解碼器之碼長度順序。
  26. 如申請專利範圍第21項所述之錯誤更正碼解碼電路,其中該複數組第二同位元檢查位元之長度的總和小於該組第一同位元檢查位元之長度。
  27. 如申請專利範圍第21項所述之錯誤更正碼解碼電路係用於一無線通訊系統之接收端,且該些第二解碼器係執行一里德-所羅門碼解碼運算。
  28. 一種錯誤更正碼解碼方法,包含: 依據一組第一同位元檢查位元對一目標資料執行一LDPC碼解碼運算;以及 依據複數組第二同位元檢查位元對該目標資料執行一以BCH碼為基礎的解碼運算; 其中,該複數組第二同位元檢查位元係具有至少兩種長度。
  29. 如申請專利範圍第28項所述之錯誤更正碼解碼方法,其中該LDPC碼解碼運算係早於該以BCH碼為基礎的解碼運算執行。
  30. 如申請專利範圍第28項所述之錯誤更正碼解碼方法,其中該以BCH碼為基礎的解碼運算係早於該LDPC碼解碼運算執行。
  31. 如申請專利範圍第28項所述之錯誤更正碼解碼方法,更包含: 依據一順序使用該複數組第二同位元檢查位元,以進行該以BCH碼為基礎的解碼運算。
  32. 如申請專利範圍第31項所述之錯誤更正碼解碼方法,其中該順序係依據該複數組第二同位元檢查位元之長度順序。
  33. 如申請專利範圍第28項所述之錯誤更正碼解碼方法,其中該複數組第二同位元檢查位元之長度的總和小於該組第一同位元檢查位元之長度。
  34. 如申請專利範圍第28項所述之錯誤更正碼解碼方法係用於一無線通訊系統之接收端,且該以BCH碼為基礎的解碼運算係為一里德-所羅門碼解碼運算。
TW104105187A 2015-02-13 2015-02-13 記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法 TWI557747B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW104105187A TWI557747B (zh) 2015-02-13 2015-02-13 記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法
CN201510090521.5A CN105991230B (zh) 2015-02-13 2015-02-28 存储器控制模块与方法以及纠错码编/解码电路与方法
US14/965,723 US9985657B2 (en) 2015-02-13 2015-12-10 Memory control module and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW104105187A TWI557747B (zh) 2015-02-13 2015-02-13 記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法

Publications (2)

Publication Number Publication Date
TW201629981A true TW201629981A (zh) 2016-08-16
TWI557747B TWI557747B (zh) 2016-11-11

Family

ID=56621588

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104105187A TWI557747B (zh) 2015-02-13 2015-02-13 記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法

Country Status (3)

Country Link
US (1) US9985657B2 (zh)
CN (1) CN105991230B (zh)
TW (1) TWI557747B (zh)

Families Citing this family (10)

* 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
CN107294542B (zh) * 2017-05-23 2020-08-11 南京邮电大学 Mlc闪存中基于双层ldpc码的编、译码方法
US10496335B2 (en) 2017-06-30 2019-12-03 Intel Corporation Method and apparatus for performing multi-object transformations on a storage device
CN109710450B (zh) * 2017-10-25 2022-05-31 群联电子股份有限公司 数据编码方法、存储器控制电路单元与存储器存储装置
TWI643462B (zh) * 2017-11-06 2018-12-01 瑞昱半導體股份有限公司 連續漸近暫存器式類比至數位轉換器之位元錯誤率預測電路
WO2019090657A1 (zh) * 2017-11-10 2019-05-16 深圳先进技术研究院 一种存储器容错保护方法、装置、设备及存储介质
CN110138499A (zh) * 2018-02-08 2019-08-16 深圳衡宇芯片科技有限公司 级联编码系统
CN110751977B (zh) * 2019-10-18 2021-05-11 西安工业大学 一种基于ldpc码的存储芯片容错装置及容错纠错方法
CN111796774B (zh) * 2020-07-07 2024-03-08 深圳宏芯宇电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制器
CN112332865B (zh) * 2020-10-29 2024-06-07 深圳电器公司 基于bch并行算法和ldpc算法的纠错电路及方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1179512C (zh) * 2000-05-22 2004-12-08 三星电子株式会社 用于混合自动重复请求数据通信系统的数据发送设备和方法
JP4451008B2 (ja) * 2001-04-04 2010-04-14 三菱電機株式会社 誤り訂正符号化方法および復号化方法とその装置
US7376883B2 (en) * 2003-10-27 2008-05-20 The Directv Group, Inc. Method and system for providing long and short block length low density parity check (LDPC) codes
US7234098B2 (en) * 2003-10-27 2007-06-19 The Directv Group, Inc. Method and apparatus for providing reduced memory low density parity check (LDPC) codes
US7152199B2 (en) * 2004-06-02 2006-12-19 Teknovus, Inc. Method and apparatus for delineating data in an FEC-coded Ethernet frame
JP5298621B2 (ja) * 2007-12-21 2013-09-25 ソニー株式会社 送信装置および方法、受信装置および方法
WO2010137177A1 (en) * 2009-05-25 2010-12-02 Hitachi,Ltd. Storage device and its control method
JP2011065599A (ja) * 2009-09-18 2011-03-31 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
US8656263B2 (en) * 2010-05-28 2014-02-18 Stec, Inc. Trellis-coded modulation in a multi-level cell flash memory device
EP2536030A1 (en) * 2011-06-16 2012-12-19 Panasonic Corporation Bit permutation patterns for BICM with LDPC codes and QAM constellations
US8645789B2 (en) * 2011-12-22 2014-02-04 Sandisk Technologies Inc. Multi-phase ECC encoding using algebraic codes
CN103346802B (zh) * 2013-06-04 2014-12-31 上海华力创通半导体有限公司 Qc-ldpc码的构造方法
US20150012801A1 (en) * 2013-07-03 2015-01-08 Chih-Nan YEN Method of detecting and correcting errors with bch and ldpc engines for flash storage systems
US9654144B2 (en) * 2014-09-30 2017-05-16 Micron Technology, Inc. Progressive effort decoder architecture

Also Published As

Publication number Publication date
US9985657B2 (en) 2018-05-29
CN105991230B (zh) 2020-01-10
US20160241273A1 (en) 2016-08-18
CN105991230A (zh) 2016-10-05
TWI557747B (zh) 2016-11-11

Similar Documents

Publication Publication Date Title
TWI557747B (zh) 記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法
KR101625273B1 (ko) 더 짧은 블록 길이를 이용하여 더 긴 선형 블록 코드워드를 생성 및 디코딩하기 위한 장치, 시스템 및 방법
AU761792B2 (en) An iterative decoder and an iterative decoding method for a communication system
JP6451955B2 (ja) 多段ソフト入力デコードのためのシステムおよび方法
US20100251076A1 (en) Storage controller having soft decoder included therein, related storage control method thereof and system using the same
US20120254686A1 (en) Non-volatile semiconductor memory devices and error correction methods
US20060085726A1 (en) Apparatus and method for decoding Reed-Solomon code
KR20110111108A (ko) 반도체 장치 및 이의 복호 방법
WO2019019550A1 (zh) 应用于快闪存储器中的自适应ldpc码纠错码系统和方法
GB2411802A (en) Error correction system with two encoders and two decoders
US9654147B2 (en) Concatenated error correction device
US8032812B1 (en) Error correction decoding methods and apparatus
CN111597072B (zh) 差错控制编码ecc系统及包括ecc系统的存储器设备
US9164831B2 (en) Memory controller, semiconductor storage device, and decoding method
US11184034B2 (en) Method and device for decoding staircase code, and storage medium
JP2024520875A (ja) 確率振幅整形における二重符号化連結のためのシステムおよび方法
KR101314232B1 (ko) 에러 정정 코드의 부호화 및 복호화 방법 그리고 코덱
US9252815B2 (en) Extension of product codes with applications to tape and parallel channels
US8386882B2 (en) Set partitioning and multilevel coding
US10516418B2 (en) Hybrid type iterative decoding method and apparatus
TWI645683B (zh) 使用代數碼與ldpc碼的部分聯結編碼系統
KR101484066B1 (ko) 엘디피시 부호의 디코딩 방법
RU2420870C1 (ru) Способ кодирования-декодирования каскадной кодовой конструкции в системах передачи данных
CN111600613B (zh) 一种校验方法、装置、译码器、接收机及计算机存储介质
WO2023023732A1 (en) Modified staircase forward error correction coding