CN113411086A - Ldpc解码器及其操作方法 - Google Patents
Ldpc解码器及其操作方法 Download PDFInfo
- Publication number
- CN113411086A CN113411086A CN202011102696.0A CN202011102696A CN113411086A CN 113411086 A CN113411086 A CN 113411086A CN 202011102696 A CN202011102696 A CN 202011102696A CN 113411086 A CN113411086 A CN 113411086A
- Authority
- CN
- China
- Prior art keywords
- variable node
- variable
- nodes
- reliability
- ldpc
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/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
- H03M13/1105—Decoding
- H03M13/1108—Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
-
- 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
- H03M13/1105—Decoding
-
- 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
- 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/1068—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 in sector programmable memories, e.g. flash disk
-
- 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
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- 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
- H03M13/1105—Decoding
- H03M13/1128—Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
-
- 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
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
- H03M13/114—Shuffled, staggered, layered or turbo decoding schedules
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3738—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
- H03M13/3753—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding using iteration stopping criteria
-
- 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/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- 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/63—Joint error correction and other techniques
- H03M13/6325—Error control coding in combination with demodulation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Error Detection And Correction (AREA)
Abstract
本公开的实施例涉及LDPC解码器及其操作方法。一种低密度奇偶校验(LDPC)解码器的操作方法,该操作方法包括:在最初将码字更新到变量节点;确定多个变量节点组被更新的更新顺序,该更新顺序基于变量节点组中的每个变量节点组的可靠性而被确定;执行局部迭代,直到所有变量节点组基于更新顺序被更新为止,该局部迭代包括:与在变量节点组之中的选择变量节点组相关联的校验节点的更新,以及基于更新后的校验节点对选择变量节点组的更新;基于更新后的变量节点和奇偶校验矩阵的运算,执行校正子校验以确定LDPC解码是否成功。
Description
相关申请的交叉引用
本申请要求于2020年3月17日提交的韩国专利申请第 10-2020-0032482的优先权,其通过整体引用并入本文。
技术领域
各个实施例涉及一种低密度奇偶校验(LDPC)解码器及其操作方法。
背景技术
通常,存在两种类型的半导体存储器设备:易失性存储器设备(诸如,动态随机存取存储器(DRAM)和静态RAM(SRAM));以及非易失性存储器设备(诸如,只读存储器(ROM)、掩码ROM(MROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电EPROM (EEPROM)、铁磁RAM(FRAM)、相变RAM(PRAM)、磁RAM (MRAM)、电阻RAM(RRAM)和闪速存储器)。
易失性存储器设备在其电力被中断时丢失其存储的数据,而非易失性存储器设备即使在没有电力的情况下,也会保留其存储的数据。非易失性闪速存储器设备由于其高编程速度、低功耗和大数据存储容量而被广泛用作计算机系统中的存储介质。
在非易失性存储器设备中,尤其是在闪速存储器设备中,每个存储器单元的数据状态取决于存储器单元可以编程的比特数。每单元存储1比特数据的存储器单元被称为单比特单元或单级单元(SLC)。每单元存储多比特数据(即,2比特或更多比特数据)的存储器单元被称为多比特单元、多级单元(MLC)或多状态单元。MLC对于高度集成是有利的。然而,随着在每个存储器单元中所编程的比特数增加,可靠性降低并且读取失败率增加。
例如,当k个比特在存储器单元中待被编程时,在存储器单元中形成2k个阈值电压中的一个阈值电压。由于存储器单元的电特性之间的微小差异,针对相同数据而被编程的存储器单元的阈值电压形成阈值电压分布。阈值电压分布分别对应于与k比特信息相对应的2k个数据值。
然而,可用于阈值电压分布的电压窗口是有限的。因此,随着值 k增加,阈值电压分布之间的距离减小,并且相邻阈值电压分布可能重叠。当相邻阈值电压分布重叠时,读取的数据可能包括错误比特。
图1图示了示意性图示3比特MLC(即,三级单元(TLC))非易失性存储器设备的编程状态和擦除状态的阈值电压分布。
图2图示了示意性图示由于3比特MLC非易失性存储器设备的特性劣化而导致的编程状态和擦除状态的阈值电压分布。
在MLC非易失性存储器设备(例如,能够将k比特数据存储在单个存储器单元中的MLC闪速存储器设备)中,存储器单元可以具有2k种阈值电压分布中的一种阈值电压分布。例如,3比特MLC具有8种阈值电压分布中的一种阈值电压分布。
由于存储器单元之间的特性差异,针对相同数据而被编程的存储器单元的阈值电压形成阈值电压分布。在3比特MLC非易失性存储器设备中,如在图1中所图示的,阈值电压分布与包括7种编程状态‘P1’至‘P7’和擦除状态‘E’的数据状态对应地形成。图1示出了阈值电压分布不重叠并且在其间具有充分的读取电压裕度的理想情况。参照图2的闪速存储器示例,存储器单元可能经历电荷损失,其中,随着时间的流逝,在浮栅或隧道氧化膜处捕获到的电子被放电。当隧道氧化物膜由于迭代编程和擦除操作而劣化时,这种电荷损失会加速。电荷损失导致存储器单元的阈值电压降低。例如,如在图2中所图示的,可能由于电荷损失而使阈值电压分布向左移位。
进一步地,编程干扰、擦除干扰和/或返回模式依赖性会导致阈值电压增加。如在图2中所图示的,随着存储器单元的特性恶化,相邻阈值电压分布会重叠。
当相邻阈值电压分布重叠时,响应于将特定读取电压施加到所选择的字线而生成的读取数据可能包括大量错误。例如,当存储器单元的感测状态根据将读取电压Vread3施加到所选择的字线而开启时,确定存储器单元具有第二编程状态‘P2’。当存储器单元的感测状态根据将Vread3施加到所选择的字线而关闭时,确定存储器单元具有第三编程状态‘P3’。然而,当相邻阈值电压分布重叠时,具有第三编程状态‘P3’的存储器单元可能被错误地确定为具有第二编程状态‘P2’。简而言之,当相邻阈值电压分布如在图2中所图示的那样重叠时,读取的数据可能会包括大量错误。
因此,需要一种用于精确地读取半导体存储器设备的存储器单元中所存储的数据的方法。
发明内容
各个实施例针对一种能够准确且快速读取存储器单元中所存储的数据的低密度奇偶校验(LDPC)解码器,以及操作该低密度奇偶校验(LDPC)解码器的方法。
根据本公开的实施例,可以准确且快速读取半导体存储器设备的存储器单元中所存储的数据。
根据实施例,一种低密度奇偶校验(LDPC)解码器的操作方法,该操作方法包括:在最初将码字更新到变量节点;确定多个变量节点组被更新的更新顺序,该更新顺序基于变量节点组中的每个变量节点组的可靠性而被确定;执行局部迭代,该局部迭代包括:更新与变量节点组中的选择变量节点组相关联的校验节点,以及基于更新后的校验节点来更新选择变量节点组,直到所有变量节点组基于更新顺序被更新为止;基于更新后的变量节点和奇偶校验矩阵的运算,执行校正子校验以确定LDPC解码是否成功;并且其中,确定更新顺序、执行局部迭代和执行校正子校验的每个周期表示全局迭代,重复该全局迭代,直到解码成功或所执行的全局迭代的数目达到最大数目为止。
根据另一实施例,一种LDPC解码器包括:主解码器,被配置为在最初将码字更新到变量节点;以及调度器,被配置为确定多个变量节点组被更新的更新顺序,该更新顺序基于变量节点组中的每个变量节点组的可靠性而被确定,其中主解码器执行局部迭代,该局部迭代包括:更新与变量节点组中的选择变量节点组相关联的校验节点,以及基于更新后的校验节点来更新选择变量节点组,直到所有变量节点组基于更新顺序被更新为止;并且基于更新后的变量节点和奇偶校验矩阵的运算,执行校正子校验以确定LDPC解码是否成功,并且其中,确定更新顺序、执行局部迭代和执行校正子校验的每个周期表示全局迭代,LDPC重复该全局迭代,直到解码成功或所执行的全局迭代的数目达到最大数目为止。
根据实施例,LDPC解码设备包括:调度器,被配置为基于错误信息对多个变量节点进行分组以生成多个变量节点组,并且基于与每个变量节点组相关联的错误的数目来确定对变量节点组进行解码的顺序,使得具有较高错误数目的变量节点组,先于具有较少错误数目的变量节点组而被解码;以及解码器,被配置为基于解码顺序对多个变量节点组进行解码。
附图说明
图1是图示3比特多级单元(MLC)非易失性存储器设备的编程状态和擦除状态的阈值电压分布图。
图2是图示由于3比特多级单元非易失性存储器设备的特性劣化而可能改变的编程状态和擦除状态的阈值电压分布图。
图3是图示根据本公开实施例的半导体存储器系统的框图。
图4A是图示半导体存储器系统(诸如,在图3中所图示的半导体存储器系统)的详细框图。
图4B是图示存储块(诸如,在图4A中所图示的存储块)的框图。
图5是图示存储器控制器(诸如,在图4A中所图示的存储器控制器)的操作的流程图。
图6A是图示由Tanner图表示的LDPC解码的示意图。
图6B是图示LDPC码结构的示意图。
图6C是图示根据LDPC解码的校正子校验过程的示意图。
图7A是图示作为图5中所图示的软判决读取操作示例的2比特软判决读取操作的示意图。
图7B是图示作为图5中所图示的软判决读取操作示例的3比特软判决读取操作示意图。
图8是图示根据本公开实施例的LDPC解码器的框图。
图9是图示根据本公开实施例的LDPC解码器(诸如,在图8中所图示的LDPC解码器)的操作的流程图。
图10A和图10B是用于说明根据本公开实施例的LDPC解码器的操作的Tanner图。
具体实施方式
在下文中,参照附图描述了本公开的实施例。然而,可以以其他不同的形式来实现本发明。因此,本发明不限于下面所公开的实施例,也不限于本文中的任何具体细节。提供所公开的实施例以使本领域的技术人员能够完全理解本公开的范围,以及实践由本申请的权利要求所限定的本发明。同样,贯穿本说明书,对“实施例”、“另一实施例”等的引用不一定仅针对一个实施例,并且对任何这种短语的不同引用不一定针对(多个)相同的实施例。当在本文中使用时,术语“实施例”不一定是指所有实施例。
现在参照图3至图5,提供了根据本发明实施例的半导体存储器系统。半导体存储器系统10可以包括可操作地耦合至存储器控制器 100的半导体存储器设备200。
半导体存储器设备200可以在存储器控制器100的控制下执行擦除操作、编程操作和读取操作中的一个或多个。半导体存储器设备200 可以通过多条输入/输出线,从存储器控制器100接收命令CMD、地址ADDR和数据DATA。半导体存储器设备200可以通过电力线,从存储器控制器100接收电力PWR,并且通过控制线从存储器控制器接收控制信号CTRL。该控制信号CTRL可以包括命令锁存使能(CLE) 信号、地址锁存使能(ALE)信号、芯片使能(CE)信号、写使能(WE) 信号和读使能(RE)信号。
存储器控制器100可以控制半导体存储器设备200的整体操作。存储器控制器100可以包括用于纠正错误比特的低密度奇偶校验 (LDPC)组件130。LDPC组件130可以包括LDPC编码器131和 LDPC解码器133。
LDPC编码器131可以对待被编程到半导体存储器设备200中的数据执行纠错编码,包括向数据添加奇偶校验位。具有奇偶校验位的被编码数据可以被存储在半导体存储器设备200中。
LDPC解码器133可以对从半导体存储器设备200读取的数据执行纠错解码。LDPC解码器133可以确定纠错解码是否成功,并且可以基于确定结果输出指令信号。LDPC解码器133可以使用由LDPC 编码操作生成的奇偶校验位来纠正数据的错误比特。
当错误比特的数目超过LDPC组件130的纠错能力时,LDPC组件130不能纠正错误比特。在这种情况下,LDPC组件130可以生成纠错失败信号。
LDPC组件130可以通过低密度奇偶校验(LDPC)码来纠正错误。 LDPC组件130可以包括用于与本文中的教导一致的适当纠错的任何和所有电路、系统和/或设备。LDPC码可以是二进制LDPC码或非二进制LDPC码。
LDPC组件130可以使用硬判决读取数据和/或软判决读取数据,来执行错误比特纠正操作。在实施例中,LDPC组件130可以使用软判决读取数据来执行错误比特纠正操作。
存储器控制器100和半导体存储器设备200可以被集成在单个半导体设备中。例如,存储器控制器100和半导体存储器设备200可以被集成在诸如固态驱动器(SSD)等单个半导体设备中。固态驱动器可以包括用于将数据存储在半导体存储器中的存储设备。当半导体存储器系统10是SSD时,可以显著提高耦合至半导体存储器系统10 的主机(未示出)的操作速度。
在另一实施例中,存储控制器100和半导体存储器设备200可以被集成在单个半导体设备中,诸如,存储器卡,诸如,个人计算机存储器卡国际协会(PCMCIA)的PC卡、紧凑型闪存(CF)卡、智能媒体(SM)卡、记忆棒、多媒体卡(MMC)、减小尺寸的多媒体卡 (RS-MMC)、微小尺寸版本的MMC(MMCmicro)、安全数字(SD) 卡、迷你安全数字(miniSD)卡、微型安全数字(microSD)卡、安全数字高容量(SDHC)和/或通用闪存存储装置(UFS)。
对于另一示例,半导体存储器系统10可以被提供为以下各种元件中的一个元件,各种元件包括:电子设备,诸如,计算机、超移动 PC(UMPC)、工作站、上网本计算机、个人数字助理(PDA)、便携式计算机、网络平板PC、平板计算机、无线电话、移动电话、智能电话、电子书阅读器、便携式多媒体播放器(PMP)、便携式游戏设备、导航设备、黑匣子、数码相机、数字多媒体广播(DMB)播放器、三维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、数据中心的存储设备、能够在无线环境中接收和传输信息的设备、家庭网络的一个电子设备、计算机网络的一个电子设备、远程信息处理网络的一个电子设备、射频识别(RFID)设备,或者计算系统的各种元件中的一个元件。
参照图4A,存储器控制器100可以包括存储装置110、中央处理单元(CPU)120、LDPC组件130、主机接口(I/F)140、存储器接口150和系统总线160。
存储装置110可以操作为CPU 120的工作存储器。
主机接口140可以通过各种接口协议中的一个或多个接口协议来与主机进行通信,诸如,通用串行总线(USB)、多媒体卡(MMC)、快速外围组件互连(PCI-e或PCIe)、小型计算机系统接口(SCSI)、串行附接的SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、增强型小型磁盘接口(ESDI)和/或集成驱动电子设备(IDE)。
LDPC组件130可以检测并且纠正从半导体存储器设备200读取的数据中的错误。存储器接口150可以与半导体存储器设备200接口连接。即使图4A示例性地示出了包括LDPC编码器131和LDPC解码器133的LDPC组件130,LDPC编码器131和LDPC解码器133 也可以被实现为不同且独立的组件。CPU 120可以执行各种控制操作。
在实施例中,在编程操作期间,LDPC组件130可以对待被编程到半导体存储器设备200的原始数据执行LDPC编码操作。在读取操作期间,LDPC组件130可以对半导体存储器设备200中所存储的经 LDPC编码的数据或码字执行LDPC解码操作。
原始数据是在由LDPC组件130在编程操作期间进行编码之前从主机接收到的数据。经LDPC编码的数据被存储在半导体存储器设备 200中。然后,LDPC组件130可以通过对半导体存储器设备200中所存储的经LDPC编码的数据或码字执行LDPC解码操作,来还原或恢复原始数据。
如参照图5讨论的,对半导体存储器设备200中所存储的数据进行的读取操作可以包括硬判决读取操作(步骤S511)和软判决读取操作(步骤S531)。在硬判决读取操作期间,可以根据硬判决读取电压VHD从半导体存储器设备200读取数据。在软判决读取操作期间,可以根据软判决读取电压VSD从半导体存储器设备200读取数据,这些软判决读取电压VSD中的每个软判决读取电压VSD与硬判决读取电压VHD不同。例如,可以对根据硬判决读取电压VHD已被读取的存储器单元执行根据软判决读取电压VSD的附加读取操作。
在半导体存储器设备200中所存储的并且通过硬判决读取操作读取的经LDPC编码的数据或码字,可以由LDPC组件130解码回原始数据。
软判决读取操作包括:根据软判决读取电压VSD生成指示硬判决读取数据的可靠性的对数似然比(LLR)。
LDPC组件130可以执行LDPC解码操作以生成LLR。LDPC组件130可以通过LLR方法来检测并且纠正从半导体存储器设备200 读取的经LDPC编码的数据或码字的错误。
返回参照图4A,半导体存储器设备200可以包括存储器单元阵列210、控制电路220、电压供应电路230、电压传输电路240、读/ 写电路250和列选择电路260。
存储器单元阵列210可以包括多个存储块211。用户数据可以被存储在存储块211中。用户数据可以如上面描述的那样被编码。
参照图4B,存储块211可以包括分别耦合至位线BL0至BLm-1 的多个单元串221。每一列的单元串221可以包括一个或多个漏极选择晶体管DST和一个或多个源极选择晶体管SST。多个存储器单元或存储器单元晶体管可以被串联地耦合在选择晶体管DST和SST之间。在实施例中,存储器单元MC0至MCn-1中的每个存储器单元可以由在每个单元中存储多个比特的数据信息的多级单元(MLC)形成。单元串221可以分别电耦合至对应的位线BL0至BLm-1。
通过示例的方式,图4B图示了包括NAND型闪速存储器单元的存储块211。然而,存储块211不限于NAND闪速存储器。例如,存储块211可以包括NOR型闪速存储器、组合了两种或更多种类型的存储器单元的混合闪速存储器,以及将控制器嵌入在存储器芯片内部的1-NAND闪速存储器。半导体设备的操作特性可以被应用于电荷存储层由绝缘层形成的电荷捕获闪存(CTF),以及电荷存储层由导电浮栅形成的闪速存储器。
返回参照图4A,控制电路220可以控制半导体存储器设备200 的整体操作,包括编程操作、擦除操作和读取操作以及与之相关的操作。
电压供应电路230可以根据操作模式,向相应字线提供字线电压 (例如,编程电压、读取电压和通过电压),并且可以提供待被供应到块体(例如,形成有存储器单元的阱区域)的电压。电压供应电路 230的电压生成操作可以在控制电路220的控制下被执行。
电压供应电路230可以产生用于生成多个读取数据的多个变量读取电压。
电压传输电路240可以选择存储块211或存储器单元阵列210的扇区中的一个,并且可以在控制电路220的控制下选择所选择的存储块中的一条字线。电压传输电路240可以在控制电路220的控制下将从电压供应电路230生成的字线电压,提供至所选择的字线或未被选择的字线。
读/写电路250可以由控制电路220控制,并且可以根据操作模式而用作感测放大器或写入驱动器。在验证/正常读取操作期间,读/写电路250可以操作为用于从存储器单元阵列210读取数据的感测放大器。在正常读取操作期间,列选择单元260可以基于列地址信息,将从读/写电路250读取的数据输出到外部,例如,输出到存储器控制器 100。在验证读取操作期间,被读取的数据可以被提供至半导体存储器设备200中的通过/失败验证电路(未图示),该电路可以被用于确定存储器单元的编程操作是否成功。
在编程操作期间,读/写电路250可以操作为用于根据待存储器单元阵列210中所存储的数据驱动位线的写驱动器。在编程操作期间,读/写电路250可以从缓冲器(未图示)接收待被写入存储器单元阵列 210中的数据,并且可以根据输入数据驱动位线。为此,如在图4B 中所示出的,读/写电路250可以包括分别与列(或位线)或列对(或位线对)对应的多个页面缓冲器(PB)251。多个锁存器可以被包括在每个页面缓冲器251中。
参照图4A和图5,存储器控制器100的操作可以包括硬判决解码步骤S510,并且可以附加地包括软判决解码步骤S530。硬判决解码步骤S510和软判决解码步骤S530的目标数据、或在半导体存储器设备200中所存储的数据,可以是由LDPC组件130进行LDPC编码的经LDPC编码的数据或码字。
在实施例中,硬判决解码步骤S510可以包括用于固定长度的硬判决读取数据的硬判决LDPC解码操作,根据硬判决读取电压VHD,从存储块211的存储器单元读取该硬判决读取数据。硬判决解码步骤 S510可以包括步骤S511至S515。
在实施例中,软判决解码步骤S530可以包括用于硬判决读取数据的软判决LDPC解码操作:通过在硬判决LDPC解码操作最终失败时,根据接近硬判决读取电压VHD的软判决读取电压VSD,形成软判决读取数据。软判决解码步骤S530可以包括步骤S531至S535。
如上所述,在硬判决读取步骤的步骤S511中,可以根据硬判决读取电压VHD从半导体存储器设备200读取硬判决读取数据。存储器控制器100可以向半导体存储器设备200提供读取命令和地址。半导体存储器设备200可以响应于读取命令和地址而根据硬判决读取电压 VHD从半导体存储器设备200中读取硬判决读取数据。被读取的硬判决读取数据可以被提供至存储器控制器100。
在步骤S513中,执行第一纠错解码,该第一纠错解码可以是硬判决LDPC解码操作。LDPC组件130可以通过使用纠错码,对根据硬判决读取电压VHD从半导体存储器设备200读取的硬判决读取数据执行硬判决LDPC解码。
在步骤S515中,可以确定第一纠错解码(即,硬判决LDPC解码操作)成功还是失败。即,在步骤S515中,可以确定是否纠正了在步骤S513中对其执行硬判决LDPC解码操作的硬判决读取数据的错误。例如,存储器控制器100可以通过使用硬判决读取数据和奇偶校验矩阵来确定是否纠正了硬判决读取数据的错误。当奇偶校验矩阵和硬判决读取数据的结果是零矢量(‘0’)时,可以确定硬判决读取数据被纠正。另一方面,当奇偶校验矩阵和硬判决读取数据的结果不是零矢量(‘0’)时,可以确定硬判决读取数据未被纠正。
当作为步骤S515的确定结果确定硬判决读取数据被纠正时,可以在步骤S520中确定在步骤S511中根据硬判决读取电压VHD的读取操作成功,并且存储器控制器100的操作可以结束。在步骤S513中对其执行硬判决LDPC解码操作的硬判决读取数据现已是经纠错的数据,并且可以被提供到外部或被用于存储器控制器100中。
当作为步骤S515的确定结果确定硬判决读取数据未被纠正时,可以在步骤S530中执行第二纠错解码,该第二纠错解码可以是软判决解码。
如上所述,在软判决读取步骤的步骤S531中,可以根据硬判决读取电压VSD从半导体存储器设备200读取软判决读取数据。例如,可以对根据硬判决读取电压VHD被执行硬判决解码步骤S510的存储器单元,执行根据软判决读取电压VSD的附加读取操作。每个软判决读取电压VSD可以与硬判决读取电压VHD不同。
在步骤S533中,可以执行作为第二纠错解码的软判决LDPC解码操作。可以基于软判决读取数据执行软判决LDPC解码操作,该软判决读取数据包括对其执行硬判决LDPC解码操作的硬判决读取数据,以及根据软判决读取电压VSD从存储器单元读取的数据。硬判决读取电压VHD可以与任何软判决读取电压VSD不同。
对于半导体存储器设备200(即,TLC存储器设备),存储器单元MC0至MCn-1中的每个存储器单元可以属于以下阈值电压分布中的一种阈值电压分布:包括7种编程状态P1至P7以及1种擦除状态 E的阈值电压分布。
硬判决读取电压VHD可以具有在多种状态(即,E和P1至P7) 中的2种相邻状态之间的电压。每个软判决读取电压VSD可以具有与硬判决读取电压VHD不同的、在多种状态(即,E和P1至P7)中的两种相邻状态之间的电压。
根据硬判决读取电压VHD从存储器单元MC0至MCn-1读取的硬判决读取数据、和根据软判决读取电压VSD从存储器单元MC0至 MCn-1读取的软判决读取数据可以不同。例如,存储器单元MC0至 MCn-1之中可能存在尾部存储器单元,该尾部存储器单元具有高于或低于正常逻辑状态的阈值电压分布的阈值电压。根据硬判决读取电压 VHD从尾部存储器单元读取的硬判决读取数据、和根据软判决读取电压VSD从存储器单元MC0至MCn-1读取的软判决读取数据可以不同。当根据软判决读取电压VSD的附加读取操作以及根据硬判决读取电压VHD的读取操作被执行时,可以获得关于存储器单元MC0至MCn-1 的阈值电压的附加信息(即,有关尾部存储器单元的附加信息)或提供通过硬判决读取操作而读取的硬判决读取数据的可靠性的对数似然比(LLR)。
当获得附加信息时,如由LLR所指示的,存储器单元MC0至 MCn-1的数据属于第一状态(即,‘1’)或是第二状态(即,‘0’) 的概率会增加。即,LDPC解码操作的可靠性会提高。存储控制器100 可以基于根据硬判决读取电压VHD和软判决读取电压VSD读取的软判决读取数据,执行软判决LDPC解码操作。参照图7A和图7B描述硬判决读取电压VHD与软判决读取电压VSD之间的关系。
在步骤S535中,可以确定第二纠错解码(即,软判决LDPC解码操作)成功还是失败。即,在步骤S535中,可以确定是否纠正了在步骤S533对其执行软判决LDPC解码操作的软判决读取数据的错误。例如,存储器控制器100可以通过使用硬判决读取数据和奇偶校验矩阵,来确定软判决读取数据的错误是否被纠正。例如,当奇偶校验矩阵和硬判决读取数据的结果是零矢量(‘0’)时,可以确定对其执行软判决LDPC解码操作的软判决读取数据被纠正。另一方面,当奇偶校验矩阵和软判决读取数据的结果是零矢量(‘0’)时,可以确定对其执行软判决LDPC解码操作的软判决读取数据未被纠正。
在硬判决解码步骤S510期间的奇偶校验矩阵和硬判决读取数据的乘法,可以与在软判决解码步骤S530期间的奇偶校验矩阵和软判决读取数据的乘法相同。乘法可以是矩阵乘积。
当作为步骤S535的确定结果确定软判决读取数据被纠正时,可以在步骤S520中确定在步骤S531中根据软判决读取电压VSD的读取操作成功,并且存储器控制器100的操作可以结束。在步骤S533中对其执行软判决LDPC解码操作的软判决读取数据现已是经纠错的数据,并且可以被提供到外部或被用于存储器控制器100中。
当作为步骤S535的确定结果确定软判决读取数据未被纠正时,可以在步骤S540中确定对存储器单元MC0至MCn-1进行的读取操作最终失败,并且存储器控制器100可以结束读取操作。
图6A是图示使用Tanner图的LDPC解码操作的示意图。
图6B是图示LDPC码的示意图。
图6C是图示根据LDPC解码操作的校正子校验过程的示意图。
纠错码(ECC)通常被用于存储设备(或存储器系统)。在存储设备中发生的各种物理现象导致了噪声效应,该噪声效应破坏了在存储设备中所存储的信息。纠错编码方法可以被用于保护所存储的信息免于遭受这种错误。通过在将信息存储在存储器设备中之前,对信息进行编码来完成这一点。编码过程通过向信息添加冗余来将信息(比特序列)变换为码字。然后,可以使用该冗余以便通过解码过程来从可能遭到损坏的码字中恢复信息。
在迭代编码方法中,将代码构造为若干简单组成代码的串接,并且该代码基于迭代解码算法,通过在接收简单组成代码的解码器之间交换信息而被解码。通常,代码可以使用描述组成代码之间的互连的二分图或Tanner图来定义。在这种情况下,解码可以被视为迭代消息通过图的边缘。
迭代码可以包括LDPC码。LDPC码是由稀疏奇偶校验矩阵H定义的线性二进制块码。
参照图6A,LDPC码具有奇偶校验矩阵,在该奇偶校验矩阵中的每一行和每一列中1的数目非常小,并且其结构可以由包括校验节点 610、变量节点620和将校验节点610连接至变量节点620的边缘615 的Tanner图来定义。在校验节点处理之后从校验节点610传递至变量节点620的值表示校验节点消息615A。在可变节点处理之后从变量节点620传递至检验节点610的值表示变量节点消息615B。
可以基于‘和积’算法通过迭代解码来执行LDPC码的解码过程。可以基于诸如‘最小和’算法等次优消息传递算法来提供解码方法,该‘最小和’算法是和积算法的简化版本。
参照图6B,LDPC码的Tanner图包括表示LDPC码的奇偶校验方程的6个校验节点610、表示代码符号的12个变量节点620,以及表示校验节点610与变量节点620之间的关系的边缘615。每个边缘 615将校验节点610连接至变量节点620,该变量节点620对应于由校验节点610表示的奇偶校验方程中的代码符号。通过示例的方式,图6B图示了正则LDPC码,其中耦合至每个校验节点610的变量节点620的数目被固定为4,并且耦合至每个变量节点620的校验节点 610的数目被固定为2。变量节点620的初始值可以是硬判决读取数据和软判决读取数据中的一个。
图6C示出了与Tanner图对应的奇偶校验矩阵H。该奇偶校验矩阵H表示奇偶校验方程的图形表示。奇偶校验矩阵H在每一列中具有相同数目的1,并且在每一行中具有相同数目的1,但是在列中的1 的数目不一定与在行中的1的数目相同。即,图6C的奇偶校验矩阵 H表示图6B的Tanner图。在所图示的实施例中,该图由表示校验节点的数目的6行和表示变量节点的数目的12列组成。如本领域中已知的,如果H的元素hij为1,则校验节点vi连接至变量节点cj。
通过迭代以下过程来执行对LDPC码进行解码的过程:在Tanner 图中的变量节点620和校验节点610之间交换在每个节点中生成和更新的消息。在这种情况下,每个节点基于和积算法或类似的次优算法来更新消息。
例如,对硬判决读取数据进行的LDPC解码操作可以包括多次迭代,该多次迭代中的每次迭代包括:最初在更新变量节点620之后更新校验节点610、更新变量节点620以及校正子校验。在单次迭代之后,当校正子校验的结果满足条件时,LDPC解码操作可以结束。当校正子校验的结果不满足条件(可以预先设置或确定该条件)时,可以执行附加迭代。该附加迭代可以包括变量节点更新、校验节点更新和校正子校验。迭代的数目可以被限制为最大数目迭代。当在执行了最大数目的迭代之后,校正子校验的结果仍然不满足条件时,可以确定LDPC解码操作已失败。
参照图6C,校正子检查是标识奇偶校验矩阵H与通过更新变量节点620而获得的矢量“v”的乘积结果“Hv t”是否满足条件的过程。当乘积结果“Hv t”变为零矢量时,乘积结果“Hv t”可以被认为满足条件。
通过示例的方式,图6C示出了非零矢量“001010”作为乘积结果“Hv t”,这表明校正子校验不满足条件,并且因此,应该根据另一硬判决读取电压VHD来执行另一迭代。
考虑到作为乘积结果“Hv t”的非零矢量“001010”,不满足零矢量条件的非零矢量元素(或多个元素)的数目2。在本说明书中,针对在迭代中的乘积结果“Hv t”,不满足校正子校验的零矢量条件的每个元素被定义为不满足的校正子校验(USC)。通过示例的方式,图6C示出了USC的数目为2的校正子校验的结果。
图7A和图7B是图示了在图5中示出的软判决读取操作的示意图,特别地,分别是2比特软判决读取操作和3比特软判决读取操作。
参照图7A,在图5中示出的步骤S510的硬判决解码操作期间,当将硬判决读取电压VHD施加到半导体存储器设备200时,根据存储器单元的开/关状态,硬判决读取数据2-1可以具有值‘1’和‘0’中的一个。
在步骤S530的软判决解码操作期间,可以通过软判决读取操作来生成LLR,在该软判决读取操作中,将不同于硬判决读取电压VHD的软判决读取电压VSD1和VSD2中的每一个施加到存储器单元。
在2比特软判决读取操作期间,当将第一软判决读取电压VSD1施加到存储器单元时,根据存储器单元的开/关状态,第一软判决读取值2-2可以是‘1000’。以类似的方式,当将第二软判决读取电压 VSD2施加到存储器单元时,根据存储器单元的开/关状态,第二软判决读取值2-3可以是‘1110’。
在实施例中,LDPC组件130可以通过对第一软判决读取值2-2 和第二软判决读取值2-3进行XNOR运算,来生成软判决读取数据 2-4或LLR。LLR 2-4可以指示硬判决读取数据2-1的可靠性。
例如,软判决读取数据2-4的值‘1’可以表明硬判决读取数据 2-1的第一状态和第二状态(逻辑值‘1’和‘0’)正确的“强”概率。另一方面,软判决读取数据2-4的值‘0’可以表明硬判决读取数据2-1的第一状态和第二状态正确的“弱”概率。
参照图7B,在图5步骤S510的硬判决解码操作期间,当将硬判决读取电压VHD施加到半导体存储器设备200时,根据存储器单元的开/关状态,硬判决读取数据3-1可以具有值‘1’和‘0’中的一个。
在步骤S530的软判决解码操作期间,可以通过软判决读取操作来生成LLR,在该软判决读取操作中,将不同于硬判决读取电压VHD的软判决读取电压VSD1至VSD6中的每一个施加到存储器单元。
参照图7B,在3比特软判决读取操作期间,当将第一软判决读取电压VSD1和第二软判决读取电压VSD2施加到存储器单元时,可以根据存储器单元的开/关状态,生成第一软判决读取值和第二软判决读取值,这与图7A的2比特软判决读取操作类似。LDPC组件130可以通过对第一软判决读取值和第二软判决读取值进行XNOR运算,来生成第一软判决读取数据3-2‘1001’或LLR。
以类似的方式,在3比特软判决读取操作期间,当将与第一软判决读取电压VSD1和第二软判决读取电压VSD2不同的第三至第六软判决读取电压VSD3至VSD6施加到存储器单元时,可以根据存储器单元的开/关状态生成第三至第六软判决读取值,这与图7A的2比特软判决读取操作类似。LDPC组件130可以通过对第三至第六软判决读取值进行XNOR运算,来生成第二软判决读取数据3-3(‘10101’) 或LLR。LLR 3-3(‘10101’)可以向第一软判决读取数据3-2提供加权值。
例如,第二软判决读取数据3-3的值‘1’可以表明第一软判决读取数据3-2的第一状态(逻辑值‘1’)正确的“极强”概率。另一方面,第二软判决读取数据3-3的值‘0’可以表明第一软判决读取数据3-2的第一状态正确的“强”概率。
以类似的方式,第二软判决读取数据3-3的值‘1’可以表明第一软判决读取数据3-2的第二状态(逻辑值‘0’)正确的“极弱”概率。另一方面,第二软判决读取数据3-3的值‘0’可以表明第一软判决读取数据3-2的第二状态正确的“弱”概率。关于硬判决读取数据3-1,LLR 3-3可以提供更好的可靠性,这与图7A的2比特软判决读取操作类似。
可以用来表达LLR。P0表示对应的硬判决数据的值为‘0’的概率,并且P1表示对应的硬判决数据的值为‘1’的概率。硬判决数据的值为‘0’的概率越大,LLR值越为正,而其值为‘1’的概率越大,LLR值越为负。当该值为‘0’的概率和该值为‘1’的概率极弱时,LLR值可以具有接近‘0’的值。即,LLR值的绝对值越大,数据值的可靠性越高,而其绝对值越小,数据值的可靠性越低。
图8是图示了根据本公开实施例的LDPC解码器133的框图。
参照图8,LDPC解码器133可以包括主解码器802和调度器804。
主解码器802可以接收从半导体存储器设备200读取的码字并且执行一次或多次迭代,每次迭代包括:针对码字进行节点更新和校正子检验,直到解码成功为止。
主解码器802可以执行初始更新:将每个变量节点的值设置为码字的每个符号的值。主解码器802可以基于变量节点的更新后的值来更新校验节点,并且基于校验节点的更新后的值来更新变量节点。主解码器802可以通过对变量节点的更新后的值和奇偶校验矩阵进行运算来执行校正子校验。当作为校正子检验结果没有USC时,主解码器802可以输出经解码的数据,即,已成功恢复的原始数据。
从半导体存储器设备200读取的码字可以包括一个或多个错误。主解码器802需要参考校验节点的值和其他变量节点的值,以便更新变量节点。在图6B的图示示例中,为了更新第一变量节点v1,主解码器802需要参考连接至第一变量节点v1的第一校验节点c1和第三校验节点c3的值。第一校验节点c1的值可以取决于连接至第一校验节点c1的第二至第四变量节点v2至v4的值,并且第三校验节点c3的值可以取决于连接至第三校验节点c3的第五变量节点v5、第六变量节点v6,以及第十变量节点v10的值。
当主解码器802基于具有高可靠性的变量节点的值来更新其他变量节点时,很大可能是变量节点的更新后的值收敛到原始数据的值。然而,当主解码器802基于具有低可靠性的变量节点的值来更新其他变量节点时,变量节点的更新后的值不会收敛到原始数据的值。当变量节点的值未收敛到原始数据的值时,LDPC解码的总体收敛速度会变慢。
如果主解码器802可以首先更新具有低可靠性的变量节点以提高变量节点的可靠性,并且然后在更新其他变量节点时利用具有提高的可靠性的变量节点,则LDPC解码的收敛速度可以提高。
根据本公开的实施例,调度器804可以将多个变量节点分组为多个变量节点组中,并且确定变量节点组被更新的顺序,使得具有低可靠性的变量节点组首先被更新。调度器804可以从主解码器802获取每个变量节点的可靠性信息(RELIABILITY INFO.)。
主解码器802可以重复以下操作:根据从调度器804获取的更新顺序(UPDATE ORDEINFO.),更新与具有高优先级的变量节点组相关联的校验节点,并且基于更新后的校验节点来更新具有高优先级的变量节点组,直到所有变量节点组被更新为止。
主解码器802可以对作为节点更新结果的更新后的变量节点执行校正子校验。进一步地,主解码器802可以根据校正子校验结果来输出经解码的数据或执行下一迭代。
具有低可靠性的变量节点组的变量节点的值可以首先被更新,并且然后被用于更新其他变量节点组。当更新其他变量节点时,可以基本上防止具有低可靠性的变量节点直接影响其他变量节点。因此,根据本公开实施例的LDPC解码器133可以加快LDPC解码的收敛速度。
在下文中,参照图9、图10A和图10B详细地描述了根据本公开实施例的LDPC解码器133的操作方法。
图9是图示了根据本公开实施例的LDPC解码器133的操作的流程图。
参照图9,在步骤S902中,主解码器802可以获得从半导体存储器设备200读取的码字。然后,主解码器802可以执行初始更新:将每个变量节点的值设置为码字的对应符号。
LDPC解码器133可以执行硬判决解码或软判决解码。当LDPC 解码器133执行软判决解码时,主解码器802可以根据存储器控制器 100的软判决读取操作结果进一步获得LLR。
在步骤S904中,调度器804可以基于每个变量节点的可靠性,来调度变量节点被更新的顺序。调度器804可以将所调度的更新顺序提供给主解码器802。
在实施例中,调度器804可以从主解码器802获取LLR,并且基于LLR确定每个变量节点的可靠性。如参照图7B所描述的,LLR值的绝对值越大,对应的变量节点的可靠性越高,而其绝对值越小,对应的变量节点的可靠性越低。调度器804可以调度变量节点的更新顺序,使得具有低可靠性的变量节点首先被更新。
在第一示例中,调度器804可以通过将已按照码字的顺序排序的多个变量节点分组为设定数目的组,来生成多个变量节点组。调度器 804可以确定每个变量节点组的可靠性。例如,每个变量节点组的可靠性可以被确定为属于该变量节点组的变量节点的LLR值的总和。调度器804可以确定变量节点组的更新顺序,使得具有低可靠性的变量节点组首先被更新。
在第二示例中,调度器804可以通过按照变量节点的LLR值的降序对变量节点进行排序,并且将已排序的变量节点分组为设定数目的组,来生成多个变量节点组。调度器804可以确定变量节点组的更新顺序,使得具有低可靠性的变量节点组首先被更新。
在第一和第二示例中,可以基于主解码器802可以一次更新的变量节点的数目,来确定一个变量节点组中的变量节点的数目。例如,当一次可以对最多64个变量节点执行将在下面描述的节点更新时,变量节点组中的变量节点的数目可以根据主解码器802的性能多达 64个。
在步骤S906中,主解码器802可以基于所调度的更新顺序来执行节点更新。
主解码器802可以重复以下操作:根据更新顺序来更新与以下变量节点组相关联的校验节点:在尚未在步骤S906中被更新的变量节点组之中具有高的优先级,并且基于更新后的校验节点来更新具有高优先级的变量节点组,直到所有变量节点组被更新为止。
主解码器802可以首先更新具有低可靠性的高优先级变量节点组,并且然后可以更新具有低优先级的变量节点组。更新具有低优先级的变量节点组的操作未直接受到具有低可靠性的高优先级变量节点组的变量值的影响。因此,可以提高LDPC解码的收敛速度。
在步骤S908中,主解码器802可以基于更新后的变量节点和奇偶校验矩阵来执行校正子校验。上面参照图6A描述了校正子校验的示例。
作为校正子校验结果,当所有校验节点都满足零矢量条件时(在步骤S908中,为“满足”),主解码器802可以在步骤S912中输出经解码的数据。可以将经解码的数据从存储器控制器100输出到另一设备/组件,或者可以在存储器控制器100内部使用。
作为校正子校验结果,当任何一个校验节点都不满足零矢量条件时(在步骤S908中,为“不满足”),主解码器802可以在步骤S910 中确定LDPC解码是否已达到最大迭代数目。
当LDPC解码已达到最大迭代数目时(在步骤S910中,为“是”),主解码器802可以在步骤S914中确定LDPC解码失败,并且结束 LDPC解码。
当LDPC解码还未达到最大迭代数目时(在步骤S910中,为“否”),主解码器802可以重复步骤S904、S906和S908。
调度器804可以基于在第二次迭代之后的校正子校验操作结果来确定每个变量节点的可靠性,在该第二次迭代中,可以从主解码器802 获取校正子校验操作结果。参照图10A和图10B描述了以下操作示例:调度器根据校正子校验操作结果来调度变量节点的更新顺序,并且主解码器802根据该调度来执行节点更新。
图10A和图10B是图示了根据本公开实施例的LDPC解码器133 的操作的Tanner图。
图10A是图示了调度器804基于校正子校验操作结果,确定变量节点的更新顺序的方法的第一示例的示意图。
调度器804可以通过将已按照码字顺序排序的变量节点分组为设定数目的组,来生成变量节点组。通过示例的方式,图10A图示了通过按照码字顺序将12个变量节点除以4而获得的第一至第三组 GROUP1至GROUP3。
调度器804可以从主解码器802获取前一次迭代的校正子校验操作结果。图10A图示了所获取的校正子校验操作结果“SYNDROME CHECK”。
调度器804可以基于连接至该变量节点的USC的数目,来确定每个变量节点的可靠性。调度器804可以确定:连接至变量节点的 USC的数目越多,变量节点的可靠性越低。
调度器804可以确定连接至每个变量节点的USC的数目。例如,由于第一变量节点v1连接至不是USC的第一校验节点c1和作为USC 的第三校验节点c3,因此,连接至第一变量节点v1的USC的数目为‘1’。图10A图示了连接至第一至第十二变量节点中的每个变量节点的USC的数目。
调度器804可以基于连接至该组中的每个变量节点的USC的数目,来确定每个变量节点组的可靠性。例如,调度器804可以确定:属于变量节点组的相应变量节点的USC的数目的总和越大,该变量节点组的可靠性越低。在图10A中,第一组GROUP1的USC的总和为‘2’,第二组GROUP2和第三组GROUP3中的每一组的USC的总和为‘3’。调度器804可以确定:第二组GROUP2和第三组GROUP3 中的每一组的可靠性低于第一组GROUP1的可靠性。调度器804可以确定变量节点组的更新顺序,使得具有较大USC总和的变量节点组首先被更新。在图10A的示例中,调度器804可以确定更新顺序,使得第二组GROUP2或第三组GROUP3首先被更新,并且第一组 GROUP1最后被更新。主解码器802可以基于所确定的更新顺序来执行变量节点更新。
描述了首先对第三组执行节点更新的示例。
主解码器802可以更新与第三组GROUP3相关联的校验节点。主解码器802可以将连接至属于第三组GROUP3的第九至第十二变量节点v9至v12中的每个变量节点的校验节点确定为与第三组 GROUP3相关联的校验节点。在图10A的示例中,与第三变量节点组GROUP3相关联的校验节点是第二至第六校验节点c2至c6。
主解码器802可以基于第一至第十二变量节点v1至v12来更新第二至第六校验节点c2至c6。主解码器802可以基于更新后的第二至第六校验节点c2至c6来更新第三变量节点组GROUP3。
在第三组GROUP3被更新之后,第二组GROUP2可以被更新。在图10A的示例中,与第二变量节点组GROUP2相关联的校验节点是第二至第五校验节点c2至c5。
主解码器802可以基于第一至第十二变量节点v1至v12,来更新第二至第五校验节点c2至c5,并且可以基于更新后的第二至第五校验节点c2至c5来更新第二组GROUP2。
当更新第二至第五校验节点c2至c5时,由于对第三组GROUP3 的更新,第九至第十二变量节点v9至v12已被更新。虽然已经将第三组GROUP3确定为具有低可靠性的变量节点组,但是可以提高第三组GROUP3的可靠性,因为第三组GROUP3已基于多个变量节点和校验节点而被更新。当更新第二组GROUP2时,主解码器802使用具有提高的可靠性的变量节点值,而不是具有低可靠性的第三组 GROUP3的变量节点值,使得LDPC解码的收敛速度可以提高。
图10B是图示了调度器804基于校正子校验操作结果来确定变量节点的更新顺序的方法的第二示例的示意图。
与图10A类似,图10B图示了Tanner图、前一次迭代的校正子校验操作结果“校正子校验”以及连接至每个变量节点的USC的数目。
调度器804可以通过按照连接至每个变量节点的USC的数目的升序对变量节点进行排序并且将排好序的变量节点分组为设定数目的组,来生成变量节点组。
在图10B的示例中,连接至第十变量节点v10的USC的数目为‘2’,连接至第一变量节点v1、第三变量节点v3、第五变量节点v5、第六变量节点v6、第八变量节点v8和第十二变量节点v12中的每一个的USC 的数目为‘1’,并且连接至第二变量节点v2、第四变量节点v4、第七变量节点v7、第九变量节点v9和第十一变量节点v11中的每一个的USC的数目为‘0’。
图10B图示了按照USC的数目的升序来对设定数目的变量节点进行分组的情况。调度器804可以将在这12个变量节点中的、USC 的数目分别为‘1’的第一变量节点v1、第三变量节点v3和第五变量节点v5,以及USC的数目为2的第十变量节点v10分组为组A中。调度器804可以将USC的数目分别为‘1’的第六变量节点v6、第八变量节点v8和第十二变量节点v12,以及USC的数目为‘0’的第二变量节点v2分组为组B中。调度器804可以将USC的数目分别为‘0’的其余变量节点(v4、v7、v9和v11)分组为组C中。图10B分别图示了变量节点所属的变量节点组。
调度器804可以确定变量节点组的更新顺序,使得首先按照组A、组B和组C的顺序来更新变量节点。主解码器802可以基于所确定的更新顺序来执行变量节点更新。
根据本公开的实施例,LDPC解码器133可以调度变量节点被更新的顺序,使得多个变量节点中具有低可靠性的变量节点首先被更新。 LDPC解码器133可以基于从软读取操作获取的每个变量节点的LLR、或者从前一次迭代的校正子校验运算结果中获取的每个变量节点的 USC的数目来确定可靠性。LDPC解码器133可以首先更新具有低可靠性的变量节点,从而在更新其他变量节点时基本上防止具有低可靠性的变量节点直接影响其他变量节点。包括根据本公开的实施例的 LDPC解码器133的存储器控制器100,可以减少错误传播并且减少在LDPC解码中实现收敛的时间,使得可以更快且更准确地读取半导体存储器设备200中所存储的数据。
虽然图示和描述了各个实施例,但是如本领域的技术人员要认识到的,在不脱离本发明的范围的情况下,可以进行各种修改。因此,本发明的范围不限于所公开的实施例。相反,本发明涵盖落入权利要求及其等效物的范围内的所有修改和变化。
Claims (16)
1.一种低密度奇偶校验LDPC解码器的操作方法,所述操作方法包括:
在最初将码字更新到变量节点;
确定多个变量节点组被更新的更新顺序,所述更新顺序基于所述变量节点组中的每个变量节点组的可靠性而被确定;
执行局部迭代,直到所有所述变量节点组基于所述更新顺序被更新为止,所述局部迭代包括与所述变量节点组中的选择变量节点组相关联的校验节点的更新、以及基于更新后的校验节点对所述选择变量节点组的更新;
基于更新后的变量节点和奇偶校验矩阵的运算,执行校正子校验以确定LDPC解码是否成功;以及
其中确定所述更新顺序、执行局部迭代和执行所述校正子校验的每个周期表示全局迭代,所述全局迭代被重复,直到所述解码成功或所执行的全局迭代的数目达到最大数目为止。
2.根据权利要求1所述的操作方法,其中确定所述更新顺序包括:
基于对应的变量节点组中的每个变量节点的对数似然比LLR值,来确定所述变量节点组中的每个变量节点组的可靠性。
3.根据权利要求2所述的操作方法,其中确定所述变量节点组中的每个变量节点组的所述可靠性包括:
对于每个变量节点组,对属于该变量节点组的所述变量节点的所述LLR值进行求和。
4.根据权利要求1所述的操作方法,其中确定所述更新顺序包括:
基于被连接至对应的变量节点组中的每个变量节点的未满足校验节点USC的数目,来确定所述变量节点组中的每个变量节点组的可靠性,
其中所述USC在先前的全局迭代的所述校正子校验中被确定。
5.根据权利要求4所述的操作方法,其中确定所述变量节点组中的每个变量节点组的所述可靠性包括:
与具有较高数目的所连接的USC的变量节点相比,向具有较低数目的所连接的USC的变量节点分配更高的可靠性;以及
将所述变量节点组中的每个变量节点组的所述可靠性确定为属于相应所述变量节点组的所述变量节点的可靠性之和。
6.根据权利要求1所述的操作方法,其中确定所述更新顺序包括:
通过将按照可靠性的降序排序的所述多个变量节点分组成设定数目的组,来生成所述多个变量节点组;以及
确定所述更新顺序,使得所述多个变量节点组中具有较低可靠性的变量节点组先于具有较高可靠性的变量节点组而被更新。
7.根据权利要求1所述的操作方法,其中确定所述更新顺序包括:
通过将已按照码字的顺序排序的所述多个变量节点分组成设定数目的组,来生成所述多个变量节点组;以及
确定所述更新顺序,使得所述多个变量节点组中具有较低可靠性的变量节点组先于具有较高可靠性的变量节点组而被更新。
8.一种低密度奇偶校验LDPC解码器,包括:
主解码器,被配置为在最初将码字更新到变量节点;以及
调度器,被配置为确定多个变量节点组被更新的更新顺序,所述更新顺序基于所述变量节点组中的每个变量节点组的可靠性而被确定,
其中所述主解码器执行局部迭代,直到所有所述变量节点组基于所述更新顺序被更新为止,并且基于更新后的变量节点和奇偶校验矩阵的运算,执行校正子校验以确定LDPC解码是否成功,所述局部迭代包括与所述变量节点组中的选择变量节点组相关联的校验节点的更新、以及基于更新后的校验节点对所述选择变量节点组的更新,并且
其中确定所述更新顺序、执行局部迭代和执行所述校正子校验的每个周期表示全局迭代,所述LDPC解码器重复所述全局迭代,直到所述解码成功或所执行的全局迭代的数目达到最大数目为止。
9.根据权利要求8所述的LDPC解码器,其中所述调度器基于对应的变量节点组的每个变量节点的对数似然比LLR值,来确定所述变量节点组中的每个变量节点组的可靠性。
10.根据权利要求9所述的LDPC解码器,其中所述调度器将每个变量节点组的所述可靠性确定为属于对应的变量节点组的变量节点的LLR值的总和。
11.根据权利要求8所述的LDPC解码器,其中所述调度器基于被连接至对应的变量节点组的每个变量节点的未满足校验节点USC的数目,来确定所述变量节点组中的每个变量节点组的可靠性,以及
所述USC在先前的全局迭代的所述校正子校验中被确定。
12.根据权利要求11所述的LDPC解码器,其中与具有较高数目的所连接的USC的变量节点相比,所述调度器向具有较低数目的所连接的USC的变量节点分配更高的可靠性,并且将所述变量节点组中的每个变量节点组的所述可靠性确定为属于相应所述变量节点组的所述变量节点的可靠性之和。
13.根据权利要求8所述的LDPC解码器,其中所述调度器通过将已按照可靠性的降序排序的所述多个变量节点分组为设定数目的组,来生成所述多个变量节点组,并且确定所述更新顺序,使得所述多个变量节点组中具有较低可靠性的变量节点组先于具有较高可靠性的变量节点组而被更新。
14.根据权利要求8所述的LDPC解码器,其中所述调度器通过将已按照码字的顺序排序的所述多个变量节点分组为设定数目的组,来生成所述多个变量节点组,并且确定所述更新顺序,使得所述多个变量节点组中具有较低可靠性的变量节点组先于具有较高可靠性的变量节点组而被更新。
15.根据权利要求14所述的LDPC解码器,其中所述设定数目基于由所述主解码器在一个局部迭代中可更新的变量节点的最大数目而被确定。
16.一种低密度奇偶校验LDPC解码设备,包括:
调度器,被配置为基于错误信息对多个变量节点进行分组,以生成多个变量节点组,并且基于与每个变量节点组相关联的错误的数目,来确定对所述变量节点组进行解码的顺序,使得具有较大错误数目的的变量节点组先于具有较小错误数目的变量节点组而被解码;以及
解码器,被配置为基于解码顺序对所述多个变量节点组进行解码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200032482A KR20210115961A (ko) | 2020-03-17 | 2020-03-17 | Ldpc 디코더 및 그것의 동작 방법 |
KR10-2020-0032482 | 2020-03-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113411086A true CN113411086A (zh) | 2021-09-17 |
Family
ID=77677369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011102696.0A Withdrawn CN113411086A (zh) | 2020-03-17 | 2020-10-15 | Ldpc解码器及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11139832B1 (zh) |
KR (1) | KR20210115961A (zh) |
CN (1) | CN113411086A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023103141A1 (zh) * | 2021-12-06 | 2023-06-15 | 上海垣信卫星科技有限公司 | Ldpc解码装置及其方法,低轨道卫星接收设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114421972B (zh) * | 2022-01-27 | 2022-11-22 | 石家庄市经纬度科技有限公司 | 一种多进制ldpc码译码方法 |
CN114726481B (zh) * | 2022-03-09 | 2023-12-22 | 鹤壁天海电子信息系统有限公司 | 一种5g nr ldpc译码方法及相关装置 |
TWI836558B (zh) * | 2022-08-18 | 2024-03-21 | 慧榮科技股份有限公司 | 記憶體控制器及解碼管線之資料控制方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8918696B2 (en) | 2010-04-09 | 2014-12-23 | Sk Hynix Memory Solutions Inc. | Implementation of LDPC selective decoding scheduling |
US8775896B2 (en) * | 2012-02-09 | 2014-07-08 | Lsi Corporation | Non-binary LDPC decoder with low latency scheduling |
JP2014017734A (ja) * | 2012-07-10 | 2014-01-30 | Toshiba Corp | 受信機及び受信方法 |
US8930788B2 (en) * | 2012-09-04 | 2015-01-06 | Lsi Corporation | LDPC decoder with fractional unsatisfied check quality metric |
US9191256B2 (en) | 2012-12-03 | 2015-11-17 | Digital PowerRadio, LLC | Systems and methods for advanced iterative decoding and channel estimation of concatenated coding systems |
US9136877B1 (en) * | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
KR20150024489A (ko) | 2013-08-26 | 2015-03-09 | 삼성전자주식회사 | 메모리 시스템에서의 ldpc 디코딩 방법 및 이를 이용한 ldpc 디코더 |
US10038456B1 (en) * | 2014-03-25 | 2018-07-31 | Marvell International Ltd. | Decoders with look ahead logic |
US9755665B1 (en) * | 2014-09-23 | 2017-09-05 | Marvell International Ltd. | Systems and methods for an iterative decoding scheme |
US10075190B2 (en) * | 2015-10-27 | 2018-09-11 | Sandisk Technologies Llc | Adaptive scheduler for decoding |
US20170134048A1 (en) * | 2015-11-10 | 2017-05-11 | Samsung Electronics Co., Ltd. | Message-passing based decoding using syndrome information, and related methods |
US10374633B2 (en) * | 2016-07-08 | 2019-08-06 | Maxlinear, Inc. | Method and system for LDPC decoding |
-
2020
- 2020-03-17 KR KR1020200032482A patent/KR20210115961A/ko not_active Application Discontinuation
- 2020-09-14 US US17/020,257 patent/US11139832B1/en active Active
- 2020-10-15 CN CN202011102696.0A patent/CN113411086A/zh not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023103141A1 (zh) * | 2021-12-06 | 2023-06-15 | 上海垣信卫星科技有限公司 | Ldpc解码装置及其方法,低轨道卫星接收设备 |
Also Published As
Publication number | Publication date |
---|---|
US11139832B1 (en) | 2021-10-05 |
US20210297092A1 (en) | 2021-09-23 |
KR20210115961A (ko) | 2021-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9977713B2 (en) | LDPC decoder, semiconductor memory system and operating method thereof | |
CN111200440B (zh) | Ldpc解码器、半导体存储器系统及其操作方法 | |
US10103749B2 (en) | LDPC decoder, semiconductor memory system and operating method thereof | |
US10445175B2 (en) | Controller and operating method thereof | |
US10879935B2 (en) | LDPC decoder, semiconductor memory system, and operating method thereof | |
US11139832B1 (en) | LDPC decoder and operating method thereof | |
KR102556479B1 (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
US10200063B2 (en) | Memory controller, semiconductor memory system and operating method thereof | |
US10997021B2 (en) | LDPC decoder, semiconductor memory system and operating method thereof | |
CN110853690B (zh) | 解码器、解码器的操作方法和包括该解码器的存储器系统 | |
US11966589B2 (en) | Controller and operating method thereof | |
US11387845B2 (en) | LDPC decoder, operating method of LDPC decoder, and semiconductor memory system | |
US11095316B2 (en) | Controller and operating method for performing read operation to read data in memory device | |
US10528496B2 (en) | Controller and operating method thereof | |
KR102530269B1 (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210917 |
|
WW01 | Invention patent application withdrawn after publication |