CN107534511A - 低密度奇偶校验码的译码方法和译码器 - Google Patents
低密度奇偶校验码的译码方法和译码器 Download PDFInfo
- Publication number
- CN107534511A CN107534511A CN201580002347.2A CN201580002347A CN107534511A CN 107534511 A CN107534511 A CN 107534511A CN 201580002347 A CN201580002347 A CN 201580002347A CN 107534511 A CN107534511 A CN 107534511A
- Authority
- CN
- China
- Prior art keywords
- ldpc
- code
- decoder
- decoding
- matrix
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
- H03M13/1117—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
- H03M13/112—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule with correction functions for the min-sum rule, e.g. using an offset or a scaling factor
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
- H03M13/1137—Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
-
- 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/116—Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
-
- 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/6508—Flexibility, adaptability, parametrability and configurability of the implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
-
- 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
- H03M13/1117—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明实施例提供了一种LDPC码的译码方法和译码器,该方法包括:译码器将长度为n的LDPC码C分为k个LDPC码D={D1,D2,…,Dk‑1,Dk};译码器将Di,i=1,2,…,k‑1,k按列进行排列,得到LDPC码D的转置码根据目标校验矩阵中对应元素的值,对k按行进行循环移位,得到移位码E={E1,E2,…,Et‑1,Et},其中t等于目标校验矩阵的行数;译码器根据移位码E和译码器的长度d得到t*m组LDPC子码F1,F2,…,Ftm‑1,Ftm,其中Ej分为m组,且其中译码器对m组LDPC子码进行译码,以获取LDPC码C的译码结果。这样能够灵活地控制LDPC码的译码并行度,能够使译码性能和资源达到更佳平衡。
Description
本发明实施例涉及编解码领域,并且更具体地,涉及低密度奇偶校验码(Low Density Parity Check Code,LDPC)的译码方法和译码器。
低密度奇偶校验码是具有稀疏校验矩阵的分组纠错码,几乎适用于所有的信道。由于LDPC码的性能逼近香农(Shannon)限,具有描述和实现简单,易于进行理论分析和研究,译码简单且可实行并行操作,适合硬件实现等特点,近年来已经成为通信领域的研究热点。
LDPC码具有多种码长,例如DOCSIS 3.1协议中规定了三种码长,其中长码码长L=360,中码码长L=180,短码码长L=56。一般而言,一个译码器要同时支持多种码长,例如,一个LDPC译码器同时要支持长码、中码和短码三种LDPC码长。现有的LDPC译码器是按照最长的码长设计的,例如以360码长的LDPC译码器来对各种码长(56、180、360)的LDPC码进行译码。这种设计的LDPC译码器在对不同码长的LDPC码进行译码时,由于运算使用的处理单元数目不同,因此并行度不同,处理性能不同。例如,对于长码,处理性能高,但使用的资源多,时序困难;对于短码,并行度较低,处理性能低,不能满足流量性要求。
发明内容
本发明实施例提供了一种LDPC码的译码方法和译码器,能够灵活控制LDPC码的译码并行度。
第一方面,提供了一种LDPC码的译码方法,该方法由长度为d的译码器执行。
首先,译码器执行分段操作,即译码器将长度为n的LDPC码C={c1,c2,c3,…,cn-1,cn}分为k个LDPC码D={D1,D2,…,Dk-1,Dk},其中,Di={c(i-1)l+1,c(i-1)l+2,…,cil-1,cil},i=1,2,...,k-1,k,且Di的长度l=n/k。
然后,译码器执行转置操作,即将Di,i=1,2,...,k-1,k按列进行排列,得到LDPC码D的转置码其中,
然后,译码器执行旋转操作(或者称为循环移位操作),即根据目标校验矩阵中对应元素的值,对k按行进行循环移位,得到移位码E={E1,E2,…,Et-1,Et},其中t等于目标校验矩阵的行数,且Ej,j=1,2,...,t-1,t为根据目标校验矩阵中第j行的元素对DT移位的结果。
然后,译码器执行分组操作,即按照译码器的长度对移位码进行分组,具体地,译码器根据移位码E和译码器的长度d得到t*m组LDPC子码F1,F2,…,Ftm-1,Ftm,其中Ej分为m组,且其中m表示Ej的第(s-1)d+1行到sd行,其中,表示向上取整运算。
最后,译码器对m组LDPC子码进行译码,以获取LDPC码C的译码结果。
本发明实施例可按照译码器的长度对循环移位后的LDPC码进行分组,再对分组码进行译码,以获取LDPC码的译码结果,这样译码器的长度不受限于系统支持的LDPC码的最大码长,从而可以灵活地控制LDPC码的译码并行度,例如,可以减少l较大的LDPC码的耗费的译码资源,提高l较小的LDPC码的处理性能,能够使译码性能和资源达到更佳平衡。
另外,本发明实施例只需长度为d的译码器,可以降低单个译码器所占用的资源和计算复杂度,这样可以灵活地应用于资源受限的场景。一般而言,本发明实施例的译码器长度d小于360,显然,这样的译码器长度较低,也不必局限于系统支持的最长LDPC码长,因此更加适合于资源受限的场景。
译码器执行的上述分段操作、转置操作和循环移位操作可类似于现有的对应操作,因此本发明实施例可不做详细描述。
结合第一方面,在第一方面的第一种实现方式中,译码器在对m组LDPC子码进行译码以获取LDPC码C的译码结果时,译码器可获取与该LDPC子码对应的对数似然比(Log Likelihood Ratio,LLR)值G1,G2,…,Gtm-1,Gtm。然后译码器可根据LLR值,按照r=1,2,...,tm-1,tm的顺序,进行校验节点更新,得到行更新矩阵。然后译码器可根据行更新矩阵,逐列更新变量节点,得到列更新矩阵。最后,译码器可对列更新矩阵进行判决和校验,以获取
LDPC码C的译码结果。
这样,本发明实施例的译码器可以在行更新过程中对分组后的LDPC子码分别进行行更新操作,从而实现以较小长度的译码器对较长长度的LDPC码进行译码的过程。
结合第一方面或其上述实现方式,在第一方面的第二种实现方式中,该LDPC码C为准循环低密度奇偶校验码(Quasi-Cyclic Low Density Parity Check Code,QC-LDPC),其中,l为QC-LDPC码的膨胀因子。
按照QC-LDPC码的膨胀因子的大小对QC-LDPC码进行分段,可以灵活控制译码并行度,同时,可以方便地进行译码,降低译码复杂度。
结合第一方面或其上述实现方式,在第一方面的第三种实现方式中,d为60或180。
结合第一方面或其上述实现方式,在第一方面的第四种实现方式中,译码器在对m组LDPC子码进行译码以获取LDPC码C的译码结果时,译码器可采用最小和(Min-sum)译码算法对m组LDPC子码进行译码,以获取该LDPC码C的译码结果。
第二方面,提供了一种LDPC码的译码器,该译码器的长度为d,译码器包括:分段单元、排列单元、移位单元、分组单元和译码单元。
分段单元执行分段操作,即将长度为n的LDPC码C={c1,c2,c3,…,cn-1,cn}分为k个LDPC码D={D1,D2,…,Dk-1,Dk},其中,Di={c(i-1)l+1,c(i-1)l+2,…,cil-1,cil},i=1,2,...,k-1,k,且Di的长度l=n/k。
排列单元执行转置操作,即将Di,i=1,2,...,k-1,k按列进行排列,得到LDPC码D的转置码其中,
移位单元执行旋转操作(或者称为循环移位操作),即根据目标校验矩阵中对应元素的值,对k按行进行循环移位,得到移位码E={E1,E2,…,Et-1,Et},其中t等于目标校验矩阵的行数,且Ej,j=1,2,...,t-1,t为根据目标校验矩阵中第j行的元素对DT移位的结果。
分组单元执行分组操作,即按照译码器的长度对移位码进行分组,具体地,分组单元根据移位码E和译码器的长度d得到t*m组LDPC子码F1,F2,…,Ftm-1,Ftm,其中Ej分为m组,且
其中m表示Ej的第(s-1)d+1行到sd行,
译码单元对m组LDPC子码进行译码,以获取LDPC码C的译码结果。
本发明实施例可按照译码器的长度对循环移位后的LDPC码进行分组,再对分组码进行译码,以获取LDPC码的译码结果,这样译码器的长度不受限于系统支持的LDPC码的最大码长,从而可以灵活地控制LDPC码的译码并行度,例如,可以减少l较大的LDPC码的耗费的译码资源,提高l较小的LDPC码的处理性能,能够使译码性能和资源达到更佳平衡。
另外,本发明实施例只需长度为d的译码器,可以降低单个译码器所占用的资源和计算复杂度,这样可以灵活地应用于资源受限的场景。一般而言,本发明实施例的译码器长度d小于360,显然,这样的译码器长度较低,也不必局限于系统支持的最长LDPC码长,因此更加适合于资源受限的场景。
第二方面的译码器的各个单元还可以参照第一方面中的方法的相应步骤,在此不再重复。
第三方面,提供一种LDPC码的译码方法,该方法由长度为d的译码器执行。
首先,译码器执行分段操作,即译码器将长度为n的LDPC码C={c1,c2,c3,…,cn-1,cn}分为k个LDPC码D={D1,D2,…,Dk-1,Dk},其中,Di={c(i-1)l+1,c(i-1)l+2,…,cil-1,cil},i=1,2,...,k-1,k,且Di的长度为l=n/k。
然后,译码器获取与LDPC码D对应的LLR值G={G1,G2,…,Gk-1,Gk},并根据LLR值对目标校验矩阵进行初始化,得到初始化校验矩阵E={E1,E2,…,Et-1,Et},其中t等于目标校验矩阵的行数。
然后,译码器执行分组操作,即按照译码器的长度对初始化校验矩阵进行分组,具体地,译码器根据初始化码和译码器的长度d得到t*m组LDPC子码F1,F2,…,Ftm-1,Ftm,其中Ej,j=1,2,...,t-1,t分为m组,且其中m表示Ej的第(s-1)d+1行到sd行,其中,表示向上取整运算。
最后,译码器对m组LDPC子码进行译码,以获取LDPC码C的译码结果。
本发明实施例可以按照译码器的长度对初始化校验矩阵进行分组,再对分组码进行译码,以获取LDPC码的译码结果。这样译码器的长度不受限于系统支持的LDPC码的最大码长,从而可以灵活地控制LDPC码的译码并行度,例如,可以减少l较大的LDPC码的耗费的译码资源,提高l较小的LDPC码的处理性能,能够使译码性能和资源达到更佳平衡。
另外,本发明实施例只需长度为d的译码器,可以降低单个译码器所占用的资源和计算复杂度,这样可以灵活地应用于资源受限的场景。一般而言,本发明实施例的译码器长度d小于360,显然,这样的译码器长度较低,也不必局限于系统支持的最长LDPC码长,因此更加适合于资源受限的场景。
结合第三方面,在第三方面的第一种实现方式中,译码器在对m组LDPC子码进行译码以获取LDPC码C的译码结果时,译码器可根据m组LDPC子码,按照r=1,2,...,tm-1,tm的顺序,进行校验节点更新,得到行更新矩阵。然后译码器可根据行更新矩阵,逐列更新变量节点,得到列更新矩阵。最后,译码器可对列更新矩阵进行判决和校验,以获取LDPC码C的译码结果。
这样,本发明实施例的译码器可以在行更新过程中对分组后的LDPC子码分别进行行更新操作,从而实现以较小长度的译码器对较长长度的LDPC码进行译码的过程。
需要说明的是,本发明实施例与第一方面的实施例本质上是相同的,在第一方面的实施例中,译码器进行转置操作、旋转操作和获取LLR值操作后,可以获得本发明实施例中的初始化校验矩阵,之后可以执行与本发明实施例相同的步骤,从而可以获取LDPC码的译码结果。
第三方面的方法的各个步骤还可以参照第一方面中的方法的相应步骤,在此不再重复。
第四方面,提供一种LDPC码的译码器,该译码器的长度为d,译码器包括:分段单元、初始化单元、分组单元和译码单元。
分段单元执行分段操作,即将长度为n的LDPC码C={c1,c2,c3,…,cn-1,cn}分为k个LDPC码D={D1,D2,…,Dk-1,Dk},其中,Di={c(i-1)l+1,c(i-1)l+2,…,cil-1,cil},i=1,2,...,k-1,k,且Di的长度l=n/k。
初始化单元,获取与LDP码D对应的LLR值G={G1,G2,…,Gk-1,Gk},并根据LLR值对目标校验矩阵进行初始化,得到初始化校验矩阵E={E1,E2,…,Et-1,Et},其中t等于目标校验矩阵的行数。
分组单元执行分组操作,即按照译码器的长度对初始化校验矩阵进行分组,具体地,译码器根据初始化码和译码器的长度d得到t*m组LDPC子码F1,F2,…,Ftm-1,Ftm,其中Ej,j=1,2,...,t-1,t分为m组,且其中m表示Ej的第(s-1)d+1行到sd行,其中,表示向上取整运算。
译码单元对m组LDPC子码进行译码,以获取LDPC码C的译码结果。
本发明实施例可以按照译码器的长度对初始化校验矩阵进行分组,再对分组码进行译码,以获取LDPC码的译码结果。这样译码器的长度不受限于系统支持的LDPC码的最大码长,从而可以灵活地控制LDPC码的译码并行度,例如,可以减少l较大的LDPC码的耗费的译码资源,提高l较小的LDPC码的处理性能,能够使译码性能和资源达到更佳平衡。
另外,本发明实施例只需长度为d的译码器,可以降低单个译码器所占用的资源和计算复杂度,这样可以灵活地应用于资源受限的场景。一般而言,本发明实施例的译码器长度d小于360,显然,这样的译码器长度较低,也不必局限于系统支持的最长LDPC码长,因此更加适合于资源受限的场景。
第四方面的译码器的各个单元可以参照第三方面中的方法的相应步骤,在此不再重复。
第五方面,提供一种通信设备,包括上述第二方面的译码器或第四方面的译码器。
本发明实施例中的通信设备可以包括多个上述译码器,其中,这些译码器的长度可以相同或不同。例如,其中一个或多个译码器的长度可以为60,另外一个或多个译码器的长度可以为180。
通信设备内包括多个译码器,可以提高该通信设备的译码并行度。
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一种LDPC码的译码方法的示意性流程图。
图2是一种LDPC码的译码方法的示意性框图。
图3是根据本发明一个实施例的QC-LDPC码基矩阵的结构示意框图。
图4是根据本发明一个实施例的QC-LDPC码基矩阵的元素矩阵的结构示意框图。
图5是根据本发明另一实施例的LDPC码的译码方法的示意性流程图。
图6是根据本发明另一实施例的LDPC码的译码方法的示意性框图。
图7是根据本发明另一实施例的LDPC码的译码方法的示意性框图。
图8是根据本发明另一实施例的LDPC码的译码方法的示意性框图。
图9是根据本发明另一实施例的LDPC码的译码方法的示意性框图。
图10是根据本发明一个实施例的LDPC码的译码方法的示意性框图。
图11是根据本发明另一实施例的LDPC码的译码方法的示意性框图。
图12是根据本发明一个实施例的LDPC码的译码器的示意性框图。
图13是根据本发明实施例的通讯设备的示意性框图。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
LDPC译码可以分为两大类:硬判决译码和软判决译码。硬判决译码的处理对象是二进制数据,计算数据量少,但译码性能很有限;软判决译码的处理对象是LLR值,计算数据量相比较大很多,但具有很好的译码性能,在实际应用中,主要使用软判决译码的方式。因此,本发明实施例主要讨论采用软判决译码的方法。
下面以Min-sum译码算法为例,结合图1和图2详细描述基于Min-sum译码算法流程。
具体而言,设LDPC参数为(N,K,P),其中N表示码字码长,K表示信息码长,P表示编码后产生的校验码长,有如下关系P=N-K。特定LDPC的校验矩阵H是唯一的,其维度为P*N;并且H是稀疏矩阵,其中大部分元素的值等于0,只有极少数值等于1。
设LDPC参数为(7,3,4)的码长N=7,其中,信息码长K=3,校验码长
P=N-K=4,校验矩阵H维度为4*7。
101,开始。
102,设置最大迭代次数Iter,初始化I=0。
具体地,该最大迭代次数例如可以为3、5、10等,初始化迭代次数I=0。
103,接收包括N个LLR值的LDPC码C。
例如,如图2中的(a)所示的软信息(即码字C):
APP=[c1 c2 c3 c4 c5 c6 c7],
如图2中的图(a)所示,码字C包括7个LLR值,其中,
LLR值定义为当前比特ri等于0的概率除以等于1的概率,然后对结果取对数。
104,利用C值初始化变量节点值。
校验矩阵H中1的分布如图2中的(b)所示,深色背景的方格代表1,没有背景的方格代表0;根据H矩阵1分布位置,用APP值初始化变量节点值Lqji,如公式(1)所示,其中,i是列索引,j是行索引,Lqji表示校验矩阵中第j行第i列的取值,Lci=ci,i∈[1,7]。
Lqji=Lci (1)
例如,初始化后,第i列是1的位置的值均为ci。例如,第1列第1行的值为c1,第5列第3行的值为c5。
105,根据校验矩阵H,行更新校验节点。
逐行更新校验节点Lrji,如图2中的(c)所示;除去当前待更新的点,将本行其它校验节点的符号位相乘作为当前点的输出符号位;除出当前点,取其它校验节点绝对值的最小值作为当前点的输出绝对值;逐行更新,直到4行都更新完毕。更新过程如公式(2)所示,其中,Rj/i表示第j行中,列索引不等于i的集合,Lrji表示校验矩阵行更新后第j行第i列的取值,表示除去当前待更新的第j行第i列的点,将j行其它校验节点的符号位相乘得到的第j行第i列的点的符号位,表示除出当前j行第i列的点,取其它校验节点绝对值的最小值得到的当前点的绝对值。在图2中的(c)中用Sign*Min(*,*)表示上述行更新的结果。
βjl=||Lqjl|| (3)
例如,行更新后,第1行第1列的值为Sign*Min(c3,c5);第2行第2列的值为Sign*Min(c4,c6)。
106,根据校验矩阵H,列更新变量节点。
逐列更新变量节点Lqji,如图2中的(d)所示;除去当前待更新的点,将本列其它变量节点的值相加得到当前点的更新值;更新过程如公式(4)所示,其中Cj/i表示第i列中,行索引不等于j的集合,Lqji表示校验矩阵列更新后第j行第i列的取值。Σl∈Cj/iLrji表示除去当前第j行第i列的的点,将i列其它变量节点的值相加得到第j行第i列的点的更新值。应理解,在图2中的(d)中,第1至第4行分别用A、B、C、D表示,列标用数字表示,例如,A1表示列更新后第1行第1列的点的取值,C5表示第3行第5列的点的取值。
Lqji=Σl∈Cj/iLrji (4)
例如,列更新后,第1行第1列的值A1=Sign*Min(c5,c7)。
107,计算总的变量节点值,对其做硬判,得到C1
硬判决,过程如图2中的(e)所示;将每列所有变量节点值相加,再加上对应位置输入的LLR原始值,得到总的变量节点值LQi,根据其符号位判决成1或0;具体地,根据以下公式确定其判决值:
LLR(ri)<0 ri=1
LLR(ri)>0 ri=0
其中,ri表示当前比特,这里,ri=LQi。
LQi的计算过程如公式(5)所示,其中Ci表示第i列的索引集合,表示i列所有变量节点值之和。
例如,第1列对应的总的变量节点值为A1+C1+c1。
108,判断I是否等于Iter。
具体地,判断I是否等于最大迭代次数Iter。如果判断结果为“是”(Y)即I=Iter,则执行步骤111,如果判断结果为“否”(N)即I<Iter,则执行步骤109。
109,I=I+1。
具体地,当I小于Iter时,使I的值增加1。
110,H*C1是否等于0。
根据硬判以后的码字C1与H矩阵进行校验,如果校验成功,即H*C1=0,则迭代完成,执行步骤111,否则,H*C1不等于0,则如图2中的图(f)所示,在每列已经列更新的变量节点基础上,加上当前列对应的原始输入LLR值Lcji,作为更新后的变量节点值Lqji,如公式(6)所示。
之后,返回迭代执行步骤105。
例如,下一次迭代之前第1行第1列的值更新为A1+c1。
111,取C1中前K个比特作为输出。
具体地,在达到最大迭代次数,或在校验成功以后,输出前K(三个)比特作为最后的输出结果。
112,结束。
由此可见,上述的译码算法中,当LDPC码长N较大时,在逻辑实现时,存储校验矩阵H就需要较多的存储单元,存储需求较大。因此,在LDPC应用中,QC-LDPC由于具有更小的存储需求而成为主要的类型。
具体地,QC-LDPC的校验矩阵由两个参数决定,基矩阵H1和膨胀因子L。图3描述了基矩阵H1的结构,其中膨胀因子L=8。基矩阵中的每个元素代表着一个L*L的方阵,方阵值由该元素的值决定。根据示例中基矩阵的维度参数4*10(m=4,n=10),及膨胀因子L=8,可以得到原始校验矩阵H的维度为32*80(mL*nL),进而得到LDPC的基本参数:N=80,P=32,K=48。基矩阵中元素的值可以分为两种类型,-1和非-1。-1代表一个L*L的零矩阵;非-1的值,如k,它代表L*L的单位矩阵以列向量为单元循环右移k次后得到的矩阵,则0代表一个L*L的单位阵;1代表单位矩阵以列向量为单元循环右移一次得到的矩阵。k取值范围为-1、0、1、…、L-1。图4描述了k等于0、1和2值代表的矩阵内容的情形,k取其他值的情形以此类推能够得到,
此处不再赘述。
根据QC-LDPC的描述可知,这种类型的校验矩阵H可以由基矩阵H1和膨胀因子L表示,在逻辑实现时,只需要存储H1,相比较于一般存储原始校验矩阵H的方式,存储量极大减小。因此,现在很多场景中,QC-LDPC被广泛应用。
QC-LDPC的软判决译码方法与图1所示方法相同,只是其中每个元素代表一组L*L的数据。因为QC-LDPC基矩阵的每个元素是L*L的一个零矩阵,或一个单位阵,或者单位阵的移位阵,因此每个基矩阵元素都只和固定的L个LLR数据相关。而且每小行或者每小列都只有一个1,即只和一个LLR数据相关。为了运算方便,一般都将输入的LLR数据分成多组,每组L个LLR数据,根据基矩阵每个元素的值,将这L个LLR数据进行循环移位,对齐后进行运算。
基于上述的描述,可知如果L较大,例如DOCSIS 3.1协议中规定了三种码长,其中长码L=360,则需要对360个LLR数据展开进行迭代运算,如果每个LLR数据的位宽为6比特,则需同时处理360*6=2160个比特,因此LDPC译码需要耗费很多的硬件资源,并且很难满足时序要求;如果L较小,则并行度会降低,资源会减少,虽然时序会改善,但解码流量也会降低。
由此可见,当一个LDPC译码器同时要支持多种LDPC码长,例如上述描述的三种码长,虽然对于长码L解码流量性能高,但消耗了大量资源;而对于短码L,并行度和处理性能较低,不到长码的六分之一,不满足流量性能要求。
本发明实施例提供了一种LDPC码的译码方法,解决了上述技术下的对多种LDPC码长处理性能不一致,长码占用资源多、短码处理性能低的问题。下面结合具体例子进行详细描述。
图5是本发明一个实施例的LDPC码的译码方法的流程图。图5的方法可以由LDPC码的译码器执行。该译码器可以位于LDPC码的接收设备中,例如由接收设备中的处理器实现,或者由接收设备中的专用LDPC码译码器实现。
210,译码器将长度为n的LDPC码C={c1,c2,c3,…,cn-1,cn}分为k个LDPC码D={D1,D2,…,Dk-1,Dk},其中,Di={c(i-1)l+1,c(i-1)l+2,…,cil-1,cil},i=1,2,...,k-1,k,且Di的长度为l=n/k。
LDPC码的长度是指LDPC码所包含的比特数。LDPC码C是指需要译码的原始LDPC码。
LDPC码C={c1,c2,c3,…,cn-1,cn}可以看作是一个序列,因此可以按照这个序列的先后顺序将LDPC码分为k段,每段长度为l,每段的l个比特按照其原来的顺序构成LDPC码Di,i=1,2,...,k-1,k。
以n=1080为例,将LDPC码分为3段,即k=3,此时LDPC码可以表示为D={D1,D2,D3},其中D1={c1,c2,…,c359,c360},D2={c361,c2,…,c359,c720},D3={c721,c2,…,c359,c1080},D1、D2和D3的长度均为60,即均包括60个比特。
类似地,还可以将n=1080的LDPC码分为6段,即k=6,经分段后的LDPC码可表示为:
D={D1,D2,D3,D4,D5,D6}={{c1,c2,…,c179,c180},{c181,c182,…,c359,c360},{c361,c362,…,c539,c540},{c541,c542,…,c719,c720},{c721,c722,…,c899,c900},{c901,c902,…,c1079,c1080}}
对于其他的n值和/或k值,可以类似的得到LDPC码D={D1,D2,…,Dk-1,Dk},在此不再赘述。
可选地,作为一个实施例,LDPC码可以是QC-LDPC码。在对QC-LDPC码进行分段时,可以按QC-LDPC码的基矩阵的膨胀因子进行分段。对于其它LDPC码也可以按照类似分段做法进行处理,在此不再赘述。
可以理解,进行分段后的每段码可以看作是一个1*l的矩阵,对分段码进行的任何操作都可以看作是对1*l的矩阵的相应的运算。
220,译码器将Di,i=1,2,...,k-1,k按列进行排列,得到LDPC码D的转置码其中,
译码器将分段码按列进行排列,可以看作是对1*l的矩阵的转置运算,运算的结果是一个l*1的矩阵,也就是说运算的结果可以看作是k个l*1的矩阵。
230,根据目标校验矩阵中对应元素的值,对k按行进行循环移位,得到移位码E={E1,E2,…,Et-1,Et},其中t等于目标校验矩阵的行数,且Ej,j=1,2,...,t-1,t为根据目标校验矩阵中第j行的元素对DT移位的结果。
目标校验矩阵是指在逻辑实现时,实际存储的校验矩阵。例如,译码器的输入是QC-LDPC码,那么目标校验矩阵就是QC-LDPC码的基矩阵,并
且该基矩阵的维度为t*k,对应的原始校验矩阵的维度为(t*l)*(k*l)。
需要说明的是,E={E1,E2,…,Et-1,Et}仅表示E由E1,E2,…,Et-1,Et组成,实际上Ej可以看作是l*k的矩阵,E可以看作是(t*l)*k的矩阵,可以表示为:
240,译码器根据移位码E和译码器的长度d得到t*m组LDPC子码F1,F2,…,Ftm-1,Ftm,其中Ej分为m组,且其中m表示Ej的第(s-1)d+1行到sd行,
译码器将E1,E2,…,Et-1,Et均分为m组,例如译码器将Ej分为2组,即m=2,具体地,将E1分为F1和F2两组,将E2分为F3和F4两组,类似地,直至将Et分为Ftm-1和Ftm两组,其中,也就是说E1的第一行至第d行构成的矩阵是F1组LDPC子码,E1的第d+1行至第2d行构成的矩阵是F2组LDPC子码,其余类似,在此不再详述。
需要说明的是,仅表示Ej由组成,实际上Ej可看作是矩阵的形式,表示为:
250,译码器对m组LDPC子码进行译码,以获取LDPC码C的译码结果。
本发明实施例可按照译码器的长度对循环移位后的LDPC码进行分组,
再对分组码进行译码,以获取LDPC码的译码结果,这样译码器的长度不受限于系统支持的LDPC码的最大码长,从而可以灵活地控制LDPC码的译码并行度,例如,可以减少l较大的LDPC码的耗费的译码资源,提高l较小的LDPC码的处理性能,能够使译码性能和资源达到更佳平衡。
另外,本发明实施例只需长度为d的译码器,可以降低单个译码器所占用的资源和计算复杂度,这样可以灵活地应用于资源受限的场景。一般而言,本发明实施例的译码器长度d小于360,显然,这样的译码器长度较低,也不必局限于系统支持的最长LDPC码长,因此更加适合于资源受限的场景。
可替代地,在本发明的另一实施例中,可以不执行步骤220和步骤230。
在此情况下,当不执行步骤220和步骤230时,译码器需要执行以下初始化操作:译码器获取与LDPC分段码对应的LLR值G={G1,G2,…,Gk-1,Gk},并根据LLR值对目标校验矩阵进行初始化,得到初始化校验矩阵E={E1,E2,…,Et-1,Et},其中t等于目标校验矩阵的行数。然后,译码器执行分组操作,即按照译码器的长度对初始化校验矩阵进行分组,具体地,译码器根据初始化码和译码器的长度d得到步骤240所示的t*m组LDPC子码。最后,译码器可以根据步骤250的进行译码操作。
可选地,作为一个实施例,在步骤250中,可按照如下方式对m组LDPC子码进行译码:获取与LDPC子码对应的对数似然比LLR值G1,G2,…,Gtm-1,Gtm;根据LLR值,按照r=1,2,...,tm-1,tm的顺序,进行校验节点更新,得到行更新矩阵;根据行更新矩阵,逐列更新变量节点,得到列更新矩阵;对列更新矩阵进行判决和校验,以获取LDPC码C的译码结果。
这样,本发明实施例的译码器可以在行更新过程中对分组后的LDPC子码分别进行行更新操作,从而实现以较小长度的译码器对较长长度的LDPC码进行译码的过程。
可选地,作为另一实施例,在译码器对m组LDPC子码进行译码时,可以采用Min-sum译码算法对m组LDPC子码进行译码,以获取LDPC码C的译码结果。
Min-sum译码算法是LDPC码译码时常用的算法,但本发明并不限定具体的译码算法。
下面将结合具体例子,详细描述本发明实施例的译码过程。图6至图9是码长n=80的QC-LDPC码采用Min-sum译码算法的译码过程的示意图。
首先将QC-LDPC码C={c1,c2,c3,…,c79,c80}={a1,a2,a3,…,a79,a80}按照该QC-LDPC码的膨胀因子l=8将该QC-LDPC码分为10段,得到的分段码可表示为:
D={D1,D2,D3,D4,D5,D6,D7,D8,D9,D10}={{c1,c2,…,c7,c8},{c9,c10,…,c15,c16},{c17,c18,…,c23,c24},{c25,c26,…,c31,c32},{c33,c34,…,c39,c40},{c41,c42,…,c47,c48},{c49,c50,…c55,c56},{c57,c58,…,c63,c64},{c65,c67,…,c71,c72},{c73,c74,…,c79,c80}}
按照QC-LDPC码的膨胀因子的大小对QC-LDPC码进行分段,可以灵活控制译码并行度,同时,可以方便地进行译码,降低译码复杂度。
在本发明实施例中,可以将QC-LDPC码C看作是1*80的矩阵,每段分段码看作是1*8的矩阵,图6为对该QC-LDPC码进行分段的示意图。
需要说明的是,本发明实施例以QC-LDPC码的基矩阵为图3所示的基矩阵为例进行说明。
将上述分段码按列进行排列,得到如图7所示的转置码。
然后按照前述图3所示的基矩阵,根据基矩阵中对应元素的值,对上述转置码进行移位。图8所示的第一列元素的值为按照基矩阵中第一行第一列的元素的值3,对分段码第一列的元素按行循环移位的结果。类似地,对分段码其他列进行相似操作。同时,根据基矩阵中第二行、第三行和第四行中对应的元素对转置码进行相应移位,可以得到如图8所示的矩阵。
根据译码器的长度对图8所示的移位码进行分组,例如,当译码器的长度为4时,可以将图8所示的移位码分为8组,即图8中所示的F1、F2、F3、F4、F5、F6、F7和F8组。也就是说,可以将QC-LDPC码分为8组QC-LDPC子码。
以Min-sum译码算法为例,可以按照F1组、F2组、F3组、F4组、F5组、F6组、F7组和F8组的顺序,依次进行译码,具体的译码法方法可参照前述结合图1和图2所阐述的LDPC码的译码方法。
需要说明的是,在进行行更新的时候,由于只需要知道检验节点所在的行的位置,并不需要知道它在哪一列,因此,可以直接使用之前得到的移位码进行校验节点更新。以基矩阵中第一行第一列的元素3为例,它代表8*8的单位矩阵以列向量为单位循环右移3次后得到的矩阵,如图9的(a)所示,对其进行初始化,得到的矩阵如图9的(b)所示,显然,这个8*8的矩阵中,第一行至第四行的元素依次是a4、a5、a6、a7,而图(8)所示的移位码的第一列的前四行元素值也依次是a4、a5、a6、a7,可以看出,对移
位码进行相应运算就可以完成校验节点更新。
具体地,根据基矩阵中四行元素的值可以得到如图8所示的32*10的矩阵,在进行校验节点更新时,先对F1组进行校验节点更新,即对这个32*10的矩阵中的前四行进行行更新,再对F2组进行校验节点更新,即对这个32*10的矩阵中的第五行至第八行进行行更新。类似地,进行剩余几组的行更新。具体处理过程可以参照步骤105,为避免重复,在此不再赘述。这样就完成了所有校验节点的更新,可以将得到的矩阵称为行更新矩阵。
根据行更新矩阵进行变量节点更新,得到列更新矩阵。具体处理过程可以参照步骤106,为避免重复,在此不再赘述。
根据列更新矩阵,计算总的变量节点值,进行判决和校验,最后可以得到译码结果。同样地,具体处理过程可以参照步骤107~112,为避免重复,在此不再赘述。
因此,本发明实施例通过将长度为n的LDPC码分为长为l的多段LDPC码,对分段后的LDPC码按列排列和循环移位,并对循环移位后的LDPC码进行分组,再对分组码进行译码,以获取LDPC码的译码结果的方案是可行和有效的。
一方面,本发明实施例可按照译码器的长度对循环移位后的LDPC码进行分组,再对分组码进行译码,以获取LDPC码的译码结果,这样译码器的长度不受限于系统支持的LDPC码的最大码长,从而可以灵活地控制LDPC码的译码并行度,例如,可以减少l较大的LDPC码的耗费的译码资源,提高l较小的LDPC码的处理性能,能够使译码性能和资源达到更佳平衡。
另一方面,本发明实施例只需长度为d的译码器,可以降低单个译码器所占用的资源和计算复杂度,这样可以灵活地应用于资源受限的场景。一般而言,本发明实施例的译码器长度d小于360,显然,这样的译码器长度较低,也不必局限于系统支持的最长LDPC码长,因此更加适合于资源受限的场景。
可选地,作为另一实施例,d可以为60或180。
以d为60来讲,在例如DOCSIS 3.1中,当译码器接收的码块包括长中短三种码长,即当译码器需要处理长中短等3种码长时,如图10所示,可以将长码分为6组,每组60个数据,处理完6组数据后,就完成了行更新;中码可以分为3组,每组60个数据,处理6组数据后,就完成了行更新;
短码不分组,仍然按照56个数据处理,浪费了4个数据,性能损失很小,只有4/60,即十二分之一。
这样,一个LDPC译码模块的并行度最大只有60,其资源也会减少,时序会更优,而且长中短码的性能基本一致。
显然,如果译码器接收的码块只包括长中短码中的任意两种码长时,也可按照上述方法进行译码。应理解,此处仅以DOCSIS 3.1中的三种码长为例进行说明,本发明对于其它码长的LDPC码和其它具体的并行度不作限定,具体操作时可根据需求和可用资源进行处理。
由于上例中并行度只有60,因此处理性能较低,当需要提高处理性能时,可以例化多个译码器,此时处理能力也成倍提高。也就是说,当译码器接收的多个码块中,有至少两个码块包括多种码长的LDPC时,可以采用多个译码器进行译码。
如图11所示,译码器接收的至少两个码块都包括多个长度为n的LDPC时,可以例化2个译码器即1#和2#,通过使用两个长度为60的译码器构成一个长度为120的译码器,可以使得LDPC译码模块的并行度可以提高到120。虽然资源会增加一倍,但是处理性能会提高一倍,此时,长中短三种码长的性能仍然保持基本一致。
图12是本发明一个实施例LDPC码的译码器的框图。图12的译码器400包括分段单元410、排列单元420、移位单元430、分组单元440和译码单元450。
具体地,分段单元410将长度为n的LDPC码C={c1,c2,c3,…,cn-1,cn}分为k个LDPC码D={D1,D2,…,Dk-1,Dk},其中,Di={c(i-1)l+1,c(i-1)l+2,…,cil-1,cil},i=1,2,...,k-1,k且Di的长度为l=n/k。排列单元420将Di,i=1,2,...,k-1,k按列进行排列,得到LDPC码D的转置码其中,移位单元430根据目标校验矩阵中对应元素的值,对k按行进行循环移位,得到移位码E={E1,E2,…,Et-1,Et},其中t等于目标校验矩阵的行数,且Ej,j=1,2,...,t-1,t为根据目标校验矩阵中第j行的元素对DT移位的结果。分组单元440根据移位码E和译码器的长度d得到t*m组LDPC子码F1,F2,…,Ftm-1,Ftm,其中Ej分为m组,且
其中m表示Ej的第(s-1)d+1行到sd行,译码单元450对m组LDPC子码进行译码,以获取LDPC码C的译码结果。
本发明实施例可按照译码器的长度对循环移位后的LDPC码进行分组,再对分组码进行译码,以获取LDPC码的译码结果,这样译码器的长度不受限于系统支持的LDPC码的最大码长,从而可以灵活地控制LDPC码的译码并行度,例如,可以减少l较大的LDPC码的耗费的译码资源,提高l较小的LDPC码的处理性能,能够使译码性能和资源达到更佳平衡。
另外,本发明实施例只需长度为d的译码器,可以降低单个译码器所占用的资源和计算复杂度,这样可以灵活地应用于资源受限的场景。一般而言,本发明实施例的译码器长度d小于360,显然,这样的译码器长度较低,也不必局限于系统支持的最长LDPC码长,因此更加适合于资源受限的场景。
可替代地,在本发明的另一实施例中,译码器可以不包括分段单元420和移位单元430,而可以包括初始化单元。具体地,初始化单元获取与LDPC分段码对应的LLR值G={G1,G2,…,Gk-1,Gk},并根据LLR值对目标校验矩阵进行初始化,得到初始化校验矩阵E={E1,E2,…,Et-1,Et},其中t等于目标校验矩阵的行数。此时,分组单元440按照译码器的长度对初始化校验矩阵进行分组,获得t*m组LDPC子码,进而可以应用本发明实施例的译码器进行译码。
可选地,作为一个实施例,译码单元450具体用于:获取与LDPC子码对应的对数似然比LLR值G1,G2,…,Gtm-1,Gtm;根据LLR值,按照r=1,2,...,tm-1,tm的顺序,进行校验节点更新,得到行更新矩阵;根据行更新矩阵,逐列更新变量节点,得到列更新矩阵;对列更新矩阵进行判决和校验,以获取LDPC码C的译码结果。
应注意,本发明实施例中的译码器可以是完全由专用硬件实现,例如专用的芯片、集成电路或其他固件;也可以由通用处理器及其指令实现,该指令可以存储于处理器中或者存储于独立的存储器中。这些形式均落入本发明实施例的范围内。
可选地,作为另一实施例,LDPC码C为准循环低密度奇偶校验码QC-LDPC,其中,l为QC-LDPC码的膨胀因子。
可选地,作为另一实施例,d为60或180。
可选地,作为另一实施例,译码单元450采用Min-sum译码算法对m组所述LDPC子码进行译码,以获取所述LDPC码C的译码结果。
图13是本发明另一实施例的通讯设备的示意性框图。图13的通讯设备600可用于实现上述方法实施例中各步骤及方法。通讯设备600可应用于各种通信系统中的基站或者终端。图13的实施例中,通讯设备600包括发射电路602、接收电路603、译码处理器604、处理单元605,存储器606及天线601。处理单元605控制装置600的操作,并且可用于处理信号。处理单元605还可以称为CPU(Central Processing Unit,中央处理单元)。存储器606可以包括只读存储器和随机存取存储器,并向处理单元605提供指令和数据。存储器606的一部分还可以包括非易失行随机存取存储器(NVRAM)。具体的应用中,通讯设备600可以嵌入或者本身可以就是例如移动电话之类的无线通信设备,还可以包括容纳发射电路602和接收电路603的载体,以允许装置60和远程位置之间进行数据发射和接收。发射电路602和接收电路603可以耦合到天线601。通讯设备600的各个组件通过总线系统609耦合在一起,其中总线系统609除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都标为总线系统609。
上述本发明实施例揭示的方法可以应用于译码处理器604中,或者由译码处理器604实现。译码处理器604可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过译码处理器604中的硬件的集成逻辑电路或者软件形式的指令完成。这些指令可以通过处理单元605以配合实现及控制。用于执行本发明实施例揭示的方法,上述的译码处理器可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器,译码器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器606,译码处理器604读取存储器606中的信息,
结合其硬件完成上述方法的步骤。
具体地,存储器606可存储使得译码处理器604或处理单元605执行以下过程的指令:
将长度为n的LDPC码C={c1,c2,c3,…,cn-1,cn}分为k个LDPC码D={D1,D2,…,Dk-1,Dk},其中,Di={c(i-1)l+1,c(i-1)l+2,…,cil-1,cil},i=1,2,...,k-1,k,且Di的长度为l=n/k;译码器将Di,i=1,2,...,k-1,k按列进行排列,得到LDPC码D的转置码其中,根据目标校验矩阵中对应元素的值,对k按行进行循环移位,得到移位码E={E1,E2,…,Et-1,Et},其中t等于目标校验矩阵的行数,且Ej,j=1,2,...,t-1,t为根据目标校验矩阵中第j行的元素对DT移位的结果;根据移位码E和译码器的长度d得到t*m组LDPC子码F1,F2,…,Ftm-1,Ftm,其中Ej分为m组,且其中m表示Ej的第(s-1)d+1行到sd行,对m组LDPC子码进行译码,以获取LDPC码C的译码结果。
本发明实施例可按照译码器的长度对循环移位后的LDPC码进行分组,再对分组码进行译码,以获取LDPC码的译码结果,这样译码器的长度不受限于系统支持的LDPC码的最大码长,从而可以灵活地控制LDPC码的译码并行度,例如,可以减少l较大的LDPC码的耗费的译码资源,提高l较小的LDPC码的处理性能,能够使译码性能和资源达到更佳平衡。
另外,本发明实施例只需长度为d的译码器,可以降低单个译码器所占用的资源和计算复杂度,这样可以灵活地应用于资源受限的场景。一般而言,本发明实施例的译码器长度d小于360,显然,这样的译码器长度较低,也不必局限于系统支持的最长LDPC码长,因此更加适合于资源受限的场景。
存储器606可存储使得译码处理器604或处理单元605执行参照方法200的相应步骤的指令,在此不再重复。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因
此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本发明实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单
元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。当使用软件实现时,可以将上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。此外。任何连接可以适当的成为计算机可读介质。例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户线(DSL)或者诸如红外线、无线电和微波之类的无线技术从网站、服务器或者其他远程源传输的,那么同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线和微波之类的无线技术包括在所属介质的定影中。如本发明所使用的,盘(Disk)和碟(disc)包括压缩光碟(CD)、激光碟、光碟、数字通用光碟(DVD)、软盘和蓝光光碟,其中盘通常磁性的复制数据,而碟则用激光来光学的复制数据。上面的组合也应当包括在计算机可读介质的保护范围之内。
总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
- 一种低密度奇偶校验LDPC码的译码方法,其特征在于,所述方法包括:译码器将长度为n的LDPC码C={c1,c2,c3,...,cn-1,cn}分为k个LDPC码D={D1,D2,...,Dk-1,Dk},其中,Di={c(i-1)l+1,c(i-1)l+2,...,cil-1,cil},i=1,2,...,k-1,k,且所述Di的长度l=n/k;所述译码器将所述Di,i=1,2,...,k-1,k按列进行排列,得到所述LDPC码D的转置码其中,i=1,2,...,k-1,k;根据目标校验矩阵中对应元素的值,对所述i=1,2,...,k-1,k按行进行循环移位,得到移位码E={E1,E2,...,Et-1,Et},其中t等于所述目标校验矩阵的行数,且所述Ej,j=1,2,...,t-1,t为根据所述目标校验矩阵中第j行的元素对所述DT移位的结果;所述译码器根据所述移位码E和所述译码器的长度d得到t*m组LDPC子码F1,F2,...,Ftm-1,Ftm,其中所述Ej分为m组,且其中s=1,2,...,m-1,m表示所述Ej的第(s-1)d+1行到sd行,所述译码器对m组所述LDPC子码进行译码,以获取所述LDPC码C的译码结果。
- 根据权利要求1所述的方法,其特征在于,所述对m组所述LDPC子码进行译码,以获取所述LDPC码C的译码结果,包括:获取与所述LDPC子码对应的对数似然比LLR值G1,G2,...,Gtm-1,Gtm;根据所述LLR值,按照r=1,2,...,tm-1,tm的顺序,进行校验节点更新,得到行更新矩阵;根据所述行更新矩阵,逐列更新变量节点,得到列更新矩阵;对所述列更新矩阵进行判决和校验,以获取所述LDPC码C的译码结果。
- 根据权利要求1或2所述的方法,其特征在于,所述LDPC码C为准循环低密度奇偶校验码QC-LDPC,其中,所述l为所述QC-LDPC码的膨 胀因子。
- 根据权利要求1至3中任一项所述的方法,其特征在于,所述d为60或180。
- 根据权利要求1至4中任一项所述的方法,其特征在于,所述对m组所述LDPC子码进行译码,以获取所述LDPC码C的译码结果,包括:采用最小和Min-sum译码算法对m组所述LDPC子码进行译码,以获取所述LDPC码C的译码结果。
- 一种低密度奇偶校验LDPC码的译码器,其特征在于,包括:分段单元,用于将长度为n的LDPC码C={c1,c2,c3,...,cn-1,cn}分为k个LDPC码D={D1,D2,...,Dk-1,Dk},其中,Di={c(i-1)l+1,c(i-1)l+2,...,cil-1,cil},i=1,2,...,k-1,k且所述Di的长度为l=n/k;排列单元,用于将所述Di,i=1,2,...,k-1,k按列进行排列,得到所述LDPC码D的转置码其中,i=1,2,...,k-1,k;移位单元,用于根据目标校验矩阵中对应元素的值,对所述i=1,2,...,k-1,k按行进行循环移位,得到移位码E={E1,E2,...,Et-1,Et},其中t等于所述目标校验矩阵的行数,且所述Ej,j=1,2,...,t-1,t为根据所述目标校验矩阵中第j行的元素对所述DT移位的结果;分组单元,用于根据所述移位码E和所述译码器的长度d得到t*m组LDPC子码F1,F2,...,Ftm-1,Ftm,其中所述Ej分为m组,且其中s=1,2,...,m-1,m表示所述Ej的第(s-1)d+1行到sd行,译码单元,用于对m组所述LDPC子码进行译码,以获取所述LDPC码C的译码结果。
- 根据权利要求6所述的译码器,其特征在于,所述译码单元具体用于:获取与所述LDPC子码对应的对数似然比LLR值G1,G2,...,Gtm-1,Gtm;根据所述LLR值,按照r=1,2,...,tm-1,tm的顺序,进行校验节点更新, 得到行更新矩阵;根据所述行更新矩阵,逐列更新变量节点,得到列更新矩阵;对所述列更新矩阵进行判决和校验,以获取所述LDPC码C的译码结果。
- 根据权利要求6或7所述的译码器,其特征在于,所述LDPC码C为准循环低密度奇偶校验码QC-LDPC,其中,所述l为所述QC-LDPC码的膨胀因子。
- 根据权利要求6至8中任一项所述的译码器,其特征在于,所述d为60或180。
- 根据权利要求6至9中任一项所述的译码器,其特征在于,所述译码单元具体用于:采用最小和Min-sum译码算法对m组所述LDPC子码进行译码,以获取所述LDPC码C的译码结果。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/094783 WO2017084024A1 (zh) | 2015-11-17 | 2015-11-17 | 低密度奇偶校验码的译码方法和译码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107534511A true CN107534511A (zh) | 2018-01-02 |
CN107534511B CN107534511B (zh) | 2020-04-28 |
Family
ID=58717178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580002347.2A Active CN107534511B (zh) | 2015-11-17 | 2015-11-17 | 低密度奇偶校验码的译码方法和译码器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10484009B2 (zh) |
EP (1) | EP3364578B1 (zh) |
CN (1) | CN107534511B (zh) |
WO (1) | WO2017084024A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112332856A (zh) * | 2020-10-22 | 2021-02-05 | 中国科学院计算技术研究所 | 一种准循环ldpc码的层译码方法及装置 |
CN112583419A (zh) * | 2019-09-30 | 2021-03-30 | 华为技术有限公司 | 一种译码方法及装置 |
CN114301471A (zh) * | 2021-12-02 | 2022-04-08 | 阿里巴巴(中国)有限公司 | 固态硬盘中的译码方法、固态硬盘及电子设备 |
CN118536571A (zh) * | 2024-05-31 | 2024-08-23 | 北京无问芯穹科技有限公司 | 一种构建扩散变换器模型的方法、系统、设备及存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116683917A (zh) * | 2016-09-30 | 2023-09-01 | 中兴通讯股份有限公司 | 准循环ldpc编译码方法、装置及ldpc编译码器 |
CN111224673B (zh) | 2018-11-26 | 2024-10-11 | 中兴通讯股份有限公司 | 译码方法、装置及译码器 |
US11481271B2 (en) | 2021-03-16 | 2022-10-25 | Western Digital Technologies, Inc. | Storage system and method for using subcodes and convolutional-based LDPC interleaved coding schemes with read threshold calibration support |
US11575390B2 (en) * | 2021-07-02 | 2023-02-07 | Hong Kong Applied Science and Technology Research Insitute Co., Ltd. | Low-latency segmented quasi-cyclic low-density parity-check (QC-LDPC) decoder |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110239080A1 (en) * | 2010-03-26 | 2011-09-29 | Kabushiki Kaisha Toshiba | Error detection/correction circuit, memory controller and semiconductor memory apparatus |
CN102638275A (zh) * | 2004-06-24 | 2012-08-15 | Lg电子株式会社 | 无线通信系统中使用低密度奇偶校验码编码和解码数据的方法和装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7581157B2 (en) | 2004-06-24 | 2009-08-25 | Lg Electronics Inc. | Method and apparatus of encoding and decoding data using low density parity check code in a wireless communication system |
US20090183047A1 (en) * | 2006-03-06 | 2009-07-16 | Mattias Lampe | Method for Generating Ldpc Codes and Apparatus Using Ldpc Codes |
JP4487212B2 (ja) * | 2007-10-19 | 2010-06-23 | ソニー株式会社 | 復号装置および方法、送受信システム、受信装置および方法、並びにプログラム |
US8161345B2 (en) * | 2008-10-29 | 2012-04-17 | Agere Systems Inc. | LDPC decoders using fixed and adjustable permutators |
JPWO2010073922A1 (ja) * | 2008-12-25 | 2012-06-14 | 日本電気株式会社 | 誤り訂正符号化装置、復号装置、符号化方法、復号方法、及びそのプログラム |
TWI415396B (zh) * | 2009-11-23 | 2013-11-11 | Nat Univ Tsing Hua | 適用於根據里德-索羅門碼建立之低密度同位檢查碼的解碼器及解碼方法 |
CN101820288B (zh) * | 2010-04-21 | 2013-01-09 | 上海交通大学 | 低密度校验码的信息处理方法 |
US8499218B2 (en) * | 2011-09-30 | 2013-07-30 | Mitsubishi Electric Research Laboratories, Inc. | System and method for determining quasi-cyclic low-density parity-check codes having high girth |
EP2790327B1 (en) | 2011-12-30 | 2016-08-24 | Huawei Technologies Co., Ltd. | Adaptive coding using time-varying periodic ldpc convolutional codes based on quasi-cyclic ldpc block codes |
-
2015
- 2015-11-17 EP EP15908521.6A patent/EP3364578B1/en active Active
- 2015-11-17 WO PCT/CN2015/094783 patent/WO2017084024A1/zh active Application Filing
- 2015-11-17 CN CN201580002347.2A patent/CN107534511B/zh active Active
-
2018
- 2018-05-17 US US15/982,503 patent/US10484009B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102638275A (zh) * | 2004-06-24 | 2012-08-15 | Lg电子株式会社 | 无线通信系统中使用低密度奇偶校验码编码和解码数据的方法和装置 |
US20110239080A1 (en) * | 2010-03-26 | 2011-09-29 | Kabushiki Kaisha Toshiba | Error detection/correction circuit, memory controller and semiconductor memory apparatus |
Non-Patent Citations (1)
Title |
---|
BONGJIN KIM ET AL: "Area-Efficient QC-LDPC Decoder Architecture Based on Stride Scheduling and Memory Bank Division", 《IEICE TRANSACTIONS ON COMMUNICATIONS, COMMUNICATIONS SOCIETY, TOKYO, JP》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112583419A (zh) * | 2019-09-30 | 2021-03-30 | 华为技术有限公司 | 一种译码方法及装置 |
CN112332856A (zh) * | 2020-10-22 | 2021-02-05 | 中国科学院计算技术研究所 | 一种准循环ldpc码的层译码方法及装置 |
CN112332856B (zh) * | 2020-10-22 | 2023-07-25 | 中国科学院计算技术研究所 | 一种准循环ldpc码的层译码方法及装置 |
CN114301471A (zh) * | 2021-12-02 | 2022-04-08 | 阿里巴巴(中国)有限公司 | 固态硬盘中的译码方法、固态硬盘及电子设备 |
CN118536571A (zh) * | 2024-05-31 | 2024-08-23 | 北京无问芯穹科技有限公司 | 一种构建扩散变换器模型的方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107534511B (zh) | 2020-04-28 |
EP3364578A4 (en) | 2018-10-24 |
WO2017084024A1 (zh) | 2017-05-26 |
US20180269900A1 (en) | 2018-09-20 |
US10484009B2 (en) | 2019-11-19 |
EP3364578B1 (en) | 2023-07-26 |
EP3364578A1 (en) | 2018-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107534511B (zh) | 低密度奇偶校验码的译码方法和译码器 | |
JP4062435B2 (ja) | 誤り訂正符号復号装置 | |
US8572463B2 (en) | Quasi-cyclic LDPC encoding and decoding for non-integer multiples of circulant size | |
KR101203340B1 (ko) | 터보 ldpc 디코딩 | |
JP5506878B2 (ja) | 低密度パリティ検査符号のパリティ検査行列生成方法 | |
JP2008514106A (ja) | Ldpcコードを用いた符号化及び復号化方法 | |
US9595977B2 (en) | LDPC decoder with efficient circular shifters | |
US20160142074A1 (en) | Structure and decoder architecture of a class of low-density parity-check code | |
KR100975695B1 (ko) | 통신 시스템에서 신호 수신 장치 및 방법 | |
CN110233628B (zh) | 极化码的自适应置信传播列表译码方法 | |
CN111865335B (zh) | 一种分组纠错码的译码方法、装置、存储介质和电子装置 | |
CN109075805A (zh) | 实现极化码的设备和方法 | |
EP3876424A1 (en) | Decoding method, decoding device, and decoder | |
CN107615666A (zh) | Ldpc截短码的译码方法和译码设备 | |
KR101657912B1 (ko) | 비이진 저밀도 패리티 검사 코드의 복호화 방법 | |
Kumar et al. | A review of channel coding schemes in the 5G standard | |
CN105556851A (zh) | 用于从值的集合中识别第一极值和第二极值的方法及装置 | |
WO2014172874A1 (en) | Method and apparatus of ldpc encoder in 10gbase-t system | |
CN111034055A (zh) | 在非二进制ldpc解码器中简化的校验节点处理 | |
EP3829088A1 (en) | Decoder, decoding method, and computer storage medium | |
KR20130044254A (ko) | 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 채널 부호화/복호화 방법 및 장치 | |
CN107786300B (zh) | 一种数据发送方法及装置 | |
EP3591845B1 (en) | Sorting device and method for elementary check node processing for message-passing decoding of non-binary codes | |
US20140089754A1 (en) | Soft message-passing decoder with efficient message computation | |
CN116131864A (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 |