一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种仅基于最小值的LDPC码最小和译码方法与流程

2021-10-29 23:15:00 来源:中国专利 TAG:译码 最小 最小值 方法 传输

一种仅基于最小值的ldpc码最小和译码方法
技术领域
1.本技术涉及数字信息传输技术领域,特别涉及一种仅基于最小值的ldpc码最小和译码方法。


背景技术:

2.低密度奇偶校验码(low density parity check code,简称ldpc码),是一类具有稀疏校验矩阵的线性分组码。ldpc码在使用置信传播(belief propagation,bp)算法进行迭代译码时,不仅具有逼近香农限的良好性能,而且译码复杂度较低,结构灵活,是近年信道编码领域的研究热点,用以提高通信系统和存储系统的可靠性。但是,bp算法计算繁琐,涉及到复杂的指数、对数和除法运算,进而对实现该算法的软件和硬件配置要求均非常高。
3.为了降低ldpc码的译码复杂度,现有技术对bp算法进行近似,得到最小和(min

sum,ms)算法。ms算法只涉及简单的比较和加减运算,从而大大降低了软硬件实现该算法的复杂度。为了保持ms复杂度低的优势,同时提升性能,归一化最小和译码算法(normalized

ms,nms)被提出,该算法通过对校验节点更新中变量节点传递给校验节点的消息(v2c)进行加权处理,实现了ms算法的改进。
4.在常规的ms算法中,校验节点更新是最复杂的部分,而校验节点更新的核心计算是从若干无符号数据中获取输入变量节点v2c消息绝对值的最小值和次小值,由于寻找次小值的计算过程复杂度高,导致硬件开销大,不利于ldpc译码器的高效实现,因此,现有技术进一步优化了ms算法:只求最小值,不求次小值,通过简单的方法估计一个最小值与次小值的差值,并将最小值与差值的和值作为一个近似的次小值。
5.具体的,现有技术中基于单一最小值的最小和译码(smms)算法,是将最小值与次小值的差值设为固定值,此固定值由仿真获得,具体方法如下:以一定的步长和范围对差值进行遍历,次小值用最小值与差值的和代替进行仿真,仿真得到当差值设为某个定值时,译码性能最好,则将该定值作为最小值与次小值的差值,再结合实际译码中获得的最小值,求出次小值。但在实际译码过程中,最小值与次小值的差值并非为固定值,因此,该现有技术的计算误差较大,会引起较大的译码性能损失。
6.另外,现有技术中基于可变权重的最小和译码(variable weight ms,vwms)算法,是将译码迭代次数分为若干个区间,每个区间对应一个固定的差值,具体方法如下:步骤一,迭代范围被分成两半,权重因子从0到4以0.25为步长进行仿真;步骤二,从测试码字采用归一化最小和译码(nms)算法时,误帧率为10
‑2对应的点开始,进行步骤一所述的仿真,保留与nms算法相比,性能损失低于1分贝的权重因子,并将所有满足的权重因子组成集合,作为幸存集合;步骤三,以步骤二中误帧率为10
‑2对应的点为起点,将信噪比以0.2分贝为步长进行递增,直至测试码字采用nms算法时误帧率为10

11
对应的点,并获得最终差值的幸存集合;最后根据当前迭代次数,在最终差值的幸存集合中获取对应的差值,再结合实际译码中获得的最小值,求得次小值。该算法需要进行非常充分且大量的仿真,计算量大,并且仍会引起较大的译码性能损失。
7.综上所述,如何利用最小值来估计次小值,进而保证ldpc译码复杂度降低的同时,减少译码性能损失,是目前最小和译码方法的重点研究方向。


技术实现要素:

8.为了克服现有技术的不足,本技术旨在提供一种仅基于最小值的ldpc码最小和译码方法,在保证ldpc译码复杂度降低的同时,通过利用单个最小值来估计次小值,减少译码性能损失。
9.为了实现上述目的,本技术提供一种仅基于最小值的ldpc码最小和译码方法,用于对ldpc码进行译码。所述ldpc码进行译码时,其中的次小值的获取过程为:
10.在校验节点更新阶段中获得最小值。
11.获取动态变量,并根据所述动态变量和预构造的码字本征函数,获得动态差值。
12.根据所述动态差值和所述最小值,获得次小值。
13.进一步的,构造码字本征函数的具体方法为:
14.获取每一次迭代完成后的动态变量。
15.获取每一次迭代时,每一行v2c消息的次小值和最小值之间的差值,作为临时差值,并对所有行的临时差值求平均值,获得基础差值。
16.根据所有的基础差值与所有的动态变量之间的一一对应关系,获得散点图。
17.对散点图进行拟合,获得动态变量和基础差值之间的函数关系,所述动态变量和基础差值之间的函数关系即为码字本征函数。
18.进一步的,使用线性函数或者离散函数对所述散点图进行拟合,获得码字本征函数。
19.进一步的,获取所述动态变量和所述临时差值的方法采用蒙特卡罗法。
20.进一步的,所述ldpc码进行译码时,校验节点更新阶段之后还包括以下步骤:
21.变量节点更新。
22.计算动态变量的值。
23.递增迭代次数,继续进行下一次迭代。
24.进一步的,对所述动态差值进行微调,获得微调值,并将所述微调值与所述动态差值的和值作为微调动态差值,其中获得微调值的具体方法如下:
25.判断上一次迭代时,校验矩阵中每一行校验方程是否满足校验和值为0,并获得判断结果,所述判断结果为满足和不满足。
26.获取实际差值和动态差值,所述实际差值为每一次ldpc码进行迭代译码时,每一行v2c消息的次小值与最小值的真实差值。
27.对于每一行v2c消息,采用实际差值减去动态差值,获得随机差值。
28.若所述判断结果为满足,则对校验和值为0对应行的随机差值进行累加,并对累加后的随机差值取平均值,获得第一微调值;所述第一微调值为译码时,该行校验和值为0时使用的微调值。
29.若所述判断结果为不满足,则对校验和值不为0对应行的随机差值进行累加,并对累加后的随机差值取平均值,获得第二微调值;所述第二微调值为译码时,该行校验和值不为0时使用的微调值。
30.进一步的,所述动态变量为非匹配比特数,所述非匹配比特数为后验概率信息与外消息之间符号位不同的数目,所述外消息为校验节点传递给变量节点的消息之和,所述后验概率信息与所述外消息具有如下函数关系:
31.app=∑c2v llr_channel
32.其中,app为后验概率信息,∑c2v为外消息,llr_channel为信道中原始的对数似然比信息。
33.本技术提供一种仅基于最小值的ldpc码最小和译码方法,用于对ldpc码进行迭代译码,只求出最小值,但不将次小值与最小值的差值设为一个或多个固定值,而是引入一个易于得到的动态变量,该变量能够大概率反应算法的收敛程度。在使用本技术所述译码方法前,需预构造一个码字本征函数f:引入一个易于获得的动态变量α,通过蒙特卡罗法构造和拟合得到次小值与最小值的差值δ和动态变量α之间的固定函数关系δ=f(α);然后运用本技术所述译码方法进行译码:在常规译码流程的校验节点更新阶段中,只求最小值m1,并利用最小值m1、本征函数f和实时获得的动态变量α

,动态计算次小值m2=m1 f(α

),再进行后续的常规译码流程。还可在此基础上,对动态变量α

进行微调,假设微调值为β,则次小值为m2=m1 f(α

) β。本技术中获取次小值的过程不同于常规译码,仅需一次或两次加法,且次小值与最小值的差值是简单动态产生的,能在保证ldpc译码复杂度降低的同时,减少译码性能损失。
附图说明
34.为了更清楚地说明本技术的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
35.图1为本技术实施例提供的一种仅基于最小值的ldpc码最小和译码方法中次小值的获取过程示意图;
36.图2为本技术实施例提供的一种仅基于最小值的ldpc码最小和译码方法中构造码字本征函数的流程示意图;
37.图3为本技术实施例提供的一种仅基于最小值的ldpc码最小和译码方法的译码流程示意图;
38.图4为本技术实施例提供的误帧率性能曲线示意图。
具体实施方式
39.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行完整、清楚的描述。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
40.为便于理解本技术实施例的技术方案,以下首先对本技术所涉及到的一些概念进行说明。
41.先简单说明一下ldpc码采用常规的ms算法进行译码的原理和步骤。为了便于阐述,假设c是一个由m行n列的奇偶校验矩阵h=[h
mn
]指定的二进制(n,k)ldpc码,ms译码算法
如下:
[0042]
步骤s11:初始化:当前迭代次数i=0,最大迭代次数i
max
,根据来自信道的接收信息l=(l1,l2,l,l
n
),初始化所有变量节点信息。
[0043][0044][0045]
其中,m为变量节点,n为校验节点,m
n
为所有与n相邻的变量节点集合,n
m
为所有与m相邻的校验节点集合,为校验节点n传递给变量节点m的边信息,为变量节点m传递给校验节点n的边信息,l
n
为接收到的信道信息。
[0046]
步骤s12:校验节点更新:
[0047][0048][0049]
其中,n
m\n
表示除校验节点n外,所有与变量节点m相邻的校验节点集合;m
n\m
表示除变量节点m外,所有与校验节点n相邻的变量节点集合。
[0050]
步骤s13:变量节点更新:
[0051][0052]
步骤s14:硬判决:
[0053][0054][0055]
当达到最大迭代次数i
max
,或所有奇偶校验都满足时,迭代过程停止。
[0056]
在常规的ms算法中,校验节点更新是其中最复杂的部分。而校验节点更新中的核心计算是求输入的v2c消息绝对值的最小值、次小值,为了进一步降低复杂度,可以利用最小值估计次小值,牺牲一定的译码性能以换取硬件实现复杂度的减小。因此,研究如何利用单个最小值来估计次小值,对降低ldpc硬件实现的复杂度具有重大的意义。
[0057]
本技术实施例提供一种仅基于最小值的ldpc码最小和译码方法,用于对ldpc码进行译码。参见图1,为本技术实施例提供的一种仅基于最小值的ldpc码最小和译码方法中次小值的获取过程示意图。ldpc码进行译码时,其中的次小值的获取过程为:
[0058]
步骤s21:在校验节点更新阶段中获得最小值。具体的,所述最小值为输入的v2c消息绝对值的最小值。
[0059]
步骤s22:获取动态变量,并根据所述动态变量和预构造的码字本征函数,获得动态差值。
[0060]
进一步的,所述动态变量为非匹配比特数,所述非匹配比特数为后验概率信息与外消息之间符号位不同的数目,所述外消息为校验节点传递给变量节点的消息之和,所述
后验概率信息与所述外消息具有如下函数关系:
[0061]
app=∑c2v llr_channel
[0062]
其中,app为后验概率信息,∑c2v为外消息,llr_channel为信道中原始的对数似然比信息。
[0063]
具体的,在一次迭代中,每一列都有后验信息和外消息这两个值,这两个值符号位不同就记为一个非匹配比特,最后对所有的非匹配比特计数,就是非匹配比特数。
[0064]
具体的,本技术实施例采用非匹配比特数作为动态变量,但并不仅限于非匹配比特数,非匹配比特数只是动态变量的其中一种形式,任意能实现本技术所述仅基于最小值的最小和译码方法的动态变量均在本技术的保护范围内。
[0065]
进一步的,参见图2,为本技术实施例提供的一种仅基于最小值的ldpc码最小和译码方法中构造码字本征函数的流程示意图。本技术实施例中,构造码字本征函数的具体方法为:
[0066]
步骤s221:获取每一次迭代完成后的动态变量。
[0067]
步骤s222:获取每一次迭代时,每一行v2c消息的次小值和最小值之间的差值,作为临时差值,并对所有行的临时差值求平均值,获得基础差值。
[0068]
步骤s223:根据所有的基础差值与所有的非匹配比特数之间的一一对应关系,获得散点图。
[0069]
步骤s224:对散点图进行拟合,获得非匹配比特数和基础差值之间的函数关系,所述非匹配比特数和基础差值之间的函数关系即为码字本征函数。
[0070]
进一步的,获取所述动态变量和所述临时差值的方法采用蒙特卡罗法。具体的,蒙特卡罗法也称统计模拟法、统计试验法,适用于对离散系统进行计算仿真试验。蒙特卡洛法的基本思想是:为了求解问题,首先建立一个概率模型或随机过程,使它的参数或数字特征等于问题的解;然后通过对模型或过程的观察或抽样试验来计算这些参数或数字特征,最后给出所求解的近似值。本技术实施例采用蒙特卡罗法进行仿真,是由于蒙特卡罗法对于具有以下特点:统计性质问题可以直接进行解决,对于连续性的问题不必进行离散化处理,且方法的误差与问题的维数无关。
[0071]
进一步的,使用线性函数或者离散函数对所述散点图进行拟合,获得码字本征函数。具体的,线性函数和离散函数表达出的结果清晰直观,且计算简便,故本技术实施例首选将散点图拟合成这两种函数关系,如遇到特殊情况,也可选择其他更适合的函数关系。更进一步的,还可以使用每一段都取定值的分段函数进行拟合,但由此可能造成额外的性能损失。
[0072]
本技术实施例中,由于在初次迭代过程中,并没有上一次迭代的非匹配比特数,故无法利用码字本征函数得到初次迭代的动态差值,故初次迭代的动态差值是假定得到的。假定译码的初次迭代时的非匹配比特数极大,此极大值可以认为时趋近于码长的大小,根据散点图,得到在非匹配比特数极大的情况下所对应的差值。并将该差值作为所述码字本征函数中初始迭代的动态差值。
[0073]
步骤s23:根据所述动态差值和所述最小值,获得次小值。具体的,动态差值与最小值值相加的和值,即为次小值,具体表示为:
[0074]
min2=min1 y
[0075]
其中,min1为最小值,min2为次小值,y为动态差值。
[0076]
具体的,求得次小值的过程中,码字本征函数是提前通过蒙特卡罗法构造得到的,此构造的过程是一劳永逸的。在译码的过程中,该码字本征函数可以直接调用。
[0077]
进一步的,在本技术的部分实施例中,还对所述动态差值进行微调,获得微调值,并将所述微调值与所述动态差值的和值作为微调动态差值,其中获得微调值的具体方法如下:
[0078]
步骤s231:判断上一次迭代时,校验矩阵中每一行校验方程是否满足校验和值为0,并获得判断结果,所述判断结果为满足和不满足。
[0079]
步骤s232:获取实际差值和动态差值,所述实际差值为每一次ldpc码进行迭代译码时,每一行v2c消息的次小值与最小值的真实差值。
[0080]
步骤s233:对于每一行v2c消息,采用实际差值减去动态差值,获得随机差值。
[0081]
步骤s234:若所述判断结果为满足,则对校验和值为0对应行的随机差值进行累加,并对累加后的随机差值取平均值,获得第一微调值;所述第一微调值为译码时,该行校验和值为0时使用的微调值。
[0082]
步骤s235:若所述判断结果为不满足,则对校验和值不为0对应行的随机差值进行累加,并对累加后的随机差值取平均值,获得第二微调值;所述第二微调值为译码时,该行校验和值不为0时使用的微调值。
[0083]
更进一步的,本技术实施例中,校验和值的计算方法具体为:
[0084]
s=ch
t
[0085]
其中,s为校验和值,c为当前ldpc码,h为校验矩阵,t为矩阵的转置运算。
[0086]
具体的,本技术实施例通过利用校验和值对动态差值进行微调,进而使估计得到的次小值更接近实际的次小值。但本技术并不限定仅能用此种方式来获得微调值,所有在本技术所述技术方案基础上能构思到的微调值获取方式,都在本技术的保护范围内。
[0087]
更进一步的,将动态差值与微调值相加,获得微调动态差值,具体表示为:
[0088]
delta=y z
[0089]
式中,delta为微调动态差值,y为动态差值,z为微调值。
[0090]
具体的,此处微调动态差值是对前述动态差值的进一步优化,使得最终计算得到的次小值尽可能地接近实际次小值,进一步减少对译码性能的影响。
[0091]
进一步的,所述ldpc码进行译码时,校验节点更新阶段之后还包括以下步骤:
[0092]
步骤s31:变量节点更新。具体的,本技术实施例中,所述变量节点更新,即对于每一个变量节点,利用c2v消息和llr_channel信息更新v2c消息。
[0093]
步骤s32:计算动态变量的值。具体的,常规译码流程中,没有计算动态变量的值这一步骤,而是在变量节点更新后,直接进行下一次迭代。而本技术需要利用动态变量与基础差值来构造码字本征函数,所以这一步骤也是本技术优化常规算法的关键步骤。
[0094]
步骤s33:递增迭代次数,继续进行下一次迭代。具体的,本技术实施例中,直至当前迭代次数达到预设的最大迭代次数时,迭代结束,完成ldpc码的译码工作。
[0095]
综上所述,本技术实施例提供一种仅基于最小值的最小和译码算法。在使用本技术所述译码方法前,需预构造一个码字本征函数:引入易于获得的非匹配比特数作为动态变量,通过蒙特卡罗法构造和拟合得到动态差值和非匹配比特数之间的固定函数关系;然
后运用本技术实施例所述译码方法进行译码:在常规译码流程的校验节点更新阶段中,只求最小值,并利用最小值、本征函数和实时获得的非匹配比特数,动态计算次小值,再进行后续的常规译码流程。本技术中获取次小值的过程不同于常规译码,仅需一次加法,且次小值与最小值的差值是简单动态产生的,能在保证ldpc译码复杂度降低的同时,减少译码性能损失。
[0096]
具体的,参见图3,为本技术实施例提供的一种仅基于最小值的ldpc码最小和译码方法的译码流程示意图。本技术实施例中,正式译码阶段的完整步骤为:
[0097]
步骤s41:接收ldpc码,设定最大迭代次数,初始化当前迭代次数和当前ldpc码。
[0098]
步骤s42:根据当前ldpc码和校验矩阵,获得校验和值。
[0099]
步骤s43:判断校验和值是否为0,若校验和值为0,则退出译码,并宣告译码成功,同时输出当前ldpc码;若校验和值不为0,则进行迭代次数判断。
[0100]
步骤s44:若当前迭代次数等于最大迭代次数,则退出译码,并宣告译码失败,同时输出当前ldpc码;若当前迭代次数小于最大迭代次数,则进行校验节点更新,获得最小值。
[0101]
步骤s45:获取非匹配比特数,并根据非匹配比特数和预构造的码字本征函数,获得动态差值。
[0102]
步骤s46:根据动态差值和最小值,获得次小值。
[0103]
步骤s47:变量节点更新。
[0104]
步骤s48:统计本次迭代的非匹配比特数。
[0105]
步骤s49:递增迭代次数,继续进行下一次迭代。
[0106]
由此可见,本技术实施例所提供的一种仅基于最小值的ldpc码最小和译码方法,其关键点在于引入非匹配比特数来估计最小值和次小值的差值,进而探讨了ldpc码的基于最小值的最小和译码方法的优化算法。其中,引入的非匹配比特数能够大概率地反应算法收敛的程度,该非匹配比特数与次小值和最小值的差值之间,具有较强的关联性。利用非匹配比特数估计差值的方法通用于ldpc码,并且在实现后对于常规基于最小值的最小和译码方法具有明显的性能增益。
[0107]
以下将通过具体实施例,对本技术实施例所提供的一种仅基于最小值的ldpc码最小和译码方法进行详细阐述。
[0108]
以ieee 802.3an标准中的ldpc码为例进行说明,根据本技术所述一种仅基于最小值的ldpc码最小和译码方法,最终得到的微调动态差值为:
[0109][0110][0111][0112]
其中,delta为微调动态差值,y为动态差值,z为微调值,nonmatch为非匹配比特数。
[0113]
假设ieee 802.3an标准中ldpc码的码长为2048,码率为1723/2048。采用洪泛策略的nms算法,其中缩放因子取0.75,最大迭代次数取30,采用不同的方法对ldpc码进行译码迭代,得到误帧率性能仿真结果。
[0114]
参见图4,为本技术实施例提供的误帧率性能曲线示意图。具体的,本技术实施例中,该性能示意图是以信噪比为横坐标,误帧率为纵坐标的一个曲线图,当误帧率取一个固定值时,对于该ldpc码,就确定了一个点。由图上可以看出,在图上所述译码方法中,采用本技术实施例所提出的利用非匹配比特数的基于单一最小值的nms算法(图中用星形符号线表示,简称nmb_vwms),具有最接近原始nms算法的性能,只有0.09db的性能损失,明显优于smms算法和变体的smms算法——可变权重的最小和译码算法(variable weight ms,简称vwms)。由上述结果可以得出,本技术实施例根据非匹配比特数来调节差值,基于单一最小值的最小和算法,与nms算法相比,在性能损失较小的同时,极大地降低了复杂度,这一结果是具有突破性意义的。
[0115]
本技术实施例通过后验信息和外消息之间的非匹配比特数来确定次小值和最小值之间的差值,用得到的差值加上最小值来估计次小值,不同于常规译码过程中寻找次小值的过程。与传统的ldpc码nms相比,在误帧率取10
‑5的情况下,在我们所使用的三个码字中,分别仅具有0.09db、0.1db、0.19db的性能损失,但极大降低了运算复杂度;与smms算法相比,具有较大的性能增益;与传统的低密度奇偶校验码解码器的硬件架构相比,具有更快的运算速度,更低的能量消耗,更少的面积开销。因此,本技术在低密度奇偶校验码解码器中有着极为广泛的应用前景。
[0116]
本技术提供一种仅基于最小值的ldpc码最小和译码方法,用于对ldpc码进行译码。
[0117]
所述ldpc码进行译码时,其中的次小值的获取过程为:
[0118]
在校验节点更新阶段中获得最小值。
[0119]
获取动态变量,并根据所述动态变量和预构造的码字本征函数,获得动态差值。
[0120]
根据所述动态差值和所述最小值,获得次小值。
[0121]
由上述技术方案可知,本技术提供一种仅基于最小值的ldpc码最小和译码方法,用于对ldpc码进行迭代译码,只求出最小值,但不将次小值与最小值的差值设为一个或多个固定值,而是引入一个易于得到的动态变量,该变量能够大概率反应算法的收敛程度。在使用本技术所述译码方法前,需预构造一个码字本征函数f:引入一个易于获得的动态变量α,通过蒙特卡罗法构造和拟合得到次小值与最小值的差值δ和动态变量α之间的固定函数关系δ=f(α);然后运用本技术所述译码方法进行译码:在常规译码流程的校验节点更新阶段中,只求最小值m1,并利用最小值m1、所述本征函数f和实时获得的动态变量α

,动态计算次小值m2=m1 f(α

),再进行后续的常规译码流程。还可在此基础上,对动态变量α

进行微调,假设微调值为β,则次小值为m2=m1 f(α

) β。本技术中获取次小值的过程不同于常规译码,仅需一次或两次简单的加法,并且引入动态变量这一设置是本技术的巧妙之处,加之该动态变量的获取方法又十分简单,从而大幅度降低了计算和存储复杂度;同时,次小值与最小值的差值是动态调整的,能尽可能地接近实际次小值,因此,对译码性能的影响是微小的。本技术在保证ldpc译码复杂度降低的同时,减少了译码性能损失。
[0122]
以上结合具体实施方式和范例性实例对本技术进行了详细说明,不过这些说明并
不能理解为对本技术的限制。本领域技术人员理解,在不偏离本技术精神和范围的情况下,可以对本技术技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本技术的范围内。本技术的保护范围以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜