分层的低密度校验码译码器及译码处理方法转让专利

申请号 : CN200710044708.7

文献号 : CN101106381B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 倪俊枫华颖徐友云甘小莺俞晖

申请人 : 上海交通大学

摘要 :

一种通信技术领域的分层的低密度校验码译码器及译码处理方法,其中:处理模块的个数等于译码器的并行度k,第一存储单元将本层迭代时信息节点传递给校验节点的软值比特更新值输出给处理模块,处理模块将本层迭代时校验节点传递给信息节点的软值即校验更新值输出给第二存储单元,第二存储单元将上次迭代中由下一层校验节点传递给信息节点的校验更新值,经第二交织网络传递给处理模块,处理模块再将本次迭代中由信息节点传递给下一层校验节点的比特更新值,经第一交织网络传递给第一存储单元。所述方法中节点信息更新处理采用分层带修正的最小和算法,同时使用了溢出保护方式。本发明大大提高处理效率并减少译码器实现所需的硬件资源消耗。

权利要求 :

1.一种分层的低密度校验码译码器,其特征在于,包括处理模块、第一存储单元、第二存储单元以及第一交织网络、第二交织网络,处理模块的个数等于译码器的并行度k,第一存储单元将本层迭代时信息节点传递给校验节点的软值即比特更新值输出给处理模块,处理模块将本层迭代时校验节点传递给信息节点的软值即校验更新值输出给第二存储单元,第二存储单元将上次迭代中由下一层校验节点传递给信息节点的校验更新值,经第二交织网络传递给处理模块,处理模块再将本次迭代中由信息节点传递给下一层校验节点的比特更新值,经第一交织网络传递给第一存储单元,第一交织网络和第二交织网络用于调整输入或输出数据的顺序;其中:所述的第一存储单元存放比特更新值,并根据当前迭代层数向处理模块提供相应的比特更新值;

所述的第二存储单元存放校验更新值,并根据当前迭代层数向处理模块提供相应的校验更新值;

所述的第一交织网络用于将处理模块输出的比特更新值正确交换到第一存储单元的相应位置;

所述的第二交织网络用于将存储在第二存储单元中的校验更新值正确交换传递给对应的处理模块;

所述的处理模块根据比特更新值计算校验更新值,传递给第二存储单元暂存,并根据计算得到的校验更新值,更新信息节点的后验概率似然比,再由更新后信息节点的后验概率似然比和来自第二存储单元的校验更新值,更新比特更新值,传递给第一存储单元存储。

2.根据权利要求1所述的分层的低密度校验码译码器,其特征是,所述的处理模块包括2选1选择器模块、校验节点信息计算模块、数字格式转换模块以及信息节点信息计算模块,其中:2选1选择器模块根据当前迭代次数,在初始数据和第一存储单元输出的数据间进行选择,并将选择的结果输出给校验节点信息计算模块,校验节点信息计算模块用于计算校验更新值,并将校验更新值输出给数字格式转换模块,数字格式转换模块将校验更新值的格式由符号加上绝对值的数字格式转换成补码的形式,输出给第二存储单元和信息节点信息计算模块,信息节点信息计算模块用于计算比特更新值,并将其输出给第一交织网络。

3.根据权利要求2所述的分层的低密度校验码译码器,其特征是,所述的2选1选择器模块对输入的数据进行选择,如果是第一次迭代时对第一层进行译码,则选择初始数据即信道值,否则选择从第一存储单元中读出的比特更新值作为模块的输出。

4.根据权利要求2所述的分层的低密度校验码译码器,其特征是,所述的校验节点信息计算模块包括缓存器、第一比较器、第一寄存器、第一2选1选择器、第二寄存器、第二比较器和乘法器,其中缓存器用于存放比特更新值,其长度等于与当前校验节点相连的信息节点的个数即等于H矩阵的行重RowWt,第一比较器的一个输入是当前的比特更新值,另一个输入是校验节点接收到信息中的当前最小值和当前次小值,第一比较器根据这两个输入对校验节点接收到信息的最小值和次小值进行更新,同时第一比较器将当前比特更新值的符号位与当前最小值和当前次小值的符号位分别进行异或运算,作为更新后最小值和次小值的符号位,第一比较器的输出传递给第一寄存器,第一2选1选择器的输入是第一寄存器的输出,第一2选1选择器根据当前比较时刻选择用于比较的数据作为输出,传递给第一比较器,当完成RowWt个数据的比较后,第一寄存器的输出传递给第二寄存器,这就是与当前校验节点相连的所有信息节点传递给它的信息中的最小值和次小值,第二寄存器的输出和缓存器的输出传递给第二比较器,第二比较器从校验节点的结果中选择值传递给比特节点,第二比较器的输出传递给乘法器,乘法器将第二比较器的输出乘以一个常数,得到校验节点传递给信息节点的校验更新值,该校验更新值和缓存器输出的数据作为校验节点信息计算模块的输出传递给数字格式转换模块,同时缓存器输出的数据传递给信息节点信息计算模块。

5.根据权利要求4所述的分层的低密度校验码译码器,其特征是,所述第二比较器从校验节点的结果中选择值传递给比特节点,具体操作方式是:当来自缓存器的数据和最小值的大小相同时,第二比较器选取次小值,否则选取最小值,第二比较器还将选取出来的值的符号位与来自缓存器的数据的符号位进行异或运算,得到输出数据的符号位。

6.根据权利要求2所述的分层的低密度校验码译码器,其特征是,所述的数字格式转换模块包括第一补码转换器和第二补码转换器,分别对校验节点信息计算模块的两个输出进行格式转换,并将结果传递给信息节点信息计算模块。

7.根据权利要求2所述的分层的低密度校验码译码器,其特征是,所述的信息节点信息计算模块包括第一加法器、第二加法器、数字格式转换器和截位运算器、第三比较器、第二2选1选择器,其中第一加法器将数字格式转换模块的两个输出相加,得到信息节点的后验概率似然比传递给第二加法器,第二加法器的另一个输入来自第二交织网络,第二加法器将信息节点的后验概率似然比减去来自第二交织网络的校验更新值,将结果输出给数字格式转换器,数字格式转换器将补码形式的数字转换成符号位-绝对值形式的数字,数字格式转换器的输出经过一个截位运算器将位宽改成原先的大小,第三比较器将缓存器输出的数据与预设数值MAX_ABS_VALUE相比较,并控制第二2选1选择器选择符号位,截位运算器和第二2选1选择器的输出传递给第一交织网络。

8.根据权利要求7所述的分层的低密度校验码译码器,其特征是,所述截位运算器的工作方式由第三比较器控制,如果缓存器输出数据的绝对值比MAX_ABS_VALUE大,则启动截位运算器对数字格式转换器的输出进行截位操作,并选择缓存器输出数据的符号位;反之则不进行截位操作,并选择数字格式转换器输出数据的符号位。

9.一种如权利要求2所述的分层的低密度校验码译码器的译码处理方法,其特征在于,包括以下步骤:

第一步,获取译码器的输入数据即信道值;

第二步,2选1选择器模块对输入的数据进行选择,如果是第一次迭代时对第一层进行译码,则选择信道值作为比特更新值,否则选择从第一存储单元中读出的信息作为当前迭代层的比特更新值传递给校验节点信息计算模块;

第三步,校验节点信息计算模块根据传递给当前校验节点的所有比特更新值,计算校验更新值,经过格式转换后,这个校验更新值存入第二存储单元;

第四步,利用当前层的比特更新值和第三步计算得到的校验更新值,计算信息节点的后验概率似然比,并根据后验概率似然比做出硬判决;

第五步,从第二存储单元中读出上一次迭代时对应下一层校验节点的校验更新值,将信息节点的后验概率似然比减去这个校验更新值,得到本次迭代中下一层的比特更新值,经格式转换和截位处理后,存入第一存储单元;

第六步,如果迭代次数达到预设值,则操作停止,如果本次迭代结束,则迭代次数加1,返回第二步开始下一次迭代对第一层的译码,否则,返回第二步开始本次迭代对下一层的译码。

10.根据权利要求9所述的分层的低密度校验码译码器的译码处理方法,其特征是,所述的译码处理方法采用流水线的方式进行操作,信息节点信息计算模块在处理当前子矩阵的同时,校验节点信息计算模块对下一子矩阵进行处理,而当信息节点信息计算模块处理完当前子矩阵时,校验节点信息计算模块则完成处理的校验更新值通过格式转换模块传递给信息节点信息计算模块,同时开始对再下一个子矩阵的处理。

说明书 :

技术领域

本发明涉及一种通信技术领域的译码器及译码处理方法,具体涉及一种分层的低密度校验码译码器及译码处理方法。

背景技术

LDPC码(low density parity check codes,低密度校验码)是1963年Gallager首先提出的一种编码技术,它可用作多种通信系统或信息存贮系统的纠错/检错技术,由于它具有逼近信道极限的性能,成为近十年来最受关注的一项热门技术。LDPC码译码器通常有三种结构形式:串行结构、全并行结构、部分并行结构。串行结构LDPC码译码器结构简单,硬件资源消耗较少,但译码速度慢,可支持的数据吞吐量较低;全并行结构译码速度很快,吞吐量很高,但结构复杂、硬件资源消耗非常大;部分并行结构可在译码处理速度和能支持数据吞吐量之间取得折中,它的复杂度和硬件资源消耗介于串行结构和全并行结构之间。因此,部分并行结构是目前LDPC码译码器设计中比较通用的方案。
经对现有技术的文献检索发现,Dale E.Hocevar在《IEEE Workshop onSignal Processing Systems(SIPS)》2004.Pages:107-112上提出的“Areduced complexity decoder architecture via layered decoding of LDPCcodes”(一种采用分层译码的低复杂度LDPC译码器结构,Dale E.Hocevar,2004年IEEE信号处理与系统研讨会,第107-112页)给出了一种基于分层置信传播算法的LDPC译码器。该译码器主要由校验更新块、比特更新块、校验节点信息存储器、比特节点后验概率似然比存储器以及两个互联网络和两个移位器组成。研究结果表明:基于分层译码算法的部分并行LDPC码译码器所需的迭代次数仅为一般译码器的一半左右。但是该译码器结构不能同时进行信息节点信息和校验节点信息的更新,而且,由于该译码器存储的是信息节点的后验概率似然比,而且每个信息节点都需要有独立的存储器,因而会消耗比较多的存储器资源。另外,由于该译码器同时使用到了互联网络和移位器完成操作,会消耗比较多的硬件资源。

发明内容

本发明针对现有技术的不足,提出一种分层的低密度校验码译码器及译码处理方法,使其采用分层带修正的最小和算法(LMMSA),适应多种码率和码长的LDPC码译码;另外,由于采用分层的译码算法,可同时进行信息节点信息和校验节点信息的更新处理,从而大大提高处理效率并减少译码器实现所需的硬件资源消耗。
本发明是通过以下技术方案实现的:
本发明涉及的分层的低密度校验码译码器,包括:处理模块、第一存储单元、第二存储单元以及第一交织网络、第二交织网络。处理模块的个数等于译码器的并行度k。第一存储单元将本层迭代(记H矩阵的列重为ColWt,则H矩阵包含ColWt层,每层的行数相同,且每层的列重为1)时信息节点传递给校验节点的软值即比特更新值输出给处理模块。处理模块将本层迭代时校验节点传递给信息节点的软值即校验更新值输出给第二存储单元。第二存储单元将上次迭代中由下一层校验节点传递给信息节点的校验更新值,经第二交织网络传递给处理模块。处理模块再将本次迭代中由信息节点传递给下一层校验节点的比特更新值,经第一交织网络传递给第一存储单元。第一交织网络和第二交织网络用于调整输入或输出数据的顺序。
所述的第一存储单元存放比特更新值,并根据当前迭代层数向处理模块提供相应的比特更新值;
所述的第二存储单元存放校验更新值,并根据当前迭代层数向处理模块提供相应的校验更新值;
所述的第一交织网络用于将处理模块输出的比特更新值正确交换到第一存储单元的相应位置;
所述的第二交织网络用于将存储在第二存储单元中的校验更新值正确交换传递给对应的处理模块;
所述的处理模块根据比特更新值计算校验更新值,传递给第二存储单元暂存,并根据计算得到的校验更新值,更新信息节点的后验概率似然比,再由更新后信息节点的后验概率似然比和来自第二存储单元的校验更新值,更新比特更新值,传递给第一存储单元存储。
所述的处理模块包括2选1选择器模块、校验节点信息计算模块、数字格式转换模块以及信息节点信息计算模块。2选1选择器模块根据当前迭代次数,在初始数据和第一存储单元输出的数据间进行选择,并将选择的结果输出给校验节点信息计算模块。校验节点信息计算模块用于计算校验更新值,并将校验更新值输出给数字格式转换模块。数字格式转换模块将校验更新值的格式由符号加上绝对值的数字格式转换成补码的形式,输出给第二存储单元和信息节点信息计算模块。信息节点信息计算模块用于计算比特更新值,并将其输出给第一交织网络。
所述的2选1选择器模块对输入的数据进行选择。如果是第一次迭代时对第一层进行译码,则选择初始数据(信道值),否则选择从第一存储单元中读出的比特更新值作为模块的输出。
所述的校验节点信息计算模块包括缓存器、第一比较器、第一寄存器、第一2选1选择器、第二寄存器、第二比较器和乘法器。缓存器用于存放比特更新值,其长度等于与当前校验节点相连的信息节点的个数(即等于H矩阵的行重RowWt)。第一比较器的一个输入是当前的比特更新值,另一个输入是校验节点接收到信息中的当前最小值和当前次小值。第一比较器根据这两个输入对校验节点接收到信息的最小值和次小值进行更新。同时第一比较器将当前比特更新值的符号位与当前最小值和当前次小值的符号位分别进行异或运算,作为更新后最小值和次小值的符号位。第一比较器的输出传递给第一寄存器。第一2选1选择器的输入是第一寄存器的输出,根据当前比较时刻选择合适的用于比较的数据作为输出,传递给第一比较器。当完成RowWt个数据的比较后,第一寄存器的输出传递给第二寄存器,这就是与当前校验节点相连的所有信息节点传递给它的信息中的最小值和次小值。第二寄存器的输出和缓存器的输出传递给第二比较器。第二比较器从校验节点的结果中选择合适的值传递给比特节点。第二比较器的具体操作方式是:当来自缓存器的数据和最小值的大小相同时,第二比较器选取次小值,否则选取最小值。第二比较器还将选取出来的值的符号位与来自缓存器的数据的符号位进行异或运算,得到输出数据的符号位。第二比较器的输出传递给乘法器。乘法器将第二比较器的输出乘以一个常数,得到校验节点传递给信息节点的校验更新值。该校验更新值和缓存器输出的数据作为校验节点信息计算模块的输出传递给数字格式转换模块。同时缓存器输出的数据传递给信息节点信息计算模块。
所述的数字格式转换模块将校验节点信息计算模块的输出经过处理传递给信息节点信息计算模块。为了处理方便,译码器使用的数字格式是最高位为符号位,低位为绝对值(而不是补码的格式),因此为了方便做加法,需要进行格式转换,将符号加上绝对值的数字格式转换成补码的形式。数字格式转换模块包括第一补码转换器和第二补码转换器,分别对校验节点信息计算模块的两个输出进行格式转换,并将结果传递给信息节点信息计算模块。
所述的信息节点信息计算模块包括第一加法器、第二加法器、数字格式转换器和截位运算器、第三比较器、第二2选1选择器。第一加法器将数字格式转换模块的两个输出相加,得到信息节点的后验概率似然比传递给第二加法器,这个值可用来做硬判决。第二加法器的另一个输入来自第二交织网络。第二加法器将信息节点的后验概率似然比减去来自第二交织网络的校验更新值,将结果输出给数字格式转换器。数字格式转换器将补码形式的数字转换成符号位-绝对值形式的数字。由于在累加的过程中可能会出现数据位宽变大的情况,需要将数字格式转换器的输出经过一个截位运算器将位宽改成原先的大小。截位运算器的工作方式由第三比较器控制。第三比较器将缓存器输出的数据与预设数值MAX_ABS_VALUE相比较,并控制第二2选1选择器选择合适的符号位。如果缓存器输出数据的绝对值比MAX_ABS_VALUE大,则启动截位运算器对数字格式转换器的输出进行截位操作,并选择缓存器输出数据的符号位;反之则不进行截位操作,并选择数字格式转换器输出数据的符号位。截位运算器和第二2选1选择器的输出传递给第一交织网络。
本发明涉及的分层的低密度校验码译码器的译码处理方法,包括以下步骤:
第一步,获取译码器的输入数据(信道值)。
第二步,2选1选择器模块对输入的数据进行选择。如果是第一次迭代时对第一层进行译码,则选择信道值作为比特更新值,否则选择从第一存储单元中读出的信息作为当前迭代层的比特更新值传递给校验节点信息计算模块。
第三步,校验节点信息计算模块根据传递给当前校验节点的所有比特更新值,计算校验更新值。经过格式转换后,这个校验更新值存入第二存储单元。
第四步,利用当前层的比特更新值和第三步计算得到的校验更新值,计算信息节点的后验概率似然比。并根据后验概率似然比做出硬判决。
第五步,从第二存储单元中读出上一次迭代时对应下一层校验节点的校验更新值。将信息节点的后验概率似然比减去这个校验更新值,得到本次迭代中下一层的比特更新值。经格式转换和截位处理后,存入第一存储单元。
第六步,如果迭代次数达到预设值,则操作停止。如果本次迭代结束,则迭代次数加1,返回第二步开始下一次迭代对第一层的译码。否则,返回第二步开始本次迭代对下一层的译码。
本发明所述的译码处理方法采用流水线的方式进行操作。当信息节点信息计算模块在处理当前子矩阵(H矩阵的每一层在行方向上被划分成若干个单元,每个单元含有k行,这样的单元称为子矩阵)的同时,校验节点信息计算模块对下一子矩阵进行处理。而当信息节点信息计算模块处理完当前子矩阵时,校验节点信息计算模块将完成处理的校验更新值通过格式转换模块传递给信息节点信息计算模块,同时开始对再下一个子矩阵的处理。
与现有的基于分层置信传播算法的LDPC译码器相比,本发明所述的译码器具有以下优点:
(1)译码过程中第一存储单元存储的是比特更新值,而不是比特节点后验概率似然比。由于比特节点后验概率似然比的位宽要大于比特更新值的位宽,存储比特更新值能减少对存储器容量的需求。
(2)信道输入值没有先存入存储器,而是直接送入处理模块进行信息的计算与更新,以便减少译码处理的延时,提高译码器的吞吐量。
(3)处理模块进行信息更新时采用分层带修正的最小和算法。与采用分层置信传播算法的译码器相比,能够减少硬件资源消耗。
(4)比特更新值串行输入校验节点信息计算模块,以计算与当前校验节点相连的所有信息节点比特更新值中的最小值和次小值。与一般并行输入方式相比,串行输入方式适用于任意的校验矩阵结构。
(5)采用两个交织网络对数据的顺序进行调整。与背景技术里提到的基于分层置信传播算法的LDPC译码器相比,省去了两个互联网络。
(6)采用流水线的方式进行译码处理。校验节点信息计算模块和信息节点信息计算模块同时工作,能够减少译码处理的延时,提高译码器的吞吐量。
(7)适应多种码率和码长的低密度校验码详码。

附图说明

图1是H矩阵的结构示意图;
图2是H矩阵中子矩阵的结构示意图;
图3是译码器的总体结构;
图4是处理模块的结构图。

具体实施方式

下面结合附图对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
附图1是现有适用并行度为k的译码器的LDPC码校验矩阵(H矩阵)结构图,H矩阵的行重记为RowWt,列重记为ColWt。H矩阵包含ColWt层,每层的行数相同,同时每层的列重为1;在行方向上每一层被划分成若干个单元,每个单元含有k行,这样的单元称为子矩阵,h00或h01就是一个子矩阵的例子。
附图2是H矩阵中子矩阵的结构示意图。子矩阵在列方向被划分成N/k个小方阵(比如201,N为码长),每个小方阵的列数为k。子矩阵中的小方阵可以是零矩阵,也可以是单位矩阵或单位阵的循环移位形式。子矩阵中非零小方阵的个数等于H矩阵的行重RowWt。
附图3给出的是译码器的总体结构图,本实施例译码器由多个处理模块、第一存储单元301、第二存储单元302以及第一交织网络303和第二交织网络304组成。处理模块的个数等于译码器的并行度k。第一存储单元301将本层迭代时信息节点传递给校验节点的软值即比特更新值输出给处理模块。处理模块将本层迭代时校验节点传递给信息节点的软值即校验更新值输出给第二存储单元302。第二存储单元302将上次迭代中由下一层校验节点传递给信息节点的校验更新值,经第二交织网络304传递给处理模块。处理模块再将本次迭代中由信息节点传递给下一层校验节点的比特更新值,经第一交织网络303传递给第一存储单元301。第一交织网络303和第二交织网络304用于调整输入或输出数据的顺序。
由于采用LMMSA算法,因此,本实施例整个译码器的译码处理与信息传递过程是这样的:
假设译码器的并行度是k,在译码的时候,一个码将被分成N/k段,每段的长度是k。在首次迭代中,译码器首先在第1~RowWt个时钟周期内,按顺序在每个时钟周期读入对应子矩阵h00中非零小方阵的k个信息;接着在第RowWt+1~2*RowWt个时钟周期内,按顺序在每个时钟周期读入对应子矩阵h01中非零小方阵的k个信息;以此类推,直到整个码字的信息全部进入译码器为止。输入译码器的每个数据都会进入相应的处理模块进行迭代,即k个信息中对应于某一子矩阵第m个校验节点的数据将进入处理模块m进行处理。
附图4给出的是处理模块的结构图,包括2选1选择器模块401、校验节点信息计算模块、数字格式转换模块以及信息节点信息计算模块。2选1选择器模块401根据当前迭代次数,在初始数据和第一存储单元输出的数据间进行选择,并将选择的结果输出给校验节点信息计算模块。校验节点信息计算模块用于计算校验更新值,并将校验更新值输出给数字格式转换模块。数字格式转换模块将校验更新值的格式由符号加上绝对值的数字格式转换成补码的形式,输出给第二存储单元和信息节点信息计算模块。信息节点信息计算模块用于计算比特更新值,并将其输出给第一交织网络。
所述处理模块的执行流程如下:
(1)选择输入数据
2选1选择器模块401对输入的数据进行选择。如果是第一次迭代时对第一层进行译码,则2选1选择器模块401将选择初始数据(信道值)llrChan,否则选择从第一存储单元301中读出的信息llr2ChkOld。2选1选择器模块401的输出llr2Check传递到校验节点信息计算模块
(2)计算校验节点传递给信息节点的校验更新值
图4中的校验节点信息计算模块由缓存器402、第一比较器403、第一寄存器404、第一2选1选择器405、第二寄存器406、第二比较器407和乘法器408构成,用于计算校验节点传递给信息节点的校验更新值。其中2选1选择器模块401的输出llr2Check按顺序存放进缓存器402中。缓存器402的长度等于与当前校验节点相连的信息节点的个数(等于H矩阵的行重RowWt)。校验节点信息计算模块的操作又分如下几步:
①计算与当前校验节点相连的所有信息节点比特更新值中的最小值和次小值
由于这个译码器结构使用的是LMMSA算法,因此需要计算与当前校验节点相连的所有信息节点比特更新值中的最小值和次小值。
第一比较器403的一个输入是当前信息节点传递给校验节点的比特信息值llr2Check,另一个输入是校验节点接收到信息中的当前最小值和当前次小值。当llr2Check小于当前最小值的大小时,当前次小值更新为当前最小值,当前最小值更新为llr2Check;当llr2Check大于当前最小值但小于当前次小值的大小时,当前次小值更新为llr2Check。最小值和次小值的更新结果存入第一寄存器404。第一比较器403还有另一个作用,即将llr2Check的符号位与当前最小值和当前次小值的符号位分别进行异或运算,作为更新后最小值和次小值的符号位。第一2选1选择器405用于选择合适的用于比较的数据。如果比特信息值llr2Check是传递给某个校验节点的第一个信息,则第一2选1选择器405选择11…1(1的个数等于数据的位宽)作为当前最小值和当前次小值输出,否则第一2选1选择器405选择第一寄存器的输出。当完成RowWt个数据的比较后,第一寄存器404的输出进入第二寄存器406,这就是与当前校验节点相连的所有信息节点传递给它的信息中的最小值和次小值。
②计算校验节点传递给信息节点的值
第二寄存器406得到与当前校验节点相连的所有信息节点传递给它的信息中的最小值和次小值后,从缓存器402中按顺序取出相应的数据Q,同第二寄存器406传递过来的信息一起作为第二比较器407的输入。第二比较器407从校验节点的结果中选择合适的值传递给比特节点,具体操作方式是:当Q和最小值的大小相同时,第二比较器407将选取次小值,否则选取最小值。接下来第二比较器407将会把选取出来的值的符号位同Q的符号位进行异或运算作为这个模块输出值的符号位,而输出值的绝对值大小则是第二比较器407选出值的大小。
③乘性修正
第二比较器407的输出输入到乘法器408中进行乘性修正,即将其乘以一个系数alpha,乘法器408的输出就是校验节点传递给信息节点的校验更新值。
为了能够使译码器获得良好的性能,同时保持硬件实现的简单性,alpha使用的值为0.8125。这样数X乘以0.8125的操作可以简化为加法的操作,即X×0.8125=X>>1+X>>2+X>>4。(>>表示向右移位操作)
(3)数字格式转换
数字格式转换模块包括第一补码转换器409和第二补码转换器410,乘法器408的输出送入第一补码转换器409进行数字格式转换。与之类似,缓存器402的输出也会送入第二补码转换器410进行数字格式转换。由于为了处理方便,译码器使用的数字格式是最高位为符号位,低位为绝对值(而不是补码的格式),因此为了方便做加法,需要进行格式转换,将符号加上绝对值的数字格式转换成补码的形式。第一补码转换器409的输出llr2Msg送入第二存储单元302保存。
(4)计算信息节点传递给校验节点的比特更新值
图4中信息节点信息计算模块由第一加法器411、第二加法器412、数字格式转换器413和截位运算器415、第三比较器414、第二2选1选择器416构成,用于计算比特更新值。分如下几步:
1)计算信息节点的后验概率似然比
第一加法器411将第一补码转换器409的输出llr2Msg与第二补码转换器410的输出相加,得到信息节点的后验概率似然比llrSum,这个值可用来做硬判决。
2)计算信息节点传递给校验节点的比特更新值
第二加法器412的两个输入是llrSum和从第二存储单元302读出经第二交织网络304输出到处理模块的llr2MsgOld。第二加法器412将llrSum减去llr2MsgOld,得到比特更新值llrNew。
3)数字格式转换
llrNew送入数字格式转换器413,将补码形式的数字转换成符号位-绝对值形式的数字。
4)溢出保护
由于在累加的过程中可能会出现数据位宽变大的情况,因此需要将数字格式转换器413的输出经过一个截位运算器415将位宽改成原先的大小。截位运算器415的工作方式由第三比较器414控制。llrAdd的绝对值送入第三比较器414,与预设数值MAX_ABS_VALUE相比较。如果llrAdd的绝对值比MAX_ABS_VALUE大,则启动截位运算器415对数字格式转换器413的输出进行截位操作;反之则不进行截位操作。第三比较器414还控制了第二2选1选择器416。如果llrAdd的绝对值比MAX_ABS_VALUE大,第二2选1选择器416选择llrAdd的符号位输出;反之,选择数字格式转换器413输出的符号位作为输出。截位运算器415的输出为llr2Chk的绝对值,llr2Chk的符号位则为第二2选1选择器416的输出。llr2Chk经第一交织网络303送入第一存储单元301保存。
假设现在有一个码长为2304的(3,6)LDPC码,现在要对这个码进行译码,并行度为32,层数为3。
那么,译码器的参数设置及处理过程如下:
表一:处理模块
  模块   个数   处理模块   32
表二:处理模块中子模块数目
  模块   数目   2选1选择模块401   1   缓存器402   1
  模块   数目   第一比较器403   1   第一寄存器404   1   第一2选1选择器405   1   第二寄存器406   1   第二比较器407   1   乘法器408   1   补码转换器409   1   补码转换器410   1   第一加法器411   1   第二加法器412   1   数字格式转换器413   1   第三比较器414   1   截位运算器415   1   第二2选1选择器416   1
表三:存储单元的参数
  存储单元   深度   第一存储单元301   72   第二存储单元302   216
首先,接收到的码字将会被顺序分割成72个子码块,每个子码块对应32个信息节点。对这些子码块进行循环移位和交换顺序操作后,使得第1~6个子码块的第i个信息位对应的信息节点与第i个校验节点相连,第7~12个子码块的第i个信息位对应的信息节点与第i+32个校验节点相连,以此类推(图4中用llrChan表示)。在第一个时钟周期,第一个子码块将会输入译码器的处理模块,其中第i个信息位将会被输入到第i个处理模块中去。在下一个时钟周期第二个子码块将被送入译码器的处理模块,直到第72个周期为止。
进入处理模块的比特更新值将由处理模块处理。由于采用的是LMMSA算法,在处理过程中,更新后的校验节点传递给信息节点的校验更新值llr2Msg将被存入第二存储单元302。接着,处理模块读入在前一次迭代时由H矩阵下一层中的某个校验节点传递给当前信息节点的校验更新值llr2MsgOld(这个值在前一次迭代过程中已被存入第二存储单元302)。经过处理,得到更新后的信息节点传递给校验节点的比特更新值llr2Chk,并将其存入第一存储单元301中。如此循环72个周期后,就完成了一层的译码。之后会进行下一层的译码,此时处理模块将会读入存储在第一存储单元301中的信息节点传递给校验节点的比特更新值llr2ChkOld(而不是信道传递过来的信息llrChan)。三层的译码结束以后,就完成了一次迭代。之后,处理模块将会开始第二次迭代,以此类推,直到迭代结束。
处理模块的具体操作过程是这样的:
进入处理模块的比特更新值llr2Check按顺序存放进缓存器402中。缓存器402的长度等于6。同时,比特更新值llr2Check传递给第一比较器403。如果llr2Check小于当前最小值的大小时,当前次小值更新为当前最小值,当前最小值更新为llr2Check;当llr2Check大于当前最小值但小于当前次小值的大小时,当前次小值更新为llr2Check。最小值和次小值的更新结果存入第一寄存器404。第一比较器403还将llr2Check的符号位与当前最小值和当前次小值的符号位分别进行异或运算,作为更新后最小值和次小值的符号位。在第一寄存器404进行比较时,第一2选1选择器405会选择合适的用于比较的数据。如果比特信息值llr2Check是传递给某个校验节点的第一个信息,则第一2选1选择器405选择11…1(1的个数等于数据的位宽)作为当前最小值和当前次小值输出,否则第一2选1选择器405选择第一寄存器的输出。当完成6个数据的比较后,第一寄存器404的输出进入第二寄存器406。
第二寄存器406得到与当前校验节点相连的所有信息节点传递给它的信息中的最小值和次小值后,从缓存器402中按顺序取出相应的数据Q,同第二寄存器406传递过来的信息一起作为第二比较器407的输入。第二比较器407从校验节点的结果中选择合适的值传递给比特节点,具体操作方式是:当Q和最小值的大小相同时,第二比较器407将选取次小值,否则选取最小值。接下来第二比较器407将会把选取出来的值的符号位同Q的符号位进行异或运算作为这个模块输出值的符号位,而输出值的绝对值大小则是第二比较器407选出值的大小。第二比较器407的输出输入到乘法器408中进行乘性修正,即将其乘以0.8125,乘法器408的输出就是校验节点传递给信息节点的校验更新值。
乘法器408和缓存器402的输出分别送入第一补码转换器409和第二补码转换器410进行数字格式转换。第一补码转换器409的输出llr2Msg送入第二存储单元302保存。
第一加法器411将第一补码转换器409的输出llr2Msg与第二补码转换器410的输出相加,得到信息节点的后验概率似然比llrSum,这个值可用来做硬判决。
第二加法器412的两个输入是llrSum和从第二存储单元302读出经第二交织网络304输出到处理模块的llr2MsgOld。第二加法器412将llrSum减去llr2MsgOld,得到比特更新值llrNew。
llrNew送入数字格式转换器413,将补码形式的数字转换成符号位-绝对值形式的数字。
数字格式转换器413的输出经过一个截位运算器415将位宽改成原先的大小。截位运算器415的工作方式由第三比较器414控制。llrAdd的绝对值送入第三比较器414,与预设数值MAX_ABS_VALUE相比较。如果llrAdd的绝对值比MAX_ABS_VALUE大,则启动截位运算器415对数字格式转换器413的输出进行截位操作;反之则不进行截位操作。第三比较器414还控制了第二2选1选择器416。如果llrAdd的绝对值比MAX_ABS_VALUE大,第二2选1选择器416选择llrAdd的符号位输出;反之,选择数字格式转换器413输出的符号位作为输出。截位运算器415的输出为llr2Chk的绝对值,llr2Chk的符号位则为第二2选1选择器416的输出。llr2Chk经第一交织网络303送入第一存储单元301保存。
所述的译码处理方法采用流水线的方式进行操作。当信息节点信息计算模块在处理当前子矩阵的同时,校验节点信息计算模块对下一子矩阵进行处理。而当信息节点信息计算模块处理完当前子矩阵时,校验节点信息计算模块将完成处理的校验更新值通过格式转换模块传递给信息节点信息计算模块,同时开始对再下一个子矩阵的处理。
在本实施例中,如果比特更新值的位宽定为6比特,比特节点后验概率似然比的位宽为7比特,则第一存储单元总的大小为6*32*72=13824比特,第二存储单元总的大小为6*32*216=41472比特。如果存储比特节点后验概率似然比,则存储器的大小需要增加2304比特。采用存储比特更新值的方式相比节省了4%的存储器资源。
在本实施例中,信道输入值没有先存入存储器,而是直接送入处理模块进行信息的计算与更新,减少了72个时钟周期的延时。
在本实施例中,处理模块进行信息更新时采用分层带修正的最小和算法。与采用分层置信传播算法的译码器相比,能够减少硬件资源消耗。
在本实施例中,比特更新值串行输入校验节点信息计算模块,以计算与当前校验节点相连的所有信息节点比特更新值中的最小值和次小值。与一般并行输入方式相比,串行输入方式适用于任意的校验矩阵结构。
在本实施例中,采用两个交织网络对数据的顺序进行调整。与背景技术里提到的基于分层置信传播算法的LDPC译码器相比,省去了两个互联网络,能够减少硬件资源消耗。
在本实施例中,采用流水线的方式进行译码处理。校验节点信息计算模块和信息节点信息计算模块同时工作,完成一次迭代仅需216个时钟周期,提高了译码器的吞吐量。