LDPC译码方法与流程

文档序号:15927972发布日期:2018-11-14 01:20阅读:254来源:国知局

本发明属于通信领域,更具体地说涉及一种ldpc译码方法。

背景技术

低密度校验码(lowdensityparitycheckcode,ldpc)码是robertg.gallager在1962年提出的,直到1999年mackay和wilberg重新发现了ldpc码的优秀性能,才引起了编码领域专家和学者们的广泛关注。ldpc码是一种线性分组码,其校验矩阵为稀疏矩阵,采用迭代的译码算法使得ldpc码可以接近香农限的性能。由于准循环结构的ldpc译码器易于并行实现,能提供高吞吐率,因此被多个标准使用,目前,ldpc码的技术已应用于cmmb、dtmb、dvb-s2、dvb-t2、atsc3.0和4g等标准的通信系统中。

现有的ldpc译码器实现主要基于准循环结构的校验矩阵。随着技术演进,也逐步出现双对角线结构甚至是多对角线结构的校验矩阵。当设计ldpc译码器或者译码方法时,所需处理的校验矩阵需兼容准循环和/或多对角线结构时,原有的基于准循环结构设计的ldpc译码器当被用于处理多对角线结构的校验矩阵时就往往需重新设计以满足并行实现需要,设计繁杂、耗时且不灵活。

现有技术中,也有设计ldpc译码需兼容准循环结构和多对角线结构的考虑,当子矩阵为准循环结构时,更新后验信息无明显区别,但是,当子矩阵为多对角线结构时,由于子矩阵列重为大于等于2,更新后验信息会导致同一ram地址中的后验信息依据列重数量相应地更新多次,且后一次更新会覆盖掉前一次更新值,引起性能损失。



技术实现要素:

为了解决上述问题,本发明提出一种高效通用的ldpc译码方法,尤其适用于需兼容处理准循环结构的校验矩阵和/或多对角线结构的校验矩阵。

本发明提供了一种ldpc译码方法,利用校验矩阵进行校验更新,对变量信息更新得到中间变量结果,其特征在于:当所述校验矩阵需兼容准循环矩阵和/或多对角线矩阵时,基于所述校验矩阵的并列度、多对角线的线数以及多对角线最大个数来设计用于存储所述中间变量结果的多对角线信息存储单元,对校验矩阵采用准循环矩阵结构或多对角线矩阵结构进行判断,判定为多对角线矩阵结构时利用所述多对角线信息存储单元进行存储,其中,所述多对角线最大个数表示以一定并行度对所述校验矩阵进行层处理时子矩阵为多对角线结构的最大个数,其中还利用校验矩阵存储单元:用于存储译码器所支持的不同码率下所有校验矩阵信息,可配置支持不同协议标准。

进一步可选地,在本发明所提供的ldpc译码方法中,其中,所述多对角线信息存储单元的大小由以下方式确定:

并行度×(后验信息位宽+变量信息位宽×(k-1))×ndiag,

其中,并行度表示用于处理校验矩阵的子矩阵的大小;后验信息位宽表示为后验信息存储单元所需的预先设定宽度;变量信息位宽表示为变量信息存储单元所需的预先设定宽度;ndiag表示以一定并行度进行层处理时子矩阵为多对角线结构的最大个数;k表示对角线个数。

进一步可选地,在本发明所提供的ldpc译码方法中,当判断用于处理校验矩阵的子矩阵为多对角线结构时,依据所判定出的多对角线结构的对角线个数对子矩阵进行重写;将变量节点更新的上一次迭代得到的后验信息作为输入值更新存储到多对角线信息存储单元。

进一步可选地,在本发明所提供的ldpc译码方法中,校验矩阵中的多个子矩阵存在至少一个多对角线结构时,将校验矩阵相应分解为多个子矩阵用于进行相应的译码更新运算。

进一步可选地,在本发明所提供的ldpc译码方法中,其中,所述译码更新运算包含以下变量节点更新步骤:利用所述多个子矩阵中的第一个单位阵进行变量节点更新,将得到的变量节点结果存储到后验信息存储单元;后续每次更新中,利用所述多个子矩阵中的剩余个单位阵相应分别进行变量节点更新,将对应得到的变量节点结果存储到多对角线信息存储单元。

进一步可选地,在本发明所提供的ldpc译码方法中,所述译码更新运算包含以下后验信息更新步骤:从后验信息存储单元读取与所述第一个单位阵对应得到的变量节点更新结果,进行后验信息更新,将更新后的后验信息存储到后验信息存储单元;后续每次更新中,从多对角线信息存储单元分别读取出与所述剩余个单位阵对应得到的变量节点更新结果,进行后验信息更新,将更新后的后验信息存储到多对角线信息存储单元。

进一步可选地,在本发明所提供的ldpc译码方法中,将多个子矩阵分别译码更新运算所得到的后验信息进行运算,得到最终后验信息结果,用于后续处理。

进一步可选地,在本发明所提供的ldpc译码方法中,支持atsc3.0标准协议,校验矩阵存储模块需存储两种码长和对应码率的信息,码长分为16200和64800两种,对应的码率从2/15到13/15中任意一种均可。

进一步可选地,在本发明所提供的ldpc译码方法中,在atsc3.0的ldpc译码器实现中,采用并行度为360,后验节点信息和变量节点信息均设置为11位来存储,多对角线信息存储ram的大小为71280比特。

本发明的技术效果

根据本发明所提供的ldpc码的译码方法,考虑到了需兼容准循环结构的校验矩阵和/或多对角线结构的校验矩阵,并非现有技术中,完成一次迭代需要更新所有的校验节点和变量节点,这样逐行逐列更新的译码算法不能满足高速率要求且占用了不必要的大存储空间,且后一次更新会覆盖掉前一次更新值,引起性能损失,本发明中通过对准循环矩阵结构或多对角线矩阵结构进行判断,并且增加设置了多对角线信息存储单元来对中间变量结果进行存储,且预先依据多对角线的结构来设计多对角线信息存储单元的大小,避免浪费不必要的存储空间,可减少总的存储空间,实现了兼容准循环和双对角线结构的译码处理,整体减小译码器所需的存储空间,且不会引起性能损失。

附图说明

图1是本发明实施例的ldpc校验矩阵中准循环矩阵结构的子矩阵示意图;

图2是本发明实施例的ldpc校验矩阵中第一种多对角线矩阵结构的子矩阵示意图;

图3是本发明实施例的ldpc译码器结构图;以及

图4是本发明实施例的ldpc校验矩阵中第二种多对角线矩阵结构的子矩阵示意图。

具体实施方式

本发明提出一种高效通用的ldpc译码方法,尤其适用于需兼容处理准循环结构的校验矩阵和/或多对角线结构的校验矩阵。

在阐明发明方案之前,先对现有技术中的ldpc译码方法进行如下介绍,ldpc译码方法采用常见的归一化最小和积算法。

常见的归一化最小和积算法的ldpc译码方法,包含以下步骤:

1.初始化:初始软值信息,

2.校验节点更新:

3.变量节点更新:

4.硬判决:

5.如果满足校验方程dht=0或者当前迭代次数达到最大迭代次数,则迭代结束;否则k加1并重复步骤2-5。

其中,表示第k次迭代中变量节点i传递给校验节点j的信息,表示k次迭代中校验节点j传递给变量节点i的信息。

nj表示所有和校验节点j连接的变量节点集合,nj\i表示去除节点i外的所有和校验节点j连接的变量节点集合;mi表示所有和变量节点i连接的校验节点集合。

为初始软值信息,为第k次迭代后验信息。α为归一化因子。

从上述译码步骤可以看出,完成一次迭代需要更新所有的校验节点和变量节点分别对应于校验矩阵的行遍历和列遍历。然而,现有的应用对系统吞吐率却是要求越来越高,这样采用串行的逐行逐列更新的译码算法不能满足高速率要求,因而,可以采用并行的层译码算法可以提供更高的吞吐率。

然而在采用并行的层译码算法过程中,需进一步考虑到校验矩阵需兼容准循环和/或多对角线结构这样的前提时,当判定子矩阵为如图1中的准循环结构时,可直接更新后验信息;但是,值得注意的是,当判定子矩阵为如图2中的多对角线结构时,由于子矩阵列重为大于等于2,更新后验信息时会导致同一ram地址中的后验信息相应更新列重数量的多次,例如图2中由于为双对角线结构则同一列中更新2次,致使多次更新过程中后一次更新会覆盖掉前一次更新值,引起性能损失。

为了更具有针对性的表述方便,本实施例中利用双对角线结构来进行说明,然而并非限制于此,本发明所提出的技术方案包含针对多对角线结构的方案,也包含例如图4中这样的矩阵结构的方案,也就是说,利用多对角线最大个数去设计存储空间大小,更加能避免不合理的存储空间浪费,该多对角线最大个数表示以一定并行度对校验矩阵进行层处理时子矩阵为多对角线结构的最大个数,即在图4中可以看出,其中若干列的列重为1,有的若干列的列重为2,并非每列列重数量相同,将校验矩阵分解为多个子矩阵进行并行更新运算时,存在有的子矩阵为对角线结构而有的子矩阵为非对角线结构的情况。

本实施例中,准循环结构子矩阵是行重和列重均为1的方阵;双对角线结构是两个不同的准循环结构子矩阵的叠加。

图1给出了本实施例子中准循环结构中子矩阵示意图。图2给出了本实施例子中双对角线结构的子矩阵示图。

定义i为q×q的单位阵,则准循环子矩阵aij可通过i的循环右移得到。定义i(τm)表示将i循环右移τm位,则如下所示的aij=i(2)。

对于校验矩阵包含准循环结构和双对角线结构的子矩阵,其子矩阵可统一定义为

hij=β0i(τ0)+β1i(τ1),其中τ0≠τ1,β0,β1=0或1。(1)

进一步,多对角线结构子矩阵可以表示为:

βk=0或1(2)

现有的层译码算法在归一化和积算法上进行了优化,其处理步骤如下:

1.初始化:其中lch是初始软值信息(3)

2.变量节点更新:

3.校验节点更新:

4.后验信息更新:

5.重复步骤2-4直到完成所有层更新

6.硬判决:

7.如果满足校验方程dht=0或者当前迭代次数达到最大迭代次数,则迭代结束;否则k加1并重复步骤2-6。

上述对现有ldpc译码方案进行了介绍,下面提供本发明的实施例中一种ldpc译码方案。本发明实施例中的ldpc译码器或者ldpc译码方法,能减少译码器的存储空间,避免不必要的存储空间浪费,无论子矩阵hij为准循环还是双对角线结构,都能通过一套通用的译码器结构来实现,无需重新设计译码器,以下结合现有技术重点对如何实现进行阐述。

结合附图3,本发明的ldpc译码器和ldpc译码方法具体实施如下:

本实施例中采用后验信息ram来存储后验信息,采用多对角线信息存储ram存储多对角线处理所需信息,该方法可减少总的存储空间。对该多对角线处理所需信息具体而言,也就是说,在设计多对角线信息存储单元的大小时,基于校验矩阵的并列度、多对角线的线数以及多对角线最大个数来设计。

由于需要考虑到校验矩阵需兼容准循环矩阵和/或多对角线矩阵的情况,对校验矩阵采用准循环矩阵结构或多对角线矩阵结构进行判断:

当判定子矩阵为准循环结构时,直接按照公式(6)更新后验信息;

当判定子矩阵为双对角线结构时,由于子矩阵列重为2,直接按照公式(6)更新后验信息会导致同一ram地址中的后验信息更新两次,且后一次更新会覆盖掉前一次更新值,引起性能损失。通过增加多对角线信息存储ram的方法可以解决该问题,具体过程如下:当子矩阵为双对角线结构时,根据公式(1)重写子矩阵如下:

hij=i(τ0)+i(τ1),其中τ0≠τ1

将公式(4)的输入存储到多对角线信息存储ram。

存储lu所需的空间和层译码时子矩阵为双对角线的个数相关。

因为子矩阵hij为双对角线结构,因此可分解为i(τ0)和i(τ1)两个子矩阵进行相应的更新运算。公式(4)可以分解为:

针对子矩阵i(τ0),变量节点第一次更新:

更新后的存储到后验信息ram,如图3所示变量节点更新后的数据通过选择器存入后验信息ram。

针对子矩阵i(τ1),变量节点第二次更新:

存储到多对角线信息存储ram,存储所需的空间和层译码时子矩阵为双对角线的个数相关。

公式(5)校验节点更新不变。

公式(6)后验信息更新可以分解为:

针对子矩阵i(τ0),后验信息第一次更新时:

从后验信息ram读取按照公式(11)更新后的后验信息存储到后验信息ram。

针对子矩阵i(τ1),后验信息第二次更新时:

从多对角线信息存储ram读取按照公式(12)更新后的后验信息存储到多对角线信息存储ram。当后验信息的位宽超过变量信息位宽时,按照变量信息位宽进行饱和处理,即当超过变量信息位宽所能表示的最大整数时,将赋值为变量信息位宽所能表示的最大整数;当小于变量信息位宽所能表示的最小整数时,将赋值为变量信息位宽所能表示的最小整数。

更新后验信息ram:

从后验信息ram读取多对角线信息存储ram读取和lu,按照公式(13)更新后的后验信息存储到后验信息ram,用于硬判和后续迭代使用。

对后验信息ram的存储空间大小而言,当子矩阵为多对角线结构时,设对角线个数为k,变量节点更新如上述例子所示相应扩展;后验信息更新如上述例子所示相应扩展。更新后验信息ram的公式(13)扩展为:

本发明实施例中,ldpc译码方法还包括利用校验矩阵存储单元:用于存储译码器所支持的不同码率下所有校验矩阵信息,可配置支持不同协议标准。

例如在atsc3.0协议标准中,短码为16200,子矩阵大小为360×360,以并行度为360处理时双对角线结构的最大个数为9。如后验信息和变量节点信息均用11位来存储,则为了解决双对角线冲突的问题,现有方法是分别存储后验信息和变量节点信息,需要的存储空间大小为16200×11×2=356400比特。采用本发明提出的方案,采用后验信息ram和多对角线信息存储ram的方式,仅需16200×11+360×(11+11)×9=249480比特,相比较可知,本发明方案所占存储空间明显减少。

另外,关于校验节点更新后的信息r的ram保存方式与传统处理方法一致,即仅存储符号位、最大值,最大值索引和次大值。

除了上述ldpc译码方法,本发明还提供了一种ldpc译码器,该ldpc译码器可以通用校验矩阵需兼容准循环矩阵和/或多对角线矩阵的情况,具体进行以下介绍。

本发明提出的通用ldpc译码器的结构示意,如图3所示,译码器包含以下模块:

1.主控模块:产生译码器的控制逻辑:包括从校验矩阵存储单元读取校验矩阵信息,更新到子矩阵控制字;控制地址生成器产生相应的地址,输出到校验信息ram和后验信息ram;控制变量节点更新模块、校验节点更新模块和后验信息更新模块的工作;根据子矩阵控制字判断当前处理的子矩阵是否是双对角线结构,如是双对角线结构,更新多对角线信息存储ram。判断译码器是否达到预设的最大迭代次数,控制判决模块输出硬判结果等。

2.校验矩阵存储单元:用于存储译码器所支持的不同码率下的所有校验矩阵信息。根据ldpc校验矩阵属于稀疏矩阵特点,实现时仅需存储包含非0矩阵的信息。在atsc3.0中,码长分为16200和64800两种,对应的码率从2/15到13/15。因此支持atsc3.0的校验矩阵存储模块需存储两种码长和对应码率的信息。为支持不同协议标准,该模块可配置。

3.后验信息ram:用于存储后验信息的ram,本实施例中采用一块ram来实现。

4.多对角线信息存储ram:用于存储处理多对角线所需的信息,前述公式(8)、(10)和(12)计算结果。在atsc3.0的ldpc译码器实现中,采用并行度为360,如后验信息和变量节点信息均用11位来存储,则该存储单元大小为71280比特。

5.校验信息ram:用于存储校验信息的ram,本实施例中采用一块ram来实现。前述公式(5)的计算结果。

6.子矩阵控制字:用于指示当前处理的子矩阵是准循环结构还是双对角线结构。

7.变量节点更新模块:完成前述公式(4)运算。

8.校验节点更新模块:完成前述公式(5)运算。

9.后验信息更新模块:当子矩阵为准循环结构时,完成前述公式(6)运算;当子矩阵为双对角线结构时,完成前述公式(11)(12)(13)运算。

10.地址生成模块:在主控模块控制下,产生存取后验信息ram,多对角线信息存储ram和校验信息ram地址。

11.判决模块:完成前述公式(7)运算,判断硬判结果是否满足校验方程以及硬判结果输出。

上述ldpc译码器结构和实现方法可以兼容准循环矩阵和双对角矩阵并行处理冲突的问题,减小译码器所需的存储空间。

本发明提出的方法使用的多对角线信息存储ram大小为:

并行度×(后验信息位宽+变量信息位宽)×ndiag(14)

其中ndiag表示以一定并行度进行层处理时子矩阵为双对角线结构的最大个数。显然ndiag不会超过检验矩阵行重。该通用译码器结构较现有的译码器以更小的存储空间实现ldpc码的高效译码。

当校验矩阵中的子矩阵存在多对角线结构时,该结构仍然可以复用。

子矩阵hij如下:

其中mi≠mj,对角线个数为k。

则本发明提出的方法使用的多对角线信息存储ram大小为:

并行度×(后验信息位宽+变量信息位宽×(k-1))×ndiag(15)

本发明提出的方法也适用于图4所示的子矩阵结构,即在图4中可以看出,其中若干列的列重为1,有的若干列的列重为2,并非每列列重数量相同,将校验矩阵分解为多个子矩阵进行并行更新运算时,存在有的子矩阵为对角线结构而有的子矩阵为非对角线结构的情况。

本技术领域中的普通技术人员应当认识到,以上的说明书仅是本发明众多实施例中的一种或几种实施方式,而并非用对本发明的限定。任何对于以上所述实施例的均等变化、变型以及等同替代等技术方案,只要符合本发明的实质精神范围,都将落在本发明的权利要求书所保护的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1