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

一种多进制LDPC码译码方法与流程

2022-04-30 11:15:10 来源:中国专利 TAG:

一种多进制ldpc码译码方法
技术领域
1.本发明属于通信技术领域,尤其涉及一种多进制ldpc码译码方法。


背景技术:

2.ldpc(low density parity check code,低密度奇偶校验码)是一类性能可逼近香农极限的线性纠错码,目前已广泛应用于要求数据高可靠性传输的领域,如北斗三代卫星导航系统。其优点在于接近香农极限、结构灵活、更低的误码平层;然而由于其极其高昂的计算复杂度和存储器资源,因此阻碍了多进制ldpc码在实际中的应用和发展。
3.例如,在进行ldpc译码常需要执行多次两两计算时,目前的两两计算,常规算法为α
m(n-1)
的q维向量依次与β
m(n 1)
的q维向量进行有限域上的元素运算以及普通域上的概率运算,得到q个不同的有限域元素和q*q个概率结果,其中每个有限域元素对应q个概率结果,需要从中比较选出最大值作为该元素对应的概率值,搜索比较完q*q个概率结果后得到q个元素对应的q维概率值向量,对其进行逆转置处理。
4.上述计算过程中,每计算一次α
m(n-1)
与β
m(n 1)
的结果需要进行q*q次有限域加法和q*q次普通域加法,以及进行q*(q-1)次比较筛选运行,同时每次计算需要的存储器为q维,其计算覆盖面积如图1所示。更新完所有校验方程需要进行的两两计算次数为:m*dc*2,对于北斗三代b-cnav3导航电文(162,81)而言,则需要进行81*4*2次α
m(n-1)
与β
m(n 1)
的两两计算,计算量大,占用的存储器资源大,计算速度慢。


技术实现要素:

5.本发明所要解决的技术问题是提供一种多进制ldpc码译码方法。
6.为解决上述问题,本发明所采取的技术方案是:
7.一种多进制ldpc码译码方法,所述多进制ldpc码由有限域gf(q)(q=2r)下大小为m
×
n的校验矩阵h的零空间定义,所述h的每一行对应一个校验方程,所述h的每一列上的非零元素对应一个变量节点;
8.所述方法包括:
9.s1、利用对数似然比估计待译码信息中的每个变量节点初始概率得到初始化信息,并存储所述初始化信息;
10.s2、将迭代更新信息中的变量节点信息进行转置与逆转置处理;
11.s3、更新变量节点向校验节点传送的信息得到q维更新校验节点信息,所述更新过程执行若干个两两计算,每个两两计算均执行l维有限域加法和l维普通域加法,其中,l《q;
12.s4、在更新校验节点信息的同时更新变量节点信息,得到各变量节点概率;
13.s5、译码判决:对第k次迭代更新信息进行译码判决,如果成功输出结果,否则重复步骤s2~步骤s5。
14.作为发明的一种实施方式,步骤s1包括:
15.采用下述公式得到初始化信息所述初始化信息多个初始元素-概率值:
16.其中,n的取值为1~n,t的取值为0~(q-1),xn表示校验方程的解;
17.将存储在矩阵中。
18.作为发明的一种实施方式,步骤s3包括:
19.s301、获取当前校验方程中所有待计算校验节点的计算公式;
20.s302、针对当前待计算校验节点,执行α
m(n-1)
β
m(n-1)
两两运算,在计算过程中执行l维有限域加法和l维普通域加法,得到l维更新校验节点信息,其中l《q;
21.s303、判断与当前待计算校验节点对应的两两运算是否全部结束,如果没有结束,将所述l维校验节点信息对应的l维概率值作为输入节点信息,继续执行步骤s302-s303,否则,执行步骤s304:
22.s304、将l维更新校验节点信息扩展为q维,得到q维更新校验节点信息;
23.s305、判断当前校验方程的所有校验节点是否已完成更新,如果没有,执行步骤s302-步骤s305完成对所有校验节点的更新;否则,根据所述当前校验节点更新信息完成对当前校验方程的更新,将下一个校验方程作为当前校验方程,继续执行步骤s301-步骤s305,完成对所有校验方程的更新。
24.作为发明的一种实施方式,在首次执行所述步骤s302前,所述步骤还包括:
25.将当前校验方程中所有待计算校验节点对应的初始值按照概率值从大到小排序,选取其前l个值作为输入节点信息进行后续两两计算。
26.作为发明的一种实施方式,步骤s302中,执行两两计算时采用边选择边排序方法。
27.作为发明的一种实施方式,所述步骤s304包括:
28.选取α
m(n-1)
向量的l维的第一个元素即α
m(n-1)
(1)及其对应概率值分别与β
m(n 1)
向量的q维元素及其对应概率值进行伽罗华域上的元素加法及普通域上的概率加法运算,并将每次加法运算得到元素结果与已有的l维元素值进行比较,如果全不相同则存储此元素及其对应概率值,否则此元素及其对应概率值视为无效。
29.作为发明的一种实施方式,所述步骤s4包括:
30.将生成的q维更新校验节点信息与其错位的初始信息相加并存储,其中,处于同一列的两个校验节点信息属于互为错位。
31.作为发明的一种实施方式,步骤s4还包括:将生成的q维更新校验节点信息与其对应的初始信息相加并存储;
32.所述多进制ldpc码译码方法还包括:
33.步骤s6:在进行下一次迭代运算更新下一轮校验方程时,从存储器的下半部分开始读取运算,后续迭代依次上半部分下半部分轮流进行。
34.采用上述技术方案所产生的有益效果在于:
35.1、本发明中,在更新每个校验方程时,先将其dc个校验节点信息分别进行降序排列,选取其前l个值作为输入节点信息进行两两计算,因此α
m(n-1)
与β
m(n 1)
计算量由原来的q维缩减为l维,即进行l*l个有限域上的加法和l*l个普通域上的加法,计算量大大缩减,存储器资源也由原来的q缩减为l。其中l可以根据接收信号强弱进行调整,当信号足够强时l值可以选的很小,这样计算速度可以大幅度提高同时芯片功耗也得到有效降低。
36.2、在确定待计算校验节点对应的两两运算已经结束后,还会将得到的l维结果扩展为q维,确保后续变量节点更新的完整性,加快译码收敛速度。
37.3、针对所有北斗三代卫星导航信号采用64进制的ldpc译码h矩阵的列重dv为2时,均可以应用本发明提供的方法简化变量节点更新过程,将计算得到当前校验节点信息更新完成后与相加并存储,这样将变量节点的更新与校验节点信息更新融合在一起,完成校验节点的同时即完成了变量节点信息的更新;
38.或者在所有校验节点更新完成进行下一次迭代运算更新新一轮校验方程时,从存储器的下半部分开始读取运算,后续迭代依次上半部分下半部分轮流进行,这样在更新完所有校验节点信息后即完成了变量节点的更新直接进行译码结果判断即可。
39.本发明提供的译码方法能够使译码资源得到缩减的同时还节省了中间庞大的读写时序,从而加快了译码速度,降低了译码逻辑的复杂度及后期芯片的使用功耗。
附图说明
40.图1是现有技术提供的译码方法中一次两两计算覆盖面积示意图。
41.图2是本发明实施例提供的一种多进制ldpc码译码方法的流程图。
42.图3是本发明实施例提供的另一种多进制ldpc码译码方法的流程图。
43.图4是本发明实施例提供的一种校验方程更新流程图。
44.图5是本发明实施例提供的另一种校验方程更新流程图。
45.图6是本发明实施例提供的一种节点信息更新流程图。
46.图7是本发明实施例提供的译码方法中一次两两计算覆盖面积示意图。
具体实施方式
47.为使本发明的目的、技术方案和优点更加清楚,下面结合具体实施例对发明进行清楚、完整的描述。
48.本发明实施例提供了一种多进制ldpc码译码方法,首先对多进制ldpc译码的背景进行介绍。
49.ldpc码是线性分组码的一类,其编码过程可以描述为一个信息矢量m和一个矩阵相乘的结果,即:
50.c=m
·gꢀꢀ
(1)
51.其中g称为生成矩阵,是由k个n维矢量{g0,g1,g2……gk-1
}构成的矩阵,m是信息序列分组{m0,m1,
……mk-1
};c是编码得到的n维码字输出{c0,c1,
……ck-1
},其中矢量与矩阵的乘法是在伽罗华域上进行的。对于任意的m个线性独立行的m
×
n阶矩阵g,存在有一个具有n-k线性独立的(n-k)
×
n阶矩阵h(h矩阵的元素是取自0到q-1的q个元素),它使得g的行空间中的任意向量都和h的行正交,且与h的行正交的任意向量都在g的行空间中。因此我们用另一种方法来描述由g生成的(n,m)线性码:一个n维向量c是g生成的码字中的码字,其充要条件为:
52.c
·ht
=0
t
ꢀꢀ
(2)
53.本发明提供的译码方法适用于所有的北斗三代卫星导航系统,以下,仅以在北斗三代卫星导航系统b2a信号格式中,b-cnav3导航电文采用q=64(2^6)进制ldpc(162,81)编
码作为示例进行进一步说明。
54.该ldpc编码的编码长度n=162个码字符号,信息长度m=81个码字符号,每个码字包含6bit信息,校验矩阵h为81*162的稀疏矩阵即h矩阵行数为m=81,列数为n=162,h矩阵的元素取自0到63的q=64个元素,在北斗导航电文中,校验矩阵是固定的,其行重dc为4,列重dv为2,因此根据校验矩阵可以得到81个校验方程共162个未知数,其中每个校验方程中包含4个未知数,每个未知数遍历2次。
55.46x
1,20
45x
1,68
44x
1,110
15x
1,131
=0
56.58x
2,27
56x
2,72
60x
2,105
62x
2,133
=0(3)
57.54x
3,14
7x
3,43
38x
3,102
23x
3,147
=0
[0058][0059]
22x
81,10
15x
81,52
12x
81,91
33x
81,133
=0
[0060]
每个校验方程的系数即为校验矩阵h中每行非零元素的取值,未知数的下标为校验矩阵h中非零元素的位置,未知数的解即为更新后变量节点信息,因此译码实质就是通过围绕校验矩阵h在行方向和列方向上的计算,从而得到满足上式(2)条件向量c的值。
[0061]
以下,对本发明提供的多进制ldpc码译码方法的具体步骤进行介绍,当然,本专利中除去概率值加法运算外其他针对校验方程的所有运算均为在伽罗华域上的运算。
[0062]
由前述可知,多进制ldpc码由有限域gf(q)(q=2r)下大小为m
×
n的校验矩阵h的零空间定义,h的每一行对应一个校验方程,h的每一列上的非零元素对应一个变量节点,即,变量节点个数为分组码的码长即h矩阵的列数n,校验节点表示分组码中每个变量节点之间的约束关系,节点个数为h矩阵的行数m即校验方程的个数。
[0063]
如图2和图3所示,多进制ldpc码译码方法包括下述步骤:
[0064]
步骤s1、利用对数似然比估计待译码信息中的每个变量节点初始概率得到初始化信息,并存储初始化信息。
[0065]
步骤s101、采用下述公式得到初始化信息初始化信息包括多个初始元素-概率值:
[0066]
其中,n的取值为1~n(例如:1~162),t的取值为0~(q-1)(例如:0~63),xn表示校验方程的解,即,向量c中每个元素的初始取值;
[0067]
步骤s102、将存储在矩阵pp中,其中pp大小为q
×n×dv

[0068]
步骤s2、将变量节点信息进行转置与逆转置处理。
[0069]
对变量节点信息中的进行转置处理,即每个变量节点信息的q个概率取值分别与h矩阵中对应元素进行有限域乘法计算,逆转置是q个概率取值分别与h矩阵中对应元素进行有限域除法计算,其中逆转置在更新变量节点信息前使用。
[0070]
其中,变量节点信息为初始变量节点信息或迭代更新信息中的变量节点信息。
[0071]
s3、更新变量节点向校验节点传递的信息r
t
(m

n),得到q维更新校验节点信息,更新过程执行若干个两两计算,每个两两计算均执行l维有限域加法和l维普通域加法,其中,l《q。
[0072]
如图4和图5所示,该步骤主要包括:
[0073]
s301、更新当期校验方式时,获取当前校验方程中所有待计算校验节点的计算公式。
[0074]
以前述式(3)中校验方程为例,在对第一个校验方程46x
1,20
45x
1,68
44x
1,110
15x
1,131
=0求解时,分别得到校验节点x
1,20
,x
1,68
,x
1,110
和x
1,131
的计算公式。其中,x
1,20
计算公式为:
[0075]
s302、针对当前待计算校验节点,执行α
m(n-1)
β
m(n-1)
两两运算,在计算过程中执行l维有限域加法和l维普通域加法,得到l维更新校验节点信息,其中l《q。
[0076]
当然,在首次执行步骤s302之前,步骤还包括:将当前校验方程中所有待计算校验节点对应的初始值按照概率值从大到小排序,选取其前l个值作为输入节点信息进行后续两两计算。
[0077]
在上述情况下,以计算x
1,20
为例,该步骤s302包括:
[0078]
计算45x
1,68
44x
1,110

[0079]
(1)针对x
1,68
中t=t1(t取0~63)的情况:将其分别与x
1,110
中前l个值中的每个t取值一一相加,相加过程中,两者的t之间为伽罗华域的元素相加,每个概率p值为普通域相加,需计算l次有有限域加法和l次有普通域加法;
[0080]
(2)同理,针对x
1,68
中t取其他值的计算方式与前述相同。
[0081]
需要说明的第一点是,执行每个两两计算时均采用边选择边排序方法。即,每计算出一个概率和值及元素值时,与l维向量已有的存储结果进行比较判别,首先判断此元素值的概率是否是第一次出现,如果是第一次出现,需要将此概率值根据大小顺序将其插入存储l维结果向量的适当位置;如果不是第一次出现,则需要比较当前概率值与该元素已有概率值的大小,如果大于已有概率值,则需要用当前概率值代替已有概率值,如果小于已有概率值,则保持原概率值不变,当前概率值无效。依次遍历完l*l个概率和结果,得到l维元素的概率值。
[0082]
需要说明的第二点是,本发明中的l可以根据接收信号强弱进行调整,当信号足够强时l值可以选的很小。
[0083]
s303、判断与当前待计算校验节点对应的两两运算是否全部结束,如果没有结束,将l维校验节点信息对应的l维概率值作为输入节点信息,继续执行步骤s302-s303,否则,执行步骤s304:
[0084]
如前,该步骤用于判断x
1,68
对应的两两运算是否结束,本实施例中,在计算x
1,68
时需要执行两次两两运算,因此,在执行完一一两两运算后,还会重复s302-s303,直至确定所有的两两运算执行完毕后,执行步骤s304。
[0085]
s304、如图5所示,将l维更新校验节点信息扩展为q维,得到q维更新校验节点信息;
[0086]
选取α
m(n-1)
向量l维元素的第一个元素,即选取α
m(n-1)
(1)及其对应概率值分别与β
m(n 1)
向量的q维元素及其对应概率值进行伽罗华域上的元素加法及普通域上的概率加法运算,并将每次加法运算得到元素结果与已有的l维元素值进行比较,如果全不相同则存储此元素及其对应概率值,否则此元素及其对应概率值视为无效。依次进行q次比较运算后得
到了q维向量结果。即将l维结果扩展为q维。
[0087]
s305、判断当前校验方程的所有校验节点是否已完成更新,如果没有,执行步骤s302-步骤s305完成对所有校验节点的更新;否则,根据当前校验节点更新信息完成对当前校验方程的更新,将下一个校验方程作为当前校验方程,继续执行步骤s301-步骤s305,完成对所有校验方程的更新。
[0088]
s4、在更新校验节点信息的同时更新变量节点信息p
t
(n

m),得到各变量节点概率。
[0089]
如图6所示,其包括:
[0090]
将生成的q维更新校验节点信息与其错位的初始信息相加并存储,其中,处于同一列的两个校验节点信息属于互为错位。
[0091]
步骤s5、译码判决:对第k次迭代更新信息进行译码判决,如果成功输出结果,否则重复步骤s2~步骤s5。
[0092]
其将得到的q维更新校验节点信息代入式(2)判断是否译码成功。
[0093]
在一种可能的实现方式中,步骤s4还可以采用下述方式:将生成的q维更新校验节点信息与其对应的初始信息相加并存储;则在这种情况下,其还包括步骤s6:在进行下一次迭代运算更新下一轮校验方程时,从存储器的下半部分开始读取运算,后续迭代依次上半部分下半部分轮流进行。
[0094]
本发明实施例提供的多进制ldpc码译码方法,其主要有以下优点:
[0095]
1、本发明中,在更新每个校验方程时,先将其dc个校验节点信息分别进行降序排列,选取其前l个值作为输入节点信息进行两两计算,因此α
m(n-1)
与β
m(n 1)
计算量由原来的q维缩减为l维,即进行l*l个有限域上的加法和l*l个普通域上的加法,并从l*l个结果中选取前l个有限域元素及其对应的概率大值,其中确保每个有限域元素所选取的概率值是此有限域元素对应的概率值的最大值。
[0096]
优化后两两计算覆盖面积如图7重叠阴影部分所示,计算量大大缩减,存储器资源也由原来的q缩减为l。其中l可以根据接收信号强弱进行调整,当信号足够强时l值可以选的很小,这样计算速度可以大幅度提高同时芯片功耗也得到有效降低。
[0097]
2、在确定待计算校验节点对应的两两运算已经结束后,还会将得到的l维结果扩展为q维,确保后续变量节点更新的完整性,加快译码收敛速度。
[0098]
3、针对所有北斗三代卫星导航信号采用64进制的ldpc译码h矩阵的列重dv为2时,均可以应用本发明提供的方法简化变量节点更新过程,将计算得到当前校验节点信息更新完成后与相加并存储,这样将变量节点的更新与校验节点信息更新融合在一起,完成校验节点的同时即完成了变量节点信息的更新;
[0099]
或者在所有校验节点更新完成进行下一次迭代运算更新新一轮校验方程时,从存储器的下半部分开始读取运算,后续迭代依次上半部分下半部分轮流进行,这样在更新完所有校验节点信息后即完成了变量节点的更新直接进行译码结果判断即可。
[0100]
由上述两种方式相较于在所有校验方程的节点信息完成后再进行运算处理的,因此需要将之前计算出的校验节点信息依次写入存储器,待使用时再依次读出来完成上述操作后重新写回去的方式而言,其可以大大节省中间大量的读写时序,大大缩短了译码中间的等待时间,加快了译码速度,降低了译码逻辑的复杂度及后续芯片功耗。例如,对于北斗
三代b-cnav3导航电文(162,81)而言,每次迭代运算节约的读写时序仅为64*162*2*2次。
再多了解一些

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

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

相关文献