CN111525931B - Ldpc译码器、ldpc译码方法、存储介质和电子设备 - Google Patents
Ldpc译码器、ldpc译码方法、存储介质和电子设备 Download PDFInfo
- Publication number
- CN111525931B CN111525931B CN201910107976.1A CN201910107976A CN111525931B CN 111525931 B CN111525931 B CN 111525931B CN 201910107976 A CN201910107976 A CN 201910107976A CN 111525931 B CN111525931 B CN 111525931B
- Authority
- CN
- China
- Prior art keywords
- target
- submatrix
- row
- submatrices
- sequence
- 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
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/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)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
Abstract
本公开涉及一种LDPC译码器、LDPC译码方法、存储介质和电子设备,涉及信息处理技术领域,该译码器包括:指令集、控制器、存储单元、处理单元和校验单元,控制器分别与指令集、存储单元、处理单元和校验单元连接,指令集用于存储校验矩阵的多个子矩阵,和多个子矩阵中每个子矩阵的标志信息,控制器用于将接收到的待译码序列作为目标LLR序列存入存储单元,控制器还用于控制处理单元按照预设的译码算法,依次根据校验矩阵中每个行组中的至少一个子矩阵和至少一个子矩阵的标志信息,更新目标LLR序列,控制器还用于控制校验单元按照预设的校验算法验证目标LLR序列,当目标LLR序列验证成功时,将目标LLR序列作为待译码序列对应的译码结果。
Description
技术领域
本公开涉及信息处理技术领域,具体地,涉及一种LDPC译码器、LDPC译码方法、存储介质和电子设备。
背景技术
在无线通信技术领域中,由于接收机接收到的信号会受到信道衰落、干扰噪声等影响,导致信息传输出错,因此,通常会采用编码技术来提高信息传输的可靠性。LDPC(英文:Low Density Parity Check Code,中文:低密度奇偶校验码)编解码,作为一种具有稀疏校验矩阵的线性分组码,能够接近香农极限的良好性能,并且译码复杂度较低,结构灵活,广泛应用于无线通信技术中。在现有技术中,LDPC译码器的硬件结构通常是与应用***中的协议、检验矩阵绑定的,当协议或者校验矩阵发生变化时,需要对译码器进行重新设计,可移植性低。
发明内容
本公开的目的是提供一种LDPC译码器、LDPC译码方法、存储介质和电子设备,用以解决现有技术中LDPC译码器可移植性低的问题。
为了实现上述目的,根据本公开实施例的第一方面,提供一种LDPC译码器,所述译码器包括:指令集、控制器、存储单元、处理单元和校验单元,所述控制器分别与所述指令集、所述存储单元、所述处理单元和所述校验单元连接;
所述指令集用于存储校验矩阵的多个子矩阵,和所述多个子矩阵中每个子矩阵的标志信息,所述每个子矩阵为N阶对角阵,所述校验矩阵按照行分为多个行组,每个行组包括N行,每个行组中包括至少一个所述子矩阵;
所述控制器用于将接收到的待译码序列作为目标对数似然比LLR序列存入所述存储单元,所述待译码序列中包括目标数量个LLR,所述目标数量为所述待译码序列的长度;
所述控制器还用于控制所述处理单元按照预设的译码算法,依次根据所述校验矩阵中每个行组中的至少一个所述子矩阵和所述至少一个子矩阵的所述标志信息,更新所述目标LLR序列;
所述控制器还用于控制所述校验单元按照预设的校验算法验证所述目标LLR序列,当所述目标LLR序列验证成功时,将所述目标LLR序列作为所述待译码序列对应的译码结果,所述校验算法包括:LDPC校验算法,和/或循环冗余校验CRC算法。
可选地,所述控制器还用于当所述目标LLR序列验证失败时,重复执行所述控制所述处理单元按照预设的译码算法,依次根据所述多个子矩阵和所述多个子矩阵的所述标志信息,更新所述目标LLR序列至所述控制所述校验单元按照预设的校验算法验证所述目标LLR序列的步骤,直至所述目标LLR序列验证成功。
可选地,所述每个子矩阵的所述标志信息包括:所述每个子矩阵的行列位置和LLR位置;所述处理单元包括:读取模块、写入模块、调度模块和运算模块;
所述读取模块,用于根据所述每个子矩阵的行列位置,获取当前行组中的M个目标子矩阵和所述M个目标子矩阵的标志信息;
所述调度模块,用于将每个所述目标子矩阵的所述LLR位置指示的,所述目标LLR序列中的N个LLR映射到每个所述目标子矩阵上;
所述运算模块,用于依次将每个所述目标子矩阵的每一行与每个所述目标子矩阵对应的N个LLR作为水平洗牌调度HSS译码算法的输入,以获取HSS译码算法输出的每个所述目标子矩阵的每一行对应的纠正残差;
所述写入模块,用于根据所述M个目标子矩阵的每一行对应的所述纠正残差更新所述目标LLR序列。
可选地,所述每个子矩阵的所述标志信息还包括:所述每个子矩阵的类型和循环起始位置;
所述运算模块用于当第一目标子矩阵的类型为单对角线矩阵时,依次将所述第一目标子矩阵的每一行与所述第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的所述第一目标子矩阵的每一行对应的所述纠正残差,所述第一目标子矩阵为所述M个目标子矩阵中的任一目标子矩阵;
所述写入模块用于根据所述第一目标子矩阵的N行对应的N个所述纠正残差更新所述目标LLR序列中所述第一目标子矩阵对应的N个LLR;
所述运算模块还用于当所述第一目标子矩阵的类型为双对角线矩阵时,依次将所述第一目标子矩阵的每一行、所述第一目标子矩阵的循环起始位置与所述第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的所述第一目标子矩阵的每一行对应的2个所述纠正残差;
所述写入模块用于根据所述第一目标子矩阵的N行对应的2*N个所述纠正残差更新所述目标LLR序列中所述第一目标子矩阵对应的N个LLR。
可选地,所述每个子矩阵的所述标志信息还包括:所述每个子矩阵的乒乓标志位;
所述控制器还用于,在所述处理单元根据所述M个目标子矩阵的第K行对应的所述纠正残差更新所述目标LLR序列时,控制所述处理单元将所述M个目标子矩阵的第K+1行与每个所述目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的所述M个目标子矩阵的第K+1行对应的纠正残差。
根据本公开实施例的第二方面,提供一种LDPC译码方法,应用于译码器,所述译码器包括:指令集、控制器、存储单元、处理单元和校验单元;所述方法包括:
通过所述指令集获取校验矩阵的多个子矩阵,和所述多个子矩阵中每个子矩阵的标志信息,所述每个子矩阵为N阶对角阵,所述校验矩阵按照行分为多个行组,每个行组包括N行,每个行组中包括至少一个所述子矩阵;
通过所述控制器将所述译码器接收到的待译码序列作为目标对数似然比LLR序列存入所述存储单元,所述待译码序列中包括目标数量个LLR,所述目标数量为所述待译码序列的长度;
通过所述控制器控制所述处理单元按照预设的译码算法,依次根据所述校验矩阵中每个行组中的至少一个所述子矩阵和所述至少一个子矩阵的所述标志信息,更新所述目标LLR序列;
通过所述控制器控制所述校验单元按照预设的校验算法验证所述目标LLR序列,当所述目标LLR序列验证成功时,将所述目标LLR序列作为所述待译码序列对应的译码结果,所述校验算法包括:LDPC校验算法,和/或循环冗余校验CRC算法。
可选地,所述方法还包括:
当所述目标LLR序列验证失败时,重复执行所述通过所述控制器控制所述处理单元按照预设的译码算法,依次根据所述多个子矩阵和所述多个子矩阵的所述标志信息,更新所述目标LLR序列至所述通过所述控制器控制所述校验单元按照预设的校验算法验证所述目标LLR序列的步骤,直至所述目标LLR序列验证成功。
可选地,所述每个子矩阵的所述标志信息包括:所述每个子矩阵的行列位置和LLR位置;所述处理单元包括:读取模块、写入模块、调度模块和运算模块;
所述通过所述控制器控制所述处理单元按照预设的译码算法,依次根据所述校验矩阵中每个行组中的至少一个所述子矩阵和所述至少一个子矩阵的所述标志信息,更新所述目标LLR序列,包括:
通过所述读取模块根据所述每个子矩阵的行列位置,获取当前行组中的M个目标子矩阵和所述M个目标子矩阵的标志信息;
通过所述调度模块将每个所述目标子矩阵的所述LLR位置指示的,所述目标LLR序列中的N个LLR映射到每个所述目标子矩阵上;
通过所述运算模块依次将每个所述目标子矩阵的每一行与每个所述目标子矩阵对应的N个LLR作为水平洗牌调度HSS译码算法的输入,以获取HSS译码算法输出的每个所述目标子矩阵的每一行对应的纠正残差;
通过所述写入模块根据所述M个目标子矩阵的每一行对应的所述纠正残差更新所述目标LLR序列。
可选地,所述每个子矩阵的所述标志信息还包括:所述每个子矩阵的类型和循环起始位置;
所述通过所述运算模块依次将每个所述目标子矩阵的每一行与每个所述目标子矩阵对应的N个LLR作为水平洗牌调度HSS译码算法的输入,以获取HSS译码算法输出的每个所述目标子矩阵的每一行对应的纠正残差,包括:
当第一目标子矩阵的类型为单对角线矩阵时,依次将所述第一目标子矩阵的每一行与所述第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的所述第一目标子矩阵的每一行对应的所述纠正残差,所述第一目标子矩阵为所述M个目标子矩阵中的任一目标子矩阵;
当所述第一目标子矩阵的类型为双对角线矩阵时,依次将所述第一目标子矩阵的每一行、所述第一目标子矩阵的循环起始位置与所述第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的所述第一目标子矩阵的每一行对应的2个所述纠正残差;
所述通过所述写入模块根据所述M个目标子矩阵的每一行对应的所述纠正残差更新所述目标LLR序列,包括:
当第一目标子矩阵的类型为单对角线矩阵时,根据所述第一目标子矩阵的N行对应的N个所述纠正残差更新所述目标LLR序列中所述第一目标子矩阵对应的N个LLR;
当所述第一目标子矩阵的类型为双对角线矩阵时,根据所述第一目标子矩阵的N行对应的2*N个所述纠正残差更新所述目标LLR序列中所述第一目标子矩阵对应的N个LLR。
可选地,所述每个子矩阵的所述标志信息还包括:所述每个子矩阵的乒乓标志位;所述通过所述控制器控制所述处理单元按照预设的译码算法,依次根据所述校验矩阵中每个行组中的至少一个所述子矩阵和所述至少一个子矩阵的所述标志信息,更新所述目标LLR序列,包括:
在所述处理单元根据所述M个目标子矩阵的第K行对应的所述纠正残差更新所述目标LLR序列时,通过所述控制器控制所述处理单元将所述M个目标子矩阵的第K+1行与每个所述目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的所述M个目标子矩阵的第K+1行对应的纠正残差。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第二方面提供的LDPC译码方法的步骤。
根据本公开实施例的第四方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第二方面提供的LDPC译码方法的步骤。
通过上述技术方案,本公开提供的LDPC译码器包括:指令集、控制器、存储单元、处理单元和校验单元,控制器分别与指令集、存储单元、处理单元和校验单元连接。指令集能够存储检验矩阵的多个子矩阵,和每个子矩阵的标志信息,控制器能够将接收到的待译码序列作为目标LLR序列存入存储单元,再控制处理单元按照预设的译码算法,依次根据校验矩阵中每个行组中的至少一个子矩阵和至少一个子矩阵的标志信息,更新目标LLR序列,最后,控制校验单元按照预设的校验算法验证目标LLR序列,在目标LLR序列验证成功时,将目标LLR序列作为待译码序列对应的译码结果。其中,每个子矩阵均为N阶对角阵,且校验矩阵按照行分为多个行组,每个行组包括N行,每个行组中包括至少一个子矩阵,待译码序列中包括目标数量个LLR,目标数量为待译码序列的长度。提供了一种能够适用于不同协议、不同校验矩阵的LDPC译码器,能够将校验矩阵按照参数化的形式存储在指令集中,结构简单,易于验证,降低了开发周期和成本,提高了译码器的吞吐率、可移植性,同时可以根据译码器对译码时间的需求来定制并行度,提高译码器的适用范围。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性实施例示出的一种LDPC译码器的框图;
图2是根据图1所示的LDPC译码器的校验矩阵的示意图;
图3是根据一示例性实施例示出的另一种LDPC译码器的框图;
图4是根据图3所示的LDPC译码器的子矩阵的示意图;
图5是根据图3所示的LDPC译码器的校验矩阵的示意图;
图6是根据一示例性实施例示出的一种LDPC译码方法的流程图;
图7是根据一示例性实施例示出的另一种LDPC译码方法的流程图;
图8是根据一示例性实施例示出的另一种LDPC译码方法的流程图;
图9是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在介绍本公开提供的LDPC译码器、LDPC译码方法、存储介质和电子设备之前,首先对本公开中各个实施例所涉及的应用场景进行介绍,该应用场景可以是设置在接收机上的译码器,该译码器可以是微处理器结构,例如CPU(英文:Central Processing Unit,中文:中央处理单元)。
图1是根据一示例性实施例示出的一种LDPC译码器的框图,如图1所示,该译码器100包括:指令集101、控制器102、存储单元103、处理单元104和校验单元105,控制器102分别与指令集101、存储单元103、处理单元104和校验单元105连接。
其中,指令集101用于存储校验矩阵的多个子矩阵,和多个子矩阵中每个子矩阵的标志信息,每个子矩阵为N阶对角阵,校验矩阵按照行分为多个行组,每个行组包括N行,每个行组中包括至少一个子矩阵。
举例来说,指令集可以是任一种存储器件,用于存储校验矩阵的多个子矩阵。其中,校验矩阵是根据接收机的具体需求预先约定好的检验矩阵,即接收机和发送机之间预先设置的校验矩阵。发送机中的编码器根据校验矩阵对数据信息进行编码,以得到LDPC码,再由接收机中的译码器根据校验矩阵对接收到的LDPC码进行译码。LDPC码对应的校验矩阵为稀疏矩阵,因此可以将校验矩阵分为多个子矩阵,每个子矩阵均为N阶对角阵(例如64阶对角阵)。校验矩阵可以按照行分为多个行组,每个行组中包括N行,每个行组中包括至少一个子矩阵,例如校验矩阵包括1024行,若N=64,那么可以将校验矩阵分为16个行组,每个行组中包括64行。图2所示的是一个校验矩阵的示意图,图中实线部分表示校验矩阵中的非零元素,以第一行组为多个行组中的任一行组为例,第一行组中包括的3个子矩阵分别为A子矩阵、B子矩阵和C子矩阵,A子矩阵、B子矩阵和C子矩阵中任一个子矩阵的第一行到第N行都包括在第一行组中。指令集101用于存储校验矩阵的多个子矩阵,和多个子矩阵中每个子矩阵的标志信息,当校验矩阵发生变化时,只需更改指令集中存储的子矩阵。其中,标志信息例如可以包括:每个子矩阵的行列位置,用于指示该子矩阵的在校验矩阵中的位置(例如:起始行号、结束行号、起始列号、结束列号)。
控制器102用于将接收到的待译码序列作为目标对数似然比LLR序列存入存储单元103,待译码序列中包括目标数量个LLR,目标数量为待译码序列的长度。
示例的,接收机在接收到数据信息后,首先对数据信息进行解调,以获得待译码序列,并将待译码序列发送给译码器100。待译码序列中包括目标数量个LLR(英文:Loglikelihood Ratio,中文:对数似然比),目标数量为待译码序列的长度,即LDPC码的码长。控制器102将接收到的待译码序列作为目标LLR序列存储在存储单元103中预设位置处。其中,目标LLR序列中的每个LLR可以理解为对应该位置上的码与0或1的相似度,例如当LLR接近+100时,可以判断该位置上的码为0,当LLR接近-100时,可以判断该位置上的码为1。
控制器102还用于控制处理单元104按照预设的译码算法,依次根据校验矩阵中每个行组中的至少一个子矩阵和至少一个子矩阵的标志信息,更新目标LLR序列。
举例来说,控制器102控制处理单元104按照预设的译码算法,依次获取校验矩阵中每个行组中包括的至少一个子矩阵,和至少一个子矩阵的标志信息,以更新目标LLR序列。预设的译码算法可以是HSS(英文:Horizontal Shuffle Scheduling,中文:水平洗牌调度)译码算法。例如,校验矩阵中包括P个行组为例,每个行组中包括N行,即校验矩阵共包括P*N行,处理单元104依次获取第一个行组、第二个行组至第P个行组中的子矩阵,和子矩阵对应的标志信息,对目标LLR序列执行更新。以第i个行组为例(1≤i≤P),处理单元104首先获取第i个行组中的至少一个子矩阵,和至少一个子矩阵的标志信息,每个子矩阵对应目标LLR序列中的N个LLR,再将每个子矩阵对应目标LLR序列中的N个LLR映射到对应的子矩阵上,之后将每个子矩阵和每个子矩阵对应的N个LLR作为HSS译码算法的输入,得到每个子矩阵对应的纠正残差,最后利用每个子矩阵对应的纠正残差更新每个子矩阵对应目标LLR序列中的N个LLR,已得到目标LLR序列的第i次更新。之后,处理单元104再获取第i+1个行组中的至少一个子矩阵,以此类推,直至遍历完校验矩阵中的每个行组,得到更新后的目标LLR序列。
控制器102还用于控制校验单元105按照预设的校验算法验证目标LLR序列,当目标LLR序列验证成功时,将目标LLR序列作为待译码序列对应的译码结果,校验算法包括:LDPC校验算法,和/或循环冗余校验CRC算法。
示例的,控制器102再控制校验单元105按照预设的校验算法验证目标LLR序列,其中,校验算法可以包括:LDPC校验算法,和/或CRC(英文:Cyclic Redundancy Check,中文:循环冗余校验)算法。当校验算法为LDPC校验算法时,是将译码结果(即更新后的目标LLR序列)按照校验矩阵进行重新编码,当重新编码的结果与待译码序列相同时,那么目标LLR序列验证成功,当重新编码的结果与待译码序列不同时,那么目标LLR序列验证失败。由于LDPC校验算法可能存在错误平台,为了避免撞到错误平台,可以在目标LLR序列通过LDPC校验算法之后,再对目标LLR序列进行CRC算法验证,当目标LLR序列通过CRC算法验证后,再确定目标LLR序列验证成功,当目标LLR序列没有通过CRC算法验证时,确定目标LLR序列验证失败。当目标LLR序列验证成功时,将目标LLR序列作为待译码序列对应的译码结果。
综上所述,本公开提供的LDPC译码器包括:指令集、控制器、存储单元、处理单元和校验单元,控制器分别与指令集、存储单元、处理单元和校验单元连接。指令集能够存储检验矩阵的多个子矩阵,和每个子矩阵的标志信息,控制器能够将接收到的待译码序列作为目标LLR序列存入存储单元,再控制处理单元按照预设的译码算法,依次根据校验矩阵中每个行组中的至少一个子矩阵和至少一个子矩阵的标志信息,更新目标LLR序列,最后,控制校验单元按照预设的校验算法验证目标LLR序列,在目标LLR序列验证成功时,将目标LLR序列作为待译码序列对应的译码结果。其中,每个子矩阵均为N阶对角阵,且校验矩阵按照行分为多个行组,每个行组包括N行,每个行组中包括至少一个子矩阵,待译码序列中包括目标数量个LLR,目标数量为待译码序列的长度。提供了一种能够适用于不同协议、不同校验矩阵的LDPC译码器,能够将校验矩阵按照参数化的形式存储在指令集中,结构简单,易于验证,降低了开发周期和成本,提高了译码器的吞吐率、可移植性,同时可以根据译码器对译码时间的需求来定制并行度,提高译码器的适用范围。
可选地,控制器102还用于当目标LLR序列验证失败时,重复执行控制处理单元104按照预设的译码算法,依次根据多个子矩阵和多个子矩阵的标志信息,更新目标LLR序列至控制校验单元105按照预设的校验算法验证目标LLR序列的步骤,直至目标LLR序列验证成功。
进一步的,当目标LLR序列验证失败时,表示当前目标LLR序列与译码结果之间存在误差,那么控制器102重复执行控制处理单元104按照预设的译码算法,依次根据多个子矩阵和多个子矩阵的标志信息,更新目标LLR序列至控制校验单元105按照预设的校验算法验证目标LLR序列的步骤,直至目标LLR序列验证成功,并将目标LLR序列作为待译码序列对应的译码结果。即当目标LLR序列验证失败时,从校验矩阵的第一行组开始,再遍历一次校验矩阵,对目标LLR序列进行更新,再判断更新后的目标LLR序列是否验证成功,目标LLR序列验证成功,表示当前的目标LLR序列为译码结果,目标LLR序列验证失败,再重新从校验矩阵的第一行组开始,以此类推。进一步的,还可以预先设置一个阈值,若目标LLR序列验证失败的次数超过该阈值时,表示译码失败。
图3是根据一示例性实施例示出的另一种LDPC译码器的框图,如图3所示,每个子矩阵的标志信息包括:每个子矩阵的行列位置和LLR位置。处理单元104包括:读取模块1041、写入模块1042、调度模块1043和运算模块1044。
其中,标志信息例如可以包括:每个子矩阵的行列位置和LLR位置,行列位置用于指示该子矩阵的在校验矩阵中的位置(例如:该子矩阵在校验矩阵中的起始行号、结束行号、起始列号、结束列号),LLR位置用于指示该子矩阵对应在目标LLR序列中的LLR的位置。以目标LLR序列中存储有2048个LLR(即LDPC码的码长为2048),每个子矩阵为64阶对角阵,校验矩阵中包括32个子矩阵为例,那么每个子矩阵对应目标LLR序列中的64个LLR,那么子矩阵的LLR位置可以由0至31来表示,0表示目标LLR序列中的第一组64个LLR,1表示目标LLR序列中的第二组64个LLR,以此类推。
读取模块1041,用于根据每个子矩阵的行列位置,获取当前行组中的M个目标子矩阵和M个目标子矩阵的标志信息。
调度模块1043,用于将每个目标子矩阵的LLR位置指示的,目标LLR序列中的N个LLR映射到每个目标子矩阵上。
运算模块1044,用于依次将每个目标子矩阵的每一行与每个目标子矩阵对应的N个LLR作为水平洗牌调度HSS译码算法的输入,以获取HSS译码算法输出的每个目标子矩阵的每一行对应的纠正残差。
写入模块1042,用于根据M个目标子矩阵的每一行对应的纠正残差更新目标LLR序列。
举例来说,首先读取模块1041根据指令集101存储的子矩阵的行列位置,获取当前行组中的M个目标子矩阵和M个目标子矩阵的标志信息(M≥1)。之后,调度模块1043将每个目标子矩阵的LLR位置指示的,目标LLR序列中的N个LLR映射到每个目标子矩阵上,例如可以通过shuffle路由来实现。再通过运算模块1044,将每个目标子矩阵的每一行与每个目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的每个目标子矩阵的每一行对应的纠正残差,最后写入模块1042根据M个目标子矩阵的每一行对应的纠正残差更新目标LLR序列。以当前行组中包括3个目标子矩阵为例,运算模块1044先将3个目标子矩阵的第一行(共3行),与3个目标子矩阵分别对应的N个LLR作为HSS译码算法的输入(共3*N个LLR),以获取HSS译码算法输出的3个目标子矩阵的第一行对应的纠正残差(共3个纠正残差),之后写入模块1042根据3个目标子矩阵的第一行对应的纠正残差(共3个纠正残差)更新目标LLR序列。运算模块1044再将3个目标子矩阵的第二行(共3行),与3个目标子矩阵分别对应的N个LLR作为HSS译码算法的输入(共3*N个LLR)进行下一次迭代,以此类推,直至获取了3个目标子矩阵的每一行对应的纠正残差(即3*N个纠正残差),并根据3个目标子矩阵的每一行对应的纠正残差更新目标LLR序列。
可选地,每个子矩阵的标志信息还包括:每个子矩阵的类型和循环起始位置。
其中,标志信息还可以包括:每个子矩阵的类型和循环起始位置。类型用于指示该子矩阵的类型,可以分为单对角线矩阵和双对角线矩阵,循环起始位置,用于指示当该子矩阵的类型为双对角线矩阵时,两个对角线的起始位置。以图4所示的是单对角线矩阵和双对角线矩阵的示意图,图中实线部分表示校验矩阵中的非零元素,以矩阵为64阶对角阵来举例,(a)为单对角线矩阵,那么对应的循环起始位置为0,即从该矩阵的第一行开始运算。(b)为双对角线矩阵,两个对角线分别为:该矩阵的第一行至第36行,该矩阵的第37行至第64行(共28行),那么该矩阵对应的循环其实位置可以设置为27。相应的,根据子矩阵的不同类型,根据HSS译码算法更新目标LLR序列的方式也不同。
运算模块1044用于当第一目标子矩阵的类型为单对角线矩阵时,依次将第一目标子矩阵的每一行与第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的第一目标子矩阵的每一行对应的纠正残差,第一目标子矩阵为M个目标子矩阵中的任一目标子矩阵。
写入模块1042用于根据第一目标子矩阵的N行对应的N个纠正残差更新目标LLR序列中第一目标子矩阵对应的N个LLR。
示例的,当第一目标子矩阵的类型为单对角线矩阵时,运算模块1044将第一目标子矩阵的每一行与第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的第一目标子矩阵对应的每一行对应的纠正残差,写入模块1042再根据第一目标子矩阵的N行对应的N个纠正残差更新目标LLR序列中第一目标子矩阵对应的N个LLR。可以通过以下公式来更新目标LLR序列:
Tnu i=Tnu-1 i+eu,其中,u表示当前目标LLR序列经过的完整遍历校验矩阵的次数,u-1表示上一次完整遍历校验矩阵的次数,Tnu i表示当前目标LLR序列中第i个LLR,当前表示上一次完整遍历校验矩阵后目标LLR序列中第i个LLR,eu表示目标LLR序列中第i个LLR对应的纠正残差。
运算模块1044还用于当第一目标子矩阵的类型为双对角线矩阵时,依次将第一目标子矩阵的每一行、第一目标子矩阵的循环起始位置与第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的第一目标子矩阵的每一行对应的2个纠正残差。
写入模块1042用于根据第一目标子矩阵的N行对应的2*N个纠正残差更新目标LLR序列中第一目标子矩阵对应的N个LLR。
示例的,当第一目标子矩阵的类型为双对角线矩阵时,可以通过shuffle路由将第一目标子矩阵的LLR位置指示的,目标LLR序列中的N个LLR映射到两个对角线上,对应的运算模块1044将第一目标子矩阵的每一行、第一目标子矩阵的循环起始位置与第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,可以获取HSS译码算法输出的第一目标子矩阵对应的2个纠正残差,写入模块1042再根据第一目标子矩阵的N行对应的2*N个纠正残差更新目标LLR序列中第一目标子矩阵对应的N个LLR。可以通过以下公式来更新目标LLR序列:
Tnu i=Tnu-1 i+e1 u+e2 u,其中,u表示当前目标LLR序列经过的完整遍历校验矩阵的次数,u-1表示上一次完整遍历校验矩阵的次数,Tnu i表示当前目标LLR序列中第i个LLR,当前表示上一次完整遍历校验矩阵后目标LLR序列中第i个LLR,e1 u表示根据第一目标子矩阵中的第一个对角线确定的目标LLR序列中第i个LLR对应的纠正残差,e2 u表示根据第一目标子矩阵中的第二个对角线确定的目标LLR序列中第i个LLR对应的纠正残差。
可选地,每个子矩阵的标志信息还包括:每个子矩阵的乒乓标志位。
控制器102还用于,在处理单元104根据M个目标子矩阵的第K行对应的纠正残差更新目标LLR序列时,控制处理单元104将M个目标子矩阵的第K+1行与每个目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的M个目标子矩阵的第K+1行对应的纠正残差。
举例来说,由于译码器中的计算资源和存储资源有限,可以利用流水线乒乓操作(英文:Pipeline)来提高译码器的译码效率。例如,在处理单元104根据M个目标子矩阵的第K行对应的纠正残差更新目标LLR序列时(即当前步骤使用的是存储资源,对应的是写入操作),控制处理单元104将M个目标子矩阵的第K+1行与每个目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的M个目标子矩阵的第K+1行对应的纠正残差(即当前步骤使用的是计算资源,对应的是计算操作),这样可以在同一时刻,同时使用译码器中的计算资源和存储资源,从而提高译码器的译码效率。其中,每个子矩阵的标志信息可以包括:每个子矩阵的乒乓标志位,每个子矩阵中的每一行对应一个乒乓标志位,可以用0和1来表示。以图5所示的校验矩阵为例,图中实线部分表示校验矩阵中的非零元素,以第一行组为多个行组中的任一行组为例,第一行组中包括的3个子矩阵分别为A子矩阵、B子矩阵和C子矩阵,A子矩阵、B子矩阵和C子矩阵中任一个子矩阵的第一行到第N行都包括在第一行组中。TnM用于存储目标LLR序列(例如可以是存储单元103中的第一指定位置),EnM用于存储计算过程中产生的纠正残差(例如可以是存储单元103中的第二指定位置)。其中A子矩阵、B子矩阵和C子矩阵的第K行在执行处理单元104根据第K行对应的纠正残差更新目标LLR序列的操作时,第K+1行在执行将第K+1行与每个目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的第K+1行对应的纠正残差。可以在同一时刻,同时使用译码器中的计算资源和存储资源,从而提高译码器的译码效率。
需要说明的是,指令集101中存储的多个子矩阵,每个子矩阵均为N阶对角阵,其中在保证译码器的吞吐量的前提下,N越小,越利于译码器100的硬件实现,即在执行LDPC译码的过程中同时需要使用的计算资源越少,例如N通常为64。因此,在对校验矩阵进行分解时,期望N越小,如果校验矩阵分解得到的子矩阵的阶数N为幂次偶数,那么就可以将子矩阵进一步分解,如果校验矩阵分解得到的子矩阵的阶数N不是幂次偶数,通常情况下就不能再对子矩阵进行分解。在本公开提供的译码器中,如果N为奇数时,可以首先对子矩阵进行补零操作,将子矩阵补为Q阶对角阵,Q为比N大,且与N最接近的幂次偶数,之后再对该子矩阵进行分解,以得到更小的子矩阵,以本公开所提供的译码器能够处理N=64的子矩阵为例,在某个LDPC协议场景下,校验矩阵中包括的子矩阵为127阶,由于127不是幂次偶数,可以对127阶子矩阵进行补零操作,将子矩阵补为128阶子矩阵,之后再对该128阶子矩阵进行分解,以得到64阶子矩阵,就可以利用本公开所提供的译码器来实现LDPC译码。因此,通过对奇数子矩阵进行补零再分解,能够降低子矩阵的阶数,从而在多种协议场景下,当子矩阵阶数较大,且不为幂次偶数时,能够将子矩阵拆解为更小的子矩阵,以适配于本公开提供的译码器,使译码器能够适用于不同协议、不同校验矩阵,提高了译码器的适用范围。
综上所述,本公开提供的LDPC译码器包括:指令集、控制器、存储单元、处理单元和校验单元,控制器分别与指令集、存储单元、处理单元和校验单元连接。指令集能够存储检验矩阵的多个子矩阵,和每个子矩阵的标志信息,控制器能够将接收到的待译码序列作为目标LLR序列存入存储单元,再控制处理单元按照预设的译码算法,依次根据校验矩阵中每个行组中的至少一个子矩阵和至少一个子矩阵的标志信息,更新目标LLR序列,最后,控制校验单元按照预设的校验算法验证目标LLR序列,在目标LLR序列验证成功时,将目标LLR序列作为待译码序列对应的译码结果。其中,每个子矩阵均为N阶对角阵,且校验矩阵按照行分为多个行组,每个行组包括N行,每个行组中包括至少一个子矩阵,待译码序列中包括目标数量个LLR,目标数量为待译码序列的长度。提供了一种能够适用于不同协议、不同校验矩阵的LDPC译码器,能够将校验矩阵按照参数化的形式存储在指令集中,结构简单,易于验证,降低了开发周期和成本,提高了译码器的吞吐率、可移植性,同时可以根据译码器对译码时间的需求来定制并行度,提高译码器的适用范围。
图6是根据一示例性实施例示出的一种LDPC译码方法的流程图,如图6所示,应用于译码器,译码器包括:指令集、控制器、存储单元、处理单元和校验单元。该方法包括:
步骤201,通过指令集获取校验矩阵的多个子矩阵,和多个子矩阵中每个子矩阵的标志信息,每个子矩阵为N阶对角阵,校验矩阵按照行分为多个行组,每个行组包括N行,每个行组中包括至少一个子矩阵。
步骤202,通过控制器将译码器接收到的待译码序列作为目标对数似然比LLR序列存入存储单元,待译码序列中包括目标数量个LLR,目标数量为待译码序列的长度。
步骤203,通过控制器控制处理单元按照预设的译码算法,依次根据校验矩阵中每个行组中的至少一个子矩阵和至少一个子矩阵的标志信息,更新目标LLR序列。
步骤204,通过控制器控制校验单元按照预设的校验算法验证目标LLR序列,当目标LLR序列验证成功时,将目标LLR序列作为待译码序列对应的译码结果,校验算法包括:LDPC校验算法,和/或循环冗余校验CRC算法。
图7是根据一示例性实施例示出的另一种LDPC译码方法的流程图,如图7所示,该方法还包括:
步骤205,当目标LLR序列验证失败时,重复执行步骤203至步骤204,直至目标LLR序列验证成功。
图8是根据一示例性实施例示出的另一种LDPC译码方法的流程图,如图8所示,每个子矩阵的标志信息包括:每个子矩阵的行列位置和LLR位置。处理单元包括:读取模块、写入模块、调度模块和运算模块。步骤203包括:
步骤2031,通过读取模块根据每个子矩阵的行列位置,获取当前行组中的M个目标子矩阵和M个目标子矩阵的标志信息。
步骤2032,通过调度模块将每个目标子矩阵的LLR位置指示的,目标LLR序列中的N个LLR映射到每个目标子矩阵上。
步骤2033,通过运算模块依次将每个目标子矩阵的每一行与每个目标子矩阵对应的N个LLR作为水平洗牌调度HSS译码算法的输入,以获取HSS译码算法输出的每个目标子矩阵的每一行对应的纠正残差。
步骤2034,通过写入模块根据M个目标子矩阵的每一行对应的纠正残差更新目标LLR序列。
可选地,每个子矩阵的标志信息还包括:每个子矩阵的类型和循环起始位置。
步骤2033可以包括以下两种处理方式:
A)当第一目标子矩阵的类型为单对角线矩阵时,依次将第一目标子矩阵的每一行与第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的第一目标子矩阵的每一行对应的纠正残差,第一目标子矩阵为M个目标子矩阵中的任一目标子矩阵。
B)当第一目标子矩阵的类型为双对角线矩阵时,依次将第一目标子矩阵的每一行、第一目标子矩阵的循环起始位置与第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的第一目标子矩阵的每一行对应的2个纠正残差。
步骤2034可以包括以下两种处理方式:
C)当第一目标子矩阵的类型为单对角线矩阵时,根据第一目标子矩阵的N行对应的N个纠正残差更新目标LLR序列中第一目标子矩阵对应的N个LLR。
D)当第一目标子矩阵的类型为双对角线矩阵时,根据第一目标子矩阵的N行对应的2*N个纠正残差更新目标LLR序列中第一目标子矩阵对应的N个LLR。
可选地,每个子矩阵的标志信息还包括:每个子矩阵的乒乓标志位。步骤203可以通过以下方式来实现:
在处理单元根据M个目标子矩阵的第K行对应的纠正残差更新目标LLR序列时,通过控制器控制处理单元将M个目标子矩阵的第K+1行与每个目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的M个目标子矩阵的第K+1行对应的纠正残差。
关于上述实施例中的方法,其中各个步骤执行操作的具体方式已经在有关该译码器的实施例中进行了详细描述,此处将不做详细阐述说明。
综上所述,本公开提供的LDPC译码方法,应用于译码器,包括:指令集、控制器、存储单元、处理单元和校验单元。指令集能够存储检验矩阵的多个子矩阵,和每个子矩阵的标志信息,控制器能够将接收到的待译码序列作为目标LLR序列存入存储单元,再控制处理单元按照预设的译码算法,依次根据校验矩阵中每个行组中的至少一个子矩阵和至少一个子矩阵的标志信息,更新目标LLR序列,最后,控制校验单元按照预设的校验算法验证目标LLR序列,在目标LLR序列验证成功时,将目标LLR序列作为待译码序列对应的译码结果。其中,每个子矩阵均为N阶对角阵,且校验矩阵按照行分为多个行组,每个行组包括N行,每个行组中包括至少一个子矩阵,待译码序列中包括目标数量个LLR,目标数量为待译码序列的长度。能够使LDPC译码器适用于不同协议、不同校验矩阵的,能够将校验矩阵按照参数化的形式存储在指令集中,结构简单,易于验证,降低了开发周期和成本,提高了译码器的吞吐率、可移植性,同时可以根据译码器对译码时间的需求来定制并行度,提高译码器的适用范围。
图9是根据一示例性实施例示出的一种电子设备300的框图。如图9所示,该电子设备300可以包括:处理器301,存储器302。该电子设备300还可以包括LDPC微处理器306,多媒体组件303,输入/输出(I/O)接口304,以及通信组件305中的一者或多者。
其中,处理器301用于控制该电子设备300的整体操作,LDPC微处理器306中可以包括:指令集、控制器、存储单元、处理单元和校验单元,用以完成上述的LDPC译码方法中的全部或部分步骤(例如执行步骤201至204,以完成LDPC译码)。LDPC微处理器306可以将译码结果发送给处理器301或者存储器302,以供电子设备300进行处理或存储。存储器302用于存储各种类型的数据以支持在该电子设备300的操作,这些数据例如可以包括用于在该电子设备300上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器302可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random AccessMemory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable ProgrammableRead-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件303可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器302或通过通信组件305发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口304为处理器301和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件305用于该电子设备300与其他设备之间进行有线或无线通信。无线通信,例如卫星通信,广播电视,物联网(缩写:IoT,英文:Internet of Things),WiMAX(英文:Worldwide Interoperability for Microwave Access,中文:全球互通微波访问),4G,5G,或它们中的一种或几种的组合,因此相应的该通信组件305可以包括:卫星通信模块,IoT模块,WiMAX模块等。
在一示例性实施例中,电子设备300可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的LDPC译码方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的LDPC译码方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器302,上述程序指令可由电子设备300的LDPC微处理器306执行以完成上述的LDPC译码方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,本领域技术人员在考虑说明书及实践本公开后,容易想到本公开的其它实施方案,均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。同时本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。本公开并不局限于上面已经描述出的精确结构,本公开的范围仅由所附的权利要求来限制。
Claims (12)
1.一种低密度奇偶校验码LDPC译码器,其特征在于,所述译码器包括:指令集、控制器、存储单元、处理单元和校验单元,所述控制器分别与所述指令集、所述存储单元、所述处理单元和所述校验单元连接;
所述指令集用于存储校验矩阵的多个子矩阵,和所述多个子矩阵中每个子矩阵的标志信息,所述每个子矩阵为N阶对角阵,所述校验矩阵按照行分为多个行组,每个行组包括N行,每个行组中包括至少一个所述子矩阵;
所述控制器用于将接收到的待译码序列作为目标对数似然比LLR序列存入所述存储单元,所述待译码序列中包括目标数量个LLR,所述目标数量为所述待译码序列的长度;
所述控制器还用于控制所述处理单元按照预设的译码算法,依次根据所述校验矩阵中每个行组中的至少一个所述子矩阵和所述至少一个子矩阵的所述标志信息,更新目标LLR序列;
所述控制器还用于控制所述校验单元按照预设的校验算法验证所述目标LLR序列,当所述目标LLR序列验证成功时,将所述目标LLR序列作为所述待译码序列对应的译码结果,所述校验算法包括:LDPC校验算法,和/或循环冗余校验CRC算法。
2.根据权利要求1所述的译码器,其特征在于,所述控制器还用于当所述目标LLR序列验证失败时,重复执行所述控制所述处理单元按照预设的译码算法,依次根据所述多个子矩阵和所述多个子矩阵的所述标志信息,更新所述目标LLR序列至所述控制所述校验单元按照预设的校验算法验证所述目标LLR序列的步骤,直至所述目标LLR序列验证成功。
3.根据权利要求1或2所述的译码器,其特征在于,所述每个子矩阵的所述标志信息包括:所述每个子矩阵的行列位置和LLR位置;所述处理单元包括:读取模块、写入模块、调度模块和运算模块;
所述读取模块,用于根据所述每个子矩阵的行列位置,获取当前行组中的M个目标子矩阵和所述M个目标子矩阵的标志信息;
所述调度模块,用于将每个所述目标子矩阵的所述LLR位置指示的,所述目标LLR序列中的N个LLR映射到每个所述目标子矩阵上;
所述运算模块,用于依次将每个所述目标子矩阵的每一行与每个所述目标子矩阵对应的N个LLR作为水平洗牌调度HSS译码算法的输入,以获取HSS译码算法输出的每个所述目标子矩阵的每一行对应的纠正残差;
所述写入模块,用于根据所述M个目标子矩阵的每一行对应的所述纠正残差更新所述目标LLR序列。
4.根据权利要求3所述的译码器,其特征在于,所述每个子矩阵的所述标志信息还包括:所述每个子矩阵的类型和循环起始位置;
所述运算模块用于当第一目标子矩阵的类型为单对角线矩阵时,依次将所述第一目标子矩阵的每一行与所述第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的所述第一目标子矩阵的每一行对应的所述纠正残差,所述第一目标子矩阵为所述M个目标子矩阵中的任一目标子矩阵;
所述写入模块用于根据所述第一目标子矩阵的N行对应的N个所述纠正残差更新所述目标LLR序列中所述第一目标子矩阵对应的N个LLR;
所述运算模块还用于当所述第一目标子矩阵的类型为双对角线矩阵时,依次将所述第一目标子矩阵的每一行、所述第一目标子矩阵的循环起始位置与所述第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的所述第一目标子矩阵的每一行对应的2个所述纠正残差;
所述写入模块用于根据所述第一目标子矩阵的N行对应的2*N个所述纠正残差更新所述目标LLR序列中所述第一目标子矩阵对应的N个LLR。
5.根据权利要求3所述的译码器,其特征在于,所述每个子矩阵的所述标志信息还包括:所述每个子矩阵的乒乓标志位;
所述控制器还用于,在所述处理单元根据所述M个目标子矩阵的第K行对应的所述纠正残差更新所述目标LLR序列时,控制所述处理单元将所述M个目标子矩阵的第K+1行与每个所述目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的所述M个目标子矩阵的第K+1行对应的纠正残差。
6.一种LDPC译码方法,其特征在于,应用于译码器,所述译码器包括:指令集、控制器、存储单元、处理单元和校验单元;所述方法包括:
通过所述指令集获取校验矩阵的多个子矩阵,和所述多个子矩阵中每个子矩阵的标志信息,所述每个子矩阵为N阶对角阵,所述校验矩阵按照行分为多个行组,每个行组包括N行,每个行组中包括至少一个所述子矩阵;
通过所述控制器将所述译码器接收到的待译码序列作为目标对数似然比LLR序列存入所述存储单元,所述待译码序列中包括目标数量个LLR,所述目标数量为所述待译码序列的长度;
通过所述控制器控制所述处理单元按照预设的译码算法,依次根据所述校验矩阵中每个行组中的至少一个所述子矩阵和所述至少一个子矩阵的所述标志信息,更新目标LLR序列;
通过所述控制器控制所述校验单元按照预设的校验算法验证所述目标LLR序列,当所述目标LLR序列验证成功时,将所述目标LLR序列作为所述待译码序列对应的译码结果,所述校验算法包括:LDPC校验算法,和/或循环冗余校验CRC算法。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述目标LLR序列验证失败时,重复执行所述通过所述控制器控制所述处理单元按照预设的译码算法,依次根据所述多个子矩阵和所述多个子矩阵的所述标志信息,更新所述目标LLR序列至所述通过所述控制器控制所述校验单元按照预设的校验算法验证所述目标LLR序列的步骤,直至所述目标LLR序列验证成功。
8.根据权利要求6或7所述的方法,其特征在于,所述每个子矩阵的所述标志信息包括:所述每个子矩阵的行列位置和LLR位置;所述处理单元包括:读取模块、写入模块、调度模块和运算模块;
所述通过所述控制器控制所述处理单元按照预设的译码算法,依次根据所述校验矩阵中每个行组中的至少一个所述子矩阵和所述至少一个子矩阵的所述标志信息,更新所述目标LLR序列,包括:
通过所述读取模块根据所述每个子矩阵的行列位置,获取当前行组中的M个目标子矩阵和所述M个目标子矩阵的标志信息;
通过所述调度模块将每个所述目标子矩阵的所述LLR位置指示的,所述目标LLR序列中的N个LLR映射到每个所述目标子矩阵上;
通过所述运算模块依次将每个所述目标子矩阵的每一行与每个所述目标子矩阵对应的N个LLR作为水平洗牌调度HSS译码算法的输入,以获取HSS译码算法输出的每个所述目标子矩阵的每一行对应的纠正残差;
通过所述写入模块根据所述M个目标子矩阵的每一行对应的所述纠正残差更新所述目标LLR序列。
9.根据权利要求8所述的方法,其特征在于,所述每个子矩阵的所述标志信息还包括:所述每个子矩阵的类型和循环起始位置;
所述通过所述运算模块依次将每个所述目标子矩阵的每一行与每个所述目标子矩阵对应的N个LLR作为水平洗牌调度HSS译码算法的输入,以获取HSS译码算法输出的每个所述目标子矩阵的每一行对应的纠正残差,包括:
当第一目标子矩阵的类型为单对角线矩阵时,依次将所述第一目标子矩阵的每一行与所述第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的所述第一目标子矩阵的每一行对应的所述纠正残差,所述第一目标子矩阵为所述M个目标子矩阵中的任一目标子矩阵;
当所述第一目标子矩阵的类型为双对角线矩阵时,依次将所述第一目标子矩阵的每一行、所述第一目标子矩阵的循环起始位置与所述第一目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的所述第一目标子矩阵的每一行对应的2个所述纠正残差;
所述通过所述写入模块根据所述M个目标子矩阵的每一行对应的所述纠正残差更新所述目标LLR序列,包括:
当第一目标子矩阵的类型为单对角线矩阵时,根据所述第一目标子矩阵的N行对应的N个所述纠正残差更新所述目标LLR序列中所述第一目标子矩阵对应的N个LLR;
当所述第一目标子矩阵的类型为双对角线矩阵时,根据所述第一目标子矩阵的N行对应的2*N个所述纠正残差更新所述目标LLR序列中所述第一目标子矩阵对应的N个LLR。
10.根据权利要求8所述的方法,其特征在于,所述每个子矩阵的所述标志信息还包括:所述每个子矩阵的乒乓标志位;所述通过所述控制器控制所述处理单元按照预设的译码算法,依次根据所述校验矩阵中每个行组中的至少一个所述子矩阵和所述至少一个子矩阵的所述标志信息,更新所述目标LLR序列,包括:
在所述处理单元根据所述M个目标子矩阵的第K行对应的所述纠正残差更新所述目标LLR序列时,通过所述控制器控制所述处理单元将所述M个目标子矩阵的第K+1行与每个所述目标子矩阵对应的N个LLR作为HSS译码算法的输入,以获取HSS译码算法输出的所述M个目标子矩阵的第K+1行对应的纠正残差。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求6-10中任一项所述方法的步骤。
12.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求6-10中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910107976.1A CN111525931B (zh) | 2019-02-02 | 2019-02-02 | Ldpc译码器、ldpc译码方法、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910107976.1A CN111525931B (zh) | 2019-02-02 | 2019-02-02 | Ldpc译码器、ldpc译码方法、存储介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111525931A CN111525931A (zh) | 2020-08-11 |
CN111525931B true CN111525931B (zh) | 2023-07-25 |
Family
ID=71900256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910107976.1A Active CN111525931B (zh) | 2019-02-02 | 2019-02-02 | Ldpc译码器、ldpc译码方法、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111525931B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111931921B (zh) * | 2020-10-13 | 2021-01-26 | 南京风兴科技有限公司 | 一种用于稀疏神经网络的乒乓存储方法及装置 |
CN116131864A (zh) * | 2021-11-15 | 2023-05-16 | 深圳市中兴微电子技术有限公司 | 并行译码方法及装置、存储介质、电子装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102394661A (zh) * | 2011-11-08 | 2012-03-28 | 北京邮电大学 | 基于层译码处理的ldpc译码器及译码方法 |
WO2017045142A1 (zh) * | 2015-09-16 | 2017-03-23 | 华为技术有限公司 | Ldpc截短码的译码方法和译码设备 |
CN107294541A (zh) * | 2016-04-11 | 2017-10-24 | 清华大学 | 低面积开销的自容错ldpc译码器 |
CN108809325A (zh) * | 2017-05-05 | 2018-11-13 | 上海数字电视国家工程研究中心有限公司 | Ldpc译码器 |
-
2019
- 2019-02-02 CN CN201910107976.1A patent/CN111525931B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102394661A (zh) * | 2011-11-08 | 2012-03-28 | 北京邮电大学 | 基于层译码处理的ldpc译码器及译码方法 |
WO2017045142A1 (zh) * | 2015-09-16 | 2017-03-23 | 华为技术有限公司 | Ldpc截短码的译码方法和译码设备 |
CN107294541A (zh) * | 2016-04-11 | 2017-10-24 | 清华大学 | 低面积开销的自容错ldpc译码器 |
CN108809325A (zh) * | 2017-05-05 | 2018-11-13 | 上海数字电视国家工程研究中心有限公司 | Ldpc译码器 |
Non-Patent Citations (1)
Title |
---|
新型LDPC码译码器;孟庆刚;刘腾宇;;黑龙江工程学院学报(自然科学版)(02);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111525931A (zh) | 2020-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI594583B (zh) | 硬決定輸入之一般化低密度同位檢查軟解碼 | |
JP5237119B2 (ja) | ラプターコードをデコードする方法及び装置 | |
US20190149168A1 (en) | Systems and methods for decoding error correcting codes | |
US10484020B2 (en) | System and method for parallel decoding of codewords sharing common data | |
CN101232288B (zh) | 一种基于奇偶校验矩阵的ldpc码的译码方法及译码器 | |
US10153785B1 (en) | Generalized low-density parity-check (GLDPC) code with variable length constituents | |
US10848182B2 (en) | Iterative decoding with early termination criterion that permits errors in redundancy part | |
US10205469B2 (en) | Low latency soft decoder architecture for generalized product codes | |
KR100975695B1 (ko) | 통신 시스템에서 신호 수신 장치 및 방법 | |
CN111525931B (zh) | Ldpc译码器、ldpc译码方法、存储介质和电子设备 | |
KR20190059028A (ko) | 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템 | |
WO2014139123A1 (en) | Method and apparatus of ldpc decoder with lower error floor | |
US20160049962A1 (en) | Method and apparatus of ldpc encoder in 10gbase-t system | |
KR20140088423A (ko) | 리드-솔로몬 저밀도 패리티 검사 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법 | |
JP7429223B2 (ja) | ターボ積符号の復号方法、装置、デコーダー及びコンピュータ記憶媒体 | |
CN111917419B (zh) | 一种数据译码的方法以及装置 | |
WO2019013663A1 (en) | GENERAL LOW DENSITY PARITY CHECK CODES (GLDPC) | |
CN115296675B (zh) | 用于ldpc码的解码的提前收敛 | |
CN115858230A (zh) | 最大距离可分离码的构造、修复方法及相关装置 | |
CN112104379B (zh) | 一种基于关键集的极化码置信度传播动态翻转译码方法 | |
CN110119328A (zh) | 为了容错改进以时分方式利用嵌入有本地码的全局码进行迭代消息传递解码 | |
TWI783727B (zh) | 使用極化碼之通訊系統及其解碼方法 | |
CN102136842B (zh) | 一种译码器及译码方法 | |
CN101807928B (zh) | 记录控制器及奇偶校验码译码器 | |
Tithi | Error-floors of the 802.3 an ldpc code for noise assisted decoding |
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 |