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

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

3天内不再提示

深度解读VHDL语言的卷积码和Viterbi译码的实现

电子工程师 来源:微型机与应用 作者:陶 杰 王 欣 张天辉 2021-05-12 15:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

摘 要: 介绍并用VHDL语言实现了卷积编码和维特比译码。根据编码器特征设计了一种具有针对性的简洁的维特比译码器结构,并通过ModelSim平台验证了该设计的正确性。

卷积码自1955年由爱里斯(Elias)提出以来,因其良好的纠错能力,已经在现代通信系统中得到了广泛应用,比如,电力系统通信、卫星通信、移动通信等。Viterbi译码是1967年维特比(Viterbi)基于Viterbi算法提出的,这种译码算法是基于码的网格(trellis)图基础之上的一种最大似然译码算法,是一种最佳的概率译码算法[1]。本设计是在认真研究了卷积编码和维特比译码原理以后,用VHDL语言实现了(2,1,2)卷积编码,并根据这种编码特性简化了相应的维特比译码器结构。

1 卷积编码

卷积码是一种有限记忆系统,它与分组码类似,也是先将信息序列分隔成长度为k的一个个分组;不同的是,某一时刻的编码输出不仅取决于本时刻的分组,而且取决于本时刻以前的L个分组[2],称L+1为约束长度。一般情况下卷积码写成(n,k,L)的形式,其中:n表示编码器有n位编码输出,k表示编码器有k位输入。如果用R表示卷积编码的效率,则R=k/n。

图1是(n,k,L)卷积编码器的一般结构图[2]。从该图可以看出,串行信号可由串/并转换器转换成L个分组,并按位存储到k-1个存储器中,存储器中的每一个单元与线性组合器的连线表示该单元数据参与了线性组合计算,但实际中是否参与取决于线性组合系数。

在二进制系统中,该系数为“0”和“1”,当系数为“0”时,表示该单元数据没参与线性组合计算;当系数为“1”时,表示该单元数据参与了线性组合计算。并/串转换器可将线性组合器计算得到的并行结果转化成串行输出。

o4YBAGCbgbGADUrNAADUZXct950313.png

图1示意的是卷积编码器的一般结构,实际应用时可根据需求进行相应改变。例如图2是(2,1,2)码的编码器,由于只有一位输入,串/并转换器自然不存在,线性组合器就是两个模2加法器,存储单元由两个移位寄存器组成,其生成多项式矩阵可表示为:G(D)=[1+D+D2,1+D2]。

图3是图2所示卷积码的状态转移图,根据这个状态转移图用VHDL语言实现卷积编码。图3中S0、S1、S2、S3表示该卷积码的4个不同状态,编程时用状态机完成状态之间的跳变和编码输出。

10601074305040.gif

10601152305384.gif

部分程序如下:

……

if(clk1=′1′) then

state 《=next_state;

……

else

state 《=state;

……

case state is

when “00” =》

if(datain = ′0′) then

next_state 《= “00”;

enc_out 《= “00”;

else

next_state 《= “10”;

enc_out 《= “11”;

end if;

when “01” =》

……

其中,clk1为编码时钟(另一时钟是码输入时钟,为clk1的2倍频),state为本次编码状态,并根据它的值和数据输入(datain)的值给出卷积码的下一个状态值(next_state)和编码输出值(enc_out)。如此往复循环下去,便可得到卷积码。

2 维特比译码

维特比译码算法是一种最大似然译码算法。根据维特比译码算法的译码步骤,译码算法的实现一般包括:加比选模块、度量查找表、状态变量存储器等模块,如图4所示。本设计根据该卷积码的特性,找到一种简便的改进译码方法。

10601432485479.gif

通过图3可知,到达每一状态的输入码均相同。例如,无论是由S0转变成S1还是由S2转变成S1,虽然编码输出段不一样,但是码输入都是‘1’,其他状态之间的转变也是如此。因而,通过这个特征可以去掉该卷积码的维特比译码实现时的度量查找表和路径存储器等模块,只保留加比选模块即可,如图5所示,从而简化了维特比译码算法的实现。再结合该卷积码的状态转移图,画出相应篱笆图,如图6所示。

10601563831092.gif

在这个译码器结构中,“加”是指计算在该时刻实际编码输入与图3中状态转移编码输出之间的汉明距,“比”是指比较出上述汉明距最小距离,“选”是指通过“比”的结果选择一位最佳码字输出。按照这一结构,在本时刻即可得到一位最佳输出码字。

例如,在L=0时刻时,实际编码输入若为“01”或“10”,则可以通过判断L=1时刻的实际编码输入来选择一位最佳码字输出。本设计运用VHDL语言编程实现这一译码过程时,采用了两个时钟,在一个clk周期内将16 bit卷积码输入到译码器内,然后再由其8倍频时钟clk1完成“加”、“比”、“选”、译码输出等动作。由于信号只能采用阻塞赋值,因而,“加”与“比”、“选”分别在两个clk1时钟周期内完成,并且“加”先于后两者1个时钟周期。

3 仿真结果

3.1 卷积编码仿真结果

依据“卷积编码”单元分析,运用VHDL语言在ModelSim下实现的图2编码器仿真结果,如图7所示,当输入码分别为:10111000、11000000、01001000时,对应输出码序列:1110000110011100、1101011100000000、0011101111101100。

可以通过输入码和生成多项式矩阵来验证此卷积编码是正确有效的。图7中dataouta为编码输出端,clr为编码器清零端,datain为串行码输入端,clk为码输入时钟,clk1为编码时钟。

3.2 维特比译码仿真结果

依据“维特比译码”单元分析,运用VHDL语言在ModelSim下实现的图5译码器仿真结果如图8所示,当输入码分别为:1110000110011100、1101011100000000、0011101111101100时,对应输出码序列为:10111000、11000000、01001000。

图8中c_out为译码输出端,clr_viterbi_acs为译码器清零端,c_in为卷积码并行输入端,clk为译码处理时钟,clk2为并行码输入时钟。

10601758053510.gif

本文利用VHDL语言在ModelSim平台上实现与验证了(2,1,2)卷积编码和维特比译码,并根据给出的编码器的特征简化了译码器结构,从而减小了用VHDL语言编程的复杂度,同时也提高了程序的健壮性。该设计可以为同类型采用卷积编码和维特比译码的方案提供一定的帮助。

作者:陶 杰 王 欣 张天辉

编辑:jq

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

    关注

    27

    文章

    9449

    浏览量

    156974
  • 存储器
    +关注

    关注

    39

    文章

    7757

    浏览量

    172207
  • vhdl
    +关注

    关注

    30

    文章

    822

    浏览量

    131866
  • 卷积编码
    +关注

    关注

    0

    文章

    13

    浏览量

    2878
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    人工智能-Python深度学习进阶与应用技术:工程师高培解读

    深度学习的工程化落地,早已不是纸上谈兵的事。从卷积神经网络到Transformer,从目标检测到大模型私有化部署,技术栈不断延伸,工程师面临的知识体系也越来越庞杂。现根据中际赛威工程师培训老师的一份
    的头像 发表于 04-21 11:01 323次阅读
    人工智能-Python<b class='flag-5'>深度</b>学习进阶与应用技术:工程师高培<b class='flag-5'>解读</b>

    FPGA实现CNN卷积层的高效窗口生成模块设计与验证

    卷积神经网络(CNN)可以分为卷积层、池化层、激活层、全链接层结构,本篇要实现的,就是CNN的卷积层中的window窗。
    的头像 发表于 04-15 10:35 154次阅读
    FPGA<b class='flag-5'>实现</b>CNN<b class='flag-5'>卷积</b>层的高效窗口生成模块设计与验证

    KeepAlive:组件缓存实现深度解析

    的 Map 结构,key 通常是组件的 id 或 key 属性 keys:维护缓存 key 的访问顺序,用于实现 LRU 淘汰策略 核心配置属性 html 体验AI代码助手 代码解读 复制代码
    发表于 03-05 19:17

    基于FPGA VHDL的FSK调制与解调设计

    VHDL诞生于1982年。在1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言
    的头像 发表于 01-27 10:58 576次阅读
    基于FPGA <b class='flag-5'>VHDL</b>的FSK调制与解调设计

    德州仪器BCD到七段译码器/驱动器深度剖析

    德州仪器BCD到七段译码器/驱动器深度剖析 在数字电路设计中,BCD到七段译码器/驱动器是实现数字显示的关键组件。德州仪器(TI)的SN5446A、’47A、’48、SN54LS47、
    的头像 发表于 01-19 11:30 496次阅读

    FPGA 入门必看:Verilog 与 VHDL 编程基础解析!

    很多开发者第一次接触FPGA,都会有同样的疑问:FPGA是硬件,不是软件,怎么写程序?答案就是用硬件描述语言(HDL),最常用的就是Verilog和VHDL。今天,我们就带你入门,搞清楚FPGA编程
    的头像 发表于 01-19 09:05 717次阅读
    FPGA 入门必看:Verilog 与 <b class='flag-5'>VHDL</b> 编程基础解析!

    原厂 FZH851 高可靠性、低功耗的LED行选译码芯片

    特点用两个 FZH851实现四地址数据输入和16译码输出的4-16译 器,应用中未使用的使能端要处在译码有效输出 使能电平状态。 FZH851为LED显示专用芯片,具有防烧 PMOS
    发表于 11-11 09:50

    官方例程nice_core解读

    均为7‘b11111011’ Nice_core信号解读 译码段,对输入指令,将指令func3字段func7字段及opcode段译码 判断是否是custom3类型扩展指令,判断func3
    发表于 10-30 06:14

    卷积运算分析

    卷积运算的基础运算是乘加运算(MAC,Multiplication and Accumulation),本文设计了基本运算单元PE模块来实现MAC运算。对于卷积运算而言,一次性至少处理一个感受域规模
    发表于 10-28 07:31

    深度操作系统deepin 25全面支持凹语言

    近日,deepin(深度)社区宣布,deepin 25 现已完成对国产通用编程语言语言 (Wa-Lang) 的兼容性测试。在 deepin 25 默认安装环境下,即可直接使用凹语言
    的头像 发表于 07-10 15:26 1140次阅读
    <b class='flag-5'>深度</b>操作系统deepin 25全面支持凹<b class='flag-5'>语言</b>

    为什么我选择VHDL入门

    篇。 从长期来看,两个语言大概率都要学一下;但是从初学角度而言,总要选择一个入门语言。 根据网上的信息,总结对比结论: Verilog 的优势: 1. Verilog 语法接近C,学习容易;VHDL
    的头像 发表于 06-25 11:18 1402次阅读
    为什么我选择<b class='flag-5'>VHDL</b>入门

    AI SoC #BK7258 AI能力和技术参数深度解读

    BK7258芯片AI能力深度解读 BK7258是博通集成推出的一款高集成度Wi-Fi 6+蓝牙5.4低功耗音视频SoC芯片,其AI能力通过硬件加速、算法优化及生态整合实现,覆盖边缘计算、端云协同两大
    的头像 发表于 06-20 09:44 7537次阅读
    AI SoC #BK7258 AI能力和技术参数<b class='flag-5'>深度</b><b class='flag-5'>解读</b>

    瑞萨365 深度解读

    技术架构、核心功能、行业影响及未来展望四个维度进行深度解读: 一、技术架构:融合硬件与设计软件的跨领域协作平台 瑞萨365基于Altium 365云平台构建,整合了瑞萨的半导体产品组合与Altium的设计工具链,形成从芯片选型到系统部署的全流程数字环境。其核心架构围绕 五
    的头像 发表于 06-06 09:58 2571次阅读
    瑞萨365 <b class='flag-5'>深度</b><b class='flag-5'>解读</b>

    ARM Mali GPU 深度解读

    ARM Mali GPU 深度解读 ARM Mali 是 Arm 公司面向移动设备、嵌入式系统和基础设施市场设计的图形处理器(GPU)IP 核,凭借其异构计算架构、能效优化和生态协同,成为全球移动
    的头像 发表于 05-29 10:12 4927次阅读

    Arm 公司面向 PC 市场的 ​Arm Niva​ 深度解读

    面向 PC 市场的 ​ Arm Niva ​ 深度解读 ​ Arm Niva ​ 是 Arm 公司为 PC 市场推出的核心计算平台,属于其“平台优先”战略的关键布局。作为 ​ Arm 计算
    的头像 发表于 05-29 09:56 1887次阅读