Verilog | 维特比译码

这篇具有很好参考价值的文章主要介绍了Verilog | 维特比译码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Viterbi译码原理

Viterbi 算法是基于卷积码网络图的最大似然译码算法,根据已经接收到的信息,得到最接近编码码字的一种译码码字。一般采用汉明距离作为判决指标。具有最小汉明距离和的路径就是译码的最大路径,该路径被称作幸存路径。Viterbi 译码算法步骤如下:
① 在时刻 l=L-1 之前,计算每一个状态单个路径分支度量。时刻 l=L-1 时,网络图充满状态,路径存储器 PM 和路径度量存储器 MM 在时刻 0 到时刻 L-1 进行初始化。
② 从时刻 l=L 开始,计算进入每一状态的单个路径的部分度量值,并储存每一状态下的幸存路径及其度量值。
③ 时刻 l 增加,将进入某一状态的分支度量值与前一时间段的幸存度量值相加,然后计算进入该状态的所有最大度量的路径,决定且储存新的幸存路径及其度量,然后删去其他路径。
④ 重复步骤③的计算、比较、判决过程。若输入接收序列长为(2L-1)k,则译码进行值该时刻为止。
上述即为 Viterbi 译码的步骤。译码算法核心可以归纳为“加、比、选”:
① 加:将每个路径的分支度量进行累计。
② 比:将到达节点的两条路径进行对比。
③ 选:选出到达节点的两条路径中度量值小的一条路径作为幸存路径。

根据上述 Viterbi 译码原理,我们可以得到这样的译码过程:

Verilog | 维特比译码

当步骤进行完毕,将会存在唯一一条幸存路径,便可以得到译码结果。

二、Viterbi译码的相关概念

  • 分支度量(BM, Branch Metric),对于网格中每个路径,分支度量表示其对应的输出码字与接收到的码字之间的差距。
  • 路径度量(PM,Path Metric) 网格中每个状态节点而言,对应所有到达该节点所走过的最有可能路径的分支度量值的累计结果。Viterbi译码过程的关键是,译码器可以使用分支度量和先前计算的状态路径度量递推地计算当前状态的路径度量.
  • 硬判决(Hard decision) 是指接收端根据其判决门限对接收到的信号波形直接进行判决后输出0或1,也就供给译码器作为译码用的每个码元只取0或1两个值,以序列之间的汉明距离作为度量进行译码。适用于二进制对称信道(BSC).
  • 软判决(Soft decision) 是指接受端对采样点直接输出模拟量,进行多电平量化(不是简单的0、1两电平量化)形成多比特的数字量,然后送往译码器,即编码信道的输出是没有经过判决的“软信息”。软判决译码器以欧几里德距离作为度量进行译码,软判决译码算法的路径度量采用“软距离”而不是汉明距离,最常采用的是欧几里德距离,也就是接收波形与可能的发送波形之间的几何距离,是一种适合于离散无记忆信道(DMC)的译码方法。

三、设计思路

综合上述原理,我们可以得到如下图所示的 Viterbi 译码电路设计图

Verilog | 维特比译码

如上图所示,译码电路可以大致分成上这几个部分,包括分支度量模块 BMG、加比选
模块 ACS、回溯模块 TBU、存储管理模块 MMU、控制模块 Control、存储单元 RAM。即五个核心单元,外加存储器 RAM。

其中,BMG-ACS-TBU 是一条主要路径,而 MMU 与 RAM 存储单元作为辅助模块为主要路径提供存储帮助。Control 模块则提供了各个模块需要的控制信号。

  • BMG
    计算分支度量BM
    :即计算进入该状态的两个路径的分支度量(BM),即接收到的码元与两个路径对应的输出码元之间的汉明距离(硬判决)或欧几里得距离(软判决)。
  • ACS
    计算路径度量PM
    :把两个路径的BM同各自对应的t-1时刻状态所存储的状态度量进行求和,得到t时刻的两个路径度量PM。
    选取幸存路径: 比较两个路径度量PM,选取并保留最小的作为t时刻的状态度量,同时保留与之对应的路径作为形成路径。如两个相等,则任选其一作为幸存路径。
  • TB
    回溯(Traceback)
    : 从各个状态的形成路径中选取出状态度量最小的一条,顺次向前进行回溯,并输出译码结果(即相应寄存器状态的最高位)。
  • RAM 模块
    存储每个状态记录的当前累计路径度量PM(由于每次计算的路径度量会经过比较舍弃差的路径,实际存储的相当于状态度量),所以(n, k, L) 卷积码的译码需要 2 L 2^L 2L个寄存器记录状态度量。
    译码回溯深度,一般为m的5-10倍,m为寄存器个数,回溯深度越大误码率越低,但相应会导致延时的增加。如果回溯深度为N,则需要深度为N,宽度为 2 L 2^L 2Lbit的存储器存储幸存路径。

emnnn,具体工程文件后续上传吧,,

参考:

翻译 | 卷积码的维特比(Viterbi)译码

Viterbi译码算法及实现

卷积码

软判决与硬判决的区别文章来源地址https://www.toymoban.com/news/detail-485296.html

到了这里,关于Verilog | 维特比译码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Turbo码译码原理以及算法(一)

              本文对最近学习的Turbo译码原理,以及译码器采用的MAP译码算法。根据最近学习的几篇论文,结合自己的理解,作一个总结,本文只作为自己的学习记录,仅供阅读参考。         Turbo 码采用的是循环迭代的软输入软输出的译码方式,并且该方法主要使用一个译

    2024年02月12日
    浏览(29)
  • m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核

    目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 Hamming编码过程 2.2 Hamming解码与纠错 2.3 FPGA实现 3.Verilog核心程序 4.完整算法代码文件 本系统进行了Vivado2019.2平台的开发,测试结果如下:        在现代数字通信和存储系统中,错误检测和纠正(Error Detection and Correction, EDC)机

    2024年01月23日
    浏览(26)
  • m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件

    目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 卷积码编码 2.2 RS码编码 2.3 级联编码 2.4 解码过程 3.Verilog核心程序 4.完整算法代码文件获得 Vivado2019.2仿真结果如下:         级联码是一种通过将两种或多种纠错码结合使用来提高纠错能力的编码方案。在RS+卷积级联编码中,

    2024年02月22日
    浏览(38)
  • 西南交大计组预备实验1:基于原理图方式的3-8译码电路的设计

    说明:本系列仅作为对实验过程学习的一些记录。使用的软件为Quartus II 13.1。 安装教程:安装教程 软件里文字显示不完整的解决办法   友情提示: 1.实验报告书写要整洁,尽量是考虑好了再落笔,否则可能给分会低(true story)。 2.逻辑功能可写出真值表。 3.注意老师ppt上的

    2024年04月25日
    浏览(34)
  • m基于matlab的polar码误码率仿真,译码算法采用SC算法

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB matlab2022a仿真结果如下:         极化码(英语:Polar code)是一种前向错误更正编码方式,用于讯号传输。构造的核心是通过信道极化(channel polarization)处理,在编码侧采用方法使各个子信道呈现出不

    2024年02月10日
    浏览(28)
  • verilog入门-38译码器

    一、组合逻辑电路与时序逻辑电路 组合逻辑电路: 任意时刻的输出仅仅由该时刻的输入决定,与电路当前的状态无关 。 时序逻辑电路: 任意时刻的输出不仅由该时刻的输入决定,还与电路当前的状态有关 。 二、38译码器的工作原理 表①、38译码器真值表 3种输入状态翻译

    2024年02月11日
    浏览(30)
  • verilog——三八译码器

    三八译码器 test_bench代码

    2024年02月12日
    浏览(30)
  • 【Verilog七段译码器】

    本人只是初学,代码经过实验验证,仅供参考 我自己查找模仿编写运行的代码,如有侵权,联系删除。 这是译码器,其作用是将四位 BCD 码转换成七段数码管的段码,显示 1、 2、3…数字。 简单的译码器,书上的例题,只是我多设置了一个输出B

    2024年02月07日
    浏览(30)
  • Verilog实现 3-8译码器

    拨码开关 LED(低电平有效) 000 11111110 001 11111101 010 11111011 011 11110111 100 11101111 101 11011111 110 10111111 111 01111111 Quartus 联合 Modelsim仿真的相关设置如下: 成功运行的情况应该是会在这个界面 接下来介绍一些常用的按钮(菜单) 经过检查波形图,可以确认是符合我们的预期

    2024年02月08日
    浏览(31)
  • Verilog 3线-8线译码器设计

    任务描述 相关知识 3线-8线译码器的功能 case语句 编程要求 说明  源代码 设计一个3线-8线译码器。运用Verilog HDL进行设计,完善译码器的功能描述风格代码,具备组合逻辑电路的设计仿真和测试的能力。 需要掌握: 1.3线-8线译码器的功能; 2.如何用case语句进行逻辑功能的描

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包