CN112435702A - 闪存控制器和设置在闪存控制器中的编码器 - Google Patents

闪存控制器和设置在闪存控制器中的编码器 Download PDF

Info

Publication number
CN112435702A
CN112435702A CN202011074485.0A CN202011074485A CN112435702A CN 112435702 A CN112435702 A CN 112435702A CN 202011074485 A CN202011074485 A CN 202011074485A CN 112435702 A CN112435702 A CN 112435702A
Authority
CN
China
Prior art keywords
blocks
parity
circuit
check code
generate
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN202011074485.0A
Other languages
English (en)
Other versions
CN112435702B (zh
Inventor
郭轩豪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
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 Silicon Motion Inc filed Critical Silicon Motion Inc
Priority to CN202011074485.0A priority Critical patent/CN112435702B/zh
Publication of CN112435702A publication Critical patent/CN112435702A/zh
Application granted granted Critical
Publication of CN112435702B publication Critical patent/CN112435702B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/2933Coding, 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 a block and a convolutional code
    • 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/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • 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
    • G06F11/1032Simple parity
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本发明公开了编码方法:将多个数据区块进行处理以产生多个局部校验码区块,其中所述多个局部校验码区块包括第一部分及第二部分;使用第一计算电路以根据所述第二部分以产生第一计算结果;根据所述第一计算结果来调整所述多个局部校验码区块的所述第一部分;对所述调整后第一部分进行循环卷积操作,以产生第一部分的校验码区块;以及使用第二计算电路以至少根据所述第一部分的校验码区块来产生第二部分的校验码区块;其中所述第一部分的校验码区块及所述第二部分的校验码区块是作为对所述多个数据区块进行编码后所产生的多个校验码区块。本发明通过将局部校验码区块分为两个部分操作,可降低编码器中的循环卷积计算所需要的硬件。

Description

闪存控制器和设置在闪存控制器中的编码器
本申请是申请日为2018年05月14日、申请号为201810455384.4、发明创造名称为“闪存控制器和设置在闪存控制器中的编码器和编码器”的中国发明申请的分案申请。
技术领域
本发明涉及编码器,尤其涉及一种应用在闪存控制器中的编码器。
背景技术
在一般的编码器中,会具有一个校验码检查矩阵(parity-check matrix),以供编码器检查所产生出来的校验码是否正确。举例来说,编码器在对数据进行编码以产生校验码之后,会将数据与校验码和此校验码检查矩阵进行相乘,而若是相乘结果等于“0”则判断编码正确;而若是相乘结果不等于“0”则判断编码错误。因应此校验码检查矩阵,编码器会具有一相对应的校验码产生矩阵以供产生适合的校验码,然而,在某些情况下,校验码产生矩阵可能无法被找到,因此编码器会需要进行多个矩阵乘法操作及/或补偿/调整操作,以产生类似使用校验码产生矩阵所产生的校验码,因此会增加编码器的复杂度。特别地,上述多个矩阵乘法操作通常会包括循环卷积(circulant convolution)计算,因此更会大幅增加编码器的硬件成本。
发明内容
因此,本发明的目的之一在于提出一种编码器,其可以降低编码器中的循环卷积计算所需要的硬件,以避免现有技术中所述的硬件成本大幅增加的情形。
在本发明的一个实施例中,公开了一种编码器,其包括有一第一桶式移位器模块、一第一计算电路、一调整电路、一第一循环卷积计算电路以及一第二计算电路。所述第一桶式移位器模块用于将多个数据区块进行处理以产生多个局部校验码区块,其中所述多个局部校验码区块包括了一第一部分及一第二部分;所述第一计算电路耦接于所述第一桶式移位器模块,且用于根据所述第二部分以产生一第一计算结果;所述调整电路用于根据所述第一计算结果来调整所述多个局部校验码区块的所述第一部分,以产生一调整后第一部分;所述第一循环卷积计算电路耦接于所述调整电路,且用于对所述调整后第一部分进行循环卷积操作,以产生一第一部分的校验码区块;以及所述第二计算电路耦接于所述第一循环卷积计算电路,且用于至少根据所述第一部分的校验码区块以产生一第二部分的校验码区块;其中所述第一部分的校验码区块及所述第二部分的校验码区块是作为所述编码器针对所述多个数据区块所产生的多个校验码区块。
在本发明的另一个实施例中,公开了一种闪存控制器,其中所述闪存控制器是用来存取一闪存模块,且所述闪存控制器包括有一存储器、一微处理器以及一编码器,其中所述存储器用来存储一程序代码;所述微处理器用来执行所述程序代码以控制对所述闪存模块的存取;且所述编码器用于对所述多个数据区块进行编码以得到多个校验码区块。此外,所述编码器包括有一第一桶式移位器模块、一第一计算电路、一调整电路、一第一循环卷积计算电路以及一第二计算电路。所述第一桶式移位器模块用于将多个数据区块进行处理以产生多个局部校验码区块,其中所述多个局部校验码区块包括了一第一部分及一第二部分;所述第一计算电路耦接于所述第一桶式移位器模块,且用于根据所述第二部分以产生一第一计算结果;所述调整电路用于根据所述第一计算结果来调整所述多个局部校验码区块的所述第一部分,以产生一调整后第一部分;所述第一循环卷积计算电路耦接于所述调整电路,且用于对所述调整后第一部分进行循环卷积操作,以产生一第一部分的校验码区块;以及所述第二计算电路耦接于所述第一循环卷积计算电路,且用于至少根据所述第一部分的校验码区块以产生一第二部分的校验码区块;其中所述第一部分的校验码区块及所述第二部分的校验码区块是作为所述编码器针对所述多个数据区块所产生的多个校验码区块。
在本发明的另一个实施例中,公开了一种编码方法,其包括有:将多个数据区块进行处理以产生多个局部校验码区块,其中所述多个局部校验码区块包括了一第一部分及一第二部分;使用一第一计算电路以根据所述第二部分以产生一第一计算结果;根据所述第一计算结果来调整所述多个局部校验码区块的所述第一部分;对所述调整后第一部分进行循环卷积操作,以产生一第一部分的校验码区块;以及使用一第二计算电路以至少根据所述第一部分的校验码区块来产生一第二部分的校验码区块;其中所述第一部分的校验码区块及所述第二部分的校验码区块是作为对所述多个数据区块进行编码后所产生的多个校验码区块。
在本发明的另一个实施例中,公开了一种编码器,其包括有一桶式移位器模块、一调整电路、一循环卷积计算电路以及一计算电路。所述桶式移位器模块用于将多个数据区块进行处理以产生多个局部校验码区块,其中所述多个局部校验码区块包括了一第一部分及一第二部分;所述调整电路用于根据所述第二部分来调整所述多个局部校验码区块的所述第一部分,以产生一调整后第一部分;所述循环卷积计算电路耦接于所述调整电路,且用于对所述调整后第一部分进行循环卷积操作,以产生一第一部分的校验码区块;以及所述计算电路耦接于所述循环卷积计算电路,且用于至少根据所述第一部分的校验码区块以产生一第二部分的校验码区块;其中所述第一部分的校验码区块及所述第二部分的校验码区块是作为所述编码器针对所述多个数据区块所产生的多个校验码区块。
附图说明
图1为依据本发明一实施例的一种记忆装置的示意图。
图2为校验码检查矩阵及校验码产生矩阵的示意图。
图3为根据本发明一实施例的编码器的示意图。
图4为根据本发明另一实施例的编码器的示意图。
图5为根据本发明另一实施例的编码器的示意图。
图6为根据本发明一实施例的一种编码方法的流程图。
其中,附图标记说明如下:
100 记忆装置
110 闪存控制器
112 微处理器
112C 程序代码
112M 只读存储器
114 控制逻辑
116 缓冲存储器
118 接口逻辑
120 闪存模块
130 主装置
132、300、400、500 编码器
134 译码器
310、326、352、410、422、424、452、510 桶式移位器模块
311、312、313、314、315、411、412、413、 桶式移位器
414、415、511、512、513、514、515
317_1~317_5、332、334、336、357、358、 累加电路
417_1~417_5、432、434、436、438、
517_1~517_5、532、534、536、538
320、420 第一计算电路
322、340、354、440、540 循环卷积计算电路
324、342、356、442、542 补偿电路
330、430、530 调整电路
350、450 第二计算电路
454 输出电路
550 计算电路
600~610 步骤
DB_1~DB_43 数据区块
PPB_1~PPB_5 局部校验码区块
PB_1~PB_5 校验码区块
具体实施方式
请参考图1,图1为依据本发明一实施例的一种记忆装置100的示意图。记忆装置100包括有一闪存(Flash Memory)模块120以及一闪存控制器110,且闪存控制器110用来存取闪存模块120。依据本实施例,闪存控制器110包括一微处理器112、一只读存储器(ReadOnly 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 Checkcode,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中的一个数据页中。
然而,在某些情况下,反矩阵K-1可能无法被轻易找到,因此编码器132会需要进行多个矩阵乘法操作及/或补偿/调整操作来得到一个类似反矩阵K-1的内容,以供找出校验码产生矩阵来产生校验码。本发明因此提出了一种电路架构,以使得编码器132可以在尽可能节省硬件成本的情形下完成编码器132的操作。需注意的是,编码器132中有关于编码的过程涉及许多复杂的数学运算,但由于本发明的重点是在于电路架构的设计,故相关的矩阵内容及推导过程的细节在此不予赘述。
参考图3,其为根据本发明一实施例的编码器300的示意图,其中编码器300可以作为图1所示的编码器132。如图3所示,编码器300包括了一桶式移位器模块310、一第一计算电路320、一调整电路330、一循环卷积(circulant convolution)计算电路340、一补偿电路342以及一第二计算电路350。在本实施例中,桶式移位器模块310包括了多个桶式移位器311、312、313、314、315以及多个累加电路317_1~317_5;第一计算电路320包括了一循环卷积计算电路322、一补偿电路324以及一桶式移位器模块326;调整电路330包括了多个累加电路332、334、336;以及第二计算电路350包括了一桶式移位器模块352、一循环卷积计算电路354、一补偿电路356、一包括两个累加电路357、358的输出电路。在本实施例中,编码器300将来自主装置130的一笔数据分为多个数据区块(在本实施例中所述多个数据区块为43个数据区块DB_1~DB_43),并将所述多个数据区块DB_1~DB_43进行编码后产生多个校验码区块(在本实施例中所述多个校验码区块为5个校验码区块PB_1~PB_5)。需注意的是,上述的一个数据区块与一个校验码区块的大小是相同的,且数据区块的大小可以由设计者所自行决定,例如192*192个位。
在编码器300的操作中,首先,桶式移位器模块310将数据区块DB_1~DB_43进行处理以产生多个局部校验码(partial parity)区块PPB_1~PPB_5。具体来说,桶式移位器311可以分别对数据区块DB_1~DB_43进行移位操作,并通过累加电路317_1来将43个移位后数据区块进行相加来得到局部校验码区块PPB_1;桶式移位器312可以分别对数据区块DB_1~DB_43进行移位操作,并通过累加电路317_2来将43个移位后数据区块进行相加来得到局部校验码区块PPB_2;类似地,桶式移位器313、314、315可以分别对数据区块DB_1~DB_43进行移位操作,并通过累加电路317_3、317_4、317_5来将43个移位后数据区块进行相加来分别得到局部校验码区块PPB_3、PPB_4、PPB_5。
局部校验码区块PPB_1~PPB_5会被分两个部分以进行不同的处理,其中第一部分包括了三个局部校验码区块PPB_1~PPB_3,而第二部分包括了两个局部校验码区块PPB_4~PPB_5。在第一计算电路320的操作中,循环卷积计算电路322将局部校验码区块PPB_4~PPB_5进行循环卷积操作以产生两个中间区块;补偿电路324是一可移除(optional)的组件,且用来补偿循环卷积计算电路322所输出的两个中间区块;桶式移位器模块326是用于对所述两个中间区块进行处理以产生三个计算结果区块。在本实施例中,由于桶式移位器模块326根据两个中间区块来产生三个计算结果区块,故桶式移位器模块326可以包括6个桶式移位器(2*3=6)。
调整电路330中的累加电路332、334、336将桶式移位器模块326所产生的三个计算结果区块分别与局部校验码区块PPB_1~PPB_3进行相加,以产生调整后的局部校验码区块。
接着,循环卷积计算电路340对调整后的第一部分的局部校验码区块(即PPB_1~PPB_3)进行循环卷积操作,并通过补偿电路342以产生校验码区块PB_1~PB_3。需注意的是,补偿电路342为一可移除的组件,也就是说,在不需要补偿的情形下可以自编码器300中移除而不会影响到其操作。
接着,在第二计算电路350的操作中,桶式移位器模块352对校验码区块PB_1~PB_3进行处理以产生两个处理后区块;循环卷积计算电路354将两个处理后区块进行循环卷积操作以产生两个输出区块;补偿电路356是一可移除的组件,且用来补偿循环卷积计算电路354所输出的两个输出区块;累加电路357、357分别将循环卷积计算电路322或是补偿电路324所产生的中间区块与循环卷积计算电路354或是补偿电路356所产生的两个输出区块进行相加,以产生校验码区块PB_4~PB_5。在本实施例中,由于桶式移位器模块352根据三个校验码区块PB_1~PB_3来产生两个处理后区块,故桶式移位器模块352可以包括6个桶式移位器(3*2=6)
在产生校验码区块PB_1~PB_5之后,编码器会将数据区块DB_1~DB_43连同校验码区块PB_1~PB_5一起与校验码检查矩阵相乘以判断校验码区块PB_1~PB_5是否正确。若是正确,闪存控制器110便会将数据区块DB_1~DB_43连同校验码区块PB_1~PB_5一起写入到闪存模块120的一区块的一数据页中。
在图3所示的电路架构中,桶式移位器模块310可以被比对为图2所示的矩阵M,而第一计算电路320、调整电路330、循环卷积计算电路340、补偿电路342以及第二计算电路350则是用来产生一个类似于图2所示的反矩阵K-1的内容,以在无法确实找到反矩阵K-1的情形下可以产生校验码区块PB_1~PB_5。此外,编码器300具有三个循环卷积计算电路322、340、354,其中循环卷积计算电路322为2*2个循环矩阵/区块相乘,循环卷积计算电路340为3*3个循环矩阵/区块相乘,以及循环卷积计算电路354为2*2个循环矩阵/区块相乘,因此总和来说编码器300的循环矩阵/区块相乘的次数为17次(4+9+4=17)。因此,由于编码器300只需进行17次循环矩阵/区块相乘操作便可以产生五个校验码区块,故可以确实降低编码器300的硬件成本。
参考图4,其为根据本发明另一实施例的编码器400的示意图,其中编码器400可以作为图1所示的编码器132。如图4所示,编码器400包括了一桶式移位器模块410、一第一计算电路420、一调整电路430、一循环卷积计算电路440、一补偿电路442以及一第二计算电路450。在本实施例中,桶式移位器模块410包括了多个桶式移位器411、412、413、414、415以及多个累加电路417_1~417_5;第一计算电路420两个桶式移位器模块422、424;调整电路430包括了多个累加电路432、434、436、438;以及第二计算电路350包括了一桶式移位器模块452以及一输出电路424。在本实施例中,编码器400将来自主装置130的一笔数据分为多个数据区块(在本实施例中所述多个数据区块为43个数据区块DB_1~DB_43),并将所述多个数据区块DB_1~DB_43进行编码后产生多个校验码区块(在本实施例中所述多个校验码区块为5个校验码区块PB_1~PB_5)。需注意的是,上述的一个数据区块与一个校验码区块的大小是相同的,且数据区块的大小可以由设计者所自行决定,例如192*192个位。
在编码器400的操作中,首先,桶式移位器模块410将数据区块DB_1~DB_43进行处理以产生多个局部校验码(partial parity)区块PPB_1~PPB_5。具体来说,桶式移位器411可以分别对数据区块DB_1~DB_43进行移位操作,并通过累加电路417_1来将43个移位后数据区块进行相加来得到局部校验码区块PPB_1;桶式移位器412可以分别对数据区块DB_1~DB_43进行移位操作,并通过累加电路417_2来将43个移位后数据区块进行相加来得到局部校验码区块PPB_2;类似地,桶式移位器413、414、415可以分别对数据区块DB_1~DB_43进行移位操作,并通过累加电路417_3、417_4、417_5来将43个移位后数据区块进行相加来分别得到局部校验码区块PPB_3、PPB_4、PPB_5。
局部校验码区块PPB_1~PPB_5会被分两个部分以进行不同的处理,其中第一部分包括了四个局部校验码区块PPB_1~PPB_4,而第二部分包括了一个局部校验码区块PPB_5。在第一计算电路420的操作中,桶式移位器模块422对局部校验码区块PPB_5进行移位操作以产生一中间区块,且桶式移位器模块424对所述中间区块进行处理以产生四个计算结果区块。
调整电路430中的累加电路432、434、436、438将桶式移位器模块424所产生的四个计算结果区块分别与局部校验码区块PPB_1~PPB_4进行相加,以产生调整后的局部校验码区块。
接着,循环卷积计算电路440对调整后的第一部分的局部校验码区块(即PPB_1~PPB_4)进行循环卷积操作,并通过补偿电路442以产生校验码区块PB_1~PB_4。需注意的是,补偿电路442为一可移除的组件,也就是说,在不需要补偿的情形下可以自编码器400中移除而不会影响到其操作。
接着,在第二计算电路450的操作中,桶式移位器模块452对校验码区块PB_1~PB_4进行处理以产生一个处理后区块;输出电路454将桶式移位器模块422所产生的中间区块与桶式移位器模块452所产生的输出区块进行相加,以产生校验码区块PB_5。
在产生校验码区块PB_1~PB_5之后,编码器会将数据区块DB_1~DB_43连同校验码区块PB_1~PB_5一起与校验码检查矩阵相乘以判断校验码区块PB_1~PB_5是否正确。若是正确,闪存控制器110便会将数据区块DB_1~DB_43连同校验码区块PB_1~PB_5一起写入到闪存模块120的一区块的一数据页中。
在图4所示的电路架构中,桶式移位器模块410可以被比对为图2所示的矩阵M,而第一计算电路420、调整电路430、循环卷积计算电路440、补偿电路442以及第二计算电路450则是用来产生一个类似于图2所示的反矩阵K-1的内容,以在无法确实找到反矩阵K-1的情形下可以产生校验码区块PB_1~PB_5。此外,编码器400仅具有一个循环卷积计算电路440,其中循环卷积计算电路440为4*4个循环矩阵/区块相乘。因此,由于编码器400只需进行16次循环矩阵/区块相乘操作便可以产生五个校验码区块,故可以确实降低编码器400的硬件成本。
另一方面,若是校验码检查矩阵中的矩阵K具有某一种特定的型式,例如矩阵K的最后一行与最后一列的数值均为“0”时,图4所示的编码器400中的组件可以进一步地减少,例如以下所述的图5所示的实施例。
参考图5,其为根据本发明另一实施例的编码器500的示意图,其中编码器500可以作为图1所示的编码器132。如图5所示,编码器500包括了一桶式移位器模块510、一调整电路530、一循环卷积计算电路540、一补偿电路542以及一计算电路550。在本实施例中,桶式移位器模块510包括了多个桶式移位器511、512、513、514、515以及多个累加电路517_1~517_5。在本实施例中,编码器500将来自主装置130的一笔数据分为多个数据区块(在本实施例中所述多个数据区块为43个数据区块DB_1~DB_43),并将所述多个数据区块DB_1~DB_43进行编码后产生多个校验码区块(在本实施例中所述多个校验码区块为5个校验码区块PB_1~PB_5)。需注意的是,上述的一个数据区块与一个校验码区块的大小是相同的,且数据区块的大小可以由设计者所自行决定,例如192*192个位。
在编码器500的操作中,首先,桶式移位器模块510将数据区块DB_1~DB_43进行处理以产生多个局部校验码(partial parity)区块PPB_1~PPB_5。具体来说,桶式移位器511可以分别对数据区块DB_1~DB_43进行移位操作,并通过累加电路517_1来将43个移位后数据区块进行相加来得到局部校验码区块PPB_1;桶式移位器512可以分别对数据区块DB_1~DB_43进行移位操作,并通过累加电路517_2来将43个移位后数据区块进行相加来得到局部校验码区块PPB_2;类似地,桶式移位器513、514、515可以分别对数据区块DB_1~DB_43进行移位操作,并通过累加电路517_3、517_4、517_5来将43个移位后数据区块进行相加来分别得到局部校验码区块PPB_3、PPB_4、PPB_5。
局部校验码区块PPB_1~PPB_5会被分两个部分以进行不同的处理,其中第一部分包括了四个局部校验码区块PPB_1~PPB_4,而第二部分包括了一个局部校验码区块PPB_5。调整电路530中的累加电路532、534、536、538分别将局部校验码区块PPB_5的内容加入到局部校验码区块PPB_1~PPB_4中,以产生调整后的局部校验码区块。
接着,循环卷积计算电路540对调整后的第一部分的局部校验码区块(即PPB_1~PPB_4)进行循环卷积操作,并通过补偿电路542以产生校验码区块PB_1~PB_4。需注意的是,补偿电路542为一可移除的组件,也就是说,在不需要补偿的情形下可以自编码器500中移除而不会影响到其操作。
接着,计算电路550将局部校验码区块PPB_5与校验码区块PB_1~PB_4进行相加,以产生校验码区块PB_5。
在产生校验码区块PB_1~PB_5之后,编码器会将数据区块DB_1~DB_43连同校验码区块PB_1~PB_5一起与校验码检查矩阵相乘以判断校验码区块PB_1~PB_5是否正确。若是正确,闪存控制器110便会将数据区块DB_1~DB_43连同校验码区块PB_1~PB_5一起写入到闪存模块120的一区块的一数据页中。
在图5所示的电路架构中,桶式移位器模块510可以被比对为图2所示的矩阵M,而调整电路530、循环卷积计算电路540、补偿电路542以及计算电路550则是用来产生一个类似于图2所示的反矩阵K-1的内容,以在无法确实找到反矩阵K-1的情形下可以产生校验码区块PB_1~PB_5。此外,编码器500仅具有一个循环卷积计算电路540,其中循环卷积计算电路540为4*4个循环矩阵/区块相乘。因此,由于编码器500只需进行16次循环矩阵/区块相乘操作便可以产生五个校验码区块,故可以确实降低编码器500的硬件成本。另一方面,相较于图4的实施例,由于少了第一计算电路420以及第二计算电路450中的部分组件,故可以进一步地降低成本。
参考图6,其为根据本发明一实施例的一种编码方法的流程图,同时参考图1~6及以上实施例所公开的内容,编码方法的流程如下所述。
步骤600:流程开始。
步骤602:将多个数据区块进行处理以产生多个局部校验码区块,其中所述多个局部校验码区块包括了一第一部分及一第二部分。
步骤604:使用一第一计算电路以根据所述第二部分以产生一第一计算结果。
步骤606:根据所述第一计算结果来调整所述多个局部校验码区块的所述第一部分,以产生一调整后第一部分。
步骤608:对所述调整后第一部分进行循环卷积操作,以产生一第一部分的校验码区块。
步骤610:使用一第二计算电路以至少根据所述第一部分的校验码区块来产生一第二部分的校验码区块,其中所述第一部分的校验码区块及所述第二部分的校验码区块是作为对所述多个数据区块进行编码后所产生的多个校验码区块。
简要归纳本发明,在本发明的编码器中,其通过将局部校验码区块分为两个部分来进行操作,以在可以确实产生校验码区块的情形下降低编码器中的循环卷积计算所需要的硬件。因此,本发明的编码器可以避免现有技术中所述的硬件成本大幅增加的情形。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种设置在一闪存控制器中的编码器,其特征在于,包括有:
一第一桶式移位器模块,用于将多个数据区块进行处理以产生多个局部校验码区块,其中所述多个局部校验码区块包括了一第一部分及一第二部分;
一第一计算电路,耦接于所述第一桶式移位器模块,用于根据所述第二部分以产生一第一计算结果;
一调整电路,用于根据所述第一计算结果来调整所述多个局部校验码区块的所述第一部分,以产生一调整后第一部分;
一第一循环卷积计算电路,耦接于所述调整电路,用于对所述调整后第一部分进行循环卷积操作,以产生一第一部分的校验码区块;以及
一第二计算电路,耦接于所述第一循环卷积计算电路,用于至少根据所述第一部分的校验码区块以产生一第二部分的校验码区块;
其中所述第一部分的校验码区块及所述第二部分的校验码区块是作为所述编码器针对所述多个数据区块所产生的多个校验码区块。
2.如权利要求1所述的编码器,其特征在于,所述第二部分包括了至少两个局部校验码区块,且所述第一计算电路与所述第二计算电路均包括了循环卷积操作。
3.如权利要求2所述的编码器,其特征在于,所述第一部分包括了C1个局部校验码区块,所述第二部分包括了C2个局部校验码区块,且所述第一计算电路包括有:
一第二循环卷积计算电路,用于将C2个局部校验码区块进行循环卷积操作以产生C2个中间区块;以及
一第二桶式移位器模块,耦接于所述第二循环卷积计算电路,用于对所述C2个中间区块进行处理以产生C1个计算结果区块以作为所述第一计算结果;
其中所述调整电路将所述C1个计算结果区块分别与所述C1个局部校验码区块进行相加以产生所述调整后第一部分。
4.如权利要求3所述的编码器,其特征在于,所述第一部分的校验码区块包括了C1个校验码区块,且所述第二计算电路包括有:
一第三桶式移位器模块,用于对所述C1个校验码区块进行处理以产生C2个处理后区块;
一第三循环卷积计算电路,耦接于所述第三桶式移位器模块,用于将C2个处理后区块进行循环卷积操作以产生C2个输出区块;
一输出电路,耦接于所述第三循环卷积计算电路,用于根据所述C2个中间区块来调整所述C2个输出区块,以产生C2个校验码区块来作为所述第二部分的校验码区块。
5.如权利要求1所述的编码器,其特征在于,所述第一计算电路以及所述第二计算电路均不包括任何的循环卷积操作。
6.一种设置在一闪存控制器中的编码器,其特征在于,包括有:
一桶式移位器模块,用于将多个数据区块进行处理以产生多个局部校验码区块,其中所述多个局部校验码区块包括了一第一部分及一第二部分;
一调整电路,用于根据所述第二部分来调整所述多个局部校验码区块的所述第一部分,以产生一调整后第一部分;
一循环卷积计算电路,耦接于所述调整电路,用于对所述调整后第一部分进行循环卷积操作,以产生一第一部分的校验码区块;以及
一计算电路,耦接于所述循环卷积计算电路,用于至少根据所述第一部分的校验码区块以产生一第二部分的校验码区块;
其中所述第一部分的校验码区块及所述第二部分的校验码区块是作为所述编码器针对所述多个数据区块所产生的多个校验码区块。
CN202011074485.0A 2017-11-27 2018-05-14 闪存控制器和设置在闪存控制器中的编码器 Active CN112435702B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011074485.0A CN112435702B (zh) 2017-11-27 2018-05-14 闪存控制器和设置在闪存控制器中的编码器

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
TW106141115 2017-11-27
TW106141115A TWI643201B (zh) 2017-11-27 2017-11-27 編碼器及相關的編碼方法與快閃記憶體控制器
CN201810455384.4A CN109841252B (zh) 2017-11-27 2018-05-14 闪存控制器和设置在闪存控制器中的编码器和编码器
CN202011074485.0A CN112435702B (zh) 2017-11-27 2018-05-14 闪存控制器和设置在闪存控制器中的编码器

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201810455384.4A Division CN109841252B (zh) 2017-11-27 2018-05-14 闪存控制器和设置在闪存控制器中的编码器和编码器

Publications (2)

Publication Number Publication Date
CN112435702A true CN112435702A (zh) 2021-03-02
CN112435702B CN112435702B (zh) 2024-01-19

Family

ID=65431592

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202011074485.0A Active CN112435702B (zh) 2017-11-27 2018-05-14 闪存控制器和设置在闪存控制器中的编码器
CN201810455384.4A Active CN109841252B (zh) 2017-11-27 2018-05-14 闪存控制器和设置在闪存控制器中的编码器和编码器

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201810455384.4A Active CN109841252B (zh) 2017-11-27 2018-05-14 闪存控制器和设置在闪存控制器中的编码器和编码器

Country Status (3)

Country Link
US (2) US10523243B2 (zh)
CN (2) CN112435702B (zh)
TW (1) TWI643201B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10354717B1 (en) * 2018-05-10 2019-07-16 Micron Technology, Inc. Reduced shifter memory system
TWI804347B (zh) * 2022-06-16 2023-06-01 慧榮科技股份有限公司 編碼器與快閃記憶體控制器

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101183565A (zh) * 2007-12-12 2008-05-21 深圳市硅格半导体有限公司 存储介质中数据校验方法
KR20080052832A (ko) * 2006-12-08 2008-06-12 한국전자통신연구원 준순환 저밀도 패리티 검사 부호화 방법 및 장치
CN101868830A (zh) * 2007-11-21 2010-10-20 美光科技公司 容错非易失性集成电路存储器
CN103812510A (zh) * 2012-11-15 2014-05-21 中兴通讯股份有限公司 译码方法及装置
CN105280238A (zh) * 2014-06-17 2016-01-27 慧荣科技股份有限公司 用来控制一记忆装置的方法以及记忆装置与控制器
CN107391026A (zh) * 2016-04-27 2017-11-24 慧荣科技股份有限公司 闪存装置及闪存存储管理方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1256005A (zh) * 1998-01-21 2000-06-07 索尼株式会社 编码方法和存储装置
CN1271791C (zh) * 2001-01-18 2006-08-23 深圳市中兴集成电路设计有限责任公司 Turbo译码器及其实现方法
JP4112849B2 (ja) * 2001-11-21 2008-07-02 株式会社東芝 半導体記憶装置
GB2387089B (en) * 2002-03-28 2004-12-22 Matsushita Comm Ind Uk Ltd Improved carryout word calculation for cyclic shift registers
US20040213354A1 (en) * 2003-04-28 2004-10-28 Jones William W. Mixed domain cancellation
KR20110089187A (ko) * 2006-07-28 2011-08-04 콸콤 인코포레이티드 플래시 타입 시그널링을 위한 데이타 인코딩 방법 및 장치
CN101192833B (zh) * 2006-11-28 2011-12-07 华为技术有限公司 一种低密度校验码ldpc并行编码的装置及方法
US8281214B2 (en) * 2008-10-17 2012-10-02 Lsi Corporation Programmable quasi-cyclic low-density parity check (QC LDPC) encoder for read channel
US8175012B2 (en) * 2009-03-26 2012-05-08 Mediatek Inc. Decoding/encoding method for booting from a NAND flash and system thereof
US8458574B2 (en) * 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US9141471B2 (en) * 2011-07-27 2015-09-22 Panasonic Intellectual Property Corporation Of America Encoding method, decoding method
TWI500038B (zh) * 2012-09-28 2015-09-11 Univ Nat Chiao Tung 記憶體系統之全套平行編碼方法與全套平行解碼方法
RU2014104571A (ru) * 2014-02-10 2015-08-20 ЭлЭсАй Корпорейшн Системы и способы для эффективного с точки зрения площади кодирования данных
CN104464822B (zh) * 2014-11-21 2016-04-20 湖南大学 一种基于闪存错误区间的ldpc纠错编码方法
TWI560718B (en) 2015-03-27 2016-12-01 Silicon Motion Inc Data storage device and encoding method thereof
CN107391296B (zh) * 2016-04-27 2020-11-06 慧荣科技股份有限公司 存取闪存模块的方法及相关的闪存控制器与记忆装置
US10075192B2 (en) * 2016-05-09 2018-09-11 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for data processing with folded parity sector

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080052832A (ko) * 2006-12-08 2008-06-12 한국전자통신연구원 준순환 저밀도 패리티 검사 부호화 방법 및 장치
CN101868830A (zh) * 2007-11-21 2010-10-20 美光科技公司 容错非易失性集成电路存储器
CN101183565A (zh) * 2007-12-12 2008-05-21 深圳市硅格半导体有限公司 存储介质中数据校验方法
CN103812510A (zh) * 2012-11-15 2014-05-21 中兴通讯股份有限公司 译码方法及装置
CN105280238A (zh) * 2014-06-17 2016-01-27 慧荣科技股份有限公司 用来控制一记忆装置的方法以及记忆装置与控制器
CN107391026A (zh) * 2016-04-27 2017-11-24 慧荣科技股份有限公司 闪存装置及闪存存储管理方法

Also Published As

Publication number Publication date
CN109841252A (zh) 2019-06-04
TW201926356A (zh) 2019-07-01
US20200091939A1 (en) 2020-03-19
CN112435702B (zh) 2024-01-19
US10958292B2 (en) 2021-03-23
CN109841252B (zh) 2020-11-03
US20190165817A1 (en) 2019-05-30
TWI643201B (zh) 2018-12-01
US10523243B2 (en) 2019-12-31

Similar Documents

Publication Publication Date Title
US10938417B2 (en) Flash memory controller and encoding circuit and decoding circuit within flash memory controller
CN108268337B (zh) 于记忆装置中进行数据管理的方法、记忆装置及其控制器
KR102068030B1 (ko) 메모리 컨트롤러 및 그 동작방법
CN109841252B (zh) 闪存控制器和设置在闪存控制器中的编码器和编码器
US10291258B2 (en) Error correcting code for correcting single symbol errors and detecting double bit errors
TWI665678B (zh) 編碼器及相關的編碼方法與快閃記憶體控制器
CN111049529B (zh) 编码器及相关的编码方法与闪存
KR20200135881A (ko) 점진적 길이 에러 제어 코드
TWI804347B (zh) 編碼器與快閃記憶體控制器
TWI711279B (zh) 編碼器及相關的編碼方法與快閃記憶體控制器
CN110389850B (zh) 译码方法和相关的闪存控制器与电子装置
TWI782341B (zh) 快閃記憶體控制器及其中的編碼電路
US20230412190A1 (en) Encoder and decoder
TWI759672B (zh) 解碼方法及相關的快閃記憶體控制器與電子裝置
CN113590377A (zh) 译码装置、方法、存储介质及计算机设备
CN117971119A (zh) 两段数据的crc合并方法、装置、设备及介质
JP2013201482A (ja) チェンサーチ回路、復号器、記憶装置およびチェンサーチ方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant