FPGA_38译码器

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

FPGA_38译码器



前言

本文来自《小梅哥FPGA视频》的笔记整理
不要眼高手低,一定一定要实践,自己动手去敲一遍!!!


组合逻辑

在数字电路中可以根据电路功能的不同分为,组合逻辑电路与时序逻辑电路。 组合逻辑
电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无
。而时序逻辑从电路特征上看来,其特点为任意时刻的输出不仅取决于该时刻的输入,而
且还和电路原来的状态有关。组合逻辑电路在电路结构上,不涉及对信号跳变沿的处理,无
存储电路,也没有反馈电路,通常可以通过真值表的形式表达出来。时序逻辑电路在电路结
构上,不管输入如何变化,仅当时钟的沿(上升沿或下降沿)到达时,才有可能使输出发生
变化

译码器工作原理

译码器(Decoder)是一种多输入多输出的组合逻辑电路,负责将二进制代码翻译为特
定的对象(如逻辑电平等),功能与编码器相反。译码器一般分为通用译码器和数字显示译
码器两大类。本次设计的是通用译码器,数字显示译码器会在数码管驱动设计章节中详细介
绍。以三八译码器为例,即将 3 种输入状态翻译成 8 种输出状态,其真值表如下表所示,其
中 A, B, C 为数据输入, Out 为数据输出。 在 MCU 应用中,如果需要保证一定的速度情况
下实现此功能,一般选取外挂一片 74HC38 或者 74LS38 等独立芯片,但 FPGA 提供了一个
完整的想象以及实现空间,仅靠其自身即可实现设计要求。

FPGA_38译码器

3_8译码器_设计文件

module decoder_3_8(
	 a,
    b,
    c,
    out
)

	 input a;
	 input b;
	 input c;

	 output out;
    reg [7:0] out;
    
	 /*
    以always块描述的信号赋值,被赋值对象必须定义为reg类型
    {a,b,c} 变成了一个三位的信号,这种操作叫做位拼接
    b:二进制     
    d:十进制      
    h:十六进制     
    */
    //组合逻辑
    always@(*)begin
        case({a,b,c})
            3'b000:out=8'b0000_0001;
            3'b001:out=8'b0000_0010;
            3'b010:out=8'b0000_0100;
            3'b011:out=8'b0000_1000;
            3'b100:out=8'b0001_0000;
            3'b101:out=8'b0010_0000;
            3'b110:out=8'b0100_0000;
            3'b111:out=8'b1000_0000;
        endcase
    end
endmodule

3_8译码器_激励文件

`timescale 1ns/1ns

module decoder_3_8_tb;
    reg s_a;
    reg s_b;
    reg s_c;
    
    wire [7:0] out;
    
    decoder_3_8 decoder_3_8(
        .a(s_a),
        .b(s_b),
        .c(s_c),
        .out(out)
    );
    
    initial begin
        s_a = 0; s_b = 0; s_c = 0;
        #200;
        s_a = 0; s_b = 0; s_c = 1;
        #200;
        s_a = 0; s_b = 1; s_c = 0;
        #200;
        s_a = 0; s_b = 1; s_c = 1;
        #200;
        s_a = 1; s_b = 0; s_c = 0;
        #200;
        s_a = 1; s_b = 0; s_c = 1;
        #200;
        s_a = 1; s_b = 1; s_c = 0;
        #200;
        s_a = 1; s_b = 1; s_c = 1;
        #200;
        //“见钱眼开”,仿真停止
        $stop;
    end

3_8译码器_仿真图

FPGA_38译码器

当我们学习了3_8译码器之后,我们不难再写出4_16译码器。

接下来我们写4_16译码器。

4_16译码器_设计文件

module decoder_4_16(
	 a,
    b,
    c,
    d,
    out
)

    input a;
    input b;
    input c;
    input d;

    output out;
    reg [15:0] out;
    
	 /*
    以always块描述的信号赋值,被赋值对象必须定义为reg类型
    {a,b,c} 变成了一个三位的信号,这种操作叫做位拼接
    b:二进制     
    d:十进制      
    h:十六进制     
    */
    //组合逻辑
    always@(*)begin
        case({a,b,c,d})
            4'd0: out=16'b0000_0000_0000_0001;
            4'd1: out=16'b0000_0000_0000_0010;
            4'd2: out=16'b0000_0000_0000_0100;
            4'd3: out=16'b0000_0000_0000_1000;
            4'd4: out=16'b0000_0000_0001_0000;
            4'd5: out=16'b0000_0000_0010_0000;
            4'd6: out=16'b0000_0000_0100_0000;
            4'd7: out=16'b0000_0000_1000_0000;
            4'd8: out=16'b0000_0001_0000_0000;
            4'd9: out=16'b0000_0010_0000_0000;
            4'd10: out=16'b0000_0100_0000_0000;
            4'd11: out=16'b0000_1000_0000_0000;
            4'd12: out=16'b0001_0000_0000_0000;
            4'd13: out=16'b0010_0000_0000_0000;
            4'd14: out=16'b0100_0000_0000_0000;
            4'd15: out=16'b1000_0000_0000_0000;
        endcase
    end
endmodule

4_16译码器_激励文件

`timescale 1ns/1ns

module decoder_4_16_tb;
    reg s_a;
    reg s_b;
    reg s_c;
    reg s_d;
    wire [15:0] out;
    
    decoder_4_16 decoder_4_16_tb(
        .a(s_a),
        .b(s_b),
        .c(s_c),
        .d(s_d),
        .out(out)
    );
    
    initial begin
        s_a=0;s_b=0;s_c=0;s_d=0;
        #200;
        s_a=0;s_b=0;s_c=0;s_d=1;
        #200;
        s_a=0;s_b=0;s_c=1;s_d=0;
        #200;
        s_a=0;s_b=0;s_c=1;s_d=1;
        #200;
        s_a=0;s_b=1;s_c=0;s_d=0;
        #200;
        s_a=0;s_b=1;s_c=0;s_d=1;
        #200;
        s_a=0;s_b=1;s_c=1;s_d=0;
        #200;
        s_a=0;s_b=1;s_c=1;s_d=1;
        #200;
        s_a=1;s_b=0;s_c=0;s_d=0;
        #200;
        s_a=1;s_b=0;s_c=0;s_d=1;
        #200;
        s_a=1;s_b=0;s_c=1;s_d=0;
        #200;
        s_a=1;s_b=0;s_c=1;s_d=1;
        #200;
        s_a=1;s_b=1;s_c=0;s_d=0;
        #200;
        s_a=1;s_b=1;s_c=0;s_d=1;
        #200;
        s_a=1;s_b=1;s_c=1;s_d=0;
        #200;
        s_a=1;s_b=1;s_c=1;s_d=1;
        #200;
        $stop;
    end
    
endmodule

4_16译码器_仿真图

FPGA_38译码器


给那些看完的朋友,奖励一个 赤赤博客-后端+前端,觉得不错的话可以推荐给身边的朋友哟!
FPGA_38译码器文章来源地址https://www.toymoban.com/news/detail-410457.html

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

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

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

相关文章

  • (2)FPGA仿真——3-8译码器设计

    译码是编码的逆过程,在编码时,每一种二进制代码,都赋予了特定的含义,即都表示了一个确定的信号或者对象。把代码状态的特定含义翻译出来的过程叫做译码,实现译码操作的电路称为译码器。或者说,译码器是可以将输入二进制代码的状态翻译成输出信号,以表示其

    2024年02月08日
    浏览(35)
  • FPGA二四译码器设计及实现

    FPGA二四译码器设计及实现 在数字电路中,二进制的计数方式广泛应用于各种场合。然而,当我们需要控制多个开关或LED时,手动进行二进制转换并不是一种好的选择。因此,在这种情况下,二进制译码器就显得尤为重要。 二四译码器是一种将两个输入字线转换为四个输出字

    2024年02月04日
    浏览(35)
  • Verilog 编程实现 3-8 译码器 FPGA

    Verilog 编程实现 3-8 译码器 FPGA FPGA 是一种可重构的数字电路芯片,可用于实现各种逻辑电路。在 FPGA 中,我们可以使用 Verilog HDL(硬件描述语言)来编写数字电路设计。本篇文章将为您介绍如何使用 Verilog 实现基本的数字电路,即 3-8 译码器。 3-8 译码器是一种常用的数字电路

    2024年02月07日
    浏览(32)
  • 【FPGA】译码器、计数器及数码管显示

    写在前面 万万没想到秋招春招找工作以C++为主、FPGA为辅,最后去了FPGA岗位 也算是不忘初心,回归了从研一就开始学的FPGA老本行 但之前学FPGA的时候并没有养成写笔记的习惯,导致后面有些东西都比较模糊,因此打算从今天开始从头来过,把之前基础知识和新学到的FPGA相关

    2024年02月11日
    浏览(33)
  • FPGA学习笔记(八)——3-8译码器的设计与验证

        3-8译码器是三输入,八输出。当输入信号按二进制方式的表示值为N时,输出端标号为N的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平的情况下,能表示所有

    2024年02月05日
    浏览(32)
  • FPGA数字电路设计:三八译码器的原理与实现

    FPGA数字电路设计:三八译码器的原理与实现 三八译码器是常用于数字电路设计中的一种重要元件。它的作用是将三位二进制信号转换成八个输出信号,通常用于地址解码、选通控制、状态指示等应用场景。 在FPGA数字电路设计中,三八译码器的实现需要借助Verilog HDL语言进行

    2024年02月08日
    浏览(32)
  • 北邮22级信通院数电:Verilog-FPGA(7)第七周实验(2):BCD七段显示译码器(关注我的uu们加群咯~)

    北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.verilog代码 1.1 decoder_led.v 1.2 decoders.v 二.管脚分配 三.效果展示 四

    2024年02月04日
    浏览(40)
  • 74138译码器详解

    74138也叫74LS138 参考 百度百科讲的非常详细了。 在这个图中,当6号口通高电平,4、5号口通低电平(因为通了低电平, E 2 ‾ overline {E2} E 2 , E 3 ‾ overline{E3} E 3 , 会变成高电平输入到译码器中)时,译码器开始工作。 然后1、2、3,也就是A0,A1,A2对应输入3位二进制数,从最

    2024年02月01日
    浏览(72)
  • 3-8译码器

      3-8译码器,就是把3种输入状态翻译成8种输出状态,译码器是将输入的具有特定含义的二进制代码翻译成输出信号的不同组合,实现电路控制功能的逻辑电路。译码器在数字系统中应用广泛,可用于代码的转换、终端数字的显示、数据的分配等等。   通过简单的3-8译码

    2024年02月11日
    浏览(28)
  • 138译码器的工作原理

    E1.E2.E3为三个使能输入端,其中E1和E2为低有效,E3为高有效,除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高; 当S1 = 0 或S2’ + S3’ = 1 时,译码器被禁止工作,当S1 = 1时,S2’+S3’ = 0 时,译码器处于工作状态。 A0,A1,A2为3位二进制加权地址输入端口,A2A1A0顺序组成

    2024年02月11日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包