CN107124187A - 一种应用于闪存的基于等差校验矩阵的ldpc码译码器 - Google Patents
一种应用于闪存的基于等差校验矩阵的ldpc码译码器 Download PDFInfo
- Publication number
- CN107124187A CN107124187A CN201710311262.3A CN201710311262A CN107124187A CN 107124187 A CN107124187 A CN 107124187A CN 201710311262 A CN201710311262 A CN 201710311262A CN 107124187 A CN107124187 A CN 107124187A
- Authority
- CN
- China
- Prior art keywords
- information
- decoder
- bit
- decoding
- ldpc code
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 112
- 239000011159 matrix material Substances 0.000 title claims abstract description 84
- 238000012795 verification Methods 0.000 claims description 25
- 238000003860 storage Methods 0.000 claims description 19
- 238000006073 displacement reaction Methods 0.000 claims description 13
- 230000014759 maintenance of location Effects 0.000 claims description 4
- 239000004744 fabric Substances 0.000 claims 1
- 238000012937 correction Methods 0.000 abstract description 11
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000005299 abrasion Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000003205 muscle Anatomy 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明公开了一种属于非易失性存储器中的纠错编码领域的LDPC码译码器。本发明根据NAND闪存纠错编码所需求的译码器码率高、吞吐率高的特点,基于等差准循环LDPC码的校验矩阵,采取了按列分组的最小和译码算法。本发明的有益效果为:基于等差准循环LDPC码的校验矩阵的性质,通过避免桶形移位器的使用,降低了译码器的面积;通过增加等差准循环LDPC码子矩阵的维度,提高了译码器的吞吐率;通过本译码器对1‑bit硬信息软译码和2‑bit软信息软译码的兼容使用,降低了闪存的平均读写次数,提高了闪存的使用寿命。
Description
技术领域
本发明属于非易失性存储器中的纠错编码技术领域,特别涉及一种应用于闪存纠错领域的低硬件面积、高通过率的等差准循环LDPC码译码器。
背景技术
目前,NAND闪存的重点应用领域已经从桌面端向移动端大幅度倾斜,例如手机、平板、u盘和固态硬盘等。NAND闪存的一个重要的发展趋势是TLC(Trinary-Level Cell)技术的发展。最早的NAND闪存使用的是SLC(Single-Level Cell)技术,即在每个存储单元中存储1-bit信息。随着移动设备的发展所带来的对存储容量需求的不断提高,MLC(Multi-LevelCell)技术应运而生,实现了在每个存储单元中存储2-bit信息的功能。目前,市场上最受广泛应用的是TLC技术,即在每个存储单元中存储3-bit信息。相比于SLC和MLC,TLC有着存储容量更大的优点。然而,由于TLC中相邻电压的间隔变得更小,随之而来的是源误码率更高的缺点。因此,设计可靠的纠错编码技术,尤其是LDPC码的纠错编码技术,是一个刻不容缓的任务,并将成为新一代闪存应用的关键技术。
NAND闪存的另一个重要的发展趋势是其芯片读写速度的急剧提升。传统的NAND闪存采用的是标准NAND闪存接口的独立存储芯片,与之相比较,eMMC(Embedded Multi MediaCard)和UFS(Universal Flash Storage)标准的存储芯片是将NAND闪存和相对应的控制器集成封装成一体。这样的封装方式不仅节省了空间,还减轻了主机处理器对NAND闪存在坏块管理、错误纠正、磨损均衡和垃圾回收等管理方面的负担。UFS2.0单通道理论传输速度可达到600MB/s,如果是双通道可提高至1200MB/s,是eMMC5.0(400MB/s)的3倍。三星、东芝、闪迪、海力士等公司均在近年来扩大了UFS2.0标准的存储芯片的生产,与此同时还投入了对UFS2.1标准的存储芯片的量产,进一步提升了芯片的读写速度。因此,设计高吞吐率的LDPC解码器,也是掌握新一代闪存纠错技术的重中之重。
准循环LDPC码由于其校验矩阵的规则结构,为工业界的标准所普遍采纳。目前,应用于闪存纠错的准循环LDPC码均为高码率(0.86~0.94)的LDPC码。由于高码率的限制,许多译码器通常采用按列分组的最小和译码算法,每次对校验矩阵中的一列进行操作。然而,对于一般的准循环LDPC码,在采取按列分组的最小和译码算法时,均需要采用较大的桶形移位器,以确保前后两列的变量节点可以对齐。大维度桶形移位器的使用,占据了整个译码器相当大比重的一部分硬件面积(占20%~25%)。此外,在采取按列分组的最小和译码算法时,准循环LDPC码子矩阵的维度即为其译码并行度。当采用的准循环LDPC码的子矩阵维度扩大时,桶形移位器的规模成倍扩大,使得准循环LDPC码译码器的吞吐率遭受到了严重的制约。
发明内容
发明目的:本发明针对目前LDPC码译码器的缺陷,公开了一种低硬件面积、高吞吐率的LDPC码译码器。特别地,本译码器适用但不局限于闪存纠错领域。
技术方案:一种应用于闪存的基于等差校验矩阵的LDPC码译码器,包括输入数据存储器、变量节点单元、校验节点单元、定偏移移位器、选择器、寄存器、存储器、输出数据存储器和符号存储器;
输入译码器的信道信息首先存放于输入数据存储器中;开始译码后,变量节点单元接收输入数据存储器中的信道信息和寄存器中存储的C2V(校验节点传给变量节点)信息,并计算出更新后的V2C(变量节点传给校验节点)信息。变量节点单元共1个,计算的是校验矩阵中的一列。
变量节点单元同时还计算了当前变量节点所连接的校验节点是否满足校验(所连接的校验节点之和是否为零),且其结果将用于提前终止译码。
变量节点单元将更新后的V2C信息的符号位存入符号存储器,用于计算下一次迭代中的C2V信息。
变量节点单元更新结束后,校验节点单元接收更新后的V2C信息和符号存储器中存储的上次迭代中的C2V符号位信息,并计算出更新后的C2V信息。校验节点单元共5个,对应的是校验矩阵中连接于当前变量节点的5个校验节点。
在本译码器采取按列分组的最小和译码算法时,C2V信息即每行中的first_min(第一最小值)、second_min(第二最小值)、first_min_index(第一最小值的地址)、second_min_index(第二最小值的地址),以及global_sign(全局符号)。
第一最小值和第二最小值的地址表示的是其在本行中的位置。
校验节点单元更新结束后,5条更新后的C2V信息分别送入5个定偏移移位器中。5个定偏移移位器的偏移量依次为0~4,对应校验矩阵中连续5行的公差。
移位结束后,5条移位后的C2V信息通过选择器分配到5个寄存器以及存储器中。校验矩阵中,当前变量节点从上至下共连接了5个校验节点,后4个校验节点的C2V信息会在下一列的迭代中立即被使用,所以通过选择器存入5个寄存器之中的4个;第一个校验节点的C2V信息不会在下一列迭代中立即被使用,所以通过选择器存入存储器;存储器将会取出一条预先存放的立即被用于下一列迭代的C2V信息,通过选择器存入5个寄存器中的最后剩余的1个。至此,5个寄存器存储了5条C2V信息,且它们将被送入变量节点单元,用于下一列V2C信息的计算。
当所有列的消息都被更新过一次(进行一次V2C信息与C2V信息的迭代),我们称按列分组的最小和译码算法完成了一次迭代,并令迭代次数自加1。
如果译码器在规定的迭代次数内完成了译码,译码器将提前终止迭代,把结果输出到输出数据存储器,并宣告译码成功;反之,如果译码器在达到最大的迭代次数后仍未完成译码,译码器将终止迭代,并宣告译码失败。
准循环LDPC码的校验矩阵可以用偏移参数Pi,j来表示。每个偏移参数对应了一个z×z的单位矩阵的循环右移矩阵,且其偏移量为Pi,j,其中,z即为子矩阵的维度。特别地,Pi,j=0对应的即是维度为z的单位矩阵。
基础的等差准循环LDPC码经过矩阵扩展操作后得到扩展后的等差准循环LDPC码。等差准循环LDPC码的校验矩阵中每行(或每列)的偏移参数均为等差数列,且每行(或每列)的公差依次递增1。设等差准循环LDPC码的校验矩阵的列重(每列所包含的非空元素的个数)r=5。对基础的等差准循环LDPC码的子校验矩阵从上至下依次往后错位一列,即可得到错位后的子校验矩阵。把所得的错位后的子校验矩阵复制两份(共3份),即可得到扩展后的等差准循环LDPC码的子校验矩阵。以此类推,对多个毗邻的基础的等差准循环LDPC码的子校验矩阵采取相同的操作,可以得到扩展后等差准循环LDPC码的校验矩阵。特别地,设对毗邻的10个子校验矩阵采取相同的扩展方式,可以得到一个行列比为1:10的扩展后的校验矩阵,且此矩阵的列重r=5,行重s=50,码率R=0.9。在扩展后的等差准循环校验矩阵中,非空部分表示维度为z的单位矩阵的循环右移矩阵,空白部分表示维度为z的全零矩阵。
扩展后的校验矩阵没有短环,即4元环。
等差准循环LDPC码扩展后的校验矩阵中的每一列都有5个校验节点,对应了5条移位后的C2V信息。其中第1条移位后的C2V信息会被分配到存储器(因为它不会在下一时刻被使用),后4条移位后的C2V信息会被分配到寄存器(因为它们会在下一时刻被使用)。5条移位后的C2V信息通过选择器分配到对应的寄存器和存储器中,存储器中的C2V信息通过选择器分配到对应的寄存器中。
译码器兼容1-bit硬信息软解码和2-bit软信息软解码。
在译码开始后,译码器首先从闪存读取本帧(即码字)第一bit的对数似然比信息,并把读取的信息存放到输入数据存储器中。当本帧所有信息存储完毕后,译码器开始对1-bit的硬信息进行软解码。具体如下:在每个时钟,输入数据存储器都会按顺序取出z*1bit信息,输入变量节点单元,经由校验节点单元、定偏移移位器,最终通过选择器把数据存入对应的寄存器或者存储器中,完成本列的信息更新。在所有列都按上述方法更新后,我们称之完成了一次迭代,迭代次数自加1。通过变量节点单元判断本次迭代后中间结果是否满足校验,如果满足校验,则宣布1-bit硬信息软译码成功,并把结果输出至输出数据存储器;如果不满足校验,则判断迭代次数是否达到最大次数。如果迭代未达到最大次数,则返回继续进行下一次迭代;如果迭代已经达到最大次数,则宣告1-bit硬信息软译码失败。
在1-bit硬信息软译码宣告失败后,从闪存中读取本帧(即码字)第二bit的对数似然比信息,并把读取的信息存放到输入数据存储器中。当本帧所有信息存储完毕后,结合之前已经读取的第一bit信息,译码器开始对2-bit的软信息进行软解码。具体如下:在每个时钟,输入数据存储器都会按顺序取出z*2bit信息,输入变量节点单元,经由校验节点单元、定偏移移位器,最终通过选择器把数据存入对应的寄存器或者存储器中,完成本列的信息更新。在所有列都按上述方法更新后,我们称之完成了一次迭代,迭代次数自加1。通过变量节点单元判断本次迭代后中间结果是否满足校验,如果满足校验,则宣布2-bit软信息软译码成功,并把结果输出至输出数据存储器;如果不满足校验,则判断迭代次数是否达到最大次数。如果迭代未达到最大次数,则返回继续进行下一次迭代;如果迭代已经达到最大次数,则宣告2-bit软信息软译码失败。
1-bit硬信息软译码是指:从闪存读取的对数似然比用1-bit量化,并采取按列分组的最小和译码算法进行迭代译码;2-bit软信息软译码是指:从闪存读取的对数似然比用2-bit量化,并采取按列分组的最小和译码算法进行迭代译码。
本译码器不局限于按行成等差数列的校验矩阵,对于按斜对角线成等差数列的校验矩阵,存储器与寄存器的存储逻辑需要调整。对于按行成等差数列的校验矩阵:通过两个5选1的选择器来选择存储器的输入、输出接口与对应的寄存器R0~R4相连;对于按斜对角线成等差数列的校验矩阵:存储器的输入接口固定与寄存器R0对应的校验节点单元C0相连,存储器的输出接口固定与寄存器R4相连,并且每个时钟寄存器R1~R4的数据都会存入前一个寄存器。
本译码器的有益效果为:本译码器使用的码型基于等差准循环LDPC码,并对其校验矩阵作了矩阵扩展操作;在采取按列分组的最小和译码算法时,利用了等差准循环LDPC码校验矩阵的特性,避免了桶形移位器的使用;由于避免了桶形移位器的使用,准循环LDPC码子矩阵维度的扩大将不会严重影响译码器的硬件面积,因此可以通过扩大子矩阵的维度来增加译码的并行度,从而提升译码器的吞吐率;通过本译码器对1-bit硬信息软译码和2-bit软信息软译码的兼容使用,降低了闪存的平均读写次数,从而提高了闪存的使用寿命。
附图说明
图1a为准循环LDPC码校验矩阵的示意图;
图1b为准循环LDPC码校验矩阵中每个元素所对应的子矩阵的示意图;
图2a为等差准循环LDPC码校验矩阵的示意图;
图2b为等差准循环LDPC码的一部分作矩阵扩展操作的示意图;
图2c为等差准循环LDPC码扩展后的校验矩阵的示意图;
图3为本译码器参数具体化后的实例的架构图;
图4为本译码器参数具体化后的中间变量存储细节的示意图;
图5为本译码器的译码流程图;
图6为当码型按斜对角线等差时,存储结构调整方式的示意图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
为使本译码器的技术方法和优点更为清晰,现将译码器参数具体化并参照附图,对本译码器进行更为详细的阐述。
如图1a所示,准循环LDPC码的校验矩阵可以用偏移参数Pi,j来表示。如图1b所示,每个偏移参数对应了一个z×z的单位矩阵的循环右移矩阵,且其偏移量为Pi,j,其中,z即为子矩阵的维度。特别地,Pi,j=0对应的即是维度为z的单位矩阵。
等差准循环LDPC码是一种特殊的准循环LDPC码。如图1a所示,本实例中的等差准循环LDPC码的偏移参数Pi,j=(i×j)mod z。本译码器适用但不局限于本实例中的等差准循环LDPC码。
如图2a、2c所示,流程200即是对基础的等差准循环LDPC码210作的矩阵扩展操作,矩阵230即是其扩展后的等差准循环LDPC码。
如图2a所示,等差准循环LDPC码210即是本实例中所用的码型,其校验矩阵中每行(或每列)的偏移参数均为等差数列,且每行(或每列)的公差依次递增1。特别地,本实例中的等差准循环LDPC码的校验矩阵的列重(每列所包含的非空元素的个数)r=5。对图2a所示的子校验矩阵211从上至下依次往后错位一列,即可得到如图2b所示的矩阵221。把所得矩阵复制两份(共3份),即可得到如图2b所示的矩阵222和223。在本实例中,复制倍数t=3,可以得到如图2b所示的矩阵220,即如图2c所示的矩阵231。同样地,对如图2a所示的子校验矩阵212采取相同的操作,可以得到如图2c所示的矩阵232。以此类推,对如图2a中多个毗邻的子校验矩阵210采取相同的操作,可以得到如图2c所示的扩展后的等差准循环LDPC码的校验矩阵230。特别地,本实例中对如图2a中毗邻的10个矩阵采取相同的扩展方式,可以得到一个行列比为1:10的扩展后的校验矩阵,且此矩阵的列重r=5,行重s=50,码率R=0.9。在如图2c所示的扩展后的等差准循环校验矩阵230中,非空部分表示维度为z的单位矩阵的循环右移矩阵,空白部分表示维度为z的全零矩阵。
需要理解,扩展后的校验矩阵没有短环,即4元环。
如图3所示的是本实例中的译码器的硬件架构300。输入译码器的信道信息首先存放于输入数据存储器310中。开始译码后,变量节点单元320接收输入数据存储器310中的信道信息和寄存器370~374中存储的C2V(校验节点传给变量节点)信息,并计算出更新后的V2C(变量节点传给校验节点)信息。变量节点单元共1个,计算的是如图2c所示的校验矩阵中的一列。
需要理解,变量节点单元320同时还计算了当前变量节点所连接的校验节点是否满足校验(所连接的校验节点之和是否为零),且其结果将用于提前终止译码。
需要理解,变量节点单元320将更新后的V2C信息的符号位存入符号存储器330,用于计算下一次迭代中的C2V信息。
变量节点单元320更新结束后,校验节点单元340~344接收更新后的V2C信息和符号存储器330中存储的上次迭代中的C2V符号位信息,并计算出更新后的C2V信息。校验节点单元共5个,对应的是如图2c所示的校验矩阵中连接于当前变量节点的5个校验节点。
需要理解,在本译码器采取按列分组的最小和译码算法时,C2V信息即每行中的first_min(第一最小值)、second_min(第二最小值)、first_min_index(第一最小值的地址)、second_min_index(第二最小值的地址),以及global_sign(全局符号)。
需要理解,第一最小值和第二最小值的地址表示的是其在本行中的位置。在本实例中,其取值范围为0~49。
校验节点单元340~344更新结束后,5条更新后的C2V信息分别送入5个定偏移移位器350~354中。定偏移移位器350~354的偏移量依次为0~4,对应的是如图2c所示的校验矩阵中连续5行的公差分别为0~4。
移位结束后,5条移位后的C2V信息通过选择器360分配到5个寄存器370~374以及存储器380中。如图2c所示的校验矩阵中,当前变量节点从上至下共连接了5个校验节点,后4个校验节点的C2V信息会在下一列的迭代中立即被使用,所以通过选择器360存入5个寄存器之中的4个;第一个校验节点的C2V信息不会在下一列迭代中立即被使用,所以通过选择器360存入存储器380;存储器380将会取出一条预先存放的立即被用于下一列迭代的C2V信息,通过选择器390存入5个寄存器中的最后剩余的1个。至此,寄存器370~374存储了5条C2V信息,且它们将被送入变量节点单元320,用于下一列V2C信息的计算。
需要理解,当所有列的消息都被更新过一次(进行一次V2C信息与C2V信息的迭代),我们称按列分组的最小和译码算法完成了一次迭代,并令迭代次数自加1。
需要理解,如果译码器在在规定的迭代次数内完成了译码,译码器将提前终止迭代,把结果输出到输出数据存储器315,并宣告译码成功;反之,如果译码器在达到最大的迭代次数后仍未完成译码,译码器将终止迭代,把结果输出到输出数据存储器315,并宣告译码失败。
如图2c所示的矩阵中的每一列都有5个校验节点,对应了5条移位后的C2V信息。其中第1条移位后的C2V信息会被分配到存储器(因为它不会在下一时刻被使用),后4条移位后的C2V信息会被分配到寄存器(因为它们会在下一时刻被使用)。为了更好地理解如图3所示的选择器360如何把5条移位后的C2V信息分配到对应的寄存器370~374和存储器380中,以及选择器390如何把存储器380中的C2V信息分配到对应的寄存器370~374中,其具体的分配流程被展示在图4的400中。
400展示了多个时钟具体的存储细节。410处是译码器的译码时钟,每个时钟处理的是等差准循环LDPC码中对应的一列。
420处对应的是等差准循环LDPC码的每列的5个校验节点单元C0~C4,即如图3所示的校验节点单元340~344。在本例中,每个时钟下C0~C4所对应的Pi,j的具体数值如表420所示。
430处对应的是定偏移移位器S0~S4,即如图3所示的定偏移移位器350~354。在本例中,每个时钟下S0~S4所对应的移位值具体数值如表430所示。
需要理解,定偏移移位器S0其移位值是0,等价于直通;定偏移移位器S1其移位值除了1之外,还有12这一个特殊值,用于使校验矩阵最后一列与首列对齐;定偏移移位器S2其移位值除了2之外,还有24这一个特殊值,用于使校验矩阵最后一列与首列对齐;定偏移移位器S3其移位值除了3之外,还有36这一个特殊值,用于使校验矩阵最后一列与首列对齐;定偏移移位器S4其移位值除了4之外,还有48这一个特殊值,用于使校验矩阵最后一列与首列对齐。
需要理解,如图2c中的231处所示,移位器的移位值是根据前后两列偏移值之差决定的。
440处对应的是寄存器R0~R4,即如图3所示的寄存器370~374。在本例中,每个时钟下存储的具体C2V信息如表440所示。
需要理解,表440中mi代表的是第i行的C2V信息。
需要理解,表440中的INF代表的是初始化时,寄存器或存储器中读出的值全赋最大值。
450处对应的是存储器M0,即如图3所示的存储器380。在本例中,每个时钟下存储器的读、写地址和读、写数据如表450所示。以第11个时钟为例,表示经过移位器S1移位后的C2V信息m11被写入存储器的地址1中。同时地,在存储器中被读出的C2V信息m0被存入寄存器R0中。
需要理解,此处存储器的读数延时为两个时钟。因此,当第8个时钟给出读地址0后,在第10个时钟m0才被读出。
需要理解,本译码器兼容1-bit硬信息软解码和2-bit软信息软解码。在使用1-bit硬信息进行软译码时,本译码器对输入的对数似然比采取1-bit量化,中间计算结果采取4-bit量化;在使用2-bit软信息进行软译码时,本译码器对输入的对数似然比采取2-bit量化,中间计算结果采取4-bit量化。本译码器的具体实施流程500如图5所示:
在510处译码开始后,在520处译码器首先从闪存读取本帧(即码字)第一bit的对数似然比信息,并把读取的信息存放到如图3所示的输入数据存储器310中。当本帧所有信息存储完毕后,在521处译码器开始对1-bit的硬信息进行软解码。具体如下:在每个时钟,输入数据存储器310都会按顺序取出z*1bit信息,输入变量节点单元320,经由校验节点单元340~344、定偏移移位器350~354,最终通过选择器360把数据存入对应的寄存器370~374或者存储器380中,完成本列的信息更新。在所有列都按上述方法更新后,我们称之完成了一次迭代,迭代次数自加1。在522处,通过变量节点单元320判断本次迭代后中间结果是否满足校验,如果满足校验,则在523处宣布1-bit硬信息软译码成功,并把结果输出至输出数据存储器315;如果不满足校验,则在525处判断迭代次数是否达到最大次数。如果迭代未达到最大次数,则返回524处继续进行下一次迭代;如果迭代已经达到最大次数,则在526处宣告1-bit硬信息软译码失败。
在1-bit硬信息软译码宣告失败后,在530处从闪存中读取本帧(即码字)第二bit的对数似然比信息,并把读取的信息存放到如图3所示的输入数据存储器310中。当本帧所有信息存储完毕后,结合之前已经读取的第一bit信息,在531处译码器开始对2-bit的软信息进行软解码。具体如下:在每个时钟,输入数据存储器310都会按顺序取出z*2bit信息,输入变量节点单元320,经由校验节点单元340~344、定偏移移位器350~354,最终通过选择器360把数据存入对应的寄存器370~374或者存储器380中,完成本列的信息更新。在所有列都按上述方法更新后,我们称之完成了一次迭代,迭代次数自加1。在532处,通过变量节点单元320判断本次迭代后中间结果是否满足校验,如果满足校验,则在533处宣布2-bit软信息软译码成功,并把结果输出至输出数据存储器315;如果不满足校验,则在535处判断迭代次数是否达到最大次数。如果迭代未达到最大次数,则返回534处继续进行下一次迭代;如果迭代已经达到最大次数,则在536处宣告2-bit软信息软译码失败。
需要理解,1-bit硬信息软译码是指:从闪存读取的对数似然比用1-bit量化,并采取按列分组的最小和译码算法进行迭代译码;2-bit软信息软译码是指:从闪存读取的对数似然比用2-bit量化,并采取按列分组的最小和译码算法进行迭代译码。
由于闪存的寿命(即读写次数)有限,本译码器最多对闪存进行2-bit的读取。如果1-bit硬信息软译码和2-bit软信息软译码均宣告失败,则本译码器在540处宣布译码失败,并结束译码。此外,本译码器对闪存最多进行2-bit读取是为了考虑本译码器在闪存纠错领域的实用性,并非为了限制本译码器的适用范围。
本实例为了方便阐明本译码器的架构,采取了子矩阵维度z=61,列重r=5,行重s=50,复制倍数t=3。可以求得码长N=s×z×t=9150,码率R=1-r/s=0.9。
本实例所采用的上述参数仅为阐明本译码器的架构,非为限制本译码器的应用场景。本译码器适用于任意的等差准循环LDPC码校验矩阵,非限制于公比依次为0~4的等差准循环LDPC码校验矩阵。此外,本译码器非限制于按行成等差数列的矩阵,也适用于按斜对角线成等差数列的矩阵。对于按斜对角线成等差数列的矩阵,存储器与寄存器的存储顺序需要按照如图6的600处所示,作出从结构610到结构620的调整。结构610是通过两个5选1的选择器来选择存储器的输入、输出接口与对应的寄存器R0~R4相连;结构620中,存储器的输入接口固定与寄存器R0对应的C0相连,存储器的输出接口固定与寄存器R4相连,并且每个时钟寄存器R1~R4的数据都会存入前一个寄存器。
本译码器适用于任意需求高码率、高吞吐率LDPC译码的应用场景,非限制于闪存纠错领域。此外,本译码器非限制于特定的实现,本译码器可在诸如ASIC(专用集成电路)、FPGA(现场可编程门阵列)等任意适当的硬件处理器上实现。
Claims (8)
1.一种应用于闪存的基于等差校验矩阵的LDPC码译码器,其特征在于:本译码器使用的码型基于等差准循环LDPC码,并对其校验矩阵作了矩阵扩展操作;本译码器使用的译码算法是按列分组的最小和译码算法,按列分组的宽度为等差准循环LDPC码子矩阵的维度;
具体包括输入数据存储器、变量节点单元、校验节点单元、定偏移移位器、选择器、寄存器、存储器、输出数据存储器和符号存储器;
输入译码器的信道信息首先存放于输入数据存储器中;开始译码后,变量节点单元接收输入数据存储器中的信道信息和寄存器中存储的C2V信息,并计算出更新后的V2C信息;
变量节点单元同时还计算了当前变量节点所连接的校验节点是否满足校验,且其结果将用于提前终止译码;变量节点单元将更新后的V2C信息的符号位存入符号存储器,用于计算下一次迭代中的C2V信息;
变量节点单元更新结束后,校验节点单元接收更新后的V2C信息和符号存储器中存储的上次迭代中的C2V符号位信息,并计算出更新后的C2V信息;
校验节点单元更新结束后,更新后的C2V信息送入定偏移移位器中移位;
移位结束后,移位后的C2V信息通过选择器分配到寄存器以及存储器中;
当所有列的消息都被更新过一次,我们称按列分组的最小和译码算法完成了一次迭代,并令迭代次数自加1;
如果译码器在规定的迭代次数内完成了译码,译码器将提前终止迭代,把结果输出到输出数据存储器,并宣告译码成功;反之,如果译码器在达到最大的迭代次数后仍未完成译码,译码器将终止迭代,并宣告译码失败。
2.如权利要求1所述的应用于闪存的基于等差校验矩阵的LDPC码译码器,其特征在于:译码器采取按列分组的最小和译码算法时,C2V信息即每行中的first_min、second_min、first_min_index、second_min_index,以及global_sign;第一最小值和第二最小值的地址表示的是其在本行中的位置。
3.如权利要求1所述的应用于闪存的基于等差校验矩阵的LDPC码译码器,其特征在于:译码器的每个校验节点单元包括多个子校验节点单元;这多个子校验节点单元并行计算C2V(校验节点传给变量节点)信息,且并行度为等差准循环LDPC码子矩阵的维度。
4.如权利要求1所述的应用于闪存的基于等差校验矩阵的LDPC码译码器,其特征在于:译码器的变量节点单元包括多个子变量节点单元;这多个子变量节点单元并行计算V2C(变量节点传给校验节点)信息,且并行度为等差准循环LDPC码子矩阵的维度。
5.如权利要求1所述的应用于闪存的基于等差校验矩阵的LDPC码译码器,其特征在于:译码器的移位后的C2V信息通过一个选择器分配到对应的多个寄存器和一个存储器中。
6.如权利要求1所述的应用于闪存的基于等差校验矩阵的LDPC码译码器,其特征在于:译码器存储器中的C2V信息通过一个选择器分配到对应的一个寄存器中。
7.如权利要求1所述的应用于闪存的基于等差校验矩阵的LDPC码译码器,其特征在于:译码器兼容1-bit硬信息软解码和2-bit软信息软解码:
在译码开始后,译码器首先从闪存读取本帧第一bit的对数似然比信息,并把读取的信息存放到输入数据存储器中;当本帧所有信息存储完毕后,译码器开始对1-bit的硬信息进行软解码;通过变量节点单元判断本次迭代后中间结果是否满足校验,如果满足校验,则宣布1-bit硬信息软译码成功,并把结果输出至输出数据存储器;如果不满足校验,则判断迭代次数是否达到最大次数;如果迭代未达到最大次数,则返回继续进行下一次迭代;如果迭代已经达到最大次数,则宣告1-bit硬信息软译码失败;
在1-bit硬信息软译码宣告失败后,从闪存中读取本帧第二bit的对数似然比信息,并把读取的信息存放到输入数据存储器中;当本帧所有信息存储完毕后,结合之前已经读取的第一bit信息,译码器开始对2-bit的软信息进行软解码;通过变量节点单元判断本次迭代后中间结果是否满足校验,如果满足校验,则宣布2-bit软信息软译码成功,并把结果输出至输出数据存储器;如果不满足校验,则判断迭代次数是否达到最大次数;
如果迭代未达到最大次数,则返回继续进行下一次迭代;如果迭代已经达到最大次数,则宣告2-bit软信息软译码失败。
8.如权利要求1所述的应用于闪存的基于等差校验矩阵的LDPC码译码器,其特征在于:1-bit硬信息软译码是指:从闪存读取的对数似然比用1-bit量化,并采取按列分组的最小和译码算法进行迭代译码;2-bit软信息软译码是指:从闪存读取的对数似然比用2-bit量化,并采取按列分组的最小和译码算法进行迭代译码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710311262.3A CN107124187B (zh) | 2017-05-05 | 2017-05-05 | 一种应用于闪存的基于等差校验矩阵的ldpc码译码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710311262.3A CN107124187B (zh) | 2017-05-05 | 2017-05-05 | 一种应用于闪存的基于等差校验矩阵的ldpc码译码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107124187A true CN107124187A (zh) | 2017-09-01 |
CN107124187B CN107124187B (zh) | 2020-08-11 |
Family
ID=59726763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710311262.3A Active CN107124187B (zh) | 2017-05-05 | 2017-05-05 | 一种应用于闪存的基于等差校验矩阵的ldpc码译码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107124187B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108183713A (zh) * | 2017-12-15 | 2018-06-19 | 南京大学 | 基于改进型最小和算法的ldpc译码器及其译码方法 |
CN108832936A (zh) * | 2018-05-30 | 2018-11-16 | 东南大学 | 一种ldpc码的构造方法及系统 |
CN109872764A (zh) * | 2019-01-18 | 2019-06-11 | 南京大学 | 一种多级存储单元闪存的ecc多码率编解码系统及方法 |
CN109936379A (zh) * | 2019-01-24 | 2019-06-25 | 南京大学 | 一种多码率ldpc码的构造方法及其解码装置 |
CN110071726A (zh) * | 2019-04-16 | 2019-07-30 | 南京大学深圳研究院 | 多层单元闪存中联合ldpc码的构造方法及其译码装置 |
CN110474647A (zh) * | 2019-07-03 | 2019-11-19 | 深圳市通创通信有限公司 | 有限域构造的ldpc码的译码方法、装置、译码器及存储介质 |
CN110751977A (zh) * | 2019-10-18 | 2020-02-04 | 西安工业大学 | 一种基于ldpc码的存储芯片容错装置及容错纠错方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1405981A (zh) * | 2002-11-15 | 2003-03-26 | 清华大学 | 改进的非规则低密度奇偶校验码纠错译码方法 |
CN101632249A (zh) * | 2007-02-16 | 2010-01-20 | 松下电器产业株式会社 | 发送装置、接收装置、编码器和编码方法 |
US20100115383A1 (en) * | 2008-10-31 | 2010-05-06 | Kabushiki Kaisha Toshiba | Memory device with an ecc system |
CN101777921A (zh) * | 2010-01-28 | 2010-07-14 | 中国人民解放军国防科学技术大学 | 用于显式存储片上系统的结构化ldpc码译码方法及装置 |
CN101854177A (zh) * | 2009-04-01 | 2010-10-06 | 中国科学院微电子研究所 | 一种高吞吐率的ldpc译码器 |
CN102195655A (zh) * | 2011-02-25 | 2011-09-21 | 山东大学 | 一种准循环ldpc译码器及译码方法 |
US20110239080A1 (en) * | 2010-03-26 | 2011-09-29 | Kabushiki Kaisha Toshiba | Error detection/correction circuit, memory controller and semiconductor memory apparatus |
CN102664638A (zh) * | 2012-05-31 | 2012-09-12 | 中山大学 | 基于分层nms算法的多码长ldpc码译码器的fpga实现方法 |
US8677225B1 (en) * | 2011-02-11 | 2014-03-18 | Marvell International Ltd. | Low-density parity-check decoder |
US20150026536A1 (en) * | 2013-07-19 | 2015-01-22 | Lsi Corporation | Data Decoder With Trapping Set Flip Bit Mapper |
-
2017
- 2017-05-05 CN CN201710311262.3A patent/CN107124187B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1405981A (zh) * | 2002-11-15 | 2003-03-26 | 清华大学 | 改进的非规则低密度奇偶校验码纠错译码方法 |
CN101632249A (zh) * | 2007-02-16 | 2010-01-20 | 松下电器产业株式会社 | 发送装置、接收装置、编码器和编码方法 |
US20100115383A1 (en) * | 2008-10-31 | 2010-05-06 | Kabushiki Kaisha Toshiba | Memory device with an ecc system |
CN101854177A (zh) * | 2009-04-01 | 2010-10-06 | 中国科学院微电子研究所 | 一种高吞吐率的ldpc译码器 |
CN101777921A (zh) * | 2010-01-28 | 2010-07-14 | 中国人民解放军国防科学技术大学 | 用于显式存储片上系统的结构化ldpc码译码方法及装置 |
US20110239080A1 (en) * | 2010-03-26 | 2011-09-29 | Kabushiki Kaisha Toshiba | Error detection/correction circuit, memory controller and semiconductor memory apparatus |
US8677225B1 (en) * | 2011-02-11 | 2014-03-18 | Marvell International Ltd. | Low-density parity-check decoder |
CN102195655A (zh) * | 2011-02-25 | 2011-09-21 | 山东大学 | 一种准循环ldpc译码器及译码方法 |
CN102664638A (zh) * | 2012-05-31 | 2012-09-12 | 中山大学 | 基于分层nms算法的多码长ldpc码译码器的fpga实现方法 |
US20150026536A1 (en) * | 2013-07-19 | 2015-01-22 | Lsi Corporation | Data Decoder With Trapping Set Flip Bit Mapper |
Non-Patent Citations (1)
Title |
---|
王建新等: "LDPC码全并行译码器的设计与实现", 《电路与系统学报》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108183713A (zh) * | 2017-12-15 | 2018-06-19 | 南京大学 | 基于改进型最小和算法的ldpc译码器及其译码方法 |
CN108183713B (zh) * | 2017-12-15 | 2021-04-13 | 南京大学 | 基于改进型最小和算法的ldpc译码器及其译码方法 |
CN108832936A (zh) * | 2018-05-30 | 2018-11-16 | 东南大学 | 一种ldpc码的构造方法及系统 |
CN109872764A (zh) * | 2019-01-18 | 2019-06-11 | 南京大学 | 一种多级存储单元闪存的ecc多码率编解码系统及方法 |
CN109936379A (zh) * | 2019-01-24 | 2019-06-25 | 南京大学 | 一种多码率ldpc码的构造方法及其解码装置 |
CN109936379B (zh) * | 2019-01-24 | 2021-07-09 | 南京大学 | 一种多码率ldpc码的构造方法及其解码装置 |
CN110071726A (zh) * | 2019-04-16 | 2019-07-30 | 南京大学深圳研究院 | 多层单元闪存中联合ldpc码的构造方法及其译码装置 |
CN110474647A (zh) * | 2019-07-03 | 2019-11-19 | 深圳市通创通信有限公司 | 有限域构造的ldpc码的译码方法、装置、译码器及存储介质 |
CN110474647B (zh) * | 2019-07-03 | 2023-05-23 | 深圳市通创通信有限公司 | 有限域构造的ldpc码的译码方法、装置、译码器及存储介质 |
CN110751977A (zh) * | 2019-10-18 | 2020-02-04 | 西安工业大学 | 一种基于ldpc码的存储芯片容错装置及容错纠错方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107124187B (zh) | 2020-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107124187A (zh) | 一种应用于闪存的基于等差校验矩阵的ldpc码译码器 | |
US8830746B2 (en) | Optimized threshold search in analog memory cells using separator pages of the same type as read pages | |
US8301979B2 (en) | Low density parity code (LDPC) decoding for memory with multiple log likelihood ratio (LLR) decoders | |
CN102203876B (zh) | 用于存储器器件的软数据生成的方法和装置 | |
CN104601178B (zh) | 解码方法、解码电路、存储器存储装置与控制电路单元 | |
US9397701B1 (en) | System and method for lifetime specific LDPC decoding | |
TWI511146B (zh) | 用於記憶體單元中之最佳化臨限搜尋之方法及裝置 | |
US9697075B2 (en) | Efficient search for optimal read thresholds in flash memory | |
CN101601094A (zh) | 使用多个门限读取存储单元的方法 | |
JP2011197957A (ja) | 誤り訂正符号復号装置及び誤り訂正符号復号方法 | |
US20120079178A1 (en) | Method and system for adaptive coding in flash memories | |
CN104871142A (zh) | 用于存储器的整形码 | |
US9362951B2 (en) | Decoding method, decoding circuit, memory storage device and controlling circuit unit | |
CN105023613B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN110673979A (zh) | 存储器控制器及其操作方法 | |
CN106297883A (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
TWI479317B (zh) | Memory system | |
CN108449090A (zh) | 一种可配置多码长、多码率的ldpc译码器 | |
CN109901784A (zh) | 数据存取方法、存储器控制电路单元以及存储器储存装置 | |
CN110071726B (zh) | 多层单元闪存中联合ldpc码的构造方法及其译码装置 | |
CN106708649B (zh) | 解码方法、存储器储存装置及存储器控制电路单元 | |
US9015402B2 (en) | Memory controller and a method for writing information to a K-level memory unit | |
CN109189694B (zh) | 一种scm的数据编码方法及数据存储方法 | |
Jiang et al. | Information representation and coding for flash memories | |
CN101789794A (zh) | 低密度奇偶校验码的解码方法及其电路 |
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 |