0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈FPGA的指针反馈式低功耗Viterbi译码器设计

电子工程师 来源:电子技术应用第7期 作者:温伟杰,陆许明, 2021-04-28 09:35 次阅读

摘要: 为了满足复杂的无线通信系统功耗以及性能要求,提出并设计了一种指针反馈式Viterbi译码器。该译码器使相邻时刻的各状态转移满足单向一对一指向关系,并根据传统译码器初始译码状态从状态0延伸的特点,通过每一时刻不断更新的状态指针指向当前时刻译码路径状态,同时输出译码结果。算法仿真以及FPGA和CMOS综合结果表明,该译码器功耗降低60%,译码延时小,并且在信噪比较高的情况下有很好的译码性能,特别适用于约束长度大、译码状态数多的情况。

随着现代无线通信系统日益复杂化的发展,无线基带通信系统中各模块的实际性能、延时、功耗等参数成为基带设计的重要考虑因素。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出发以实现连续译码。

620722364374.gif

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

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

622565981458.gif

2.1 支路度量单元(BMU)

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

620865885820.gif

621331234147.gif

由式(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所示。

622150704117.gif

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

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

622311857551.gif

本文提出了一种指针反馈式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.

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

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CMOS
    +关注

    关注

    58

    文章

    5144

    浏览量

    233273
  • 噪声
    +关注

    关注

    13

    文章

    1070

    浏览量

    47059
  • 译码器
    +关注

    关注

    4

    文章

    310

    浏览量

    49885
  • BMU
    BMU
    +关注

    关注

    0

    文章

    8

    浏览量

    10075
收藏 人收藏

    评论

    相关推荐

    如果ic的io口不够了是否可以通过编码译码器或者锁存扩展呢?

    如果ic的io口不够了是否可以通过编码译码器或者锁存扩展呢,如果是输出或输入可以通过以上方法实现串行数据与并行相互转化吗?最好有具体案例列举~
    发表于 11-10 08:02

    移位寄存译码器有什么区别?是不是功能差不多?

    移位寄存译码器有什么区别,是不是功能差不多​
    发表于 11-03 07:28

    8051单片机控制8*8点阵时不用译码器可以吗?

    8051单片机控制8*8点阵时,不用译码器可以吗?8*8总共灯的数量大于51单片机接口数量,但是又不会用译码器,有没有不用译码器实现控制的方法啊,比如显示特定两位数字之类的。
    发表于 10-20 06:03

    译码器的逻辑功能和使用方法

    译码器是一个多输入、多输出的组合逻辑电路。它的作用是把给定的代码进行“翻译”,变成相应的状态,使输出通道中相应的一路有信号输出。
    的头像 发表于 10-11 12:51 3638次阅读
    <b class='flag-5'>译码器</b>的逻辑功能和使用方法

    03_3-8译码器设计与验证 - 第9节

    fpga软件译码器
    充八万
    发布于 :2023年08月17日 23:49:32

    定时的正交译码器功能介绍

    本期内容来介绍一下定时的正交译码器功能(编码接口)。正交译码器是和正交编码外设配合使用的,可对编码
    发表于 08-16 06:46

    Anlogic viterbi decoder用户手册

    viterbi encoder,维特比译码,是卷积编码常用的配套译码器。 Anlogic viterbi decoder 实现了标准的维特比译码
    发表于 08-09 06:51

    基于FPGA采用模块化思路设计一个译码器

    本次实验的任务是构建一个3-8译码器,且将译码结果通过小脚丫的LED灯显示。
    发表于 06-20 16:10 754次阅读
    基于<b class='flag-5'>FPGA</b>采用模块化思路设计一个<b class='flag-5'>译码器</b>

    数字逻辑电路之译码器

    译码器   要把二进制码还原成十进制数就要用译码器。它也是由门电路组成的,现在也有集成化产品供选用。
    的头像 发表于 04-30 16:31 1597次阅读
    数字逻辑电路之<b class='flag-5'>译码器</b>

    二进制译码器和二-十进制译码器介绍

    输入:二进制代码,有n个; 输出:2^n 个特定信息。 1.译码器电路结构 以2线— 4线译码器为例说明 2线— 4线译码器的真值表为:
    的头像 发表于 04-30 16:29 3383次阅读
    二进制<b class='flag-5'>译码器</b>和二-十进制<b class='flag-5'>译码器</b>介绍

    译码器、多路选择器介绍

    如此便实现了译码器的功能,即输入端逻辑值为多少,我们就置高输入端哪一位为高电平(从低位到高位).同时输出端的位数=2 ^n^ ;(设输入端位数为n);
    的头像 发表于 04-30 16:27 1736次阅读
    <b class='flag-5'>译码器</b>、多路选择器介绍

    组合逻辑电路中的译码器介绍

    译码器定义 逻辑功能:将每个输入的二进制代码对应输出为高、低电平信号。 译码是编码的反操作。
    的头像 发表于 04-30 16:19 1381次阅读
    组合逻辑电路中的<b class='flag-5'>译码器</b>介绍

    常见译码器工作原理介绍

    译码器的逻辑功能是将每个输入的二进制代码译成对应的输出的高、低电平信号。常用的译码器电路有二进制译码器、二--进制译码器和显示译 码器。译码
    的头像 发表于 04-26 15:39 4556次阅读
    常见<b class='flag-5'>译码器</b>工作原理介绍

    FPGA之三八译码器

    一听到三八译码器这个东西可能会感觉有点熟悉,其实在STC89C51系列单片机中,里面就有一个三八译码器,就是一开始的流水灯程序,LED0-7这八个LED!但是怎么在FPGA中实现三八译码器
    的头像 发表于 04-26 15:38 1958次阅读
    <b class='flag-5'>FPGA</b>之三八<b class='flag-5'>译码器</b>

    集成译码器的逻辑功能和使用方法

    译码器是一个多输入、多输出的组合逻辑电路。它的作用是把给定的代码进行“翻译”,变成相应的状态,使输出通道中相应的一路有信号输出。译码器在数字系统中有广泛的用途,不仅用于代码的转换、终端的数字显示,还用于数据分配,存贮器寻址和组合控制信号等。不同的功能可选用不同种类的
    的头像 发表于 04-26 14:34 3305次阅读
    集成<b class='flag-5'>译码器</b>的逻辑功能和使用方法