一种北斗导航系统的维特比译码装置及方法

文档序号:9825498阅读:636来源:国知局
一种北斗导航系统的维特比译码装置及方法
【技术领域】
[0001] 本发明涉及电子信息领域,特别是指一种北斗导航系统的维特比译码装置及方 法。
【背景技术】
[0002] 公知的卷积码的译码算法方案有多种,但大规模应用的还是维特比(Viterbi)算 法。Viterbi译码算法是A. J. Viterbi在1967年针对卷积码的译码而提出的一种概率译码算 法,它是一种最大似然译码。在码的约束度较小时,Vi terb i译码的算法效率高、速度快、译 码器结构也较简单,因而自Viterbi算法提出以来,无论在理论上还是实践上都得到了极其 迅速的发展,并广泛地应用于各种数字传输系统中,特别是无线通信系统和卫星通信系统。 在北斗RDSS系统中,为了使信号能够更可靠地在信道中传输,在信道编码中采用卷积码来 降低信号受噪声的影响,以降低通信的误码率,提高系统的可靠性。
[0003] 北斗RDSS采用(2,1,7)卷积码,卷积码编码器由6个移位寄存器和两个模2加法器 组成,约束长度K = 7,编码效率R=l/2,即输入lbit信息,输出2bit编码信息,并分为上、下 两路并行输出。其生成多项式为G=(133,171),电路图如图1所示。对卷积编码后的信号,采 用Viterbi算法(VA)译码。Viterbi算法是对于卷积码的最大似然译码。最大似然译码函数, 就是在已知收到的信道输出序列,找到最有可能的传输序列,即通过网格图找出一条路径 对应,要求路径输出的码序列具有对数最大值。对于二进制对称信道来说,函数的最大化等 价于在网格图中找到与接收序列之间有最小汉明距离的路径。
[0004] Viterbi译码算法是通过动态规划的方法,接收一段,计算、比较一段,选择一段最 可能的码段,即分支,找出网格图中的最大似然路径,用局部最优等效全局最优,近似达到 整个码序列是一个有最大似然函数的序列。在每一步中,它将进入每一状态的所有路径进 行比较,并存储具有最大度量值的路径,即幸存路径,步骤为: (1) 根据接收到的码符号,计算出相应的分支度量值; (2) 将进入某一个状态的两条分支度量值与其前面的路径度量值分别进行累加求和, 得到两个新的路径度量值; (3) 比较到达此同一状态的两条新的路径度量值的大小,选择较小的作为新的路径度 量值存储起来,并存储与此路径度量值对应的路径,称此路径为留选(幸存)路径,删除另一 条路径; (4) 对所有的26个状态都实施上述加/比/选运算,并存储所有状态的当前的幸存路径; (5) 重复(1)~(4)步骤,直到结束。
[0005] 该算法主要包括两个工作:计算路径度量值并比较,以决定幸存路径;另一个是记 录幸存路径及其相关的度量值。对于结尾卷积码序列,编码器从全为0的so状态出发,最后 又回到so状态时所输出的码序列,在路径挑选的过程中,所有留选路径将逐渐合并为最后 唯一的一条,该条路径即为所求。但是这种算法占用了较多的存储资源,在维特比译码器的 实现中,路径度量值的一般为采用乒乓存储方式,乒乓方式使用两组路径度量存储单元交 替使用,一组用来存储新的路径度量值,另一组用来存储旧的路径度量值,完成一次所有状 态的幸存路径度量更新后读写改变方向,这样读写就不会发生冲突,因此耗费了两倍的路 径度量值存储单元。

【发明内容】

[0006] 本发明的目的是设计一种北斗导航系统的维特比译码装置及方法,作为北斗RDSS 的电文译码器,提供了一种新的分支度量值的存储方式,只需要使用一组路径度量存储单 元就可以满足存储需求,从而克服现有技术的不足。
[0007] 本发明的技术方案是,为了减少资源的消耗,本发明提供了一种新的分支度量值 的存储方式,主要包括分支度量值计算单元、加比选单元、系统控制单元、存储单元、回溯单 元,维特比译码器路径度量值的更新由加比选单元生成的新路径度量值写回到原来读出旧 路径度量值的地址中去,在译码过程中译码状态会发生转移,路径度量值更新后存储的是 转移后状态的路径度量值; 所述分支度量值计算单元,根据状态转移蝶形对的状态转移规则,对接收到的两路卷 积码数据进行计算,得到各对应状态的分支度量值; 所述加比选单元,利用分支度量值计算单元计算得到的分支度量值,计算各状态前一 时刻的路径度量值,进行累加、比较、选择处理; 所述加比选单元由四个并行执行的,且具有相同的输入输出特性的蝶形运算单元组 成,每个蝶形运算单元处理两路来自存储单元RAM0至RAM 7的数据data状态,并由与蝶形运 算单元连接的两个选择器通过sel〇至sel3四种控制状态,将蝶形运算的结果,转换成输入 数据ramdin,写入到对应的八个存储单元RAM中;所述八个RAM用于暂存64个状态的数据,每 个RAM的长度是八;所述64个状态由四个蝶形运算单元分八个时钟周期完成处理;需要计算 的64个状态在经过六次循环后回到初始状态; 所述系统控制单元主要实现对各运算单元的控制和调度,实现对维特比译码的整体流 程控制。
[0008] 本发明包括以下步骤: 步骤1,RAM0的数据dataOO和RAM1的数据dataOl输入蝶形运算单元BF0,生成蝶形运算 的结果dout00、dout01 ;RAM4的数据data20和RAM5的数据data21输入蝶形运算单元BF1,生 成蝶形运算的结果dout20、dout21 ;RAM2的数据datalO和RAM3的数据datall输入蝶形运算 单元BF2,生成蝶形运算的结果doutl0、doutll ;RAM6的数据data30和RAM7的数据data31输 入蝶形运算单元BF3,生成蝶形运算的结果dout30、dout31; 步骤2,所述蝶形运算的结果dout输入两个选择器MUX中,并根据selO至sel3四种控制 状态生成输入数据ramdin; 步骤3,所述(1〇111:00、(1〇111:01、(1〇11丨20、(1〇11丨21输入选择器]\11^1,生成输入数据瓜111(1;[110、 ramdin2、ramdin4、ramdin6; doutl0、doutl 1、dout30、dout31输入选择器 MUX2,生成输入数 据ramdinl、ramdin3、ramdin5、ramdin7; 步骤4,所述输入数据ramdinO、ramdin2、ramdin4、ramdin6、ramdinl、ramdin3、 ramdin5、ramdin7 分别写入存储单元的 RAM0、RAM2、RAM4、RAM6、RAMI、RAM3、RAM5、RAM7 中; 步骤5,重复步骤1至步骤4,需要计算的64个状态在经过总计六次循环后回到初始状 Ο
[0009] 所述控制状态为:控制状态为selO时,输入数据ramdinO、ramdin2、ramdin4、 ramdin6、ramdinl、以111(1;!_113、以111(1;!_115、以111(1;!_117,分别对应蝶形运算的结果(1〇11切0、(1〇1^20、 doutOl、dout21、doutl0、dout30、、doutll、dout31; 控制状态为8611时,输入数据從111(1;!_11〇、從111(1;!_112、從111(1;!_114、從111(1;!_116、從111(1;!_111、從111(1;!_113、 ramdin5、ramdin7,分别对应蝶形运算的结果doutOl、dout21、dout00、dout20、dout 11、 dout31、、doutl0、dout30; 控制状态为8612时,输入数据從111(1;!_11〇、從111(1;!_112、從111(1;!_114、從111(1;!_116、從111(1;!_111、從111(1;!_113、 ramdin5、ramdin7,分别对应蝶形运算的
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1