CN110401453B - 低延迟ldpc译码器及其译码方法 - Google Patents
低延迟ldpc译码器及其译码方法 Download PDFInfo
- Publication number
- CN110401453B CN110401453B CN201810374178.0A CN201810374178A CN110401453B CN 110401453 B CN110401453 B CN 110401453B CN 201810374178 A CN201810374178 A CN 201810374178A CN 110401453 B CN110401453 B CN 110401453B
- Authority
- CN
- China
- Prior art keywords
- variable node
- variable
- node memory
- memory
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000012795 verification Methods 0.000 claims abstract description 32
- 238000004364 calculation method Methods 0.000 claims description 90
- 239000011159 matrix material Substances 0.000 claims description 76
- 230000005540 biological transmission Effects 0.000 claims description 10
- 230000009977 dual effect Effects 0.000 claims description 7
- 230000008569 process Effects 0.000 abstract description 39
- 238000012545 processing Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 7
- 238000012937 correction Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 239000000470 constituent Substances 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004904 shortening 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
-
- 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/1148—Structural properties of the code parity-check or generator matrix
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Error Detection And Correction (AREA)
Abstract
本申请涉及低密度奇偶校验码(Low Density Parity Check Code,LDPC)译码方法,包括:将第一变量节点存储器存储的变量节点传输给计算单元以生成所述变量节点的新值;将第二变量节点存储器存储的变量节点传输给校验单元以验证所述变量节点构成LDPC码字的合法性;若构成的LDPC码字合法,则结束迭代译码;若构成的LDPC码字不合法,则通过计算单元生成的变量节点新值更新第一变量节点存储器和第二变量节点存储器。由于从第二变量节点存储器读出用于校验是否得到合法的LDPC码字的数据的过程,与从第一变量节点存储器读出用于迭代译码而更新变量节点的数据的过程同时进行,从而缩短了LDPC译码的延迟。
Description
技术领域
本申请涉及低密度奇偶校验码(Low Density Parity Check Code,LDPC)译码方法,更具体地,本发明涉及对基于最小和算法的LDPC译码过程的优化。
背景技术
LDPC码是一种纠错编码,与其他纠错编码相比,在相同的码率下,LDPC码具有纠错能力强、收敛速度快的特点,因此是现阶段SSD(固态驱动器,Solid State Drive)控制器领域最佳的纠错编码。
LDPC码是一种二进制分组码,采用超稀疏矩阵作为校验矩阵。校验矩阵中每行(每列)中非零元素稀少。对于任何合法的码字V,码字V与校验矩阵H的乘积为零。现有技术中用Tanner图描述LDPC码。Tanner图由两类节点组成,一类是变量节点,一类是校验节点。每个变量节点对应码字的一个比特,每个校验节点对应校验矩阵H的一行。变量节点与校验节点的连线对应校验矩阵里的“1”。图1是LDPC码的Tanner图。在迭代译码过程中,译码器利用校验节点和变量节点的约束关系进行迭代译码。各变量节点的输入为接收序列对应的对数似然比,以及校验节点上一次迭代的输出;随后,变量节点的输出通过“连线”送到相应的校验节点,在利用校验节点的约束关系进行译码。在这个过程中,一种节点的输出成为另一种节点的输入,矩阵中非零元素所对应的“连线”成为这两种节点交换信息的通道。在中国专利申请2016108617916(专利名称为LDPC译码方法与装置)中提供了LDPC码的一种译码方法,将其全文通过引用并入本申请。
常见的LDPC译码算法包括:置信传播算法(Belief Propagation,BP),最小和算法(Min-Sum)和比特反转算法(Bit Flip)等。而最小和算法和基于最小和算法的改进算法由于其硬件时间简单,且具有足够好的纠错性能在SSD控制器领域被广泛采用。
最小和算法包括多个主要步骤。首先初始化变量节点与校验节点,变量节点的初始值是,例如,从存储介质读出的值,校验节点的初始值根据所使用的校验矩阵得到。在LDPC迭代译码的一轮中,更新校验节点与变量节点。更新后的变量节点与校验节点将在下一轮译码中被使用。还对变量节点执行校验,以识别其是否是正确的码字。若得到了正确的码字,停止译码过程。
AN-MS(Adaptive Normalize Min-Sum Algorithm)算法是一种基于最小和算法改进的迭代译码算法。它是一种纠错能力强,且比较易于硬件实现的LDPC译码算法。AN-MS算法的核心译码过程包括两部分:变量节点处理与校验节点处理。在一次迭代中需要完成变量节点处理与校验节点处理。如果迭代后译码结果正确则完成译码,否则开始下一次迭代,直到译码成功或者超过预设的最大迭代次数。
AN-MS算法的详细介绍参见“Wu X,Song Y,Cui L,et al.Adaptive-normalizedmin-sum algorithm[C],2010 2nd International Conference on Future Computer andCommunication.2010.”,将其全文通过引用并入本申请。
LDPC译码器实施LDPC译码算法。图2展示了现有技术的LDPC译码器的框图。
控制器210控制LDPC译码流程,控制译码器各部件之间的协作,包括校验矩阵的加载,各存储单元的数据写入与读出,控制迭代译码过程,识别译码终止条件等。
计算单元220用于处理译码过程中的计算,根据译码算法指示的操作,计算变量节点与校验节点的新值。计算单元220有多个,以并行地对计算。变量节点存储器230,用于存储变量节点信息;校验节点存储器240,用于存储校验节点,临时变量存储器250用于存储计算单元计算过程中产生的临时信息,例如符号、最小值等。校验单元260用于校验变量节点是否是合法的LDPC码字。
图3展示了现有技术的LDPC译码器的译码流程。
开始对码字的译码后,在控制器210的指示下,用待译码的码字初始化变量节点存储器230,用校验矩阵初始化校验节点存储器240(310)。从变量节点存储器230获取变量节点(320),校验单元260检查获取的变量节点是否构成合法的LDPC码字(330)。如果变量节点构成合法LDPC码字(340),则译码结束,输出变量节点作为LDPC译码器的译码结果(360)。若变量节点尚不构成合法LDPC码字(340),计算单元220将变量节点与校验节点提供给计算单元220进行一次迭代译码(350)。在一次迭代译码过程中,计算单元220生成变量节点与校验节点的新值,新值被用来更新变量节点存储器与校验节点存储器。以及校验单元260再次获取变量节点存储器中的变量节点,并进行校验。
图4展示了现有技术的LDPC译码器的译码过程的时序图。
图4中,向右的方向为时间流逝方向。图4中以校验矩阵有2行为例进行描述。在一次迭代译码过程中,对于校验矩阵的每行,从变量节点存储器230获取同校验矩阵的行对应的变量节点,由计算单元220进行计算。图4是围绕对变量节点存储器230的访问而展示的。
在初始化阶段(也参看图3,310),将变量节点存储到变量节点存储器230(410)。接下来,从变量节点存储器230读出变量节点(420),提供给校验单元260。可选地,从变量节点存储器230传输变量节点给校验单元260(420)发生于变量节点存储器230初始化完成之前,以缩短LDPC译码的延迟。例如,变量节点包括4096个,在变量节点的部分被存储到变量节点存储器230后,即启动从变量节点存储器230到校验单元260的数据传输,以传输已被写入到变量节点存储器230的部分变量节点。
校验单元260对变量节点进行校验(422),响应于校验结果(失败),再次从变量节点存储器230读出变量节点,将同校验矩阵的第一行对应的变量节点传输给计算单元220(430)。计算单元生成更新后的同校验矩阵的第一行对应的变量节点,并写回到变量节点存储器230(432)。从而将更新后的变量节点写入变量节点存储器230的过程(432)发生在将同校验矩阵的变量节点传输给计算单元220(430)之后。
将同校验矩阵的第一行对应的变量节点传输给计算单元220(430)后,还将同校验矩阵的第二行对应的变量节点传输给计算单元220(440),计算单元220生成更新后的同校验矩阵的第二行对应的变量节点,并写回到变量节点存储器230(442)。至此第一次迭代译码完成。
接下来将变量节点传输给校验单元260(450),以识别变量节点是否构成了合法的LDPC码字。若变量节点依然不是合法的LDPC码字,控制器210开启第二轮迭代译码。
第二轮迭代译码同第一轮迭代译码的处理过程相同。从变量节点存储器230将同校验矩阵的第一行对应的变量节点提供给计算单元220(460),接下来将同校验矩阵的第二行对应的变量节点提供给计算单元220(470)。在收到同校验矩阵的第一行对应的变量节点后,计算单元220更新这些变量节点,并将更新后的变量节点写回变量节点存储器230(462);在收到同校验矩阵的第二行对应的变量节点后,计算单元220更新这些变量节点,并将更新后的变量节点写回变量节点存储器230(472)。作为举例,校验矩阵包括2行,因而至此又一轮迭代译码结束。
接下来将变量节点传输给校验单元260(480),以识别变量节点是否构成了合法的LDPC码字。
发明内容
本申请意在提供一种LDPC译码方法或LDPC译码器,以进一步降低LDPC译码器引入的延迟。
根据本申请的第一方面,提供了根据本申请第一方面的第一LDPC译码方法,包括:将第一变量节点存储器存储的变量节点传输给计算单元以生成所述变量节点的新值;将第二变量节点存储器存储的变量节点传输给校验单元以验证所述变量节点构成LDPC码字的合法性;若构成的LDPC码字合法,则结束迭代译码;若构成的LDPC码字不合法,则通过计算单元生成的变量节点新值更新第一变量节点存储器和第二变量节点存储器。
根据本申请第一方面的第一LDPC译码方法,其中,将第一变量节点存储器存储的变量节点传输给计算单元和将第二变量节点存储器存储的变量节点传输给校验单元同时进行。
根据本申请第一方面的第一LDPC译码方法,其中,在初始化阶段,用待译码的码字初始化第一变量节点存储器和第二变量节点存储器,用校验矩阵初始化校验节点存储器。
根据本申请第一方面的第三LDPC译码方法,包括:将校验节点存储器存储的校验节点传输给计算单元,根据校验节点和变量节点进行迭代译码生成变量节点新值和校验节点的新值。
根据本申请第一方面的第一至第四LDPC译码方法之一,其中,响应于构成的LDPC码字合法,阻止用变量节点新值更新第一变量节点存储器和第二变量节点存储器。
根据本申请第一方面的第一至第五LDPC译码方法之一,其中,响应于构成的LDPC码字合法,若此时计算单元正在译码计算,则终止译码计算,并丢弃已经得到的译码结果。
根据本申请第一方面的第三或第四LDPC译码方法,其中,在一轮迭代译码的第一子阶段中,将第一变量节点存储器存储的关联于校验矩阵的第一行的变量节点传输给计算单元,生成所述第一行的变量节点新值;若校验单元验证构成的LDPC码字不合法,则通过所述第一行的变量节点新值更新第一变量节点存储器和第二变量节点存储器。
根据本申请第一方面的第七LDPC译码方法,其中,提供给校验单元的变量节点是待译码码字的所有变量节点。
根据本申请第一方面的第七LDPC译码方法,其中,将第一变量节点存储器存储的关联于校验矩阵的第一行的变量节点传输给计算单元和将第二变量节点存储器存储的变量节点传输给校验单元同时进行。
根据本申请第一方面的第七LDPC译码方法,其中,在一轮迭代译码的第二子阶段中,将第一变量节点存储器存储的关联于校验矩阵的第二行的变量节点传输给计算单元,生成所述第二行的变量节点新值;通过第二行的变量节点新值更新第一变量节点存储器和第二变量节点存储器;直至将关联于校验矩阵的所有行的变量节点均生成相应的变量节点新值,并通过相应的变量节点新值更新第一变量节点存储器和第二变量节点存储器后,该轮迭代译码结束。
根据本申请第一方面的第十LDPC译码方法,其中,在第一子阶段将关联于校验矩阵的第一行的变量节点完全从第一变量节点存储器传输给计算单元后,开始第二子阶段中从第一变量节点存储器读出关联于校验矩阵的第二行的变量节点传输给计算单元。
根据本申请第一方面的第十LDPC译码方法,其中,由计算单元向第一变量节点存储器写入关联于校验矩阵的第一行变量节点新值和从第一变量节点存储器读出关联于校验矩阵的第二行变量节点传输给计算单元并行处理。
根据本申请第一方面的第十LDPC译码方法,其中,随着关联于校验矩阵的最后一行的变量节点新值的部分被写入第一变量节点存储器,开启下一轮迭代译码中从第二变量节点存储器到校验单元的更新后的变量节点传输。
根据本申请第一方面的第十三LDPC译码方法,其中,关联于校验矩阵的最后一行的变量节点新值被全部写入第一变量节点存储器,在下一轮迭代译码中将第二变量节点存储器存储的更新后的变量节点全部传输给校验单元。
根据本申请第一方面的第十LDPC译码方法,其中,随着关联于校验矩阵的最后一行的变量节点新值的部分被写入第一变量节点存储器,开启下一轮迭代译码中从第一变量节点存储器到计算单元的更新后的变量节点传输。
根据本申请的第二方面,提供了根据本申请第二方面的第一LDPC译码器,包括:第一变量节点存储器、第二变量节点存储器、计算单元、校验单元和控制器;所述控制器指示从第一变量节点存储器获取变量节点传输给计算单元以生成所述变量节点的新值,并且指示从第二变量节点存储器获取变量节点传输给校验单元以检查所述变量节点构成LDPC码字的合法性;若构成的LDPC码字合法,控制器则指示迭代译码结束;若构成的LDPC码字不合法,控制器则指示计算单元将生成变量节点新值写入第一变量节点存储器和第二变量节点存储器。
根据本申请第二方面的第一LDPC译码器,其中,所述控制器指示第一变量节点存储器存储的变量节点传输给计算单元和第二变量节点存储器存储的变量节点传输给校验单元同时进行。
根据本申请第二方面的第一LDPC译码器,还包括:用于存储校验节点的校验节点存储器,所述控制器指示从校验节点存储器获取校验节点传输给计算单元,并且计算单元根据校验节点和变量节点进行迭代译码生成变量节点新值和校验节的新值。
根据本申请第二方面的第三LDPC译码器,其中,在初始化阶段,所述控制器控制用待译码的码字初始化第一变量节点存储器和第二变量节点存储器,用校验矩阵初始化校验节点存储器。
根据本申请第二方面的第一至第四LDPC译码器之一,其中,所述计算单元为多个,多个所述计算单元并行计算。
根据本申请第二方面的第一至第四LDPC译码器之一,其中,所述第一变量节点存储器为双端口存储器,其读端口耦合到计算单元,以向计算单元提供变量节点;其写端口耦合到计算单元,以向第一变量节点存储器写入计算单元生成的变量节点新值。
根据本申请第二方面的第六LDPC译码器,其中,所述第一变量节点存储器的读端口和写端口可同时传输数据。
根据本申请第二方面的第一至第四LDPC译码器之一,其中,所述校验节点存储器为双端口存储器。
根据本申请第二方面的第一至第四LDPC译码器之一,其中,LDPC译码器,还包括:用于存储计算单元计算过程中产生的临时信息的临时变量存储器,临时变量存储器耦合到计算单元。
根据本申请第二方面的第一至第四LDPC译码器之一,LDPC译码器,其中,所述第二变量节点存储器为双端口存储器,其读端口耦合到校验单元,以向校验单元提供变量节点;其写端口耦合到计算单元,以向第二变量节点存储器写入计算单元生成的变量节点新值。
根据本申请第二方面的第十LDPC译码器,其中,所述第一变量节点存储器和第二变量节点存储器可同时向外传输变量节点。
根据本申请第二方面的第一LDPC译码器,其中,响应于构成的LDPC码字合法,所述控制器阻止用变量节点新值更新第一变量节点存储器和第二变量节点存储器。
根据本申请第二方面的第一LDPC译码器,其中,响应于构成的LDPC码字合法,若此时计算单元正在译码计算,所述控制器控制计算单元终止译码计算,并丢弃已经得到的译码结果。
根据本申请第二方面的第一LDPC译码器,其中,在一轮迭代译码的第一子阶段中,所述控制器指示从第一变量节点存储器获取关联于校验矩阵的第一行的变量节点传输给计算单元,生成所述第一行的变量节点新值;若校验单元验证构成的LDPC码字不合法,控制器则指示用所述第一行的变量节点新值更新第一变量节点存储器和第二变量节点存储器。
根据本申请第二方面的第十四LDPC译码器,其中,所述控制器指示第二变量节点存储器提供给校验单元的变量节点是待译码码字的所有变量节点。
根据本申请第二方面的第十四LDPC译码器,其中,所述控制器指示从第一变量节点存储器获取关联于校验矩阵的第一行的变量节点传输给计算单元和从第二变量节点存储器获取变量节点传输给校验单元同时进行。
根据本申请第二方面的第十四LDPC译码器,其中,在一轮迭代译码的第二子阶段中,所述控制器指示从第一变量节点存储器获取关联于校验矩阵的第二行的变量节点传输给计算单元,生成所述第二行的变量节点新值;所述控制器指示第二行的变量节点新值更新第一变量节点存储器和第二变量节点存储器;直至将关联于校验矩阵的所有行的变量节点均生成相应的变量节点新值,并通过相应的变量节点新值更新第一变量节点存储器和第二变量节点存储器后,该轮迭代译码结束。
根据本申请第二方面的第十七LDPC译码器,其中,在第一子阶段将关联于校验矩阵的第一行的变量节点完全从第一变量节点存储器传输给计算单元后,所述控制器指示开始第二子阶段中从第一变量节点存储器读出关联于校验矩阵的第二行的变量节点传输给计算单元。
根据本申请第二方面的第十七LDPC译码器,其中,所述控制器控制由计算单元向第一变量节点存储器写入关联于校验矩阵的第一行变量节点新值和从第一变量节点存储器读出关联于校验矩阵的第二行变量节点传输给计算单元并行处理。
根据本申请第二方面的第十七LDPC译码器,其中,随着关联于校验矩阵的最后一行的变量节点新值的部分被写入第一变量节点存储器,所述控制器指示开启下一轮迭代译码中从第二变量节点存储器到校验单元的更新后的变量节点传输。
根据本申请第二方面的第二十LDPC译码器,其中,关联于校验矩阵的最后一行的变量节点新值被全部写入第一变量节点存储器,所述控制器指示下一轮迭代译码中将第二变量节点存储器存储的更新后的变量节点全部传输给校验单元。
根据本申请第二方面的第十七LDPC译码器,其中,随着关联于校验矩阵的最后一行的变量节点新值的部分被写入第一变量节点存储器,控制器指示开启下一轮迭代译码中从第一变量节点存储器到计算单元的更新后的变量节点传输。
根据本申请的第三方面,提供了根据本申请第三方面的第一存储控制器,包括上述任一项所述的LDPC译码器。
根据本申请提供的LDPC译码过程可知,用于校验是否得到了合法的LDPC码字的从第二变量节点存储器读出数据的过程,与用于迭代译码而更新变量节点的从第一变量节点存储器读出数据的过程同时进行,从而缩短了LDPC译码的延迟。在LDPC译码过程中,更新变量节点的第一部分,与从第一变量节点存储器读取变量节点的第二部分的过程同时进行,从而进一步缩短了LDPC译码的延迟。以及在LDPC译码过程中,更新变量节点的第二部分,与从第二变量节点存储器读取变量节点用于校验的过程同时进行,从而进一步缩短了LDPC译码的延迟。
附图说明
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:
图1是LDPC码的Tanner图;
图2展示了现有技术的LDPC译码器的框图;
图3展示了现有技术的LDPC译码器的译码流程;
图4展示了现有技术的LDPC译码器的译码过程的时序图;
图5展示了根据本申请实施例的LDPC译码器的框图;
图6展示了根据本申请实施例的LDPC译码器的译码流程;
图7展示了根据本申请实施例的LDPC译码器的译码过程的时序图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
图5展示了根据本申请实施例的LDPC译码器的框图。
控制器510耦合到LDPC译码器的各部件,控制LDPC译码流程,控制LDPC译码器各部件之间的协作,包括校验矩阵的加载,各存储单元的数据写入与读出,控制迭代译码过程,识别译码终止条件等。
计算单元520用于处理译码过程中的计算,根据LDPC译码算法指示的操作,计算变量节点与校验节点的新值。可选地,计算单元520有多个,以并行地计算。第一变量节点存储器530,用于存储变量节点信息。第一变量节点存储器530为双端口存储器,包括读端口与写端口,读端口与写端口可同时传输数据。校验节点存储器540,用于存储校验节点。可选地,校验节点存储器540也是双端口存储器。临时变量存储器55用于存储计算单元计算过程中产生的临时信息,例如符号、最小值等。校验单元560用于校验变量节点是否是合法的LDPC码字。
根据图5的实施例的LDPC译码器还包括第二变量节点存储器570。第二变量节点存储器570包括两个端口,读端口与写端口。第二变量节点存储器570也用于存储变量节点。第二变量节点存储器570中存储的变量节点是第一变量节点存储器530中存储的变量节点的副本。例如,对于任意对第一变量节点存储器530的更新(初始化或更新变量节点),同样的更新也被应用于第二变量节点存储器570。第二变量节点存储器570相当于为第一变量节点存储器530增加了第二读端口,从而第一变量节点存储器530与第二变量节点存储器570可同时向外传输变量节点。
根据图5的实施例,第一变量节点存储器530的读端口耦合到计算单元520,以向计算单元520提供变量节点。第一变量节点存储器530的写端口耦合到计算单元520,从而计算单元520将更新后的变量节点,通过写端口写入第一变量节点存储器530。第二变量节点存储器570的读端口耦合到校验单元560,以向校验单元560提供变量节点。第二变量节点存储器570的写端口耦合到计算单元520,从而计算单元520将更新后的变量节点,也通过写端口写入第二变量节点存储器570。
图6展示了根据本申请实施例的LDPC译码器的译码流程。
开始对码字的译码后,在控制器510的指示下,用待译码的码字初始化第一变量节点存储器530与第二变量节点存储器570,用校验矩阵初始化校验节点存储器540(610)。在从第一变量节点存储器530获取变量节点传输给计算单元520(620)的同时,从第二变量节点存储器570获取变量节点传输给校验单元560(622),校验单元560检查获取的变量节点是否构成合法的LDPC码字。
计算单元520根据LDPC译码算法进行迭代译码,生成获取的变量节点(以及校验节点)的新值(630)。而校验单元560的校验结果指示获取的变量节点是否构成合法的LDPC码字(660)。若校验单元560指示获取的变量节点构成合法的LDPC码字(校验通过),在控制器510的作用下,计算单元520生成的变量节点的新值不会被更新到第一变量节点存储器530(与第二变量节点存储器570),并且译码过程结束,将校验单元560获取的变量结果(也存储在第一变量节点存储器530和/或第二变量节点存储器570)作为译码结果。可选地,若校验单元560指示验证通过时计算单元520正在译码计算,控制器510还指示计算单元520停止译码计算,并丢弃已经得到的译码结果。
若校验单元560指示获取的变量节点不构成合法的LDPC码字(校验不通过)(660),控制器510指示计算单元520将生成的变量节点的新值写入到第一变量节点存储器530以及第二变量节点存储器570(650)。以及控制器510还指示开始下一轮迭代译码,将第一变量节点存储器530的新变量节点传输给计算单元520(620),以及同时将第二变量节点存储器570的新变量节点传输给校验单元560(622)。
在可选的实施方式中,每轮迭代译码(620、630与650)包括多个子阶段,每个子阶段处理同校验矩阵的一行关联的变量节点。每个子阶段内,从第一变量节点存储器530传输(部分)变量节点给计算单元520,计算单元520生成变量节点的新值,并将变量节点的新值写回到第一变量节点存储器530与第二变量节点存储器570。接下来开启迭代译码的下一个子阶段。一个子阶段的将变量节点的新值写回第一变量节点存储器530与第二变量节点存储器570的过程,与下一子阶段从第一变量节点存储器530(与第二变量节点存储器570)读出数据的过程,各自访问不同的变量节点,并且大体上同时发生。
若校验单元560指示获取的变量节点构成合法LDPC码字(校验通过)(660),则译码结束,输出变量节点作为LDPC译码器的译码结果。此时计算单元520还在产生变量节点的新值,并且可能已经产生了部分变量节点的新值。响应于校验通过(660),控制器510阻止用计算单元520产生的变量节点的新值更新第一变量节点存储器530(与第二变量节点存储器570)。
图7展示了根据本申请实施例的LDPC译码器的译码过程的时序图。
图7中,向右的方向为时间流逝方向。图7的主体部分的上部展示了向第一变量节点存储器530与第二变量节点存储器570写入数据的操作(732、742、762与772),图7的主体部分的中间展示了从第一变量节点存储器530读出数据给计算单元520的操作(730、740、760与770),图7的主体部分的下部展示了从第二变量节点存储器570读出数据给校验单元560的操作(720、750与780)。
图7中以校验矩阵有2行为例进行描述。在一次迭代译码过程中,对于校验矩阵的每行,从第一变量节点存储器530获取同校验矩阵的行对应的变量节点,由计算单元520进行计算。
在初始化阶段(也参看图6,610),将变量节点存储到第一变量节点存储器530,以及将同样的变量节点也存储到第二变量节点存储器570(也参看图5)(710)。在一轮迭代译码的第一子阶段中,从第一变量节点存储器530读出变量节点提供给计算单元520(730)。与此大体上同时地,从第二变量节点存储器570读出变量节点,提供给校验单元560(720),校验单元560验证变量节点是否构成合法的LDPC码字。操作720与操作730大体上并行地被执行,从而降低LDPC译码过程的延迟。作为举例,提供给计算单元520的变量节点是关联于校验矩阵的第一行的变量节点,而提供给校验单元560的变量节点是待译码码字的所有变量节点。
作为举例,校验单元560指示校验失败(724)。
计算单元520根据LDPC译码算法更新关联于校验矩阵的第一行的变量节点。由于校验单元560指示校验失败,计算单元520得以将更新后的变量节点写回第一变量节点存储器530(732)。被写回第一变量节点存储器530的变量节点也被写入到第二变量节点存储器570(732)。
在将关联于校验矩阵的第一行的变量节点从第一变量节点存储器530读出后(730),还紧接着在一轮迭代译码的第二子阶段中将关联于校验矩阵的第二行的变量节点从第一变量节点存储器530读出并提供给计算单元520(740)。从第一变量节点存储器530读出关联于校验矩阵的第二行的变量节点(740),与向第一变量节点存储器530写入更新后的关联于校验矩阵的第一行的变量节点(732)大体上被并行处理,各自利用第一变量节点存储器530的一个访问端口(读端口与写端口),从而降低LDPC译码过程的延迟。
计算单元520还更新关联于校验矩阵的第二行的变量节点,并将更新后的变量节点写回第一变量节点存储器530(742),以及也写回到第二变量节点存储器570(742)。随着更新后的关联于校验矩阵的第二行的变量节点的部分被写回第一变量节点存储器530(与第二变量节点存储器570)(742),控制器510开启在第二变量节点存储器570到校验单元560的数据传输(750),以识别第二轮迭代译码是否需要进行。参看图7,在从第二变量节点存储器570到校验单元560的数据传输(750)开始时,将更新后的关联于校验矩阵的第二行的变量节点的部分写回第一变量节点存储器530(与第二变量节点存储器570)(742)的过程尚未完成。在750,通过向校验单元560传输已被更新的校验节点部分,以提早发起从第二变量节点存储器570到校验单元560的传输。例如,变量节点有4096个,在第1~2048个变量节点被更新到第二变量节点存储器570后,虽然第2049-4096个变量节点尚未被更新到第二变量节点存储器570,但可开始从第二变量节点存储器570将第1-2048个变量节点传输到校验单元560。
从而在将更新后的变量节点写回第二变量节点存储器570(742)的操作完成后的不久,校验单元560就接收到所有的更新后的变量节点,并开始用于第二轮迭代译码的校验。
在将更新后的关联于校验矩阵的第二行的变量节点的部分写回第一变量节点存储器530(与第二变量节点存储器570)(742)的过程尚未完成时,在760,从第一变量节点存储器530读出关联于校验矩阵的第一行的变量节点,以使计算单元520尽早获得用于第二轮迭代译码计算的变量节点。
作为举例,校验矩阵包括2行,因而计算单元520更新的关联于校验矩阵的第二行的变量节点,被写回第一变量节点存储器530(以及第二变量节点存储器570)(742)后,第一轮迭代译码结束。
第二轮迭代译码同第一轮迭代译码的处理过程相似。若校验单元560指示变量节点依然不是合法的LDPC码字(750末尾),计算单元520根据开启关联于校验矩阵的第一行的变量节点第二轮迭代译码,并将更新后的变量节点写回第一变量节点存储器530(与第二变量节点存储器570)(762)。
在从第一变量节点存储器530将同校验矩阵的第一行对应的变量节点提供给计算单元520后(760末尾),接下来将同校验矩阵的第二行对应的变量节点提供给计算单元520(770)。在收到同校验矩阵的第一行对应的变量节点后,计算单元520更新这些变量节点,并将更新后的变量节点写回第一变量节点存储器530(以及第二变量节点存储器570)(762);在收到同校验矩阵的第二行对应的变量节点后(770末尾),计算单元520更新这些变量节点,并将更新后的变量节点写回第一变量节点存储器530(以及第二变量节点存储器570)(772)。作为举例,校验矩阵包括2行,因而至此又一轮迭代译码结束。
根据本申请的实施例,在LDPC译码过程中,用于校验是否得到了合法的LDPC码字的从第二变量节点存储器570读出数据的过程,与用于迭代译码而更新变量节点的从第一变量节点存储器530读出数据的过程同时进行,从而缩短了LDPC译码的延迟。在LDPC译码过程中,更新变量节点的第一部分,与从第一变量节点存储器530读取变量节点的第二部分的过程同时进行,从而进一步缩短了LDPC译码的延迟。以及在LDPC译码过程中,更新变量节点的第二部分,与从第二变量节点存储器570读取变量节点用于校验的过程同时进行,从而进一步缩短了LDPC译码的延迟。可由软件、硬件、固件、FPGA(现场可编程门阵列,FieldProgrammable Gate Array)和/或ASIC(应用专用集成电路,Application SpecificIntegrated Circuit)等实现根据本发明实施例的LDPC译码方法。以及根据本发明实施例的LDPC译码方法可应用于基于NVM芯片的固态存储设备,包括但不限于固态硬盘、U盘、SD卡,还可以应用于手机、平板电脑等便携式电子设备,以及其他多种使用NVM芯片(诸如NAND闪存)的需要存储信息的电子设备。本申请还提供一种存储控制器,包括上述LDPC译码器。根据本发明实施例的LDPC译码方法还可应用于通信、磁存储、光存储等使用的LDPC码的设备或服务。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。
Claims (10)
1.一种LDPC译码方法,包括:
将第一变量节点存储器存储的变量节点传输给计算单元以生成所述变量节点的新值;
将第二变量节点存储器存储的变量节点传输给校验单元以验证所述变量节点构成LDPC码字的合法性;其中,所述第二变量节点存储器与所述第一变量节点存储器所存储的变量节点相同;
若构成的LDPC码字合法,则结束迭代译码;
若构成的LDPC码字不合法,则通过计算单元生成的变量节点新值更新第一变量节点存储器和第二变量节点存储器;
将更新后的第一变量节点存储器中变量节点新值输给计算单元;以及将更新后的第二变量节点存储器中变量节点新值输给校验单元,以开始下一轮的迭代译码。
2.根据权利要求1所述的LDPC译码方法,其中,在一轮迭代译码的第一子阶段中,将第一变量节点存储器存储的关联于校验矩阵的第一行的变量节点传输给计算单元,生成所述第一行的变量节点新值;
若校验单元验证构成的LDPC码字不合法,则通过所述第一行的变量节点新值更新第一变量节点存储器和第二变量节点存储器。
3.一种LDPC译码器,包括:第一变量节点存储器、第二变量节点存储器、计算单元、校验单元和控制器;
所述控制器指示从第一变量节点存储器获取变量节点传输给计算单元以生成所述变量节点的新值,并且指示从第二变量节点存储器获取变量节点传输给校验单元以检查所述变量节点构成LDPC码字的合法性;其中,所述第二变量节点存储器与所述第一变量节点存储器所存储的变量节点相同;
若构成的LDPC码字合法,控制器则指示迭代译码结束;
若构成的LDPC码字不合法,控制器则指示计算单元将生成变量节点新值写入第一变量节点存储器和第二变量节点存储器;
将更新后的第一变量节点存储器中变量节点新值输给计算单元;以及将更新后的第二变量节点存储器中变量节点新值输给校验单元,以开始下一轮的迭代译码。
4.根据权利要求3所述的LDPC译码器,还包括:用于存储校验节点的校验节点存储器,所述控制器指示从校验节点存储器获取校验节点传输给计算单元,并且计算单元根据校验节点和变量节点进行迭代译码生成变量节点和校验节点的新值。
5.根据权利要求4所述的LDPC译码器,其中,在初始化阶段,所述控制器控制用待译码的码字初始化第一变量节点存储器和第二变量节点存储器,用校验矩阵初始化校验节点存储器。
6.根据权利要求3至5任一项所述的LDPC译码器,其中,所述第一变量节点存储器为双端口存储器,其读端口耦合到计算单元,以向计算单元提供变量节点;其写端口耦合到计算单元,以向第一变量节点存储器写入计算单元生成的变量节点新值。
7.根据权利要求3至5任一项所述的LDPC译码器,其中,所述第二变量节点存储器为双端口存储器,其读端口耦合到校验单元,以向校验单元提供变量节点;其写端口耦合到计算单元,以向第二变量节点存储器写入计算单元生成的变量节点新值。
8.根据权利要求7所述的LDPC译码器,其中,所述第一变量节点存储器和第二变量节点存储器可同时向外传输变量节点。
9.根据权利要求3所述的LDPC译码器,其中,在一轮迭代译码的第一子阶段中,所述控制器指示从第一变量节点存储器获取关联于校验矩阵的第一行的变量节点传输给计算单元,生成所述第一行的变量节点新值;
若校验单元验证构成的LDPC码字不合法,控制器则指示用所述第一行的变量节点新值更新第一变量节点存储器和第二变量节点存储器。
10.一种存储控制器,包括权利要求3至9任一项所述的LDPC译码器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810374178.0A CN110401453B (zh) | 2018-04-24 | 2018-04-24 | 低延迟ldpc译码器及其译码方法 |
CN202311175629.5A CN117040546A (zh) | 2018-04-24 | 2018-04-24 | 低延迟ldpc译码器及其译码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810374178.0A CN110401453B (zh) | 2018-04-24 | 2018-04-24 | 低延迟ldpc译码器及其译码方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311175629.5A Division CN117040546A (zh) | 2018-04-24 | 2018-04-24 | 低延迟ldpc译码器及其译码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110401453A CN110401453A (zh) | 2019-11-01 |
CN110401453B true CN110401453B (zh) | 2023-10-03 |
Family
ID=68321979
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810374178.0A Active CN110401453B (zh) | 2018-04-24 | 2018-04-24 | 低延迟ldpc译码器及其译码方法 |
CN202311175629.5A Pending CN117040546A (zh) | 2018-04-24 | 2018-04-24 | 低延迟ldpc译码器及其译码方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311175629.5A Pending CN117040546A (zh) | 2018-04-24 | 2018-04-24 | 低延迟ldpc译码器及其译码方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN110401453B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101478312A (zh) * | 2008-12-15 | 2009-07-08 | 北京创毅视讯科技有限公司 | 一种ldpc译码器及其实现译码的方法 |
CN107852176A (zh) * | 2015-01-14 | 2018-03-27 | 北京航空航天大学 | Ldpc码编码器和译码器 |
CN107872231A (zh) * | 2016-09-28 | 2018-04-03 | 北京忆芯科技有限公司 | Ldpc译码方法与装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI425519B (zh) * | 2009-12-09 | 2014-02-01 | Nat Chip Implementation Ct Nat Applied Res Lab | 低複雜度低密度同位元檢查碼解碼器之記憶體配置方法及其解碼器結構 |
-
2018
- 2018-04-24 CN CN201810374178.0A patent/CN110401453B/zh active Active
- 2018-04-24 CN CN202311175629.5A patent/CN117040546A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101478312A (zh) * | 2008-12-15 | 2009-07-08 | 北京创毅视讯科技有限公司 | 一种ldpc译码器及其实现译码的方法 |
CN107852176A (zh) * | 2015-01-14 | 2018-03-27 | 北京航空航天大学 | Ldpc码编码器和译码器 |
CN107872231A (zh) * | 2016-09-28 | 2018-04-03 | 北京忆芯科技有限公司 | Ldpc译码方法与装置 |
Non-Patent Citations (1)
Title |
---|
黎海涛 ; 杨磊磊 ; 刘飞 ; 袁海英 ; .多元LDPC译码器的设计与实现.高技术通讯.2013,(12),第91-99页. * |
Also Published As
Publication number | Publication date |
---|---|
CN110401453A (zh) | 2019-11-01 |
CN117040546A (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102412847B (zh) | 用联合节点处理来解码低密度奇偶校验码的方法和设备 | |
US7552097B2 (en) | Methods and apparatus for decoding LDPC codes | |
CN108053862B (zh) | 使用来自多个存储单元和奇偶校验存储单元的可靠性信息为一个失效存储单元恢复数据 | |
US9432053B1 (en) | High speed LDPC decoder | |
US8707144B2 (en) | LDPC decoder with targeted symbol flipping | |
US8775896B2 (en) | Non-binary LDPC decoder with low latency scheduling | |
US8739004B2 (en) | Symbol flipping LDPC decoding system | |
KR101306645B1 (ko) | 시행착오에 의한 에러 보정 디코딩 | |
US7853854B2 (en) | Iterative decoding of a frame of data encoded using a block coding algorithm | |
TWI411912B (zh) | 使用寫入驗證之代碼之錯誤底限減緩 | |
US8667360B2 (en) | Apparatus, system, and method for generating and decoding a longer linear block codeword using a shorter block length | |
US20130275827A1 (en) | Multi-Section Non-Binary LDPC Decoder | |
US10707902B2 (en) | Permutation network designing method, and permutation circuit of QC-LDPC decoder | |
US10484020B2 (en) | System and method for parallel decoding of codewords sharing common data | |
CN109586731B (zh) | 用于解码纠错码的***和方法 | |
US8862961B2 (en) | LDPC decoder with dynamic graph modification | |
US20170134049A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
US10790854B2 (en) | Coset probability based majority-logic decoding for non-binary LDPC codes | |
US10700708B2 (en) | Permutation network designing method, and permutation circuit of QC-LDPC decoder | |
CN107872231B (zh) | Ldpc译码方法与装置 | |
US8516351B2 (en) | Compact decoding of punctured block codes | |
KR20160002946A (ko) | 10gbase-t 시스템에서 ldpc 인코더의 방법 및 장치 | |
CN110401453B (zh) | 低延迟ldpc译码器及其译码方法 | |
US10826531B2 (en) | Error correction circuit and operating method thereof | |
CN111769839B (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 |