纠错电路及其操作方法

文档序号:1469714 发布日期:2020-02-21 浏览:23次 >En<

阅读说明:本技术 纠错电路及其操作方法 (Error correction circuit and method of operating the same ) 是由 金大成 姜淳荣 于 2019-06-14 设计创作,主要内容包括:本文提供的可以是纠错电路及其操作方法。一种操作纠错电路的方法可以包括:将初始符号作为变量节点值分配给变量节点;在每次迭代开始时基于分配给变量节点的初始符号来初始化与变量节点相对应的候选符号的第一可靠性值;基于从耦合到变量节点的校验节点接收的通信来分别更新候选符号的第一可靠性值,所述候选符号具有更新的第一可靠性值;以及当候选符号之一的更新的第一可靠性值等于或大于第一阈值时,将变量节点值调节为候选符号之一。(Provided herein may be an error correction circuit and a method of operating the same. A method of operating an error correction circuit may include: allocating the initial symbol as a variable node value to a variable node; initializing a first reliability value of a candidate symbol corresponding to the variable node at the start of each iteration based on an initial symbol assigned to the variable node; updating first reliability values of candidate symbols, respectively, based on communications received from check nodes coupled to variable nodes, the candidate symbols having updated first reliability values; and adjusting the variable node value to one of the candidate symbols when the updated first reliability value of the one of the candidate symbols is equal to or greater than the first threshold value.)

纠错电路及其操作方法

相关申请的交叉引用

本专利文件要求2018年8月13日提交的韩国专利申请号10-2018-0094633的优先权和权益,该申请通过引用整体并入本文。

技术领域

本专利文件中公开的技术和实现一般地涉及纠错电路及其操作方法,包括使用非二进制低密度奇偶校验(NB-LDPC)码的纠错电路及其操作方法。

背景技术

存储器系统可以包括临时或永久地在其中存储数据的存储介质。在包括写入、读取、传输或处理的存储器系统的各种操作期间,由于相邻存储器单元之间的干扰,可能发生任何数据错误或任何数据损坏。为了控制数据错误和/或数据损坏并且确保数据的可靠性,存储器系统可以使用诸如纠错编码和解码的纠错技术。可以以硬件和/或软件的形式实现纠错技术。例如,用于纠错的电路可以使用纠错码在存储器系统中执行纠错编码和解码。

在可获得的纠错码技术中,低密度奇偶校验(LDPC)码已广泛用于通信和其他系统。

发明内容

所公开的技术的各种实施例涉及用于使用非二进制LDPC(NB-LDPC)码来执行纠错解码的纠错电路和操作该纠错电路的方法。

所公开的技术的实施例可以提供一种操作纠错电路的方法,该纠错电路使用非二进制低密度奇偶校验(NB-LDPC)码基于迭代解码方案来执行纠错解码。该方法可以包括将初始符号作为变量节点值分配给变量节点;在每次迭代开始时基于分配给变量节点的初始符号来初始化与变量节点相对应的候选符号的第一可靠性值;基于从耦合到变量节点的校验节点接收的通信来分别更新候选符号的第一可靠性值,该候选符号具有更新的第一可靠性值;以及当候选符号之一的更新的第一可靠性值等于或大于第一阈值时,将变量节点值调节为该候选符号之一。

所公开的技术的实施例可以提供一种纠错电路,其用于使用非二进制低密度奇偶校验(NB-LDPC)码基于迭代解码方案来执行纠错解码。该纠错电路可以包括:符号配置电路,被配置为配置初始符合,该初始符号将要作为变量节点值被分配给变量节点;可靠性值初始化电路,被配置为基于分配给变量节点的初始符号来初始化与变量节点相对应的候选符号的第一可靠性值;以及符号校正电路,被配置为基于从耦合到变量节点的校验节点接收的通信来分别更新候选符号的第一可靠性值,该候选符号具有更新的第一可靠性值,并且被配置为基于候选符号之一的更新的第一可靠性值与第一阈值的比较来将变量节点值调节为该候选符号之一。

附图说明

图1是示出基于所公开技术的实施例的纠错电路的图。

图2是示出奇偶校验矩阵的示例的图。

图3是示出用于图2的奇偶校验矩阵的Tanner图的示例的图。

图4是示出使用图2的奇偶校验矩阵计算的校正子矢量的示例的图。

图5是示出基于所公开技术的实施例的符号配置过程的示例的图。

图6是用于说明基于所公开技术的实施例的阈值的图。

图7是示出基于所公开技术的实施例的用于初始化第一可靠性值的过程的示例的图。

图8是示出基于所公开技术的实施例的用于根据第一可靠性值校正符号的过程的示例的图。

图9是用于说明基于所公开技术的实施例的第二可靠性值的图。

图10是示出基于所公开技术的实施例的用于设置第二可靠性值的过程的示例的图。

图11是示出基于所公开技术的实施例的用于根据第二可靠性值校正符号的过程的示例的图。

图12是示出基于所公开技术的实施例的用于设置第二可靠性值的过程的示例的图。

图13是示出基于所公开技术的实施例的用于根据第二可靠性值校正符号的过程的示例的图。

图14是示出基于所公开技术的实施例的操作纠错电路的方法的流程图。

图15是示出基于所公开技术的实施例的操作纠错电路的方法的流程图。

图16是示出基于所公开技术的实施例的存储器系统的示例的图。

图17是示出基于所公开技术的实施例的存储器装置的示例的图。

图18是示出基于所公开技术的实施例的存储器块的示例的图。

图19和图20是示出包括如图16所示的存储器控制器的存储器系统的实施例的图。

具体实施方式

可以在实施例中实现本专利文献中公开的技术,以提供包括使用迭代解码方案的纠错解码的纠错技术。在下文中,将参考附图描述所公开技术的实施例。

低密度奇偶校验(LDPC)码广泛用于通信和其他系统中的纠错。LDPC解码应用迭代解码方案以改善纠错性能,即使在码长增加时也不会增加每比特的计算复杂度。LDPC码的各种实现具有一些限制。例如,一些LDPC码中的硬错误可能导致产生成功解码所需的计算周期或迭代次数的低效,并且可能导致解码操作失败。

图1是示出根据本公开技术的实施例的纠错电路的图。

参照图1,根据本公开技术的实施例的纠错电路10可包括纠错解码器100和后处理器200。

纠错解码器100可以使用采用迭代解码方案的各种算法来执行纠错解码。例如,纠错解码器100可以使用消息传递算法(MPA)执行纠错解码,该算法也被称为“置信传播算法(BPA)”。

纠错解码器100可以在预定义的最大迭代次数(迭代的最大次数)内执行纠错解码。当在最大迭代次数内生成满足纠错码的奇偶校验矩阵的有效码字时,纠错解码器100可以将所生成的有效码字输出为解码的码字。当在最大迭代次数内没有生成满足纠错码的奇偶校验矩阵的有效码字时,纠错解码器100可以输出指示纠错解码已经失败的失败信号。

纠错解码器100可以是或包括使用低密度奇偶校验(LDPC)码作为纠错码的LDPC解码器。纠错解码器100可以是或包括非二进制LDPC解码器,其通过对从信道接收的读取值中包括的比特进行分组来配置符号并且基于符号执行纠错解码。

纠错解码器100可以包括符号配置单元110、节点处理器120和校正子校验单元130。

符号配置单元110可以从信道接收读取值。在一些实现中,从其获得读取值的信道可以表示在其上传送信息的有线或无线介质或在其中存储信息的存储介质。在所公开的技术的一些实现中,信道可以指示在纠错电路10与存储器装置之间传输数据的接口或指示存储器装置自身。读取值可以对应于码字,该码字是通过在纠错编码期间将奇偶校验位添加到原始消息来生成的。例如,符号配置单元110可以从存储器装置接收对应于一个码字的读取值。在下文中,对应于单个码字的读取值被称为读取向量。

符号配置单元110可以通过对读取向量中包括的比特进行分组来配置初始符号,并且可以将配置的初始符号提供给节点处理器120。例如,当读取矢量由14比特组成时,符号配置单元110可以通过将比特分组为单元来配置七个初始符号,每个单元具有两个比特。

节点处理器120可以基于从符号配置单元110接收的初始符号来执行纠错解码。节点处理器120可以使用采用迭代解码方案的各种算法执行纠错解码。例如,节点处理器120可以使用消息传递算法(MPA)来执行纠错解码。作为消息传递算法,可以使用和积算法、最小和算法或其他算法。在一些实现中,也可以使用各种算法而不限于消息传递算法。

节点处理器120可以在最大迭代次数I内执行迭代,其中I是自然数。作为执行第i次迭代的结果,节点处理器120产生变量节点的值,并且将变量节点的值提供给校正子校验单元130。在这里,i是小于或等于I的自然数。提供给校正子校验单元130的变量节点的值可以通过基于第一可靠性值和第二可靠性值中的至少一个的校正来获得,这将在后面详细描述。

消息传递算法可以通过在变量节点和校验节点之间交换消息的迭代来生成收敛到读取矢量的期望估计的输出。消息可以包括从变量节点发送到校验节点的变量至校验(V2C)消息和从校验节点发送到变量节点的校验至变量(C2V)消息。

变量节点更新模块122可以在执行第一次迭代之前使用从符号配置单元110接收的初始符号来初始化变量节点。因此,变量节点更新模块122可以将初始符号作为变量节点值逐一分配给各个变量节点。

变量节点更新模块122可以生成V2C消息并且将V2C消息发送到校验节点更新模块126,使得在第一次迭代中,各个变量节点的变量节点值(即,在第一次迭代的情况下,初始符号值)可以被传送到与对应的变量节点耦合的校验节点。变量节点更新模块122可以响应于在相应迭代中从校验节点更新模块126接收的C2V消息来更新变量节点的值。变量节点更新模块122可以在除第一次迭代之外的各个迭代中基于从校验节点更新模块126接收的C2V消息来生成V2C消息,并且可以将生成的V2C消息发送到校验节点更新模块126。

校验节点更新模块126可以响应于在相应迭代中从变量节点更新模块122接收的V2C消息来更新校验节点的值。校验节点更新模块126可以基于在相应迭代中从变量节点更新模块122接收的V2C消息来生成C2V消息,并且可以将生成的C2V消息发送到变量节点更新模块122。

可以对在变量节点更新模块122和校验节点更新模块126之间交换的消息执行边缘增益处理或逆边缘增益处理。例如,边缘增益处理单元124可以对由变量节点更新模块122生成的V2C消息执行边缘增益处理,并且可以将处理后的V2C消息发送到校验节点更新模块126。例如,边缘增益处理单元124可以对由校验节点更新模块126生成的C2V消息执行逆边缘增益处理,并且可以将处理后的C2V消息发送到变量节点更新模块122。边缘增益可以从奇偶校验矩阵获取,并且还可以被称为“边缘系数”或“边缘权重”。

变量节点更新模块122可以包括可靠性值初始化单元122a、符号校正单元122b和阈值设置单元122c。

可靠性值初始化单元122a可以初始化第一可靠性值,第一可靠性值是可以被选择作为各个变量节点的值的候选符号的可靠性值。可以在每次迭代开始时并且基于分别分配给多个变量节点的初始符号来执行初始化。可靠性值初始化单元122a可以在初始迭代开始时或者每当从校正子校验单元130接收到在第i次迭代中纠错解码已经失败的通知时初始化候选符号的第一可靠性值。这里,候选符号可以表示存在于伽罗华域GF(q)中的所有符号。

可靠性值初始化单元122a可以在初始迭代开始时初始化第二可靠性值,第二可靠性值是对应于各个变量节点的可靠性值。第二可靠性值可以表示对应变量节点的当前变量节点值的不可靠性。当基于第二可靠性值调节对应变量节点的值时,可靠性值初始化单元122a可以初始化第二可靠性值。

可靠性值初始化单元122a可以不同地初始化与变量节点分别对应的候选符号的第一可靠性值。因此,候选符号的第一可靠性值被可靠性值初始化单元122a初始化为彼此不同的值。为了将候选符号的第一可靠性值初始化为彼此不同,可靠性值初始化单元122a可以采用各种技术,如下讨论。

在一个实施例中,可靠性值初始化单元122a可以基于分配给多个变量节点中的每一个的初始符号与候选符号之间的汉明距离来不同地初始化相应候选符号的第一可靠性值。在一个实施例中,可靠性值初始化单元122a可以在初始符号与候选符号之间的汉明距离较短时将候选符号的第一可靠性值初始化为具有较高的值,并且在初始符号与候选符号之间的汉明距离较长时将候选符号的第一可靠性值初始化为具有较低的值。例如,假设使用GF(4)符号并且分配给任意变量节点的初始符号是“01”。在这种情况下,可以存在与任意变量节点对应的四种类型的候选符号,例如,“00”、“01”、“10”和“11”。在下文中,符号“00”、“01”、“10”和“11”中的每一个表示GF(4)符号的二进制表示。候选符号“01”与初始符号“01”的汉明距离为0,候选符号“00”和“11”中的每一个与初始符号“01”的汉明距离为1,并且候选符号“10”与初始符号“01”的汉明距离为2。在一些实现中,具有到初始符号“01”的汉明距离为0的候选符号“01”的第一可靠性值可以被初始化为3,各自具有到初始符号“01”的汉明距离为1的候选符号“00”和“11”的第一可靠性值可以被初始化为1,并且具有到初始符号“01”的汉明距离为2的候选符号“10”的第一可靠性值可以被初始化为0。

在一个实施例中,可靠性值初始化单元122a可以基于迭代轮次不同地初始化相应候选符号的第一可靠性值。在一个实施例中,随着迭代轮次的增加,可靠性值初始化单元122a可以将第一可靠性值初始化为更高的值。在一个实施例中,随着迭代轮次增加并且初始符号与对应候选符号之间的汉明距离越短,可靠性值初始化单元122a可以将候选符号的第一可靠性值初始化为比先前迭代中的值更高的值。例如,假设使用GF(4)符号并且分配给任意变量节点的初始符号是“01”。还假设在第i次迭代中,候选符号“01”的第一可靠性值被初始化为3,候选符号“00”和“11”的第一可靠性值被初始化为1,并且候选符号“10”的第一可靠性值被初始化为0。在一些实现中,在第i+1次迭代中,可靠性值初始化单元122a可以将具有到初始符号“01”的最短汉明距离的候选符号“01”的第一可靠性值初始化为4。在一些实现中,可将剩余候选符号“00”、“11”和“10”的第一可靠性值初始化为与先前迭代轮次中的值相同的值。可替代地,在第i+1次迭代中,可靠性值初始化单元122a可以将具有到初始符号“01”的最短汉明距离的候选符号“01”的第一可靠性值初始化为5,并且可以将具有到初始符号“01”的下一最短汉明距离的候选符号“00”和“11”的第一可靠性值初始化为4。在一些实现中,可以将剩余候选符号“10”的第一可靠性值初始化为与先前迭代轮次中的值相同的值。在一个实施例中,随着迭代轮次增加并且初始符号与候选符号之间的汉明距离越短,可靠性值初始化单元122a可以将对应候选符号的第一可靠性值初始化为比先前迭代轮次更低的值。

在一个实施例中,可靠性值初始化单元122a可以基于不满足校验节点(UCN)的数目来初始化各个候选符号的第一可靠性值。在一个实施例中,在第i次迭代中UCN的数目越大,可靠性值初始化单元122a可以在第i+1次迭代中将第一可靠性值初始化为更高的值。在一个实施例中,在第i次迭代中UCN的数目越大并且初始符号与候选符号之间的汉明距离越短,可靠性值初始化单元122a可以在第i+1次迭代中将候选符号的第一可靠性值初始化为更高的值。例如,假设使用GF(4)符号并且分配给任意变量节点的初始符号是“01”。还假设在第i次迭代中,候选符号“01”的第一可靠性值被初始化为3,候选符号“00”和“11”的第一可靠性值被初始化为1,并且候选符号“10”的第一可靠性值被初始化为0。在这种情况下,当在第i次迭代中UCN的数目是3时,可靠性值初始化单元122a可以将第i+1次迭代中的所有候选符号的第一可靠性值初始化为与在第i次迭代中的值相同的值。当在第i次迭代中的UCN的数目是5时,可靠性值初始化单元122a可以在第i+1次迭代中将具有到初始符号“01”的最短汉明距离的候选符号“01”的第一可靠性值初始化为4。在一些实现中,可将剩余候选符号“00”、“11”和“10”的第一可靠性值初始化为与先前迭代轮次中相同的值。根据实施例,在第i次迭代中UCN的数目越大并且初始符号与候选符号之间的汉明距离越短,可靠性值初始化单元122a可以在第i+1次迭代中将候选符号的第一可靠性值初始化为更低的值。

符号校正单元122b可以在每次迭代中基于根据各个变量节点接收的C2V消息来更新与各个变量节点相对应的候选符号的第一可靠性值。在一个实施例中,符号校正单元122b可以将任意候选符号的第一可靠性值增加指示任意候选符号的C2V消息的接收的数目。例如,当接收到指示候选符号“10”的一个C2V消息时,符号校正单元122b可以将候选符号“10”的第一可靠性值增加1。此外,当接收到指示候选符号“10”的两个C2V消息时,符号校正单元122b可以将候选符号“10”的第一可靠性值增加2。

在更新候选符号的第一可靠性值之后,符号校正单元122b可以基于更新的第一可靠性值来调节至少一个变量节点的值。对于每个变量节点,符号校正单元122b可以确定候选符号是否具有等于或大于第一阈值的第一可靠性值。当对应的候选符号具有等于或大于第一阈值的第一可靠性值时,符号校正单元122b可以调节变量节点的值。例如,当候选符号中的任何一个具有等于或大于第一阈值的第一可靠性值时,符号校正单元122b可以将与该候选符号相对应的变量节点的值调节为具有等于或大于第一阈值的第一可靠性值的候选符号。

因此,当存在具有等于或大于第一阈值的第一可靠性值的任何候选符号时,基于第一可靠性值来调节变量节点的值。同时,为了即使在不存在具有等于或大于第一阈值的第一可靠性值的候选符号时也保证变量节点的可靠性,引入除第一可靠性值之外的第二可靠性值。第二可靠性值可以指示变量节点的当前值的可靠性或不可靠性。为了指示第二可靠性值,可以分配一个比特或两个比特或更多个比特。第二可靠性值具有一个比特或多个比特的两种情况将分别在下面被描述。

首先,下面将描述分配一个比特来指示第二可靠性值的情况。

对于其对应候选符号具有小于第一阈值的第一可靠性值的每个变量节点,符号校正单元122b可以确定在候选符号之中是否存在具有的第一可靠性值等于或大于比第一阈值小的第二阈值的候选符号。当存在对应候选符号具有小于第一阈值且等于或大于第二阈值的第一可靠性值的变量节点时,符号校正单元122b可以确定是否将第二可靠性值设置在对应变量节点中。例如,符号校正单元122b可以校验被分配以指示第二可靠性值的比特是否被设置为1。

当在与具有的第一可靠性值小于第一阈值且等于或大于第二阈值的候选符号相对应的变量节点中未设置第二可靠性值时,符号校正单元122b可以在对应变量节点中设置第二可靠性值。因此,当在变量节点中的候选符号之中不存在具有的第一可靠性值等于或大于第一阈值的候选符号、但是在候选符号之中存在具有的第一可靠性值等于或大于比第一阈值小的第二阈值的候选符号的情况下,符号校正单元122b可以在对应变量节点中设置第二可靠性值。例如,符号校正单元122b可以针对对应变量节点将第二可靠性值设置为1。在基于第二可靠性值调节任意变量节点的值之前,可以不初始化与该任意变量节点相对应的第二可靠性值。

当在变量节点中设置第二可靠性值时,符号校正单元122b可以调节对应变量节点的值。如上所述,当存在具有的第一可靠性值小于第一阈值并且等于或大于第二阈值的对应候选符号时,在变量节点中设置第二可靠性值。例如,当设置第二可靠性值时,符号校正单元122b可以将变量节点的值调节为具有的第一可靠性值小于第一阈值并且等于或大于第二阈值的候选符号。当变量节点的值被调节时,符号校正单元122b可以向可靠性值初始化单元122a通知这种调节。因此,可靠性值初始化单元122a可以初始化对应变量节点的第二可靠性值。

接下来,下面将描述分配两个或更多个比特以指示第二可靠性值的情况。

当分配两个或更多个比特来指示第二可靠性值时,可以使用n(其中n是4或更大的自然数)个阈值。对于具有的第一可靠性值等于或大于第一阈值的对应候选符号不存在的每个变量节点,符号校正单元122b可以确定在候选符号之中是否存在具有的第一可靠性值等于或大于比第一阈值小的第二阈值至第n-1阈值的候选符号。可以从更高的阈值顺序地执行这样的确定,即,以第二阈值到第n-1阈值的顺序执行。这里,当确定在候选符号之中存在具有的第一可靠性值等于或大于第二阈值至第n-1阈值中的任何一个阈值的候选符号时,关于剩余阈值的确定可以不被执行。例如,关于其中具有的第一可靠性值等于或大于第二阈值的候选符号存在的变量节点,可以不执行在候选符号之中是否存在具有的第一可靠性值等于或大于第三阈值至第n-1阈值的候选符号的确定。

当确定存在具有等于或大于第二阈值至第n-1阈值中的任何一个阈值的第一可靠性值的候选符号时,符号校正单元122b可以将对应变量节点的第二可靠性值增加与相关阈值相对应的设置值。这里,相关阈值越大,设置值越高。例如,当存在具有等于或大于第二阈值的第一可靠性值的候选符号时,符号校正单元122b可以将对应变量节点的第二可靠性值增加第一设置值,而当存在具有等于或大于第三阈值的第一可靠性值的候选符号时,符号校正单元122b可以将对应变量节点的第二可靠性值增加小于第一设置值的第二设置值。

符号校正单元122b可以确定更新的第二可靠性值是否等于或大于第n阈值。当更新的第二可靠性值小于第n阈值时,可以在下一次迭代中累计计算第二可靠性值。当更新的第二可靠性值等于或大于第n阈值时,符号校正单元122b可以调节对应变量节点的值。例如,符号校正单元122b可以将对应变量节点的值调节为在当前迭代中更新第二可靠性值的候选符号。

当基于第二可靠性值调节变量节点的值时,符号校正单元122b可以向可靠性值初始化单元122a通知这种调节。因此,可靠性值初始化单元122a可以初始化对应变量节点的第二可靠性值。

符号校正单元122b可以在每次迭代中将变量节点的值提供给校正子校验单元130。提供给校正子校验单元130的变量节点的值中的至少一个可以是基于第一可靠性值和第二可靠性值调节的值。

阈值设置单元122c可以设置阈值,该阈值是用于确定是否调节变量节点的值的标准。

在一个实施例中,阈值设置单元122c可以将初始阈值设置为预定值。在执行第一次迭代之前存在初始阈值。在一个实施例中,阈值设置单元122c可以针对所有变量节点设置相同的第n阈值。例如,可以针对所有变量节点设置相同的第一阈值,并且还可以针对所有变量节点设置相同的第二阈值。

在一个实施例中,阈值设置单元122c可以根据变量节点的度(degree)将初始阈值设置为不同的值。例如,阈值设置单元122c可以针对具有较高度的变量节点将初始阈值设置为较高值,并且针对具有较低度的变量节点将初始阈值设置为较低值。

在一个实施例中,阈值设置单元122c可以根据迭代轮次改变阈值中的至少一个。例如,阈值设置单元122c可以随着迭代轮次增加而将阈值中的至少一个设置为更高的值。在一些实现中,阈值设置单元122c可以随着迭代轮次增加而将阈值中的至少一个设置为更低的值。

在一个实施例中,阈值设置单元122c可以根据与校正子校验相对应的UCN的数目来改变阈值中的至少一个。例如,与第i次迭代相对应的UCN的数目越大,阈值设置单元122c可以在第i+1次迭代中将阈值中的至少一个设置为更高的值。在一些实现中,与第i次迭代相对应的UCN的数目越大,阈值设置单元122c可以将阈值中的至少一个设置为更低的值。

作为第i次迭代的结果,校正子校验单元130可以从节点处理器120接收变量节点的值(例如,变量节点向量)。校正子校验单元130可以将变量节点的值存储在第一缓冲器132中,并且可以对接收的变量节点矢量执行校正子校验。例如,可以通过校验由以下等式(1)计算的校正子矢量Si的所有条目是否为“0”来执行校正子校验。

这里,Si表示第i次迭代中的校正子矢量,H表示纠错码的奇偶校验矩阵,

Figure BDA0002094868290000132

表示在第i次迭代中变量节点向量Ci的转置。

校正子矢量Si的所有条目都是“0”的情况意味着校正子校验已经通过。这意味着已经在第i次迭代中成功地执行了纠错解码,并且因此,校正子校验单元130可以输出存储在第一缓冲器132中的变量节点矢量作为解码的码字。

同时,在校正子矢量Si的条目之中存在除“0”之外的条目的情况意味着校正子校验已经失败。这意味着纠错解码在第i次迭代中失败。当纠错解码在第i次迭代中失败时,校正子校验单元130可以将对应于第i次迭代的校正子矢量Si发送到节点处理器120,或者可以提供关于与校正子矢量Si相对应的不满足校验节点(UCN)的数目的信息到节点处理器120。这里,UCN可以对应于校正子矢量Si的条目之中除“0”之外的每个条目。

如果在最大迭代次数I内没有生成满足纠错码的奇偶校验矩阵的有效码字,则校正子校验单元130可以输出指示纠错解码已经失败的失败信号。本文中稍后将参考图2至图4进一步说明由校正子校验单元130执行的处理和操作,包括确定通过或失败并且输出对应的码字或失败信号。

后处理器200可以支持纠错解码器100,使得纠错解码器100能够生成有效码字。例如,当纠错解码器100未能在最大迭代次数内生成有效码字时,后处理器200可以辅助纠错解码器100。在后处理器200的帮助下,修改用于纠错解码的各种参数,并且纠错解码器100使用修改的参数再次执行纠错解码。

图2是示出奇偶校验矩阵的示例的图。

在图2中,描绘了定义(n,k)码的奇偶校验矩阵H的示例。(n,k)码可以被定义为具有(n-k)×n的大小的奇偶校验矩阵。奇偶校验矩阵中的各个条目可以由属于伽罗华域的元素表示。伽罗华域GF(q)是q个元素的有限域,并且伽罗华域GF(q)的元素可被表示为{0,α01,...,αq-2}。当包括在奇偶校验矩阵中的非零项条目α01,...,αq-2的数目比0项的数目小得多时,(n,k)码可以被称为(n,k)LDPC码。这里,n和k可以是自然数。同时,属于由GF(2)表示的伽罗华域的LDPC码可以是二进制LDPC码,并且属于由GF(q)(其中q>2)表示的伽罗华域的LDPC码可以是非二进制的LDPC(NB-LDPC)码。在图2中,作为示例示出了具有GF(4)的元素作为条目的NB-LDPC码的奇偶校验矩阵。

图3是示出用于图2的奇偶校验矩阵的Tanner图的示例的图。

(n,k)码可以由Tanner图表示,该Tanner图是二分图的表达。Tanner图可以由校验节点、变量节点和边缘来表示。校验节点可以对应于奇偶校验矩阵的行,并且变量节点可以对应于奇偶校验矩阵的列。每个边缘将单个校验节点耦合到单个变量节点,并且代表由奇偶校验矩阵中的除0之外的元素表示的条目。

如图3中所示,图2中所示的(n,k)码的奇偶校验矩阵可以由包括n-k个校验节点CN1至CNn-k和n个变量节点VN1至VNn的Tanner图表示。将校验节点CN1至CNn-k耦合到变量节点VN1至VNn的实线和虚线表示边缘。

可以基于在图3所示的Tanner图中的校验节点CN1至CNn-k与变量节点VN1至VNn之间的迭代消息传递算法来执行迭代解码。在每次迭代中,可以在校验节点CN1至CNn-k与变量节点VN1至VNn之间传送C2V消息和V2C消息时执行迭代解码。变量节点可以使用从与其耦合的校验节点接收的C2V消息来执行纠错,并且校验节点可以使用从与其耦合的变量节点接收的V2C消息来执行校验操作。当由任何一个校验节点对与其耦合的所有变量节点的值执行异或(XOR)运算而获得的结果值仅由0组成时,对应的校验节点可以被确定为满足。相反,当由任何一个校验节点对与其耦合的所有变量节点的值执行XOR运算而获得的结果值包含除0以外的元素时,对应的校验节点可以被确定为不满足,并且可以称为“UCN”。这里,对其执行XOR运算的变量节点的值可以是在边缘增益处理之后获得的值。

图4是示出使用图2所示的奇偶校验矩阵计算的校正子矢量的示例的图。

如上所述,可以基于奇偶校验矩阵H和作为来自第i次迭代的结果值的变量节点矢量Ci的转置来计算校正子矢量Si。校正子矢量Si的各个条目Si1、Si2...Sin-k对应于图3所示的Tanner图中的校验节点CN1至CNn-k

如果校正子矢量Si的所有条目Si1、Si2...Sin-k都指示“0”,则确定校正子校验通过。因此,可以终止对相应读取矢量的迭代解码,并且可以输出作为来自第i次迭代的结果值的变量节点矢量Ci作为解码码字。

如果在校正子矢量Si的条目Si1、Si2...Sin-k之中存在至少一个非0的条目,则确定校正子校验已经失败。因此,当迭代次数尚未达到最大迭代次数时,可以执行下一次迭代。这里,非0的条目被称为UCN。

图5是示出基于所公开技术的实施例的符号配置过程的示例的图。

在图5所示的实施例中,假设从信道接收的读取矢量由14比特组成。

符号配置单元110可以将包括在读取矢量中的比特分组为预定数目的单元以配置多个符号。例如,当使用GF(4)符号时,符号配置单元110可以将单个符号配置为包括两个比特。由于当读取矢量由14位组成时符号配置单元110可以配置总共七个符号,每个符号包括两个比特。符号配置单元可以将配置的符号顺序地分配给变量节点VN1、...、VN7

下面,假设“00”的二进制表示对应于“0”的GF(4)表示,“01”的二进制表示对应于“1”的GF(4)表示,“10”的二进制表示对应于“α”的GF(4)表示,以及“11”的二进制表示对应于“α2”的GF(4)表示。

图6是用于说明基于所公开技术的实施例的阈值的图。在设置用于调节每个变量节点的值的阈值时,可以基于第二可靠性值是否被用于调节每个变量节点的值并且基于是单个比特还是多个比特被分配以指示第二可靠性值,来考虑以下的不同情况。

当仅使用第一可靠性值并且不使用第二可靠性值时,单个阈值(即,第一阈值)可以用作用于调节每个变量节点的值的确定标准。

当使用第一可靠性值和第二可靠性值两者并且单个比特被分配以指示第二可靠性值时,两个阈值,即,第一阈值和第二阈值,可以用作用于调节每个变量节点的值的确定标准。

当使用第一可靠性值和第二可靠性值两者并且两个或更多个比特被分配以指示第二可靠性值时,n个阈值(其中n是4或更大的自然数)可以用作用于调节每个变量节点的值的确定标准。

作为示例,图6示出了以下情况:使用第一可靠性值和第二可靠性值两者,两个或更多个比特被分配以指示第二可靠性值,以及四个阈值用作用于调节变量节点的值的确定标准。

例如,第一阈值至第三阈值可以是要与候选符号的第一可靠性值进行比较的参考值,并且第四阈值可以是要与变量节点的第二可靠性值进行比较的参考值。

如上所述,可以根据变量节点的度来不同地设置阈值。例如,可以在具有较高度的变量节点中将阈值中的至少一个设置为较高值,并且可以在具有较低度的变量节点中将阈值中的至少一个设置为较低值。在一些实现中,还可以以相反的方式设置阈值,使得在具有较高度的变量节点中将阈值中的至少一个设置为较低值,并且在具有较低度的变量节点中将阈值电压中的至少一个设置为较高值。

在图6所示的示例中,在具有相对较高度32的变量节点VN1和VN3中设置较高阈值,并且在具有相对较低度26的变量节点VN2和VNn中设置较低阈值。

图7是示出根据本公开技术的实施例的用于初始化第一可靠性值的过程的示例的图。

在图7中,为了便于描述,仅示出了包括在Tanner图中的一些变量节点和一些校验节点。如图7中所示,假设使用GF(4)符号,并且将初始符号“1”分配给变量节点VN1,将初始符号“0”分配给变量节点VN2,将初始符号“α”分配给变量节点VN3,并且将初始符号“α2”分配给变量节点VNn

在图7的示例中,分配给各个变量节点的初始符号与对应于变量节点的候选符号之间的汉明距离越短,候选符号的第一可靠性值被初始化为更高的值。为了便于描述,在以下描述中,作为示例仅详细讨论变量节点VN1、...、VNn中的两个变量节点VN1和VN2,并且相同的配置也可以应用于剩余变量节点VN3、...、VNn

图7示出对于每个变量节点针对候选符号“0”、“1”、“α”和“α2”设置的第一可靠性值。参考图7,在变量节点VN1的候选符号之中,可以针对具有到变量节点VN1的初始符号“1”的最短汉明距离0的最近候选符号“1”设置作为最高值3的第一可靠性值。在变量节点VN1的候选符号之中,可以针对具有到变量节点VN1的初始符号“1”的最长汉明距离2的最远候选符号“α”设置作为最低值0的第一可靠性值。在变量节点VN1的候选符号中,可以针对具有到变量节点VN1的初始符号“1”的汉明距离1的候选符号“0”和“α2”设置作为中间值的第一可靠性值1,该中间值在“3”的最高值和“0”的最低值之间。

类似地,在变量节点VN2的候选符号之中,可以针对具有到变量节点VN2的初始符号“0”的最短汉明距离0的最近候选符号“0”设置作为最高值3的第一可靠性值。在变量节点VN2的候选符号之中,可以针对具有到变量节点VN2的初始符号“0”的最长汉明距离2的最远候选符号“α2”设置作为最低值0的第一可靠性值。在变量节点VN2的候选符号之中,可以针对具有到变量节点VN2的初始符号“0”的汉明距离1的候选符号“1”和“α”设置作为中间值的第一可靠性值1,该中间值在“3”的最高值和“0”的最低值之间。

图8是示出基于所公开的技术的实施例的用于根据第一可靠性值校正符号的过程的示例的图。

符号校正单元122b可以在每次迭代中根据输入到各个变量节点VN1、VN2、VN3...VNn的C2V消息来更新与各个变量节点VN1、VN2、VN3...VNn相对应的候选符号的第一可靠性值。例如,符号校正单元122b可以将任意候选符号的第一可靠性值增加C2V消息的数目,该C2V消息在变量节点更新模块122处被接收并且指示该任意候选符号。例如,当接收到指示候选符号“α”的一个C2V消息时,符号校正单元122b可以将候选符号“α”的第一可靠性值增加1。此外,当接收到指示候选符号“α”的两个C2V消息时,符号校正单元122b可以将候选符号“α”的第一可靠性值增加2。

在图8的示例中,可变节点VN1和VN2的候选符号的第一可靠性值从图7中所示的它们的初始值进行更新。假设在参考图7描述的初始化过程之后,变量节点VN1接收指示候选符号“0”的17个C2V消息,接收指示候选符号“1”的4个C2V消息,接收指示候选符号“α”的5个C2V消息,以及接收指示候选符号“α2”的6个C2V消息。因此,变量节点VN1的候选符号“0”的第一可靠性值可以从1的初始值更新为18,变量节点VN1的候选符号“1”的第一可靠性值可以从3的初始值更新为7,变量节点VN1的候选符号“α”的第一可靠性值可以从0的初始值更新为5,以及变量节点VN1的候选符号“α2”的第一可靠性值可以从1的初始值更新为7。

在图8的示例中,假设变量节点VN2接收指示候选符号“0”的8个C2V消息,接收指示候选符号“1”的7个C2V消息,接收指示候选符号“α”的4个C2V消息,以及接收指示候选符号“α2”的7个C2V消息。因此,变量节点VN2的候选符号“0”的第一可靠性值可以从3的初始值更新为11,变量节点VN2的候选符号“1”的第一可靠性值可以从1的初始值更新为8,变量节点VN2的候选符号“α”的第一可靠性值可以从1的初始值更新为5,以及变量节点VN2的候选符号“α2”的第一可靠性值可以从0的初始值更新为7。

在更新了第一可靠性值之后,符号校正单元122b可以针对每个变量节点检查在候选符号之中是否存在具有的第一可靠性值等于或大于第一阈值的候选符号,并且可以调节具有第一可靠性值等于或大于第一阈值的对应候选符号的变量节点的值。在图8的示例中,假设对应于变量节点VN1的第一阈值被设置为13,并且对应于变量节点VN2的第一阈值被设置为12。

在变量节点VN1的情况下,由于在变量节点VN1的候选符号之中候选符号“0”的第一可靠性值等于或大于作为对应于变量节点VN1的第一阈值13,变量节点VN1的值可以从“1”调节为“0”。在变量节点VN2的情况下,由于在变量节点VN2的候选符号之中不存在具有的第一可靠性值等于或大于作为对应于变量节点VN2的第一阈值12的候选符号,可以不调节变量节点VN2的值。

图9是用于说明基于所公开技术的实施例的第二可靠性值的图。

与图7的实施例不同,在图9中,针对各个变量节点设置第二可靠性值以及第一可靠性值。如上讨论,当在变量节点的候选符号之中不存在具有的第一可靠性值等于或大于第一阈值的候选符号时,但是存在具有的第一可靠性值等于或大于预定阈值的候选符号的情况下,可以在对应的变量节点中设置(或更新)第二可靠性值。当变量节点具有第二可靠性值时,可以认为存在变量节点的当前值具有错误的可能性。换句话说,第二可靠性值可以指示变量节点的当前值的不可靠性。

每当每次迭代开始时,可以初始化第一可靠性值,但是即使迭代过程进行也可能不初始化第二可靠性值。然而,当基于第二可靠性值将变量节点的值调节为候选符号中的任何一个时,可以初始化第二可靠性值。如上所述,可以分配一个比特或两个比特或更多比特来指示第二可靠性值。

图10是示出基于所公开的技术的实施例的用于设置第二可靠性值的过程的示例的图。

在图10所示的实施例中,分配一个比特以指示第二可靠性值。

符号校正单元122b可以在每次迭代中基于输入到各个变量节点VN1、VN2、VN3...VNn的C2V消息来更新与各个变量节点VN1、VN2、VN3...VNn对应的候选符号的第一可靠性值。

在图10的示例中,在初始化第一可靠性值和第二可靠性值之后,变量节点VN1接收指示候选符号“0”的十七个C2V消息,接收指示候选符号“1”的四个C2V消息,接收指示候选符号“α”的五个C2V消息,以及接收指示候选符号“α2”的六个C2V消息。因此,变量节点VN1的候选符号“0”的第一可靠性值可以从1的初始值更新为18,变量节点VN1的候选符号“1”的第一可靠性值可以从3的初始值更新为7,变量节点VN1的候选符号“α”的第一可靠性值可以从0的初始值更新为5,以及变量节点VN1的候选符号“α2”的第一可靠性值可以从1的初始值更新为7。

此外,在图10的示例中,变量节点VN2接收指示候选符号“0”的六个C2V消息,接收指示候选符号“1”的九个C2V消息,接收指示候选符号“α”的四个C2V消息,以及接收指示候选符号“α2”的七个C2V消息。因此,变量节点VN2的候选符号“0”的第一可靠性值可以从3的初始值更新为9,变量节点VN2的候选符号“1”的第一可靠性值可以从1的初始值更新为10,变量节点VN2的候选符号“α”的第一可靠性值可以从1的初始值更新为5,以及变量节点VN2的候选符号“α2”的第一可靠性值可以从0的初始值更新为7。

在更新了第一可靠性值之后,符号校正单元122b可以针对每个变量节点检查在候选符号之中是否存在具有的第一可靠性值等于或大于第一阈值的候选符号,并且可以调节具有第一可靠性值等于或大于第一阈值的对应候选符号的变量节点的值。在图10的示例中,假定对应于变量节点VN1的第一阈值被设置为13,并且对应于变量节点VN2的第一阈值被设置为12。

在变量节点VN1的情况下,由于在变量节点VN1的候选符号之中的候选符号“0”的第一可靠性值等于或大于13(对应于变量节点VN1的第一阈值),变量节点VN1的值可以从“1”调节到“0”。

在变量节点VN2的情况下,由于在变量节点VN2的候选符号之中不存在具有的第一可靠性值等于或大于12(对应于变量节点VN2的第一阈值)的候选符号,可以不调节变量节点VN2的值。

当在变量节点的候选符号之中不存在具有等于或大于第一阈值的第一可靠性值的候选符号时,符号校正单元122b可以确定在变量节点的候选符号之中是否存在具有等于或大于第二阈值的第一可靠性值的候选符号。当存在具有小于第一阈值并且等于或大于第二阈值的第一可靠性值的候选符号时,符号校正单元122b可以在对应的变量节点中设置第二可靠性值。在图10的示例中,对应于变量节点VN2的第二阈值被设置为10。

在这种情况下,由于在变量节点VN2的候选符号之中的候选符号“1”的第一可靠性值等于或大于10(对应于变量节点VN2的第二阈值),可以在变量节点VN2中设置第二可靠性值。因此,在图10中,变量节点VN2的第二可靠性值被设置为1。

图11是示出基于所公开的技术的实施例的用于根据第二可靠性值校正符号的过程的示例的图。

图11示出了下一次迭代的情况的示例,其中第一可靠性值被初始化,并且如上面参考图10所述完成符号修改和第二可靠性值设置之后保持第二可靠性值。在图11的示例中,基于在下一次迭代中由变量节点接收的C2V消息的数目来调节变量节点的值。

类似于参考图10描述的配置,符号校正单元122b可以基于由变量节点接收的C2V消息的数目来更新候选符号的第一可靠性值。当存在其更新的第一可靠性值等于或大于第一阈值的候选符号时,符号校正单元122b可以将对应的变量节点的值调节为候选符号。在图11的示例中,变量节点VN1的候选符号“α2”的第一可靠性值等于或大于13(对应于变量节点VN1的第一阈值),因此将变量节点VN1的值从“0”调节到“α2”。

同时,当不存在其更新的第一可靠性值等于或大于第一阈值的候选符号时,符号校正单元122b可以检查是否存在其更新的第一可靠性值等于或大于第二阈值的候选符号。当存在其更新的第一可靠性值等于或大于第二阈值的候选符号时,符号校正单元122b可以检查在对应的变量节点中是否设置了第二可靠性值。当在对应的变量节点中没有设置第二可靠性值时,符号校正单元122b可以在对应的变量节点中设置第二可靠性值,而当在对应的变量节点中设置了第二可靠性值时,符号校正单元122b可以调节对应的变量节点的值。

在图11的示例中,变量节点VN2的候选符号“α”的第一可靠性值等于或大于10(对应于变量节点VN2的第二阈值)。由于在先前迭代中已经在变量节点VN2中设置了第二可靠性值,符号校正单元可以调节变量节点VN2的值。在这种情况下,符号校正单元可以在当前迭代中将变量节点的值调节为具有等于或大于第二阈值的第一可靠性值的候选符号。

例如,如上面参考图10所述,在变量节点VN2的候选符号之中,即使候选符号“1”的第一可靠性值在先前迭代中等于或大于第二阈值并且然后在变量节点VN2中设置第二可靠性值,但是在当前迭代中当在变量节点VN2的候选符号之中的候选符号“α”的第一可靠性值等于或大于第二阈值时,可以将变量节点VN2的值调节为“α”,如图11所示。

图12是示出根据所公开技术的实施例的用于设置第二可靠性值的过程的示例的图。

在图12的示例中,分配两个或更多个比特以指示第二可靠性值。

在图12的示例中,在初始化第一可靠性值和第二可靠性值之后,基于由变量节点VN1和VN2接收的C2V消息来更新第一可靠性值。

在图12的示例中,变量节点VN1的候选符号“0”的第一可靠性值被更新为11,变量节点VN1的候选符号“1”的第一可靠性值被更新为6,变量节点VN1的候选符号“α”的第一可靠性值被更新为8,并且变量节点VN1的候选符号“α2”的第一可靠性值被更新为9。另外,变量节点VN2的候选符号“0”的第一可靠性值被更新为7,变量节点VN2的候选符号“1”的第一可靠性值被更新为8,变量节点VN2的候选符号“α”的第一可靠性值被更新为6,并且变量节点VN2的候选符号“α2”的第一可靠性值被更新为7。

在更新了第一可靠性值之后,符号校正单元122b可以针对每个变量节点检查在候选符号之中是否存在具有等于或大于第一阈值的第一可靠性值的候选符号,并且可以调节其中存在具有等于或大于第一阈值的第一可靠性值的候选符号的变量节点的值。作为一个例子,对应于变量节点VN1的第一阈值被设置为13,并且对应于变量节点VN2的第一阈值被设置为12。由于在变量节点VN1和VN2的候选符号之中不存在满足第一阈值的候选符号,可以不调节变量节点VN1和VN2的值。

针对其对应候选符号不具有等于或大于第一阈值的第一可靠性值的每个变量节点,符号校正单元122b可以确定是否存在具有等于或大于第二阈值的第一可靠性值的候选符号。当存在具有小于第一阈值并且等于或大于第二阈值的第一可靠性值的候选符号时,符号校正单元122b可以更新对应的变量节点的第二可靠性值。在图12的示例中,对应于变量节点VN1的第二阈值被设置为11,并且对应于变量节点VN2的第二阈值被设置为10。在这种情况下,由于在变量节点VN1的候选符号之中候选符号“0”的第一可靠性值等于或大于11(对应于变量节点VN1的第二阈值),可以更新变量节点VN1的第二可靠性值。此时,可以将第二可靠性值更新为与第二阈值对应的设置值。对于每个对应的阈值,设置值可以不同。例如,对应于第二阈值的设置值可以是2,并且对应于第三阈值的设置值可以是1。在图12的示例中,对应于第二阈值的设置值是2,然后变量节点VN1的第二可靠性值被更新为2。

针对其对应候选符号不具有等于或大于第二阈值的第一可靠性值的每个变量节点,符号校正单元122b可以确定是否存在具有等于或大于第三阈值的第一可靠性值的候选符号。当确定存在具有小于第二阈值并且等于或大于第三阈值的第一可靠性值的候选符号时,符号校正单元122b可以更新对应的变量节点的第二可靠性值。在图12的示例中,对应于变量节点VN2的第三阈值被设置为8。在这种情况下,由于在变量节点VN2的候选符号之中候选符号“1”的第一可靠性值等于或大于8(对应于变量节点VN2的第三阈值),可以更新变量节点VN2的第二可靠性值。在图12的示例中,对应于第三阈值的设置值是1,然后变量节点VN2的第二可靠性值被更新为1。

图13是示出根据所公开技术的实施例的用于根据第二可靠性值校正符号的过程的示例的图。

图13示出了下一次迭代的示例,其中第一可靠性值被初始化,并且在如上面参考图12所述执行了第二可靠性值的更新之后保持第二可靠性值。在图13的示例中,在下一次迭代中接收C2V消息,并且符号校正单元122b可以基于由变量节点接收的C2V消息的数目来更新候选符号的第一可靠性值。

在更新了第一可靠性值之后,符号校正单元122b可以针对每个变量节点检查在候选符号之中是否存在具有等于或大于第一阈值的第一可靠性值的候选符号,并且当存在具有等于或大于第一阈值的第一可靠性值的候选符号时调节变量节点的值。在图13的示例中,假设对应于变量节点VN1的第一阈值被设置为13,并且对应于变量节点VN2的第一阈值被设置为12。在这种情况下,由于在变量节点VN1和VN2的候选符号之中不存在满足第一阈值的候选符号,可以不调节变量节点VN1和VN2的值。

针对其候选符号不具有等于或大于第一阈值的第一可靠性值的每个变量节点,符号校正单元122b可以确定是否存在具有等于或大于第二阈值的第一可靠性值的候选符号。当存在具有小于第一阈值并且等于或大于第二阈值的第一可靠性值的候选符号时,符号校正单元122b可以更新对应的变量节点的第二可靠性值。在图13的示例中,对应于变量节点VN1的第二阈值被设置为11,并且对应于变量节点VN2的第二阈值被设置为10。在这种情况下,由于在变量节点VN1和VN2的候选符号之中不存在满足第二阈值的候选符号,可以不更新变量节点VN1和VN2的第二可靠性值。

针对其候选符号不具有等于或大于第二阈值的第一可靠性值的每个变量节点,符号校正单元122b可以确定是否存在具有等于或大于第三阈值的第一可靠性值的候选符号。当确定存在具有小于第二阈值并且等于或大于第三阈值的第一可靠性值的候选符号时,符号校正单元122b可以更新对应的变量节点的第二可靠性值。在图13的示例中,对应于变量节点VN1的第三阈值被设置为9,并且对应于变量节点VN2的第三阈值被设置为8。在这种情况下,由于在变量节点VN1的候选符号之中候选符号“α”的第一可靠性值等于或大于9(对应于变量节点VN1的第三阈值),可以更新变量节点VN1的第二可靠性值。在图13的示例中,对应于第三阈值的设置值是1,并且然后变量节点VN1的第二可靠性值从2被更新为3。

当变量节点的第二可靠性值被更新时,符号校正单元122b可以确定更新的第二可靠性值是否等于或大于第四阈值。如果更新的第二可靠性值等于或大于第四阈值,则符号校正单元122b可以调节变量节点的值。假设对应于变量节点VN1的第四阈值被设置为3。在这种情况下,由于变量节点VN1的更新的第二可靠性值等于或大于3(对应于变量节点VN1的第四阈值),可以调节变量节点VN1的值。变量节点VN1的值可被调节为候选符号,即,其第一可靠性值引起在当前迭代中更新第二可靠性值的候选符号“α”。

由于在变量节点VN2的候选符号之中不存在满足第三阈值的候选符号,可以不更新变量节点VN2的第二可靠性值。

图14是示出基于所公开技术的实施例的操作纠错电路的方法的流程图。在一些实现中,可以由如图1所示的纠错电路10执行图14所示的操作。

在一些实现中,图14中所示的步骤中的至少一个可以被省略,并且可以改变步骤的顺序。

在步骤1401,纠错电路10可以接收对应于码字的读取矢量。

在步骤1403,纠错电路10可以基于读取矢量配置初始符号,并且可以以一对一的对应关系将配置的初始符号分配给各个变量节点。

在步骤1405,纠错电路10可以基于分配给各个变量节点的初始符号,初始化可以被选择作为各个变量节点的值的候选符号的第一可靠性值。在一个实施例中,纠错电路10可以根据分配给各个变量节点的初始符号与候选符号之间的汉明距离,不同地初始化各个候选符号的第一可靠性值。例如,纠错电路10可以初始化第一可靠性值,使得初始符号与候选符号之间的汉明距离越短,候选符号的第一可靠性值被初始化为更高的值,而初始符号与候选符号之间的汉明距离越长,候选符号的第一可靠性值被初始化为更低的值。在一个实施例中,纠错电路10可以通过考虑迭代的轮次来不同地初始化各个候选符号的第一可靠性值。在一些实现中,除了汉明距离之外还可以考虑迭代的轮次来初始化各个候选符号的第一可靠性值。在一个实施例中,随着迭代轮次增加并且初始符号与对应候选符号之间的汉明距离越短,纠错电路10可以将候选符号的第一可靠性值初始化为比先前迭代轮次中的值更高的值。在一个实施例中,纠错电路10可以通过考虑不满足校验节点(UCN)的数目来初始化候选符号的第一可靠性值。在一些实现中,除了汉明距离之外还可以考虑UCN的数目来初始化各个候选符号的第一可靠性值。在一个实施例中,第i次迭代中的UCN的数目越大并且初始符号与候选符号之间的汉明距离越短,纠错电路10可以在第i+1次迭代中将候选符号的第一可靠性值初始化为更高的值。

在步骤1407,纠错电路10可以设置阈值,该阈值用作用于确定是否调节变量节点的值的标准。在一个实施例中,纠错电路10可以将初始阈值设置为预定值,在执行第一次迭代之前存在阈值。在一个实施例中,纠错电路10可以针对所有变量节点设置相同的第n阈值。例如,可以针对所有变量节点设置相同的第一阈值,并且还可以针对所有变量节点设置相同的第二阈值。在一个实施例中,纠错电路10可以根据变量节点的度将初始阈值设置为不同的值。例如,纠错电路10可以针对具有较高度的变量节点将初始阈值设置为较高值,并且针对具有较低度的变量节点将初始阈值设置较低值。在一个实施例中,纠错电路10可以根据迭代的轮次改变阈值中的至少一个。例如,随着迭代轮次增加,纠错电路10可以将阈值中的至少一个设置为更高的值。在一个实施例中,纠错电路10可以根据与校正子校验相对应的UCN的数目来改变阈值中的至少一个。例如,与第i次迭代相对应的UCN的数目越大,纠错电路10可以在第i+1次迭代中将阈值中的至少一个设置为更高的值。

在步骤1409,纠错电路10可以执行校验节点更新和变量节点更新。在步骤1409,可以执行在校验节点与变量节点之间的C2V消息和V2C消息的交换。

在步骤1411,纠错电路10可以针对每个变量节点确定是否存在具有等于或大于第一阈值的第一可靠性值的候选符号。当确定存在具有等于或大于第一阈值的第一可靠性值的候选符号时(在“是”的情况下),可以执行步骤1413,否则(在“否”的情况下)可以执行步骤1421。当存在具有等于或大于第一阈值的第一可靠性值的候选符号时,执行步骤1413。当不存在具有等于或大于第一阈值的第一可靠性值的候选符号时,执行步骤1421。

在步骤1413,纠错电路10可以调节与具有的第一可靠性值等于或大于第一阈值的候选符号相对应的变量节点的值。

在步骤1415,纠错电路10可以基于变量节点的值来执行校正子校验,并且可以确定校正子校验是否已经通过。当校正子校验通过时(在“是”的情况下),可以执行步骤1417,否则(在“否”的情况下)可以执行步骤1441。

在步骤1417,纠错电路10可以输出已经通过校正子校验的变量节点的值作为解码的码字。

当确定在变量节点的候选符号之中不存在具有等于或大于第一阈值的第一可靠性值的候选符号时执行步骤1421,在步骤1421,纠错电路10可以确定在对应变量节点的候选符号之中是否存在具有等于或大于第二阈值的第一可靠性值的候选符号。当确定在对应变量节点的候选符号之中存在具有等于或大于第二阈值的第一可靠性值的候选符号时(在“是”的情况下),可以执行步骤1423,否则(在“否”的情况下)可以执行步骤1415。

在步骤1423,纠错电路10可以检查在变量节点中是否设置了第二可靠性值。当在变量节点中设置了第二可靠性值时(在“是”的情况下),可以执行步骤1425,否则(在“否”的情况下)可以执行步骤1431。

在步骤1425,纠错电路10可以将变量节点的值调节为具有的第一可靠性值等于或大于第二阈值的候选符号。

在步骤1427,纠错电路10可以初始化与变量节点相对应的第二可靠性值,该变量节点的值已在步骤1425被调节。此后,可以执行步骤1415。

当在步骤1423确定未设置第二可靠性值时执行步骤1431,在步骤1431,纠错电路10可以在对应变量节点中设置第二可靠性值。此后,可以执行步骤1415。

当在步骤1415确定尚未通过校正子校验时执行步骤1441,在步骤1441,纠错电路10可以确定所执行的迭代次数是否达到最大迭代次数I。当执行的迭代次数达到最大迭代次数I时(在“是”的情况下),执行步骤1443以输出失败信号。当确定执行的迭代次数未达到最大迭代次数I时(在“否”的情况下),可以在步骤1451执行第i+1次迭代。

图15是示出基于所公开技术的实施例的操作纠错电路的方法的流程图。

在图15的示例中,将省略针对已经参照图14说明的操作的说明。例如,图15中的步骤1501、步骤1503、步骤1505、步骤1507、步骤1509、步骤1511、步骤1513、步骤1515、步骤1517、步骤1541、步骤1543和步骤1551可以以与图14中的步骤1401、步骤1403、步骤1405、步骤1407、步骤1409、步骤1411、步骤1413、步骤1415、步骤1417、步骤1441、步骤1443和步骤1451相同的方式执行。

当在步骤1511确定在变量节点的候选符号之中不存在具有等于或大于第一阈值的第一可靠性值的候选符号时执行步骤1521,在步骤1521,纠错电路10可以确定在对应变量节点的候选符号之中是否存在具有等于或大于第二阈值至第n-1阈值(其中n是4或更大的自然数)的第一可靠性值的候选符号。这样的确定可以从较高的阈值顺序地执行,即,从第二阈值到第n-1阈值的顺序。一旦确定在候选符号之中存在具有等于或大于第二阈值至第n-1阈值中任何一个阈值的第一可靠性值的候选符号,则确定步骤可以停止而不需要执行针对剩余阈值的确定。例如,如果对应变量节点具有第一可靠性值等于或大于第二阈值的候选符号,则可以不执行在候选符号之中是否存在具有等于或大于第三阈值到第n-1阈值的第一可靠性值的候选符号的确定。当确定在对应变量节点的候选符号之中存在具有等于或大于第二阈值至第n-1阈值的第一可靠性值的候选符号时(在“是”的情况下),可以执行步骤1523,否则(在“否”的情况下)可以执行步骤1515。

在步骤1523,纠错电路10可以更新变量节点的第二可靠性值。例如,纠错电路10可以将变量节点的第二可靠性值增加与第一可靠性值所满足的最高阈值相对应的设置值。例如,当存在具有等于或大于第二阈值的第一可靠性值的候选符号时,纠错电路10可以将对应变量节点的第二可靠性值增加第一设置值。此外,当存在具有等于或大于第三阈值且小于第二阈值的第一可靠性值的候选符号时,纠错电路可以将对应变量节点的第二可靠性值增加第二设置值,第二设置值小于第一设置值。

在步骤1525,纠错电路10可以确定更新的第二可靠性值是否大于第n阈值。当更新的第二可靠性值大于第n阈值时(在“是”的情况下),可以执行步骤1527,否则(在“否”的情况下)可以执行步骤1515。

在步骤1527,纠错电路10可以调节变量节点的值。例如,纠错电路10可以将对应变量节点的值调节为候选符号,该候选符号的第一可靠性值引起在当前迭代中更新第二可靠性值。

在步骤1529,纠错电路10可以初始化变量节点的第二可靠性值,该变量节点的值已经基于第二可靠性值而被调节。此后,可以执行步骤1515。

图16是示出应用了所公开技术的实施例的存储器系统的图。

参考图16,存储器系统2000可以包括存储数据的存储器装置2200以及在主机1000的控制下控制存储器装置2200的存储器控制器2100。

主机1000能够使用接口协议与存储器系统2000通信,例如快速***部件互连(PCI-E)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)或串行附加SCSI(SAS)。主机1000和存储器系统2000之间使用的接口协议不限于上述示例,并且可以使用其它接口协议,诸如通用串行总线(USB)、多媒体卡(MMC)、增强型小磁盘接口(ESDI)或集成驱动电子器件(IDE)接口协议。

存储器控制器2100可以控制存储器系统2000的整体操作,并且可以控制主机1000与存储器装置2200之间的数据交换。

存储器控制器2100可以包括主机接口2110、中央处理单元(CPU)2120、存储器接口2130、缓冲存储器2140、纠错电路2150和内部存储器2160。主机接口2110、存储器接口2130、缓冲存储器2140、纠错电路2150和内部存储器2160可以由CPU 2120控制。

主机接口2110可以使用通信协议与主机1000进行数据交换。

CPU 2120可以执行各种类型的计算或者生成命令和地址,以便控制存储器装置2200。例如,CPU 2120可以生成编程操作、读取操作、擦除操作、数据压缩操作和复制回操作所需的各种命令。

存储器接口2130可以使用通信协议与存储器装置2200通信。

在存储器控制器2100控制存储器装置2200时,缓冲存储器2140可以临时存储数据。例如,在编程操作完成之前,可以将从主机接收的数据临时存储在缓冲存储器2140中。此外,在读取操作期间,从存储器装置2200读取的数据也可以临时存储在缓冲存储器2140中。

纠错电路2150可以在编程操作或读取操作期间执行用于纠错的编码和解码。纠错电路2150可以是使用非二进制LDPC(NB-LDPC)码的纠错电路。

纠错电路2150可以包括纠错解码器2152和后处理器2154。

纠错解码器2152可以对从存储器装置2200接收的读取数据执行纠错解码。当在用于纠错的迭代解码过程中检测到错误时,纠错解码器2152可以使用奇偶校验矩阵来纠正错误。例如,纠错解码器2152可以基于奇偶校验矩阵计算与读取数据相对应的校正子,并且可以基于计算的校正子确定读取数据中是否包含错误。当读取数据中包含的错误可纠正时,纠错解码器2152可以纠正错误并且输出纠错后的数据。当读取数据中包含的错误不可纠正时,纠错解码器2152可以向CPU 2120报告解码失败。

纠错解码器2152可以包括符号配置单元2152a、节点处理器2152b和校正子校验单元2152c。纠错解码器2152可以执行与如上参考图1所述的纠错解码器100相同或类似的操作。例如,图16中示出的符号配置单元2152a、节点处理器2152b和校正子校验单元2152c可以执行分别对应于图1中所示的符号配置单元110、节点处理器120和校正子校验单元130的操作。

后处理器2154可以执行与图1中所示的后处理器200相对应的操作。

内部存储器2160可以用作存储单元,其存储存储器控制器2100的操作所需的各种类型的信息。内部存储器2160可以存储多个表。例如,内部存储器2160可以存储用于在逻辑地址和物理地址之间进行映射的映射表。

存储器装置2200可以在存储器控制器2100的控制下执行编程操作、读取操作、擦除操作、数据压缩操作和复制回操作。存储器装置2200可以实现为易失性存储器装置,其中存储的数据在电源供应中断时丢失,或者实现为非易失性存储器装置,其中即使在电源供应中断时也保持存储的数据。

图17是示出基于所公开技术的实施例的存储器装置的图。图17中所示的存储器装置可以应用于图16的存储器系统。

存储器装置2200可以包括控制逻辑2210、***电路2220和存储器单元阵列2240。***电路2220可以包括电压生成电路2222、行解码器2224、输入/输出电路2226、列解码器2228、页缓冲器组2232和电流感测电路2234。

控制逻辑2210可以在图16的存储器控制器2100的控制下控制***电路2220。

控制逻辑2210可以响应于通过输入/输出电路2226从存储器控制器2100接收的命令CMD和地址ADD来控制***电路2220。例如,控制逻辑2210可以响应于命令CMD和地址ADD而输出操作信号OP_CMD、行地址RADD、列地址CADD、页缓冲器控制信号PBSIGNALS和使能比特VRY_BIT<#>。控制逻辑2210可以响应于从电流感测电路2234接收的通过信号PASS或失败信号FAIL来确定验证操作是通过还是失败。

***电路2220可以执行在存储器单元阵列2240中存储数据的编程操作、输出存储在存储器单元阵列2240中的数据的读取操作以及擦除存储在存储器单元阵列2240中的数据的擦除操作。

电压生成电路2222可以响应于从控制逻辑2210接收的操作信号OP_CMD而生成用于编程、读取和擦除操作的各种操作电压Vop。例如,电压生成电路2222可以将编程电压、验证电压、通过电压、读取电压、擦除电压、导通电压等传送到行解码器2224。

行解码器2224可以响应于从控制逻辑2210接收的行地址RADD而将操作电压Vop传送到局部线LL,局部线LL耦合到从包括在存储器单元阵列2240中的存储器块中选择的存储器块。局部线LL可以包括局部字线、局部漏极选择线和局部源极选择线。另外,局部线LL可以包括耦合到存储器块的各种线,诸如源极线。

输入/输出电路2226可以将通过输入/输出(IO)线从存储器控制器接收的命令CMD和地址ADD传送到控制逻辑2210,或者可以与列解码器2228交换数据。

列解码器2228可以响应于从控制逻辑2210接收的列地址CADD而在输入/输出电路2226与页缓冲器组2232之间传送数据。例如,列解码器2228可以通过数据线DL与页缓冲器PB1至PBm交换数据,或者可以通过列线CL与输入/输出电路2226交换数据。

页缓冲器组2232可以耦合到与存储器块BLK1至BLKi共同耦合的位线BL1至BLm。页缓冲器组2232可以包括分别耦合到位线BL1至BLm的多个页缓冲器PB1至PBm。例如,一个页缓冲器可以耦合到每个位线。可以响应于从控制逻辑2210接收的页缓冲器控制信号PBSIGNALS来操作页缓冲器PB1至PBm。例如,在编程操作期间,页缓冲器PB1至PBm可以临时存储从存储器控制器接收的编程数据,并且可以基于编程数据控制要施加到位线BL1至BLm的电压。此外,在读取操作期间,页缓冲器PB1至PBm可以临时存储通过位线BL1至BLm接收的数据,或者可以感测位线BL1至BLm的电压或电流。

在读取操作或验证操作期间,电流感测电路2234可以响应于从控制逻辑2210接收的使能比特VRY_BIT<#>而生成参考电流,并且可以将由参考电流生成的参考电压与从页缓冲器组2232接收的感测电压VPB进行比较,并且然后输出通过信号PASS或失败信号FAIL。

存储器单元阵列2240可以包括存储数据的多个存储器块BLK1至BLKi。在存储器块BLK1至BLKi中,可以存储用户数据和存储器装置2200的操作所需的各种类型的信息。存储器块BLK1至BLKi均可以实现为二维(2D)结构或三维(3D)结构,并且可以同等地配置。

图18是示出存储器块的示例的图。

存储器单元阵列可以包括多个存储器块,并且为了方便描述,图18中示出了多个存储器块中的任意一个存储器块BLKi。

在第一选择线与第二选择线之间彼此平行布置的多个字线可以耦合到存储器块BLKi。第一选择线可以是源极选择线SSL,并且第二选择线可以是漏极选择线DSL。详细地说,存储器块BLKi可以包括耦合在位线BL1至BLm与源极线SL之间的多个串ST。位线BL1至BLm可以分别耦合到串ST,并且源极线SL可以共同耦合到串ST。串ST可以被等同地配置,并且此将通过示例详细描述耦合到第一位线BL1的串ST。

串ST可以包括源极选择晶体管SST、多个存储器单元F1至F16和漏极选择晶体管DST,它们在源极线SL与第一位线BL1之间彼此串联耦合。单个串ST可以包括至少一个源极选择晶体管SST和至少一个漏极选择晶体管DST。在一些实现中,比图中所示的存储器单元F1至F16更多的存储器单元可以被包括在串ST中。

源极选择晶体管SST的源极可以耦合到源极线SL,并且漏极选择晶体管DST的漏极可以耦合到第一位线BL1。存储器单元F1至F16可以串联耦合在源极选择晶体管SST与漏极选择晶体管DST之间。包括在不同串ST中的源极选择晶体管SST的栅极可以耦合到源极选择线SSL,包括在不同串ST中的漏极选择晶体管DST的栅极可以耦合到漏极选择线DSL,并且存储器单元F1至F16的栅极可以分别耦合到多个字线WL1至WL16。在包括在不同串ST中的存储器单元之中,耦合到相同字线的一组存储器单元可以被称为“物理页:PPG”。因此,存储器块BLKi可以包括与字线WL1至WL16的数目相同的多个物理页PPG。

一个存储器单元可以存储一位数据。该单元被称为单级单元(SLC)。这里,一个物理页PPG可以存储与一个逻辑页LPG相对应的数据。对应于一个逻辑页LPG的数据可以包括与一个物理页PPG中包括的单元数目相同的多个数据位。例如,当两个或更多个位的数据存储在一个存储器单元中时,一个物理页PPG可以存储对应于两个或更多个逻辑页LPG的数据。例如,在以MLC类型驱动的存储器装置中,对应于两个逻辑页的数据可以存储在一个物理页PPG中。在以TLC类型驱动的存储器装置中,对应于三个逻辑页的数据可以存储在一个物理页PPG中。

图19是示出包括图16的存储器控制器的存储器系统的实施例的图。

参照图19,存储器系统30000可以实现为蜂窝电话、智能电话、平板电脑、个人计算机(PC)、个人数字助理(PDA)或无线通信装置。存储器系统30000可以包括存储器装置2200和能够控制存储器装置2200的操作的存储器控制器2100。

存储器控制器2100可以在处理器3100的控制下控制存储器装置2200的数据访问操作,例如编程、擦除或读取操作。

在存储器控制器2100的控制下,可以通过显示器3200输出在存储器装置2200中编程的数据。

无线电收发器3300可以通过天线ANT发送和接收无线电信号。例如,无线电收发器3300可以将通过天线ANT接收的无线电信号改变为可以由处理器3100处理的信号。因此,处理器3100可以处理从无线电收发器3300输出的信号,并且将处理后的信号发送到存储器控制器2100或显示器3200。存储器控制器2100可以将由处理器3100处理的信号发送到存储器装置2200。此外,无线电收发器3300可以将从处理器3100输出的信号改变为无线电信号,并且通过天线ANT将改变的无线电信号输出到外部装置。输入装置3400可用于输入控制信号,用于控制处理器3100的操作或要由处理器3100处理的数据。输入装置3400可以实现为诸如触摸板或计算机鼠标的定点装置、小键盘或键盘。处理器3100可以控制显示器3200的操作,使得从存储器控制器2100输出的数据、从无线电收发器3300输出的数据或从输入装置3400输出的数据通过显示器3200输出。

在一个实施例中,能够控制存储器装置2200的操作的存储器控制器2100可以实现为处理器3100的一部分或者实现为与处理器3100分开提供的芯片。

图20是说明包括图16的存储器控制器的存储器系统的实施例的图。

参考图20,存储器系统70000可以实现为存储器卡或智能卡。存储器系统70000可以包括存储器装置2200、存储器控制器2100和卡接口7100。

存储器控制器2100可以控制存储器装置2200与卡接口7100之间的数据交换。在一个实施例中,卡接口7100可以是安全数字(SD)卡接口或多媒体卡(MMC)接口,但是不限于此。

卡接口7100可以根据主机60000的协议来对接主机60000与存储器控制器2100之间的数据交换。在一个实施例中,卡接口7100可以支持通用串行总线(USB)协议和芯片间(IC)-USB协议。这里,卡接口7100可以指代能够支持由主机60000使用的协议的硬件、安装在硬件中的软件或信号传输方法。

当存储器系统70000连接到诸如PC、平板电脑、数码相机、数字音频播放器、蜂窝电话、控制台视频游戏硬件或数字机顶盒之类的主机60000的主机接口6200时,主机接口6200可以在微处理器(μP)6100的控制下通过卡接口7100和存储器控制器2100与存储器装置2200进行数据通信。

根据所公开的技术,可以改善使用NB-LDPC码的纠错电路的性能。

虽然已经出于说明性目的公开了所公开技术的示例性实施例,但是本领域技术人员将理解,可以进行各种修改、添加和替换。因此,所公开技术的范围必须由所附权利要求和权利要求的等同物限定,而不是由前面的描述限定。

43页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:生成准循环低密度奇偶校验码的方法和系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类