为了提高传统迭代译码的Turbo译码算法,本文把Turbo码和CRC看成一个级联码,研究利用CRC的冗余来增强Turbo译码性能。由于Turbo码的分量码是卷积码,所以采用基于List Viterbi(LVA)的算法进行Turbo译码。
一、主要思想
Viterbi算法是一种概率译码算法,其译码是寻找使得接收序列条件概率最大的码字,是将接收的信号序列和所有可能的发射码字序列进行相关,然后从中选取似然值最大的序列。因此Viterbi算法是最大似然估计算法。Viterbi算法在码的约束度较小时,速度较快,译码器也较简单。
LVA即列表维特比译码,是一种改进的Viterbi译码算法,与传统仅产生一条最优路径不同的是,LVA算法能产生多条次优路径,通过CRC从中进行选择。主要思想是在原有的Turbo迭代译码基础上,利用迭代的软输出量对分量码即卷积码进行LVA算法,输出多条最优路径,由CRC进行错误检测和提前终止迭代获次优路径输出。LVA译码可在每次分量译码器的译码之后进行。LVA算法处理框图如下:
LVA算法从全局优选路径中选择最有可能的L个正确路径,增大了找到正确路径的概率,代价是增加搜索过程中的计算量和路径存储量。在实际应用中,需要在带来的增益和实现的复杂性之间进行折衷。
LVA算法分为两种:并行次优路径算法(Parallel List Viterbi Algorithm,PLVA)和串行次优路径算法(Serial List Virerbi Algorithm,SLVA)。PLVA通过一次Trellis格图搜索,同时得到L个全局优选路径。SLVA是迭代获得L条路径,第L条路径由所有前L-1条路径获得,例如最优路径L=1,根据L=1得次优路径L=2,根据L=1和L=2得到L=3,依次递推。
二、PLVA算法
PLVA算法与Viterbi算法的步骤大体上相同,只是对于每个时刻的每一个状态,都有2L个路径进入,在2L个路径中选择得L个局部优选路径,当L=I时,就是Viterbi算法。PLVA算法中每个状态优选路径选取如图所示。