CN102185618B - 一种维特比译码算法的改进方法和卷积码译码器 - Google Patents
一种维特比译码算法的改进方法和卷积码译码器 Download PDFInfo
- Publication number
- CN102185618B CN102185618B CN201110030333.5A CN201110030333A CN102185618B CN 102185618 B CN102185618 B CN 102185618B CN 201110030333 A CN201110030333 A CN 201110030333A CN 102185618 B CN102185618 B CN 102185618B
- Authority
- CN
- China
- Prior art keywords
- state
- states
- path metric
- unit
- metric value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明实施例提供了一种维特比译码算法的改进方法和卷积码译码器,为消除编码器和译码器之间的预同步过程,简化***的设计和实现而发明。本发明实施例的维特比译码算法的改进方法包括:分别对应于卷积编码器的四个不同状态,设置四个状态转移单元并行工作;并且每个所述状态转移单元的状态不变,只负责根据当前的状态和输入计算下一个的状态和输出。由于这四个状态转移单元的状态总有一个的状态和卷积编码器的初始状态一致,所以改进的维特比译码算法接收端和发送端状态不需要预同步,从而简化了***的设计和实现。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种维特比译码算法的改进方法和卷积码译码器。
背景技术
维特比译码算法的实质是最大似然译码,它利用了编码网格图的特殊结构,从而降低了路径计算的复杂度。该算法包括:计算网格图上在时刻ti到达各个状态的路径和接收序列的相似度或者说距离,去除不可能成为最大似然选择对象的网格图上的路径,即如果有两条路径到达同一个状态,则具有最佳度量的路径被选中,称为幸存路径(surviving path),其它路径则被抛弃。通过对所有状态都进行这样的选择操作,较早地抛弃不可能的路径可以大大降低译码器的复杂性。
经典的维特比译码器主要包括三个功能单元:
分支度量单元(Branch Metric Unit,BMU):根据ti时刻接收到的信号序列和每条分支的输出序列计算网格图中每条分支相对于接收序列的相似度(或者说路径度量)。
加比选单元(Add-Compare-Select Unit,ACSU):根据ti时刻BMU计算的每条分支的距离度量结果和ti-1时刻状态的路径度量计算从ti-1时刻状态到ti时刻状态的路径度量。由于在ti时刻,每个状态可能有多条输入路径,ACSU模块根据ti时刻每个状态输入的分支路径度量值进行路径合并,选择分支路径度量最小的路径作为该状态ti时刻的幸存路径,抛弃其他分支路径。
幸存路径寄存单元(Survivor path Memory Unit,SMU):存储幸存路径上的译码结果,并且只有当路径度量计算进行到网格图较深处时,才产生第一位译码输出(选择每个状态幸存路径的最小值对应的译码结果输出)。在典型的译码器实现中,这代表了大约是约束长度5倍的译码延迟。
在实现本发明的过程中发明人发现,经典的维特比译码算法至少存在如下缺点:经典的维特比算法只有一个状态转移单元,这个状态转移单元只能从一个初始状态(一般为00)开始网格生长,而卷积编码器有四个状态(00、01、10、11),所以在维特比译码算法接收端和发送端状态需要预先同步,从而增加了***实现的复杂度。
发明内容
本发明实施例提供了一种维特比译码算法的改进方法和卷积码译码器,能够消除编码器和译码器之间的预同步过程,简化***的设计和实现。本发明实施例采用如下技术方案:
一种维特比译码算法的改进方法,包括:
分别对应于卷积编码器的四个不同状态,设置四个状态转移单元并行工作;并且每个所述状态转移单元的状态不变,只负责根据当前的状态和输入计算下一个的状态和输出。
一种卷积码译码器,包括:
四个状态转移单元,所述四个状态转移单元分别对应于卷积编码器的四个不同状态,并且每个状态转移单元的状态不变,只负责根据当前的状态和输入计算下一个的状态和输出。
由本发明实施例的技术方案可知,改进的维特比译码算法有四个专门负责根据当前的状态和输入计算下一个的状态和输出的状态转移单元,而且每个状态转移单元的状态不变,这四个状态转移单元同时从不同的状态开始生成路径,四个状态转移单元的状态总有一个的状态和卷积编码器的初始状态一致,所以改进的维特比译码算法接收端和发送端状态不需要预同步,在任何初始态下编码器和译码器都能够同步,从而简化了***的设计和实现。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍。
图1为本发明提供的一种实施方式的维特比译码算法的改进方法示意图;
图2为本发明的改进的维特比译码算法的初始状态图;
图3为本发明提供的又一实施方式的维特比译码算法的改进方法的示意图;
图4为一个卷积编码器的连接表示;
图5为图4卷积编码器的网格生长图表示;
图6为针对图4和图5的卷积编码器的本发明改进的维特比译码算法的初始状态和网格生长示意图;
图7为对应图6的本发明改进的维特比译码算法的路径合并示意图;
图8为本发明提供的一种实施方式的卷积译码器结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清晰,以下将通过具体实施例和相关附图,对本发明作进一步详细说明。
参见图1,本发明提供的一种实施方式的维特比译码算法的改进方法,包括:
S11,分别对应于卷积编码器的四个不同状态,设置四个状态转移单元并行工作;并且,
S12,每个所述状态转移单元的状态不变,只负责根据当前的状态和输入计算下一个的状态和输出。
图2为改进的维特比译码算法的初始状态图。如图2所示,改进的维特比算法有四个状态转移单元并行工作,这四个状态转移单元分别对应于卷积编码器的四个不同状态,而且每个状态转移单元的状态不变,只根据当前的状态和当前的状态可能的输入计算下一个的状态和下一个的状态可能的输出。卷积码译码器直接从四个状态开始生成路径,四个状态转移单元的状态总有一个状态和卷积编码器的初始状态一致,与经典的维特比译码算法只有一个状态转移单元相比,改进的维特比译码算法接收端和发送端状态不需要预同步,从而简化了***的设计和实现。
进一步地,参见图3,图3为本发明提供的又一实施方式的维特比译码算法的改进方法的示意图。相比于图1,本发明实施例提供的维特比译码算法的改进方法还可以包括:
S31,将每个所述状态转移单元的当前的状态和输入与下一个的状态和输出的固定关系制作成表格,通过查找所述表格产生每个时刻状态转移的网格生长图。
在网格生长图中一共有4个状态(00,01,10,11),每个状态有2种可能的输入(0,1),产生2个新状态和2条新分支,每条新分支输出2比特数据,所以对网格生长图中的4个状态,在一个特定时刻一共可能产生8个新的输出状态、8条新的分支路径和8组输出数据。由于改进的维特比算法的四个状态转移单元中的每个状态转移单元的状态不变,只负责根据状态转移单元的状态和当前可能的输入计算下一个可能的状态和输出,在状态转移单元的当前状态和状态转移单元的输入不变时,状态转移单元的下一个状态和输出也就固定不变,因此可以将这种固定关系制作成表格直接使用,通过查找所述表格产生每个时刻状态转移的网格生长图,从而可以将网格生长简化为查表操作,简化状态转移的实现。
通过计算接收到的码元和四个状态转移单元的8组输出数据的欧氏距离,就可以得到每条新的分支对应的欧氏距离和可能的译码结果(译码结果就是8组输出数据对应的状态转移单元的输入数据),一共有8个可能的欧氏距离和可能的译码输出。将每条新的分支的欧氏距离加上前一个时刻状态的路径度量值就可以得到该时刻每条新路径总的欧氏距离。需要说明的是,改进的维特比算法的欧氏距离计算和经典的维特比译码算法的分支度量单元一致。
在时刻ti,每个新状态有2条路径输入,为了减少网格生长路径的数量,可以对进入同一个状态的2条路径进行合并,抛弃2条路径中欧氏距离较大的路径,保留最小欧氏距离的路径作为幸存路径,如果2条路径的欧氏距离相等,可以任意选择一条路径作为幸存路径。经过路径合并之后,每个新状态只剩一条幸存路径输入,4个状态一共有4条幸存路径和4个可能的译码输出。需要说明的是,改进的维特比算法的路径合并和经典的维特比译码算法的幸存路径寄存单元一致。
在时刻ti输入的数据序列经过欧氏距离计算和路径合并后,剩余4条幸存路径,从4条幸存路径中选择总路径度量最小的路径对应的分支输入就可以立即得到该时刻输入数据序列的译码结果。因此,仍参见图3,本发明实施例提供的维特比译码算法的改进方法还可以包括:
S32,根据当前时刻以前的路径度量值输出当前时刻的译码结果。
改进的维特比译码算法利用当前译码时刻以前的路径度量作为译码的依据,从初始状态开始当前输入的数据序列马上就可以译码输出,没有译码延时,另外卷积码译码器不需要回溯和存储任何数据,也不需要经典的维特比算法的幸存路径寄存单元所需要的存储空间和相应的控制逻辑。这是因为:
经典的维特比算法只有当路径度量计算进行到网格图较深处时,才产生第一位译码输出,也就是说经典的维特比算法根据超前时刻ti+n各个状态的路径度量,选择译码时刻ti的输出,所以会引入译码延时,同时当前时刻超前译码时刻,所以需要幸存路径寄存单元缓存历史数据,而改进的维特比译码算法在当前时刻就可以根据当前时刻的路径度量和当前输入码元产生译码输出,所以不会引入译码延时,不需要缓存器。需要说明的是,超前于当前时刻的路径度量和当前时刻以前的历史路径度量其实是等价的。
有必要说明的是,改进的维特比算法由于每次计算的分支度量值都为正值,为了避免每条路径长期累加导致的溢出,在每个时刻可以将4条幸存路径的度量值减去4条幸存路径中最小路径的度量值,作为该时刻4条幸存路径的路径度量。
下面采用一个具体的实例说明上述的改进的维特比译码算法。
如图4和图5所示,图4为一个卷积编码器的连接表示,表示一个约束长度K=3的(2,1)卷积码编码器,模2加法器的数目为n=2,因此编码器的效率k/n=1/2。在每个输入比特时间上,1位信息比特移入寄存器最左端的一级,同时将寄存器中原有比特均右移1级,接着便交替采样两个模2加法器(即先采样上面的加法器,再采样下面的加法器),得到的码元对就是与该输入比特相对应的分支字。对每一个输入信号比特都重复上述采样过程,就可以对数据源进行卷积编码。
图5是图4卷积编码器的网格生长图表示,图5中一共有四个状态(00,01,10,11),每个状态有2个输入(0,1),产生两个输出,迁移到下一个时刻的两个状态。卷积编码器根据当前的输入序列在网格图中生成一条状态转移路径,同时输出编码后的序列,其中输入序列为0110......,对应的状态转移路径的输出为00,11,01,01,......。对编码器而言输入序列和状态转移路径是一一对应的。
针对图4和图5的卷积编码器,对改进的维特比译码算法进行说明,可以理解的是,下述这些基本原理和算法可以推广到任意的卷积码。
参见图6,图6为针对图4和图5的卷积编码器的改进的维特比译码算法的初始状态和网格生长示意图。改进的维特比算法有四个状态转移单元,每个状态转移单元的状态分别对应卷积码的一个状态,而且状态转移单元的状态不变。由于卷积编码器每个状态的输入和输出,下一个状态都是固定不变的,所以改进的维特比译码算法有四个状态转移单元,专门负责保存每个状态的输入和下一个状态的输出,这样在每个时刻状态转移只需要查表就可以产生网格生长图。每个状态的输入就是可能的译码结果。
参见图7,图7为对应图6的改进的维特比译码算法的路径合并示意图。在时刻ti,每个状态有2条路径输入,根据欧氏距离的计算结果和前一个状态的路径度量可以得到这个状态的2条路径度量,选择路径度量最小的值作为幸存路径,丢弃其他路径的路径。如果两条路径的度量值相等,可以任意选择一条路径作为幸存路径,丢弃另一条路径,而不影响译码器的性能,为了算法设计的方便,一般可以保留第一条路径作为幸存路径。
译码输出时,在时刻ti,从四个状态的路径度量中选择一个最小的路径度量值对应的译码结果作为时刻ti的译码结果,如果有多个状态都有相同的最小的路径度量值,可以任意选择一个状态。为了算法设计的方便,一般可以选择第一个最小路径度量的状态。比如在t2时刻通过路径合并后四个状态的幸存路径的路径度量分别为1,1,0,0,则可以选择第三个状态的幸存路径作为最小路径,从而输出t2时刻的译码结果为0。
需要特别说明是,初始时刻,每个状态的路径度量为0。如果在t1时刻输入的数据序列有误码,可能导致在错误的状态上有最短的路径度量,此时的译码输出是错误的,或者如果在t1时刻有多个状态具有相同的最小路径度量,译码器无法知道那个状态对应的译码结果是最优的,此时的译码输出也有可能是错误的。但是随着路径的增长,由于发送端的路径是唯一的,所以在接收端也只会有一条路径和发送端的路径差距最小。一般情况下,从初始状态开始在路径长度小于卷积编码器约束长度时,改进的维特比算法的译码输出结果可能不是最佳的。但随着路径的生长,当路径长度大于卷积编码器约束长度时,改进的维特比算法在译码性能上就和经典的维特比译码器的性能基本一致。此外,对于实际中的译码器,初始时刻附近的译码结果对设备的正常运行是没有什么意义的,所以在实际情况下,该缺陷基本不会影响设备的性能。
最后,参见图8,图8为本发明提供的一种实施方式的卷积码译码器,包括:
四个状态转移单元(81、82、83、84),所述四个状态转移单元分别对应于卷积编码器的四个不同状态,并且每个状态转移单元的状态不变,只负责根据当前的状态和输入计算下一个的状态和输出。
查表单元85,用于通过查找表格产生每个时刻状态转移的网格生长图,其中所述表格根据每个所述状态转移单元的当前的状态和输入与下一个的状态和输出的固定关系制作。以及,
译码输出单元86,用于根据当前时刻以前的路径度量值输出当前时刻的译码结果。
其中,所述译码输出单元86还可以包括:
处理模块860,用于在每个时刻将四个状态的路径度量值减去四个状态中最小的路径度量值,作为该时刻四个状态的路径度量值。
选择模块861,用于在每个时刻从四个状态中选择总路径度量值最小的状态对应的译码结果作为该时刻的译码输出,并且如果有多个状态都有相同的最小的总路径度量值,则从中选择任一个状态对应的译码结果作为该时刻的译码输出。
本发明实施例的卷积码译码器,通过四个状态转移单元同时从不同的状态开始生成路径,并且每个状态转移单元的状态不变,这四个状态转移单元的状态总有一个的状态和卷积编码器的初始状态一致,因此消除了编码器与译码器之间的预同步过程,在任何初始态下编码器和译码器都能够同步,从而简化了***的设计和实现。进一步地,通过查表单元查找表格产生每个时刻状态转移的网格生长图,将网格生长简化为查表操作,从而简化了状态转移的实现;以及通过译码输出单元根据当前时刻以前的路径度量值输出当前时刻的译码结果,从初始状态开始当前输入的数据序列马上就可以译码输出,消除了译码延时,另外卷积码译码器也不需要回溯和存储任何数据,消除了经典的维特比算法的幸存路径寄存单元所需要的存储空间和相应的控制逻辑。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (8)
1.一种维特比译码算法的改进方法,其特征在于,包括:
分别对应于卷积编码器的四个不同状态,设置四个状态转移单元并行工作;并且,每个所述状态转移单元的状态不变,只负责根据当前的状态和输入计算下一个的状态和输出;
将每个所述状态转移单元的当前的状态和输入与下一个的状态和输出的固定关系制作成表格;
通过查找所述表格产生每个时刻状态转移的网格生长图。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据当前时刻以前的路径度量值输出当前时刻的译码结果。
3.根据权利要求2所述的方法,其特征在于,所述根据当前时刻以前的路径度量值输出当前时刻的译码结果包括:
在每个时刻从四个状态中选择路径度量值最小的状态对应的译码结果作为该时刻的译码输出,并且如果有多个状态都有相同的最小的路径度量值,则从中选择任一个状态对应的译码结果作为该时刻的译码输出。
4.根据权利要求3所述的方法,其特征在于,所述根据当前时刻以前的路径度量值输出当前时刻的译码结果还包括:
在每个时刻将四个状态的路径度量值减去四个状态中最小的路径度量值,作为该时刻四个状态的路径度量值。
5.一种卷积码译码器,其特征在于,包括:
四个状态转移单元,所述四个状态转移单元分别对应于卷积编码器的四个不同状态,并且每个状态转移单元的状态不变,只负责根据当前的状态和输入计算下一个的状态和输出;
查表单元,用于通过查找表格产生每个时刻状态转移的网格生长图,其中所述表格根据每个所述状态转移单元的当前的状态和输入与下一个的状态和输出的固定关系制作。
6.根据权利要求5所述的卷积码译码器,其特征在于,还包括:
译码输出单元,用于根据当前时刻以前的路径度量值输出当前时刻的译码结果。
7.根据权利要求6所述的卷积码译码器,其特征在于,所述译码输出单元包括:
选择模块,用于在每个时刻从四个状态中选择路径度量值最小的状态对应的译码结果作为该时刻的译码输出,并且如果有多个状态都有相同的最小的路径度量值,则从中选择任一个状态对应的译码结果作为该时刻的译码输出。
8.根据权利要求7所述的卷积码译码器,其特征在于,所述译码输出单元还包括:
处理模块,用于在每个时刻将四个状态的路径度量值减去四个状态中最小的路径度量值,作为该时刻四个状态的路径度量值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110030333.5A CN102185618B (zh) | 2011-01-27 | 2011-01-27 | 一种维特比译码算法的改进方法和卷积码译码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110030333.5A CN102185618B (zh) | 2011-01-27 | 2011-01-27 | 一种维特比译码算法的改进方法和卷积码译码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102185618A CN102185618A (zh) | 2011-09-14 |
CN102185618B true CN102185618B (zh) | 2014-02-19 |
Family
ID=44571695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110030333.5A Active CN102185618B (zh) | 2011-01-27 | 2011-01-27 | 一种维特比译码算法的改进方法和卷积码译码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102185618B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468021A (zh) * | 2013-09-17 | 2015-03-25 | 重庆重邮信科通信技术有限公司 | 采用位宽控制的卷积码维特比译码方法及译码器 |
CN103873074B (zh) * | 2013-11-28 | 2016-05-25 | 西安电子科技大学 | 基于译码端网格图的量子Viterbi译码算法 |
EP3490177A4 (en) * | 2016-07-22 | 2020-03-25 | Shen Zhen Kuang-Chi Hezhong Technology Ltd. | QUICK DECODING METHOD AND DEVICE SUITABLE FOR AN OVXDM SYSTEM, AND OVXDM SYSTEM |
CN108471341B (zh) * | 2018-03-26 | 2020-11-24 | 西安电子科技大学 | 一种卷积编解码的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN85103579A (zh) * | 1985-05-08 | 1986-11-05 | 索尼公司 | 纠错码的译码方法和*** |
US6202178B1 (en) * | 1995-08-21 | 2001-03-13 | Alcatel N.V. | Complementary methods for interleaving and deinterleaving data frames and corresponding forward error correcting devices in a transmitter and receiver |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599771B (zh) * | 2009-07-03 | 2012-08-08 | 华为技术有限公司 | 一种卷积码解调的方法及其装置 |
-
2011
- 2011-01-27 CN CN201110030333.5A patent/CN102185618B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN85103579A (zh) * | 1985-05-08 | 1986-11-05 | 索尼公司 | 纠错码的译码方法和*** |
US6202178B1 (en) * | 1995-08-21 | 2001-03-13 | Alcatel N.V. | Complementary methods for interleaving and deinterleaving data frames and corresponding forward error correcting devices in a transmitter and receiver |
Also Published As
Publication number | Publication date |
---|---|
CN102185618A (zh) | 2011-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100426712B1 (ko) | 비터비 복호기 | |
CN101777924B (zh) | 一种Turbo码译码方法和装置 | |
CN1099165C (zh) | 维特比译码器 | |
CN101997553B (zh) | 一种卷积码译码方法及装置 | |
CN102185618B (zh) | 一种维特比译码算法的改进方法和卷积码译码器 | |
CN100517984C (zh) | 用于移动通信***的维特比/涡轮联合译码器 | |
CN101635611B (zh) | 一种信道译码方法和装置 | |
CN101969311B (zh) | 一种高速并行分段交错维特比译码方法 | |
EP1650874A1 (en) | Viterbi decoder | |
EP2339757B1 (en) | Power-reduced preliminary decoded bits in viterbi decoder | |
US8301990B2 (en) | Programmable compute unit with internal register and bit FIFO for executing Viterbi code | |
CN102355331B (zh) | 一种通用多模式译码装置 | |
US20060245526A1 (en) | Apparatus and method for Viterbi decoding | |
CN108471341B (zh) | 一种卷积编解码的方法 | |
US7035356B1 (en) | Efficient method for traceback decoding of trellis (Viterbi) codes | |
CN102142849B (zh) | 一种维特比译码方法及维特比译码器 | |
CN102684710B (zh) | 基于SSE的咬尾卷积码Viterbi译码方法 | |
KR20070074213A (ko) | 통신 시스템의 복호화 방법 | |
EP2605410B1 (en) | Channel decoding method and tail biting convolutional decoder | |
CN105721104B (zh) | 一种维特比译码实现方法 | |
CN100544214C (zh) | 一种实现维特比译码路径度量归一化的方法 | |
CN101488764A (zh) | 译码器及增强译码方法 | |
WO2000041342A1 (en) | Device and method for determining maximum likelihood state in a decoding device | |
KR101714009B1 (ko) | 최소화된 복호 지연 시간을 갖는 역추적 장치 및 방법 | |
CN105281787B (zh) | 一种改进维特比译码性能的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |