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

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

3天内不再提示

基于Verilog的经典数字电路设计(4)编码器

冬至子 来源:新芯设计 作者:新芯设计 2023-10-09 16:49 次阅读

引言

在近代战争中,军事信息传递,例如通过发电报的方式,电报信息难免被敌方截获,而我们又不得不通过发电报传输信息(哟,都近代了,就别飞鸽传书了),所以发送方需要对信息进行加密,也就是编码,然后以一种双方事先沟通好的编码方式(密码本就是这样来的),在接收方再进行反编码,也就是解码,这样,即使信息被截获了,短时间内也难以被破解;这就是编码器的重要性。

编码器的逻辑功能就是将多输入的每一个高、低电平信号转为一个对应的二进制代码,它分为普通编码器和优先编码器。对于普通编码器,任何时刻只允许输入一个编码信号,否则输出将发生混乱。

一、普通编码器的 Verilog 代码实现和 RTL 电路实现

module Encoders(
    input wire [7:0] d, // 输入信号_未编码
    output reg [2:0] b = 3'b000 // 输出信号_已编码
    );  

    always @ ( d ) begin 
        case ( d )
            8'b0000_0001 : b <= 3'b000;
            8'b0000_0010 : b <= 3'b001;
            8'b0000_0100 : b <= 3'b010;
            8'b0000_1000 : b <= 3'b011;
            8'b0001_0000 : b <= 3'b100;
            8'b0010_0000 : b <= 3'b101;
            8'b0100_0000 : b <= 3'b110;
            8'b1000_0000 : b <= 3'b111; 
            default      : b <= 3'b000;
        endcase 
    end

endmodule

这是一个 8 线 − 3 线普通编码器,基于查找表 LUT(Look Up Table)的方式实现的一个电路,其 RTL 电路图如下所示:

图片

普通编码器的 RTL 电路图

优先编码器其实就是允许同时在几个输入端有输入信号,编码器按输入信号排定的优先顺序,只对同时输入的几个信号中优先权最高的一个进行编码,即已经排好了队,从高位向低位递减。比如,8 线 - 3 线优先编码器的输入有 “0、1、2、3、4、5、6、7” 八位输入,而输出只有 “Y0、Y1、Y2” 三位输出,在这里,就是当 “7” 为 “1” 的时候,即 “7” 为有效值的时候,无论 “0” 到 “6” 之间为何值,都只对 “7” 进行编码,高位优先判断是否有效,以此类推。

二、优先编码器的 Verilog 代码实现和 RTL 电路实现

module Encoders(
    input wire [7:0] d, // 输入信号_未编码
    output reg [2:0] b = 3'b000 // 输出信号_已编码
    );  

    always @ ( d ) begin 
        casex ( d )
            8'b0000_0001 : b <= 3'b000;
            8'b0000_001x : b <= 3'b001;
            8'b0000_01xx : b <= 3'b010;
            8'b0000_1xxx : b <= 3'b011;
            8'b0001_xxxx : b <= 3'b100;
            8'b001x_xxxx : b <= 3'b101;
            8'b01xx_xxxx : b <= 3'b110;
            8'b1xxx_xxxx : b <= 3'b111; 
            default      : b <= 3'bxxx;
        endcase 
    end

endmodule

这是一个 8 线 − 3 线优先编码器,基于查找表 LUT(Look Up Table)的方式实现的一个电路,其 RTL 电路图如下所示:

图片

优先编码器的 RTL 电路图

附加说明,其实,Verilog 中的 if - else 语句便隐含了优先特性,可以进行优先编码器的设计。中级及以上的 FPGA 玩家应该能懂的。

总结

编码器是非常重要的一个数字电路组合逻辑模块,不仅可以大大减少传输数据的信号线的数量,还是密码学的一部分,基于某种协议的编码能够让双方之间的通讯较为安全。

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

    关注

    45

    文章

    3584

    浏览量

    134110
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59692
  • LUT
    LUT
    +关注

    关注

    0

    文章

    49

    浏览量

    12482
  • Verilog设计
    +关注

    关注

    0

    文章

    20

    浏览量

    6514
收藏 人收藏

    评论

    相关推荐

    数字电路设计中的一款强大工具—Verilog编程语言介绍

    Verilog是一种硬件描述语言,用于描述数字电路的结构和行为。与传统的编程语言不同,Verilog更加注重电路的行为和时序特性。
    发表于 08-01 09:00 4284次阅读
    <b class='flag-5'>数字电路设计</b>中的一款强大工具—<b class='flag-5'>Verilog</b>编程语言介绍

    招聘:数字电路设计

    数字集成电路设计ASIC设计/验证经验;2.熟悉逻辑/时序电路的原理和设计;3.精通verilog语言;熟练使用Cadence,Modelsim,NC-Verilog,DC等设计验证工
    发表于 02-27 10:52

    数字电路设计Verilog HDL

    数字电路设计Verilog HDL
    发表于 07-16 16:21

    数字电路设计的基本方法有哪些

    化简→画逻辑电路图。时序电路设计:列原始状态转移图和表→状态优化→状态分配→触发选型→求解方程式→画逻辑电路图。在实际应用中,数字电路设计
    发表于 02-27 11:55

    数字电路经典

    数字电路经典教学
    发表于 06-15 21:55

    基于LabVIEW的数字电路设计和仿真

    基于LabVIEW的数字电路设计和仿真 数字电路设计和仿真是电子工程领域的基本技术。介绍了基于LabV IEW的数字电路设计和仿真的原理和方法,比较了其与专业EDA软
    发表于 03-30 16:09 124次下载

    高速数字电路设计

    高速数字电路设计 关于高速数字电路的电气特性,设计重点大略可分为三项 : Ø 正时 (Timing) :由于数字电路大多依据时脉信号来做信号间的同
    发表于 10-16 17:22 3126次阅读

    数字电路设计

    数字电路设计 关于高速数字电路的电气特性,设计重点大略可分为三项: 正时(Timing) :由于数字电路
    发表于 08-26 19:08 2800次阅读

    旋转编码器抗抖动接口电路设计

    旋转编码器抗抖动接口电路设计
    发表于 09-26 14:48 88次下载

    数字电路中的FPGA和verilog教程

    数字电路中的FPGA和verilog教程,好东西,喜欢的朋友可以下载来学习。
    发表于 01-18 17:44 42次下载

    旋转编码器抗抖动接口电路设计

    旋转编码器抗抖动接口电路设计
    发表于 01-24 16:54 48次下载

    FPGA CPLD数字电路设计经验分享.

    FPGA CPLD数字电路设计经验分享.(电源技术发展怎么样)-FPGA CPLD数字电路设计经验分享                    
    发表于 09-18 10:58 52次下载
    FPGA CPLD<b class='flag-5'>数字电路设计</b>经验分享.

    Verilog数字系统设计——复杂数字电路设计2(FIFO控制设计)

    Verilog数字系统设计十二复杂数字电路设计2文章目录Verilog数字系统设计十二前言一、什么是FIFO控制
    发表于 12-05 15:51 9次下载
    <b class='flag-5'>Verilog</b><b class='flag-5'>数字</b>系统设计——复杂<b class='flag-5'>数字电路设计</b>2(FIFO控制<b class='flag-5'>器</b>设计)

    数字电路设计的基本流程

    数字电路设计数字电路最为关键及重要的一步,今天我们将从各个流程为大家介绍完整的数字电路设计!
    的头像 发表于 07-10 17:14 7643次阅读

    基于Verilog经典数字电路设计(5)译码

    前面讲完了编码器,其实不知不觉地,也顺便把译码也讲了,毕竟,二者是一个相反操作的过程,类似于加减,前进与后退,调制与解调,FFT 和 IFFT 等等。
    的头像 发表于 10-09 17:20 1892次阅读
    基于<b class='flag-5'>Verilog</b>的<b class='flag-5'>经典</b><b class='flag-5'>数字电路设计</b>(5)译码<b class='flag-5'>器</b>