一种低延时Viterbi译码方法及系统
技术领域
本发明涉及数据通讯技术领域,尤其涉及一种低延时Viterbi译码方法及一种低延时Viterbi译码系统。
背景技术
在数据通讯中,Viterbi译码算法是一种普遍使用的最大似然算法,通过在网格图上找出最大似然的状态转移路径,实现对接收到的信号的纠错译码。
常见的Viterbi译码器通常包括以下三部分:
分支度量计算单元(Branch Metric Unit,BMU),用于计算接收到的卷积码对应各个分支的度量。
加比选单元(Add Compare Select,ACS),用于将分支度量和累计度量相加,并选择和较小的路径作为幸存路径,并将这个和作为新的累计度量。
回溯判决单元(Traceback Unit,TBU),通过从存储的幸存路径中往前回溯,即可得到解码后的信息。
由于回溯需要先存储一定长度的幸存路径数据(通常是10倍的约束长度以上),才能开始回溯,回溯完成之后,才能开始输出第一个解码数据,所以从解码开始到第一个解码数据输出,至少需要20倍以上的约束长度。因此,对于一些实时性要求很高的应用,这种方法的延迟就难以接受。
发明内容
本发明所要解决的技术问题在于,提供一种低延时Viterbi译码方法及系统,可通过实时更新幸存路径的方法,提高系统的响应速度,具有广泛的适用性。
为了解决上述技术问题,本发明提供了一种低延时Viterbi译码系统,包括:
S1,分支度量计算单元计算卷积码所对应的各分支度量;
S2,加比选单元将各分支度量与对应的累计度量相加以得出各当前度量,将数值较小的当前度量所对应的路径作为幸存路径,并将幸存路径所对应的当前度量作为新的累计度量;
S3,幸存路径计算单元实时计算每个周期内的幸存路径,经过预设倍数的约束长度之后,所有幸存路径的最高位数据均收敛为同一个解码值,输出所述解码值并把幸存路径的剩余数据依次左移。
作为上述方案的改进,所述步骤S2中将数值较小的四个当前度量所对应的路径作为幸存路径。
作为上述方案的改进,所述预设倍数为5倍。
作为上述方案的改进,所述约束长度为3。
作为上述方案的改进,所述周期数量为(预设倍数×约束长度+1)。
相应地,本发明还提供了一种低延时Viterbi译码系统,包括:分支度量计算单元,用于计算卷积码所对应的各分支度量;加比选单元,用于将各分支度量与对应的累计度量相加以得出各当前度量,将数值较小的当前度量所对应的路径作为幸存路径,并将幸存路径所对应的当前度量作为新的累计度量;幸存路径计算单元,用于实时计算每个周期内的幸存路径,经过预设倍数的约束长度之后,所有幸存路径的最高位数据均收敛为同一个解码值,输出所述解码值并把幸存路径的剩余数据依次左移。
作为上述方案的改进,所述加比选单元将数值较小的四个当前度量所对应的路径作为幸存路径。
作为上述方案的改进,所述预设倍数为5倍。
作为上述方案的改进,所述约束长度为3。
作为上述方案的改进,所述周期数量为(预设倍数×约束长度+1)。
实施本发明,具有如下有益效果:
本发明引入新的幸存路径计算单元以替换现有回溯判决单元。幸存路径计算单元实时计算每个周期内的幸存路径,经过预设倍数的约束长度之后,所有幸存路径的最高位数据均收敛为同一个解码值,输出所述解码值并把幸存路径的剩余数据依次左移。因此,再经多次计算后,可连续输出解码数据,从而有效的减少常用的回溯方法所需的延时,提高系统的响应速度,具有广泛的适用性。
附图说明
图1是本发明低延时Viterbi译码方法的流程图;
图2是本发明低延时Viterbi译码方法在t2时刻的状态示意图;
图3是本发明低延时Viterbi译码方法在t3时刻的状态示意图;
图4是本发明低延时Viterbi译码方法在t4时刻的状态示意图;
图5是本发明低延时Viterbi译码系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。仅此声明,本发明在文中出现或即将出现的上、下、左、右、前、后、内、外等方位用词,仅以本发明的附图为基准,其并不是对本发明的具体限定。
参见图1,图1显示了本发明低延时Viterbi译码方法的流程图,包括:
S1,分支度量计算单元计算卷积码所对应的各分支度量;
S2,加比选单元将各分支度量与对应的累计度量相加以得出各当前度量,将数值较小的当前度量所对应的路径作为幸存路径,并将幸存路径所对应的当前度量作为新的累计度量;
所述步骤S2中可将数值较小的四个当前度量所对应的路径作为幸存路径,但不以此为限制。
S3,幸存路径计算单元实时计算每个周期内的幸存路径,经过预设倍数的约束长度之后,所有幸存路径的最高位数据均收敛为同一个解码值,输出所述解码值并把幸存路径的剩余数据依次左移。
所述预设倍数优选为5倍,所述约束长度优选为3,但不以此为限制。相应地,所述周期数量为(预设倍数×约束长度+1),幸存路径为(预设倍数×约束长度+1)bit。例如,当预设倍数为5倍,所述约束长度为3时,则周期数量为16,幸存路径为16bit。
与现有技术不同的是,本发明舍弃了采用回溯以得到解码信息的方法,通过实时更新幸存路径的方法,可以将延迟减少到5倍的约束长度。
下面结合具体的实施例对本发明做进一步的详细描述。
图2~4中,箭头表示状态跳转,实线表示译码为0时的状态跳转,虚线表示译码为1时的状态跳转,箭头上的数字表示分支度量计算单元计算出的分支度量。
如图2所示,从t1时刻开始,收到了码元,从A状态(00)只有两种跳转可能。在t2时刻,计算出来对应的累计度量分别为2(0+2)和0(0+0)。此时的幸存路径也只有两个:A状态对应为0,B状态对应为1。
如图3所示,在t3时刻,计算出来的累计度量分别是:状态A为3(2+1),对应幸存路径为00;状态B为3(2+1),对应幸存路径为01;状态C为2(0+2),对应幸存路径为10;状态D为0(0+0),对应幸存路径为11。
如图4所示,在t4时刻,计算出来的累计度量分别是:状态A为3(2+1+1>0+2+1,取较小的路径),对应幸存路径为下面的分支,即100;状态B为3(2+1+1>0+2+1),对应幸存路径也是下面的分支,即101;状态C为0(2+1+2>0+0+0),对应幸存路径也是下面的分支,即110;状态D为2(2+1+0>0+0+2),对应幸存路径为111。
依次类推,经过16个周期后,在t17时刻,得到4条幸存路径,每条幸存路径为16bit。按照viterbi译码的理论,在经过5倍的译码延迟后,所有4条幸存路径会收敛到同一个起始点,即四条幸存路径的最高位应该是一样的,这一位就是译码的第一bit输出。
继续译码时,幸存路径都只保持16bit长度,每次把最高位输出,剩下的数据依次左移。通过这种方法,就可以实现5倍约束长度的延迟下,连续的输出译码数据。
参见图5,图5显示了本发明低延时Viterbi译码系统的具体结构,其包括:
分支度量计算单元1,用于计算卷积码所对应的各分支度量。
加比选单元2,用于将各分支度量与对应的累计度量相加以得出各当前度量,将数值较小的当前度量所对应的路径作为幸存路径,并将幸存路径所对应的当前度量作为新的累计度量。优选地,所述加比选单元将数值较小的四个当前度量所对应的路径作为幸存路径。
幸存路径计算单元3,用于实时计算每个周期内的幸存路径,经过预设倍数的约束长度之后,所有幸存路径的最高位数据均收敛为同一个解码值,输出所述解码值并把幸存路径的剩余数据依次左移。
所述预设倍数优选为5倍,所述约束长度优选为3,但不以此为限制。相应地,所述周期数量为(预设倍数×约束长度+1),幸存路径为(预设倍数×约束长度+1)bit。例如,当预设倍数为5倍,所述约束长度为3时,则周期数量为16,幸存路径为16bit。
由上可知,本发明通过实时更新幸存路径的方法,可以将延迟减少到5倍的约束长度,从而有效的减少常用的回溯方法所需的延时,提高系统的响应速度,具有广泛的适用性。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。