一种应用于低轨卫星互联网系统的LDPC译码器逻辑设计方法与流程

文档序号:27757628发布日期:2021-12-03 22:44阅读:230来源:国知局
一种应用于低轨卫星互联网系统的LDPC译码器逻辑设计方法与流程
一种应用于低轨卫星互联网系统的ldpc译码器逻辑设计方法
技术领域
1.本发明涉及低轨卫星互联网系统领域,具体涉及一种应用于低轨卫星互联网系统的ldpc译码器逻辑设计方法。


背景技术:

2.低轨卫星互联网是指利用低轨卫星星座实现全球互联网无缝链接服务。相对于地球同步轨道卫星,传输延时更短,路径损耗更小;相对于光纤,低业务密度地区部署便捷、成本低。一方面,目前全球还有43亿人口没有接入互联网,低轨卫星互联网成为经济、高效解决方案;另一方面,卫星轨道和频率资源有限,先申请先使用原则下,抢占资源也成为低轨卫星发展重要推动力。
3.在低轨通信系统中为了保障信息能够有效、可靠、安全地从信源传递到信宿,往往要对信息进行信道编码,而信道编码的意义主要通过增加冗余度来保证信息的可靠性,但同时又增加了复杂度,浪费了系统带宽,使有效性降低了。信道纠错编码理论就是既重点保证传输的可靠性,又尽量保证有效性这种矛盾中不断发展的,在这两者之间不断寻找着一种有效的平衡。
4.在低轨通信系统中,现有译码方法普遍存在吞吐量小、资源使用率偏高的问题。


技术实现要素:

5.本发明的目的在于提供一种应用于低轨卫星互联网系统的ldpc译码器逻辑设计方法,用以解决现有低轨通信系统中的译码方法存在吞吐量小、资源使用率偏高的问题。
6.为实现上述目的,本发明的技术方案为:
7.一种应用于低轨卫星互联网系统的ldpc译码器逻辑设计方法,包括以下步骤:
8.步骤1:初始化译码器的输入对数似然比;
9.步骤2:计算当前译码器的判决输出并作校验;
10.步骤3:根据步骤2的校验结果,判断是否结束译码;
11.步骤4:码元节点到校验节点的信息传递;
12.步骤5:校验节点到码元节点的信息传递;
13.步骤6:循环步骤2

5,直至译码完成。
14.进一步地,作为优选技术方案,所述步骤1中,译码器的输入对数似然比为llr
n

[0015][0016]
其中,校验节点和码元节点之间互相传递的消息z
n

m
(iter)和l
m

n
(iter)初始化为0,迭代次数iter初始化为0,这里iter代表当前已迭代的次数;
[0017]
z
n

m
(0)=0
[0018]
l
m

n
(0)=0
[0019]
进一步地,作为优选技术方案,所述步骤2的具体过程为:
[0020]
步骤2

1:计算每个比特的对数似然比z
n

[0021][0022]
步骤2

2:根据z
n
作判决,得到当前译码器的输出比特y
n

[0023][0024]
(n=0,1,2

n

1)
[0025]
步骤2

3:检查y
n
是否满足所有的校验,即是否满足下面n

k个校验方程:
[0026][0027]
若满足全部校验,表示y
n
是合法的,设置校验标志flg=0;若有任何一个校验不满足,表示y
n
是非法的,设置校验标志flg=1。
[0028]
进一步地,作为优选技术方案,所述步骤3的具体过程为:
[0029]
当步骤2

3中的校验标志flg=0时,则说明当前译出的是一个合法码字,停止译码,输出检验flg和输出比特y
n

[0030]
当步骤2

3中的校验标志flg=1时,说明当前译出的不是合法码字,如果已达最大迭代次数,则停止译码,输出检验flg和输出比特y
n
;否则继续下一步骤,迭代次数iter加1。
[0031]
进一步地,作为优选技术方案,所述步骤4的具体过程为:
[0032]
计算码元节点向校验节点传递的消息z
n

m
(iter):
[0033][0034]
其中,m(n)表示和第n个码元节点相连的校验节点的编号集合,需要计算的z
n

m
的个数等于校验矩阵h的重量。
[0035]
进一步地,作为优选技术方案,所述步骤5的具体过程为:
[0036]
计算校验节点向码元节点传递的消息l
m

n
(iter):
[0037][0038][0039]
其中,n(m)表示与第m个校验节点相连的码元节点的编号集合,采用normalized

bp算法,α是配置的参数。
[0040]
进一步地,作为优选技术方案,所述步骤5的具体过程为:
[0041]
计算校验节点向码元节点传递的消息l
m

n
(iter):
[0042][0043][0044]
其中,n(m)表示与第m个校验节点相连的码元节点的编号集合,采用offset

bp算法,β是配置的参数。
[0045]
进一步地,作为优选技术方案,在计算校验节点向码元节点传递的消息之前,先提取原始校验矩阵h_matrix中的特征信息,并拆分成4个参数表格,分别是col_wt_parameter、row_wt_parameter、row_pos_parameter、row_shift_parameter,
[0046]
其中,col_wt_parameter为rom,用于存储原始校验矩阵每列的重量,即非0元素的个数;
[0047]
row_wt_parameter为rom,用于存储原始校验矩阵每行的重量,即非0元素的个数;
[0048]
row_pos_parameter为rom,用于存储原始校验矩阵中非0元素按列自然排序后的序号再按行读取出来后的编号排列,取值范围为[0,w

1],其中w为校验矩阵h(n

k,n)的重量,即非0元素的个数;
[0049]
row_shift_parameter为rom,用于在储原始校验矩阵中非0元素所在列的序号仅非0元素按行排序,取值范围为[0,n

1],n为校验矩阵h(n

k,n)的总列数。
[0050]
本发明相对于现有技术,具有如下有益效果:
[0051]
(1)本发明通过采用将原始校验矩阵h_matrix中的特征信息提取并拆分成4个参数表格的创新方式,能够有效降低对memory资源的使用率,大大提高了系统的译码性能。
[0052]
(2)本发明相较于现有逻辑设计方法,能够在很大程度上提高译码器的吞吐量,提升系统的性能。
附图说明
[0053]
图1为ldpc码的图表示;
[0054]
图2为ldpc译码流程图;
[0055]
图3为ldpc译码逻辑实现框图;
[0056]
图4为状态机跳转示意图。
具体实施方式
[0057]
下面结合实施例及附图,对本发明作进一步的详细说明,但本发明的实施方式不限于此。
[0058]
首先,为更好地了解ldpc码,下面对ldpc码进行大致介绍,具体如下:
[0059]
ldpc码是一种线性分组码,编码前信息比特数记为k,编码后比特数(码长)记为n。其校验矩阵h有n

k行n列,每一行对应一个校验关系,每一列对应一个码元(比特)。n维向量c=(c0,c1,c2…
c
n
‑1)是一个码字,当且仅当ch
t
=0。校验矩阵h中的元素是1或0,低密度的含义就是校验矩阵h是稀疏的,即其中1只占很小的一部分,大部分元素都是0。校验矩阵h的一个例子如下(此处n=15):
[0060][0061]
校验矩阵h的i行j列元素h(i,j)如果是1,则表示第i个校验涉及到了第j个码元。
这种关系可以用tanner图表示,如图1所示。将码元作为一个顶点集合v,校验作为一个顶点集合c,若h(i,j)=1,则v中第i个节点和c中第j个节点之间有一条边。这样,ldpc码可以表示成一个二分图,具有如下性质:图中的顶点分为v和c两个不相交的集合,v中有n个节点,c中有n

k个节点,图中的每一条边都连接c中的一个节点和v中的一个节点,边的数量等于校验矩阵h的重量。
[0062]
基于ldpc码的tanner图表示,可以采用基于置信度传播的迭代译码。这种译码方法的性能最好,也利于实现。
[0063]
该算法是一种软输入软输出的译码算法,它接收码元符号的可靠性度量(对数似然比llr),通过校验更新每个符号的可靠度。每次迭代时,校验节点和码元节点之间传递关于码元为0或1的置信度,通过多次迭代提高每个码元的可靠性度量,最终得到可靠的判决。
[0064]
用m(n)表示与第n个码元节点相连的校验节点编号的集合,即校验矩阵h第n列中1的位置。用n(m)表示与第m个校验节点相连的码元节点编号的集合,即校验矩阵h第m行中1的位置。用q
n

m
(0)和q
n

m
(1)表示从码元节点n到校验节点m的消息,分别表示码元n为0和码元n为1的概率。用r
m

n
(0)和r
m

n
(1)表示从校验节点m到码元节点n的消息,分别表示码元n为0和码元n为1的概率。显然q
n

m
(0)+q
n

m
(1)=1,r
m

n
(0)+r
m

n
(1)=1
[0065]
定义z
n

m
和l
n

m
是对数似然比。显然,由于码元为0的概率和码元为1的概率和恒为1,传递消息时只用传递该似然比即可。
[0066]
实施例1
[0067]
如图2所示,本实施例所述的一种应用于低轨卫星互联网系统的ldpc译码器逻辑设计方法,包括以下步骤:
[0068]
步骤1:初始化译码器的输入对数似然比llr
n

[0069][0070]
其中,校验节点和码元节点之间互相传递的消息z
n

m
(iter)和l
m

n
(iter)初始化为0,迭代次数iter初始化为0,这里iter代表当前已迭代的次数;
[0071]
z
n

m
(0)=0
[0072]
l
m

n
(0)=0
[0073]
步骤2:计算当前译码器的判决输出并作校验,具体如下:
[0074]
计算每个比特的对数似然比z
n

[0075][0076]
根据z
n
作判决,得到当前译码器的输出比特y
n

[0077][0078]
(n=0,1,2

n

1)
[0079]
检查y
n
是否满足所有的校验,即是否满足下面n

k个校验方程:
[0080][0081]
若满足全部校验,表示y
n
是合法的,设置校验标志flg=0;若有任何一个校验不满足,表示y
n
是非法的,设置校验标志flg=1。
[0082]
步骤3:根据步骤2的校验结果,判断是否结束译码,具体如下:
[0083]
当校验标志flg=0时,则说明当前译出的是一个合法码字,停止译码,输出检验flg和输出比特y
n

[0084]
当校验标志flg=1时,说明当前译出的不是合法码字,如果已达最大迭代次数,则停止译码,输出检验flg和输出比特y
n
;否则继续下一步骤,迭代次数iter加1。
[0085]
步骤4:码元节点到校验节点的信息传递;
[0086]
计算码元节点向校验节点传递的消息z
n

m
(iter):
[0087][0088]
其中,m(n)表示和第n个码元节点相连的校验节点的编号集合,需要计算的z
n

m
的个数等于校验矩阵h的重量。
[0089]
步骤5:校验节点到码元节点的信息传递;
[0090]
采用normalized

bp算法计算|l
m

n
|,计算校验节点向码元节点传递的消息l
m

n
(iter):
[0091][0092][0093]
其中,n(m)表示与第m个校验节点相连的码元节点的编号集合,α是配置的参数。
[0094]
步骤6:循环步骤2

5,直至译码完成。
[0095]
实施例2
[0096]
本实施例与实施例1基本相同,不同的地方是,本实施例的步骤5中,采用offset

bp算法计算|l
m

n
|,具体地,
[0097]
计算校验节点向码元节点传递的消息l
m

n
(iter):
[0098][0099][0100]
其中,n(m)表示与第m个校验节点相连的码元节点的编号集合,β是配置的参数。
[0101]
如图3所示为本发明的译码器逻辑实现框图,下面对图中各个模块的功能以及实现流程进行相应说明。
[0102]
图3中,cpu_if模块主要完成与cpu接口的信号处理,具体包括:
[0103]
1、与cpu接口部分,完成cpu总线的读写控制;
[0104]
2、与控制模块部分,发出控制命令以及接收译码状态信息;
[0105]
3、与ram_llr部分,完成cpu向ram_llr缓存的写入操作;
[0106]
4、与vnu部分,接收vnu单元的译码结果。
[0107]
图3中,control模块内部的一个状态机(state)定义5种状态:idle、init、vnu_up、cnu_up、finish,具体如图4所示,其中
[0108]
idle状态表示:idle空闲状态,系统上电复位或ldpc译码器未工作时的状态;
[0109]
init状态表示:cpu首先往ram_llr写完所有llr信息后,cpu向ldpc译码器配置开始译码标志寄存器start,ldpc译码器开始工作,状态机由idle空闲状态跳转至初始化init状态,首先初始化var2chkmsg及chk2varmsg缓存,即将两片memory写入0;状态机跳转至vnu_up状态。
[0110]
vnu_up状态表示:vnu_up为变量节点更新状态,在更新变量节点的同时,同步完成似然比输出、译码判决,完成:1、var2chkmsg的更新;2、decode_result的更新,之后,状态跳转至cnu_up。
[0111]
cnu_up状态表示:cnu_up为校验节点更新状态,在更新完校验节点的同时,同步完成校验,完成:1、chk2varmsg的更新;2、对译码结果decode_result进行模2和校验。根据当前校验结果及迭代次数,决策跳转状态,如果校验通过,状态跳转至finish;如果校验未通过,当前迭代次数达到最大值,状态跳转至finish,如当前迭代次数未达到最大迭代次数,状态跳转至vnu_up。
[0112]
finish状态表示:该状态指示完成ldpc译码完成。
[0113]
图3中,vnu模块主要完成变量节点更新功能,变量节点更新具体处理流程如下:
[0114]
1、vnu模块在收到start_vnu启动信号,启动模块;
[0115]
2、vnu读取colwt_parameter存储器,获取每一列的colwt信息;
[0116]
3、vnu找到每列与当前变量节点相连接的校验节点,从chk2varmsg里面读取相应由校验节点传递给变量节点的值。
[0117]
4、vnu根据待更新变量节点的列号,从ram_llr里面读取相应的似然比;
[0118]
5、根据公式计算由变量节点向校验节点传递的消息z
n

m
(iter):
[0119][0120]
m(n)表示和第n个变量节点相连的校验节点的编号集合。需要计算的z
n

m
的个数等于校验矩阵h的重量。
[0121]
6、vnu将变量节点更新的值写入var2chkmsg,至此完成校验节点的更新。
[0122]
在进行变量节点更新的同时,同步进行译码。首先计算变量节点的输出似然比,公式为:
[0123][0124]
然后,根据z
n
作判决,得到当前译码器的输出比特y
n
[0125][0126]
将译码结果更新至接口decode_result。
[0127]
图3中,cnu模块该模块主要完成校验节点更新功能,校验节点更新具体处理流程如下:
[0128]
1、cnu模块在收到start_cnu启动信号,启动模块;
[0129]
2、cnu读取rowwt_parameter存储器,获取每一行的rowwt信息;
[0130]
3、与步骤2并行,cnu读取rowpos_parameter存储器,获取每一行读取var2chkmsg缓存的地址,该地址等于写入chk2varmsg缓存的地址;
[0131]
4、根据读取变量节点向校验节点传递的信息值z
n'

m
,计算校验节点向变量节点传递的消息l
m

n
(iter):
[0132]
符号计算公式:
[0133][0134]
幅值计算公式如下:
[0135][0136]
cnu使用offset

bp算法进行行更新计算;
[0137]
5、cnu将校验节点更新的值写入chk2varmsg,至此完成校验节点的更新。
[0138]
在进行变量节点更新的同时,同步进行校验。
[0139]
1、cnu从row_shift_parameter存储器里面读取待校验的bit位置。
[0140]
2、根据译码结果位置索引,寻址到对应的译码bit位,对译码bit位进行模2和累加。
[0141]
3、如果中途校验错误,则直接清零check_result寄存器,如果校验成功则置位check_result。
[0142]
图3中,var2chkmsg为ram(random access memory),用于缓存变量节点向校验节点传递的信息,大小为校验矩阵h非常0元素的个数,即为两种类型节点存在连接的个数(单位:单个变量节点向单个校验节点传递的信息);
[0143]
chk2varmsg为ram(random access memory),用于缓存校验节点向校变量点传递的信息,大小为校验矩阵h非常0元素的个数,即为两种类型节点存在连接的个数(单位:单个校验节点向单个变量节点传递的信息);
[0144]
ram_llr为ram(random access memory),用于缓存输入的对数似然比(单位:llr);
[0145]
decode_result为ram(random access memory),用于缓存译码结果,数量为n(单位:bit)
[0146]
如图3所示,在计算校验节点向码元节点传递的消息之前,先提取原始校验矩阵h_matrix中的特征信息,并拆分成4个参数表格,分别是col_wt_parameter、row_wt_parameter、row_pos_parameter、row_shift_parameter,
[0147]
其中,col_wt_parameter为rom,用于存储原始校验矩阵每列的重量,即非0元素的个数;
[0148]
row_wt_parameter为rom,用于存储原始校验矩阵每行的重量,即非0元素的个数;
[0149]
row_pos_parameter为rom,用于存储原始校验矩阵中非0元素按列自然排序后的序号再按行读取出来后的编号排列,取值范围为[0,w

1],其中w为校验矩阵h(n

k,n)的重量,即非0元素的个数;
[0150]
row_shift_parameter为rom,用于在储原始校验矩阵中非0元素所在列的序号仅
非0元素按行排序,取值范围为[0,n

1],n为校验矩阵h(n

k,n)的总列数。
[0151]
本发明通过采用上述方法,能够有效提高译码器的吞吐量,即提升译码器的性能,具体理由如下:
[0152]
吞吐量参数由译码时延参数表征,即由cpu配置启动一次译码到译码完成所需要的时间,介绍如下:
[0153]
start_time:cpu总线配置硬件译码器启动时间;
[0154]
end_time:译码器完成译码的时间;
[0155]
即译码时长:decode_time=end_time

start_time
[0156]
计算吞吐量公式:
[0157][0158]
计算时译码时长取近似值decode_time=init_time+iter_time
[0159]
其中init_time为初始化var2chkmsg及chk2varmsg所消耗的时间,iter_time为迭代译码所消耗的时间。
[0160]
由于译码信息的bit数等于校验矩阵的列数,故推理出如下公式:
[0161][0162]
其中init_time为初始化var2chkmsg及chk2varmsg所消耗的时间,iter_time为迭代所消耗的时间,h_colnum为校验矩阵的列数。
[0163]
迭代所消耗的时间iter_time展开后如下:
[0164]
iter_time=iternum*time_of_one_iter
[0165]
其中iternum为译码完成所需要的迭代次数,time_of_one_iter为一次迭代所消耗的时间,推出如下计算公式。
[0166][0167]
由于:
[0168]
time_of_one_iter=vnutime+cnu_time
[0169]
其中vnutime为一次列操作所消耗的时间(变量节点更新),其中cnutime为一次行操作所消耗的时间(校验节点更新)。由于vnutime近似等于cnutime,且近似为初始化算消耗的时间init_time。故有如下公式:
[0170][0171]
对于h(n

k,n)的校验矩阵,其重量为w(校验矩阵中非0元素的个数),其中w<(n

k)*n。
[0172]
使用现有常规逻辑方案进行迭代,其吞吐量计算公式如下:
[0173][0174]
使用本专利申请的逻辑方案进行迭代,其吞吐量计算公式如下:
[0175]
[0176]
将本专利申请的吞吐量与现有技术方案的吞吐量进行比较:
[0177][0178]
由于w<(n

k)*n,故采用本专利申请的逻辑设计方法能在很大程度上提高译码器的吞吐量。
[0179]
在低轨卫星互联网系统中,我们采用h(46,68)、h(42,52)两种类型的校验矩阵(可配置为不同类型的提升因子)。
[0180]
当h(n

k,n)校验矩阵采用h(46,68)校验矩阵时,重量w固定为316,性能提升倍率为10。
[0181]
当h(n

k,n)校验矩阵采用h(42,52)校验矩阵时,重量w固定为197,性能提升倍率为11。
[0182]
在实现了吞吐量提升的同时,本发明还有效降低了存储空间(memory)的使用率,具体理由如下:
[0183]
对于h(n

k,n)的校验矩阵,其重量为w(校验矩阵中非0元素的个数),对memory资源进行统计如表1所示:
[0184][0185]
表1现有技术方案与本专利申请的memory资源统计表
[0186]
在memory使用情况方面,将现有技术方案与本专利申请方案进行比对,资源使用比率为:
[0187][0188]
当h(n

k,n)校验矩阵采用h(46,68)校验矩阵时,重量w固定为316,memory资源使用率为21%。
[0189]
当h(n

k,n)校验矩阵采用h(42,52)校验矩阵时,重量w固定为197,性能提升倍率为19%。
[0190]
显然,本专利申请的memory资源使用率相比现有技术方案,有明显降低,能够有效降低对memory资源的占有率,提升系统性能。
[0191]
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1