CN105337618B - 并行向下兼容的多模ira_ldpc译码器及其译码方法 - Google Patents
并行向下兼容的多模ira_ldpc译码器及其译码方法 Download PDFInfo
- Publication number
- CN105337618B CN105337618B CN201410384058.0A CN201410384058A CN105337618B CN 105337618 B CN105337618 B CN 105337618B CN 201410384058 A CN201410384058 A CN 201410384058A CN 105337618 B CN105337618 B CN 105337618B
- Authority
- CN
- China
- Prior art keywords
- information
- storage unit
- column
- data
- data processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Error Detection And Correction (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种并行向下兼容的多模IRA_LDPC译码器,包括:后验信息存储单元、初始化输入信息单口存储单元、后验信息存储和数据处理单元间的数据切换模块、初始化输入信息存储和数据处理单元间的数据切换模块、数据处理单元、先验信息和数据处理单元之间的数据切换模块、先验信息压缩存储单元、压缩后的先验信息符号位存储单元、读写以及功能模块动作控制的主控单元模块以及三个读存储器;本发明的多模IRA_LDPC译码器能兼容不同的并行度提高数据吞吐率,节约单次迭代译码需要的时间。本发明还公开了一种所述多模IRA_LDPC译码器的译码方法。
Description
技术领域
本发明涉及通信领域,特别是涉及一种能应用于高速无线数字通信、多媒体数字电视、光纤通信和卫星通信等诸多系统并行向下兼容的多模IRA_LDPC译码器。本发明还涉及一种并行向下兼容的多模IRA_LDPC译码方法。
背景技术
LDPC码,又称低密度奇偶校验码。在目前的编码方法中,它能很好地接近香农极限的编码性能;在译码性能方面,错误码字无法检测的概率几乎为零,而且还拥有相对简单的译码算法,具有很高的实用价值。因此LDPC码能够广泛应用于现代通信标准中的各个领域。准循环的低密度奇偶校验码是一种特殊的LDPC码,它的校验矩阵的每一个子矩阵或是全0或是单位矩阵的循环移位。这一特性使得LDPC在ASIC实现时拥有更低的复杂度,可以并行操作来提高吞吐率,也便于LDPC译码的调度。
通信信道的多样化,不同信道环境所需要的纠错能力也不一样,灵活的可变码率或者码长的纠错码技术研究显得迫不及待。现代通信系统的数据量越来越大,为了保证实时性,增加系统的效率,提高数据的吞吐率也是LDPC码译码器研究必不可少的热点之一。
LDPC译码算法主要有和积算法和最小和算法两种。在实现的结构上,LDPC译码主要有两相位数据传递(TPMP)和分层迭代两种。TPMP的结构是在单次迭代过程中先进行校验节点更新,再完成变量节点的更新。分层迭代结构是将校验矩阵的所有行列分为若干层,每更新完一行的信息,接着就更新所有列的信息。传统的TPMP算法或者是分层迭代结构都是建立在校验矩阵具有准循环的特点,并行向下兼容的多模IRA_LDPC译码器详细展示了一种译码顺序重排的译码算法,扩展了LDPC译码器的使用范围,增加了其兼容性。
LDPC译码器提高数据吞吐率的方法有很多,传统的LDPC译码器采用的是全并行或者半并行的方式,而且基本都是研究的单一码率标准。全并行的LDPC码,不能够适用于多标准、码率变化的硬件的结构设计,而且硬件实现随着码长的增加会越来越复杂;分块处理的LDPC译码器,对码率结构的设计有所要求;对于涉及到的多标准和码率变化的LDPC译码器,其硬件结构缺乏灵活性,不能做到并行兼容,吞吐率速度方面有一定的困难和瓶颈。
发明内容
本发明要解决的技术问题是提供一种能兼容不同的并行度提高数据吞吐率,节约单次迭代译码需要的时间的并行向下兼容多模IRA_LDPC译码器。本发明还提供了一种并行向下兼容的多模IRA_LDPC译码方法。
为解决上述技术问题,本发明的并行向下兼容多模IRA_LDPC译码器,包括:
后验信息存储单元QRAM连接后验信息存储和数据处理单元间的数据切换模块QIF,后验信息存储单元QRAM共有2×Z个单口随机存取存储器,深度LQRAM跟码长Lldpc的关系式为Lldpc=Z×LQRAM,后验信息存储单元QRAM位宽由定点量化后验信息得到,Z表示并行度;
初始化输入信息单口存储单元IRAM连接初始化输入信息存储和数据处理单元间的数据切换模块IIF,用于列扫描变量节点的更新,其存储空间位宽和深度都与后验信息存储单元QRAM一致,个数为后验信息存储单元QRAM的一半;
后验信息存储和数据处理单元间的数据切换模块QIF连接数据处理单元CCU,根据主控模块CTL传入的后验信息存储单元QRAM的读写控制信号,实现数据的切换与后验信息存储单元QRAM直接相连;具体的切换功能是根据主控模块CTL传入给后验信息存储单元QRAM的读写控制信号转换为对应实际连接到随机存取存储器RAM上面的控制信号;
后验信息存储和数据处理单元间的数据切换模块QIF连接数据处理单元CCU,根据主控模块CTL传入的后验信息存储单元QRAM的读写控制信号,实现数据的切换连;具体的切换功能是根据主控模块CTL传入给后验信息存储单元QRAM的读写控制信号转换为对应实际连接到随机存取存储器RAM上面的控制信号;
初始化输入信息存储和数据处理单元间的数据切换模块IIF连接数据处理单元CCU,根据主控模块CTL传入的初始化输入信息单口存储单元IRAM的读写控制信号,进行数据切换;具体的切换功能是根据主控模块CTL传入给初始化输入信息单口存储单元IRAM的读写控制信号转换为对应实际连接到随机存取存储器RAM上面的控制信号;
数据处理单元CCU是译码器的核心运算单元,其连接先验信息和数据处理单元之间的数据切换模块RIF,用于变量节点和校验节点的更新计算,包括循环移位寄存器,归一化最小值搜索模块以及数据恢复模块;
先验信息和数据处理单元之间的数据切换模块RIF连接先验信息压缩存储单元RMIN RAM和压缩后的先验信息符号位存储单元RSIGNSELF RAM,根据主控模块CTL传入的先验信息压缩存储单元RMIN RAM和压缩后的先验信息符号位存储单元RSIGNSELF RAM的读写控制信号,进行数据切换;具体的切换功能是根据主控模块CTL传入给先验信息压缩存储单元RMIN RAM的读写控制信号转换为对应实际连接到随机存取存储器RAM上面的控制信号;
先验信息压缩存储单元RMIN RAM用于存储先验信息的最小值、次小值、符号异或值和最小值位置索引压缩值,先验信息压缩存储单元的个数有Z个,深度LRRAM与不同码率校验矩阵的行数RL的关系式为RL=Z×LRRAM,其位宽由归一化最小值算法得到的最小值、次小值、符号异或位和索引值的累加和得到;
压缩后的先验信息符号位存储单元RSIGNSELF RAM,压缩后的先验信息符号位存储单元RSIGNSELF RAM位存储器位宽为并行度Z,深度为非零子块的个数SUB_MAX_CNT,采用双口随机存取存储器能解决自符号位在读写操作过程中的读写冲突;
读写以及功能模块动作控制的主控单元模块CTL,分别控制初始化输入信息单口存储单元IRAM、数据处理单元CCU和先验信息压缩存储单元RMIN RAM的整体读写时序,即分为初始化控制,译码迭代控制以及译码输出控制,其连接第一~第三只读存储器;
第一只读存储器HROM1,用于存储行扫描校验节点更新时的每一个非零子矩阵的行块号、列块号以及偏移量,其存储深度是非零子块的个数SUB_MAX_CNT,存储器的宽度为行扫描时的行块号、列块号和偏移量位宽累加和;
第二只读存储器HROM2,用于存储列扫描变量节点更新时的每一个非零子矩阵的列块号、行块号以及偏移量,其存储深度是非零之块的个数SUB_MAX_CNT,存储器的宽度为列扫描时的列块号、行块号和偏移量位宽累加和;
第三只读存储器HROM3,用于存储所有码率对应每个子块外信息数据压缩后自身符号位列寻址的地址以及此非零子块对应每行块的偏移地址,其存储深度是非零子块的个数SUB_MAX_CNT,存储器的宽度为列扫描时的子块在行扫描的行偏移地址及列寻址地址。
本发明提供一种上述译码器进行IRA_LDPC译码的方法,包括:
步骤1)初始化,根据并行度Z调序存储输入信息,用于后续变量节点的更新,即对输入信息进行QC行列变换和矩阵拆分;
在初始化的过程中,根据并行度Z来调序存储输入的信息In,用于后面的变量节点的更新。IRA_LDPC码的构造特点决定了,对IRA_LDPC码进行QC变换处理(QC变换指的是对校验矩阵做行列变换,使IRA_LDPC的校验矩阵变换后有准循环特性)后,得到的准循环特性矩阵维度为P。可以通过拆分变换将P×P的原矩阵拆成维度较低的不含有双对角线的子矩阵,拆分因子S和并行度Z具有如下关系:Z*S=P
对P×P矩阵进行拆分变换时,拆分因子S的选取非常重要,选择合适的S可以使拆分后多对角线矩阵的个数降到最小或者完全消除。
步骤2)行扫描,校验节点的更新,行扫描遍历所有校验矩阵的每行的所有的非零元,得到每行行重个数的变量节点对应的后验信息与校验节点对应的先验信息差值,用于归一化最小值算法的处理,最终完成校验节点的更新;在行扫描的同时,根据取出的上次迭代的后验信息,对其截取最高位即符号位,通过异或逻辑能够实时完成硬判决,实现提前迭代判断;
实时通过后验信息确定校验矩阵的完全更新与否,判断其能否满足提前迭代条件。迭代中行扫描运算采用外信息来更新先验信息。行扫描的运算可采用公式为:
公式中指的是上一次迭代的后验信息,指的是上次迭代获得的先验信息,指的是本次迭代获得的外信息,此外信息通过归一化最小和算法能够实现本次迭代先验信息的更新。在第一次迭代的时候,先验信息的值与输入信息一致,外信息初始化为0值。每一次行扫描迭代的过程中都会有后验信息的读取,可以截取后验信息的最高位,通过异或取值来完成硬判决,进而达到提前迭代判断的目的。
步骤3)列扫描,变量节点Qnm的更新;
列扫描遍历所有校验矩阵的每列的所有的非零元,得到每列列重个数的先验信息的累加和值,与输入信息相加,最终完成后验信息的更新;
迭代中列扫描运算采用输入信息与先验信息来更新后验信息。列扫描的运算可采用公式为:
公式中In指的是译码器输入信息,指的是本次迭代获得的先验信息更新值,指的是本次迭代获得的后验信息。后验信息的更新需要对应本次迭代获得的每一列非零子块对应的外信息更新值的累加和加上译码器的输入信息。
步骤4)迭代次数加1,重复步骤2)和3),直至达到最大迭代次数。增加迭代次数,能提高性能,但降低了译码的吞吐率,故需要根据系统对译码性能和译码吞吐率的要求折中选择最大迭代次数。
步骤5)译码结果进行调序译码输出,即在译码结束时对正确的译码结果进行与步骤1)对应反变换。
其中,步骤1)初始化将输入信息存储(即与初始化存入QRAM的信息方式一致)为对应于相应并行度下的准循环矩阵。
本发明的多模IRA_LDPC译码器利用部分并行的系统结构,采用时分复用的方式实现运算逻辑单元中行扫描更新和列扫描更新,能够补充前面所述的各种LDPC译码器的不足。众所周知,在通常的LDPC应用系统中,减少单次迭代的译码时间对于LDPC译码器有很好地研究价值和意义。在保证性能的基础上,灵活的设计提前迭代的时序,能够节约单次迭代译码需要的时间;巧妙的对只读存储器进行初始化,在并行调度过程中对非零子块的处理方便简单,同时也有助于LDPC译码器系统对于其它码率的兼容;通过参数化的设计思想,灵活配置码长和码率,能够兼容不同的并行度,满足多标准应用中的吞吐率的设计需求,降低了译码器芯片设计面积的复杂度;采用Pipeline的设计方案,保证译码模块的充分利用,缩短了译码时间,提高了硬件使用效率。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1是本发明一种并行向下兼容的多模IRA_LDPC译码器的系统结构示意图;
图2是本发明一种并行向下兼容的多模IRA_LDPC译码方法的流程图;
图3是本发明一种并行向下兼容的多模IRA_LDPC译码器的整体时序图;
图4是本发明一种并行向下兼容的多模IRA_LDPC译码器的整体系统状态机;
图5是本发明矩阵拆分一实施例,以9×9的子矩阵为例;
图6是图5所述矩阵行变换后的子矩阵;
图7是图6所述矩阵列变换后的子矩阵;
图8是本发明中LDPC码校验矩阵的QC变换和矩阵拆分变换的输入信息存储示意图;
图9是本发明中QC-LDPC码的校验矩阵示意图;
图10是本发明中行扫描更新的流程处理示意图;
图11是本发明中列扫描更新的流程处理示意图;
图12是本发明中提前迭代更新的流程处理示意图;
图13是本发明中循环移位器的工作原理示意图。
具体实施方式
如图1所示,本发明的并行向下兼容多模IRA_LDPC译码器一实施例,包括:
后验信息存储单元QRAM连接后验信息存储和数据处理单元间的数据切换模块QIF,后验信息存储单元QRAM共有2×Z个单口随机存取存储器,深度LQRAM跟码长Lldpc的关系式为Lldpc=Z×LQRAM,后验信息存储单元QRAM位宽由定点量化后验信息得到,Z表示并行度;
初始化输入信息单口存储单元IRAM连接初始化输入信息存储和数据处理单元间的数据切换模块IIF,用于列扫描变量节点的更新,其存储空间位宽和深度都与后验信息存储单元QRAM一致,个数为后验信息存储单元QRAM的一半;
后验信息存储和数据处理单元间的数据切换模块QIF连接数据处理单元CCU,根据主控模块CTL传入的后验信息存储单元QRAM的读写控制信号,实现数据的切换与后验信息存储单元QRAM直接相连;具体的切换功能是根据主控模块CTL传入给后验信息存储单元QRAM的读写控制信号转换为对应实际连接到随机存取存储器RAM上面的控制信号;
初始化输入信息存储和数据处理单元间的数据切换模块IIF连接数据处理单元CCU,根据主控模块CTL传入的初始化输入信息单口存储单元IRAM的读写控制信号,进行数据切换;具体的切换功能是根据主控模块CTL传入给初始化输入信息单口存储单元IRAM的读写控制信号转换为对应实际连接到随机存取存储器RAM上面的控制信号;
数据处理单元CCU是译码器的核心运算单元,其连接先验信息和数据处理单元之间的数据切换模块RIF,用于变量节点和校验节点的更新计算,包括循环移位寄存器,归一化最小值搜索模块以及数据恢复模块;
先验信息和数据处理单元之间的数据切换模块RIF连接先验信息压缩存储单元RMIN RAM和压缩后的先验信息符号位存储单元RSIGNSELF RAM,根据主控模块CTL传入的先验信息压缩存储单元RMIN RAM和压缩后的先验信息符号位存储单元RSIGNSELF RAM的读写控制信号,进行数据切换;具体的切换功能是根据主控模块CTL传入给先验信息压缩存储单元RMIN RAM的读写控制信号转换为对应实际连接到随机存取存储器RAM上面的控制信号;
先验信息压缩存储单元RMIN RAM用于存储先验信息的最小值、次小值、符号异或值和最小值位置索引压缩值,先验信息压缩存储单元的个数有Z个,深度LRRAM与不同码率校验矩阵的行数RL的关系式为RL=Z×LRRAM,其位宽由归一化最小值算法得到的最小值、次小值、符号异或位和索引值的累加和得到;
压缩后的先验信息符号位存储单元RSIGNSELF RAM,压缩后的先验信息符号位存储单元RSIGNSELF RAM位存储器位宽为并行度Z,深度为非零子块的个数SUB_MAX_CNT,采用双口随机存取存储器能解决自符号位在读写操作过程中的读写冲突;
读写以及功能模块动作控制的主控单元模块CTL,分别控制初始化输入信息单口存储单元IRAM、数据处理单元CCU和先验信息压缩存储单元RMIN RAM的整体读写时序,即分为初始化控制,译码迭代控制以及译码输出控制,其连接第一~第三只读存储器;
第一只读存储器HROM1,用于存储行扫描校验节点更新时的每一个非零子矩阵的行块号、列块号以及偏移量,其存储深度是非零子块的个数SUB_MAX_CNT,存储器的宽度为行扫描时的行块号、列块号和偏移量位宽累加和;
第二只读存储器HROM2,用于存储列扫描变量节点更新时的每一个非零子矩阵的列块号、行块号以及偏移量,其存储深度是非零之块的个数SUB_MAX_CNT,存储器的宽度为列扫描时的列块号、行块号和偏移量位宽累加和;
第三只读存储器HROM3,用于存储所有码率对应每个子块外信息数据压缩后自身符号位列寻址的地址以及此非零子块对应每行块的偏移地址,其存储深度是非零子块的个数SUB_MAX_CNT,存储器的宽度为列扫描时的子块在行扫描的行偏移地址及列寻址地址。
如图2所示,本发明得到基于RS-TPMP调度多标准且并行向下兼容的LDPC译码方法的操作步骤按照如下方式进行:
步骤1)初始化,设系统的并行度为Z。对于系统而言,并行度的改变将会影响到先验信息和后验信息的存储方式。在初始化的过程中,根据并行度来调序存储输入的信息In,用于后面的变量节点的更新。在对IRA_LDPC码进行QC变换的过程中,IRA_LDPC码的构造特点决定了,得到的QC_LDPC码具有的准循环特性的维度为P。每个P×P子矩阵都是零矩阵或者由循环移位矩阵构成,其中也有一些块包含有多对角线矩阵。我们可以通过拆分变换将P×P的原矩阵拆成维度较低的不含有双对角线的子矩阵,拆分因子和并行度具有如下关系:
Z×S=P
对P×P矩阵进行拆分变换时,拆分因子S的选取非常重要,选择合适的S可以使拆分后多对角线矩阵的个数降到最小或者完全消除。在最终硬件实现时,为了融合各种码长和码率,并不能满足所有的码长和码率都取最优S值,而是应该综合考虑,选取一个适当的值,使得硬件资源的使用能够得到折衷,从总体上也能降低多对角线矩阵个数。
QC行列变换和拆分因子的不同决定了存入QRAM的数据方式不同,初始化存入QRAM的值的数据也相应变换,与此同时,存入只读存储器的行扫描、列扫描的索引值以及偏移量都需要做相应更新。我们只需要通过对LDPC性能仿真的C平台上设置打印参数,然后自动生成匹配即可实现。
输入缓冲单元QRAM每接收完一个完整的帧长度数据后通知主控制器数据已经准备好,等待译码。当输入缓冲单元准备好后,译码开始,内部状态机根据译码模式控制整个译码器数据流向,主控制器读取行或列扫描控制信号并发送给处理单元。多个并行处理单元同时接收来自主控制器发出的控制流。主控制器根据LDPC码校验矩阵中子矩阵的大小有选择地屏蔽掉部分处理单元,被屏蔽的处理单元不执行译码处理。
步骤2)行扫描,校验节点Rmn的更新。
本次迭代的行扫描更新运算采用前一次垂直更新得到的后验信息和前一次更新得到的先验信息。在初次迭代时,变量信息的值与输入信息的值一致,校验信息的值初始化为0值。其公式为:
行扫描遍历校验矩阵的每行的所有的非零元,得到每行行重个数的变量节点对应的后验信息与校验节点对应的先验信息差值,用于归一化最小值算法的处理,最终完成校验节点的更新。
在行扫描的同时,根据本次迭代取出的后验信息,可以对上次迭代的后验信息截取最高位即符号位,通过异或逻辑能够实时完成硬判决,实现提前迭代判断,节约单次迭代需要的译码时间。
步骤3)列扫描,变量节点Qnm的更新。
变量节点的更新是根据输入信息与本次迭代过程中完成行扫描得到的校验节点对应的先验信息的更新值与输入信息得到。其公式为:
列扫描遍历校验矩阵的每列的所有的非零元,得到每列列重个数的先验信息的累加和值,与输入信息相加,最终完成后验信息的更新。
在列扫描时,由于先验信息的自符号存储地址相对行扫描而言寻址地址并不一样,所以需要HROM3来指示列扫描的地址,由主控制器来控制获取HROM3的值。
步骤4)迭代次数加1,重复步骤2和3,直至达到最大迭代次数。
对于LDPC译码器来说,需要多次迭代不断更新校验节点和变量节点才能得到正确的译码结果,降低误码率。设计中通过最大迭代参数来控制迭代的最多次数,在保证性能的基础上,避免过长时间的译码或者死循环,提高吞吐率。
步骤5)译码结果进行调序译码输出。
当译码结束以后,需要对正确的译码结果输出。由于在输入LDPC码信息存储时,对校验矩阵进行了QC变换和拆分变换处理,对应的在译码结束时,需要将译码输出时做对应输入的反变换。这里反变换的实现方案是通过变换QRAM的地址来实现的。
根据图2描绘的整个系统的操作流程,可以看出LDPC译码器可以粗略划分为三个部分,即初始化、译码迭代和译码输出。为了提高性能,减少LDPC译码器的译码时间,LDPC译码器采用Pipeline的设计方案。可以得到图3的LDPC译码器的整体时序图。
结合图3,将第1帧和第3帧等统称为奇帧,第2帧和第4帧等统称为偶帧。
第1帧和第3帧两帧复用ODD_QRAM,第1帧的硬判输出结束先于第3帧的初始化输入开始这样保证避免读写冲突
第2帧和第4帧两帧复用EVEN_QRAM,第2帧的硬判输出结束先于第4帧的初始化输入开始,这样保证避免读写冲突。
每一帧的译码由初始化、译码迭代以及译码输出三个部分构成。可以看出奇帧共用一块ODD_QRAM,偶帧共用一块EVEN_QRAM,因而QRAM需要两块RAM存储分别存储奇帧和偶帧的数据,也解释了前面QRAM是IRAM两倍存储量的原因。对于奇帧和偶帧之间,它们可以有交叠部分,如第2帧的初始化可以在第一帧的译码迭代和译码输出工作的同时进行。奇帧之间没有交叠部分,比如第1帧的硬判决输出结束先于第3帧的初始化输入开始,偶帧之间也得满足同样的设计要求,这样能够避免QRAM的读写冲突。针对如此的Pipeline设计,LDPC译码器需要提供一个状态,来指示LDPC译码器工作在什么样的状态,在何种情况下可以对LDPC进行初始化操作。对此,设计了一个如图4所示的状态来解决这个问题。P_IDLE表示的是LDPC译码器处于空闲状态,外部可以连续输入两帧需要等待译码的数据;P_ONE_WK表示的是LDPC译码器有一个QRAM处于工作状态,此时外部只能输入一帧需要等待译码的数据;P_TWO_WK表示的是LDPC译码器两个QRAM都处于工作状态,此时外部不能够输入译码数据。图中的触发信号INIT_END是初始化结束信号,HD_END是硬判决结束信号。初始化结束意味着其中一块QRAM已经有有效的数据,需要等待译码迭代和译码输出模块对其译码,硬判决结束意味着某一块QRAM中数据已经译码完毕,此QRAM中的数据已经译码完毕,可以输入下一组数据对其重新初始化。
前面基本操作步骤中已经说明QC列变换和拆分因子的不同决定了存入QRAM的数据方式不同。根据IRA-LDPC的构造特点,经过QC变换之后的校验矩阵由P×P块组成,每个P×P子矩阵都是零矩阵或者单位矩阵或者由循环移位矩阵构成,其中也有一些块包含有多对角线矩阵,进行拆分变换,一方面是减少双对角线个数,另一方面也是为了降低并行度,来减少硬件资源的损耗。故进一步对P×P块进行处理,使之尽量不含有双对角线。下面将采用一种变换方式,可以将原矩阵拆成维度较低的不含有双对角线的子矩阵,以下称这种变换方式为拆分变换,以9×9矩阵为例,来说明矩阵拆分变换过程以及其特点。
如图5可见9×9的矩阵,它是由两个循环移位矩阵重叠而成,偏移量分别为2和6。选择拆分因子S=3,则将原9×9矩阵拆成9个3×3的子矩阵。
拆分公式:其中,S表示拆分因子,Ps表示拆分之后子矩阵维度。当拆分因子S=3时,Ps=3,拆分公式变为:拆分步骤如下:
(1)行变换。按照拆分公式进行行变换,i表示当前行号,根据公式计算可以得到变换之后的行号σ(i),计算结果如表1所示。也即是把第0行保持不变,第1行移到第3行,第2行移到第6行…依次类推。行变换之后的矩阵如图6所示。
表1
(2)列变换。与行变换类似,此时i表示列号,也就是依照变换规则,将第i列变换到第σ(i)列,同样依照表1进行。列变换后的矩阵如图7所示。
由图7可以看出,经过行列变换后,原来的9×9矩阵已经变成了9个3×3子矩阵,并且子矩阵不含有双对角线。
对应于上述的拆分变换,对初始化输入存入QRAM的存储数据需要相应存储。由于在拆分变换之前,需要对IRA-LDPC码的校验矩阵做QC变换。我们通过相对简单的实例对拆分变换的初始化输入存储进行分析。不妨设QC变换后的IRA-LDPC码得到的P×P子矩阵的准循环特性P为24,拆分因子S等于4,码长为240,码率为1/2,q值为5(q值由码长和码率决定,将q值列出来只是为了方便图形说明,实际参数化中并不需要),则QC变换后对应的QRAM的存储方式如图8上半部所示。那么在拆分变换以后,对应的QRAM的存储方式如图8下半部所示。
对于任何一种IRA-LDPC码,有着固定的码长、码率。从图9中可以看出,QC变换后的准循环子矩阵的维度为P值,也可以通过拆分因子的S的设置来减少多对角线矩阵的个数。由于拆分因子S和维度P的选取决定了并行度Z,通过对Z的灵活设置就能够达到输入数据存储并行向下兼容的效果。为了保证译码器具有通用性,我们还需要对数据处理单元等模块做并行向下兼容的处理,后面的介绍相应模块中有所说明。
参照图9,以一个4×7的QC-LDPC矩阵为例,说明译码步骤2)和步骤3)。LDPC译码器本身实际操作的H矩阵相对复杂,行和列的数目远大于此,所述奇偶校验矩阵存储在片上存储器中,存储内容为非零子矩阵在奇偶校验矩阵中的位置和所有子矩阵的行寻址以及列寻址的索引,通过主控制读取所述片上存储器中的数据,为译码操作提供有效的数据。对于不同的码率和码长,仅仅需要更新存储器中的数据,其它的逻辑阵列、运算单元和数据切换模块只需要通过简单的开关控制即可实现多码率的融合,从而使得解码器具有更高的灵活性、可配置性,为LDPC译码器的兼容提供了依据。基于LDPC码的检验矩阵,校验节点和变量节点分别对应奇偶校验矩阵中的行C0~C4和列V0~V6。图中的每个方块是Z×Z的单位阵的循环右移,方块中的数字是该非零循环子矩阵的偏移量。方框中有一个数字,用虚线蓝色框圈出的原框中的2,表示的是一个度数为1,偏移量为2的非零矩阵。用红色框圈出的方框中有两个数字,框中的{1,4},表示的是一个双对角阵,即偏移量分别是1和4的非零循环矩阵。
针对图9中校验矩阵,可以分别得到图10、图11以及图12的行扫描处理、列扫描处理和提前迭代的时序分布图。图中对单次迭代的行更新和列更新流程有了基本的示意,下面对行序扫描更新、列序扫描更新以及提前迭代进行具体的描述。
在图10中可以看出,行更新扫描分为四级流水线数据处理通路。第一级为QRAM的依次读取和RRAM的一次性读取操作,读取操作按照并行的方式操作;第二级为QRAM的循环移位操作和RRAM的数据恢复操作,与此同时,将循环移位得到的QRAM值和RRAM数据恢复得到的值相减处理,其中循环移位的偏移量来源于HROM1,主控制器从HROM1中读取该行块对应的非零子块矩阵的偏移量并传送给循环移位寄存器,该偏移量与当前所处理的非零子矩阵相对应;第三级通过归一化最小和算法将QRAM和RRAM的差值进行串行搜索,得到更新的先验信息,归一化最小和算法得到行块对应的并行Z路的集合(最小绝对值、次小绝对值、异或符号、最小绝对值索引以及先验信息的自符号信息);第四级即将更新的先验信息存入到RRAM中,主控制结束行更新扫描译码过程。
由图11示意得到,列更新扫描也分为四级流水线数据处理通路。第一级为RRAM的读取操作,读取操作按照并行组的方式操作;第二级为RRAM的循环移位操作,其中循环移位的偏移量来源于HROM2,主控制器从HROM2中读取该列块对应的非零子块矩阵的偏移量并传送给循环移位寄存器,该偏移量与当前所处理的非零子矩阵相对应;第三级为将RRAM循环移位后的结果进行数据恢复操作,与此同时,在每一列恢复的第一个列子块的同时,需要将此列对应的IRAM的值并行读出,数据恢复单元采用的是上次迭代得到的归一化最小和算法的最小绝对值、次小绝对值、异或符号、最小绝对值索引以及先验信息的自符号信息,在此级流水线的操作过程中的自符号的寻址需要依赖于HROM3提供的索引值和偏移量;第四级是将恢复出来的RRAM的值与读出的IRAM的值累加求和,并在每列最后的一次累加过程中将得到的后验信息更新值写入到QRAM中,主控制结束列更新扫描译码过程。
根据图12所示,提前迭代处理分为三级流水线数据处理通路。第一级为QRAM的依次读取,读取操作按照并行组的方式操作;第二级为QRAM的循环移位操作;第三级将循环移位后的QRAM的值进行截位操作,再异或取值,进行硬判决的操作,根据硬判决的结果,主控判断是否达到提前迭代要求。由于提前迭代的处理流水线操作与行更新扫描的前两级操作一样,因而在设计的过程中可以将提前迭代的操作与行更新扫描合并,减少单次迭代需要的译码时间。
数据恢复阵列并行度为Z,在本次迭代的行更新扫描的过程中,需要对来自上一次迭代得到的RRAM归一化最小和信息进行数据恢复操作,此次恢复的结果用于与读出的QRAM的值做减法处理;在本次迭代的列更新扫描过程中,需要对本次迭代过程中行扫描更新得到的RRAM归一化最小和信息进行数据恢复,此次恢复的结果用于后续阶段的数据累加和操作。在CCU数据处理单元中,设计一个维数可配置的数据恢复阵列,该数据恢复阵列由并行度Z和最大维数Zmax定义。数据恢复阵列包含有Zmax个数据恢复单元,每个数据恢复单元能实现与之相对应行的数据恢复,当并行度为Z的时候,只需要用到数据恢复阵列的Z列即可。通过对并行度Z的设置,该维数可配置的数据恢复阵列能够支持多码率,变码长的LDPC译码器。
在CCU数据处理单元中,本发明设计了一个维数可配置循环移位寄存器,能够支持多码率,变码长的LDPC译码器。循环移位器由桶型移位器构成。设循环移位寄存器由循环移位值f,由并行度Z和最大维数Zmax定义。当循环移位器的最大维数为360时,其工作的原理示意图如图13所示。此LDPC译码器通过时分复用的方式,能够灵活的控制循环移位器,保证循环移位器在行更新扫描和列更新扫描的过程中由同一个循环移位器模块来完成。
一次迭代的行或列扫描完成后将更新的先验信息和后验信息存储在相应的RAM中,用于下一次迭代。如此循环多次迭代,直到译码结束进入输出状态,由译码输出模块调序输出译码数据,在这里译码输出调序模块与前面的译码输入调序模块相对应,即做输入调序的反变换,需要注意的是只需要输出变量节点解码得到的信息位,校验位不用输出。译码输出完成后进入下一次译码前的状态,等待下一次译码。
在译码迭代过程处理校验节点更新时,采用的是运算复杂度低,译码性能损失较小的归一化最小和算法。该算法进行最小和求值得到最小值、次小值、最小值索引及异或符号信息,可以用压缩存储的方案来解决,能够很大程度上节省存储容量,有效减少硬件资源的使用。
在译码迭代的过程中,对应于不同标准、不同码率,采用上述流水线设计的思想都能够很好地实现LDPC译码。码率的差异,主要体现在HROM1、HROM2和HROM3里面存储的偏移地址以及行列块号不同,我们只需要通过访问ROM的不同偏移地址的内容即可实现多码率的融合。这些ROM内部存入的信息可以在LDPC性能仿真的C平台上设置打印参数,然后自动生成匹配即可。
在上述的实施方案中,采用本发明提供的硬件电路、专用改进的RS_TPMP算法,有效降低了平均迭代的次数,提高了系统的工作效率;灵活的借助参数化的设计思想,能够很好地融合不同标准、不同码率的IRA_LDPC码,增强了系统的兼容性;采用Pipeline的设计思路,提高了系统的吞吐率,减少译码器的平均译码时间。
以上通过具体实施方式和实施例对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
Claims (3)
1.一种并行向下兼容的多模IRA_LDPC译码器,其特征是,包括:
后验信息存储单元连接后验信息存储和数据处理单元间的数据切换模块,后验信息存储单元共有2×Z个单口随机存取存储器,深度LQRAM跟码长Lldpc的关系式为Lldpc=Z×LQRAM,后验信息存储单元位宽由定点量化后验信息得到,Z表示并行度;
初始化输入信息单口存储单元连接初始化输入信息存储和数据处理单元间的数据切换模块,用于列扫描变量节点的更新,其存储空间位宽和深度都与后验信息存储单元一致,个数为后验信息存储单元的一半;
后验信息存储和数据处理单元间的数据切换模块连接数据处理单元,根据主控模块传入的后验信息存储单元的读写控制信号,实现数据的切换;
初始化输入信息存储和数据处理单元间的数据切换模块连接数据处理单元,根据主控模块传入的初始化输入信息单口存储单元的读写控制信号,进行数据切换;
数据处理单元连接先验信息和数据处理单元之间的数据切换模块,用于变量节点和校验节点的更新计算;
先验信息和数据处理单元之间的数据切换模块连接先验信息压缩存储单元和压缩后的先验信息符号位存储单元,根据主控模块传入的先验信息压缩存储单元和压缩后的先验信息符号位存储单元的读写控制信号,进行数据切换;先验信息压缩存储单元用于存储先验信息的最小值、次小值、符号异或值和最小值位置索引压缩值,先验信息压缩存储单元的个数有Z个,深度LRRAM与不同码率校验矩阵的行数RL的关系式为RL=Z×LRRAM,其位宽由归一化最小值算法得到的最小值、次小值、符号异或位和索引值的累加和得到;
压缩后的先验信息符号位存储单元,压缩后的先验信息符号位存储单元位存储器位宽为并行度Z,深度为非零子块的个数SUB_MAX_CNT,采用双口随机存取存储器;
读写以及功能模块动作控制的主控单元模块,分别控制初始化输入信息单口存储单元、数据处理单元和先验信息压缩存储单元的整体读写时序,即分为初始化控制,译码迭代控制以及译码输出控制,其连接第一~第三只读存储器;
第一只读存储器,用于存储行扫描校验节点更新时的每一个非零子矩阵的行块号、列块号以及偏移量,其存储深度是非零子块的个数SUB_MAX_CNT,存储器的宽度为行扫描时的行块号、列块号和偏移量位宽累加和;
第二只读存储器,用于存储列扫描变量节点更新时的每一个非零子矩阵的列块号、行块号以及偏移量,其存储深度是非零之块的个数SUB_MAX_CNT,存储器的宽度为列扫描时的列块号、行块号和偏移量位宽累加和;
第三只读存储器,用于存储所有码率对应每个子块外信息数据压缩后自身符号位列寻址的地址以及此非零子块对应每行块的偏移地址,其存储深度是非零子块的个数SUB_MAX_CNT,存储器的宽度为列扫描时的子块在行扫描的行偏移地址及列寻址地址。
2.一种利用权利要求1所述译码器的IRA_LDPC译码方法,其特征是,包括:
步骤1)初始化,根据并行度Z调序存储输入信息,用于后续变量节点的更新,即对输入信息进行QC行列变换和矩阵拆分;
步骤2)行扫描,校验节点Rmn的更新;
行扫描遍历所有校验矩阵的每行的所有的非零元,得到每行行重个数的变量节点对应的后验信息与校验节点对应的先验信息差值,用于归一化最小值算法的处理,最终完成校验节点的更新;
在行扫描的同时,根据取出的上次迭代的后验信息,对其截取最高位即符号位,通过异或逻辑能够实时完成硬判决,实现提前迭代判断;
步骤3)列扫描,变量节点Qnm的更新;
列扫描遍历所有校验矩阵的每列的所有的非零元,得到每列列重个数的先验信息的累加和值,与输入信息相加,最终完成后验信息的更新;
步骤4)迭代次数加1,重复步骤2)和3),直至达到最大迭代次数;
步骤5)译码结果进行调序译码输出,即在译码结束时对正确的译码结果进行与步骤1)对应反变换。
3.如权利要求2所述的IRA_LDPC译码方法,其特征是:步骤1)初始化将输入信息存储为对应于相应并行度下的准循环矩阵。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410384058.0A CN105337618B (zh) | 2014-08-06 | 2014-08-06 | 并行向下兼容的多模ira_ldpc译码器及其译码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410384058.0A CN105337618B (zh) | 2014-08-06 | 2014-08-06 | 并行向下兼容的多模ira_ldpc译码器及其译码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105337618A CN105337618A (zh) | 2016-02-17 |
CN105337618B true CN105337618B (zh) | 2018-11-20 |
Family
ID=55287956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410384058.0A Active CN105337618B (zh) | 2014-08-06 | 2014-08-06 | 并行向下兼容的多模ira_ldpc译码器及其译码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105337618B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108809327B (zh) * | 2017-05-05 | 2022-01-28 | 上海数字电视国家工程研究中心有限公司 | Ldpc译码方法 |
CN109245775B (zh) * | 2017-07-10 | 2022-08-09 | 深圳市中兴微电子技术有限公司 | 一种译码器及其实现译码的方法 |
CN111224673B (zh) | 2018-11-26 | 2024-10-11 | 中兴通讯股份有限公司 | 译码方法、装置及译码器 |
CN110098895B (zh) * | 2019-04-11 | 2020-10-23 | 中山大学 | 基于变量节点动态分块更新的ldpc码译码方法 |
CN113746486B (zh) * | 2021-09-15 | 2022-09-02 | 北京中科胜芯科技有限公司 | 一种针对fpga配置码流并行流水线式解压缩装置 |
CN114157308A (zh) * | 2021-12-07 | 2022-03-08 | 大唐联诚信息系统技术有限公司 | 一种应用于半并行ldpc译码器的译码方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101047387A (zh) * | 2007-03-23 | 2007-10-03 | 北京大学 | 一种多码率兼容ldpc码的构造方法及其译码器 |
CN101604975A (zh) * | 2009-07-08 | 2009-12-16 | 复旦大学 | 一种低功耗多模qc-ldpc码解码器及其工作方法 |
CN102437857A (zh) * | 2011-12-12 | 2012-05-02 | 华中科技大学 | 一种ira-ldpc码的构造方法及其编码器 |
CN103501210A (zh) * | 2013-09-30 | 2014-01-08 | 复旦大学 | 一种高性能多标准fec译码器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200926612A (en) * | 2007-12-07 | 2009-06-16 | Univ Nat Chiao Tung | Multi-mode parallelism data exchange method and its device |
-
2014
- 2014-08-06 CN CN201410384058.0A patent/CN105337618B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101047387A (zh) * | 2007-03-23 | 2007-10-03 | 北京大学 | 一种多码率兼容ldpc码的构造方法及其译码器 |
CN101604975A (zh) * | 2009-07-08 | 2009-12-16 | 复旦大学 | 一种低功耗多模qc-ldpc码解码器及其工作方法 |
CN102437857A (zh) * | 2011-12-12 | 2012-05-02 | 华中科技大学 | 一种ira-ldpc码的构造方法及其编码器 |
CN103501210A (zh) * | 2013-09-30 | 2014-01-08 | 复旦大学 | 一种高性能多标准fec译码器 |
Non-Patent Citations (3)
Title |
---|
An Muti-Rate LDPC Decoder Based on ASIP for DMB-TH;Xiaojun Zhang et al.;《ASIC,2009.ASICON’09.IEEE 8th International Conference on》;20091211;全文 * |
High Throughput Encoder Architecture for DVB-S2 LDPC-IRA Codes;Marco Gomes;《IEEE ICM》;20071231;全文 * |
基于TDMP优化算法的QC-LDPC译码器VLSI实现;鲍丹 等;《计算机研究与发展》;20091231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN105337618A (zh) | 2016-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105337618B (zh) | 并行向下兼容的多模ira_ldpc译码器及其译码方法 | |
CN111162797B (zh) | 一种速率兼容的5g ldpc码的编码装置及编码方法 | |
US7627801B2 (en) | Methods and apparatus for encoding LDPC codes | |
CN102122966B (zh) | 基于信道极化的交错结构重复码的编码器及其编译码方法 | |
CA2536259C (en) | Methods and apparatus for encoding ldpc codes | |
CN106330203B (zh) | 一种ldpc的解码方法 | |
CN101232288B (zh) | 一种基于奇偶校验矩阵的ldpc码的译码方法及译码器 | |
TW201123745A (en) | Low density parity check codec and method of the same | |
WO2015078422A1 (zh) | 图像编码、解码方法及装置 | |
CN102664638A (zh) | 基于分层nms算法的多码长ldpc码译码器的fpga实现方法 | |
KR101058324B1 (ko) | 멀티-레벨 퍼뮤테이션을 사용한 저밀도 패리티 검사(ldpc)코드 동작들을 수행하는 방법 및 장치 | |
CN105262493B (zh) | 低密度奇偶校验码的译码方法 | |
CN101604975A (zh) | 一种低功耗多模qc-ldpc码解码器及其工作方法 | |
Lempel et al. | Compression of two-dimensional images | |
CN112636767B (zh) | 一种具有单置换网络的分层半并行ldpc译码器系统 | |
KR20080072392A (ko) | 통신 시스템에서 신호 수신 장치 및 방법 | |
CN111384970B (zh) | 一种译码方法、装置及通信设备 | |
CN102340317A (zh) | 结构化ldpc码的高吞吐率译码器结构及方法 | |
CN101094001A (zh) | 一种ldpc码的译码器装置及译码方法 | |
CN111162795A (zh) | 基于校验子矩阵分割的ldpc编码硬件实现方法 | |
US11323139B2 (en) | Apparatuses and methods for mapping frozen sets between polar codes and product codes | |
CN112560280B (zh) | 一种计入光子损失的玻色采样仿真方法、系统及介质 | |
US10216567B1 (en) | Direct parity encoder | |
Wang et al. | Performance Balanced General Decoder Design for QC-LDPC Codes Using Vivado HLS | |
KR102379557B1 (ko) | Fpga 기반 미디안 필터를 이용한 이미지 프로세싱 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |