TWI677878B - 編碼器及相關的編碼方法與快閃記憶體控制器 - Google Patents
編碼器及相關的編碼方法與快閃記憶體控制器 Download PDFInfo
- Publication number
- TWI677878B TWI677878B TW107136009A TW107136009A TWI677878B TW I677878 B TWI677878 B TW I677878B TW 107136009 A TW107136009 A TW 107136009A TW 107136009 A TW107136009 A TW 107136009A TW I677878 B TWI677878 B TW I677878B
- Authority
- TW
- Taiwan
- Prior art keywords
- check code
- blocks
- inverse matrix
- code block
- generate
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] 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
-
- 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/23—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes
- H03M13/235—Encoding of convolutional codes, e.g. methods or arrangements for parallel or block-wise encoding
-
- 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/611—Specific encoding aspects, e.g. encoding by means of decoding
-
- 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/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Algebra (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本發明揭露一種設置在一快閃記憶體控制器中的編碼器,其包含有桶式移位器模組、反矩陣計算電路以及計算電路,其中該桶式移位器模組將多個資料區塊進行處理以產生包含第一部分、第二部分以及第三部分的多個局部校驗碼區塊;該反矩陣計算電路用以對該第一部分進行反矩陣運算以產生第一部分的校驗碼區塊;以及該計算電路用以根據該第一部分的校驗碼區塊來對該第二部分以及該第三部分進行反矩陣運算,以產生第二、第三部分的校驗碼區塊;其中該第一、第二、第三部分的校驗碼區塊係作為該編碼器針對該多個資料區塊所產生之多個校驗碼區塊。
Description
本發明係有關於編碼器,尤指一種應用在快閃記憶體控制器中的編碼器。
在一般的編碼器中,會具有一個校驗碼檢查矩陣(parity-check matrix),以供編碼器檢查所產生出來的校驗碼是否正確。舉例來說,編碼器在對資料進行編碼以產生校驗碼之後,會將資料與校驗碼和此校驗碼檢查矩陣進行相乘,而若是相乘結果等於“0”則判斷編碼正確;而若是相乘結果不等於“0”則判斷編碼錯誤。因應此校驗碼檢查矩陣,編碼器會具有一相對應的校驗碼產生矩陣以供產生適合的校驗碼,然而,在某些情況下,校驗碼產生矩陣可能無法被找到,因此編碼器會需要進行多個矩陣乘法操作及/或補償/調整操作,以產生類似使用校驗碼產生矩陣所產生的校驗碼,因此會增加編碼器的複雜度。特別地,上述多個矩陣乘法操作通常會包含循環卷積(circulant convolution)計算,因此更會大幅增加編碼器的硬體成本。
因此,本發明的目的之一在於提出一種編碼器,其可以降低編碼器
中的循環卷積計算所需要的硬體,以避免先前技術中所述之硬體成本大幅增加的情形。
在本發明的一個實施例中,揭露了一種應用在一快閃記憶體控制器中的編碼器,其包含有一桶式移位器模組、一反矩陣計算電路以及一計算電路。在該編碼器的操作中,該桶式移位器模組用以將多個資料區塊進行處理以產生多個局部校驗碼區塊,其中該多個局部校驗碼區塊包含了一第一部分、一第二部分以及一第三部分;該第一反矩陣計算電路耦接於該桶式移位器模組,且用以對該第一部分進行反矩陣運算以產生一第一部分的校驗碼區塊;該計算電路耦接於該桶式移位器模組以及該調整電路,且用以根據該第一部分的校驗碼區塊來對該第二部分以及該第三部分進行反矩陣運算,以產生一第二部分的校驗碼區塊以及一第三部分的校驗碼區塊;其中該第一部分的校驗碼區塊、該第二部分的校驗碼區塊以及該第三部分的校驗碼區塊係作為該編碼器針對該多個資料區塊所產生之多個校驗碼區塊,且該多個資料區塊以及該多個校驗碼區塊係被寫入至一快閃記憶體中。
在本發明的另一個實施例中,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有一記憶體、一微處理器以及一編碼器,其中該記憶體用來儲存一程式碼,該微處理器用來執行該程式碼以控制對該快閃記憶體模組之存取,以及該編碼器用以對該多個資料區塊進行編碼以得到多個校驗碼區塊。該編碼器包含有一桶式移位器模組、一反矩陣計算電路以及一計算電路。在該編碼器的操作中,該桶式移位器模組用以將多個資料區塊進行處理以產生多個局部校驗碼區塊,其中該多個局部校驗碼區塊包含了一第一部分、一第二部分以及一第三部分;
該第一反矩陣計算電路耦接於該桶式移位器模組,且用以對該第一部分進行反矩陣運算以產生一第一部分的校驗碼區塊;該計算電路耦接於該桶式移位器模組以及該調整電路,且用以根據該第一部分的校驗碼區塊來對該第二部分以及該第三部分進行反矩陣運算,以產生一第二部分的校驗碼區塊以及一第三部分的校驗碼區塊;其中該第一部分的校驗碼區塊、該第二部分的校驗碼區塊以及該第三部分的校驗碼區塊係作為該編碼器針對該多個資料區塊所產生之多個校驗碼區塊,且該多個資料區塊以及該多個校驗碼區塊係被寫入至一快閃記憶體中。
在本發明的另一個實施例中,揭露了一種應用在一快閃記憶體控制器的編碼方法,其包含有以下步驟:將多個資料區塊進行處理以產生多個局部校驗碼區塊,其中該多個局部校驗碼區塊包含了一第一部分、一第二部分以及一第三部分;對該第一部分進行反矩陣運算以產生一第一部分的校驗碼區塊;根據該第一部分的校驗碼區塊來對該第二部分以及該第三部分進行反矩陣運算,以產生一第二部分的校驗碼區塊以及一第三部分的校驗碼區塊,其中該第一部分的校驗碼區塊、該第二部分的校驗碼區塊以及該第三部分的校驗碼區塊係作為該編碼器針對該多個資料區塊所產生之多個校驗碼區塊;以及將該多個資料區塊以及該多個校驗碼區塊係寫入至一快閃記憶體中。
100‧‧‧記憶裝置
110‧‧‧快閃記憶體控制器
112‧‧‧微處理器
112C‧‧‧程式碼
112M‧‧‧唯讀記憶體
114‧‧‧控制邏輯
116‧‧‧緩衝記憶體
118‧‧‧介面邏輯
120‧‧‧快閃記憶體模組
130‧‧‧主裝置
132、300、400、500‧‧‧編碼器
134‧‧‧解碼器
302、304‧‧‧區域
400‧‧‧編碼器
410‧‧‧桶式移位器模組
420‧‧‧第一反矩陣計算電路
430、440‧‧‧計算電路
431、434、435、441‧‧‧桶式移位器模組
432‧‧‧第一調整電路
433‧‧‧第二反矩陣計算電路
436‧‧‧第二調整電路
437‧‧‧第三反矩陣計算電路
442‧‧‧第四反矩陣計算電路
443‧‧‧第三調整電路
500~508‧‧‧步驟
DB_1~DB_N‧‧‧資料區塊
PB_a、PB_s、PB_b‧‧‧校驗碼區塊
第1圖為依據本發明一實施例之一種記憶裝置的示意圖。
第2圖為校驗碼檢查矩陣及校驗碼產生矩陣的示意圖。
第3圖為矩陣K的示意圖。
第4圖為根據本發明一實施例之編碼器的示意圖。
第5圖為根據本發明一實施例之一種編碼方法的流程圖。
第1圖為依據本發明一實施例之一種記憶裝置100的示意圖。記憶裝置100包含有一快閃記憶體(Flash Memory)模組120以及一快閃記憶體控制器110,且快閃記憶體控制器110用來存取快閃記憶體模組120。依據本實施例,快閃記憶體控制器110包含一微處理器112、一唯讀記憶體(Read Only Memory,ROM)112M、一控制邏輯114、一緩衝記憶體116、與一介面邏輯118。唯讀記憶體112M係用來儲存一程式碼112C,而微處理器112則用來執行程式碼112C以控制對快閃記憶體模組120之存取(Access)。控制邏輯114包含了一編碼器132以及一解碼器134,其中編碼器132用來對寫入到快閃記憶體模組120中的資料進行編碼以產生對應的校驗碼(或稱,錯誤更正碼(Error Correction Code),ECC),而解碼器134用來將從快閃記憶體模組120所讀出的資料進行解碼。
於典型狀況下,快閃記憶體模組120包含了多個快閃記憶體晶片,而每一個快閃記憶體晶片包含複數個區塊(Block),而該控制器(例如:透過微處理器112執行程式碼112C之快閃記憶體控制器110)對快閃記憶體模組120進行複製、抹除、合併資料等運作係以區塊為單位來進行複製、抹除、合併資料。另外,一區塊可記錄特定數量的資料頁(Page),其中該控制器(例如:透過微處理器112執行程式碼112C之記憶體控制器110)對快閃記憶體模組120進行寫入資料之運作係以資料頁為單位來進行寫入。
實作上,透過微處理器112執行程式碼112C之快閃記憶體控制器110
可利用其本身內部之元件來進行諸多控制運作,例如:利用控制邏輯114來控制快閃記憶體模組120之存取運作(尤其是對至少一區塊或至少一資料頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用介面邏輯118來與一主裝置(Host Device)130溝通。
在一實施例中,記憶裝置100可以是可攜式記憶裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡),且主裝置130為一可與記憶裝置連接的電子裝置,例如手機、筆記型電腦、桌上型電腦...等等。而在另一實施例中,記憶裝置100可以設置在一電子裝置中,例如設置在手機、筆記型電腦、桌上型電腦之中,而此時主裝置130可以是該電子裝置的一處理器。
在本實施例中,編碼器132為一低密度奇偶檢查碼(Low-Density Parity Check code,LDPC code)編碼電路,且可以根據來自主裝置130的資料來產生對應的校驗碼,且所產生的校驗碼符合一校驗碼檢查矩陣。具體來說,參考第2圖,假設該校驗碼檢查矩陣為一大小為c*t的矩陣(例如,c=5,t=48,或是其他任意適合的數值),而該校驗碼檢查矩陣可以分為左側的矩陣M(大小為c*(t-c))以及右側的矩陣K(大小為c*c),為了找出與該校驗碼檢查矩陣所對應的校驗碼產生矩陣,可以先找出矩陣K的反矩陣K-1(inverse matrix),之後再將反矩陣(K-1)與矩陣M相乘以得到矩陣P,而矩陣P的轉置矩陣(transpose matrix)便可以作為校驗碼產生矩陣。換句話說,在找到矩陣P的轉置矩陣之後,編碼器132可以將來自主裝置130的資料乘以矩陣P的轉置矩陣來得到對應於該些資料的校驗碼,而編碼器之後再將資料與校驗碼一起乘上該校驗碼檢查矩陣以判斷校驗碼是否正確。舉例來說,若是相乘結果等於“0”則判斷編碼正確;而若是相乘結果不等於“0”則判斷編碼錯誤。在判斷編碼正確之後,資料與對應的校驗碼便會被
寫入至快閃記憶體模組120中的一個資料頁中。
需注意的是上述該校驗碼檢查矩陣的每一個單元都在實作上為一區塊,而該區塊可以是一個方陣(例如64*64的矩陣或是192*192的矩陣),亦即該校驗碼檢查矩陣包含了c*t個區塊。
然而,在某些情況下,反矩陣K-1可能無法被輕易找到,因此編碼器132會需要進行多個矩陣乘法操作及/或補償/調整操作來得到一個類似反矩陣K-1的內容,以供找出校驗碼產生矩陣來產生校驗碼。本發明因此提出了一種電路架構,以使得編碼器132可以在盡可能節省硬體成本的情形下完成編碼器132的操作。需注意的是,編碼器132中有關於編碼的過程涉及許多複雜的數學運算,但由於本發明的重點是在於電路架構的設計,故相關的矩陣內容及推導過程的細節在此不予贅述。
第3圖為根據本發明一實施例之矩陣K的示意圖。其中矩陣K的行與列可以分別被區分為三段,而每一段分別具有a個區塊、s個區塊以及b個區塊。在本實施例中,第3圖所示之矩陣K的最右上角的區域302是空白區域,亦即區域302內的所有區塊中的所有數值均為“0”;斜線部分的區域304則是一個非零區域,亦即區域304內的所有區塊都一定包含了一個非零的數值;此外,矩陣K的其他區域則不限於空白區域或是非零區域。以下所示之編碼器132係針對第3圖所示的矩陣K來進行設計,但本發明並不以此為限。
第4圖,其為根據本發明一實施例之編碼器400的示意圖,其中編碼器400可以作為第1圖所示之編碼器132。如第4圖所示,編碼器400包含了一桶式
移位器模組410、一第一反矩陣計算電路420以及一計算電路430,其中計算電路430包含了三個桶式移位器模組431、434與435、一第一調整電路432、一第二反矩陣計算電路433、一第二調整電路436、一第三反矩陣計算電路437以及一計算電路440,其中計算電路440包含了一桶式移位器模組441、一第四反矩陣計算電路442以及一第三調整電路443。在本實施例中,桶式移位器模組410、431、434、435、441可以使用多個桶式移位器以及多個累加電路來實作,而第一反矩陣計算電路420、第二反矩陣計算電路433、第三反矩陣計算電路437以及第四反矩陣計算電路442則可以使用循環卷積計算電路以及補償電路來實作。在本實施例中,編碼器400係將來自主裝置130的一筆資料分為多個資料區塊(在本實施例中該多個資料區塊為N個資料區塊DB_1~DB_N),並將該多個資料區塊DB_1~DB_N進行編碼後產生多個校驗碼區塊(在本實施例中該多個校驗碼區塊為(a+s+b)個校驗碼區塊PB_a、PB_s、PB_b)。需注意的是,上述之一個資料區塊與一個校驗碼區塊的大小是相同的,且資料區塊的大小可以由設計者所自行決定,例如64*64個位元或是192*192個位元。
在編碼器400的操作中,首先,桶式移位器模組410將資料區塊DB_1~DB_N進行處理以產生多個局部校驗碼(partial parity)區塊。具體來說,桶式移位器模組410可以透過內部的第一個桶式移位器分別對資料區塊DB_1~DB_N進行移位操作,並透過累加電路來將移位後資料區塊進行相加來得到第一個局部校驗碼區塊;接著,透過內部的第二個桶式移位器分別對資料區塊DB_1~DB_N進行移位操作,並透過累加電路來將移位後資料區塊進行相加來得到第二個局部校驗碼區塊...以此類推,桶式移位器模組410共產生(a+s+b)個局部校驗碼區塊。
局部校驗碼區塊會被分三個部分以進行不同的處理,其中第一部分包含了a個局部校驗碼區塊、第二部分包含了s個局部校驗碼區塊、而第三部分包含了b個局部校驗碼區塊。在第一反矩陣計算電路420的操作中,其對該a個局部校驗碼區塊進行反矩陣運算(亦即,循環卷積操作以及補償運算),以產生a個校驗碼區塊PB_a。接著,計算電路430根據該a個校驗碼區塊PB_a、該s個局部校驗碼區塊以及該b個局部校驗碼區塊來產生s個校驗碼區塊PB_s以及b個校驗碼區塊PB_b。
詳細來說,首先,桶式移位器模組431會對該a個校驗碼區塊PB_a進行處理以產生b個處理後區塊,之後第一調整電路432將該b個處理後區塊與該b個局部校驗碼區塊相加以產生一調整後第三部分資料。接著,第二反矩陣計算電路433對該調整後第三部分資料進行反矩陣運算以產生一第一運算結果,桶式移位器模組435對該a個校驗碼區塊PB_a進行處理以產生s個第一處理後區塊,桶式移位器模組434對該第一運算結果進行處理以產生s個第二處理後區塊,且第二調整電路436將該s個第一處理後區塊、該s個第二處理後區塊以及該s個局部校驗碼區塊相加以產生一調整後第二部分資料。接著,第三反矩陣計算電路437對該調整後第二部分資料進行反矩陣運算以產生該s個校驗碼區塊PB_s。接著,桶式移位器模組441對該s個校驗碼區塊PB_s結果進行處理以產生b個處理後區塊,第四反矩陣計算電路442對該b個處理後區塊進行反矩陣運算以產生一第二運算結果,以及第三調整電路443根據該第一運算結果以及該第二運算結果以產生該b個校驗碼區塊PB_b。
在產生校驗碼區塊PB_a、PB_s、PB_b之後,編碼器300會將資料區塊DB_1~DB_N連同校驗碼區塊PB_a、PB_s、PB_b一起與校驗碼檢查矩陣相乘
以判斷校驗碼區塊PB_a、PB_s、PB_b是否正確。若是正確,快閃記憶體控制器110便會將資料區塊DB_1~DB_N連同校驗碼區塊PB_a、PB_s、PB_b一起寫入到快閃記憶體模組120的一區塊的一資料頁中。
在第4圖所示的電路架構中,桶式移位器模組410可以被比對為第2圖所示之矩陣M,而第一反矩陣計算電路420以及計算電路430則是用來產生一個類似於第2圖所示之反矩陣K-1的內容,以在無法確實找到反矩陣K-1的情形下可以產生校驗碼區塊PB_a、PB_s、PB_b。此外,編碼器400在實作上可以大幅降低循環卷積計算電路(包含於反矩陣計算電路中)的數量。舉例來說,假設K為10*10的方陣,且a=4、s=1、=5,則先前技術中編碼器所需要使用100個循環卷積計算電路(10*10=100);在本實施例中,第一反矩陣計算電路420需要16個循環卷積計算電路(a=4,4*4=16),第二反矩陣計算電路433需要25個循環卷積計算電路(b=5,5*5=25),第三反矩陣計算電路437僅需要一個循環卷積計算電路,而第四反矩陣計算電路442需要25個循環卷積計算電路,因此本實施例僅需要67個循環卷積計算電路,因此可以確實降低編碼器400的硬體成本。
此外,由於本實施例中的第一反矩陣計算電路420可以立即將桶式移位器模組410所輸出的a個局部校驗碼區塊進行反矩陣計算,以產生a個校驗碼區塊來輸出到後端的電路,因此若是後續的第二反矩陣計算電路433、第三反矩陣計算電路437以及第四反矩陣計算電路442的計算不複雜的話,編碼器400可以在沒有延遲的情形下不斷地輸出校驗碼區塊至後端電路,以增進整體系統的效能。
參考第5圖,其為根據本發明一實施例之一種編碼方法的流程圖,同時參考第1~5圖及以上實施例所揭露的內容,編碼方法的流程如下所述。
步驟500:流程開始。
步驟502:將多個資料區塊進行處理以產生多個局部校驗碼區塊,其中該多個局部校驗碼區塊包含了一第一部分、一第二部分以及一第三部分。
步驟504:對該第一部分進行反矩陣運算以產生一第一部分的校驗碼區塊。
步驟506:根據該第一部分的校驗碼區塊來對該第二部分以及該第三部分進行反矩陣運算,以產生一第二部分的校驗碼區塊以及一第三部分的校驗碼區塊,其中該第一部分的校驗碼區塊、該第二部分的校驗碼區塊以及該第三部分的校驗碼區塊係作為該編碼器針對該多個資料區塊所產生之多個校驗碼區塊。
步驟508:將該多個資料區塊以及該多個校驗碼區塊係寫入至一快閃記憶體中。
簡要歸納本發明,在本發明之編碼器中,其透過將局部校驗碼區塊分為三個部分來進行操作,以在可以確實產生校驗碼區塊的情形下降低編碼器中的循環卷積計算所需要的硬體。因此,本發明之編碼器可以避免先前技術中所述之硬體成本大幅增加的情形。以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
Claims (18)
- 一種設置在一快閃記憶體控制器中的編碼器,包含有:一桶式移位器模組,用以將多個資料區塊進行處理以產生多個局部校驗碼(partial parity)區塊,其中該多個局部校驗碼區塊包含了一第一部分、一第二部分以及一第三部分;一第一反矩陣計算電路,耦接於該桶式移位器模組,用以對該第一部分進行反矩陣運算以產生一第一部分的校驗碼區塊;以及一計算電路,耦接於該桶式移位器模組以及該第一反矩陣計算電路,用以根據該第一部分的校驗碼區塊來對該第二部分以及該第三部分進行反矩陣運算,以產生一第二部分的校驗碼區塊以及一第三部分的校驗碼區塊;其中該第一部分的校驗碼區塊、該第二部分的校驗碼區塊以及該第三部分的校驗碼區塊係作為該編碼器針對該多個資料區塊所產生之多個校驗碼區塊,且該多個資料區塊以及該多個校驗碼區塊係被寫入至一快閃記憶體中。
- 如申請專利範圍第1項所述之編碼器,其中該計算電路包含有:一第一調整電路,耦接於該第一反矩陣計算電路,用以根據該第一部分的校驗碼區塊來調整該多個局部校驗碼區塊的該第三部分以產生一調整後第三部分;一第二反矩陣計算電路,耦接於該第一調整電路,用以對該調整後第三部分進行反矩陣運算以產生一第一運算結果;一第二調整電路,耦接於該桶式移位器模組、該第一反矩陣計算電路以及該第二反矩陣計算電路,用以根據該第一部分的校驗碼區塊以及該第一運算結果來調整該多個局部校驗碼區塊的該第二部分以產生一調整後第二部分;一第三反矩陣計算電路,耦接於該第二調整電路,用以對該調整後第二部分進行反矩陣運算以產生一第二部分的校驗碼區塊;以及另一計算電路,耦接於該第二反矩陣計算電路以及第三反矩陣計算電路,用以根據該第一運算結果以及該第二部分的校驗碼區塊以產生一第三部分的校驗碼區塊。
- 如申請專利範圍第2項所述之編碼器,其中該第一部分的校驗碼區塊包含了a個區塊,該多個局部校驗碼區塊的該第三部分包含了b個局部校驗碼區塊,且該編碼器另包含有:另一桶式移位器模組,耦接於該第一反矩陣計算電路以及該第一調整電路,用以對該第一部分的校驗碼區塊進行處理以產生b個處理後區塊;其中該第一調整電路將b個處理後區塊與該b個局部校驗碼區塊相加以產生該調整後第三部分。
- 如申請專利範圍第2項所述之編碼器,其中該第一部分的校驗碼區塊包含了a個區塊,該第一運算結果包含了b個區塊,該多個局部校驗碼區塊的該第三部分包含了s個局部校驗碼區塊,且該編碼器另包含有:另一桶式移位器模組,用以對該第一部分的校驗碼區塊進行處理以產生s個第一處理後區塊,並對該第一運算結果進行處理以產生s個第二處理後區塊;其中該第二調整電路將該s個第一處理後區塊、該s個第二處理後區塊以及該s個局部校驗碼區塊相加以產生該調整後第二部分。
- 如申請專利範圍第2項所述之編碼器,其中該另一計算電路包含有:一第四反矩陣計算電路,耦接於該第三反矩陣計算電路,用以根據該第二部分的校驗碼區塊進行反矩陣計算以產生一第二運算結果;一第三調整電路,耦接於該第二反矩陣計算電路以及該第四反矩陣計算電路,用以根據該第一運算結果以及該第二運算結果以產生該第三部分的校驗碼區塊。
- 如申請專利範圍第5項所述之編碼器,其中該第二部分的校驗碼區塊包含了s個區塊,該第一運算結果包含了b個區塊,且該編碼器另包含有:另一桶式移位器模組,耦接於該第三反矩陣計算電路,用以對該第二部分的校驗碼區塊進行處理以產生b個處理後區塊;其中該第三調整電路將該b個處理後區塊與該b個區塊相加以產生該第三部分的校驗碼區塊。
- 如申請專利範圍第1項所述之編碼器,其為該快閃記憶體控制器中的一低密度奇偶檢查碼(Low-Density Parity Check code,LDPC code)編碼電路。
- 一種快閃記憶體控制器,該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有:一記憶體,用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及一編碼器,包含有:一桶式移位器模組,用以將多個資料區塊進行處理以產生多個局部校驗碼(partial parity)區塊,其中該多個局部校驗碼區塊包含了一第一部分、一第二部分以及一第三部分;一第一反矩陣計算電路,耦接於該桶式移位器模組,用以對該第一部分進行反矩陣運算以產生一第一部分的校驗碼區塊;以及一計算電路,耦接於該桶式移位器模組以及該第一反矩陣計算電路,用以根據該第一部分的校驗碼區塊來對該第二部分以及該第三部分進行反矩陣運算,以產生一第二部分的校驗碼區塊以及一第三部分的校驗碼區塊;其中該第一部分的校驗碼區塊、該第二部分的校驗碼區塊以及該第三部分的校驗碼區塊係作為該編碼器針對該多個資料區塊所產生之多個校驗碼區塊,且該多個資料區塊以及該多個校驗碼區塊係被寫入至該快閃記憶體模組中。
- 如申請專利範圍第8項所述之快閃記憶體控制器,其中該計算電路包含有:一第一調整電路,耦接於該第一反矩陣計算電路,用以根據該第一部分的校驗碼區塊來調整該多個局部校驗碼區塊的該第三部分以產生一調整後第三部分;一第二反矩陣計算電路,耦接於該第一調整電路,用以對該調整後第三部分進行反矩陣運算以產生一第一運算結果;一第二調整電路,耦接於該桶式移位器模組、該第一反矩陣計算電路以及該第二反矩陣計算電路,用以根據該第一部分的校驗碼區塊以及該第一運算結果來調整該多個局部校驗碼區塊的該第二部分以產生一調整後第二部分;一第三反矩陣計算電路,耦接於該第二調整電路,用以對該調整後第二部分進行反矩陣運算以產生一第二部分的校驗碼區塊;以及另一計算電路,耦接於該第二反矩陣計算電路以及第三反矩陣計算電路,用以根據該第一運算結果以及該第二部分的校驗碼區塊以產生一第三部分的校驗碼區塊。
- 如申請專利範圍第9項所述之快閃記憶體控制器,其中該第一部分的校驗碼區塊包含了a個區塊,該多個局部校驗碼區塊的該第三部分包含了b個局部校驗碼區塊,且該編碼器另包含有:另一桶式移位器模組,耦接於該第一反矩陣計算電路以及該第一調整電路,用以對該第一部分的校驗碼區塊進行處理以產生b個處理後區塊;其中該第一調整電路將b個處理後區塊與該b個局部校驗碼區塊相加以產生該調整後第三部分。
- 如申請專利範圍第9項所述之快閃記憶體控制器,其中該第一部分的校驗碼區塊包含了a個區塊,該第一運算結果包含了b個區塊,該多個局部校驗碼區塊的該第三部分包含了s個局部校驗碼區塊,且該編碼器另包含有:另一桶式移位器模組,用以對該第一部分的校驗碼區塊進行處理以產生s個第一處理後區塊,並對該第一運算結果進行處理以產生s個第二處理後區塊;其中該第二調整電路將該s個第一處理後區塊、該s個第二處理後區塊以及該s個局部校驗碼區塊相加以產生該調整後第二部分。
- 如申請專利範圍第9項所述之快閃記憶體控制器,其中該另一計算電路包含有:一第四反矩陣計算電路,耦接於該第三反矩陣計算電路,用以根據該第二部分的校驗碼區塊進行反矩陣計算以產生一第二運算結果;一第三調整電路,耦接於該第二反矩陣計算電路以及該第四反矩陣計算電路,用以根據該第一運算結果以及該第二運算結果以產生該第三部分的校驗碼區塊。
- 如申請專利範圍第12項所述之快閃記憶體控制器,其中該第二部分的校驗碼區塊包含了s個區塊,該第一運算結果包含了b個區塊,且該編碼器另包含有:另一桶式移位器模組,耦接於該第三反矩陣計算電路,用以對該第二部分的校驗碼區塊進行處理以產生b個處理後區塊;其中該第三調整電路將該b個處理後區塊與該b個區塊相加以產生該第三部分的校驗碼區塊。
- 如申請專利範圍第8項所述之快閃記憶體控制器,其中該編碼器為一低密度奇偶檢查碼(Low-Density Parity Check code,LDPC code)編碼電路。
- 一種應用在一快閃記憶體控制器的編碼方法,包含有:將多個資料區塊進行處理以產生多個局部校驗碼(partial parity)區塊,其中該多個局部校驗碼區塊包含了一第一部分、一第二部分以及一第三部分;對該第一部分進行反矩陣運算以產生一第一部分的校驗碼區塊;根據該第一部分的校驗碼區塊來對該第二部分以及該第三部分進行反矩陣運算,以產生一第二部分的校驗碼區塊以及一第三部分的校驗碼區塊,其中該第一部分的校驗碼區塊、該第二部分的校驗碼區塊以及該第三部分的校驗碼區塊係作為該編碼器針對該多個資料區塊所產生之多個校驗碼區塊;以及將該多個資料區塊以及該多個校驗碼區塊係寫入至一快閃記憶體中。
- 如申請專利範圍第15項所述之編碼方法,其中根據該第一部分的校驗碼區塊來對該第二部分以及該第三部分進行反矩陣運算以產生該第二部分的校驗碼區塊以及該第三部分的校驗碼區塊的步驟包含有:根據該第一部分的校驗碼區塊來調整該多個局部校驗碼區塊的該第三部分以產生一調整後第三部分;對該調整後第三部分進行反矩陣運算以產生一第一運算結果;根據該第一部分的校驗碼區塊以及該第一運算結果來調整該多個局部校驗碼區塊的該第二部分以產生一調整後第二部分;對該調整後第二部分進行反矩陣運算以產生一第二部分的校驗碼區塊;以及根據該第一運算結果以及該第二部分的校驗碼區塊以產生一第三部分的校驗碼區塊。
- 如申請專利範圍第16項所述之編碼器,其中根據該第一運算結果以及該第二部分的校驗碼區塊以產生該第三部分的校驗碼區塊的步驟包含有:根據該第二部分的校驗碼區塊進行反矩陣計算以產生一第二運算結果;以及根據該第一運算結果以及該第二運算結果以產生該第三部分的校驗碼區塊。
- 如申請專利範圍第15項所述之編碼方法,其為設置在該快閃記憶體控制器中的一低密度奇偶檢查碼(Low-Density Parity Check code,LDPC code)編碼電路來執行。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107136009A TWI677878B (zh) | 2018-10-12 | 2018-10-12 | 編碼器及相關的編碼方法與快閃記憶體控制器 |
CN201910092497.7A CN111049529B (zh) | 2018-10-12 | 2019-01-30 | 编码器及相关的编码方法与闪存 |
US16/273,093 US10810120B2 (en) | 2018-10-12 | 2019-02-11 | Encoder, associated encoding method and flash memory controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107136009A TWI677878B (zh) | 2018-10-12 | 2018-10-12 | 編碼器及相關的編碼方法與快閃記憶體控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI677878B true TWI677878B (zh) | 2019-11-21 |
TW202015063A TW202015063A (zh) | 2020-04-16 |
Family
ID=69189015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107136009A TWI677878B (zh) | 2018-10-12 | 2018-10-12 | 編碼器及相關的編碼方法與快閃記憶體控制器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10810120B2 (zh) |
CN (1) | CN111049529B (zh) |
TW (1) | TWI677878B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7162684B2 (en) * | 2003-01-27 | 2007-01-09 | Texas Instruments Incorporated | Efficient encoder for low-density-parity-check codes |
US20070283218A1 (en) * | 2006-04-19 | 2007-12-06 | Gopalakrishnan Subramanyam H | Low density parity check code decoder |
US20100251059A1 (en) * | 2007-07-04 | 2010-09-30 | Nxp B.V. | Shuffled ldpc decoding |
CN102340318A (zh) * | 2011-10-08 | 2012-02-01 | 中国科学院上海微系统与信息技术研究所 | 准循环ldpc码的编码方法 |
US8151160B1 (en) * | 2008-05-09 | 2012-04-03 | Lsi Corporation | Configurable low-density parity-check decoder for LDPC codes of arbitrary block size and method of configuring the same |
US8281214B2 (en) * | 2008-10-17 | 2012-10-02 | Lsi Corporation | Programmable quasi-cyclic low-density parity check (QC LDPC) encoder for read channel |
US20170149445A1 (en) * | 2015-11-23 | 2017-05-25 | Avago Technologies General Ip (Singapore) Pte. Ltd | Irregular Low Density Parity Check Processing System With Non-Uniform Scaling |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996746B2 (en) * | 2004-10-12 | 2011-08-09 | Nortel Networks Limited | Structured low-density parity-check (LDPC) code |
JP5203717B2 (ja) * | 2007-12-19 | 2013-06-05 | パナソニック株式会社 | 符号器、復号器、符号化方法、及び、復号方法 |
CN101621299B (zh) * | 2008-07-04 | 2013-01-30 | 华为技术有限公司 | 一种突发纠错的方法、设备和装置 |
JP5320964B2 (ja) * | 2008-10-08 | 2013-10-23 | ソニー株式会社 | サイクリックシフト装置、サイクリックシフト方法、ldpc復号装置、テレビジョン受像機、及び、受信システム |
CN101489135B (zh) * | 2009-01-22 | 2011-04-27 | 航天恒星科技有限公司 | 一种方便ldpc长码在fpga实现的编码器及编码方法 |
TWI456579B (zh) * | 2010-03-26 | 2014-10-11 | Silicon Motion Inc | 提昇錯誤更正能力之方法以及相關之記憶裝置及其控制器 |
US8739001B2 (en) * | 2011-04-23 | 2014-05-27 | Analogies Sa | LDPC encoding and decoding techniques |
US20130275827A1 (en) * | 2012-04-12 | 2013-10-17 | Lsi Corporation | Multi-Section Non-Binary LDPC Decoder |
TWI520501B (zh) * | 2012-06-07 | 2016-02-01 | 威盛電子股份有限公司 | 記憶體控制器 |
CN103036577B (zh) * | 2012-12-28 | 2015-09-30 | 东南大学 | 一种低复杂度的低密度奇偶校验ldpc码编码电路结构 |
US9459956B2 (en) * | 2013-07-19 | 2016-10-04 | Seagate Technology Llc | Data decoder with trapping set flip bit mapper |
RU2014104571A (ru) * | 2014-02-10 | 2015-08-20 | ЭлЭсАй Корпорейшн | Системы и способы для эффективного с точки зрения площади кодирования данных |
US9768807B2 (en) * | 2015-08-31 | 2017-09-19 | Sandisk Technologies Llc | On-the-fly syndrome and syndrome weight computation architecture for LDPC decoding |
US10725860B2 (en) | 2016-03-04 | 2020-07-28 | Sandisk Technologies Llc | Storage system and method for handling a burst of errors |
US10110255B2 (en) * | 2016-04-27 | 2018-10-23 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
US10289487B2 (en) * | 2016-04-27 | 2019-05-14 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
US10404290B2 (en) * | 2016-07-29 | 2019-09-03 | Western Digital Technologies, Inc. | Non-binary decoding using tensor product transforms |
WO2018041843A1 (en) | 2016-08-29 | 2018-03-08 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Encoder for Encoding, and Decoder for Decoding, a Digital Image Representation into a Data Stream using Indicating a Number of Leading Zero Bit Planes |
-
2018
- 2018-10-12 TW TW107136009A patent/TWI677878B/zh active
-
2019
- 2019-01-30 CN CN201910092497.7A patent/CN111049529B/zh active Active
- 2019-02-11 US US16/273,093 patent/US10810120B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7162684B2 (en) * | 2003-01-27 | 2007-01-09 | Texas Instruments Incorporated | Efficient encoder for low-density-parity-check codes |
US20070283218A1 (en) * | 2006-04-19 | 2007-12-06 | Gopalakrishnan Subramanyam H | Low density parity check code decoder |
US20100251059A1 (en) * | 2007-07-04 | 2010-09-30 | Nxp B.V. | Shuffled ldpc decoding |
US8151160B1 (en) * | 2008-05-09 | 2012-04-03 | Lsi Corporation | Configurable low-density parity-check decoder for LDPC codes of arbitrary block size and method of configuring the same |
US8281214B2 (en) * | 2008-10-17 | 2012-10-02 | Lsi Corporation | Programmable quasi-cyclic low-density parity check (QC LDPC) encoder for read channel |
CN102340318A (zh) * | 2011-10-08 | 2012-02-01 | 中国科学院上海微系统与信息技术研究所 | 准循环ldpc码的编码方法 |
US20170149445A1 (en) * | 2015-11-23 | 2017-05-25 | Avago Technologies General Ip (Singapore) Pte. Ltd | Irregular Low Density Parity Check Processing System With Non-Uniform Scaling |
Also Published As
Publication number | Publication date |
---|---|
CN111049529B (zh) | 2023-03-28 |
US20200117591A1 (en) | 2020-04-16 |
TW202015063A (zh) | 2020-04-16 |
US10810120B2 (en) | 2020-10-20 |
CN111049529A (zh) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI530959B (zh) | 用來控制一記憶裝置之方法以及記憶裝置與控制器 | |
KR102068030B1 (ko) | 메모리 컨트롤러 및 그 동작방법 | |
US10938417B2 (en) | Flash memory controller and encoding circuit and decoding circuit within flash memory controller | |
US11115064B2 (en) | Error correction decoder and memory system having the same | |
US10291258B2 (en) | Error correcting code for correcting single symbol errors and detecting double bit errors | |
US9236886B1 (en) | Universal and reconfigurable QC-LDPC encoder | |
TWI665678B (zh) | 編碼器及相關的編碼方法與快閃記憶體控制器 | |
TWI643201B (zh) | 編碼器及相關的編碼方法與快閃記憶體控制器 | |
TWI677878B (zh) | 編碼器及相關的編碼方法與快閃記憶體控制器 | |
TWI711279B (zh) | 編碼器及相關的編碼方法與快閃記憶體控制器 | |
TWI804347B (zh) | 編碼器與快閃記憶體控制器 | |
CN110389850B (zh) | 译码方法和相关的闪存控制器与电子装置 | |
TWI759672B (zh) | 解碼方法及相關的快閃記憶體控制器與電子裝置 | |
TWI782341B (zh) | 快閃記憶體控制器及其中的編碼電路 | |
US11876535B1 (en) | Memory controller and method for controlling data in decoding pipeline | |
CN117631962A (zh) | 存储器控制器及快闪存储器的存取方法 | |
JP2013201503A (ja) | チェンサーチ回路、復号器、記憶装置およびチェンサーチ方法 | |
JP2010140132A (ja) | メモリシステム及びメモリコントローラ | |
JP2013201482A (ja) | チェンサーチ回路、復号器、記憶装置およびチェンサーチ方法 |