Viterbi译码器的优化设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基金项目:华为研究基金资助项目
收稿日期:1999-10-18; 定稿日期:2000-01-05
第30卷第3期2000年6月
微电子学M icroelectronics V o l .30,№3Jun .2000
文章编号:1004-3365(2000)03-0168-04
Viterbi 译码器的优化设计
秦 东,肖 斌,李志勇,周 汀
(复旦大学 专用集成电路与系统国家重点实验室,上海 200433)
摘 要: Viter bi 译码器中的大容量、宽带宽存储器限制了译码器的速度和系统的功耗,合理地组织这个存储器是提高译码器速度,降低系统功耗的关键。
从电路系统角度分析了Viterbi 译码器的结构,提出了一种优化设计方案。
关键词: 专用集成电路;Viter bi 译码器;存储器管理;卷积编码中图分类号: T N492文献标识码: A
Optimized Architectural Design of Viterbi Decoders
QIN Dong ,XIAO Bin ,LI Zhi -yong ,ZHOU T ing
(S tate K e y L ab .o f AS I C &Systems ,Fud an Univ ersity ,S hang hai 200433,China )
Abstract : T he need o f V iter bi deco der s for lar ge mem or y w ith w ide bandw idth limits the speed o f the deco der
and it consum es mo st po w er o f t he w hole sy stem.So ,pr oper manag ement o f the m em or y is the key t o get a hig h-speed and low -po wer V iter bi deco der.An o ptimized a rchitectur al desig n o f V iter bi deco der is descr ibed in the paper .
Key words : A SIC;V it erbi decoder;M emor y m anag ement;Co nvolutio nal encoder EEACC : 1265
1 引 言
卷积编码和Viterbi 译码是一种有效的前向纠错方法,广泛应用在深空通信、卫星通信和移动通信中[1]。
Viterbi 译码算法是用于卷积码译码的一种最大似然译码算法,其复杂性随约束长度的增长呈指数增长。
在当前的某些应用中,对Viterbi 译码器提出了更高的性能要求,往往采用长约束长度的卷积码,使译码需要大容量宽带宽的存储器,降低译码器的速度,增加功耗。
在一些文章里提出了改进的Viterbi 算法
[2,3]
,虽然可以减小存储器容量,但译码
器性能会下降。
本文从电路系统角度分析了Viterbi 译码器的结构,提出了一种结构优化设计方法,并用这种优化结构实现了一个用于无线多媒体通信中的Viterbi 译码器。
2 V iterbi 译码器系统结构
Viterbi 算法是一种估计一个有限状态过程中
状态序列的最优算法。
以下简单介绍Viterbi 算法的基本概念和系统结构,包括一些符号和术语。
卷积编码器的简单结构如图1所示。
输入信息符号m i 是M 进制的,编码得到的数据c i 是当前符号m i 和前k 个存储在移位寄存器中的符号的函数。
得到c i 后,移位寄存器在时钟作用下移位,状态由(m i -1,m i -2,…,m i -k )变成(m i ,m i -1,…,m i -k +1)。
卷积码的约束长度就是k +1。
图1 卷积编码器
卷积编码器送出的码序列为C ,经过信道传输后送入译码器的是序列R 。
译码器根据接收序列R,按最大似然译码准则力图寻找出编码器的状态变化过程。
这个过程就是译码器计算寻找有最大度量的路径过程,即寻找
max j M (R C j ), j =1,2,…,M k
的过程。
式中,M (R C j )=lo g P (R C j ),称为C j 的
路径度量。
在实际运用中,为了简化运算,用软判决距离来作为度量[1],这样译码过程就是译码器计算
寻找具有最小度量的路径过程。
图2 (a)基2网格图;(b)A CS 操作
Viter bi 算法可以用网格图来表示,它是一个时间序列的状态图。
一个简单的表示2个状态的状态转移网格图如图2(a)所示。
在n -1时刻,两个可能状态根据输入可以转移到n 时刻的两个状态。
每一种可能的状态转移都根据接收到的有噪声的观测值计算得到的似然度加权。
Viter bi 算法就是通过在网格图中寻找最小权重路径(幸存路径)来判决最大似然状态序列。
网格图中在n 时刻的状态S 对应了状
态路径度量M S n 和判决d S n ,M S
n 是到达这个状态的路径度量累加,d S
n 是到达这个状态的幸存路径的标识。
每次状态转换都是由前一时刻的状态x i 到下一时刻状态j x ,其中,i 是移出移位寄存器的位数,j 是下一个输入位数,x 表示移位寄存器中间几位。
这个状态转移的似然度由分支度量B jxi
表示。
给定时刻n -1的状态路径度量,在时刻n 的状态0x 的度量是:
M 0x n =min (M x 0n -1+B 0x 0n ,M x 1n -1+B 0x 1
n )
判决就是得到更新的最小度量的前序状态移出位数(
i )。
这个递归的度量更新就是ACS 操作,如图2(b)所示。
输入序列的译码是路径回搜的递归过程。
对于任意一个起始状态S n 和它的判决d S n ,前一状态就是S n -1=(S n 1)d S n 。
这个递归过程进行L 次,L 是幸存路径长度。
遍历了幸存路径上的每个状态后,就可以得到时刻n -L 的状态转移输入的译码。
译码器的框图如图3所示。
接收到的卷积码先进行分支度量计算,就是计算接收码的似然程度。
然后通过A CS 计算每个卷积码状态的路径度量,得到幸存路径,路径度量存储在度量存储器中,幸存路径存储在路径存储器中。
最后由最大似然判决得到译码输出。
图3 V iter bi 译码器框图
从图3可见,整个系统共需大量的存储单元,这
些存储单元所需功耗要占整个系统功耗的很大一部分。
因此合理地安排两部分存储单元,是避免存储器读写出现瓶颈,提高速度、降低功耗的关键。
3 V iterbi 译码器的路径度量存储器
路径度量存储器中的路径度量被读出后送到ACS 中,得到新的路径度量,然后回写到路径存储器中。
路径度量存储器中有2k 个路径度量,度量的精度由约束长度和软判决级数决定[5]。
每接收一个编码符号,每个状态的路径度量都有一次读出和一次写入操作。
若这2k
个路径度量存在一块RAM 中,当k 一定大时,要求的存储器读写周期会很短,以至现有的PLD 甚至ASIC 都很难达到。
有两种途径来解决这个问题,一种是改进Viter bi 算法,减少路径度量存储器读写次数;另一种是将这2k 个路径度量分块,各块并行读写,降低单块存储器的读写频率。
在实现Viter bi 译码器的时候,因为时刻n 的路径度量是用时刻n -1的路径度量计算得到的,所以必须加倍缓存路径度量。
但路径度量计算的一个特点是N 个当前状态(y ,j i ,j i -1,…,j i -p )的路径度量
是由N 个前序状态(j i ,j i -1,…,j i -p ,x )的路径度量计算得到的,而x 和y 都有N 种可能。
这样,在N 个路径度量被读出后,新计算出来的N 个路径度量可以存进去,不需要加位缓存路径度量。
这种蝶形路
径存储器组织方法类似于离散傅里叶变换[6]
,如图4所示,每个存储单元里的路径度量对应的状态随
时间变化。
图4 蝶形路径度量存储器组织
表示Viterbi 算法的2k
个状态的网格图可以分解成2k -v 个子网格图,每个子网格图是2v 个状态的网格图[4]。
每个k 阶的子网格图可折叠成一个一阶
的基2v
的网格图。
图5所示是8状态的网格图的分解和折叠。
新网格图表示的状态转移和原来的网格图中的状态转移是一一对应的,所以不会影响译码
性能。
这样,每两个时刻才计算一次2k
个状态的路径度量,其存储器的读写次数减少了一半。
这种基4的网格图中时刻n 状态00x 的路径度量是:
M 00x n =min(M x 00n -2+B 0x 00n -1+B 0x 00n ,M x 01n -2+B 0x 01n -1+B 0x 00
n ,
M x 10n -2+B 0x 10n -1+B 00x 1n ,M x 11n -2+B 0x 11n -1+B 00x 1n )
由此可以看出,在将网格图分解和折叠后,会使ACS
的运算更复杂。
图5 (a )8状态基2网格图,(b)4状态子网格分解图,
(c )8状态基4网格图
这种状态转移网格图折叠后可以继续折叠,变成基8或基16的网格图。
这样可以进一步减少路径度量存储器的读写次数,但过多的折叠会使ACS 运算单元的面积增大,速度减慢,甚至成为计算瓶颈。
降低对存储器速度要求的另一个方法是将存储
器分块,各块并行读写。
需要注意的是恰当地选择各状态的ACS 计算顺序是两块路径度量存储器读写顺畅的保证。
4 V iterbi 译码器的幸存路径存储器
ACS 在计算出一个状态的路径度量的同时,也计算出了到达这个状态的路径转移信息,这个路径转移信息就保存在幸存路径存储器中。
为了最小误码率,幸存路径的长度应该尽可能的长。
在实际应用
中,幸存路径通常取4到5倍约束长度[7]。
幸存路径存储器的组织采用类似指针的方法,将幸存路径分成两部分,前序状态的幸存路径和指向前序状态的指针。
对于采用基4算法,时刻n 的状态S 的可能前序状态有4个,因此用一个两位的指针来表示经ACS 计算找出的在n-2时刻的前序状态S ,比如当前状态是(0,0,x ),其前序状态是(x ,1,0),则指针就是(1,0)。
这个指针就是ACS 计算得到的判决d S
n 。
状态S 存储的幸存路径就是状态S ′的幸存路径和指向状态S ′的指针。
同样,状态S ′存储的幸存路径是它在n -4时刻的前序状态S 的幸存路径和指向S 的指针。
这样,每个状态的幸存路径就分成16个单元,每单元2位。
在幸存路径存储器写满后要进行截尾译码,只有这时才读取幸存路径存储器,因此,在组织幸存路径存储器时,不是像路径度量存储器那样存储器单元对应的状态随时间变化。
幸存路径存储器可看作一个存储器阵列,每列对应一个状态,一列中的每个单元存储了1个2位指针。
与路径度量存储器相同的是,幸存路径存储器也可分块。
截尾译码的过程就是找出当前时刻n 的所有状态中具有最小路径度量的状态S ,这个状态对应的幸存路径就是最大似然路径,然后根据存储的指针找到其n -2时刻的前序状态S ,再根据状态S 存储的n -2时刻的指针找到其n -4时刻的前序状态S ,以此类推,直到找到起始状态,它的最高两位就是基4算法的译码输出。
5 A CS
前面提到,为了减少存储器的读写次数,采用了基4的ACS,路径度量存储器和幸存路径存储器都分成两块。
当要求高速译码时,通常用多个ACS 并行工作。
ACS 执行的是状态路径度量的更新操作,它需要不断读出路径度量作为操作数,然后将更新的路径度量写回存储器。
根据路径存储器的蝶形组
织可知,计算n 时刻状态00x 的路径度量M 00x
n 需要
4个度量M x 00n -2、M x 01n -2、M x 10n -2和M x 11
n -2。
当存储器分块
时,它们可能存在一块路径度量存储器中,也可能分别存在各块存储器中。
各块路径度量存储器是并行读写的,所以必须适当安排ACS 读取次序。
解决方法是当一个ACS 计算状态S 的路径度量时,另一个ACS 计算状态S ~的路径度量,其中S ~是S 的按位取反。
这两个状态的路径度量各存在一块路径度量存储器中,两个存储单元的地址也是按位取反的关系。
状态S 的四个可能的前序状态与状态S ~的四个可能的前序状态和这些前序状态的路径度量存储单元的地址也有一一对应按位取反的关系,也就是说在读写一块路径度量存储器时,这个地址按位取反得到的就是另一块路径度量存储器的读写地址。
这样,两块路径度量存储器只用一个地址产生器和一个读写使能信号。
对于幸存路径存储器,写地址也是这
样。
图6 (a )基4网格图;(b )基4A CS
6 结 论
卷积编码和Viterbi 译码是一种有效的前向纠错方法,广泛应用在深空通信、卫星通信和移动通信中。
Viterbi 译码算法的复杂性随约束长度的增长呈指数增长。
本文介绍了一种Viter bi 译码器的结构优化设计,主要内容就是存储器的组织和管理,这种结构很容易用IC 实现,也可用某些PLD ,如Altera 的FLEX10K 实现。
用这种结构实现了一个约束长度为9,编码速率为512kbps,码率为1/2的卷积码的Viterbi 译码器。
这种约束条件的卷积码和Viter bi 译码器被用在无线多媒体通信中。
如果要求Viter bi 译码器的译码速率更高,则需用全并行的ACS [8]。
这时,路径度量和幸存路径都只能存储在寄存器中,不适合上面提出的结构。
参考文献:
[1]
王新梅 编著.纠错码与差错控制[M ].北京:人民邮电出版社,1989:297~386.
[2]K ubo ta S ,Kat o S ,Ishitani T .N ov el V iter bi decode
V L SI implementat ion and its per fo rmance [J ].IEEE T rans Communication,1993;41(8):1170~1178.[3]Hashimo to T .A list-ty pe r educed-constr aint
g eneralization o f t he V iter bi alg or ithm [J ].IEEE T ra ns Infor mation T heor y ;1987;33(6):866~876.
[4]Black P J,M eng T H.A unified appr oa ch to the
V iter bi a lg or ithm state metric update fo r shift r egister pr ocesses [A ].In :P ro c I CA SSP [C ],1992,629~632.
[5]Hekstr a A P.A n alter nat ive to metr ic r escaling in
Viterbi deco der s [J ].IEEE T r ans Co mmunicatio n ,1989;37(11):1220~1223.
[6]Rader C M.M emo ry manag ement in a Viterbi deco der
[J ].IEEE T r ans Communication,1981;29(9):1399~1401.[7]O nyszchuk I M .T r uncation lengt h fo r V iter bi
decoding [J].IEEE T rans Communication,1991;39(7):1023~1026.
[8]Black P J ,M eng T H .A 140-M b /s ,32-st ate ,radix -4
V iter bi deco der [J].IEEE J So lid-State Cir cuit ,1992;
27(12):1877~
1885.
作者简介: 秦 东(1975— ),男,1987年毕业于复旦大学电子工程系,现为复旦大学专用集成电路与系统国家重点实验室硕士研究生,主要从事通信A SIC 及系统的研究。