CN100413217C - 一种维特比译码器及用于维特比译码器的加比选单元电路 - Google Patents

一种维特比译码器及用于维特比译码器的加比选单元电路 Download PDF

Info

Publication number
CN100413217C
CN100413217C CNB2005100363773A CN200510036377A CN100413217C CN 100413217 C CN100413217 C CN 100413217C CN B2005100363773 A CNB2005100363773 A CN B2005100363773A CN 200510036377 A CN200510036377 A CN 200510036377A CN 100413217 C CN100413217 C CN 100413217C
Authority
CN
China
Prior art keywords
over
highest order
bit
acs
output
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.)
Expired - Fee Related
Application number
CNB2005100363773A
Other languages
English (en)
Other versions
CN1731686A (zh
Inventor
王一
王新安
陈惠明
张国新
肖高发
洪波
赵腾飞
蓝文广
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Peking University Shenzhen Graduate School
Original Assignee
Huawei Technologies Co Ltd
Peking University Shenzhen Graduate School
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd, Peking University Shenzhen Graduate School filed Critical Huawei Technologies Co Ltd
Priority to CNB2005100363773A priority Critical patent/CN100413217C/zh
Publication of CN1731686A publication Critical patent/CN1731686A/zh
Application granted granted Critical
Publication of CN100413217C publication Critical patent/CN100413217C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

本发明涉及一种维特比译码器以及其中的加比选单元电路的改进,本发明在确定加比选单元的位宽的基础上提出一种改进的ACS电路,从而减小维特比译码器硬件实现面积以及加比选单元关键路径的延迟时间;可以有效地解决PM值溢出问题,并且能普遍适用于Viterbi的并行/串行/混合型结构。本发明公开的维特比译码器,包括顺序处理接收到的数据的分支度量单元BMU、加比选单元ACS、幸存路径存储器和回溯单元TBU,以及将所述ACS选出的PM值在后继的步骤中再送回ACS单元的路径度量存储单元,在所述加比选单元ACS后端设置最高位积累单元。加比选单元电路,包括顺序处理输入数据的两个加法器A、B、比较器CMP、和多路选择器MUX,各个加法器的最高位单独处理的进位处理逻辑电路A和B、以及简单逻辑电路。

Description

一种维特比译码器及用于维特比译码器的加比选单元电路
技术领域
本发明涉及一种基于专用集成电路(ASIC)的维特比(Viterbi)译码器,尤其涉及一种Viterbi译码器中的加比选(ACS相加-比较-选择)单元电路的改进。
背景技术
卷积码是一种常用的差错控制编码。卷积码(n0,k0,m)表示该卷积码编码器将k0比特信息段编成n0比特的码组,而且所编的n0长码组不仅同当前k0比特信息段有关联,还同前面的(m-1)个(m>1,整数,我们称其为约束长度)信息段有关联。卷积码用生成序列表示输入与输出之间的关系,生成序列表示为 g i , j = g i , j 1 g i , j 2 . . . g i , j L . . . g i , j m 其中i=1,2,...,k0;j=1,2,...,n0;L=1,2,...,m。gi,j L表示了各个寄存器的输入输出端(第L组的第i个节点)到第j个模2加法器输入端的连接线的情况。如果有连接线则 g i , j L = 1 ,如果无连接线则 g i , j L = 0 。可以看出,卷积码有很强的关联性,能够很好的进行纠错。图1给出一种典型的卷积编码器——(2,1,7)卷积编码器,即该卷积编码器有2比特输出,1比特输入,约束长度为7,寄存器阶数阶数等于(m-1),为6;该卷积码的生成序列为g1,1=(1011011)2和g1,2=(1111001)2,为了表述简便,用八进制表示为(133)8和(171)8
对卷积码的一种主要的纠错译码方法就是Viterbi算法。Viterbi算法是一种基于最大后验概率的卷积译码算法,具有较强的克服突发错误的能力。目前,在数据通信、数据记录与数字信号处理领域都得到广泛的采纳。Viterbi的译码过程即是通过接收的过程找出与卷积码输入数据流最相似的路径。我们遍历整个状态变化的网格图,并计算每条路径产生的码距,当Viterbi译码器输入完最后一个数据的时候,我们得到最小的码距值,而到达这个状态的路径就是我们所要寻找的路径,根据这条径和相关的信息我们可以得出译码的输出。
图2是一个通常的Viterbi译码器的结构框图。分支度量单元(BMU)21接收数字信号,并计算分支度量值作为概率的信息,这里的分支度量值取无符号数。加比选单元(ACS)22从(BMU)21中读取分支度量值并利用该分支度量值更新与网格中每个状态对应的原路径度量(PM)值。(ACS)22将已更新的PM值互相比较并输出被选中的PM值及相应的选择位。在路径度量存储单元25中,由(ACS)22选出的PM值在后继的步骤中被送回(ACS)22单元。幸存路径存储器24存储从(ACS)22输出的选择位。回溯单元(TBU)23利用存储在幸存路径存储器24中的选择位实现回溯操作并输出译码序列。
Viterbi的各种应用中,数据输出速率和功耗面积的需求有很大的差别。当Viterbi检测器应用在低速的蜂窝电话系统时,要求速度可以低于1Mb/s,但是要求有非常低的功耗;在用于调制解调器中的网格编码解调时,输出速率要求在几十Kb/s,但是对于功耗和芯片的面积以及价格上就有非常严格的限制;在另一个极端,高速的Viterbi检测器也用于磁盘驱动的读信道,要求输出超过600Mb/s,相应的对于面积和功耗要求就比较低。
Viterbi的实现结构同它所需要完成的功能需求紧密相关,主要分为串行、并行和混合型结构。
1、串行设计:(ACS)22每次从路径度量存储单元25读取一个状态(共有2m-1个状态)的PM值,即每个时钟只完成一个状态的计算,2m-1个时钟处理网格表中的一列。这种结构不受约束长度m限制,只消耗固定的面积,FPGA的面积消耗最小,但是译码延时也最大。
2、并行设计:(ACS)22每次从路径度量存储单元25读取2m-1个状态的PM值,即一个时钟完成对所有状态的更新。并行设计的优点是可以实现高速Viterbi译码,最高译码速率可以达到时钟频率;需要的存储单元也比较少,不需要两个路径度量存储单元乒乓式操作。它的缺点也显而易见:硬件资源消耗大。
3、混合型:又称串并结合型。(ACS)22每次从路径度量存储单元25读取n个状态的PM值,即每个时钟处理n(其中,n<2m-1)个状态,2m-1/n个时钟周期完成网格表的一列。在具体实现时,可综合考虑面积和速度来选择n值(n越大,速度越快,面积越大)。
可见,各种Viterbi结构主要的区别体现在(ACS)22单元,(ACS)22单元也是Viterbi中需要资源最大的部件。
图3为常规的(ACS)22结构。两个加法器(31A、31B)用于将上一列对应状态的PM值与来自(BMU)21的分支度量值相加。两个上一列的PM值可以来自路径度量存储器(串行/混合型),也可以来自相应的上级寄存器(并行),统称为路径度量存储单元25。所得的值经过比较器(CMP)32,并通过2选1的多路选择器(MUX)33选择输出对应的幸存PM值和幸存路径值。ACS单元是Viterbi译码器的核心电路,但是,PM值会随着时间的推移一直累加下去,如果不加以控制,ACS单元会有溢出的隐患,造成严重的译码错误。
Viterbi译码器通过寻找最小PM值的路径来进行译码,由ACS单元的电路结构可知,我们只需保留各个状态PM值的大小关系即可,即是说所有PM值的基数对于Viterbi译码没有意义,可以去掉,而且这样做可以避免PM值的溢出问题。一般的控制方法是每隔一段时间比较所有的PM数值,找出其中最小的一个数值,然后将所有的PM值减去这个数值,这样即可以保证加法器不溢出,也可以保持各个PM数值之间的大小关系不变。在数字系统硬件实现时,采用的方法是:将每一列所有PM(假设为i位)的最高位作与运算,如果结果为‘1’,说明PMany≥2i-1,那么就产生一个溢出控制信号,用这个信号将网格图中下一列所有的PM最高位置‘0’,实际相当于将所有PM值减掉基数2i-1。因此,希望ACS单元的数据位宽要足够大,既能保证各个路径的大小关系不变,又可以有效地解决溢出问题。
从改善硬件实现和关键路径角度出发,希望ACS单元的数据位宽尽量小。但是,如果ACS的数据位宽过小,便不足以保存各个路径的大小关系不变,也会出现PM值溢出的现象。
发明内容
通过背景资料的分析可知,ACS单元的数据位宽是Viterbi译码器的一个重要参数,如果ACS位宽过大,会增加硬件实现电路和关键路径延时;如果ACS位宽过小,又不能够有效地解决PM溢出问题。本发明综合考虑影响ACS数据位宽的各种因素,公开了一种能确定Viterbi译码器ACS单元最小位宽的方法,并且提出一种实现该方法的改进的ACS电路,该电路普遍适用于Viterbi的并行/串行/混合型结构。
本发明公开了一种维特比译码器,包括顺序处理接收到的数据的分支度量单元BMU、加比选单元ACS、幸存路径存储器、和回溯单元TBU,以及将所述ACS选出的PM值在后继的步骤中再送回ACS单元的路径度量存储单元,在所述加比选单元ACS后端设置最高位积累单元。
所述的最高位积累单元用来进行网格图中每一列的所有2m-1个节点PM值的最高位与操作。在并行结构时,输入为上一列2m-1个ACS单元的PM值最高位,进行2m-1输入的与操作,输出为本列的over_bit位;在串行/混合型结构时,输入为上一列n(n为采用的ACS单元个数)个ACS单元的PM值最高位以及上一列已经积累的over_bit值,进行n+1输入的与操作,将上一列的所有2m-1个状态的最高位都搜集全之后将本列的over_bit位输出。
在所述加比选单元ACS中还包括将各个加法器的最高位单独处理的两个进位处理逻辑电路A和B、以及简单逻辑电路;所述进位处理逻辑电路A的输入有三个,分别是网格图中上一列相应状态的进位输出c_out、本状态的加法器进位输出add_c1和上一列的溢出控制位over_bit,输出有两个,分别为本加法器的最高位输出c1和该状态PM值溢出标志位over1,其输入输出的逻辑关系为:
c1=c_out&over_bit+add_c1
over1=c_out&over_bit&add_c1
所述进位处理逻辑电路B的输入有三个,分别是网格图中上一列另一个相应状态的进位输出c_out、本状态的加法器进位输出add_c2和上一列的溢出控制位over_bit,输出有两个,分别为本加法器的最高位输出c2和该状态PM值溢出标志位over2,其输入输出的逻辑关系为:
c2=c_out&over _bit+add_c2
over2=c_out&over_bit&add_c2
所述简单逻辑电路的输入有进位位c1、c2,溢出标志位over1、over2和所述比较器输出结果x;输出有选择器的选择信号a1和最高位的选择结果a2,其输入输出的逻辑关系为:
a1=over1+over2c1x+over2c1c2+over2xc2;a2=over1+over2c1c2
所述最高位的选择结果a2输入所述最高位积累单元,在将上一列的所有2m-1个状态的最高位搜集全之后从所述最高位积累单元输出本列溢出控制位over_bit。
所述的维特比译码器为并行结构;所述最高位积累单元的输入为上一列2m-1个ACS单元的PM值最高位(m是约束长度),进行2m-1输入的与操作,输出为本列的over_bit位。
所述的维特比译码器为串行/混合型结构;所述最高位积累单元的输入为上一列n(n为采用的ACS单元个数)个ACS单元的PM值最高位以及上一列已经积累的over_bit值,进行n+1输入的与操作,将上一列的所有2m-1个状态的最高位都搜集全之后将本列的over_bit位输出。
本发明公开的一种用于维特比译码器的加比选单元电路,包括顺序处理输入数据的两个加法器A、B、比较器CMP、和多路选择器MUX,防止两个加法器A、B溢出的最高位选通电路包括将各个加法器的最高位单独处理的进位处理逻辑电路A和B、以及简单逻辑电路,在最高位选通电路后端设置最高位积累单元。
本发明公开了一种用于维特比译码器的加比选单元电路还具有下述附加技术特征:
所述进位处理逻辑电路A的输入有三个,分别是网格图中上一列相应状态的进位输出c_out、本状态的加法器A的进位输出add_c1和上一列的溢出控制位over_bit,输出有两个,分别为本加法器A的最高位输出c1和该状态PM值溢出标志位over1,其输入输出的逻辑关系为:
c1=c_out&over_bit+add_c1
over1=c_out&over_bit&add_c1
所述进位处理逻辑电路B(45B)的输入有三个,分别是网格图中上一列另一个相应状态的进位输出c_out、本状态的加法器B的进位输出add_c2和上一列的溢出控制位over_bit,输出有两个,分别为本加法器B的最高位输出c2和该状态PM值溢出标志位over2,其输入输出的逻辑关系为:
c2=c_out&over_bit+add_c2
over2=c_out&over_bit&add_c2
所述简单逻辑电路的输入有所述两个加法器A、B的进位位c1、c2,溢出标志位over1、over2和所述比较器CMP的输出结果x;输出有所述选择器MUX的选择信号a1和最高位的选择结果a2,其输入输出的逻辑关系为:
a1=over1+over2c1x+over2c1c2+over2xc2;a2=over1+over2c1c2
所述最高位的选择结果a2输入所述最高位积累单元,在将上一列的所有2m-1个状态的最高位搜集全之后从所述最高位积累单元输出本列溢出控制位over_bit;
所述的最高位积累单元用来进行网格图中每一列的所有2m-1个节点PM值的最高位与操作,将上一列的所有2m-1个状态的最高位都搜集全之后将本列的over_bit位输出。
本发明在确定ACS单元最小位宽以后,提出了一种改进的ACS电路,在解决PM值溢出问题的同时,可以有效地较少ACS单元的硬件实现面积和关键路径延时,并能普遍适用于Viterbi的各种不同结构。在此基础上,本发明电路通过增加简单的逻辑电路、进位位逻辑单元A和B,将各个加法器的最高位单独处理,使其可以在ACS电路输出之前产生,这样最高位积累单元就可以与ACS电路同时执行,不增加关键路径的长度。产生ACS的比较选择信号时,先对PM值的最高位处理,再处理低位值。因为软判决和硬判决的区别主要在BMU单元,体现在ACS单元只是数据位宽的不同,因此本发明可以兼容软判决和硬判决。
本发明的最高位积累单元针对Viterbi的各种结构可以采用相近的不同结构,使得本发明可以普遍适用于串行、并行和混合型Viterbi结构,而且不同Viterbi结构下的电路结构相差不大。
附图说明
本发明包括如下附图:
图1是一种典型的卷积编码器;
图2是Viterbi译码器的结构框图;
图3是常规的ACS电路结构;
图4是本发明的ACS电路结构;
图5本发明ACS电路的数据流图。
具体实施方法
下面结合附图对本发明做进一步详细说明。
本发明公开的技术方案是一种可以有效减小ACS单元数据位宽的方法,并在此基础上提出一种ACS电路,可以解决PM值溢出的问题。
首先说明决定ACS单元最小位宽的方法:
对于一般二进制(n0,k0,m)编码器来说,每次输入的是k0个信息元,有个可能的信息组,这相应于从码树每一节点上分出的分支数有
Figure C20051003637700102
条,每个节点相应于
Figure C20051003637700103
种不同的信息组输入,并且每条都有n0个码元,作为与此相应的输出子码,相应的每个ACS也有
Figure C20051003637700104
个加法器以及
Figure C20051003637700105
路数据比较器。一般在通信系统中采用的卷积码都取k0=1,本发明也是针对(n0,1,m)卷积码的Viterbi译码器。另外,Viterbi每接收一个数据,用width位来表示。很显然,用width参数可以表示判决方式,即width=1为硬判决,width>1为软判决。
基于以上的分析,本发明通过以下三步,可以通过确定最大PM值和最小PM值之差即PM跨度值,从而决定ACS单元所需的最小位宽。
1、对于(n0,1,m)卷积码,网格图中的每一列的PM跨度(用S_PM表示)有:
S_PM≤n0·(m-1)·(2width-1)。
即对于(n0,1,m)卷积码,每一列所有节点的最大PM跨度为n0·(m-1)·(2width-1),假设某一列t的PM最小值状态为SX,它的度量值为PMmin。在网格图中,经过(m-1)列后,该状态就可以将其度量值延伸到所有的2m-1个状态。我们知道对于n0输出的卷积码由同一点出发的PM值在网格图上前进(m-1)步之后,PM跨度最大为n0·(m-1)·(2width-1)。如果网格图前进(m-1)步后,所有的网格状态都是由该点出发的延伸值,则度量跨度最大为n0·(m-1)·(2width-1);否则,说明剩余的PM值比由该点出发的延伸值还要小,即小于n0·(m-1)·(2width-1)。
2、对于有确定生成序列的(n0,1,m)卷积码,网格图中的每一列PM跨度(用S_PMgs表示,指确定生成序列的PM跨度)还会有所降低,即:
S_PMgs≤H_PM(gs,00)·(2width-1),
其中H_PM(gs,00)指用于硬判决时,向Viterbi译码器输入全0数据的最大PM跨度。
由1可知,(n0,1,m)卷积码有S_PM≤n0·(m-1)·(2width-1),但是确定的生成序列使得各状态之间有着微妙的联系,网格图的拓扑结构总是保证会有更小的其它路径的度量值作为幸存路径PM值,因此会有S_PMgs≤S_PM。因为网络拓扑结构与输入数据的软硬判决无关,因此,我们只需考虑硬判决情况,先求出最大硬判决跨度H_PM(gs,max),然后再拓展到width位宽即可。
我们寻找确定生成序列的(n0,1,m)卷积码的H_PM(gs,max)的步骤是这样的:首先,将所有状态的PM值清0,以免在初始状态引入PM跨度。接着,向Viterbi译码器输入全0的数据流,然后通过Matlab或其它软件,考察其ACS输出的全部度量值以及度量跨度,全0输入的序列使得Viterbi译码器的硬判决PM跨度最大。
H_PM(gs,00)就是确定生成序列的(n0,1,m)卷积码的H_PM(gs,max)
首先,介绍一下“源”和“汇”的概念,某个状态S的“源”和“汇”的定义如下:“源”指的是在网格上可以通过一条支路到达状态S的状态;“汇”指的是网格上以S为“源”的状态。从网格图的分析可知,状态0和状态2m-1-1都是以自己作为“源”和“汇”的。以状态0为例,网格图中,状态0→状态0的输出值为“00”。因此,当我们以全0的比特流作为Viterbi译码器的输入流时,幸存路径就是0→0→0→0。这种幸存路径受其它状态的干扰最小,因为幸存路径始终是0状态,没有别的状态能够介入到幸存路径中;而且,对其它状态的PM值的影响也最大,因为总是0状态有最小的路径度量(PM)值,它的延伸值很容易成为其它状态的幸存路径。即是说,它是最接近于1中所讨论的最大度量跨度情况的。因此,可以推出它就是度量跨度最大的路径,即H_PM(gs,00)就是确定生成序列的(n0,1,m)卷积码的H_PM(gs,max)
同理,可知状态2K-1-1也是度量跨度最大的路径,也即是它们的度量跨度值是相同的,都为H_PM(gs,max)。因为H_PM(gs,00)是由网格图的拓扑结构决定的,因此经过足够多的列之后,H_PM便不再增加,而是稳定到一定的数值,这就是我们要求的H_PM(gs,00)
如果Viterbi每个输入数据用width位宽来表示(即width=1时,为硬判决;width>1时,为软判决),则确定生成序列的(n0,1,m)卷积码的S_PMgs≤H_PM(gs,00)·(2width-1)。Viterbi输入数据用width位宽来表示,就是将硬判决的输入数据‘0’和‘1’对应量化成“0”和“2width-1”。在无噪声的情况下,也即是将S_PM(gs,max)从硬判决的H_PM(gs,00)变成了H_PM(gs,00)·(2width-1);在有噪声的情况下,就S_PMgs最大的全0输入而言,如果噪声很小,0信号经过噪声信道对应量化成“0~2width-1-1”,既是说依然是倾向于硬判决的0值的,这会使得最小度量状态不变,而最小度量值增大,因而S_PMgs≤H_PM(gs,00)·(2width-1);若噪声很大,0信号经过噪声信道对应量化成“2width-1~2width-1”,既是说Viterbi的输入信号倾向于硬判决的1值,这就使得幸存路径不再是0状态,因此也有S PMgs≤H_PM(gs,00)·(2width-1)。
3、对于(n0,1,m)卷积码,首先由(1)式确定i值。如果对应的i值能够满足(2)式((2)式中
Figure C20051003637700121
表示不大于
Figure C20051003637700122
的最大整数),则确定该(n0,1,m)卷积码可以用i比特位宽的ACS单元;如果对应的i值不能满足(2)式,则说明i比特可能不满足ACS对数据范围的要求,需要用(i+1)比特位宽的ACS单元。如果是有确定生成序列的卷积码,只需将S_PM换成相应的S_PMgs,求出对应的ACS位宽即可,很显然igs≤i。
2i-2≤S_PM<2i-1    (1)
Figure C20051003637700131
为了能够保存每一列的S_PM,我们可以用比S_PM值多一位的i比特来表示ACS单元数据,但是,还要保证当所有PM值的最高位都为1时,最大的PM值不会溢出。因此,需要(2)式来进行选择。
假设第t列的最小PM值为节点SX的PM(min,t),则(t+1)列的最小PM值PM(min, t+1)有:
Figure C20051003637700132
对于(3)的前半部分这里就不再叙述了,可以在讲解卷积码的相关书籍中找到对应的解释;对于(3)的后半部分,t列的每个状态在t+1时刻均可以延伸出两个状态,分别对应输入值为0和1。因为一般卷积码的n0个输出都与输入即时相关,所以相同状态的两个不同输入,势必造成两种状态的输出互异,因此从SX延伸的两个状态最小值一定不大于
Figure C20051003637700133
如果PM(min,t+1)依然是SX的延伸,则有:
Figure C20051003637700134
如果PM(min,t+1)不是SX的延伸,则说明PM(min,t+1)值会比
Figure C20051003637700135
更小。综上所述,可以得到(3)式。
由(1)式确定的i值,如果能够满足(2)式则该(n0,1,m)卷积码可以用i比特位宽的ACS单元;如果不满足(2)式,则需要用(i+1)比特位宽的ACS单元。考虑极限情况,当某一列的PM(min,t)=2i-1-1时,由(3)式,假设PM(min t+1)取最大值,则有则该列的最大PM值为:
PM ( max , t + 1 ) ≤ PM ( min , t + 1 ) + S _ PM
Figure C20051003637700142
Figure C20051003637700143
如果满足(2)式,则有PM(max,t+1)<2i,说明2i-1≤PM(any,t+1)<2i(PM(any, t+1)表示(t+1)列的任意节点的PM值),因此可以用i比特位宽的ACS单元;如果不能满足(2)式,说明当PM(min,t+1)≥2i-1时,有PM(max+1)≥2i,i比特数据不足以保存PM值差异,我们需要增加1位,用(i+1)比特位宽的ACS单元。
通过以上三步可以确定任意(n0,1,m)卷积码的对应ACS位宽。我们以(2,1,7)卷积码和(3,1,7)卷积码为例进行说明,假设都是进行width=3的软判决:
例1:(2,1,7)卷积码:由(1)式有26<2×(7-1)×23=84<27,所以i=8,而且由(2)式有27-1+84+1×7=218<28,所以(2,1,7)卷积码可以用8位的ACS单元。如果确定(2,1,7)卷积码的生成多项式为(133)8、(171)8,通过Matlab软件仿真可以得到H_PM(gs,00)=8。则由(1)式有25<8×7=56<26,所以i=7,而且由(2)式有26-1+56+1×7=126<27,所以对于生成序列为(133)8、(171)8的(2,1,7)卷积码可以用7位的ACS单元。
例2:(3,1,7)卷积码:由(1)式有26<3×(7-1)×23=126<27,所以i=8,但是由(2)式有27-1+126+1×7=260>28,因此(2,1,7)卷积码需要用8+1=9位的ACS单元。如果确定(3,1,7)卷积码的生成多项式为(133)8、(145)8、(175)8,通过Matlab软件仿真可以得到H_PM(gs,00)=12。则由(1)式有26<12×7=84<27,所以i=8,而且由(2)式有27-1+84+1×7=218<28,所以对于生成序列为(133)8、(145)8、(175)8的(3,1,7)卷积码可以用8位的ACS单元。
在确定ACS单元位宽i之后,本发明提出一种改进的ACS电路,可以有效地解决PM值溢出问题,而且相对于传统的ACS设计也减小了硬件实现和关键路径延时,并且能够普遍适用于Viterbi的并行/串行/混合型结构。
如图4所示是本发明的改进ACS电路单元结构图,在该电路中,并没有采用i比特位宽的加法器、比较器,而是采用(i-1)比特位宽加法器和比较器,然后通过增加进位位逻辑单元45A、45B和Logic基本逻辑单元46对最高位进行单独处理。
下面给出图4中进位位逻辑单元45A、45B和Logic基本逻辑单元46的真值表。
  c_out   add_c<sub>1</sub>   over_bit   c<sub>1</sub>   over<sub>1</sub>
  0   0   0   0   0
  0   0   1   X   0
  0   1   0   1   0
  0   1   1   X   0
  1   0   0   1   0
  1   0   1   0   0
  1   1   0   X   1
  1   1   1   1   0
这是以45A为例(X状态为不可能出现的状态)的进位逻辑单元真值表。它的输入有三个,分别是网格图中上一列相应状态的进位输出c_out、本状态的加法器41A进位输出add_c1和上一列的溢出控制位over_bit,输出有两个,分别为本加法器的最高位输出c1和该状态PM值溢出标志位over1。当出现PM值溢出问题时,对应于真值表中的{c_out,add_c1}=2’b11,即上一时刻的最高位输出为1,本时刻的加法器41A进位位也为1,说明本数据已经两次超过2i-1,即已经超过2i,如果这时候over_bit=1,即所有状态PM值都已经大于等于2i-1,所以PM值可以减掉2i-1,进位位c1输出为1;如果这时候over_bit=0,则说明这时本加法器的输出已经超过2i,但是还没有所有状态PM值都大于等于2i-1,则该PM值一定是被舍弃的PM值,所以,我们令c1输出为X,而over1为1(表示该数即将被舍弃)。通过对真值表的分析可以得出c1=c_outover_bit+add_c1,over1=c_out&over_bit&add_c1
对于基本逻辑单元Logic46,它的输入有五个分别是两个加法器41A、41B的进位位c1、c2,溢出标志位over1、over2和比较器(CMP)42的输出结果x,输出有两个,一个是选择电路(MUX)43的选择信号a1和最高位的选择结果a2。这里,溢出标志位over1、over2是为了防止非幸存路径的溢出问题。
为了分析逻辑关系方便,先分析c1、c2和x的逻辑关系,令它们的输出分别对应为a1_temp和a2_temp,再考虑over1、over2、a1_temp和a2_temp之间的逻辑关系。
所以,Logic基本逻辑单元46分为两个真值表格来表示。
  c<sub>1</sub>   c<sub>2</sub>   x   a<sub>1</sub>_temp   a<sub>2</sub>_temp
  0   0   0   0   0
  0   0   1   1   0
  0   1   0   0   0
  0   1   1   0   0
  1   0   0   1   0
  1   0   1   1   0
  1   1   0   0   1
  1   1   1   1   1
  over<sub>1</sub>   over<sub>2</sub>   a<sub>1</sub>_temp   a<sub>2</sub>_temp   a<sub>1</sub>   a<sub>2</sub>
  0   0   0   0   0   0
  0   0   1   1   1   1
  0   1   0   0   0   0
  0   1   1   0   0   0
  1   0   0   1   1   1
  1   0   1   1   1   1
  1   1   0   0   X   X
  1   1   1   1   X   X
对于第二部分,{over1,over2}=2’b11时,即本ACS单元的两个PM值都出现溢出现象,通过前面决定ACS数据位宽的分析,可知这是不可能发生的情况,可以不用理会。通过对两个真值表的分析可以得出:
a1=over1+over2c1x+over2c1c2+over2xc2
a2=over1+over2c1c2
下面详细解释一下,本电路的性能改进:
1、本发明提供了一种决定ACS最小位宽的方法,并提出了能够解决溢出问题的ACS电路,虽然本电路增加了一些逻辑电路,但是,这些逻辑电路只是由简单的与或非门组成,消耗资源很少;而且,通过本方法已经使ACS的数据位宽达到最小。综合考虑,本发明有效地减小了硬件电路资源。
2、时间特性分析:图5给出本发明ACS电路的数据流图,假设最终确定ACS数据位宽为i。该图与图4相比在电路表现形式上做了如下改动:将Logic中的a1和a2分开表示,并将a1进行变形,如下式所示:
a1=over1+over2·c1·x+over2·c1·c2+over2·c2·x
=(over2·c1+over2·c2)·x+(over1+over2·c1·c2)=ax+b
其中a=over2·c1+over2·c2、b=over1+over2·c1·c2。因为x信号出现的较晚,因此a1信号可以分为两部分执行:a、b电路先执行;收到x信号后,再执行a1=ax+b的操作。
从数据流的角度看,本发明ACS电路可以分成三个阶段,每个阶段的电路可以同时执行:第一阶段包括两个(i-1)位加法器41A、41B和45A、45B中的over_bit非门、两个与门相关的电路,很显然这个阶段的关键路径是(i-1)位加法器。第二阶段的电路在第一阶段电路之后执行,包括45A和45B中的两个或门(c1、c2)、两个与门(over1、over2)、46中的a2、64输入与非门、(i-1)位CMP(x)以及46中的a和b。而第三阶段电路a1=ax+b只能在比较器CMP输出比较信号x之后执行。
在第一阶段电路之后,数据流分为三股,第一股数据流:与门(over1、over2)、或门(c1、c2)→与门(a2)→最高位积累单元;第二股数据流:CMP(x);第三股数据流与门(over1、over2)、或门(c1、c2)→46中的a和b。如图所示,后两股数据流交汇于a1=ax+b部分,显然比较器决定了后两股数据流的关键路径。第一股数据流与后两股数据流不相关,实际上三股数据流会合并成两股。
先分析2m-1输入与门的延时:假设该多输入与门用二输入的与门级联实现,则需要(m-1)级的二输入与门(第一级2m-2个二输入与门,以此类推,最后一级为1个二输入与门),因此最大延时为tmax=(m-1)×t二输入与门,在实际实现时一定会采取延时更小的电路,延时一定不会大于tmax的值。最高位积累单元44延时最大的情况是Viterbi采用并行结构即需要2m-1输入与门的情况,因此有t44≤(m-1)×t二输入与门。因此,最高位积累单元延时小于(i-1)位比较器+(a1=ax+b)+2选1的多路选择器。
综上,整个电路的关键路径为:(i-1)位加法器+(i-1)位比较器+二输入与门+二输入或门+2选1多路选择器。很显然,本电路使得关键路径有所降低。
3、本电路普遍适用于串行、并行与混合型Viterbi结构。在并行结构时,输入为上一列2m-1个ACS单元的PM值最高位,进行2m-1输入的与操作,输出为本列的over_bit位;在串行/混合型结构时,输入为上一列n(n为采用的ACS单元个数)个ACS单元的PM值最高位以及上一列已经积累的over_bit值,进行n+1输入的与操作,将上一列的所有2m-1个状态的最高位都搜集全之后将本列的over_bit位输出。
综上所述,本发明公开了一种用于确定ACS单元最小位宽的方法,包括下述三个步骤:
第一步,对于(n0,1,m)卷积码,网格图中的每一列的PM跨度(用S_PM表示)有:
S_PM≤n0·(m-1)·(2width-1);
第二步,对于有确定生成序列的(n0,1,m)卷积码,网格图中的每一列PM跨度(用S_PMgs表示)有:
S_PMgs≤H_PM(gs,00)·(2width-1),
其中H_PM(gs,00)指用于硬判决时,向Viterbi译码器输入全0数据的最大PM跨度;
第三步,对于(n0,1,m)卷积码,首先:
2i-2≤S PM<2i-1   (1)
由(1)式确定i值。如果对应的i值能够满足:
Figure C20051003637700181
((2)式中
Figure C20051003637700182
表示不大于
Figure C20051003637700183
的最大整数),则确定该(n0,1,m)卷积码可以用i比特位宽的ACS单元;如果对应的i值不能满足(2)式,则需要用(i+1)比特位宽的ACS单元。对于有确定生成序列的卷积码,只需将S PM换成相应的S_PMgs,求出对应的ACS位宽即可,很显然igs≤i。

Claims (8)

1. 一种维特比译码器,包括顺序处理接收到的数据的分支度量单元BMU(21)、加比选单元ACS(22)、幸存路径存储器(24)、和回溯单元TBU(23),以及将所述ACS(22)选出的路径度量(PM)值在后继的步骤中再送回ACS(22)单元的路径度量存储单元(25),其特征在于,在所述加比选单元ACS(22)后端设置用来进行网格图中每一列的所有2m-1个节点PM值的最高位与操作、将上一列的所有2m-1个状态的最高位都搜集全之后将本列的溢出控制位over_bit位输出的最高位积累单元,在所述加比选单元ACS(22)中还包括将各个加法器的最高位单独处理的两个进位处理逻辑电路(45A)和(45B)、以及简单逻辑电路(46);所述进位处理逻辑电路(45A)的输入有三个,分别是网格图中上一列相应状态的进位输出c_out、本状态的加法器(41A)进位输出add_c1和上一列的溢出控制位over_bit,输出有两个,分别为本时刻的最高位输出c1和该状态PM值溢出标志位over1,其输入输出的逻辑关系为:
c1=c_out&over_blt+add_c1
over1=c_out&over_bit&add_c1
所述进位处理逻辑电路(45B)的输入有三个,分别是网格图中上一列另一个相应状态的进位输出c_out、本状态的加法器(41B)进位输出add_c2和上列的溢出控制位over_bit,输出有两个,分别为本时刻的最高位输出c2和该状态PM值溢出标志位over2,其输入输出的逻辑关系为:
c2=c_out&over_bit+add_c2
over2=c_out&over_bit&add_c2
2. 根据权利要求1所述的维特比译码器,其特征在于,所述简单逻辑电路(46)的输入有进位位c1、c2,溢出标志位over1、over2和所述比较器输出结果x;输出有选择器的选择信号a1和最高位的选择结果a2,其输入输出的逻辑关系为:
a1=over1+over2c1x+over2c1c2+over2xc2
a2=over1+over2c1c2
所述最高位的选择结果a2输入所述最高位积累单元,在将上一列的所有2m-1个状态的最高位搜集全之后从所述最高位积累单元输出本列溢出控制位over_bit。
3. 根据权利要求2所述的维特比译码器,其特征在于,所述的维特比译码器为并行结构;所述最高位积累单元的输入为上一列2m-1个ACS单元的PM值最高位(m是约束长度),进行2m-1输入的与操作,输出为本列的over_bit位。
4. 根据权利要求2所述的维特比译码器,其特征在于,所述的维特比译码器为串行/混合型结构;所述最高位积累单元的输入为上一列n(n为采用的ACS单元个数)个ACS单元的PM值最高位以及上一列已经积累的over_bit值,进行n+1输入的与操作,将上一列的所有2m-1个状态的最高位都搜集全之后将本列的over_bit位输出。
5. 一种用于维特比译码器的加比选单元电路,包括顺序处理输入数据的两个加法器(41A、41B)、比较器CMP(42)、和多路选择器MUX(43),其特征在于,防止两个加法器(41A、41B)溢出的最高位选通电路包括将各个加法器的最高位单独处理的进位处理逻辑电路(45A)和(45B)、以及简单逻辑电路(46),在最高位选通电路后端设置用来进行网格图中每一列的所有2m-1个节点PM值的最高位与操作、将上一列的所有2m-1个状态的最高位都搜集全之后将本列的溢出控制位over_bit位输出的最高位积累单元,所述进位处理逻辑电路(45A)的输入有三个,分别是网格图中上一列相应状态的进位输出c_out、本状态的加法器A的进位输出add_c1和上一列的溢出控制位over_bit,输出有两个,分别为本加法器(45A)的最高位输出c1和该状态PM值溢出标志位over1,其输入输出的逻辑关系为:
c1=c_out&over_bit+add_c1
over1=c_out&over_bit&add_c1
所述进位处理逻辑电路(45B)的输入有三个,分别是网格图中上一列另一个相应状态的进位输出c_out、本状态的加法器进位输出add_c2和上一列的溢出控制位over_bit,输出有两个,分别为本加法器的最高位输出c2和该状态PM值溢出标志位over2,其输入输出的逻辑关系为:
c2=c_out&over_bit+add_c2.
over2=c_out&over_blt&add_c2.
6. 根据权利要求5所述的用于维特比译码器的加比选单元电路,其特征在于,所述简单逻辑电路(46)的输入有所述两个加法器(41A、41B)的进位位c1、c2,溢出标志位over1、over2和所述比较器CMP(42)的输出结果x;输出有所述选择电路MUX(43)的选择信号a1和最高位的选择结果a2,其输入输出的逻辑关系为:
a1=over1+over2c1x+over2c1c2+over2xc2
a2=over1+over2c1c2
所述最高位的选择结果a2输入所述最高位积累单元,在将上一列的所有2m-1个状态的最高位搜集全之后从所述最高位积累单元输出本列溢出控制位over_bit。
7. 根据权利要求6所述的用于维特比译码器的加比选单元电路,其特征在于,所述的维特比译码器为并行结构;所述最高位积累单元的输入为上一列2m-1个ACS单元的PM值最高位,m是约束长度,进行2m-1输入的与操作,输出为本列的over_bit位。
8. 根据权利要求6所述的用于维特比译码器的加比选单元电路,其特征在于,所述的维特比译码器为串行/混合型结构;所述最高位积累单元的输入为上一列n个ACS单元的PM值最高位以及上一列已经积累的over_bit值,,n为采用的ACS单元个数,进行n+1输入的与操作,将上一列的所有2m-1个状态的最高位都搜集全之后将本列的over_bit位输出。
CNB2005100363773A 2005-08-08 2005-08-08 一种维特比译码器及用于维特比译码器的加比选单元电路 Expired - Fee Related CN100413217C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100363773A CN100413217C (zh) 2005-08-08 2005-08-08 一种维特比译码器及用于维特比译码器的加比选单元电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100363773A CN100413217C (zh) 2005-08-08 2005-08-08 一种维特比译码器及用于维特比译码器的加比选单元电路

Publications (2)

Publication Number Publication Date
CN1731686A CN1731686A (zh) 2006-02-08
CN100413217C true CN100413217C (zh) 2008-08-20

Family

ID=35963997

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100363773A Expired - Fee Related CN100413217C (zh) 2005-08-08 2005-08-08 一种维特比译码器及用于维特比译码器的加比选单元电路

Country Status (1)

Country Link
CN (1) CN100413217C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102404011A (zh) * 2010-09-15 2012-04-04 中兴通讯股份有限公司 维特比解码实现方法及装置

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101060340B (zh) * 2007-04-04 2011-05-11 中兴通讯股份有限公司 选择幸存路径累计度量位宽并防止该度量溢出的方法
US8259867B2 (en) 2008-01-04 2012-09-04 Qualcomm Incorporated Methods and systems for turbo decoding in a wireless communication system
US8259866B2 (en) * 2008-01-04 2012-09-04 Qualcomm Incorporated Decoding scheme using A-priori information about transmitted messages
US8406342B2 (en) 2008-06-19 2013-03-26 Qualcomm Incorporated Methods and systems for improving frame decoding performance using known information
CN102739261B (zh) * 2011-04-08 2015-10-28 中国科学院微电子研究所 多相加比选前向回溯Viterbi译码器
CN105634509A (zh) * 2015-12-29 2016-06-01 中国科学院微电子研究所 一种维特比译码方法及装置
CN109462407B (zh) * 2018-12-13 2022-08-16 锐捷网络股份有限公司 维特比译码方法、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1387374A (zh) * 2002-05-29 2002-12-25 信息产业部电信传输研究所 通用的卷积编码器和维特比译码器

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1387374A (zh) * 2002-05-29 2002-12-25 信息产业部电信传输研究所 通用的卷积编码器和维特比译码器

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
. .
一种高速Viterbi译码器的优化设计及Verilog实现. 黄君凯,王鑫.微电子学与计算机,第22卷第2期. 2005
一种高速Viterbi译码器的优化设计及Verilog实现. 黄君凯,王鑫.微电子学与计算机,第22卷第2期. 2005 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102404011A (zh) * 2010-09-15 2012-04-04 中兴通讯股份有限公司 维特比解码实现方法及装置

Also Published As

Publication number Publication date
CN1731686A (zh) 2006-02-08

Similar Documents

Publication Publication Date Title
CN100413217C (zh) 一种维特比译码器及用于维特比译码器的加比选单元电路
CN1168237C (zh) 移动通信系统中的分量解码器及其方法
US6879267B2 (en) Soft-output decoder with computation decision unit
CN101997553A (zh) 一种卷积码译码方法及装置
EP2339757B1 (en) Power-reduced preliminary decoded bits in viterbi decoder
WO2005011129A1 (ja) ビタビ復号器
EP3996285A1 (en) Parallel backtracking in viterbi decoder
US20070113161A1 (en) Cascaded radix architecture for high-speed viterbi decoder
US8839082B2 (en) Methods for viterbi decoder implementation
US7404139B2 (en) Decoder with M-AT-A-Time Traceback
CN100429870C (zh) 一种维特比译码器以及决定其中加比选单元数据位宽的方法
Mandwale et al. Implementation of High Speed Viterbi Decoder using FPGA
CN105589082A (zh) 一种北斗导航系统的维特比译码装置及方法
Ameen et al. FPGA implementation of modified architecture for adaptive Viterbi decoder
US7263653B2 (en) Algorithm for a memory-based Viterbi decoder
CN106452461A (zh) 一种通过矢量处理器实现viterbi解码的方法
Arun et al. Design and VLSI implementation of a Low Probability of Error Viterbi decoder
Naveen et al. Low power Viterbi decoder design based on reversible logic gates
US6904105B1 (en) Method and implemention of a traceback-free parallel viterbi decoder
CN102723959A (zh) 维特比译码器、多路并行译码器和加比选处理方法
US20070230606A1 (en) Viterbi traceback
US20100185925A1 (en) Differential Locally Updating Viterbi Decoder
Putra et al. VLSI architecture for configurable and low-complexity design of hard-decision Viterbi decoding algorithm
CN102761342B (zh) 维特比译码器和维特比译码方法
Kumar et al. FPGA Implementation of Viterbi Algorithm for Decoding of Convolution Codes

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080820

Termination date: 20110808