CN108933602B - 用于低密度奇偶校验解码的深度学习 - Google Patents
用于低密度奇偶校验解码的深度学习 Download PDFInfo
- Publication number
- CN108933602B CN108933602B CN201711471501.8A CN201711471501A CN108933602B CN 108933602 B CN108933602 B CN 108933602B CN 201711471501 A CN201711471501 A CN 201711471501A CN 108933602 B CN108933602 B CN 108933602B
- Authority
- CN
- China
- Prior art keywords
- bits
- neural network
- bit
- training
- feature map
- 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
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
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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/65—Purpose and implementation aspects
- H03M13/6597—Implementations using analogue techniques for coding or decoding, e.g. analogue Viterbi decoder
-
- 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/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/1148—Structural properties of the code parity-check or generator matrix
- H03M13/1154—Low-density parity-check convolutional codes [LDPC-CC]
-
- 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/25—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
- H03M13/255—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with Low Density Parity Check [LDPC] codes
-
- 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
-
- 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/45—Soft decoding, i.e. using symbol reliability information
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明公开了一种用于提高错误校正系统的位错误率(BER)性能的技术。在示例中,错误校正系统实施使用位翻转的低密度奇偶校验(LDPC)解码。在解码迭代中,针对LDPC码字的位生成特征映射。该位对应于变量节点。特征映射被输入到被训练成根据对应的特征映射确定位是否应该进行翻转的神经网络。神经网络的输出被访问。输出指示基于特征映射该位应该进行翻转。基于神经网络的输出在解码迭代中对位进行翻转。
Description
技术领域
本发明涉及一种用于提高错误校正系统的位错误率(BER)性能的方法和系统。
背景技术
在数据存储技术和数据传输技术中普遍使用低密度奇偶校验 (LDPC)码来提供数据完整性。消息传递解码器通常用于对LDPC码进行解码。这些解码器以实施复杂的片上硅(SoC)为代价来提供良好的错误校正能力。
现有系统使用基于可用于变量节点的信息来翻转位的各种位翻转 (BF)解码器。BF解码器易于在硬件上实施,并提供显著的面积和功率节省。
通常,BF解码器使用一组规则来决定位是否应该进行翻转。规则是启发式地生成的。BF解码器的校正能力诸如位错误率(BER)性能取决于所使用的规则。在许多情况下,至少启发式地发现一组实现特定BER性能的规则极具挑战性。例如,不规则LDPC码具有在变量节点之间变化的度(例如,连接的校验节点的数量)。度的可变性加剧了生成适当的规则以实现特定的BER性能的挑战。
发明内容
描述了一种用于提高错误校正系统的位错误率(BER)性能的技术。在示例中,错误校正系统实施使用位翻转的LDPC解码。错误校正系统使用神经网络,而非使用启发式规则来确定是否应该翻转对应于变量节点的位。神经网络进行针对位翻转的训练。在解码迭代中,错误校正系统为该位生成特征映射并将特征映射输入到神经网络。错误校正系统访问神经网络的输出。输出表明基于特征映射该位应该进行翻转。错误校正系统基于神经网络的输出在解码迭代中翻转位。
在示例中,神经网络根据多阶方法进行针对位翻转的训练。在第一训练阶段,训练位被分为正确位和错误位。以第一采样率对正确位进行采样以生成采样正确位。以第二采样率对错误位进行采样以生成采样错误位。为了正确地训练神经网络,第二采样率小于第一采样率。生成了采样正确位和采样错误位的特征映射,并在第一训练阶段输入到神经网络。在第二训练阶段,以第三采样率对训练位进行采样以生成采样训练位。也为采样训练位生成特征映射。一旦第一训练阶段的训练完成,这些特征映射就作为对神经网络的额外输入提供以对其进行进一步的训练。
提到这些说明性示例不在于限制或限定本公开,而是提供示例以帮助对其进行理解。在具体实施方式中讨论了另外的实施例和示例,并且在那里提供进一步的描述。
附图说明
通过参考以下附图可理解各个实施例的本质和优点。在附图中,相似的部件或特征可具有相同的参考标记。进一步地,可通过在参考标记后面加上短划线和区分相似部件的第二标记来区分相同类型的各个部件。如果在说明书中仅使用了第一参考标记,则不管第二参考标记如何,该描述适于具有相同第一参考标记的任何一个相似部件。
图1示出了根据本公开的某些实施例的错误校正系统的示例性高级框图。
图2A和图2B示出了根据本公开的某些实施例的示例性奇偶校验矩阵和表示奇偶校验矩阵的示例图。
图3示出了根据本公开的某些实施例的用于对LDPC码字进行解码的示例图。
图4示出了根据本公开的某些实施例的用于生成位是否应该进行翻转的指示的示例性神经网络。
图5示出了根据本公开的某些实施例的用于训练神经网络的示例图。
图6示出了根据本公开的某些实施例的使用神经网络的LDPC迭代解码的示例性流程。
图7示出了根据本公开的某些实施例的用于训练神经网络的示例性流程。
图8示出了根据本公开的某些实施例的用于生成特征映射的示例性流程。
图9是能够实施本公开的计算机系统的示意图。
具体实施方式
通常,LDPC解码使用迭代解码过程。在每一个解码迭代中,位被解码。可以使用包括变量节点和校验节点的诸如Tanner图的二分图来进行解码。被解码的位对应于变量节点。对于每一个位,都会生成该位是否应该进行翻转的决定。现有系统使用启发式规则来生成决定。
为了提高与LDPC解码相关联的BER性能,并且更具体地为了提高与位翻转相关联的BER性能,本公开的实施例涉及一种用于生成关于位是否应该进行翻转的决定的深度学习方法。在示例中,神经网络被训练成输出关于位是否应该进行翻转的指示。一旦被训练,神经网络由解码器(例如,作为LDPC解码器的一部分的LDPC解码器或BF解码器)来使用。在解码迭代中,解码器基于对应于位的变量节点生成该位的特征映射并将特征映射输入到神经网络。神经网络基于特征输出相关的指示。如果指示为进行翻转,则解码器翻转该位。否则,解码器跳过翻转。
因此,使用了神经网络而非启发式规则来翻转位。因为该网络被训练以根据位的特征确定位翻转是否合适,所以可以提高BER性能。对于其中通常优化启发式规则非常具有挑战性或使用启发式规则可能无法达到期望的BER性能的不规则LDPC码来说,这种提高是显著的。
使用神经网络的挑战在于对其进行训练。更具体地,神经网络应该被训练以实现期望的BER性能。BER越小,性能越好,但因为错误的数量较少,所以训练变得更具挑战性。为了说明,10-4BER表示每 10,000位中存在一个错误位。简单地利用每10,000位中存在一个错误位的训练码字来训练神经网络将是无益的。这是因为基于大量的正确位的训练会不适当地使神经网络(例如,设置其权重和其它参数)出现偏差,使得被训练的神经网络将无法检测到错误位。
替代的,使用了数据采样。更具体地,训练码字包括训练位。因为这些位是训练位,所以训练位中的错误位置是已知的。因此,根据已知位置,训练位可以分为正确位和错误位。以第一采样率对正确位进行采样以生成采样正确位,以第二采样率对错误位进行采样以生成采样错误位。使用采样正确位和采样错误位而非训练位来训练神经网络。为了处理不适当的偏差,第二采样率小于第一采样率,使得采样正确位的量与采样错误位的量之间的比率远大于训练数据中正确位的量与错误位的量的原始比率。这样,在训练中可以得到更多的错误位和更少的正确位,从而减少甚至消除不适当的偏差。
为了说明,以三百个LDPC码字,每一个码字包括2,000个位作为示例。神经网络针对10-4BER进行训练。因此,在训练数据中存在六十个错误位和599,940个正确位。将错误位的采样率设置为2,导致30个采样错误位。将正确位的采样率设置为一千,导致大约六百个采样正确位。将三十个采样错误位和六百个采样正确位输入到神经网络进行训练。
然而,通过对训练位进行子采样,一些信息可能丢失,并且训练可能是部分的。为了进一步提高训练,可以使用第二训练阶段。在第二阶段中,以第三采样率对原始训练位进行采样以生成采样训练位。采样训练位被输入到神经网络(在其使用采样正确位和采样错误位的第一训练阶段的训练完成之后),从而进一步更新神经网络的参数以完成训练。重新参照说明性的示例,第三采样率可以被设置成六百。在这种情况下,在第二训练阶段中将使用一千个采样训练位来进一步训练神经网络。
为了解释清楚,结合LDPC解码来描述本公开的实施例。然而,实施例不限于此,并且适于依赖于位翻转的其它解码过程。通常,解码过程可涉及位翻转操作。对于这个操作,针对位生成特征映射并输入到神经网络。该位根据神经网络的输出而进行翻转。
另外,为了解释清楚,本公开的实施例结合训练和使用针对位翻转的神经网络进行描述。然而,实施例不限于此,并且适于其它解码操作。例如,除了针对位翻转训练的第一神经网络之外,训练了第二神经网络并用于卡顿错误模式以校正这种卡顿错误模式。此处,第一神经网络的训练使用第一训练组的特征映射,其中特征涉及用于位翻转的信息(例如,不满足的校验节点的数量)。第二神经网络的训练使用第二训练组的特征映射。然而,这些特征涉及卡顿错误模式校正中使用的信息(例如,校正能力、错误交集、失败的码字、执行擦除的信息)。在操作中,将各自的特征映射输入到每一个神经网络。
图1示出了根据本公开的某些实施例的错误校正系统100的示例性高级框图。在示例中,关于数据存储来描述LDPC码。然而,本公开的实施例不限于此。相反,实施例同样适于包括例如数据传输的LDPC 码的其它用途。
LDPC码是通过由0和1组成的稀疏奇偶校验矩阵H定义的线性块码。本文使用的术语“稀疏矩阵”指其中每列和每行中的非零值的数量远小于其维度的矩阵。本文使用的术语“列权重”指在奇偶校验矩阵H 的特定列中的非零值的数量。本文使用的术语“行权重”指在奇偶校验矩阵H的特定行中的非零值的数量。通常,如果对应于LDPC码的奇偶校验矩阵中的所有列的列权重是相似的,则该码被称为“规则”LDPC码。另一方面,如果列权重中的至少一个与其它列权重不同,则LDPC码被称为“不规则”LDPC码。通常,不规则LDPC码提供比规则LDPC码更好的错误校正能力。
还根据LDPC码的构建方式来描述LDPC码。随机计算机搜索结构或代数结构是可能的。随机计算机搜索结构描述具有通过基于随机计算机程序设计的奇偶校验矩阵的LDPC码。代数结构意味着奇偶校验矩阵基于组合方法构建。准循环LDPC(QC-LDPC)码属于后一种构建方法。QC-LDPC码的一个优势在于其在编码过程方面实施起来相对简单。QC-LDPC码的主要特征在于奇偶校验矩阵包括循环子矩阵,其可以基于单位矩阵或更小的随机矩阵。置换向量也可以用来创建循环子矩阵。
如图所示,LDPC编码器110接收包括期望被存储在存储系统120 中的数据的信息位。LDPC编码数据通过LDPC编码器110输出并写入到存储系统120。
在各个实施例中,存储系统120可包括各种存储类型或介质,诸如 (例如,磁性)磁盘驱动储存器、闪存等。在一些实施例中,这些技术被用在收发器中,并且数据没有写入存储系统或从存储系统读取,而是通过有线和/或无线通道进行传输和接收。在这种情况下,在码字的传输期间接收到的码字中可能引入错误。
当所存储的数据被请求或以其它方式期望时(例如,通过存储数据的应用或用户),检测器130从存储系统120接收数据。接收到的数据可能包括一些噪声或错误。检测器130对接收到的数据执行检测,并输出决定和/或可靠性信息。例如,软输出检测器对每一个所检测的位输出可靠性信息和决定。另一方面,硬输出检测器在不提供对应的可靠性信息的情况下输出关于每一个位的决定。作为示例,硬输出检测器可输出特定位为“1”或“0”的决定,而不指示检测器对该决定的确信或确定程度。相反,软输出检测器输出决定和与决定相关联的可靠性信息。通常,可靠性值指示检测器对给定的决定的确定程度。在一个示例中,软输出检测器输出对数似然比(LLR),其中正负号指示决定(例如,正值对应于“1”决定,负值对应于“0”决定),并且量值指示检测器对该决定的确信或确定程度(例如,较大的量值指示较高可靠性或确定性)。
决定和/或可靠性信息被传递到使用决定和可靠性信息来执行 LDPC解码的LDPC解码器140。软输入解码器利用决定和可靠性信息两者来对码字进行解码。硬解码器仅利用解码器中的决定值来对码字进行解码。在许多情况下,解码为迭代的,并且LDPC解码器140实施为 BF解码器(例如,执行位翻转操作)。在这种情况下,在每次解码迭代时,做出关于位是否应该进行翻转的决定,并基于该决定执行或跳过翻转操作。由LDPC解码器140生成的解码位被传递给适当的实体(例如,请求它的用户或应用)。通过适当的编码和解码,信息位与解码位匹配。
在各个实施例中,可使用包括如下的各种技术来实施所示出的系统:专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或通用处理器(例如,先进的RISC机器(ARM)内核)。
LDPC码通常通过二分图进行表示。一组节点中,变量节点或位节点对应于码字的元素,而另一组节点,例如校验节点对应于码字所满足的奇偶校验约束。通常随机选择边缘连接。如果在图中避免了短长度的循环,则会提高LDPC码的错误校正能力。在(r,c)规则码中, n个变量节点(V1、V2、……、Vn)中的每一个具有到r个校验节点的连接,并且m个校验节点(C1、C2、……、Cm)中的每一个具有到c 个位节点的连接。在不规则LDPC码中,校验节点度不一致。类似的,变量节点度也不一致。在QC-LDPC码中,奇偶校验矩阵H被构建成p×p 矩阵的块,使得块中的位仅参与块中的一个校验方程,并且块中的每一个校验方程仅涉及来自该块的一个位。在QC-LDPC码中,码字循环移位p导致另一个码字。此处p为方阵的大小,该方阵为零矩阵或循环矩阵。这是对循环码的概括,其中码字循环移位1导致另一个码字。p×p矩阵的块可以是零矩阵或循环地进行移位的大小为p×p的单位矩阵。
根据本公开的某些实施例,图2A示出了示例性奇偶校验矩阵H 200,图2B示出了与奇偶校验矩阵200对应的示例性二分图。在该示例中,奇偶校验矩阵200具有六个列向量和四个行向量。网络202示出了对应于奇偶校验矩阵200的网络并表示二分图。包括例如Tanner图的各种类型的二分图是可能的。
通常,网络202中的变量节点对应于奇偶校验矩阵200中的列向量。网络202中的校验节点对应于奇偶校验矩阵200的行向量。节点之间的互连通过奇偶校验矩阵200的值确定。具体地,“1”指示对应的校验节点和变量节点具有连接。“0”指示没有连接。例如,奇偶校验矩阵200 中最左边的列向量和自顶部开始第二行向量中的“1”对应于变量节点 204与校验节点210之间连接。图2A和图2B示出了用于规则LDPC码的奇偶校验矩阵和网络。如图2B所示,每一个变量节点连接到相同数量的校验节点,因此LDPC码是规则的。对于不规则LDPC码,连接数量在变量节点之间变化。通常,连接数量可以被称为LDPC码的度。
消息传递算法通常用于对LDPC码进行解码。现有技术中存在消息传递算法的多种变化,诸如最小和算法、比例化最小和算法等。通常,在不脱离本公开的教导的情况下,可以在LDPC解码器中使用消息传递算法的任何变体。如图2B所示,消息传递使用变量节点和校验节点的网络。如图2A所示,变量节点和校验节点之间的连接通过奇偶校验矩阵200的值进行描述并对应于该值。
可执行硬决定消息传递算法。在第一步骤中,变量节点的每一个传输消息到一个或多个与其连接的校验节点。在这种情况下,消息是变量节点的每一个认为是其正确值的值。
在第二步骤中,校验节点的每一个使用其先前从变量节点接收到的信息来计算待传输到与其连接的变量节点的响应。响应消息对应于校验节点基于从连接到该校验节点的其它变量节点接收到的信息而相信变量节点应该具有的值。该响应使用奇偶校验方程来计算,该方程使连接到特定校验节点的所有变量节点的值的总和为零(模二)。
此时,如果满足所有校验节点处的所有方程,则解码算法声明找到了正确的码字并终止。如果未找到正确的码字,则迭代利用来自变量节点的另一更新继续进行,以使用它们从校验节点接收到的消息通过多数决原则来决定在其位置处的位是否应该为0或1。然后,变量节点将该硬决定消息传输给连接到其的校验节点。迭代继续进行,直到找到正确的码字或者在未找到正确的码字的情况下执行了最大次数的迭代。应该注意的是,软决定解码器进行类似的操作,但是在校验节点和变量节点之间传递的消息的每一个还包括每一个位的可靠性。
可执行示例性消息传递算法。在该示例中,L(qij)表示由变量节点vi发送到校验节点cj的消息;L(rji)表示由校验节点cj发送到变量节点vi的消息;并且L(ci)表示每一个变量节点vi的初始LLR值。每一个 L(qij)的变量节点处理可以通过以下步骤完成:
(1)从存储器中读取L(ci)和L(rji)。
(3)计算每一个L(Qi-sum)-L(rij)。
(4)输出L(Qi-sum)并回写到存储器。
(5)如果这不是存储器的最后一列,则转到步骤1并将i递增1。
(6)计算奇偶校验和,如果它们都等于零或者迭代的次数等于最大限制,则停止;否则,执行校验节点处理。
每一个L(rji)的校验节点处理可以如下执行:
(1)从存储器中读取一行qij。
(2)如下计算L(Rj-sum):
αij=sign(L(qij)),βij=|L(qij)|,
(4)将L(rji)回写到存储器。
(5)如果这不是存储器的最后一行,则转到第一步骤并将j递增1。
除了消息传递算法之外,还使用了位翻转算法。位翻转算法通常以满足奇偶校验方程从而校正错误的目标来翻转位。在一个图示中,校验节点连接到变量节点并且与奇偶校验方程相关联。变量节点的每一个对应于一个位。当不满足校验节点时,不满足奇偶校验方程。进而,当由变量节点表示的位的模二和不为零时,不满足校验节点。位翻转尝试通过翻转变量节点的位来最小化不满足的校验节点的总数量,并因此最小化不满足的校验方程的总数量。例如,重新参考说明性校验节点,如果不满足该校验节点,则翻转由所连接的变量节点表示的位。通过翻转该位,模二和变成零,因此满足了校验节点和奇偶校验方程。当然,翻转位不能是随机的。替代的,使用了各种技术来识别应该翻转的位。现有的系统使用例如启发式规则。根据启发式规则,如果位的变量节点连接到许多不满足的校验节点并且如果该数量超过阈值,则翻转该位。否则,该位不进行翻转。与此相比,如在下面的附图中进一步描述的,本公开的实施例使用神经网络来进行位翻转。
图3示出了根据本公开的某些实施例的用于对LDPC码字进行解码的示例图300。如图所示,使用了LDPC解码器310(类似于图1的LDPC 解码器140)。LDPC码字320被输入到LDPC解码器310。解码的位330 从LDPC解码器310输出。LDPC解码器310使用迭代解码过程312和神经网络314来处理输入并生成输出。
在一些实施例中,LDPC码字320并不与原始编码的LDPC码字完全匹配。例如,假设x=[x0,x1,…,xN-1]是包括信息位和奇偶校验位的原始码字,并且H=[hi,j]是在第i行和第j列的交集处具有二进制值hi,j的 M×N低密度奇偶校验矩阵。然后H的每一行为x提供奇偶校验。因为 LDPC码结构,xHT=0。假设x在噪声通道上传输和/或通过噪声通道存储。被破坏的通道输出是y=[y0,y1,…,yN-1]并表示码字320。因为通道噪声,所以y与x不匹配。
在一些实施例中,解码的位330包括信息位。信息位可能与x的原始信息位不匹配。两个对应的信息位之间的不匹配表示错误位。错误位的数量表示BER。尽管如此,LDPC解码器310尝试最小化错误位的数量并降低BER。
在一些实施例中,LDPC解码器310实施迭代解码过程312。例如, LDPC解码器310包括执行迭代解码过程312的硬件和/或软件。各种迭代解码过程是可能的。如结合图2A和图2B所说明的,在一个示例中,迭代解码过程312涉及消息传递算法。迭代解码过程312的输出为位316。
在示例中,位316基于消息在变量节点和校验节点之间传递而生成。例如,位316表示硬决定位z=[z0,z1,…,zN-1]。z的校验子是由s=[s0,s1,…,sN-1]=zHT计算的二进制向量,其权重为||s||。权重||s|| 表示不满足的校验节点的数量,因为所以也称为校验和。假设z(j)=[z0,z1,…,zN-1]为第j次迭代的硬决定,并且第j次迭代的校验子向量为然后‖s‖(j)为第j次迭代的校验和。
LDPC解码器310还可以为位316的每一个生成特征映射317。与变量节点相关联的位的特征映射317包括多个特征。例如,特征映射317 为特征向量,其中特征为该向量的元素。一些特征涉及不满足的校验节点。例如,特征映射317包括连接到变量节点的不满足的校验节点的总数量、变量节点之间的不满足的节点的总数量。一些特征还与位本身和解码迭代有关。例如,特征映射317包括解码迭代的当前编号(例如,针对第j次迭代的“j”)和关于该位的可用软信息(例如,可靠性信息、LLR、对于检测到的位的决定或可用于软解码器的其它信息)。一些特征也与其它位有关。例如,位的变量节点连接到特定的不满足的校验节点,进而,该校验节点又连接到对应于第二位的第二变量节点。关于第二位和/或第二变量节点的信息可以被包括在位的特征映射317 中。例如,特征映射317还包括连接到第二变量节点的不满足的校验节点的总数量和/或关于第二位的软信息。
LDPC解码器310将位的特征映射317输入到神经网络314。神经网络314的输出是该位是否应该进行翻转的指示318。如果指示318为翻转该位,则LDPC解码器310对该位进行翻转。否则,该位不进行翻转。一旦迭代解码和位翻转完成,LDPC解码器就输出解码的位330。
在示例中,LDPC解码器310为每一个位生成特征映射317并输入到神经网络314以接收对应的指示318。在另一示例中,LDPC解码器310 选择特定的位,并且仅为这些所选择的位(而非所有位)中的每一个生成和/或输入特征映射317。例如,特定的位具有特定的变量节点。如果该变量节点连接到不满足的校验节点,则LDPC解码器310为该特定的位生成特征映射317并将该特征映射317输入到神经网络314。否则,不生成特征映射317和/或不将特征映射317提供为神经网络314的输入。
在一些实施例中,LDPC解码器310管理神经网络314。例如,实施神经网络314的操作的硬件和/或软件是LDPC解码器310的部件。在其它实施例中,LDPC解码器310可以访问但不管理神经网络314。例如,实施神经网络314的操作的硬件和/或软件不是LDPC解码器310的部件,而是可以是错误校正系统(例如,图1的错误校正系统100)的部件。在这种实施例中,在LDPC解码器310和神经网络314之间存在接口(例如,应用程序接口(API)、通信总线等),使得特征映射317可以从LDPC 解码器310被传输到神经网络314,并且是否翻转对应的位的指示318 可以由LDPC解码器310从神经网络314接收。
在一些实施例中,是否翻转位的指示318为硬决定。例如,指示318 为标志,其中值“1”指示该位应该进行翻转,值“0”指示该位不需要进行翻转。在这种情况下,LDPC解码器310基于标志的值“1”或“0”来翻转位。在其它实施例中,指示318为软决定。例如,指示318为包括标志和标志中的值正确的相关可能性的预测。在这种情况下,LDPC解码器310也使用位翻转的可能性。例如,如果可能性超过某个预定义的阈值(例如,大于75%或某个其它的百分比)并且该标志被设置为“1”,则LDPC解码器310对该位进行翻转。
图4示出了根据本公开的某些实施例的用于生成位是否应该进行翻转的指示的示例性神经网络400。与位相关联的特征映射402被输入到神经网络400。进而,神经网络400输出关于该位是否应该进行翻转的指示404。如图所示,神经网络400包括多个层。来自特征映射402 的特征连接到神经网络的输入层410中的输入节点。指示404从输出层 430的输出节点生成。神经网络400的一个或多个隐藏层420存在于输入层410与输出层420之间。神经网络400被预先训练成通过不同的层410、420和430来处理来自特征映射402的特征以输出指示404。
在一些实施例中,神经网络400是诸如人造深度神经网络的表示互连节点的网络的多层神经网络,其中关于节点的知识(例如,关于由节点表示的特定特征的信息)跨层进行共享,也保留了对每一个层特定的知识。每一个节点表示一条信息。知识可以通过节点到节点互连而在节点之间交换。神经网络400的输入激活一组节点。进而,这组节点激活其它节点,从而传播关于输入的知识。该激活过程在其它节点之间重复,直到输出层中的节点被选择并激活。
如图所示,神经网络400包括表示以前馈方式互连的节点的层级的层的层级。输入层410存在于最低层级,存在输入层410。输入层410 包括在此被称为输入节点的一组节点。当特征映射402被输入到神经网络400时,输入层410的输入节点的每一个连接到特征映射的每一个特征。每个连接都具有权重。这些权重是从神经网络400的训练中导出的一组参数。输入节点通过对这些特征应用激活函数来转换特征。从转换中导出的信息被传递到更高层级的节点。
输出层430存在于最高层级。输出层430被映射到一个或多个输出节点。每一个输出节点都提供有关位的特定信息。如图4所示,输出层 430包括单个输出节点。所提供的信息是该位是否应该进行翻转的指示。
隐藏层420存在于输入层410与输出层430之间。隐藏层420包括“N”个隐藏层,其中“N”为大于或等于1的整数。进而,隐藏层的每一个还包括本文中称为隐藏节点的一组节点。示例性隐藏层包括上采样层、卷积层和数据转换层。
在隐藏层420的最低级处,该级的隐藏节点互连到输入节点。在隐藏层420的最高级处,该级的隐藏节点互连到输出节点。输入节点不直接互连到输出节点。如果存在多个隐藏层,则输入节点互连到最低隐藏层的隐藏节点。进而,这些隐藏节点互连到下一隐藏层的隐藏节点,以此类推。
互连表示所学习的关于两个互连节点的一条信息。互连具有可进行调整(例如,基于训练数据组)的数字权重,使神经网络400适应于输入并且能够进行学习。
通常,隐藏层420允许关于输入层410的输入节点的知识在输出层 430的输出节点之间共享。为此,通过隐藏层420对输入节点应用转换f。在示例中,转换f为非线性的。可使用不同的非线性转换f,包括例如校正函数f(x)=max(0,x)。在示例中,基于交叉验证选择了特定的非线性转换f。例如,给定已知的示例对(x,y),其中x∈X和且y∈Y,当该函数导致最佳匹配时选择函数f∶X→Y。
神经网络400还使用损失函数ll(或者也被称为成本函数c)来找到最优方案。最优方案表示没有比其损失更少的方案的情况。在示例中,损失函数l包括均方误差函数,其使所有示例对(x,y)中的输出f(x)与目标值y之间的平均平方误差最小化。使用了使用梯度下降来最小化损失函数的反向传播算法来训练神经网络400。
这样,隐藏层420保留关于输入节点的知识。基于隐藏节点和输入节点的互连,在输出节点之间共享一组知识。
图5示出了根据本公开的某些实施例的用于训练神经网络的示例图500。所示的部件可以用硬件和/或软件来实施,并且可以是离线系统和/或在线系统的一部分。在示例中,离线系统将训练提供为计算服务。该服务可以用于开发神经网络的配置(例如,隐藏层的数量、节点的数量等)、训练神经网络(例如,设置权重),并将训练的神经网络输出供在线系统使用。训练可以是单个实例或可以是连续的,使得对神经网络(例如对其权重)的更新可以被推送到在线系统。相比之下,在线系统可以包括诸如图1的错误校正系统100的错误校正系统,并且可以训练(根据需要)并使用神经网络。
通常,训练使用训练数据502。在训练结束时,神经网络504被训练成基于输入特征映射输出位是否应该进行翻转的指示并且可用于实际使用。如图所示,训练可以分多个阶段进行。在第一阶段中,未经训练的神经网络530利用可从训练位获得的正确位和错误位的子集来进行训练,并且导致部分训练的神经网络532。在第二阶段中,部分训练的神经网络532进一步利用训练位的较大子集来进行训练。在第二训练阶段完成时,经完全训练的神经网络504变得可供使用。
在一些实施例中,训练数据502包括大量的训练LDPC码字(例如,数百或数千个)。因为使用了训练LDPC码字,所以LDPC码字中的错误位的位置是已知的。
在第一训练阶段中,训练数据502被输入到数据分离器510,其根据错误位514的已知位置,从训练LDPC码字中将正确位512分离到一组中并将错误位514分离到另一组中。随后,每一组以不同的比率进行采样。例如,下采样器520以第一采样率“s1”对正确位512进行下采样以生成采样校正位524。下采样器522以第二采样率“s2”对错误位514进行下采样以生成采样错误位526。为了提高训练并避免不适当地偏置神经网络504(例如,通过设置权重使得其不能适当地检测以比正确位低得多的比率出现的错误位),第二采样率“s2”小于第一采样率“s1”,使得采样正确位524的数量与采样错误位526的数量的比率大于正确位512的数量与错误位514的数量的比率。
采样正确位524和采样错误位526被输入到特征生成器528。特征生成器528为每个位生成特征映射。然后,特征映射被输入到未经训练的神经网络530。如结合图4所示,根据输入的特征映射,可以使用损失函数和反向传播算法来训练未经训练的神经网络530。在该第一训练阶段结束时,未经训练的神经网络530变成部分训练的神经网络532。
在第二训练阶段中,训练数据502被输入到下采样器540并且可以在完成第一训练阶段之前开始。训练数据包括来自训练LDPC码字的所有训练位542。下采样器540以第三采样率“s3”对训练位542进行下采样以生成采样训练位544。进而,采样训练位544被输入到特征生成器546,其为采样训练位544的每一个生成特征映射。然后,特征映射被输入到部分训练的神经网络532。根据输入的特征映射,可以使用相同或不同的损失函数和反向传播算法以进一步训练部分训练的神经网络532。在该第二训练阶段结束时,部分训练的神经网络532变成经完全训练的神经网络504。
在一些实施例中,采样率“s1”、“s2”和“s3”基于特定的BER来设置。例如,神经网络504针对特定的BER进行训练。训练数据包括对应于特定的BER的错误位。神经网络504使用不同组的采样率进行训练。使用了最能实现BER的组。
虽然图5将不同的部件示出为分离的,但是部件的其它实施也是可能的。例如,可以使用以多采样率进行操作的单个下采样器来代替下采样器520、522和540。类似地,可以使用单个特征生成器来代替特征生成器528和546。
图6至图8示出了用于基于神经网络对诸如LDPC码字的码字进行解码的示例性流程。系统被描述为执行示例性流程的特定操作。特别地,该系统实施了包括解码器的诸如图1的错误校正系统100的错误校正系统。系统可具有特定的硬件配置以执行错误校正系统的操作,包括解码器(例如,诸如图1的LDPC解码器140的迭代解码器)的操作。可选地或额外地,系统可包括配置有特定指令的通用硬件。在示例中,系统包括一个或多个处理器以及一个或多个存储器。存储器存储计算机可读指令以实现针对系统的功能。指令在由系统的处理器执行时导致系统执行功能性。存储在存储器中的指令与下面的处理器结合在一起表示用于执行功能性的装置。示例性流程中的一些操作是相似的。为了简洁,本文不再重复相似之处。进一步地,虽然以特定的顺序示出操作,但是操作的其它布置是可能的,并且可以跳过一些操作,这对于本领域技术人员来说是显而易见的。
图6示出了根据本公开的某些实施例的使用神经网络的LDPC迭代解码的示例性流程600。如图所示,示例性流程600在操作602处开始,其中系统访问LDPC码字。例如,响应于对存储在储存器中的信息位的请求,从储存器访问LDPC码字。信息位使用LDPC编码过程进行编码并存储在储存器中。
在操作604中,系统迭代地对LDPC码字进行解码。例如,系统实施(或更具体地,解码器使用)硬迭代LDPC解码过程或软迭代LDPC 解码过程,并将LDPC码字输入到这种过程。无论是软迭代解码过程还是硬迭代解码过程都涉及位翻转。位翻转可以发生在每一个解码迭代中或发生在一组这种解码迭代中。位翻转涉及使用经过适当训练的神经网络,如结合接下来的操作和接下来的附图进一步描述的。
在操作606中,系统在解码迭代中针对位生成与对应于该位的变量节点相关联的特征映射。该操作可以在每一个解码迭代中或在一组这种解码迭代中重复。该操作也可以针对LDPC码字的所有位进行重复,或者可选地,针对所选择的一组位进行重复。如果仅针对所选择的位执行操作606,则可以基于其变量节点来选择位。例如,系统(或更具体地,解码器)选择连接到至少一个不满足的校验节点的变量节点,因为该变量节点的位是翻转的候选项。另一方面,如果变量节点没有连接到任何不满足的校验节点,则系统(或更具体地,解码器)不选择该变量节点的位。如结合图3的特征映射317所示,位的特征映射包括与不满足的校验节点相关的特征、与位本身相关的特征和与解码迭代相关的特征以及与不满足的校验节点相关联的其它位相关的特征。图8示出了用于生成这种特征映射的示例性流程。
在操作608中,系统将位的特征映射输入到神经网络。可以对在不同解码迭代中在操作606中生成的各个特征映射重复该操作。在示例中,神经网络包括具有多个输入节点的输入层。系统(或更具体地,解码器)将特征映射作为输入提供给输入层。特征映射中的每一个特征与每一个输入节点连接,并且每一个连接都被加权。
在操作610中,系统访问来自神经网络的输出。输出指示该位是否应该进行翻转。输出可以是关于位翻转的软决定或硬决定。可以对在不同解码迭代中在操作608中输入的各种特征映射重复该操作。在示例中,神经网络包括具有输出节点的输出层。输出节点基于关于从输入层输入并且通过一个或多个隐藏层的特征映射的特征的信息的传播来生成指示。该指示被存储在系统的存储器中和/或被作为输入提供给 LDPC解码器。
在操作612中,系统基于输出翻转位或跳过位翻转。例如,如果输出指示位应该进行翻转(无论是指示翻转与等于或大于预定阈值的可能性相关联的进行翻转的硬决定还是软决定),则系统(或更具体地,解码器)翻转该位。否则,该位不进行翻转。可以对存在来自神经网络的输出和适用的解码迭代之间的每一个位重复该操作。
在操作614中,系统输出解码的位。在示例中,完成了迭代解码和位翻转。系统(或更具体地,解码器)输出包括根据迭代解码和位翻转而进行解码的位的解码码字。
图7示出了根据本公开的某些实施例的用于训练神经网络的示例性流程700。虽然图6的示例性流程600通常通过在线系统执行,但示例性流程700可以通过相同的在线系统或通过离线系统执行。因此,结合图7描述的“系统”指在线系统或离线系统。
示例性流程700在操作702处开始,其中系统访问训练位。在示例中,神经网络针对特定的BER进行训练。训练位是来自在已知位置处包括错误的训练LDPC码字的位,其中错误位与正确位的比率对应于 BER。这种训练位可以从系统的存储器中获得。
在操作704中,系统将训练位分为正确位和错误位。在示例中,训练LDPC码字中错误位的位置是已知的。系统从这些位置访问错误位,并生成包含错误位的组。剩下的一组包括正确位。
在操作706中,系统以第一采样率对正确位进行采样以生成采样正确位。在示例中,系统以第一采样率使用子采样。子采样可以随机选择正确位的子集。该子集是采样正确位的集合。
在操作708中,系统以第二采样率对错误位进行采样以生成采样错误位。在示例中,系统以第二采样率使用子采样。子采样可以随机选择错误位的子集。该子集是采样错误位的集合。通常,第二采样率小于第一采样率,以提高神经网络的训练。
在操作710中,系统为采样正确位和采样错误位生成特征映射,并且在第一训练阶段中将特征映射输入到神经网络。在示例中,特征映射的每一个对应于采样正确位或者采样错误位。这种位可以从训练 LDPC码字中获得。这种训练码字在受控或仿真环境中经受迭代解码,使得关于该位和对应变量节点的各种解码信息为已知的。如结合图8 进一步描述的,用于位的特征映射从这种信息中导出。如结合图4所示,根据输入特征映射,可以使用损失函数和反向传播算法来训练神经网络。
在操作712中,系统以第三采样率对训练位进行采样以生成采样训练位。在示例中,系统以第三采样率使用子采样。子采样可以随机选择原始训练位的子集。该子集是采样训练位的集合。
在操作714中,系统为采样训练位生成特征映射,并且在第二训练阶段中输入特征映射以进一步训练神经网络。在示例中,特征映射的每一个对应于采样训练位。这种位可以从训练LDPC码字中获得。这种训练码字在受控或仿真环境中经受迭代解码,使得关于该位和对应变量节点的各种解码信息为已知的。如结合图8进一步描述的,位的特征映射从这种信息中导出。如结合图4所示,根据输入特征映射,可以使用损失函数和反向传播算法来进一步训练神经网络。
在操作716中,系统在完成训练时存储神经网络。神经网络被存储在可用的或在线系统本地的存储位置中(如果不同于系统)。在示例中,存储神经网络的诸如层的数量、每一层中的节点数量、连接之间的权重以及其它相关参数的参数。
图8示出了根据本公开的某些实施例的用于生成特征映射的示例性流程800。特征映射是针对位而生成的。该位可以是训练位或正在解码的实际位。在训练神经网络期间生成训练位的特征映射。因此,负责训练的系统生成训练位的特征映射。为此,训练位可以从在受控或仿真环境中迭代解码的训练码字中获得。关于训练位和关于对应的变量节点的各种解码信息从这种环境中得知。相比之下,在LDPC码字的实际解码期间生成正在解码的位的特征映射。因此,负责解码的系统为生成该位的特征映射。为此,各种解码信息可以从位的解码中获得。这些信息用于生成特征映射。生成特征映射的过程对于训练位和正在解码的位是相似的。当然,主要区别在于用于生成特征映射的信息的来源。示例性流程800可应用于两种类型的位。
示例性流程800从操作802开始,其中系统针对位(无论是训练位还是正在解码的位)识别在解码迭代中在二分图中(例如,无论该图是用于在特定的BER或实际解码期间生成训练LDPC码字)连接到变量节点的不满足的校验节点的总数量。变量节点对应于位。校验节点连接到该变量节点和每一个对应于不同的位的其它变量节点。如果对应于所连接的变量节点的位的模数和不为零,则该校验节点不满足。因此,系统针对变量节点识别与其连接的校验节点,并确定这些校验节点中不满足的部分,并跟踪这些连接了但不满足的校验节点的总数量。
在操作804中,系统针对所有变量节点识别不满足的校验节点的总数量。与其中总数量按每一个变量节点进行确定的操作802相比,在操作804中,该总数量表示在解码迭代中在二分图中所有不满足的校验节点的计数。
在操作806中,系统针对位识别当前解码迭代的编号和关于来自当前解码迭代的位的软信息。例如,系统在其存储器中保持当前解码迭代的计数“j”。该计数表示编号。此外,系统还在其存储器中保持可靠性信息、LLR、用于检测到的位的决定或者与从当前解码迭代可获得的位相关的其它解码相关信息。因此,可以从系统的存储器中识别当前解码迭代的编号和关于该位的软信息。
在操作808中,系统针对与位对应的变量节点识别连接到该变量节点的不满足的校验节点。例如,该校验节点基于二分图和相关的奇偶校验方程来识别。可以对连接到该变量节点的各个不满足的校验节点重复该操作。
在操作810中,系统针对不满足的校验节点识别连接到该校验节点的其它变量节点。例如,基于二分图来识别这种变量节点的每一个。
在操作812中,系统针对其它连接到的变量节点中的至少一个识别连接到该其它连接到的变量节点的不满足的校验节点的总数量。例如,系统识别连接到不满足的校验节点的第二变量节点。系统然后执行类似于操作802的操作以识别连接到第二变量节点的不满足的校验节点的总数量。
在操作814中,系统将不满足的校验节点的总数量、当前解码迭代的编号和软信息添加到与位的变量节点相关联的特征映射。例如,特征映射为特征向量,其中向量的元素为各个特征。系统将针对该位识别的不满足的校验节点的总数量包括为一个特征。系统将针对所有变量节点识别的不满足的校验节点的总数量包括为另一特征。系统进一步将解码迭代的当前编号包括为又一特征。系统还将每种类型的软信息包括为单独的特征。额外,系统将针对其它位的每一个识别的不满足的校验节点的总数量包括为单独的特征。
图9描述了可根据一个实施例使用的诸如图1的错误校正系统100 的系统的一个可能的实施。图9仅仅是对本公开的实施例的说明,并不限制如所附权利要求所述的本公开的范围。在一个实施例中,系统为通常包括监视器910、计算机920、用户输出装置930、用户输入装置940、通信接口950等的计算机系统900。图1的错误校正系统100实施了计算机系统900的一些或全部部件。
如图9所示,计算机920可以包括经由总线子系统990与多个外围装置通信的处理器960。这些外围装置可包括用户输出装置930、用户输入装置940、通信接口950以及诸如随机存取存储器(RAM)970和磁盘驱动器980的存储子系统。
用户输入装置940包括用于将信息输入到计算机920的所有可能类型的装置和机构。这些可包括键盘,小键盘,结合到显示器中的触摸屏,诸如语音识别系统、麦克风的音频输入装置以及其它类型的输入装置。在各个实施例中,用户输入装置940通常被实施为计算机鼠标、轨迹球、跟踪板、操纵杆、无线遥控器、绘图板、语音命令系统、眼睛跟踪系统等。用户输入装置940通常允许用户经由诸如点击按钮等命令来选择出现在监视器910上的对象、图标、文本等。
用户输出装置930包括用于从计算机920输出信息的所有可能类型的装置和机制。这些可包括显示器(例如,监视器910)、诸如音频输出装置的非视觉显示器等。
通信接口950提供到其它通信网络和装置的接口。通信接口950可用作从其它系统接收数据和向其它系统传输数据的接口。通信接口950 的实施例通常包括以太网卡、调制解调器(电话、卫星、电缆、ISDN)、 (异步)数字用户线(DSL)单元、火线接口、USB接口等。例如,通信接口950可联接到计算机网络,联接到火线总线等。在其它实施例中,通信接口950可被物理地集成在计算机920的主板上,并且可以是诸如软DSL的软件程序等。
在各个实施例中,计算机系统900还可包括能够通过诸如HTTP、 TCP/IP、RTP/RTSP协议等的网络进行通信的软件。在本公开的可选实施例中,也可使用其它通信软件和传输协议,例如IPX、UDP等。在一些实施例中,计算机920包括来自英特尔的一个或多个Xeon微处理器作为处理器960。进一步地,一个实施例中,计算机920包括基于UNIX的操作系统。
RAM 970和磁盘驱动器980是被配置成存储诸如本公开的实施例的包括可执行计算机代码、人类可读代码等的数据的有形介质的示例。其它类型的有形介质包括软盘,可移动硬盘,诸如CD-ROM、DVD和条形码的光学存储介质,诸如闪速存储器、非瞬态只读存储器(ROM) 的半导体存储器,电池支持的易失性存储器,网络存储装置等。RAM 970和磁盘驱动器980可被配置成存储提供本公开的功能的基本编程和数据结构。
提供本公开的功能的软件代码模块和指令可被存储在RAM 970和磁盘驱动器980中。这些软件模块可由处理器960执行。RAM 970和磁盘驱动器980还可提供用于存储根据本公开使用的数据的存储库。
RAM 970和磁盘驱动器980可包括多个存储器,其包括用于在程序执行期间存储指令和数据的主随机存取存储器(RAM)和其中存储固定的非暂时性指令的只读存储器(ROM)。RAM 970和磁盘驱动器980 可包括为程序和数据文件提供持久(非易失性)存储的文件存储子系统。RAM 970和磁盘驱动器980还可包括诸如可移除闪速存储器的可移除存储系统。
总线子系统990提供用于使计算机920的各个部件和子系统按预期彼此通信的机制。虽然总线子系统990被示意性地示出为单个总线,但总线子系统的可选实施例可利用多个总线。
图9是能够实现本公开的计算机系统的代表。对于本领域普通技术人员将显而易见的是,许多其它硬件和软件配置适用于本公开。例如,计算机可以是台式、便携式、机架安装或平板配置。另外,计算机可以是一系列联网的计算机。进一步地,可考虑使用其它微处理器,诸如奔腾TM或安腾TM微处理器、AMD公司的皓龙TM或速龙XPTM微处理器等。进一步地,可考虑其它类型的操作系统,诸如微软公司的 等,太阳微系统公司的Solaris、LINUX、 UNIX等。在其它实施例中,上述技术可在芯片或辅助处理板上实施。
本公开的各个实施例可以软件或硬件中的逻辑或两者的组合的形式来实施。逻辑可作为一组指令存储在计算机可读或机器可读的非暂时性存储介质中,该组指令适于引导计算机系统的处理器执行在本公开的实施例中公开的一组步骤。逻辑可形成适于引导信息处理装置执行在本公开的实施例中公开的一组步骤的计算机程序产品的一部分。基于本文提供的公开内容和教导,本领域普通技术人员将理解实施本公开的其它方式和/或方法。
本文描述的数据结构和代码可被部分地或完全地存储在计算机可读存储介质和/或硬件模块和/或硬件设备上。计算机可读存储介质包括但不限于易失性存储器,非易失性存储器,诸如磁盘驱动器、磁带、 CD(光盘)、DVD(数字通用光盘或数字视频光盘)的磁性和光学存储装置或现在已知或以后开发的能够存储代码和/或数据的其它介质。本文描述的硬件模块或设备包括但不限于专用集成电路(ASIC)、现场可编程门阵列(FPGA)、专用或共享处理器和/或现在已知或以后开发的其它硬件模块或设备。
本文描述的方法和过程可被部分地或完全地实施为存储在计算机可读存储介质或装置中的代码和/或数据,使得当计算机系统读取和执行代码和/或数据时,计算机系统执行相关的方法和过程。方法和过程也可被部分地或完全地实施在硬件模块或设备中,使得当硬件模块或设备被激活时,它们执行相关的方法和过程。本文公开的方法和过程可使用代码、数据和硬件模块或设备的组合来实施。
虽然为了清楚理解的目的已经详细描述了前述的实施例,但是本公开不限于所提供的细节。存在许多可选方法来实施本公开。所公开的实施例是说明性的而非限制性的。
Claims (20)
1.一种基于位翻转过程对低密度奇偶校验即LDPC码进行解码的方法,所述方法包括:
通过系统访问来自所述系统的存储器的LDPC码字;以及
通过所述系统迭代地对所述LDPC码字进行解码来以改进的位错误率即改进的BER从所述存储器输出解码的位,其中在解码迭代中,所述解码包括:
针对所述LDPC码字的位生成特征映射,所述位对应于变量节点;
将所述特征映射输入到训练成用于位翻转的神经网络,所述特征映射至少对应于所述神经网络的输入层的输入节点;
访问所述神经网络的输出,所述输出指示所述位基于所述位的特征映射应该进行翻转,所述输出至少对应于所述神经网络的输出层的输出节点;以及
基于来自所述神经网络的输出在所述解码迭代中对所述位进行翻转。
2.根据权利要求1所述的方法,其中所述神经网络基于第一训练阶段进行训练,其中在所述第一训练阶段中:
训练位被分为正确位和错误位;
以第一采样率对所述正确位进行采样以生成采样正确位;
以第二采样率对所述错误位进行采样以生成采样错误位;并且
所述采样正确位和所述采样错误位被输入到所述神经网络。
3.根据权利要求2所述的方法,其中所述第一采样率大于所述第二采样率。
4.根据权利要求3所述的方法,其中所述神经网络针对特定的位错误率即特定的BER进行训练,并且其中所述第一采样率和所述第二采样率基于所述特定的BER进行设置。
5.根据权利要求2所述的方法,其中所述神经网络基于第二训练阶段进行进一步训练,其中在所述第二训练阶段中:
以第三采样率对所述训练位进行采样以生成采样训练位;并且
所述采样训练位被输入到所述神经网络。
6.根据权利要求5所述的方法,其中与所述采样正确位和所述采样错误位相对应的特征映射在所述第一训练阶段中被输入到所述神经网络,并且其中与所述采样训练位相对应的特征映射仅在所述第一训练阶段完成之后的所述第二训练阶段中被输入到所述神经网络。
7.根据权利要求1所述的方法,其中所述特征映射包括在所述解码迭代中不满足的校验节点的总数量以及在所述解码迭代中连接到所述变量节点的不满足的校验节点的总数量。
8.根据权利要求7所述的方法,其中生成所述特征映射包括:
识别连接到所述变量节点的不满足的校验节点;
识别连接到所述不满足的校验节点的第二变量节点;
确定连接到所述第二变量节点的不满足的校验节点的第二总数量;以及
将不满足的校验节点的所述第二总数量增加到所述变量节点的特征映射中。
9.根据权利要求7所述的方法,其中所述特征映射进一步包括所述解码迭代的当前编号和从所述解码迭代能够获得的关于所述位的软信息。
10.根据权利要求1所述的方法,其中所述解码进一步包括,在下一解码迭代中:
基于所述下一解码迭代中不满足的校验节点来更新所述位的特征映射;
将所更新的特征映射输入到所述神经网络;
访问来自所述神经网络的第二输出,所述第二输出指示所述位基于所更新的特征映射不应该进行翻转;以及
基于来自所述神经网络的所述第二输出跳过在所述下一解码迭代中对所述位进行翻转。
11.根据权利要求1所述的方法,其中所述解码进一步包括,在所述解码迭代中针对与第二变量节点对应的第二位:
识别连接到所述第二变量节点的不满足的校验节点;
基于对所述变量节点连接到所述不满足的校验节点的确定,确定连接到所述变量节点的不满足的校验节点的总数量;
将不满足的校验节点的所述总数量增加到所述第二位的第二特征映射;
将所述第二特征映射输入到所述神经网络;
访问来自所述神经网络的第二输出,所述第二输出指示所述第二位基于所述第二特征映射应该进行翻转;以及
基于来自所述神经网络的所述第二输出在所述解码迭代中对所述第二位进行翻转。
12.一种非暂时性计算机存储介质,其存储指令,所述指令与低密度奇偶校验即LDPC解码器相关联并在通过系统的处理器执行时使所述系统执行与LDPC码字的迭代解码相关联的操作来以改进的位错误率输出解码的位,所述操作包括:
在解码迭代中:
针对所述LDPC码字的位生成特征映射,所述位对应于变量节点;
将所述特征映射输入到被训练以基于对应的特征映射确定位是否应该进行翻转的神经网络,所述特征映射至少对应于所述神经网络的输入层的输入节点;
访问所述神经网络的输出,所述输出指示所述位基于所述位的特征映射应该进行翻转,所述输出至少对应于所述神经网络的输出层的输出节点;以及
基于来自所述神经网络的输出在所述解码迭代中对所述位进行翻转。
13.根据权利要求12所述的非暂时性计算机存储介质,其中所述LDPC码字为不规则LDPC码字。
14.根据权利要求12所述的非暂时性计算机存储介质,其中所述特征映射包括与所述变量节点相关联的特征,其中所述神经网络的输入层包括输入节点,其中每一个输入节点连接到来自所述特征映射的特征,并且其中输入神经和特征之间的每一个连接都被加权。
15.根据权利要求12所述的非暂时性计算机存储介质,其中所述神经网络的输出层包括生成关于是否翻转所述位的决定的输出节点。
16.根据权利要求12所述的非暂时性计算机存储介质,其中所述神经网络基于对所述神经网络的包括与采样正确位以及采样错误位相关联的特征映射的输入进行训练,其中:
所述采样正确位通过以第一采样率对正确位进行采样而生成;
所述采样错误位通过以第二采样率对错误位进行采样而生成,其中所述第二采样率小于所述第一采样率;并且
所述正确位和所述错误位通过将训练位分为正确位与错误位而生成。
17.根据权利要求16所述的非暂时性计算机存储介质,其中在所述神经网络基于所述输入进行训练之后,所述神经网络基于额外的输入进行进一步训练,其中所述额外的输入包括与以第三采样率对训练位进行采样而生成的采样训练位相关联的特征映射。
18.一种提高解码的位的位错误率的系统,其包括:
处理器;以及
存储器,其包括与低密度奇偶校验即LDPC解码器相关联的计算机可读指令,所述指令在通过所述处理器执行时使所述系统:
训练神经网络以基于与对应于位的变量节点相关联的特征映射来确定所述位是否应该进行翻转;并且
将所述神经网络存储在所述LDPC解码器可访问的储存器中,其中在所述LDPC解码器的解码迭代中,位基于以下进行翻转:
对所述神经网络的输入,所述输入包括与对应于所述位的变量节点相关联的特征映射,所述特征映射至少对应于所述神经网络的输入层的输入节点;并且
所述神经网络的输出,所述输出指示所述位基于所述输入应该进行翻转,所述输出至少对应于所述神经网络的输出层的输出节点。
19.根据权利要求18所述的系统,其中训练所述神经网络包括:
将训练位分为正确位和错误位;
以第一采样率对所述正确位进行采样以生成采样正确位;
以第二采样率对所述错误位进行采样以生成采样错误位,所述第二采样率小于所述第一采样率;
从所述采样正确位和所述采样错误位生成特征映射;以及
将所述特征映射输入到所述神经网络。
20.根据权利要求19所述的系统,其中训练所述神经网络进一步包括:
以第三采样率对所述训练位进行采样以生成采样训练位;
从所述采样训练位生成额外的特征映射;以及
将所述额外的特征映射输入到所述神经网络。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/607,242 | 2017-05-26 | ||
US15/607,242 US10491243B2 (en) | 2017-05-26 | 2017-05-26 | Deep learning for low-density parity-check (LDPC) decoding |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108933602A CN108933602A (zh) | 2018-12-04 |
CN108933602B true CN108933602B (zh) | 2021-09-10 |
Family
ID=64401525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711471501.8A Active CN108933602B (zh) | 2017-05-26 | 2017-12-29 | 用于低密度奇偶校验解码的深度学习 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10491243B2 (zh) |
CN (1) | CN108933602B (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018235050A1 (en) * | 2017-06-22 | 2018-12-27 | Telefonaktiebolaget Lm Ericsson (Publ) | NEURAL NETWORKS FOR RECOVERY CORRECTION DECODING OF ERRORS |
EP3673580B1 (en) * | 2017-08-23 | 2023-10-18 | Telefonaktiebolaget LM Ericsson (PUBL) | Neural networks for decoding |
US10693496B2 (en) * | 2017-08-29 | 2020-06-23 | SK Hynix Inc. | Memory system with LDPC decoder and method of operating such memory system and LDPC decoder |
CN109525254B (zh) * | 2018-10-25 | 2020-10-27 | 华南理工大学 | 基于深度学习的卷积码软判决译码方法 |
US10727868B2 (en) * | 2018-12-03 | 2020-07-28 | Samsung Electronics Co., Ltd. | Apparatus and method for offset optimization for low-density parity-check (LDPC) code |
US11599773B2 (en) | 2018-12-27 | 2023-03-07 | Micron Technology, Inc. | Neural networks and systems for decoding encoded data |
US11595155B2 (en) * | 2019-01-09 | 2023-02-28 | Lg Electronics Inc. | Method for decoding low density parity check (LDPC)-coded signal, and terminal therefor |
TWI696962B (zh) * | 2019-01-17 | 2020-06-21 | 深圳衡宇芯片科技有限公司 | 訓練人工智慧執行低密度奇偶檢查碼的解碼程序的方法 |
KR102605633B1 (ko) * | 2019-02-13 | 2023-11-23 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그것의 동작 방법 |
CN109921803B (zh) * | 2019-03-06 | 2021-06-25 | 西安电子科技大学 | 基于神经网络的高密度线性分组码译码方法 |
US10630313B1 (en) * | 2019-03-12 | 2020-04-21 | Microsoft Technology Licensing, Llc | High efficiency data decoder |
US11742879B2 (en) * | 2019-03-13 | 2023-08-29 | Samsung Electronics Co., Ltd. | Machine-learning error-correcting code controller |
US20230421176A1 (en) * | 2019-03-13 | 2023-12-28 | Samsung Electronics Co., Ltd. | Machine-learning error-correcting code controller |
CN110430013B (zh) * | 2019-07-15 | 2020-10-02 | 华中科技大学 | 一种基于深度学习的rcm方法 |
GB2587008B (en) * | 2019-09-12 | 2024-03-27 | Airbus Defence & Space Ltd | Soft-decision decoding |
US11088712B2 (en) | 2019-11-05 | 2021-08-10 | Western Digital Technologies, Inc. | Iterative decoder performance prediction using machine learning |
US11424764B2 (en) | 2019-11-13 | 2022-08-23 | Micron Technology, Inc. | Recurrent neural networks and systems for decoding encoded data |
KR20210064723A (ko) * | 2019-11-26 | 2021-06-03 | 에스케이하이닉스 주식회사 | 전자 장치 및 이의 동작 방법 |
CN111210484B (zh) * | 2019-12-31 | 2024-04-19 | 上海联影智能医疗科技有限公司 | 医学图像生成方法、模型训练方法、装置及介质 |
US11057059B1 (en) | 2020-01-15 | 2021-07-06 | Western Digital Technologies, Inc. | Content aware bit flipping decoder |
US20210241067A1 (en) * | 2020-02-05 | 2021-08-05 | Facebook, Inc. | Hyper-Graph Network Decoders for Algebraic Block Codes |
CN111277275B (zh) * | 2020-02-11 | 2021-01-05 | 上海威固信息技术股份有限公司 | 一种ldpc译码算法标准化因子自适应获取方法 |
US11177831B2 (en) * | 2020-04-09 | 2021-11-16 | Kabushiki Kaisha Toshiba | LLR estimation for soft decoding |
CN112118015B (zh) * | 2020-09-11 | 2022-06-17 | 山东云海国创云计算装备产业创新中心有限公司 | 一种译码方法、装置、设备及存储介质 |
US11528038B2 (en) | 2020-11-06 | 2022-12-13 | Western Digital Technologies, Inc. | Content aware decoding using shared data statistics |
US20220231785A1 (en) * | 2021-01-10 | 2022-07-21 | Ramot At Tel-Aviv University Ltd. | Permutation selection for decoding of error correction codes |
US11381253B1 (en) * | 2021-02-05 | 2022-07-05 | SK Hynix Inc. | Decoding codeword based on higher order information |
US11973513B2 (en) | 2021-04-27 | 2024-04-30 | Micron Technology, Inc. | Decoders and systems for decoding encoded data using neural networks |
EP4329202A1 (en) * | 2021-05-25 | 2024-02-28 | Samsung Electronics Co., Ltd. | Neural network-based self-correcting min-sum decoder and electronic device comprising same |
US11755408B2 (en) * | 2021-10-07 | 2023-09-12 | Micron Technology, Inc. | Systems for estimating bit error rate (BER) of encoded data using neural networks |
US11664821B1 (en) | 2022-02-08 | 2023-05-30 | SK Hynix Inc. | Error floor performance of a bit flipping decoder through identifying unreliable check nodes |
CN115314158A (zh) * | 2022-08-01 | 2022-11-08 | 福州大学 | 基于长短期记忆神经网络的编码特征识别方法 |
CN116192340B (zh) * | 2023-04-27 | 2023-06-30 | 济南安迅科技有限公司 | 光通信网络中的差错控制方法和装置 |
CN117692101B (zh) * | 2023-12-04 | 2024-07-09 | 北京科技大学 | 一种基于卷积神经网络的突发误码检测方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975112A (zh) * | 2006-12-14 | 2007-06-06 | 同济大学 | 基于探地雷达的盾构隧道沉降控制方法 |
US7395495B2 (en) * | 2004-01-12 | 2008-07-01 | Intel Corporation | Method and apparatus for decoding forward error correction codes |
CN102045071A (zh) * | 2009-10-12 | 2011-05-04 | 马维尔国际贸易有限公司 | 改善用于低功率应用的ldpc解码器中的功耗 |
CN103973316A (zh) * | 2013-02-04 | 2014-08-06 | Sk海尼克斯存储技术公司 | 具有使用定标常数的可变节点更新器的ldpc解码器 |
WO2015106635A1 (en) * | 2014-01-15 | 2015-07-23 | The Hong Kong University Of Science And Technology | Unobtrusive data embedding in information displays and extracting unobtrusive data from camera captured images or videos |
CN105900116A (zh) * | 2014-02-10 | 2016-08-24 | 三菱电机株式会社 | 分层型神经网络装置、判别器学习方法以及判别方法 |
CN106571832A (zh) * | 2016-11-04 | 2017-04-19 | 华南理工大学 | 一种多进制ldpc码级联神经网络解码方法及装置 |
CN106571831A (zh) * | 2016-10-28 | 2017-04-19 | 华南理工大学 | 一种基于深度学习的ldpc硬判决译码方法及译码器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002091592A1 (en) * | 2001-05-09 | 2002-11-14 | Comtech Telecommunications Corp. | Low density parity check codes and low density turbo product codes |
US9509342B2 (en) * | 2014-06-02 | 2016-11-29 | Sandisk Technologies Llc | Error correcting code decoder |
-
2017
- 2017-05-26 US US15/607,242 patent/US10491243B2/en active Active
- 2017-12-29 CN CN201711471501.8A patent/CN108933602B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395495B2 (en) * | 2004-01-12 | 2008-07-01 | Intel Corporation | Method and apparatus for decoding forward error correction codes |
CN1975112A (zh) * | 2006-12-14 | 2007-06-06 | 同济大学 | 基于探地雷达的盾构隧道沉降控制方法 |
CN102045071A (zh) * | 2009-10-12 | 2011-05-04 | 马维尔国际贸易有限公司 | 改善用于低功率应用的ldpc解码器中的功耗 |
CN103973316A (zh) * | 2013-02-04 | 2014-08-06 | Sk海尼克斯存储技术公司 | 具有使用定标常数的可变节点更新器的ldpc解码器 |
WO2015106635A1 (en) * | 2014-01-15 | 2015-07-23 | The Hong Kong University Of Science And Technology | Unobtrusive data embedding in information displays and extracting unobtrusive data from camera captured images or videos |
CN105900116A (zh) * | 2014-02-10 | 2016-08-24 | 三菱电机株式会社 | 分层型神经网络装置、判别器学习方法以及判别方法 |
CN106571831A (zh) * | 2016-10-28 | 2017-04-19 | 华南理工大学 | 一种基于深度学习的ldpc硬判决译码方法及译码器 |
CN106571832A (zh) * | 2016-11-04 | 2017-04-19 | 华南理工大学 | 一种多进制ldpc码级联神经网络解码方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108933602A (zh) | 2018-12-04 |
US20180343017A1 (en) | 2018-11-29 |
US10491243B2 (en) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108933602B (zh) | 用于低密度奇偶校验解码的深度学习 | |
CN109428605B (zh) | 利用校正子解码分量代码的用于g-ldpc码的位翻转解码器 | |
US10419024B2 (en) | Early termination of low-density parity-check (LDPC) decoding | |
US10861562B1 (en) | Deep learning based regression framework for read thresholds in a NAND flash memory | |
US9866241B2 (en) | Techniques for adaptive LDPC decoding | |
CN109560818B (zh) | 用于ldpc码的改进的最小和解码 | |
CN109873645B (zh) | 用于多个字线失败的软芯片猎杀恢复 | |
CN108932177B (zh) | 具有可变长度分量的广义低密度奇偶校验码 | |
US10218388B2 (en) | Techniques for low complexity soft decoder for turbo product codes | |
US11108407B1 (en) | Performance of a bit flipping (BF) decoder of an error correction system | |
US10090865B2 (en) | Performance optimization in soft decoding of error correcting codes | |
US11381253B1 (en) | Decoding codeword based on higher order information | |
US10389383B2 (en) | Low-complexity LDPC encoder | |
CN109873646B (zh) | 使用级联码的软芯片猎杀恢复 | |
US10205469B2 (en) | Low latency soft decoder architecture for generalized product codes | |
CN114141300A (zh) | 用于参数化pv电平建模的高效读取阈值计算方法 | |
US10326473B2 (en) | Symbol-based coding for NAND flash devices | |
US10187086B2 (en) | State-based decoding of product codes | |
CN114201335A (zh) | 基于质量的动态调度ldpc解码器 | |
US11128314B2 (en) | Error characteristic estimation for NAND flash | |
CN116582135A (zh) | 通过识别不可靠校验节点提高bf解码器的错误平层性能 | |
US11025283B1 (en) | Decoding latency and throughput of a multi-decoder error correction system |
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 |