CN100429870C - 一种维特比译码器以及决定其中加比选单元数据位宽的方法 - Google Patents
一种维特比译码器以及决定其中加比选单元数据位宽的方法 Download PDFInfo
- Publication number
- CN100429870C CN100429870C CNB2005100363788A CN200510036378A CN100429870C CN 100429870 C CN100429870 C CN 100429870C CN B2005100363788 A CNB2005100363788 A CN B2005100363788A CN 200510036378 A CN200510036378 A CN 200510036378A CN 100429870 C CN100429870 C CN 100429870C
- Authority
- CN
- China
- Prior art keywords
- formula
- acs
- viterbi decoder
- value
- width
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6577—Representation or format of variables, register sizes or word-lengths and quantization
Abstract
本发明涉及一种维特比译码器,提出一种可以有效地确定最小加比选单元的数据位宽的方法,从而减小维特比译码器硬件实现面积以及加比选单元关键路径的延迟时间;可以有效地解决PM值溢出问题,并且能普遍适用于Viterbi的并行/串行/混合型结构,包括下述步骤:第一步,根据公式一计算网格图中的每一列的路径度量值(PM)的跨度S_PM,S_PM≤n0·(m-1)·(2width-1);第二步,再根据公式二确定i值:2i-2≤S_PM<2i-1,第三步,验证所述i值是否满足公式三,如果所述i值满足所述公式三,则所述加比选单元的最小数据位宽为i比特;如果所述i值不满足所述公式三,则所述加比选单元的最小数据位宽为(i+1)比特。
Description
技术领域
本发明涉及一种基于专用集成电路(ASIC)的维特比(Viterbi)译码器,尤其涉及一种决定Viterbi译码器中的加比选(ACS相加-比较-选择)单元电路的数据位宽的方法。
背景技术
卷积码是一种常用的差错控制编码。卷积码(n0,k0,m)表示该卷积码编码器将k0比特信息段编成n0比特的码组,而且所编的n0长码组不仅同当前k0比特信息段有关联,还同前面的(m-1)个(m>1,整数,我们称其为约束长度)信息段有关联。卷积码用生成序列表示输入与输出之间的关系,生成序列表示为 其中i=1,2,...,k0;j=1,2,...,n0;L=1,2,...,m。gi,j L表示了各个寄存器的输入输出端(第L组的第i个节点)到第j个模2加法器输入端的连接线的情况。如果有连接线则 如果无连接线则 可以看出,卷积码有很强的关联性,能够很好的进行纠错。图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单元的路径度量存储单元,所述维特比译码器的输入是(n0,1,m)卷积码,每个输入数据的位宽用width表示,每一列的路径度量PM跨度用S_PM表示,所述加比选单元ACS的数据位宽i由公式一、公式二和公式三同时决定,所述公式一如下:
S_PM≤n0·(m-1)·(2width-1);
所述公式二如下:
2i-2≤S_PM<2i-1
所述公式三如下:
本发明公开的一种维特比译码器,还包括如下技术特征:如果满足所述公式一和公式二的所述i全部不满足所述公式三,则所述加比选单元的最小数据位宽为(i+1)比特。
所述公式一可以用下述公式四代替,所述公式四根据所述(n0,1,m)卷积码的生成序列,计算网格图中的每一列路径度量PM跨度S_PMgs,所述公式四如下:
S_PMgs≤H_PM(gs,00)·(2width-1),
其中H_PM(gs,00)指用于硬判决时,向维特比译码器输入全0数据时的最大路径度量PM跨度;然后在所述公式二和公式三中使用S_PMgs代替S_PM。
确定所述H_PM(gs,00)的步骤包括:将所有状态的路径度量PM值清0,向维特比译码器输入全0的数据流,然后通过Matlab或其它软件考察所述维特比译码器中所述加比选单元输出的全部度量值获得度量跨度。
本发明公开了一种维特比译码器中决定加比选单元数据位宽的方法,用于确定所述加比选单元的最小数据位宽,所述维特比译码器的输入是(n0,1,m)卷积码,每个输入数据的位宽用width表示,包括下述步骤:
第一步,根据公式一计算网格图中的每一列的路径度量值(PM)的跨度S_PM,所述公式一如下:
S_PM≤n0·(m-1)·(2width-1);
第二步,再根据公式二确定i值,所述公式二如下:
2i-2≤S_PM<2i-1
第三步,验证所述i值是否满足公式三,所述公式三如下:
如果所述i满足所述公式三,则所述加比选单元的最小数据位宽为i比特;如果所述i不满足所述公式三,则所述加比选单元的最小数据位宽为(i+1)比特。
本发明公开的一种维特比译码器中决定加比选单元数据位宽的方法,还包括如下附属技术特征:所述第一步用下述计算代替,根据所述(n0,1,m)卷积码的生成序列,计算网格图中的每一列路径度量PM跨度S_PMgs如下:
S_PMgs≤H_PM(gs,00)·(2width-1),
其中H_PM(gs,00)指用于硬判决时,向维特比译码器输入全0数据时的最大路径度量PM跨度;
然后在所述第二步和第三步中使用S_PMgs代替S_PM。
本发明提出一种用于确定ACS单元最小位宽的方法,在解决PM值溢出问题的同时,可以有效地较少ACS单元的硬件实现面积和关键路径延时,并能普遍适用于Viterbi的各种不同结构。在此基础上,本发明提出了一种改进的ACS电路,本电路通过增加简单的逻辑电路、进位位逻辑单元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个信息元,有个可能的信息组,这相应于从码树每一节点上分出的分支数有条,每个节点相应于种不同的信息组输入,并且每条都有n0个码元,作为与此相应的输出子码,相应的每个ACS也有个加法器以及路数据比较器。一般在通信系统中采用的卷积码都取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)式中表示不大于的最大整数),则确定该(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)
为了能够保存每一列的S_PM,我们可以用比S_PM值多一位的i比特来表示ACS单元数据,但是,还要保证当所有PM值的最高位都为1时,最大的PM值不会溢出。因此,需要(2)式来进行选择。
假设第t列的最小PM值为节点SX的PM(min,t),则(t+1)列的最小PM值PM(min, t+1)有:
对于(3)的前半部分这里就不再叙述了,可以在讲解卷积码的相关书籍中找到对应的解释;对于(3)的后半部分,t列的每个状态在t+1时刻均可以延伸出两个状态,分别对应输入值为0和1。因为一般卷积码的n0个输出都与输入即时相关,所以相同状态的两个不同输入,势必造成两种状态的输出互异,因此从SX延伸的两个状态最小值一定不大于如果PM(min,t+1)依然是SX的延伸,则有:
由(1)式确定的i值,如果能够满足(2)式则该(n0,1,m)卷积码可以用i比特位宽的ACS单元;如果不满足(2)式,则需要用(i+1)比特位宽的ACS单元。考虑极限情况,当某一列的PM(min,t)=2i-1-1时,由(3)式,假设PM(min,t+1)取最大值,则有则该列的最大PM值为:
如果满足(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,t+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比特位宽的加法器、比较器,而是采用(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+oer2·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位输出。
综上所述,本发明公开了一种维特比译码器,包括顺序处理接收到的数据的分支度量单元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。
本发明公开的一种用于维特比译码器的加比选单元电路,包括顺序处理输入数据的两个加法器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位输出。
Claims (7)
1.一种维特比译码器,包括顺序处理接收到的数据的分支度量单元BMU(21)、加比选单元ACS(22)、幸存路径存储器(24)、和回溯单元TBU(23),以及将所述加比选单元ACS(22)选出的路径度量PM值在后继的步骤中再送回加比选单元ACS(22)单元的路径度量存储单元(25),其特征在于,所述维特比译码器的输入是(n0,1,m)卷积码,每个输入数据的位宽用width表示,每一列的路径度量PM跨度用S_PM表示,所述加比选单元ACS(22)的数据位宽i由公式一、公式二和公式三同时决定,所述公式一如下:
S_PM≤n0·(m-1)·(2width-1);
所述公式二如下:
2i-2≤S_PM<2i-1
所述公式三如下:
2.根据权利要求1所述的一种维特比译码器,其特征在于,如果满足所述公式一和公式二的所述i全部不满足所述公式三,则所述加比选单元的最小数据位宽为(i+1)比特。
3.根据权利要求2所述的一种维特比译码器,其特征在于,所述公式一用下述公式四代替,所述公式四根据所述(n0,1,m)卷积码的生成序列,计算网格图中的每一列路径度量PM跨度S_PMgs,所述公式四如下:
S_PMgs≤H_PM(gs,00)·(2width-1),
其中H_PM(gs,00)指用于硬判决时,向维特比译码器输入全0数据时的最大路径度量PM跨度;然后在所述公式二和公式三中使用S_PMgs代替S_PM。
4.根据权利要求3所述的一种维特比译码器,其特征在于,确定所述H_PM(gs,00)的步骤包括:将所有状态的路径度量PM值清0,向维特比译码器输入全0的数据流,然后通过Matlab或其它软件考察所述维特比译码器中所述加比选单元输出的全部度量值获得度量跨度。
5.一种维特比译码器中决定加比选单元数据位宽的方法,用于确定所述加比选单元的最小数据位宽,所述维特比译码器的输入是(n0,1,m)卷积码,每个输入数据的位宽用width表示,其特征在于,包括下述步骤:
第一步,根据公式一计算网格图中的每一列的路径度量值PM的跨度S_PM,所述公式一如下:
S_PM≤n0·(m-1)·(2width-1);
第二步,再根据公式二确定i值,所述公式二如下:
2i-2≤S_PM<2i-1
第三步,验证所述i值是否满足公式三,所述公式三如下:
如果所述i满足所述公式三,则所述加比选单元的最小数据位宽为i比特;如果所述i不满足所述公式三,则所述加比选单元的最小数据位宽为(i+1)比特。
6.根据权利要求5所述的一种维特比译码器中决定加比选单元数据位宽的方法,其特征在于,所述第一步用下述计算代替,根据所述(n0,1,m)卷积码的生成序列,计算网格图中的每一列路径度量PM跨度S_PMgs如下:
S_PMgs≤H_PM(gs,00)·(2width-1),
其中H_PM(gs,00)指用于硬判决时,向维特比译码器输入全0数据时的最大路径度量PM跨度;
然后在所述第二步和第三步中使用S_PMgs代替S_PM。
7.根据权利要求6所述的一种维特比译码器中决定加比选单元数据位宽的方法,其特征在于,确定H_PM(gs,00)的步骤包括:将所有状态的PM值清0,向维特比译码器输入全0的数据流,然后通过Matlab或其它软件考察所述维特比译码器中所述加比选单元输出的全部度量值获得度量跨度。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100363788A CN100429870C (zh) | 2005-08-08 | 2005-08-08 | 一种维特比译码器以及决定其中加比选单元数据位宽的方法 |
PCT/CN2006/001989 WO2007016871A1 (fr) | 2005-08-08 | 2006-08-07 | Decodeur viterbi et procede pour determiner la largeur de bits de donnees de l'unite ajout-comparaison-selection du decodeur |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100363788A CN100429870C (zh) | 2005-08-08 | 2005-08-08 | 一种维特比译码器以及决定其中加比选单元数据位宽的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1731687A CN1731687A (zh) | 2006-02-08 |
CN100429870C true CN100429870C (zh) | 2008-10-29 |
Family
ID=35963998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100363788A Expired - Fee Related CN100429870C (zh) | 2005-08-08 | 2005-08-08 | 一种维特比译码器以及决定其中加比选单元数据位宽的方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN100429870C (zh) |
WO (1) | WO2007016871A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101060340B (zh) * | 2007-04-04 | 2011-05-11 | 中兴通讯股份有限公司 | 选择幸存路径累计度量位宽并防止该度量溢出的方法 |
CN101321035B (zh) * | 2008-07-09 | 2012-03-21 | 上海华为技术有限公司 | 差值上限获取方法、定点方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1162873A (zh) * | 1996-03-18 | 1997-10-22 | 三星电子株式会社 | 维特比译码器 |
CN1387374A (zh) * | 2002-05-29 | 2002-12-25 | 信息产业部电信传输研究所 | 通用的卷积编码器和维特比译码器 |
US20050089121A1 (en) * | 2003-10-28 | 2005-04-28 | Industrial Technology Research Institute | Configurable architectrue and its implementation of viterbi decorder |
US20050120287A1 (en) * | 2003-12-01 | 2005-06-02 | Kuo-Ming Wu | Branch metric computation and add-compare-select operation in viterbi decoders |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU5032299A (en) * | 1999-07-06 | 2001-01-22 | Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. | Viterbi decoder |
KR100490815B1 (ko) * | 2000-03-14 | 2005-05-24 | 샤프 가부시키가이샤 | 비터비 복호기 |
US7454601B2 (en) * | 2002-03-28 | 2008-11-18 | Intel Corporation | N-wide add-compare-select instruction |
-
2005
- 2005-08-08 CN CNB2005100363788A patent/CN100429870C/zh not_active Expired - Fee Related
-
2006
- 2006-08-07 WO PCT/CN2006/001989 patent/WO2007016871A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1162873A (zh) * | 1996-03-18 | 1997-10-22 | 三星电子株式会社 | 维特比译码器 |
CN1387374A (zh) * | 2002-05-29 | 2002-12-25 | 信息产业部电信传输研究所 | 通用的卷积编码器和维特比译码器 |
US20050089121A1 (en) * | 2003-10-28 | 2005-04-28 | Industrial Technology Research Institute | Configurable architectrue and its implementation of viterbi decorder |
US20050120287A1 (en) * | 2003-12-01 | 2005-06-02 | Kuo-Ming Wu | Branch metric computation and add-compare-select operation in viterbi decoders |
Also Published As
Publication number | Publication date |
---|---|
CN1731687A (zh) | 2006-02-08 |
WO2007016871A1 (fr) | 2007-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100413217C (zh) | 一种维特比译码器及用于维特比译码器的加比选单元电路 | |
EP0152947B1 (en) | Viterbi decoder with the pipeline processing function | |
US7401284B2 (en) | Module for generating circuits for decoding convolutional codes, related method and circuit | |
CN1327653A (zh) | 移动通信系统中的分量解码器及其方法 | |
EP2339757B1 (en) | Power-reduced preliminary decoded bits in viterbi decoder | |
WO2005011129A1 (ja) | ビタビ復号器 | |
US20070113161A1 (en) | Cascaded radix architecture for high-speed viterbi decoder | |
US8839082B2 (en) | Methods for viterbi decoder implementation | |
CN100429870C (zh) | 一种维特比译码器以及决定其中加比选单元数据位宽的方法 | |
CN100433836C (zh) | 使用冗余对视/音频和语音数据进行解码的方法和系统 | |
US20050149836A1 (en) | Maximum a posteriori probability decoding method and apparatus | |
CN106209117B (zh) | 一种低资源消耗的多参数可配置Viterbi译码器 | |
CN105589082A (zh) | 一种北斗导航系统的维特比译码装置及方法 | |
Mandwale et al. | Implementation of High Speed Viterbi Decoder using FPGA | |
Ameen et al. | FPGA implementation of modified architecture for adaptive Viterbi decoder | |
CN107342775B (zh) | 删余卷积码的维特比译码方法 | |
Bhowal | Transformation of ACS module to CSA module of low-power Viterbi decoder for digital wireless communication applications | |
CN105356893A (zh) | 一种尾码可配置的Viterbi解码方法及解码器 | |
Arun et al. | Design and VLSI implementation of a Low Probability of Error Viterbi decoder | |
US6904105B1 (en) | Method and implemention of a traceback-free parallel viterbi decoder | |
Naveen et al. | Low power Viterbi decoder design based on reversible logic gates | |
JP3260714B2 (ja) | ビタビ復号化装置およびビタビ復号化方法 | |
JP2003060512A (ja) | ビットシーケンスを復号するための方法および装置 | |
Subhashini et al. | Implementation Analysis of adaptive Viterbi Decoder for High Speed Applications | |
Javadi et al. | An asynchronous Viterbi decoder for low-power applications |
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: 20081029 Termination date: 20110808 |