一种viterbi译码回溯深度动态改变的方法与流程

文档序号:19729458发布日期:2020-01-18 03:46阅读:1346来源:国知局
一种viterbi译码回溯深度动态改变的方法与流程

本发明涉及通信领域viterbi译码算法实现方法,尤其涉及一种viterbi译码回溯深度动态改变的方法。



背景技术:

信道编码是现代通信系统广泛采用的一种差错控制措施。利用将“数据序列”转变成“更好的序列”产生冗余比特,这些冗余比特可以用于检测错误和纠正错误。咬尾卷积码是信道编码中最为重要的一类。

viterbi(维特比算法)是对咬尾卷积编码进行译码方法之一,它的限制长度为7,编码速率为1/3,使用码块的最后6bit信息来初始化6个编码移位寄存器。viterbi算法其实就是多步骤每步多选择模型的最优选择问题,其在每一步的所有选择都保存了前续所有步骤到当前步骤当前选择的最小值(或者最大值)以及当前代价的情况下前继步骤的选择。依次计算完所有步骤后,通过回溯的方法找到最优选择路径。例如(3,1,7)咬尾卷积码在使用viterbi算法进行译码时,在每一时间内,要遍历64种状态,如此大的运算量对终端的处理速度提出了很高的要求。首先计算每个待译码的bit对应64种状态的pm值(pathmetric,路径度量值),同时保存每个状态的trellis值。然后找出最优的pm值,即64状态中找出最大pm值,最后从待译码的末尾往前逐个回溯输出每个bit值,现有技术的trellis和回溯的深度是固定的。

这种方法效率低,对通信带来的时延很大,仅适用于低速、小容量、对实时性要求低的通信系统。但是,随着通信技术的发展,低速、小容量的通信显然不能满足人们的需求,人们更希望速率高、实时性好的通信系统。



技术实现要素:

有鉴于此,为了解决现有技术的问题,本发明提供一种viterbi译码回溯深度动态改变的方法,可以动态改变trellis与回溯的深度,也就是不需要对所有的待译码的bit一次性做完trellis,再一次性回溯输出每个bit值。

本发明是通过以下技术方案实现的:

根据本发明的第一种方案:一种viterbi译码回溯深度动态改变的方法,包括以下步骤:

步骤1、初始化参数;

步骤2、根据初始化参数做设定bit深度的下限值的trellis;

步骤3、找出最优的pm值作为最优路径;

步骤4、从找到的最优路径开始回溯做的trellis深度,回溯完只输出第一个译码比特;

步骤5、检查是否所有bit都完成译码,如果是则结束;如果否则接着向前移动一个bit,随后重复步骤2至步骤5,直到所有bit都完成译码。

在上述方案的基础上,在步骤1和步骤2之间还包括预做设定数量bit的trellis的步骤,作为本发明的第二方案。

优选的,上述第二方案中,预做设定数量bit的trellis时,不保存trellis值。

优选的,上述第二方案中,所述设定数量bit为80bit。

作为上述两个方案的更进一步,所述的初始化参数,包括申请内存空间、设置回溯深度。

作为上述两个方案的更进一步,所述的回溯深度是一个范围值,设定的深度越深,占用的内存越大。

作为上述两个方案的更进一步,所述的回溯深度下限值为40bit,上限值为80bit。

作为上述两个方案的更进一步,所述的找出最优的pm值的步骤如下:

步骤a.检查是否有两个以上相等的最大pm值;

步骤b.如果没有,则到步骤c;

如果有,那么继续往前做第一设定bit数的trellis,再检查是否有两个以上相等的最大pm值,如没有则到步骤c;如继续有,再继续往前做第一设定bit数的trellis,直到trellis深度达到设定的回溯深度的上限值,如果还存在两个以上相等的最大pm值,则选择找到的第一个最大pm值作为最优路径;

c.检查最大pm值与第二大pm值相差是否小于10,如果不小于10,则选择最大pm值作为最优路径;

如果小于10,那么继续往前做第二设定bit数的trellis,再检查最大pm值与第二大pm值相差是否小于10;如果小于10,再继续往前做第二设定bit数的trellis,直到trellis深度达到设定的回溯深度的上限值,如果最大pm值与第二大的pm值相差还是小于10,则选择最大pm值作为最优路径。

优选的,所述的第一设定bit数为8。

优选的,所述的第二设定bit数为4。

本发明的有益效果为:

1)节省了内存空间,现有技术的译码方法是要申请2560*4个字节内存空间,本发明的译码方法最多80*4个字节内存空间,也就是节省了40倍的空间,节省了内存就是节省了成本;

2)性能更优于传统方法,也就是误码率更低了。

综上所述,很显然本发明对芯片及嵌入式产品开发的意义重大。

附图说明

图1为本发明的回溯深度动态改变的示意图;

图2为本发明的实施例一的整体方案示意图;

图3为本发明的实施例二的整体方案流程示意图;

图4为本发明的找到最优pm值的流程示意图;

图5为当信噪比较高时,本发明和现有技术的误码率测试结果对比图;

图6为当信噪比较小时,本发明和现有技术的误码率测试结果对比图。

具体实施例

下面结合附图对本公开实施例进行详细描述。

以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

实施例一

与传统的viterbi译码不同,本发明提出一种可以动态改变trellis与回溯的深度,也就是不需要对所有的待译码的bit一次性做完trellis,再一次性回溯输出每个bit值。基本思想是每次只做设定大小的trellis长度,然后回溯输出一个bit。随后再移动一个bit做trellis,再回溯输出一个bit,依次滑动窗口的方式,逐个窗口输出一个bit值。

trellis(交织)指的是每个分支都有两条路,两条路径产生的trellis值只有两种(0,1),通过度量后哪条路径的值大那么trellis的值就哪条路径的值。回溯就是最终解码出来的值,也就是要从64种状态中,通过回溯,从trellis中解出最终的数据。

如图1所示,为本发明的回溯深度动态改变示意图,结合图2和图4对本发明实施例一的viterbi译码回溯深度动态改变的方法的步骤具体说明如下:

步骤1、首先初始化参数。

本发明的初始化参数是指申请内存空间、设置trellis和回溯深度等参数。回溯深度是一个范围值,设定的深度越深,占用芯片内存就越大,成本就越高。具体可以根据实际情况进行设定。本实施例的方法中trellis和回溯深度设定为下限值为40,上限值为80。可以根据设定的条件会动态改变窗口的大小,即改变回溯深度,保证最终译码的性能。

步骤2、做设定bit深度下限值的trellis。

这里做的bit深度是设定的回溯深度的下限值,本实施例中做40bit深度的trellis。

步骤3、找出最优的pm值作为最优路径。

其中,找出最优的pm值的步骤如下:

a.检查是否有两个以上相等的最大的pm值;

b.如果没有,则到步骤c;

如果有,那么继续往前做8个bit深度的trellis,再检查是否有两个以上相等的最大pm值,如没有则到步骤c;如继续有,则继续往前做8个bit深度的trellis,直到trellis深度达到设定的上限值80,还存在两个以上相等的最大pm值,则选择找到的第一个最大pm值作为最优路径;

c.检查最大pm值与第二大的pm值相差是否小于10,如果不小于10,则选择最大pm值作为最优路径;

如果小于10,那么继续往前做4个bit深度的trellis,再检查最大pm值与第二大的pm值相差是否小于10,直到trellis深度达到设定的上限值80,如果最大pm值与第二大的pm值相差还是小于10,则选择最大pm值作为最优路径。

找出最优的pm值的步骤中,往前8个bit或往前4个bit是本发明设定的优选数值,也可以根据需要设定其他数值,不影响本发明的实施,在此也不一一举例说明。

步骤4、从找到的最优路径开始回溯刚才做的trellis深度,回溯完只输出第一个bit;

本实施例中输出的bit为最优路径进行处理来得到译码比特。

步骤5、检查是否所有bit都完成译码,如果是则结束;如果否则接着向前移动一个bit,随后重复步骤2至步骤5,直到所有bit都输出完。

当信噪比较高时,本发明的方法和传统的现有技术的方法的误码率bler结果没有明显的区别。图5是用测试软件进行测试,信噪比为1时得到的本发明和现有技术的误码率结果对比图,两个方法误码率结果一样,它们都能正确译码。

当信噪比较小时,比如snr=-50时,本发明的方法得到的误码率更低。如图6所示,通过对比,不难看出本发明的动态方法性能更优。图中comprenew是依据本发明提出的方法运行结果,compareold是传统方法结果,一共1800bits,本发明的方法正确847bits,错误953bits,传统方法正确846bits,错误954bits。

实施例二

作为本发明的另一个实施例,与实施例一不同的是,在初始化参数之后,还有一个预做80个bit的trellis的步骤,如图3所示。

预做80个bit的trellis,但不保存trellis值,因为一方面是因为刚开始移位寄存器的状态是不确定的,通过做80个bit的trellis来初始化移位寄存器的状态;另一方面通过做80个bit的trellis来积累一定的pm值,可去除噪声,使后面滑动trellis窗口时做回溯输出bit更加准确。

本实施例的其他步骤与实施例一相同,在此不再赘述。

以上仅为说明本发明的实施方式,并不用于限制本发明,对于本领域的技术人员来说,凡在本发明的精神和原则之内,不经过创造性劳动所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1