随着现代无线通信系统日益复杂化的发展,无线基带通信系统中各模块的实际性能、延时、功耗等参数成为基带设计的重要考虑因素。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出发以实现连续译码。
2 指针反馈式Viterbi译码器整体设计
指针反馈式Viterbi译码器整体结果如图2所示,其中包括支路度量单元(BMU)、改进型加比选单元(MACSU)以及指针反馈追踪(PFPT)模块。本文基于802.11a/n,K=7,r=1/2,g0=1338,g1=1718卷积编码,采用4比特软判决对译码器进行硬件设计及实现。
2.1 支路度量单元(BMU)
支路度量单元负责将接收到的编码数据与参考数据进行各状态支路距离计算。理论上在进行软判决处理时,支路距离采用欧氏距离计算方法。但是传统的欧氏距离需要进行开根号与平方操作,因此硬件实现消耗资源高。本文给出一种改良的距离计算方法,数据量化范围从0~15共15个区间,与参考文献[5]提出的14个区间量化相比,计算精度上升。各支路距离的表达式为:
由式(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所示。
由表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 memory efficient architecture for low latency Viterbi decoder[C]. International Symp.on VLSI Design,Automation and Test,2009:335-338.