CN111064475A - 基于低密度奇偶校验码的译码方法及装置 - Google Patents

基于低密度奇偶校验码的译码方法及装置 Download PDF

Info

Publication number
CN111064475A
CN111064475A CN201811204745.4A CN201811204745A CN111064475A CN 111064475 A CN111064475 A CN 111064475A CN 201811204745 A CN201811204745 A CN 201811204745A CN 111064475 A CN111064475 A CN 111064475A
Authority
CN
China
Prior art keywords
target
base matrix
llr
row
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.)
Pending
Application number
CN201811204745.4A
Other languages
English (en)
Inventor
范嘉旗
罗俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201811204745.4A priority Critical patent/CN111064475A/zh
Priority to EP19872761.2A priority patent/EP3859978A4/en
Priority to PCT/CN2019/103327 priority patent/WO2020078113A1/zh
Publication of CN111064475A publication Critical patent/CN111064475A/zh
Priority to US17/231,873 priority patent/US20210234556A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1125Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using different domains for check node and bit node processing, wherein the different domains include probabilities, likelihood ratios, likelihood differences, log-likelihood ratios or log-likelihood difference pairs
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/114Shuffled, staggered, layered or turbo decoding schedules
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient implementations

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Error Detection And Correction (AREA)

Abstract

本申请公开了一种基于低密度奇偶校验码的译码方法及装置,属于通信技术领域。本申请可以基于目标基矩阵中的目标元素对n*L个LLR值进行译码,并禁止目标基矩阵中的非目标元素参与对n*L个LLR值进行译码。由于非目标元素是指零矩阵,而根据非目标元素对LLR值进行处理后,LLR值并不会发生变化,因此,禁止目标基矩阵中的非目标元素参与译码,既不会影响对LLR值的译码,同时,由于不再需要根据非目标因素对LLR值进行处理,因此,减少了译码的时间开销和对资源的占用,提高了译码性能。

Description

基于低密度奇偶校验码的译码方法及装置
技术领域
本申请涉及通信技术领域,特别涉及一种基于低密度奇偶校验码的译码方法及装置。
背景技术
低密度奇偶校验(low density parity check,LDPC)码是一种具有稀疏校验矩阵的分组纠错码,由于LDPC适用于各种信道的编码和译码,因此,基于LDPC的译码成为了近年来的研究热点。其中,LDPC的校验矩阵可以被分解为基矩阵和提升因子L,基矩阵中的每个元素均代表一个L*L的矩阵。根据该基矩阵中的每个元素以及提升因子L,对信号的多个对数似然比(log likelihood ratio,LLR)值进行运算,可以实现译码。
上述方案中,译码的开销将非常大,译码性能较低。
发明内容
本申请提供了一种基于LDPC码的译码方法及装置,可以用于解决相关技术中译码的时间开销较大,译码性能较低的问题。所述技术方案如下:
第一方面,提供了一种基于LDPC码的译码方法,该方法包括:基于目标校验矩阵对应的目标基矩阵的列数n和提升因子L,获取n*L个LLR值,目标校验矩阵是LDPC码的校验矩阵;基于目标基矩阵中的目标元素对n*L个LLR值进行译码,目标基矩阵中的非目标元素不参与对n*L个LLR值的译码,目标元素为L*L的非零矩阵,非目标元素为L*L的零矩阵。
由于非目标元素是指零矩阵,而根据零矩阵对LLR值进行处理后,LLR值并不会发生变化,因此,禁止目标基矩阵中的非目标元素参与译码,既不会影响对LLR值的译码,同时,由于不再需要根据非目标因素对LLR值进行处理,因此,减少了译码的时间开销和对资源的占用,提高了译码性能。
可选地,n*L个LLR值是n个LLR集合中的元素,n个LLR集合中的每个LLR集合中的元素的数量为L,n个LLR集合与目标基矩阵中的n个列一一对应;
基于目标基矩阵中的目标元素对n*L个LLR值进行译码,目标基矩阵中的非目标元素不参与对n*L个LLR值的译码的实现过程,可以包括:基于第一元素对已存储的第一LLR集合进行处理,第一元素为目标基矩阵中位于第i列的目标元素;以及避免基于第二元素对已存储的第二LLR集合进行处理,第二元素为目标基矩阵中位于第i列的非目标元素。
其中,i为大于0且小于n+1的正整数,当第一元素位于目标基矩阵的第一行时,第一LLR集合是指n个LLR集合中第i列对应的LLR集合,当第一元素不位于目标基矩阵的第一行时,第一LLR集合是指基于第一元素之前且距离第一元素最近的一个目标元素更新的LLR集合;当第二元素位于目标基矩阵的第一行时,第二LLR集合是指n个LLR集合中第i列对应的LLR集合,当第二元素不位于目标基矩阵的第一行时,第二LLR集合是指基于第二元素之前且距离第二元素最近的一个目标元素更新的LLR集合。
需要说明的是,避免基于第二元素对已存储的第二LLR集合进行处理可以是指避免读取已存储的第二LLR集合。
其中,第二LLR集合存储在RAM中,在这种情况下,由于不再需要从RAM中读取第二LLR集合,自然也就不再需要对第二元素和第二LLR集合进行运算,更不需要将运算得到的集合写回至RAM,减少了时间开销以及资源开销。
可选地,在本申请实施例中,可以从RAM中读取已存储的第二LLR集合,而避免基于第二元素对已存储的第二LLR集合进行处理可以是指避免对第二元素和第二LLR集合中的L个LLR值进行运算。这样,由于不需要对对第二元素和第二LLR集合进行运算,也不需要将运算得到的集合写回至RAM,因此,减少了时间开销以及资源开销。
可选地,在基于目标基矩阵中的目标元素对n*L个LLR值进行译码,目标基矩阵中的非目标元素不参与对之前n*L个LLR值的译码,还可以获取目标校验矩阵的初始基矩阵,初始基矩阵是m×n维的矩阵;基于初始基矩阵的第k行和第k+1行包括的元素确定至少一个目标列,至少一个目标列中每个目标列中位于第k行和第k+1行的两个元素均为目标元素,k为大于0且小于m的正整数;基于至少一个目标列对第k行和第k+1行包括的元素的顺序进行调整,得到目标基矩阵,调整顺序后的第k行中位于至少一个目标列的元素排在第k行的其他元素之前,调整顺序后的第k+1行中位于至少一个目标列的元素排在第k+1行的其他元素之后。
在本申请实施例中,可以对相邻两行中的元素的顺序进行调整,调整之后,在进行译码时,第k行和第k+1行中位于目标列的目标元素的译码存在一个时间差,而该时间差可以被利用来对第k+1行中不需要依赖第k行的译码结果的元素进行译码,相较于相关技术中只能在第k行所有元素译码完成之后才能对第k+1行中的元素进行译码的方案来说,本申请实施例提供的方法可以实现相邻两行的同时译码,有效的减小了译码的时间开销。
可选地,在基于目标基矩阵中的目标元素对n*L个LLR值进行译码,目标基矩阵中的非目标元素不参与对之前n*L个LLR值的译码,还可以获取目标校验矩阵的初始基矩阵,初始基矩阵是m×n维的矩阵;对初始基矩阵的多行的顺序进行调整,得到目标基矩阵,目标基矩阵所对应的时间开销小于初始基矩阵所对应的时间开销,目标基矩阵所对应的时间开销是指基于目标基矩阵中的目标元素对n*L个LLR值进行译码时的时间开销,初始基矩阵所对应的时间开销是指基于初始基矩阵中的目标元素对n*L个LLR值进行译码时的时间开销。
在本申请实施例中,可以通过调整初始基矩阵中多行的顺序来确定一个时间开销最小的目标基矩阵,之后,再通过禁止目标基矩阵中的非目标元素参与译码来减少时间开销,进一步的就减小了译码的开销。
第二方面,提供了一种基于LDPC的译码装置,所述基于LDPC的译码装置具有实现上述第一方面中基于LDPC的译码方法行为的功能。所述基于LDPC的译码装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的基于LDPC的译码方法。
第三方面,提供了一种基于LDPC的译码装置,所述基于LDPC的译码装置的结构中包括处理器和存储器,所述存储器用于存储支持基于LDPC的译码装置执行上述第一方面所提供的基于LDPC的译码方法的程序,以及存储用于实现上述第一方面所提供的基于LDPC的译码方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的基于LDPC的译码方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的基于LDPC的译码方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
本申请提供的技术方案带来的有益效果至少包括:
本申请实施例可以基于目标基矩阵中的目标元素对n*L个LLR值进行译码,并禁止目标基矩阵中的非目标元素参与对n*L个LLR值进行译码。由于非目标元素是指零矩阵,而根据非目标元素对LLR值进行处理后,LLR值并不会发生变化,因此,禁止目标基矩阵中的非目标元素参与译码,既不会影响对LLR值的译码,同时,由于不再需要根据非目标因素对LLR值进行处理,因此,减少了译码的时间开销和对资源的占用,提高了译码性能。
附图说明
图1是本申请实施例提供的一种计算机设备的结构示意图;
图2是本申请实施例提供的一种基于LDPC的译码方法的流程图;
图3是本申请实施例提供的一种基于LDPC的译码方法的流程图;
图4是本申请实施例提供的一种基于LDPC的译码方法的流程图;
图5是本申请实施例提供的一种基于LDPC的译码装置结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
相关技术中,根据LDPC码的校验矩阵对应的基矩阵的列数n和提升因子(liftingfactor)L,可以对n*L个LLR值进行译码。其中,由于LLR值的数量比较多,因此,通常可以将LLR值存储在随机存取存储器(random access memory,RAM)中。当进行译码时,可以从RAM中读取n*L个LLR值,并将n*L个LLR值平均分成n组,每组LLR值与基矩阵中的一列对应。之后,根据基矩阵的第一行的n个元素中的每个元素,对相应元素所在列对应的一组LLR值进行处理,从而得到第一次更新的n组LLR值,并将第一次更新的n组LLR值写回至RAM中。将第一次更新的n组LLR值写回至RAM后,n组LLR值被更新为第一次更新的n组LLR值。此时,第一行译码结束。在开始第二行译码时,从RAM中读取第一次更新的n组LLR值,根据基矩阵的第二行的n个元素中的每个元素,对相应元素所在列对应的第一次更新的一组LLR值进行处理,从而得到第二次更新的n组LLR值,并将第二次更新的n组LLR值写回至RAM中。将第二次更新的n组LLR值写回至RAM后,第一次更新的n组LLR值被更新为第二次更新的n组LLR值。以此类推,直到根据基矩阵的最后一行的元素得到最后一次更新的n组LLR值,并写回至RAM为止,第一次迭代结束。之后,开始第二次迭代,从RAM中读取第一次迭代中最后一次更新的n组LLR值,并按照前述方法对读取的n组LLR值进行处理,之后,从第二行译码到最后一行译码的过程均可以参照前述第一次迭代。按照上述方法进行多次迭代,直到迭代的次数达到最大迭代次数或者是译码成功时,将最后一次迭代中最后一次更新的n组LLR值作为最终的译码结果。
由此可见,相关技术中,在每一行译码的过程中,均需要根据相应行的n个元素中的每个元素对相应元素所在列对应的一组LLR值进行处理,在这种情况下,当基矩阵的列数n和提升因子L较大时,译码的时间开销将非常大,译码性能较低。
为了便于理解,接下来对上述相关技术中以及本申请实施例涉及的名词进行解释说明。
LDPC码:LDPC码可以通过(N,K,P)三个参数来表示,其中,N为码字码长,K为信息码长,P为校验码长,且P=N-K。当N=6,K=3时,则说明通过该LDPC码可以将3比特的信息编码为6比特。此时,P=3,也即,编码后产生的校验码长为3比特。
LDPC码的校验矩阵:LDPC码的校验矩阵是根据上述的LDPC码的参数随机生成的P×N维矩阵。例如,当P=32,N=80时,则校验矩阵将为32×80维的矩阵。
LDPC码的校验矩阵可以被分解为基矩阵和提升因子L,换句话说,LDPC码的校验矩阵可以通过基矩阵和提升因子L来表示。其中,基矩阵可以为m×n维的矩阵,且m=P/L,n=N/L。提升因子L可以是指基矩阵中每个元素所代表的矩阵的大小,也即,基矩阵包括的每个元素均可以代表一个L×L的矩阵。并且,根据每个元素的取值,可以将基矩阵包括的元素分为两种类型,取值不为-1的元素,其代表一个L×L的非零矩阵,取值为-1的元素,其代表一个L×L的零矩阵。
表1示出了一个32×80维的校验矩阵的基矩阵,其中,该基矩阵的维度为4×10,提升因子L为8。由于提升因子L=8,因此,基矩阵中每个元素代表的矩阵大小均为8×8。
表1 32×80维的校验矩阵的基矩阵
3 1 4 2 4 2 6 -1 -1 -1
2 0 4 4 1 5 4 3 -1 -1
1 3 5 2 5 4 -1 2 7 -1
7 6 3 5 7 2 -1 -1 2 5
需要说明的是,对于基矩阵中的每个取值非-1的元素,假设该非-1的元素的取值为h,则该非-1的元素代表的L×L矩阵是指将L×L的单位矩阵以列为单位循环右移h次得到的矩阵。
示例性的,如表1中第二行第二列的非-1元素,取值为0,则说明该非-1元素对应的8×8矩阵是指将8×8的单位矩阵以列为单位循环右移0次得到的矩阵,也即,该非-1元素对应的8×8矩阵是如表2所示的8×8的单位矩阵。
表2非-1元素的取值为0时对应的8×8矩阵
Figure BDA0001830931080000041
Figure BDA0001830931080000051
再例如,如表1中第一行第二列中的非-1元素,取值为1,则说明该非-1元素对应的8×8矩阵是指将8×8的单位矩阵以列为单位循环右移1次得到的矩阵,也即,该非-1元素对应的8×8矩阵是如表3所示的8×8的矩阵。
表3非-1元素的取值为1时对应的8×8矩阵
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0
再例如,如表1中第一行第一列的非-1元素,取值为3,则说明该非-1元素对应的8×8矩阵是指将8×8的单位矩阵以列为单位循环右移3次得到的矩阵,也即,该非-1元素对应的8×8矩阵是如表4所示的8×8的矩阵。
表4非-1元素的取值为3时对应的8×8矩阵
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
需要说明的是,由于校验矩阵的维数通常较大,因此,在存储校验矩阵时,存储量较大。而通过上述方式来表示校验矩阵时,校验矩阵可以被分解为一个基矩阵和一个提升因子,在存储该校验矩阵时,则可以直接存储该m×n维的基矩阵和提升因子L,相较于直接存储P×N维的校验矩阵,大大减小了存储量。
接下来对本申请实施例涉及的应用场景予以介绍。
在通信领域中,尽可能的提高通信***中信息传输的可靠性和有效性是通信技术研究所追求的目标,其中,在数字通信***中,通过信道编码技术可以有效的提高信息传输的可靠性。需要说明的是,信道编码技术是指发送端设备通过特定的编码方法对待发送的原始数据进行编码,并将编码得到的信号发送出去,接收端设备在接收到发送端设备发送的编号信号之后,可以通过与特定的编码方法对应的译码方法对编码信号进行译码,从而将编码信号恢复为原始数据,进而对恢复得到的原始数据进行处理。其中,当发送端设备采用的特定的编码方法为基于LDPC的编码方法时,也即,当发送端设备发送的编码信号是通过基于LDPC码的编码方法对原始数据编码得到时,接收端设备在接收到该编码信号时,即可以利用本申请实施例提供的基于LDPC码的译码方法对该编码信号进行译码,以得到原始数据。
接下来对本申请实施例提供的基于LDPC码的译码方法所涉及的设备进行介绍。
图1是本申请实施例提供的一种用于译码的计算机设备的结构示意图。参见图1,该计算机设备包括至少一个处理器101,通信总线102,存储器103、至少一个通信接口104、接收机105以及发射机106。
处理器101可以是一个通用中央处理器(Central Processing Unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),现场可编程门阵列(field-programmable gate array,FPGA),或一个或多个用于控制本申请方案程序执行的集成电路。或者,处理器101还可以是一个用于控制本申请方案程序执行的专用硬件。
通信总线102可包括一通路,在上述组件之间传送信息。
存储器103可以用于存储程序代码以及接收到的LLR值,其中,存储器103可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,RAM))或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器103可以是独立存在,通过通信总线102与处理器101相连接。存储器103也可以和处理器101集成在一起。
通信接口104,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
接收机105可以用于接收其他设备发送的数据和/或信令等。例如,在本申请实施例中,接收机105可以接收其他设备发送的LLR值。发射机106可以用于向其他设备发送数据和/或信令等。
在具体实现中,作为一种实施例,处理器101可以包括一个或多个CPU,例如图1中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,计算机设备可以包括多个处理器,例如图1中所示的处理器101和处理器107。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
上述的计算机设备可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中,计算机设备可以是台式机、便携式电脑、网络服务器、掌上电脑(PersonalDigital Assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备或者嵌入式设备。本申请实施例不限定计算机设备的类型。
其中,存储器103用于存储执行本申请方案的程序代码,并由处理器101来控制执行。处理器101可以用于执行存储器103中存储的程序代码。程序代码中可以包括一个或多个软件模块。处理器101通过执行存储器103中的程序代码中的一个或多个软件模块,来对存储器中存储的LLR值进行译码。
接下来对本申请实施例提供的基于LDPC码的译码方法进行详细的解释说明。
图2是本申请实施例提供的一种基于LDPC码的译码方法的流程图。该方法可以应用于图1所示的计算机设备中,参见图2,该方法包括以下步骤:
步骤201:基于目标校验矩阵对应的目标基矩阵的列数n和提升因子L,获取n*L个LLR值,目标校验矩阵是LDPC码的校验矩阵。
在本申请实施例中,目标校验矩阵可以是指任一LDPC码的校验矩阵,而目标基矩阵则是指目标校验矩阵对应的基矩阵。基于前述对LDPC码的校验矩阵的介绍可知,目标校验矩阵对应的目标基矩阵可以是m×n维的矩阵,也即,该目标基矩阵包括m行,n列,此时,可以根据目标基矩阵的列数n和提升因子L,按照LLR值的接收顺序获取n*L个LLR值。
需要说明的是,在一种可能的实现方式中,在获取到n*L个LLR值之后,可以按照LLR值的顺序将n*L个LLR值划分到n个LLR集合中,每个LLR集合中包括L个LLR值。之后,将该n个LLR集合存储在RAM中。其中,n个LLR集合与目标基矩阵中的n个列一一对应。
可选地,在另一种可能的实现方式中,在按照LLR值的接收顺序获取n*L个LLR值时,可以按照LLR值的接收顺序每次获取L个LLR值,并将获取的L个LLR值作为一个LLR集合,直至获取到n个LLR集合为止,将n个LLR集合存储至RAM中。其中,n个LLR集合与目标基矩阵中的n个列一一对应。
步骤202:基于目标基矩阵中的目标元素对n*L个LLR值进行译码,目标基矩阵中的非目标元素不参与对n*L个LLR值的译码,目标元素为L*L的非零矩阵,非目标元素为L*L的零矩阵。
在获取到n*L个LLR值之后,可以基于目标基矩阵中的目标元素对获取的n*L个LLR值进行译码,而目标基矩阵中非目标元素则不参与对n*L个LLR值的译码。其中,目标元素是指目标基矩阵中取值不为-1元素,非目标元素是指目标基矩阵中取值为-1的元素。基于前述对校验矩阵的介绍可知,基矩阵中取值不为-1的元素代表的是L*L的非零矩阵,取值为-1的元素代表的是L*L的零矩阵,因此,目标元素实际上就是指非零矩阵,而非目标元素即是指零矩阵。由于非目标元素代表L*L的零矩阵,而LLR值与L*L的零矩阵进行运算之后并不会发生变化,因此,可以通过禁止目标基矩阵中的非目标元素参与译码来减少译码开销。
基于步骤201中的描述可知,获取到的n*L个LLR值将作为n个LLR集合中的元素,该n个LLR集合中的每个LLR集合中的元素的数量为L,且n个LLR集合与目标基矩阵中的n个列一一对应。基于此,在本申请实施例中,在基于目标基矩阵中的目标元素对n*L个LLR值进行译码,目标基矩阵中的非目标元素不参与对n*L个LLR值的译码时,可以基于第一元素对已存储的第一LLR集合进行处理,第一元素为目标基矩阵中位于第i列的目标元素;以及避免基于第二元素对已存储的第二LLR集合进行处理,第二元素为目标基矩阵中位于第i列的非目标元素;其中,i为大于0且小于n+1的正整数,当第一元素位于目标基矩阵的第一行时,第一LLR集合是指n个LLR集合中第i列对应的LLR集合,当第一元素不位于目标基矩阵的第一行时,第一LLR集合是指基于第一元素之前且距离第一元素最近的一个目标元素更新的LLR集合;当第二元素位于目标基矩阵的第一行时,第二LLR集合是指n个LLR集合中第i列对应的LLR集合,当第二元素不位于目标基矩阵的第一行时,第二LLR集合是指基于第二元素之前且距离第二元素最近的一个目标元素更新的LLR集合。
接下来将示例性的对上述的译码过程进行详细的介绍。
通常,在基于目标基矩阵进行译码时,是按照目标基矩阵的行进行译码的。也即,可以从目标基矩阵的第一行开始,根据目标基矩阵的每行元素,逐行进行译码。
示例性的,对于一个m×n维的目标基矩阵,首先从该目标基矩阵中的第一行开始译码,若第一行中位于第i列的元素为目标元素,则可以根据第一行中位于第i列的目标元素,从已存储在RAM中的n个LLR集合中读取第i列对应的LLR集合,之后,可以基于目标元素对第i列对应的LLR集合进行运算,从而得到运算后的LLR集合,将该运算后的LLR集合写回至RAM中,以更新中RAM中已存储的第i列对应的LLR集合。而若第一行第i列的元素是非目标元素,则可以禁止从已存储在RAM中的n个LLR集合中读取第i列对应的LLR集合。或者,可以从已存储在RAM中的n个LLR集合中读取第i列对应的LLR集合,但是,在读取之后,禁止对第一行中位于第i列的非目标元素以及读取的第i列对应的LLR集合进行运算,以此来避免非目标元素参与译码。
对于目标基矩阵的第j行,若该第j行中位于第i列上的元素为目标元素,则可以从RAM中读取已存储的第i列对应的LLR集合,并基于第j行中位于第i列的目标元素对第i列对应的LLR集合进行运算,从而得到运算后的LLR集合,将运算后的LLR集合写回至RAM中,以更新RAM中存储的第i列对应的LLR集合。若第j行中位于第i列上的元素为非目标元素,则可以禁止从RAM中读取第i列对应的LLR集合。或者,可以从已存储在RAM中的n个LLR集合中读取第i列对应的LLR集合,但是,在读取之后,禁止对第j行中位于第i列的非目标元素以及第i列对应的LLR集合进行运算。
其中,第i列对应的LLR集合是指基于第j行中位于第i列的目标元素之前且距离第j行中位于第i列的目标元素最近的一个目标元素更新的LLR集合。示例性的,若第j-1行中位于第i列的元素为目标元素,则第i列对应的LLR集合即是在第j-1行译码的过程中根据第j-1行中位于第i列的目标元素进行运算更新得到的LLR集合。当然,若第j-1行中位于第i列的元素为非目标元素,而第j-2行中位于第i列的元素为目标元素,则说明在第j-1行译码的过程中并未更新第i列对应的LLR集合,而在第j-2行译码中对第i列对应的LLR集合进行了更新,此时,第i列对应的LLR集合即是指在第j-2行译码的过程中根据第j-2行中位于第i列的目标元素进行运算更新得到的LLR集合。
按照上述方式基于目标基矩阵逐行进行译码,每当从第一行到第m行完成一次译码时,可以将译码次数加1。当j=m时,也即,当完成第m行译码之后,可以检测基于第m行中的目标元素处理得到的LLR集合是否满足译码要求,或者是检测译码次数是否已达到上限值,若基于第m行中的目标元素处理得到的LLR集合满足译码要求,或者译码次数已达到上限值,则将基于第m行中的目标元素处理得到的LLR集合以及RAM中存储的第m行中的非目标元素所在列对应的LLR集合确定为最终的译码结果。若基于第m行中的目标元素处理得到的LLR集合不满足译码要求且译码次数未达到上限值,则可以重新从目标基矩阵的第一行开始,按照上述方式进行译码。其中,需要说明的是,在重新从第一行开始进行译码时,根据第一行中位于第i列的元素读取的第i列对应的LLR集合是指在上一次译码中基于第m行中位于第i列的目标元素更新的LLR集合,或者是在上一次译码中未基于第m行中位于第i列的非目标元素进行处理的存储在RAM中的第i列对应的LLR集合。
在本申请实施例中,当位于第i列的元素为非目标元素时,可以通过禁止读取第i列对应的LLR集合来避免非目标元素参与译码,由于禁止读取第i列对应的LLR集合,因此,也就不存在对第i列对应的LLR集合进行运算以及写回更新的过程,这样,相较于相关技术,即可以减少读取时间、运算时间以及更新时间,也即,减少了译码的时间开销和资源开销。或者,当位于第i列的元素为非目标元素时,也可以通过禁止不对第i列对应的LLR集合和第i列的非目标元素进行运算来避免非目标元素参与译码,省去了运算及写回更新的过程,同样可以减少译码的时间开销以及资源占用,提高了译码性能。
上述实施例主要介绍了通过避免目标基矩阵中的非目标元素参与译码来减少译码开销的方法。接下来将结合图3介绍本申请实施例提供的另一种基于LDPC码的译码方法。
图3是本申请实施例提供的另一种基于LDPC码的译码方法的流程图。该方法可以应用于图1所示的计算机设备中,参见图3,该方法包括以下步骤:
步骤301:获取目标校验矩阵的初始基矩阵,初始基矩阵是m×n维的矩阵。
在本申请实施例中,目标校验矩阵可以是指任一LDPC码对应的校验矩阵,目标校验矩阵的初始基矩阵可以是指目标校验矩阵对应的未经处理过的m×n维的原始基矩阵。
步骤302:基于初始基矩阵的第k行和第k+1行包括的元素确定至少一个目标列,至少一个目标列中每个目标列中位于第k行和第k+1行的两个元素均为目标元素,k为大于0且小于m的正整数。
在获取到初始基矩阵之后,可以在初始基矩阵包括的m行中选择任意相邻两行,分别为第k行和第k-1行,根据第k行和第k-1行包括的元素确定至少一个目标列。或者,可以从初始基矩阵的第一行开始,将相邻的两行作为一个行集合,得到多个行集合,各个行集合中不包括相同的行,之后,对于该多个行集合中的每个行集合中包括的相邻两行,如第k行和第k-1行,根据第k行和第k-1行包括的元素确定至少一个目标列。
其中,根据第k行和第k-1行包括的元素确定至少一个目标列的实现过程可以为:从第k行包括的元素中确定目标元素,若第k-1中位于第k行中的目标元素所在列的元素也为目标元素,则可以将相应列确定为目标列。其中,目标元素为L*L的非零矩阵,非目标元素为L*L的零矩阵,L为目标校验矩阵的提升因子。
示例性的,以表5中示出的初始基矩阵中的相邻两行为例对上述过程进行解释说明。其中,取值为非-1的元素为目标元素,取值为-1的元素为非目标元素。基于此,第一行中目标元素所在列分别为第一列、第二列、第四列和第五列。其中,第二行中位于第一列的元素为非目标元素,因此,第一列不是目标列。第二行中位于第二列的元素为目标元素,因此,第二列为目标列。第二行中位于第四列的元素为目标元素,因此,第四列也为目标列。第二行中位于第五列的元素为非目标元素,因此,第五列不是目标列。综上可知,对于表5所示的相邻两行,目标列分别为第二列和第四列。
表5初始基矩阵中的相邻两行
7 15 -1 11 0 -1 -1 -1
-1 8 4 1 -1 0 -1 -1
步骤303:基于至少一个目标列对第k行和第k+1行包括的元素的顺序进行调整,得到所述目标基矩阵,调整顺序后的第k行中位于至少一个目标列的元素排在第k行的其他元素之前,调整顺序后的第k+1行中位于至少一个目标列的元素排在第k+1行的其他元素之后。
在确定至少一个目标列之后,可以根据确定的至少一个目标列对第k行和第k+1行包括的元素的顺序进行调整。其中,可以将第k行中位于至少一个目标列的元素调整到其他元素之前,而将第k+1行中位于至少一个目标列的元素调整到其他元素之后。
示例性的,仍以表5所示的相邻两行为例,其中,目标列为第二列和第四列,根据目标列调整顺序时,在第一行中,位于第二列的元素15调整到第一列,位于第四列的元素11调整到第二列,其余元素按照之前的先后顺序从第三列开始顺序排列。在第二行中,位于第四列中的元素调整到最后一列,位于第二列的元素调整到倒数第二列,其余元素按照之前的先后顺序从第一列开始顺序排列,调整后的两行中的元素顺序如表6所示。
表6调整元素顺序后的相邻两行
15 11 7 -1 0 -1 -1 -1
-1 4 -1 0 -1 -1 8 1
需要说明的是,在本申请实施例中,在对相邻两行中的元素顺序进行调整之后,虽然元素的顺序发生了变化,但是每个元素所对应的列并未发生变化,换句话说,上述对元素顺序的调整实际上可以看作是对每行中列的顺序的调整。
当通过上述方式对相邻两行中的元素顺序调整完成之后,可以将调整后的初始基矩阵确定为目标基矩阵,之后,则可以通过下述步骤来基于该目标基矩阵和提升因子L对n*L个LLR值进行译码。
步骤304:基于目标校验矩阵对应的目标基矩阵的列数n和提升因子L,获取n*L个对数似然比LLR值。
本步骤可以参考前述实施例中的步骤201,本申请实施例在此不再赘述。
需要说明的是,虽然步骤301-303中对相邻两行中每行中的列的顺序进行了调整,但是,列本身并未发生变化,换句话说,虽然元素所处的位置不同,但是,在初始基矩阵中位于同一列的元素所对应的列还是相同的。例如,仍以表5和表6为例来说明,虽然在调整后元素15和元素8所处的位置不同,但是,元素15和元素8所对应的列还是同一列。
步骤305:基于目标基矩阵中的目标元素对n*L个LLR值进行译码,目标基矩阵中的非目标元素不参与对n*L个LLR值的译码。
本步骤可以参考前述实施例中的步骤202,本申请实施例在此不再赘述。
在本申请实施例中,对于初始基矩阵中的第k行和第k+1行,可以根据第k行和第k+1行中包括的元素确定至少一个目标列,该至少一个目标列中的每个目标列中位于第k行和第k+1行的两个元素均为目标元素,之后,将第k行中位于目标列的元素调整到其余元素之前,而将第k+1中位于目标列的元素调整到其余元素之后,这样,在后续译码过程中,在第k+1行中,由于放在前面的是不需要依赖第k行的译码结果的元素,因此,在第k行进行译码的同时,可以开始第k+1行的译码,同时,由于第k+1行中位于目标列的元素译码时需要依赖根据第k行中位于目标列的元素译码得到的译码结果,因此,在进行第k行译码时,将目标列的元素放在最前面,可以先根据目标列的元素进行译码得到译码结果,以便同时进行的第k+1行译码能够尽早获取到译码结果,从而完成调整到第k+1行最后的位于目标列的元素的译码。换句话说,通过上述调整,第k行和第k+1行中位于目标列的目标元素的译码存在一个时间差,而该时间差可以被利用来对第k+1行中不需要依赖第k行的译码结果的元素进行译码,相较于相关技术中只能在第k行所有元素译码完成之后才能对第k+1行中的元素进行译码的方案来说,本申请实施例提供的方法可以实现相邻两行的同时译码,有效的减小了译码的时间开销。
上述实施例主要介绍了通过调整相邻两行中元素的顺序以及避免目标基矩阵中的非目标元素参与译码来减少译码开销的方法,接下来将结合图4介绍本申请实施例提供的另一种基于LDPC码的译码方法。
图4是本申请实施例提供的一种基于LDPC码的译码方法的流程图。该方法可以应用于图1所示的计算机设备中,参见图4,该方法包括以下步骤:
步骤401:获取目标校验矩阵的初始基矩阵,初始基矩阵是m×n维的矩阵;
本步骤可以参考前述实施例中的步骤301,本申请实施例在此不再赘述。
步骤402:对初始基矩阵的多行的顺序进行调整,得到目标基矩阵,目标基矩阵所对应的时间开销小于初始基矩阵所对应的时间开销。
其中,目标基矩阵所对应的时间开销是指基于目标基矩阵中的目标元素对n*L个LLR值进行译码时的时间开销,初始基矩阵所对应的时间开销是指基于初始基矩阵中的目标元素对n*L个LLR值进行译码时的时间开销。目标元素为L*L的非零矩阵,非目标元素为L*L的零矩阵,L为目标校验矩阵对应的提升因子。
需要说明的是,在本申请实施例中,可以随机的对初始基矩阵中的多行的顺序进行调整,并调整多次,将每次调整后的初始基矩阵作为一个候选基矩阵,得到多个候选基矩阵。利用仿真模型根据每个候选基矩阵对n*L个LLR值进行译码,并确定根据每个候选基矩阵进行译码所花费的时间。从多个候选基矩阵中选择花费时间最少的候选基矩阵,并将选择的候选基矩阵确定为目标基矩阵。其中,仿真模型可以是根据图2或图3所示实施例提供的方法建立的仿真模型,或者,也可以是根据相关技术中译码方法建立的仿真模型,本申请实施例对此不做具体限定。
步骤403:基于目标校验矩阵对应的目标基矩阵的列数n和提升因子L,获取n*L个对数似然比LLR值。
本步骤可以参考前述实施例中的步骤201,本申请实施例在此不再赘述。
步骤404:基于目标基矩阵中的目标元素对n*L个LLR值进行译码,目标基矩阵中的非目标元素不参与对n*L个LLR值的译码。
本步骤可以参考前述实施例中的步骤202,本申请实施例在此不再赘述。
在本申请实施例中,可以通过调整初始基矩阵中多行的顺序来确定一个时间开销最小的目标基矩阵,之后,再通过禁止目标基矩阵中的非目标元素参与译码来减少时间开销,进一步的就减小了译码的开销。
参见图5,本申请实施例提供了一种基于LDPC的译码装置,该装置包括:
第一获取模块501,用于执行前述实施例中的步骤201、304或403;
译码模块502,用于执行前述实施例中的步骤202、305或404。
可选地,n*L个LLR值是n个LLR集合中的元素,n个LLR集合中的每个LLR集合中的元素的数量为L,n个LLR集合与目标基矩阵中的n个列一一对应;
译码模块502具体用于:
基于第一元素对已存储的第一LLR集合进行处理,第一元素为目标基矩阵中位于第i列的目标元素;以及
避免基于第二元素对已存储的第二LLR集合进行处理,第二元素为目标基矩阵中位于第i列的非目标元素;
其中,i为大于0且小于n+1的正整数,当第一元素位于目标基矩阵的第一行时,第一LLR集合是指n个LLR集合中第i列对应的LLR集合,当第一元素不位于目标基矩阵的第一行时,第一LLR集合是指基于第一元素之前且距离第一元素最近的一个目标元素更新的LLR集合;
当第二元素位于目标基矩阵的第一行时,第二LLR集合是指n个LLR集合中第i列对应的LLR集合,当第二元素不位于目标基矩阵的第一行时,第二LLR集合是指基于第二元素之前且距离第二元素最近的一个目标元素更新的LLR集合。
可选地,译码模块502具体用于:
避免读取已存储的第二LLR集合。
可选地,该装置还用于:
读取已存储的第二LLR集合;
译码模块502具体用于:
避免对第二元素和第二LLR集合中的L个LLR值进行运算。
可选地,该装置还包括:
第二获取模块,用于获取目标校验矩阵的初始基矩阵,初始基矩阵是m×n维的矩阵;
确定模块,用于基于初始基矩阵的第k行和第k+1行包括的元素确定至少一个目标列,至少一个目标列中每个目标列中位于第k行和第k+1行的两个元素均为目标元素,k为大于0且小于m的正整数;
第一调整模块,用于基于至少一个目标列对第k行和第k+1行包括的元素的顺序进行调整,得到目标基矩阵,调整顺序后的第k行中位于至少一个目标列的元素排在第k行的其他元素之前,调整顺序后的第k+1行中位于至少一个目标列的元素排在第k+1行的其他元素之后。
可选地,该装置还包括:
第二获取模块,用于获取目标校验矩阵的初始基矩阵,初始基矩阵是m×n维的矩阵;
第二调整模块,用于对初始基矩阵的多行的顺序进行调整,得到目标基矩阵,目标基矩阵所对应的时间开销小于初始基矩阵所对应的时间开销,目标基矩阵所对应的时间开销是指基于目标基矩阵中的目标元素对n*L个LLR值进行译码时的时间开销,初始基矩阵所对应的时间开销是指基于初始基矩阵中的目标元素对n*L个LLR值进行译码时的时间开销。
综上所述,本申请实施例可以基于目标基矩阵中的目标元素对n*L个LLR值进行译码,并禁止目标基矩阵中的非目标元素参与对n*L个LLR值进行译码。由于非目标元素是指零矩阵,而根据非目标元素对LLR值进行处理后,LLR值并不会发生变化,因此,禁止目标基矩阵中的非目标元素参与译码,既不会影响对LLR值的译码,同时,由于不再需要根据非目标因素对LLR值进行处理,因此,减少了译码的时间开销和对资源的占用,提高了译码性能。
需要说明的是:上述实施例提供的基于LDPC的译码装置在进行译码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于LDPC的译码装置与基于LDPC的译码方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(Digital Versatile Disc,DVD))、或者半导体介质(例如:固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (12)

1.一种基于低密度奇偶校验码的译码方法,其特征在于,所述方法包括:
基于目标校验矩阵对应的目标基矩阵的列数n和提升因子L,获取n*L个对数似然比LLR值,所述目标校验矩阵是低密度奇偶校验LDPC码的校验矩阵;
基于所述目标基矩阵中的目标元素对所述n*L个LLR值进行译码,所述目标基矩阵中的非目标元素不参与对所述n*L个LLR值的译码,所述目标元素为L*L的非零矩阵,所述非目标元素为L*L的零矩阵。
2.如权利要求1所述的方法,其特征在于,所述n*L个LLR值是n个LLR集合中的元素,所述n个LLR集合中的每个LLR集合中的元素的数量为L,所述n个LLR集合与所述目标基矩阵中的n个列一一对应;
所述基于所述目标基矩阵中的目标元素对所述n*L个LLR值进行译码,所述目标基矩阵中的非目标元素不参与对所述n*L个LLR值的译码,包括:
基于第一元素对已存储的第一LLR集合进行处理,所述第一元素为所述目标基矩阵中位于第i列的目标元素;以及
避免基于第二元素对已存储的第二LLR集合进行处理,所述第二元素为所述目标基矩阵中位于所述第i列的非目标元素;
其中,所述i为大于0且小于n+1的正整数,当所述第一元素位于所述目标基矩阵的第一行时,所述第一LLR集合是指所述n个LLR集合中所述第i列对应的LLR集合,当所述第一元素不位于所述目标基矩阵的第一行时,所述第一LLR集合是指基于所述第一元素之前且距离所述第一元素最近的一个目标元素更新的LLR集合;
当所述第二元素位于所述目标基矩阵的第一行时,所述第二LLR集合是指所述n个LLR集合中所述第i列对应的LLR集合,当所述第二元素不位于所述目标基矩阵的第一行时,所述第二LLR集合是指基于所述第二元素之前且距离所述第二元素最近的一个目标元素更新的LLR集合。
3.如权利要求2所述的方法,其特征在于,所述避免基于第二元素对已存储的第二LLR集合进行处理,包括:
避免读取已存储的所述第二LLR集合。
4.如权利要求2所述的方法,其特征在于,所述方法还包括:
读取已存储的所述第二LLR集合;
所述避免基于第二元素对已存储的第二LLR集合进行处理,包括:
避免对所述第二元素和所述第二LLR集合中的L个LLR值进行运算。
5.如权利要求1-4任一所述的方法,其特征在于,所述方法还包括:
获取所述目标校验矩阵的初始基矩阵,所述初始基矩阵是m×n维的矩阵;
基于所述初始基矩阵的第k行和第k+1行包括的元素确定至少一个目标列,所述至少一个目标列中每个目标列中位于所述第k行和所述第k+1行的两个元素均为所述目标元素,所述k为大于0且小于m的正整数;
基于所述至少一个目标列对所述第k行和所述第k+1行包括的元素的顺序进行调整,得到所述目标基矩阵,调整顺序后的第k行中位于所述至少一个目标列的元素排在所述第k行的其他元素之前,调整顺序后的第k+1行中位于所述至少一个目标列的元素排在所述第k+1行的其他元素之后。
6.如权利要求1-4任一所述的方法,其特征在于,所述方法还包括:
获取所述目标校验矩阵的初始基矩阵,所述初始基矩阵是m×n维的矩阵;
对所述初始基矩阵的多行的顺序进行调整,得到所述目标基矩阵,所述目标基矩阵所对应的时间开销小于所述初始基矩阵所对应的时间开销,所述目标基矩阵所对应的时间开销是指基于所述目标基矩阵中的目标元素对所述n*L个LLR值进行译码时的时间开销,所述初始基矩阵所对应的时间开销是指基于所述初始基矩阵中的目标元素对所述n*L个LLR值进行译码时的时间开销。
7.一种基于低密度奇偶校验码的译码装置,其特征在于,所述装置包括:
第一获取模块,用于基于目标校验矩阵对应的目标基矩阵的列数n和提升因子L,获取n*L个对数似然比LLR值,所述目标校验矩阵是低密度奇偶校验LDPC码的校验矩阵;
译码模块,用于基于所述目标基矩阵中的目标元素对所述n*L个LLR值进行译码,所述目标基矩阵中的非目标元素不参与对所述n*L个LLR值的译码,所述目标元素为L*L的非零矩阵,所述非目标元素为L*L的零矩阵。
8.如权利要求7所述的装置,其特征在于,所述n*L个LLR值是n个LLR集合中的元素,所述n个LLR集合中的每个LLR集合中的元素的数量为L,所述n个LLR集合与所述目标基矩阵中的n个列一一对应;
所述译码模块具体用于:
基于第一元素对已存储的第一LLR集合进行处理,所述第一元素为所述目标基矩阵中位于第i列的目标元素;以及
避免基于第二元素对已存储的第二LLR集合进行处理,所述第二元素为所述目标基矩阵中位于所述第i列的非目标元素;
其中,所述i为大于0且小于n+1的正整数,当所述第一元素位于所述目标基矩阵的第一行时,所述第一LLR集合是指所述n个LLR集合中所述第i列对应的LLR集合,当所述第一元素不位于所述目标基矩阵的第一行时,所述第一LLR集合是指基于所述第一元素之前且距离所述第一元素最近的一个目标元素更新的LLR集合;
当所述第二元素位于所述目标基矩阵的第一行时,所述第二LLR集合是指所述n个LLR集合中所述第i列对应的LLR集合,当所述第二元素不位于所述目标基矩阵的第一行时,所述第二LLR集合是指基于所述第二元素之前且距离所述第二元素最近的一个目标元素更新的LLR集合。
9.如权利要求8所述的装置,其特征在于,所述译码模块具体用于:
避免读取已存储的所述第二LLR集合。
10.如权利要求8所述的装置,其特征在于,所述装置还用于:
读取已存储的所述第二LLR集合;
所述译码模块具体用于:
避免对所述第二元素和所述第二LLR集合中的L个LLR值进行运算。
11.如权利要求7-10任一所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于获取所述目标校验矩阵的初始基矩阵,所述初始基矩阵是m×n维的矩阵;
确定模块,用于基于所述初始基矩阵的第k行和第k+1行包括的元素确定至少一个目标列,所述至少一个目标列中每个目标列中位于所述第k行和所述第k+1行的两个元素均为所述目标元素,所述k为大于0且小于m的正整数;
第一调整模块,用于基于所述至少一个目标列对所述第k行和所述第k+1行包括的元素的顺序进行调整,得到所述目标基矩阵,调整顺序后的第k行中位于所述至少一个目标列的元素排在所述第k行的其他元素之前,调整顺序后的第k+1行中位于所述至少一个目标列的元素排在所述第k+1行的其他元素之后。
12.如权利要求7-10任一所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于获取所述目标校验矩阵的初始基矩阵,所述初始基矩阵是m×n维的矩阵;
第二调整模块,用于对所述初始基矩阵的多行的顺序进行调整,得到所述目标基矩阵,所述目标基矩阵所对应的时间开销小于所述初始基矩阵所对应的时间开销,所述目标基矩阵所对应的时间开销是指基于所述目标基矩阵中的目标元素对所述n*L个LLR值进行译码时的时间开销,所述初始基矩阵所对应的时间开销是指基于所述初始基矩阵中的目标元素对所述n*L个LLR值进行译码时的时间开销。
CN201811204745.4A 2018-10-16 2018-10-16 基于低密度奇偶校验码的译码方法及装置 Pending CN111064475A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201811204745.4A CN111064475A (zh) 2018-10-16 2018-10-16 基于低密度奇偶校验码的译码方法及装置
EP19872761.2A EP3859978A4 (en) 2018-10-16 2019-08-29 DECODING PROCESS AND APPARATUS BASED ON A LOW DENSITY PARITY CHECK CODE
PCT/CN2019/103327 WO2020078113A1 (zh) 2018-10-16 2019-08-29 基于低密度奇偶校验码的译码方法及装置
US17/231,873 US20210234556A1 (en) 2018-10-16 2021-04-15 Decoding method and apparatus based on low-density parity-check code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811204745.4A CN111064475A (zh) 2018-10-16 2018-10-16 基于低密度奇偶校验码的译码方法及装置

Publications (1)

Publication Number Publication Date
CN111064475A true CN111064475A (zh) 2020-04-24

Family

ID=70284472

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811204745.4A Pending CN111064475A (zh) 2018-10-16 2018-10-16 基于低密度奇偶校验码的译码方法及装置

Country Status (4)

Country Link
US (1) US20210234556A1 (zh)
EP (1) EP3859978A4 (zh)
CN (1) CN111064475A (zh)
WO (1) WO2020078113A1 (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006047919A1 (fr) * 2004-11-04 2006-05-11 Zte Corporation Matrice de base, coder/encodeur et methode de generation de codes de controle de parite faible densite
KR20090092892A (ko) * 2008-02-28 2009-09-02 엘지전자 주식회사 Ldpc 코드를 이용한 복호화 방법
US20140229789A1 (en) * 2013-02-13 2014-08-14 Qualcomm Incorporated Ldpc design for high parallelism, low error floor, and simple encoding
EP2777164A1 (en) * 2011-11-11 2014-09-17 Samsung Electronics Co., Ltd. Apparatus and method for transmitting and receiving a quasi-cyclic low density parity check code in a multimedia communication system
CN104868925A (zh) * 2014-02-21 2015-08-26 中兴通讯股份有限公司 结构化ldpc码的编码方法、译码方法、编码装置和译码装置
CN107733442A (zh) * 2016-08-12 2018-02-23 中兴通讯股份有限公司 结构化ldpc码的处理方法及装置
CN107852176A (zh) * 2015-01-14 2018-03-27 北京航空航天大学 Ldpc码编码器和译码器
CN108023598A (zh) * 2016-11-03 2018-05-11 华为技术有限公司 编码方法、译码方法及无线通信设备
CN108347297A (zh) * 2017-01-25 2018-07-31 华为技术有限公司 一种编码方法、译码方法、编码装置及译码装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7934146B2 (en) * 2006-10-18 2011-04-26 Nokia Corporation Method, apparatus and computer program product providing for data block encoding and decoding
CN101212277A (zh) * 2006-12-29 2008-07-02 中兴通讯股份有限公司 支持多协议标准的ldpc码译码装置
CN101741396B (zh) * 2008-11-19 2013-03-13 华为技术有限公司 可变码长ldpc码编码或译码的方法与装置及编码器和译码器
CN106685586B (zh) * 2015-11-11 2020-02-14 华为技术有限公司 生成用于在信道中传输的低密度奇偶校验码的方法及设备
CN107888198B (zh) * 2016-09-30 2023-05-26 中兴通讯股份有限公司 准循环ldpc编译码方法、装置及ldpc编译码器
CN108234066B (zh) * 2016-12-15 2020-12-15 华为技术有限公司 基于ldpc的通信方法和通信设备
US10484010B2 (en) * 2016-12-20 2019-11-19 Samsung Electronics Co., Ltd. Apparatus and method for channel encoding/decoding in communication or broadcasting system
CN108270510B (zh) * 2016-12-30 2020-12-15 华为技术有限公司 基于ldpc码的通信方法和通信设备
US10567116B2 (en) * 2017-05-12 2020-02-18 Mediatek Inc. Wireless communication using codebooks from a QC-LDPC code for shorter processing latency and improved decoder throughput efficiency
KR102543059B1 (ko) * 2017-11-22 2023-06-14 삼성전자주식회사 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템
US10523239B2 (en) * 2018-04-12 2019-12-31 National Chiao Tung University Method for generating encoded data that is encoded based on low-density parity-check codes, and method for decoding the encoded data

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006047919A1 (fr) * 2004-11-04 2006-05-11 Zte Corporation Matrice de base, coder/encodeur et methode de generation de codes de controle de parite faible densite
KR20090092892A (ko) * 2008-02-28 2009-09-02 엘지전자 주식회사 Ldpc 코드를 이용한 복호화 방법
EP2777164A1 (en) * 2011-11-11 2014-09-17 Samsung Electronics Co., Ltd. Apparatus and method for transmitting and receiving a quasi-cyclic low density parity check code in a multimedia communication system
US20140229789A1 (en) * 2013-02-13 2014-08-14 Qualcomm Incorporated Ldpc design for high parallelism, low error floor, and simple encoding
CN104868925A (zh) * 2014-02-21 2015-08-26 中兴通讯股份有限公司 结构化ldpc码的编码方法、译码方法、编码装置和译码装置
CN107852176A (zh) * 2015-01-14 2018-03-27 北京航空航天大学 Ldpc码编码器和译码器
CN107733442A (zh) * 2016-08-12 2018-02-23 中兴通讯股份有限公司 结构化ldpc码的处理方法及装置
CN108023598A (zh) * 2016-11-03 2018-05-11 华为技术有限公司 编码方法、译码方法及无线通信设备
CN108347297A (zh) * 2017-01-25 2018-07-31 华为技术有限公司 一种编码方法、译码方法、编码装置及译码装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TZU-CHIEH KUO,EL AL: "Enhanced Delta-Based Layered Decoding of WiMAX QC-LDPC Codes", 《2008 IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS (ISCAS)》 *
ZHENZHI WU,EL AL: "Matrix Reordering Techniques for Memory Conflict Reduction for Pipelined QC-LDPC Decoder", 《IEEE/CIC ICCC 2014 SYMPOSIUM ON SIGNAL PROCESSING FOR COMMUNICATIONS》 *

Also Published As

Publication number Publication date
WO2020078113A1 (zh) 2020-04-23
EP3859978A1 (en) 2021-08-04
US20210234556A1 (en) 2021-07-29
EP3859978A4 (en) 2021-10-27

Similar Documents

Publication Publication Date Title
US20160254876A1 (en) Polar code encoding method and device
WO2017194013A1 (zh) 纠错编码方法及装置
US20190081731A1 (en) Devices and methods implementing polar codes
US10033407B2 (en) Optimization of low density parity-check code encoder based on a search for an independent set of nodes
CN104202057A (zh) 信息处理方法及装置
CN105262493A (zh) 低密度奇偶校验码的译码方法
CN113437979A (zh) 一种基于非均匀信源的原模图ldpc码的结构优化方法及装置
CN111132231B (zh) 一种极化时隙aloha的数据传输方法、装置、终端以及介质
US10784895B2 (en) Inter-block modifications to generate sub-matrix of rate compatible parity check matrix
CN107733442B (zh) 结构化ldpc码的处理方法及装置
CN111064475A (zh) 基于低密度奇偶校验码的译码方法及装置
CN109861693B (zh) 一种译码处理的方法及译码处理装置
KR20210057787A (ko) Turbo 곱 코드 디코딩 방법, 장치, 디코더 및 컴퓨터 기록 매체
CN114978194A (zh) 适用于有损信源编码的原模图ldpc码的结构优化方法及装置
CN111224674B (zh) 多进制ldpc码的解码方法、装置及解码器
CN112583420B (zh) 一种数据处理方法和译码器
US20100125769A1 (en) Parity-check-code decoder and recording controller
CN112534724B (zh) 用于解码极化码和乘积码的解码器和方法
US11973593B2 (en) LDPC codes for 3GPP NR ultra-reliable low-latency communications
CN113612485A (zh) 一种译码方法、译码装置、设备及存储装置
CN111786680B (zh) 一种生成矩阵的确定方法及装置
CN111384976A (zh) 稀疏校验矩阵的存储方法和读取方法
CN116662063B (zh) 一种闪存的纠错配置方法、纠错方法、***、设备及介质
CN114978195B (zh) 一种极化码串行抵消列表译码码字相关的错误图样集搜索方法及***
CN111106837B (zh) 一种ldpc译码方法、译码装置及存储介质

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
AD01 Patent right deemed abandoned

Effective date of abandoning: 20231110

AD01 Patent right deemed abandoned