一种QC-LDPC码的译码方法、模块及装置转让专利

申请号 : CN201910139816.5

文献号 : CN109921802B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵旭莹刘钰梁华岳张丽雅张达朱泳明孙刚杨小军石晶林霍元宏

申请人 : 北京中科晶上科技股份有限公司

摘要 :

本发明提供一种QC‑LDPC码的译码方法、模块及装置。该方法包括:根据QC‑LDPC码的校验矩阵及第一移位信息计算Z层变量节点传递给校验节点的外部信息;根据Z层变量节点传递给校验节点的外部信息对Z层校验节点同时进行更新;Z为自然数;根据更新后的Z层校验节点同时对Z层变量节点进行更新,并将更新后的Z层变量节点根据第二移位信息进行移位;根据移位后的变量节点进行判决,根据判决结果确定是否停止迭代更新,以便输出译码结果。本发明实施例提供的QC‑LDPC码的译码方法提高了译码效率,节省了译码时间,而且适用性广,灵活性高。

权利要求 :

1.一种QC‑LDPC码的译码方法,包括:

根据QC‑LDPC码的校验矩阵及第一移位信息通过如下方式计算Z层变量节点传递给校验节点的外部信息:σj'=γj‑λi,j,其中,σj'表示变量节点γj传递给校验节点的外部信息,λi,j为校验矩阵中非零值的节点信息,j为校验矩阵中第i行中数值1所在的列索引,j'=0,

1,2,...,N‑1,且j'表示每层待更新的校验节点索引值,N为校验矩阵的第i行的行重;第一移位信息为将QC‑LDPC码进行循环移位的次数;根据Z层变量节点传递给校验节点的外部信息对Z层校验节点同时进行更新;Z为自然数;其中,对Z层校验节点同时更新时,包括:从变量节点传递给校验节点的信息中确定最小值、次小值和最小值索引;基于变量节点传递给校验节点的外部信息,根据所述最小值、次小值和最小值索引按照预设的更新算法对每层校验节点同时更新;根据更新后的Z层校验节点同时对Z层变量节点按照如下方式进行更新,并将更新后的Z层变量节点根据第二移位信息进行移位:γj′=γj‑λi,j+σ'j,其中,γj为更新前的变量节点,σ'j为更新后的校验节点信息;根据移位后的变量节点进行判决,根据判决结果确定是否停止迭代更新,以便输出译码结果。

2.根据权利要求1所述的方法,其中,设σ'j为第t个更新后的校验节点信息,则其中,α为缩放因子,sign(k)为第k个θv→c的符号,sum_sign为每层θv→c的符号运算结果,sub_min为次小值,min为最小值,min_index为最小值索引,θv→c为变量节点传递给校验节点信息,k为自然数。

3.根据权利要求1所述的方法,其中,根据更新后的Z层校验节点同时对Z层变量节点进行更新之后,还包括:对QC‑LDPC码的校验矩阵中的非零值节点进行更新并存储,得到更新的校验矩阵。

4.根据权利要求1所述的方法,还包括:存储QC‑LDPC码的校验基矩阵中的非零值索引。

5.一种QC‑LDPC码的译码模块,包括:

数据存储单元,用于存储QC‑LDPC码的Z层变量节点信息;

第一移位单元,用于在一个时钟周期内对数据存储单元存储的Z层变量节点根据第一移位信息进行移位;

计算单元,用于根据第一移位单元移位后的变量节点信息按照如下方式计算变量节点传递给校验节点的外部信息:σj'=γj‑λi,j,其中,σj'表示变量节点γj传递给校验节点的外部信息,λi,j为校验矩阵中非零值的节点信息,j为校验矩阵中第i行中数值1所在的列索引,j'=0,1,2,...,N‑1,且j'表示每层待更新的校验节点索引值,N为校验矩阵的第i行的行重;第一移位信息为将QC‑LDPC码进行循环移位的次数;

校验节点更新单元,用于根据所述变量节点传递给校验节点的外部信息对Z层校验节点按照如下方式进行更新:从变量节点传递给校验节点的信息中确定最小值、次小值和最小值索引;基于变量节点传递给校验节点的外部信息,根据所述最小值、次小值和最小值索引按照预设的更新算法对每层校验节点同时更新;

变量节点更新单元,用于根据更新后的Z层校验节点同时对Z层变量节点按照如下方式进行更新:γj′=γj‑λi,j+σ'j,其中,γj为更新前的变量节点,σ'j为更新后的校验节点信息;第二移位单元,用于在一个时钟周期内将更新后的Z层变量节点根据第二移位信息进行移位;

判决单元,用于根据移位后的变量节点进行硬判决,根据判决结果确定是否停止迭代更新,以便输出译码结果。

6.根据权利要求5所述的译码模块,还包括:

查找表存储单元,所述查找表存储单元包括矩阵存储子单元和索引存储子单元;

矩阵存储子单元,用于存储更新的QC‑LDPC码的校验矩阵;

索引存储单元,用于存储校验基矩阵中的非零值索引。

7.一种QC‑LDPC码的译码装置,包括:程序存储模块,控制模块和权利要求5‑6之一所述的译码模块;

所述程序存储模块,用于存储待译码的QC‑LDPC码;

所述译码模块,用于对所述程序存储模块存储的QC‑LDPC码进行译码;

所述控制模块,用于控制所述程序存储模块和所述译码模块的工作状态及时序。

8.一种电子设备,包括:

处理器;

用于存储所述处理器可执行指令的存储器;

所述可执行指令在被所述处理器运行时使得所述处理器执行上述权利要求1~4中任一项所述的QC‑LDPC码的译码方法。

9.一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行如权利要求1~4中任一项所述的QC‑LDPC码的译码方法。

说明书 :

一种QC‑LDPC码的译码方法、模块及装置

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种QC‑LDPC码的译码方法、模块及装置。

背景技术

[0002] 数字信号在传输过程中由于受到噪声和干扰的影响会出现差错,在通信系统中一般采用纠错编码技术来保证可靠的传输。目前,低密度奇偶校验码(Low Density Parity Check Code,以下简称LDPC)被认为是目前最有前途的纠错编码方式之一。
[0003] 但是LDPC码编码复杂度较高,因此近年来提出了一种准循环低密度奇偶校验码(Quasi‑Cyslic Low‑Density Parity‑Check Codes,以下简称QC‑LDPC)。QC‑LDPC码的校验矩阵由若干子矩阵构成,每个子矩阵都是一个单位循环矩阵或者全零矩阵,这样,就可以用循环的位数来代替子矩阵进行存储,大大节省了存储空间。
[0004] QC‑LDPC码的译码过程为对校验矩阵中变量节点和校验节点之间的传递信息进行更新,通过多次迭代完成译码,每次迭代按照子码间并行,子码内分层的流程进行译码。由于QC‑LDPC码的校验矩阵中校验节点数量巨大,因此目前的QC‑LDPC码的译码时间长,译码吞吐量低。

发明内容

[0005] 本发明的目的在于克服上述现有技术的缺陷,提供一种QC‑LDPC码的译码方法、模块及装置。
[0006] 根据本发明的第一方面,提供了一种QC‑LDPC码的译码方法,其特征在于,包括:
[0007] 根据QC‑LDPC码的校验矩阵及第一移位信息计算Z层变量节点传递给校验节点的外部信息;
[0008] 根据Z层变量节点传递给校验节点的外部信息对Z层校验节点同时进行更新;Z为自然数;
[0009] 根据更新后的Z层校验节点同时对Z层变量节点进行更新,并将更新后的Z层变量节点根据第二移位信息进行移位;
[0010] 根据移位后的变量节点进行判决,根据判决结果确定是否停止迭代更新,以便输出译码结果。
[0011] 在本发明的一个实施例中,根据变量节点传递给校验节点的外部信息对Z层校验节点同时进行更新,包括:
[0012] 从Z层变量节点传递给校验节点的信息中确定最小值、次小值和最小值索引;
[0013] 基于变量节点传递给校验节点的外部信息,根据所述最小值、次小值和最小值索引对每层校验节点同时更新。
[0014] 在本发明的一个实施例中,设σ'j为第t个更新后的校验节点信息,则
[0015]
[0016] 其中,α为缩放因子,sign(k)为第k个θv→c的符号,sum_sign为每层θv→c的符号运算结果,sub_min为次小值,min为最小值,min_index为最小值索引,θv→c为变量节点传递给校验节点信息,j为校验矩阵中第i行中数值1所在的列索引,k为自然数。
[0017] 在本发明的一个实施例中,根据更新后的校验节点同时对每层变量节点进行更新之后,还包括:
[0018] 对QC‑LDPC码的校验矩阵中的非零值节点进行更新并存储,得到更新的校验矩阵。
[0019] 在本发明的一个实施例中,还包括:存储QC‑LDPC码的校验基矩阵中的非零值索引。
[0020] 根据本发明的第二方面,提供了一种QC‑LDPC码的译码模块,包括:
[0021] 数据存储单元,用于存储QC‑LDPC码的Z层变量节点信息;
[0022] 第一移位单元,用于在一个时钟周期内对数据存储单元21存储的Z层变量节点根据第一移位信息进行移位;
[0023] 计算单元,用于根据第一移位单元移位后的变量节点信息计算变量节点传递给校验节点的外部信息;
[0024] 校验节点更新单元,用于根据所述变量节点传递给校验节点的外部信息对Z层校验节点进行更新;
[0025] 变量节点更新单元,用于根据更新后的Z层校验节点同时对Z层变量节点进行更新;
[0026] 第二移位单元,用于在一个时钟周期内将更新后的Z层变量节点根据第二移位信息进行移位;
[0027] 判决单元,用于根据移位后的变量节点进行硬判决,根据判决结果确定是否停止迭代更新,以便输出译码结果。
[0028] 在本发明的一个实施例中,还包括:查找表存储单元,所述查找表存储单元包括矩阵存储子单元和索引存储子单元;
[0029] 矩阵存储子单元,用于存储更新的QC‑LDPC码的校验矩阵。
[0030] 索引存储单元,用于存储校验基矩阵中的非零值索引。
[0031] 根据本发明的第三方面,提供了一种QC‑LDPC码的译码装置,包括:程序存储模块,控制模块和所述的译码模块;
[0032] 所述程序存储模块,用于存储待译码的QC‑LDPC码;
[0033] 所述译码模块,用于对所述程序存储模块存储的QC‑LDPC码进行译码;
[0034] 所述控制模块,用于控制所述程序存储模块和所述译码模块的工作状态及时序。
[0035] 根据本发明的第四方面,提供了一种电子设备,包括:
[0036] 处理器;
[0037] 用于存储所述处理器可执行指令的存储器;
[0038] 所述可执行指令在被所述处理器运行时使得所述处理器执行上述的QC‑LDPC码的译码方法。
[0039] 根据本发明的第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行所述的QC‑LDPC码的译码方法。
[0040] 与现有技术相比,本发明的优点在于:
[0041] 1)本发明实施例根据QC‑LDPC码的校验矩阵及第一移位信息计算Z层变量节点传递给校验节点的外部信息,根据该外部信息对Z层校验节点同时进行更新,然后根据更新后的校验节点同时对Z层变量节点进行更新,并将更新后的变量节点根据第二移位信息进行移位,最后根据移位后的变量节点进行硬判决,根据判决结果确定是否停止迭代更新,以便输出译码结果。由于可以同时对多层校验节点进行更新,并且对每层的所有校验节点同时进行更新,大大提高译码效率,节省了译码时间;同时通过将变量节点通过第一移位信息和第二移位信息进行移位,使该译码方法适应不同的校验矩阵,从而提高译码方法的适用性和灵活性;
[0042] 2)进一步地,存储校验基矩阵中的非零值索引,在变量节点更新时可以通过存储的非零值索引快速更新指定的变量节点,进一步地提高了译码效率;
[0043] 3)进一步的,同时从每层变量节点传递给校验节点的信息中确定最小值、次小值和最小值索引,然后根据所述最小值、次小值和最小值索引同时更新多层校验节点,可以对多种QC‑LDPC码进行译码,因此该译码方法不仅应用广泛,而且可以满足多种通信系统的要求;
[0044] 4)进一步地,对校验矩阵中的非零值节点进行更新并存储,在后续进行校验节点和变量节点的更新时,可以按照存储的非零值节点的顺序进行更新,节省了更新前的寻址操作,大大降低了网络开销;
[0045] 5)进一步地,本发明实施例中程序存储模块存储待译码的QC‑LDPC码,每个时钟周期提取一条指令,数据存储单元的位宽为Z*Col_Num*BW,形成了位宽可伸缩的高并行存储模块,查找表存储单元存储校验基矩阵及非零值索引,这三种存储模式形成高并行度的存储系统,可以使译码装置在一个时钟周期访问多条数据,实现单指令多数据流处理,大大提高了译码效率。

附图说明

[0046] 以下附图仅对本发明作示意性的说明和解释,并不用于限定本发明的范围,其中:
[0047] 图1示出了根据本发明一个实施例的QC‑LDPC码的译码方法流程示意图;
[0048] 图2示出了根据本发明一个实施例的QC‑LDPC码的译码模块结构示意图;
[0049] 图3示出了根据本发明一个实施例中校验节点更新单元的更新过程结构示意图;
[0050] 图4示出了根据本发明一个实施例的QC‑LDPC码的译码装置结构示意图;
[0051] 图5示出了根据本发明一个实施例的电子设备结构示意图。

具体实施方式

[0052] 为了使本发明的目的、技术方案、设计方法及优点更加清楚明了,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0053] 在描述本发明实施例之前,首先对LDPC码和QC‑LDPC码作基础说明,便于理解本发明。
[0054] LDPC码是一种特殊的线性分组码。通信中,每发送一个分组长度为N比特的码字c,T为了保证其具有一定的纠错能力,需要有M个校验比特,每个码字都要求满足c·H =0,其中H为二元域上M×N维的奇偶校验矩阵。
[0055] QC‑LDPC码是LDPC码的一个子类,其校验矩阵H由多个属于循环置换矩阵的子矩阵构成,其中,子矩阵是对单位矩阵进行列循环右移得到的矩阵。设QC‑LDPC码的校验矩阵H由J*L个属于循环置换矩阵的子矩阵构成,每个子矩阵的大小为Z*Z,则QC‑LDPC码具有J*Z个校验节点和L*Z个变量节点。因此,本发明的译码并行度为Z,每个时钟周期可以处理Z层数据。
[0056] 下面以具体的实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
[0057] 参见图1,本发明实施例提供了一种QC‑LDPC码的译码方法,包括:
[0058] S101、根据QC‑LDPC码的校验矩阵及第一移位信息计算Z层变量节点传递给校验节点的外部信息;
[0059] 具体地,设变量节点传递给校验节点的外部信息为σj',则
[0060] σj'=γj‑λi,j,其中,γj为变量节点,λi,j为校验矩阵中非零值的节点信息,j为校验矩阵中第i行中数值1所在的列索引,j'=0,1,2,...,N‑1,j'表示每层待更新的校验节点索引值,N为校验矩阵的第i行的行重。
[0061] 本发明实施例中,校验矩阵中只存储非零值节点。将该校验矩阵通过获取的第一移位信息移位后,每一层的变量节点均为非零值节点,因此可以同时计算Z层变量节点传递给校验节点的外部信息。其中,第一移位信息为将QC‑LDPC码进行循环移位的次数。
[0062] S102、根据Z层变量节点传递给校验节点的外部信息对Z层校验节点同时进行更新;Z为自然数;
[0063] QC‑LDPC码的译码过程通过多次迭代完成,现有技术中每次迭代按照子码间并行,子码内分层的流程进行译码,具体译码过程为对变量节点和校验节点之间的传递信息进行更新。而本发明实施例对Z层校验节点同时进行更新,大大提高了译码效率。
[0064] 具体地,S102根据变量节点传递给校验节点的外部信息对Z层校验节点同时进行更新,包括:
[0065] S1021、从变量节点传递给校验节点的信息中确定最小值、次小值和最小值索引;
[0066] S1022、基于变量节点传递给校验节点的外部信息,根据所述最小值、次小值和最小值索引对每层校验节点同时更新。
[0067] 例如,设σ'j为第k个更新后的校验节点信息,则
[0068]
[0069] 其中,α为缩放因子,sign(k)为第k个θv→c的符号,sum_sign为每层θv→c的符号运算结果,sub_min为次小值,min为最小值,min_index为最小值索引,θv→c为变量节点传递给校验节点信息。
[0070] 需要说明的是,本发明实施例中校验节点更新公式可以根据具体需求进行适应性的变形,即,通过α的取值实现对应的算法,例如最小和算法、归一化最小值算法、查找表算法和Q函数算法等。本发明实施例以最小和算法为例进行说明,但本发明实施例不限于具体的校验节点更新公式。例如,当缩放因子α为1时,校验节点更新算法为最小和算法;当α为其他固定值,例如0.95时,校验节点更新算法为归一化最小和算法;当α为可编程参数时,校验节点更新算法为查找表算法。
[0071] S103、根据更新后的Z层校验节点同时对Z层变量节点进行更新,并将更新后的Z层变量节点根据第二移位信息进行移位;
[0072] 校验矩阵每层都有变量节点,变量节点数目等于该层的行重。设更新后的每层变量节点为γj′,则γj′=γj‑λi,j+σ'j,其中,γj为更新前的变量节点,σ'j为更新后的校验节点信息。设γj″为根据第二移位信息移位后的变量节点。
[0073] 具体地,可以通过查找表获取Z层变量节点的第二移位信息,根据第二移位信息对更新后的变量节点进行移位。众所周知,不同通信标准中校验矩阵的定义是不同的,本发明实施例中通过将变量节点通过第一移位信息和第二移位信息进行移位,可以使该译码方法适应不同的校验矩阵,从而提高译码方法的适用性和灵活性。
[0074] 进一步地,步骤S103根据更新后的校验节点同时对每层变量节点进行更新之后,本发明实施例还包括:
[0075] 对QC‑LDPC码的校验矩阵中的非零值节点进行更新并存储,得到更新的校验矩阵。
[0076] 具体地,λi,j=σ'j,对校验矩阵中的非零值节点进行更新并存储,在后续进行校验节点和变量节点的更新时,可以按照存储的非零值节点的顺序进行更新,节省了更新前的寻址操作,大大降低了网络开销。
[0077] 进一步地,本发明实施例还包括:
[0078] 存储QC‑LDPC码的校验基矩阵中的非零值索引。
[0079] 存储QC‑LDPC码的校验基矩阵中的非零值索引后,在变量节点更新时可以通过存储的非零值索引快速更新指定的变量节点,进一步地提高了译码效率。该步骤可以在S101~S104的任意步骤之间,之前或者之后执行,本发明实施例对S105的具体执行时间不作限定。
[0080] S104、根据移位后的变量节点进行判决,根据判决结果确定是否停止迭代更新,以便输出译码结果。
[0081] 本发明实施例中,设判决比特为vj,如果vHT=0,则停止译码;否则,重复步骤101至104,进行下一次迭代操作,直到达到最大迭代次数Imax,停止译码。由于根据更新后的变量节点进行硬判决属于本领域技术人员的公知常识,所以本发明实施例在此不再赘述。
[0082] 本发明实施例根据QC‑LDPC码的校验矩阵及第一移位信息计算Z层变量节点传递给校验节点的外部信息,根据该外部信息对Z层校验节点同时进行更新,然后根据更新后的校验节点同时对Z层变量节点进行更新,并将更新后的变量节点根据第二移位信息进行移位,最后根据移位后的变量节点进行硬判决,根据判决结果确定是否停止迭代更新,以便输出译码结果。由于可以同时对多层校验节点进行更新,并且对每层的所有校验节点同时进行更新,大大提高译码效率,节省了译码时间;同时通过将变量节点通过第一移位信息和第二移位信息进行移位,使该译码方法适应不同的校验矩阵,从而提高译码方法的适用性和灵活性;进一步地,存储校验基矩阵中的非零值索引,在变量节点更新时可以通过存储的非零值索引快速更新指定的变量节点,进一步地提高了译码效率;进一步的,同时从每层变量节点传递给校验节点的信息中确定最小值、次小值和最小值索引,然后根据所述最小值、次小值和最小值索引同时更新多层校验节点,可以对多种QC‑LDPC码进行译码,因此该译码方法不仅应用广泛,而且可以满足多种通信系统的要求;进一步地,对校验矩阵中的非零值节点进行更新并存储,在后续进行校验节点和变量节点的更新时,可以按照存储的非零值节点的顺序进行更新,节省了更新前的寻址操作,大大降低了网络开销。
[0083] 图2是本发明实施例提供的一种QC‑LDPC码的译码模块结构示意图,如图2所示,该译码模块20包括:数据存储单元21,第一移位单元22,计算单元23,校验节点更新单元24,变量节点更新单元25,第二移位单元26和判决单元27;
[0084] 数据存储单元21,用于存储QC‑LDPC码的Z层变量节点信息;数据存储单元数量为QC‑LDPC码的校验矩阵的最大行重。
[0085] 本发明实施例中最大行重是校验矩阵H的每层变量节点的非零节点个数,设校验矩阵H的最大行重为Col_Num。校验矩阵H由基矩阵扩展而来,扩展子矩阵为一个Z*Z的方阵,BW表示节点信息值的量化位宽,因此,本发明实施例中数据存储单元的位宽为Z*Col_Num*BW比特。
[0086] 其中,变量节点信息包括接收的QC‑LDPC码的变量节点信息以及更新后的变量节点信息。
[0087] 第一移位单元22,用于在一个时钟周期内对数据存储单元21存储的Z层变量节点根据第一移位信息进行移位;
[0088] 本发明实施例中移位单元可以是direct、benes或者桶形移位器,由于桶形移位器所需的配置信息简单,对输入端的数据个数没有要求,因此本发明实施例中以第一移位单元采用第一桶形移位器为例进行说明,但是本发明实施例对移位单元的具体形式不作限定,只要能实现本发明实施例中的移位目的即可。
[0089] 对应的,第一桶形移位器数量为Col_Num,其可以在一个时钟内对Z个位宽为BW的变量节点信息进行移位。
[0090] 计算单元23,用于根据第一移位单元22移位后的变量节点信息计算变量节点传递给校验节点的外部信息;
[0091] 校验节点更新单元24,用于根据计算单元23计算的变量节点传递给校验节点的外部信息对Z层校验节点进行更新;
[0092] 下面以802.11n为例对校验节点的更新过程进行说明,设该协议的校验基矩阵为Hb,
[0093] Hb={0,‑1,‑1,‑1,0,0,‑1,‑1,0,‑1,‑1,0,1,0,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,22,0,‑1,‑1,17,‑1,0,0,12,‑1,‑1,‑1,‑1,0,0,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,6,‑1,0,‑
1,10,‑1,‑1,‑1,24,‑1,0,‑1,‑1,‑1,0,0,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,2,‑1,‑1,0,20,‑1,‑
1,‑1,25,0,‑1,‑1,‑1,‑1,‑1,0,0,‑1,‑1,‑1,‑1,‑1,‑1,‑1,23,‑1,‑1,‑1,3,‑1,‑1,‑1,0,‑
1,9,11,‑1,‑1,‑1,‑1,0,0,‑1,‑1,‑1,‑1,‑1,‑1,24,‑1,23,1,17,‑1,3,‑1,10,‑1,‑1,‑1,‑
1,‑1,‑1,‑1,‑1,0,0,‑1,‑1,‑1,‑1,‑1,25,‑1,‑1,‑1,8,‑1,‑1,‑1,7,18,‑1,‑1,0,‑1,‑1,‑
1,‑1,‑1,0,0,‑1,‑1,‑1,‑1,13,24,‑1,‑1,0,‑1,8,‑1,6,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑
1,0,0,‑1,‑1,‑1,7,20,‑1,16,22,10,‑1,‑1,23,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,0,
0,‑1,‑1,11,‑1,‑1,‑1,19,‑1,‑1,‑1,13,‑1,3,17,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,0,0,‑1,
25,‑1,8,‑1,23,18,‑1,14,9,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,0,0,3,‑1,‑1,‑
1,16,‑1,‑1,2,25,5,‑1,‑1,1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,‑1,0};
[0094] 本发明实施例中校验节点更新单元同时更新所有层的24个校验节点。图3是校验节点更新单元的更新过程结构示意图,如图3所示,min4to2模块是四输入三输出模块,即从四个变量节点传递给校验节点的信息中选出最小值和次小值,并将最小值索引输出;min3to2模块是六输入三输出模块,即从三个变量节点传递给校验节点的信息中选出最小值和次小值,并从三个索引值中输出最小值索引;min3to1模块是三输入一输出模块,即从三个变量节点传递给校验节点的信息中选出最小值;min2to2模块是四输入三输出模块,即从两个变量节点传递给校验节点的信息中选出最小值和次小值,并从两个索引值中输出最小值索引;min2to1模块是两输入一输出模块,即从两个变量节点传递给校验节点的信息中选出最小值。data0_pro模块是对第0个校验节点进行更新,data1_pro模块是对第1个校验节点进行更新,依次类推,data23_pro模块是对第24个校验节点进行更新。
[0095] Data0_pro模块至data23_pro模块具体根据上述方法中的校验节点更新公式对校验节点进行更新,本发明实施例在此不再赘述。
[0096] 本发明实施例中校验节点更新单元通过多组多级进行数据比较,确定出最小值和次小值,运算效率高。
[0097] 变量节点更新单元25,用于根据更新后的Z层校验节点同时对Z层变量节点进行更新;
[0098] 具体地,变量节点更新单元由多个加法器组成。
[0099] 第二移位单元26,用于在一个时钟周期内将更新后的Z层变量节点根据第二移位信息进行移位;
[0100] 具体地,第二移位单元26可以通过查找表获取第二移位信息,根据第二移位信息对更新后的变量节点进行移位。
[0101] 进一步地,第二移位单元还将移位后的变量节点存储到数据存储单元中,以更新数据存储单元存储的变量节点信息。
[0102] 同上所述,第二移位单元为第二桶形移位器,第二桶形移位器数量也为Col_Num。
[0103] 目前5GNR协议中Z的最大取值为384,采用的桶形移位器可以支持Z取任意值(Z<=384)。
[0104] 由于不同通信标准中校验矩阵的定义是不同的,本发明实施例中通过设置第一移位单元和第二移位单元对变量节点进行移位,可以使该译码模块适应不同的校验矩阵,从而提高译码模块的适用性、灵活性和生命周期。
[0105] 判决单元27,用于根据第二移位单元26移位后的变量节点进行判决,根据判决结果确定是否停止迭代更新,以便输出译码结果。
[0106] 进一步地,本发明实施例还包括查找表存储单元,查找表存储单元包括矩阵存储子单元和索引存储子单元;
[0107] 矩阵存储子单元,用于存储更新的QC‑LDPC码的校验基矩阵,校验基矩阵为校验矩阵中的非零值节点。
[0108] 具体地,对校验矩阵中的非零值节点进行更新并存储,在后续进行校验节点和变量节点的更新时,可以按照存储的非零值节点的顺序进行更新,节省了更新前的寻址操作,大大降低了网络开销。
[0109] 索引存储单元,用于存储校验基矩阵中的非零值索引。
[0110] 相应的,变量节点更新单元,用于根据索引存储单元存储的非零值索引和更新后的校验节点同时对每层变量节点进行更新。
[0111] 继续以图3为例进行说明,矩阵存储子单元的存储位宽需求是9*24=216bit,索引存储子单元的存储位宽需求是7*24=168bit,考虑到存储位宽一般为2的幂次方,因此本发明实施例将查找表存储单元位宽设置为256bit。
[0112] 802.11n的协议中当QC‑LDPC码的码率为1/2,设迭代次数为10,一次迭代译码需要12个周期,主频为200MHz,则通过上述译码模块进行译码的吞吐量为540Mbps。802.16协议中当QC‑LDPC码的码率为1/2,译码的并行度Z为96,每个时钟周期译码的最大数据流为2304时,通过上述译码模块进行译码的吞吐量为1.92Gbps,因此本发明实施例中译码模块大大提高了QC‑LDPC码的译码吞吐量。
[0113] 本发明实施例根据QC‑LDPC码的校验矩阵及第一移位信息计算Z层变量节点传递给校验节点的外部信息,根据该外部信息对Z层校验节点同时进行更新,然后根据更新后的校验节点同时对Z层变量节点进行更新,并将更新后的变量节点根据第二移位信息进行移位,最后根据移位后的变量节点进行硬判决,根据判决结果确定是否停止迭代更新,以便输出译码结果。由于可以同时对多层校验节点进行更新,并且对每层的所有校验节点同时进行更新,大大提高译码效率,节省了译码时间;同时通过设置第一移位单元和第二移位单元对变量节点进行移位,可以使该译码模块适应不同的校验矩阵,从而提高译码模块的适用性、灵活性和生命周期;进一步地,该译码模块的校验节点更新单元从所述每层变量节点传递给校验节点的信息中确定最小值、次小值和最小值索引;然后根据所述最小值、次小值和最小值索引更新Z层校验节点,可以根据多种译码算法对校验节点进行更新,从而支持多种QC‑LDPC码的译码,提高了硬件单元使用效率,同时该译码模块可以通过软件编程实现应用需求的变化,提高了使用该译码模块的芯片的生命周期;进一步地,索引存储子单元存储校验基矩阵中的非零值索引,在变量节点更新时可以通过存储的非零值索引快速更新指定的变量节点,进一步地提高了译码效率;进一步地,矩阵存储子单元存储更新的校验矩阵中的非零值节点,在后续进行校验节点和变量节点的更新时,可以按照存储的非零值节点的顺序进行更新,节省了更新前的寻址操作,大大降低了网络开销。
[0114] 图4是本发明实施例提供的一种QC‑LDPC码的译码装置结构示意图,如图4所示,该译码装置包括:程序存储模块31,控制模块32和图2所示的译码模块20;
[0115] 其中,程序存储模块31,用于存储待译码的QC‑LDPC码;
[0116] 译码模块20,用于对程序存储模块31存储的QC‑LDPC码进行译码;
[0117] 控制模块32,用于控制程序存储模块31和译码模块20的工作状态及时序。
[0118] 本发明实施例根据QC‑LDPC码的校验矩阵及第一移位信息计算Z层变量节点传递给校验节点的外部信息,根据该外部信息对Z层校验节点同时进行更新,然后根据更新后的校验节点同时对Z层变量节点进行更新,并将更新后的变量节点根据第二移位信息进行移位,最后根据移位后的变量节点进行硬判决,根据判决结果确定是否停止迭代更新,以便输出译码结果。由于可以同时对多层校验节点进行更新,并且对每层的所有校验节点同时进行更新,大大提高译码效率,节省了译码时间;同时通过设置第一移位单元和第二移位单元对变量节点进行移位,可以使该译码模块适应不同的校验矩阵,从而提高译码模块的适用性、灵活性和生命周期;进一步地,该译码模块的校验节点更新单元从所述每层变量节点传递给校验节点的信息中确定最小值、次小值和最小值索引;然后根据所述最小值、次小值和最小值索引更新Z层校验节点,可以根据多种译码算法对校验节点进行更新,从而支持多种QC‑LDPC码的译码,提高了硬件单元使用效率,同时该译码模块可以通过软件编程实现应用需求的变化,提高了使用该译码模块的芯片的生命周期;进一步地,索引存储子单元存储校验基矩阵中的非零值索引,在变量节点更新时可以通过存储的非零值索引快速更新指定的变量节点,进一步地提高了译码效率;进一步地,矩阵存储子单元存储更新的校验矩阵中的非零值节点,在后续进行校验节点和变量节点的更新时,可以按照存储的非零值节点的顺序进行更新,节省了更新前的寻址操作,大大降低了网络开销;进一步地,本发明实施例中程序存储模块存储待译码的QC‑LDPC码,每个时钟周期提取一条指令,数据存储单元的位宽为Z*Col_Num*BW,形成了位宽可伸缩的高并行存储模块,查找表存储单元存储校验基矩阵及非零值索引,这三种存储模式形成高并行度的存储系统,可以使译码装置在一个时钟周期访问多条数据,实现单指令多数据流处理,大大提高了译码效率。
[0119] 图5是本发明实施例提供的一种电子设备结构示意图,下面,参考图5来描述根据本申请实施例的电子设备。
[0120] 如图5所示,电子设备100包括一个或多个处理器101和存储器102。
[0121] 处理器101可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备100中的其他组件以执行期望的功能。
[0122] 存储器102可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器101可以运行所述程序指令,以实现上文所述的本申请的各个实施例的QC‑LDPC码的译码方法以及/或者其他期望的功能。
[0123] 在一个示例中,电子设备100还可以包括:输入装置103和输出装置104,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
[0124] 例如,该输入装置103可以包括摄像装置,用于采集输入图像。此外,该输入设备103还可以包括例如键盘、鼠标等等。
[0125] 该输出装置104可以向外部输出各种信息,包括确定出的前景掩模特征图。该输出设备104可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
[0126] 当然,为了简化,图5中仅示出了该电子设备100中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备100还可以包括任何其他适当的组件。
[0127] 除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请的QC‑LDPC码的译码方法中的步骤。
[0128] 所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
[0129] 此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请的QC‑LDPC码的译码方法中的步骤。
[0130] 所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0131] 以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
[0132] 本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
[0133] 还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。例如,查找表存储单元也可以设置在译码装置中,只要能实现其对应的功能即可。
[0134] 提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
[0135] 为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。