一种适合无速率码的低时延渐进译码方法

文档序号:7800798阅读:239来源:国知局
一种适合无速率码的低时延渐进译码方法
【专利摘要】本发明公开了一种适合无速率码的低时延渐进译码方法。该方法采用以校验节点为译码顺序的串行BP译码算法,译码复杂度相比普通的BP译码算法减半,也更早的启动译码,并在后面的译码中利用前面译码的结果,非常适合无速率码的流属性。此外,该译码方法还对BP译码过程中线性运算采用基于SSE指令集优化的函数并行执行,并开启多个线程对不同的编码数据进行译码,充分利用了CPU的并行计算能力。还有对复杂的非线性函数计算采用查表法计算,进一步减少了译码运算的复杂度,从而最小化的降低了无速率码的译码时延。
【专利说明】一种适合无速率码的低时延渐进译码方法
【技术领域】
[0001]本发明涉及通信领域的无速率译码技术,尤其涉及一种适合无速率码的低时延渐进译码方法。
【背景技术】
[0002]一般的信道编码在设计时,通常先根据信道状态信息估计信道参数,根据信道参数设计一个码率固定为R的信道纠错编码(由k个输入符号得到η个输出符号,则码率为R=k/n)。当估计的信道参数大于实际的信道参数时,虽然可以实现可靠传输,但是造成了传输的浪费,因为此时可以使用更高码率的信道纠错编码;当估计的信道参数小于实际的信道参数时,不能实现可靠传输,此时需要更低码率的信道纠错编码。而且很多时候,信道还是随时变化或者无法提前判断的,这个时候这些传统的编码就显得难以应付。于是出现了码率可变的无速率码。对于无速率码,由原始数据产生的编码数据包是随着编码过程而源源不断产生的,根据译码的需要可多可少,只要保证能成功译码即可。实际传输的码率取决于实际发送的编码包数目,而需要发送的编码包数目则取决于当时的信道状况。
[0003]无速率码具有三个重要属性:I)自适应链路速率适配:其最终速率决定于信道特性,不需要在传输前估计信道特性而固定码率,实际传输的码率取决于当时的信道状况。2)无速率属性(流属性):发送端可以源源不断的输出编码包,形成一个可以无限延续的编码包流,而没有任何速率约束;3)桶积水效应:接收端不断收集编码包,收集到足够多的编码包即能恢复出所有原始数据包。正是由于无速率码的三个重要属性,使其在广播信道,认知,网络传输,反馈代价较大的通信场合等各个方面具有广泛的应用前景。
[0004]无速率码常用的译码算法有边消除法和BP (置信息)译码算法。由于边消除法只适用于除删信道,一般采用的是BP译码算法。对常用的BP译码算法,一次迭代的过程是为,先对所有的边,更新从变量节点传递给校验节点的置信息;然后对所有的边,更新从校验节点到变量的节点的置信息;然后计算所有的变量节点的置信息之和,并对变量节点进行硬判决;判断硬判决后的变量节点是否满足校验关系,如果满足或者超过最大迭代次数,则结束译码,否则继续进行下一轮迭代。由于在更新校验节点传递给变量节点的置信息时,会涉及到比较复杂的乘除运算,所以BP译码算法的复杂度相对较高。通常BP译码都是通过硬件完成。后来有人提出了新的串行BP译码算法。串行BP译码算法是以变量节点或者校验节点为顺序更新置信息的。相比于普通的BP译码算法,串行BP译码算法在每轮迭代复杂度相同的情况下,迭代次数要减少一半。
[0005]目前无速率码在实际的应用中,如果译码是通过CPU运算执行的,即使采用了串行BP译码算法,仍然存在译码时延称为系统吞吐率的瓶颈。特别较低的信噪比下,由于BP译码的迭代次数较多,加上在迭代的过程中存在复杂的非线性运算,导致译码时延非常大,严重限制了系统的吞吐率效率。

【发明内容】
[0006]本发明的目的是针对现有技术的不足,提供一种适合无速率码的低时延渐进译码方法。
[0007]本发明的目的是通过以下技术方案来实现的:一种适合无速率码的低时延渐进译码方法,采用了串行BP译码、渐进译码、基于SSE指令集优化的函数并行处理、查表法和多线程处理技术,该发明采用的无速率码为Raptor码,设Vi表示第i个变量节点,Cj表示第j个校验节点;Ω (Cj)表示与Cj相连的所有变量节点,Cj\i表示除去Vi之外其他与Cj相连的变量节点的集合;Ω (Vi)表示与Vi相连的所有校验节点,用Ldl(Vi)表示Vi的来自于信道的初始LLR信息,定义变量节点Vi向校验节点Cj传递的LLR信息为Uqij),校验节点Cj向变量节点Vi传递的LLR信息为L(I^i),一次迭代结束后变量节点Vi的LLR信息之和为Qp设NThread表示开启的线程数目,则适合无速率码的低时延渐进译码方法具体如下:
[0008]I)接收端不断接收新的编码包,若当前的码率低于信道容量,则继续等待接收新的编码包,否则,进入步骤2);
[0009]2)若译码线程还没有启动或者已经结束,则启动Nltoead个串行BP译码线程,对第一次加入译码的变量节点的LLR信息之和Qi进行初始化如下:
? O, 对于LDPC码部分的变量节点[麵]Q1-对扣码部分的 变量节点。将当前的迭代次数置O,将译码
Tanner图生长到当前收到的编码包对应的大小,进入3);
[0011]3)每一个译码线程,对不同的编码数据执行串行BP译码算法译码,译码过程如下:
[0012]a)判断当前的迭代次数是否达到最大迭代次数;若是,则译码结束;否则进入b);
[0013]b)按校验节点顺序,从第一个校验节点到最后一个校验节点按步骤c)和d)依次更新LLR信息,然后进入e);
[0014]c)对第j个校验节点Cj,更新与Cj相连的所有的变量节点在该轮迭代中传递给Cj的 LLR 信息{L(qij)}:
[0015]对所有的Vi e Ω (Cj)计算,L(Qij)=Q1-LCrji), Qi=Q1-LCrji)。进入 d);
[0016]d)更新校验节点Cj传递给与之相连的所有的变量节点的LLR信息ILCrjiM和变量节点LLR之和{QJ:
[0017]对所有的Vi e Ω (Cj) ’ L(rJ)= Π aVj-^ Σ 列爲,))’ Q =Q +L(r );
J1; ft ?v"eC;.\tJ
[0018]其中a fsign [Uqij)], sign [Uqij)]表示 Uqij)的符号,β ^-= | L (q^.) | ,供(λ.) = ,这里$⑺的值是通过查表法计算,Π表示连乘,vr表示集合Cj\i中的任一个变量节点。


fl if O < O
[0019]e)对LDPC码部分所有的变量节点进行硬判决:?= Λ 々,进入f); ?表
[O e/.veV1-
示变量节点的硬判决值;
[0020]f)判断判决结果是否满足校验和为O。若满足校验关系,则译码结束,结束译码线程;否则,迭代次数加1,返回a)。
[0021]进一步地,步骤3)里面的步骤d),φ[Χ)的计算是通过对每一路数据进行查表计算。由于函数随着X的增加而迅速递减,将X最大值取到6即可;本发明设计的供(X)函数表格按步径为0.01,计算了 [0,6]范围的值,并归一化为100倍,X超过6的供U)函数值取O。因此迭代的LLR信息值也都归一化为100倍;另外由于舛())的实际值为无穷大,需要用一个较大的值表示;舛O)值的选取原则是防止{QJ溢出的前提下尽可能的大。本发明选取的舛())值为760。
[0022]进一步地,步骤3)里面的步骤c)和步骤d)的加减运算都是通过使用基于SSE指令集优化的函数并行处理。
[0023]本发明的有益效果是:本发明使用串行BP译码算法、渐进译码方法、多线程处理、查表法和基于SSE指令集优化的函数并行处理方法,不仅可以很好的适应无速率码的传输方法,而且具有较低的译码时延。
【专利附图】

【附图说明】
[0024]图1是Raptor码的Tanner图不意图;
【具体实施方式】
[0025]以下结合附图进一步说明本发明。
[0026]本发明一种适合无速率码的低时延渐进译码方法,采用了串行BP译码、渐进译码、基于SSE指令集优化的函数并行处理、查表法和多线程处理技术,该发明采用的无速率码为Raptor码,设Vi表示第i个变量节点,Cj表示第j个校验节点;Ω (Cj)表示与Cj相连的所有变量节点,Cj\i表示除去Vi之外其他与Cj相连的变量节点的集合;Ω (Vi)表示与Vi相连的所有校验节点,用Ldl(Vi)表示Vi的来自于信道的初始LLR信息,定义变量节点Vi向校验节点Cj传递的LLR信息为L (Qij),校验节点Cj向变量节点Vi传递的LLR信息为L (rji),一次迭代结束后变量节点Vi的LLR信息之和为Qi。设Nltoad表示开启的线程数目,则适合无速率码的低时延渐进译码方法具体如下:
[0027]I)接收端不断接收新的编码包,若当前的码率低于信道容量,则继续等待接收新的编码包,否则,进入步骤2);
[0028]2)若译码线程还没有启动或者已经结束,则启动Nltoead个串行BP译码线程,对第一次加入译码的变量节点的LLR信息之和Qi进行初始化如下:
【权利要求】
1.一种适合无速率码的低时延渐进译码方法,其特征在于,该方法采用了串行BP译码、渐进译码、基于SSE指令集优化的函数并行处理、查表法和多线程处理技术,该发明采用的无速率码为Raptor码,设Vi表示第i个变量节点,Cj表示第j个校验节点;Ω (Cj)表示与h相连的所有变量节点,q\i表示除去Vi之外其他与&相连的变量节点的集合;Ω (Vi)表示与Vi相连的所有校验节点,用Ldl(Vi)表示Vi的来自于信道的初始LLR信息,定义变量节点Vi向校验节点Cj传递的LLR信息为Uqij),校验节点Cj向变量节点Vi传递的LLR信息为L (rji),一次迭代结束后变量节点Vi的LLR信息之和为Qi,设Nniread表示开启的线程数目,则适合无速率码的低时延渐进译码方法具体如下: 1)接收端不断接收新的编码包,若当前的码率低于信道容量,则继续等待接收新的编码包,否则,进入步骤2); 2)若译码线程还没有启动或者已经结束,则启动Nniread个串行BP译码线程,对第一次加入译码的变量节点的LLR信息之和Qi进行初始化如下:
2.根据权利要求1所述的一种适合无速率码的低时延渐进译码方法,其特征在于步骤3)里面的步骤d),炉(X)的计算是通过对每一路数据进行查表计算,由于舛为函数随着X的增加而迅速递减,将X最大值取到6即可;本发明设计的P(X)函数表格按步径为0.01,计算了 [0,6]范围的值,并归一化为100倍,X超过6的舛X)函数值取0,因此迭代的LLR信息值也都归一化为100倍;另外由于舛O)的实际值为无穷大,需要用一个较大的值表示;供(O)值的选取原则是防止{QJ溢出的前提下尽可能的大,本发明选取的舛O)值为760。
3.根据权利要求1所述的一种适 合无速率码的低时延渐进译码方法,其特征在于步骤3)里面的步骤c)和步骤d)的加减运算都是通过使用基于SSE指令集优化的函数并行处理。
【文档编号】H04L1/00GK103944673SQ201410135606
【公开日】2014年7月23日 申请日期:2014年4月4日 优先权日:2014年4月4日
【发明者】张朝阳, 屠坤, 姚创沐, 张婧, 余启联, 杨潇翔, 付攀玉 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1