基于多核DSP零尾卷积Viterbi译码的方法及系统的制作方法

文档序号:9846362阅读:581来源:国知局
基于多核DSP零尾卷积Viterbi译码的方法及系统的制作方法
【技术领域】
[0001 ]本发明涉及一种基于多核DSP零尾卷积Viterbi译码的方法及系统。
【背景技术】
[0002]TD-SCDMA技术是ITU第三代移动通信技术标准之一,同时也是TDMA,FDMA以及CDMA三种多址方式的灵活运用,随着我国对TD-SCDMA的大力扶持,其已成为我国主流三代移动通信技术之一。在TD-SCDMA系统中,一般采用卷积码和Turbo码这两种信道编码方式进行编码,而译码方式则采用Viterbi译码。通常我们用(n,k,m)这种结构来表述卷积编码的结构。其中k为每次输入到卷积编码器的bit数,η为每个k元组码子对应的卷积码输出η元组码子,m为卷积编码存储度,也就是卷积编码器的k元组的级数。若编码输入长度为Τ,则输出长度为(T+m_l)*n/k0
[0003]Viterbi译码算法于1967年由Viterbi本人提出,目的是为了降低卷积译码计算复杂度。它是一种动态规划算法,通过寻找与接收序列汉明距离最少的编码序列,从而实现译码。整个Viterbi—码算法可以简单概括为“相加-比较-存储”。对于(η,k,m)卷积码来说,其每个码段的状态数为21^1个,对每一时刻要做21^1次“相加-比较-存储”操作,其中每一次操作包括2?加法,215—1次比较,同时要保留2km—1条幸存路径。由此可见,Viterbi的计算复杂度与输入序列长度无关,只与约束长度m以及信息源分组k有关。但对于存储来说,随着输入序列长度的增长,译码所需的总的状态数也相应增加,从而会给存储空间带来压力。
[0004]卷积码已用于诸多通信领域,出TD-SCDMA系统外,卫星,WIFI等通信系统同样也使用了零尾卷积。目前主流卷积译码方式为硬件实现,通过硬件加速器的设计以得到快速高效Viterbi译码。但对于不同通信系统来说,卷积编码方式不同,若用硬件实现,则对于不同系统来说Viterbi译码器都需要重新设计,不够灵活,增加了开发成本。而软件实现则灵活度高,但基于DSP核实现又要考虑状态存储因素且运算效率相对较低,存储空间和吞吐率也是制约软件实现Viterbi译码的两大关键因素。
[0005]现有技术中,Viterbi译码算法的基本流程主要如图1所示。其核心运算单元为“加比选”单元。但不管硬件实现或单DSP核运算,都需要对“加比选”单元的输出结果进行存储,输入数据的长度,决定了对存储的需求,最后通过所存结果回溯,从而进行最后的判决输出。

【发明内容】

[0006]针对上述问题,本发明提供一种将待译码软信息序列分段,将分段后的序列分配到各DSP核分别处理,减轻了各DSP核存储压力、提高了并行度的基于多核DSP零尾卷积V iterb i译码的方法及系统。
[0007]为达到上述目的,本发明基于多核DSP零尾卷积Viterbi译码的方法,包括
[0008]SI将待译码信息序列进行分段,其中各段待译码信息序列最小长度I/ > (xn+sn)/k,x为译码器可进行回溯并判决输出的码段,s为各段增加的回溯码段;
[0009]S2将分组后的各段待译码信息序列分配到各DSP核内,分别进行Viterbi译码。
[0010]具体地,待译码信息序列进行分组具体包括:
[0011]确定译码器可进行回溯并判决输出的码段X;
[0012]根据Viterbi译码器序列长度L与码段数u之间的关系公式u = Lk/n,得到码段X对应的待译码信息段的最小长度I/ 2 xn/k;
[0013]确定各段增加的回溯码段s,同样根据Viterbi译码器序列长度L与码段数u之间的关系公式u = Lk/n,得到增加的回溯码段s对应的待译码信息段的最小长度I/ > sn/k;
[00Μ]计算得到待译码信息序列最小长度I/ > (xn+sn)/ko
[0015]优选地,译码器可进行回溯并判决输出的码段X通过实验的方法获得,其中X为5m。
[0016]进一步地,各核独立进行Viterbi译码,回溯的起始位置通过对最后一次状态进行比较,找出最大状态位置作为回溯起始位置。
[0017]进一步地,还包括合并译码的步骤,具体包括:用下一段的开头覆盖前一段末尾,覆盖长度等于s,且s > m。
[0018]进一步地,还包括在SI前对待译码信息序列进行量化的步骤。
[0019]进一步地,所述的待译码信息序列通过均匀量化方法或非均匀量化方法进行量化。
[0020]为达到上述目的,本发明基于多核DSP零尾卷积Viterbi译码的系统,包括
[0021]分段模块,用于将待译码信息序列进行分段,其中各段待译码信息序列最小长度L7 > (xn+sn)/k,X为译码器可进行回溯并判决输出的码段,s为各段增加的回溯码段;
[0022]DSP译码模块,用于将分组后的各段待译码信息序列分配到各DSP核内,分别进行Vi terbi 译码。
[0023]进一步地,还包括合并译码模块,用于将多个DSP中的译码进行合并,通过下一段的开头覆盖前一段末尾,覆盖长度等于s,且s > m0
[0024]进一步地,还包括量化模块,用于对待译码信息序列进行量化。
[0025]本发明基于多核DSP零尾卷积Viterbi译码的方法及系统,首先对待译码信息序列进行分段,然后将各段分别通过不同的DSP分别独立的进行译码,一方面能够利用多核条件降低对内存的需求,另一方面能够利用多核条件提高Viterbi译码并行度。
[0026]更重要的是,本发明对待译码序列进行分段的依据是:译码器经过约5m段处理后,每个状态的留选路径已经重合到一起,从而得出,译码器不需要将所有码段译出再回溯,而是在5m后就可进行回溯并判决输出,但由于各核独立运算,每个核最终状态可能出错,从而导致回溯路径开始进行时的几个状态会出错,为了弥补这一缺陷,增加回溯深度s,且s 2 m,增加回溯深度,对应于原分块长度增加sn/k,则I/ > 5mn/k+sn/k= (5mn+sn)/k。这个分段公式保证了可利用的DSP核较多且需译码长度不长情况下,每个核所需译码的最小输入长度,过小的输入将会导致译码错误,过多的输入则会造成DSP核利用的不充分,导致并行度下降。通过上述公式,我们可根据DSP数目以及最小分段长度,找到最好的折中,充分利用DSP的同时,保证译码的正确性。同时增加的回溯深度s可保证在低信噪比以及经历深度衰落信道分段后的回溯路径在回溯初期状态出错的情况,可利用下一段译码进行纠正,保证了译码的正确性。
【附图说明】
[0027]图1是现有技术Viterbi实现流程图;
[0028]图2是本发明基于多核DSP零尾卷积Viterbi译码的方法的基本流程;
[0029]图3本发明量化后数据分段方法执行示意图;
[0030]图4本发明各核Viterbi译码后数据合并执行示意图。
【具体实施方式】
[0031]下面结合附图对本发明做进一步的描述。
[0032]下述各实施例用于实现TD-SCDMA系统,待译码长度L= 3000的(3,I,9)零尾卷积编码的Vi terbi译码。
[0033]实施例1
[0034]本实施例基于多核DSP零尾卷积Viterbi译码的方法,包括:
[0035]SI将待译码信息序列进行分段,其中各段待译码信息序列最小长度I/ > (xn+sn)/k,x为译码器可进行回溯并判决输出的码段,s为各段增加的回溯码段;
[0036]S2将分组后的各段待译码信息序列分配到各DSP核内,分别进行Viterbi译码。
[0037]本实施例中,如何分段是核心所在,所分段的长度直接影响最后的译码结果,首先分段长度公式的推导如下:
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1