一种尾码可配置的Viterbi解码方法及解码器的制造方法_2

文档序号:9600444阅读:来源:国知局
中,本步骤包括以下子步骤:
[0056]1)从上一步得到的回溯的起始状态开始,遍历状态网格信息,每向前回溯一个状态,计算对应的解码输出。
[0057]如上文所述,根据尾比特编码方式的不同,回溯模块会从不同的状态开始回溯操作。
[0058]2)回溯完成后得到逆序的解码结果。
[0059]第五步:将逆序的解码结果正序输出
[0060]在一个实施例中,可以利用堆栈对逆序的解码输出序列进行逆向遍历,将逆序的解码结果正序输出,从而得到最终的解码结果。
[0061]根据本发明的一个实施例,还提供一种尾码可配置的Viterbi解码器,该Viterbi解码器包括输入处理模块、网格计算模块、存储控制模块、回溯模块和输出模块。
[0062]概括而言,输入处理模块用于量化待解码的数据,其中,针对咬尾编码方式在量化后的码块前加入从该量化后的码块尾部截取的数据;网格计算模块用于对输入处理模块得到的数据进行网格计算处理,形成状态网格信息;回溯模块用于根据状态网格信息,从回溯的起始状态开始进行回溯处理得到逆序的解码结果;输出模块用于将逆序的解码结果正序输出;存储控制模块用于控制Viterbi解码器中各模块的操作。
[0063]下面将结合图3详细描述该尾码可配置的Viterbi解码器。
[0064]一.存储控制模块
[0065]存储控制模块包括对其他模块执行控制的存储控制逻辑,用于控制Viterbi解码器中各模块的操作。存储控制模块还可以用于存储数据,如状态网格信息。
[0066]存储控制模块接收从Viterbi解码器外部输入的指示解码的控制信号,配置Viterbi解码器的参数,该参数包括码率、码块长度和尾比特编码方式(咬尾/零尾)等。
[0067]在进行解码时,存储控制模块控制输入处理模块对输入的待解码数据进行量化处理,针对咬尾编码方式还控制输入处理模块在量化后的码块前加入从该量化后的码块尾部截取的数据,以及控制输入处理模块将得到的数据输出至网格计算模块;存储控制模块控制网格计算模块进行网格计算并且存储控制模块存储形成的状态网格信息,存储控制模块还控制网格计算模块确定回溯处理的起始状态以及向回溯模块输出该起始状态;存储控制模块控制回溯模块基于回溯处理的初始状态遍历状态网格信息,得到逆序的解码结果,并控制回溯模块保存逆序的解码结果;存储控制模块还控制输出模块将逆序的解码结果正序输出,得到最终的解码结果。
[0068]二.输入处理樽块
[0069]输入处理模块在存储控制模块的控制下对输入的待解码数据做预处理,将待解码的数据进行量化,在量化后,每个输入数据(如LLR形式的输入数据)成为两个整数型数据,分别表示该数据与0和1的距离。对于零尾编码方式,输入处理模块在存储控制模块的控制下向网格计算模块正序输出量化后的码块数据;而对于咬尾编码方式,输入处理模块首先向网格计算模块输出量化后的码块尾部的部分比特,然后向网格计算模块正序输出该量化后的码块数据。
[0070]二.网格计算模块
[0071]网格计算模块由多个蝶形运算单元组成。在收到输入处理模块输入的数据后,网格计算模块在存储控制模块的控制下调用蝶形运算单元,完成Viterbi算法中的网格计算操作。其中,蝶形运算单元对于由输入处理模块输入的每一对整数数据,计算网格图中对应状态下的路径度量值以及该状态与其他状态的关系(即完成加比选操作)。网格计算模块在存储控制模块的控制下存储并更新计算得到的路径度量值。网格计算模块还在存储控制模块的控制下根据网格图中状态之间的关系形成状态网格信息,并将该状态网格信息存储到存储控制模块。
[0072]具体而言,蝶形运算单元对于每一对整数数据所对应的状态,根据当前存储的路径度量信息和输入的数据计算两个分支度量值,将这两个分支度量值与之前状态的路径度量值相加,比较并选出较大值作为该状态下的路径度量值,并且得到该状态与其他状态的关系(如该状态的前一状态)。
[0073]此外,网格计算模块还用于确定回溯处理的起始状态(或称回溯的起始状态),并将该起始状态输出至回溯模块。
[0074]其中,针对咬尾编码方式,网格计算模块在存储控制模块的控制下比较网格图中各个状态下的路径度量值,取最大值对应的状态作为回溯处理的起始状态。针对零尾编码方式,网格计算模块将零状态作为回溯处理的起始状态。在一个实施例中,可以无需将零状态输出至回溯模块。
[0075]四.回溯模块
[0076]回溯模块用于完成Viterbi算法中的回溯操作。回溯模块在存储控制模块中的控制下从回溯的起始状态开始,遍历在存储控制模块中存储的状态网格信息(每向前回溯一个状态,计算对应的解码输出),得到正确的状态转移序列,从这个状态转移序列得逆序的解码结果。回溯模块还用于存储该逆序的解码结果。如上文所述,根据尾比特编码方式的不同,回溯模块会从不同的状态开始回溯操作:零尾编码方式下起始状态是零状态,而咬尾编码方式下起始状态是上文中通过比较路径度量信息得到的起始状态。
[0077]五.输出模块
[0078]输出模块在存储控制模块的控制下,(例如通过堆栈)将回溯模块得到的逆序解码结果正序输出,得到最终的解码结果。
[0079]本发明通过提供一种尾码可配置的Viterbi解码方法及解码器,对无线通信中的信道解码环节提供了有效支持,该Viterbi解码方法及解码器可用于多种通信协议,并能在较高的速度下工作。相对于非复用系统来说,该Viterbi解码器使用的面积较小,而且能达到预期的信噪比。
[0080]应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。
【主权项】
1.一种尾码可配置的Viterbi解码方法,包括: 步骤1)、量化待解码的数据,其中,针对咬尾编码方式在量化后的码块前加入从该量化后的码块尾部截取的数据; 步骤2)、对步骤1)得到的数据进行网格计算处理,形成状态网格信息,其中,所述状态网格信息用于指示网格图中的状态之间的关系; 步骤3)、根据所述状态网格信息,从回溯的起始状态开始进行回溯处理得到逆序的解码结果,并且将所述逆序的解码结果正序输出。2.根据权利要求1所述的方法,在步骤1)中,量化待解码的数据包括: 将每个数据量化为成对的整数型数据,分别表示该数据与0和1的距离。3.根据权利要求2所述的方法,其中,步骤2)包括: 步骤21)、对步骤1)得到的数据中的每对整数型数据进行加比选操作,得到网格图中对应状态下的路径度量值以及该状态与其他状态的关系; 步骤22)、根据步骤21)的结果,更新网格图的路径度量值并且形成状态网格信息。4.根据权利要求3所述的方法,其中,步骤21)包括: 对于每对整数型数据所对应的状态,计算其两个分支度量值,将所述两个分支度量值分别与该状态之前的状态下的路径度量值相加,选择其中较大的值作为该状态下的路径度量值。5.根据权利要求3或4所述的方法,其中,步骤3)还包括: 确定回溯的起始状态。6.根据权利要求5所述的方法,其中, 对于零尾编码方式,回溯的起始状态为零状态; 对于咬尾编码方式,比较网格图中每个状态下的路径度量值,取最大值对应的状态作为回溯的起始状态。7.根据权利要求1-4中任何一个所述的方法,其中,步骤1)之前还包括: 确定码率、码块长度和尾比特编码方式。8.一种尾码可配置的Viterbi解码器,包括: 输入处理模块,用于量化待解码的数据,其中,针对咬尾编码方式在量化后的码块前加入从该量化后的码块尾部截取的数据; 网格计算模块,用于对所述输入处理模块得到的数据进行网格计算处理,形成状态网格信息,其中,所述状态网格信息用于指示网格图中的状态之间的关系; 回溯模块,用于根据所述状态网格信息,从回溯的起始状态开始进行回溯处理得到逆序的解码结果; 输出模块,用于将所述逆序的解码结果正序输出。9.根据权利要求8所述的Viterbi解码器,还包括: 存储控制模块,用于控制所述Viterbi解码器中各个模块的操作以及存储所述状态网格信息。10.根据权利要求8或9所述的Viterbi解码器,其中,所述网格计算模块还用于确定回溯的起始状态。
【专利摘要】本发明提供一种尾码可配置的Viterbi解码方法及解码器,所述方法包括:步骤1)、量化待解码的数据,其中,针对咬尾编码方式在量化后的码块前加入从该量化后的码块尾部截取的数据;步骤2)、对步骤1)得到的数据进行网格计算处理,形成状态网格信息,其中,所述状态网格信息用于指示网格图中的状态之间的关系;步骤3)、根据所述状态网格信息,从回溯的起始状态开始进行回溯处理得到逆序的解码结果,并且将所述逆序的解码结果正序输出。本发明提供的Viterbi解码方法及解码器能够针对咬尾和零尾卷积码进行Viterbi解码,同时能够快速有效地完成规定计算,适用于多种通信标准,并且不会占用过多额外资源。
【IPC分类】H03M13/23
【公开号】CN105356893
【申请号】CN201510824179
【发明人】韩冬, 车广庆, 唐会彦, 孙刚, 苏泳涛, 石晶林
【申请人】中国科学院计算技术研究所
【公开日】2016年2月24日
【申请日】2015年11月24日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1