基于FPGA的指针反馈式低功耗Viterbi译码器设计*

2013-09-07 02:51温伟杰陆许明朱伟鸿蔡春晓谭洪舟
电子技术应用 2013年7期
关键词:译码器译码指针

温伟杰,陆许明,朱伟鸿,蔡春晓,谭洪舟

(中山大学 信息科学与技术学院,广东 广州 510006)

随着现代无线通信系统日益复杂化的发展,无线基带通信系统中各模块的实际性能、延时、功耗等参数成为基带设计的重要考虑因素。Viterbi译码器广泛应用于无线局域网和移动通信系统,并且作为基带系统的重要组成部分,其功耗与性能成为基带设计中非常关键的一环。因此,设计功耗低、译码性能好的Viterbi译码器尤为重要。

传统的Viterbi译码器主要包括支路度量单元(BMU)、加比选单元(ACSU)以及幸存路径存储单元(SMU)。其中SMU根据各状态的幸存路径得出译码信息,其实现方法有两种:寄存器交换法(RE)和追踪回溯法(TB)。传统的寄存器交换法需要在译码过程中不断进行寄存器交换存取操作,对于约束长度较大、状态数较多的情况,硬件功耗较大;而追踪回溯法无需进行复杂的寄存器交换,每一个译码时刻只需变动少量RAM,实现功耗较小。因此关于追踪回溯法的Viterbi译码器研究甚广[1-3]。但是TB方法的译码延时约为RE方法的4倍[4],无法满足对实时性要求高的无线通信系统(如无线局域网)的性能要求。

基于对译码性能、功耗以及延时的考虑,提出一种新型的指针反馈式低功耗Viterbi译码器。该译码器采用新的译码单元取代SMU,利用译码路径从初始状态0开始的特点,通过每一时刻通过不断更新的唯一状态译码指针,结合加比选单元输出的状态译码信息,指示出当前时刻的译码路径状态走向,并输出当前译码结果。FPGA实现结果表明,对于(2,1,7)卷积译码延时只为2个时钟周期,实时性好。此外,该方法实现的译码器比传统的追踪回溯法译码器功耗降低60%,并且实现较好的译码性能。

1 指针反馈式Viterbi译码基本原理

传统的Viterbi译码按照最大似然估计原则,通过计算每一时刻可能的路径值,最终找出一条最大似然路径作为译码输出路径。

本文提出的指针反馈式Viterbi译码利用传统译码器每次译码从初始状态0开始的特点,并且在译码过程中,使前一时刻某状态只与当前时刻另一状态存在一对一指向关系,从而在每一时刻确定译码路径。与此同时,通过状态指针不断更新当前时刻译码路径上的状态,实时输出译码结果。但是这种方法在遇到输入序列某区域存在较多错码情况时,很有可能选错译码路径而导致大面积译码错误。为了克服上述缺点,卷积编码器必须做出简单调整:当编码L(L≥4)次后,重新复位输入,使译码重新从状态0开始,从而有效阻隔输入错码引起的译码错误的扩散。在信噪比较高的情况下,该译码器能够在功耗、延时以及性能上得到保证。

为了更好地说明所提出的Viterbi译码器算法,现以约束长度K=3、编码率r=1/2生成多项式g0=1118,g1=1018,并且以L=10的卷积编码器对数据(01011101001000)进行编码得到(00,11,10,00,01,10,01,00,10,11,11,10,11,00),并经过噪声干扰,对该组噪声数据进行软判决处理,其译码过程如图1所示。根据状态转移关系,状态0或状态2可能指向下一时刻的状态0或状态1。当t=1时,状态0与状态1幸存路径均源于t=0时的状态0,为了使相邻时刻状态转移不出现分叉情况,此时需要对状态0和状态1更新后的累计路径距离进行最小值比较,较小的一方状态指向不变,结果从t=0到t=1,状态0指向状态0。而原本状态0指向状态1的情况,改变成状态2指向状态1(即图中虚线表示),从而实现相邻两时刻之间状态转移的单一指向性。为了演示方便,图1中只给出t≤4时改进后各状态幸存路径情况。另外,从图中看出译码路径每时刻经过的译码状态的最低位(最低位以下划线标示)与此刻译码比特相同,因此可以采用状态指针的方法将其初始化为状态0,每一时刻译出的码比特反馈更新状态指针,进行实时译码追踪。此外,由于L=10,在t=10时,状态重新复位到状态0,使译码器重新从状态0出发以实现连续译码。

图1 指针反馈式Viterbi译码网格图

2 指针反馈式Viterbi译码器整体设计

指针反馈式Viterbi译码器整体结果如图2所示,其中包括支路度量单元(BMU)、改进型加比选单元(MACSU)以及指针反馈追踪(PFPT)模块。本文基于802.11a/n,K=7,r=1/2,g0=1338,g1=1718卷积编码,采用4比特软判决对译码器进行硬件设计及实现。

图2 指针反馈式Viterbi译码器结构图

2.1 支路度量单元(BMU)

支路度量单元负责将接收到的编码数据与参考数据进行各状态支路距离计算。理论上在进行软判决处理时,支路距离采用欧氏距离计算方法。但是传统的欧氏距离需要进行开根号与平方操作,因此硬件实现消耗资源高。本文给出一种改良的距离计算方法,数据量化范围从0~15共15个区间,与参考文献[5]提出的14个区间量化相比,计算精度上升。各支路距离的表达式为:

其中,BM00,BM01,BM10,BM11表示各状态转移时所有可能出现的支路距离情况。由式(1)看出,各支路距离计算只需通过简单的将输入软数据进行取反和加法的操作,硬件消耗资源少。图3为BMU的硬件实现图。

图3 支路度量单元硬件实现图

2.2 改进型加比选单元(MACSU)

MACSU由(2K-1)/2(即32)个改进型蝶状加比选基本单元MACS组成,其中每个MACS包含传统的加比选操作。译码过程中,MACS输入与输出状态转移关系如图4所示。其中St-1(i)表示t-1时刻第i个状态。由图可知,在t-1时刻状态i和状态j均有可能跳转到t时刻状态p和状态q。

图4 状态转移图

在硬件实现时,每个MACS单元结构如图5所示。其中,PMt-1(i)表示t-1时刻状态i的累计路径距离,PMt(p)表示t时刻状态p更新的累计路径距离,BM(i,p)表示由状态i转移到状态p时对应的支路度量距离。因此,根据传统加比选操作,状态p和状态q更新的累计路径距离可以表示为:

图5 MACS硬件实现框图

并且状态p和状态q的最小路径输出判决位表示为:

其中sign{x}表示取x符号位,即最高有效位。由于式(4)和式(5)中传统判决位表示时会出现状态分叉情况,即状态p和状态q均源于状态i或状态j,此时D(p)和D(q)输出值相等。但是对于本文提出的译码器,上述的分叉情况是不允许的。因此在原来加比选操作的基础上,当出现上述分叉情况时(假设状态p和状态q均源于状态i),为了使状态i单向指向其中一种状态,需要再对状态p和状态q的更新累计路径距离PMt(p)和PMt(q)进行最小值比较,若PMt(p)<PMt(q),则状态i指向状态p不变,而状态i指向状态q的情况变成状态j指向状态q。但状态p和状态q对应的更新累计路径距离不予改变,从而不影响基本加比选操作。此时,输入状态i和状态j以及输出状态p和状态q在相邻时刻呈现一对一指向关系,从初始化状态0开始在译码路径上经过的状态在每一时刻都能确定。利用下一个模块的状态指针即可在每一时刻得出译码结果。在硬件实现时,为了降低上述操作的复杂度,根据支路距离间关系:BM(i,p)=BM(j,q),BM(i,q)=BM(j,p),令ΔPM=PMt-1(j)-PMt-1(i),ΔBM=BM(j,q)-BM(i,q),则式(4)和式(5)可简化为:

在式(6)和式(7)的基础上需要加上判决算法,即:如果D(p)⊕D(q)≡1,则D(p)和D(q)均不变;否则D(p)=0,D(q)=1(若ΔBM<0),或D(p)=1,D(q)=0(若ΔBM≥0),即:D(p)=~sign{ΔBM},D(q)=sign{ΔBM}。

由式(6)和式(7)以及上述判决算法看出,只需对ΔPM和ΔBM进行简单的加减法以及取符号位,即可实现状态间一一指向关系,硬件实现复杂度低,并且延时少。实现时,每一时刻MACS输出的各状态更新的累计路径距离反馈给下一时刻MACS的输入端进行叠加计算,并且将各状态记录当前判决比特输出至下一模块中。

2.3 指针反馈追踪模块(PFPT)

PFPT模块通过状态指针储存的译码状态结合从MACSU输出的64位判决比特进行状态64选1的操作,最终在每一时刻输出译码结果,并且将译码比特反馈更新状态指针,用于下一时刻译码路径状态的选取。另外,每进行第1节中提及的L次译码时,状态指针复位至状态0(008)。

3 FPGA实现结果及译码器性能分析

指针反馈式Viterbi译码器对于约束长度大(K≥7)、译码状态数较多的情况,其功耗以及性能效果明显。对第2节中所述的硬件设计进行FPGA实现,并且对多种Viterbi译码器进行功耗等参数比较。其结果如表1和表2所示。

表1 FPGA实现资源占用表

表2 Viterbi实现结果比较

由表2看出,在相同CMOS工艺情况下,指针反馈式Viterbi译码器与参考文献[6]和参考文献[7]相比,实现功耗最低;而在相同编码条件下,本文实现的算法功耗比参考文献[6]功耗至少降低60%。

另外,将卷积编码数据经过加性高斯白噪声信道后,对噪声数据进行指针反馈式Viterbi译码,其仿真结果与理想无编码情况作误比特率(BER)及信噪比(SNR)对比。其结果如图6所示,当SNR在6dB附近时,BER约为10-4;而当SNR≥7.2 dB时,BER=0。因此,该译码器在较高SNR时性能较好。

本文提出了一种指针反馈式Viterbi译码器,该译码器依靠初始译码状态从状态0开始的特点,相邻两时刻各状态进行单向一对一转移关系,并在每时刻通过不断更新的状态指针寻找译码路径上的状态,同时输出译码结果。算法仿真以及FPGA和CMOS综合结果表明,该Viterbi译码器在信噪比较高时有良好的译码性能,同时功耗相对一般译码器减少60%,硬件实现资源低,译码延时少,因此适合于无线局域网和移动通信等系统硬件实现。

[1]童琦,何洪路,吴明森.基于FPGA的高速并行Viterbi译码器的设计与实现[J].电子技术应用,2007,33(1):30-32.

[2]LIN D J,LIN C C,CHEN C L,et al.A low-power Viterbi decoder based on scarce state transition and variable truncation length[C].International Symp.on VLSI Design,automation and test,2007:1-4.

[3]AMEEN S Y,Al-JAMMAS M H,ALENEZI A S.FPGA implementation of modified architecture for adaptive Viterbi decoder[C].Electronics,Communications and Photonics Conference(SIECPC),2011:1-9.

[4]朱永旭,吴斌,周玉梅,等.适用于IEEE 802.11n的高速低功耗Viterbi译码器的设计[J].微电子学与计算机,2010,27(7):10-14.

[5]El-DIB D A,ELMASRY M I.Memoryless Viterbi decoder[J].IEEE Trans.on Circuits and System-II,2005,52(12):826-830.

[6]LIN C C,SHIH Y H,CHANG H C,et al.Design of a powerreduction Viterbi decoder for WLAN application[J].IEEE Trans.on Circuits and System-I,2005,52(6):1148-1156.

[7]Tang Yunching,Hu Dochen,Wei Weiyi,et al.A memoryefficient architecture for low latency Viterbi decoder[C].International Symp.on VLSI Design,Automation and Test,2009:335-338.

猜你喜欢
译码器译码指针
分段CRC 辅助极化码SCL 比特翻转译码算法
基于校正搜索宽度的极化码译码算法研究
垂悬指针检测与防御方法*
纠错模式可配置的NAND Flash BCH译码器设计
跟踪导练(一)5
为什么表的指针都按照顺时针方向转动
从霍尔的编码译码理论看弹幕的译码
LDPC 码改进高速译码算法
HINOC2.0系统中高速LDPC译码器结构设计
电力线通信中LDPC译码器的优化设计与实现