当前位置:首页 > FPGA > 正文内容

3-8译码器

浩雨4年前 (2022-08-13)FPGA6732

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


译码器:一类多输入多输出的组合逻辑电路器件,其可以分为:变量译码和显示译码两类


3-8译码器 模块框图:

image.png

输出信号定义为 8位宽


译码器真值表:

image.png


译码器波形图:

image.png

代码部分:

选择器代码:在Src文件夹中新建 deocder.v文件


module decoder
(  
    input    wire           in_1,
    input    wire           in_2,
    input    wire           in_3,
    output   reg    [7:0]   out
);
always@(*)
    case({in_1,in_2,in_3})
        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;
        default: out = 8'b0000_0001;
    endcase
endmodule

仿真文件代码:在Sim文件夹中新建 tb_decoder.v 文件


`timescale 1ns/1ns
module tb_decoder();
reg          in_1 ;
reg          in_2 ;
reg          in_3 ;
wire  [7:0]  out  ;
initial
    begin
        in_1 <= 1'b0;
        in_2 <= 1'b0;
        in_3 <= 1'b0;
    end
always #10 in_1 <= {$random} % 2;
always #10 in_2 <= {$random} % 2;
always #10 in_3 <= {$random} % 2;
initial
    begin
        $timeformat(-9,0,"ns",6);
        $monitor("@time %t:in_1=%b,in_2=%b,in_3=%b,out=%b",$time,in_1,in_2,in_3,out);
    end
decoder decoder_inst
(  
    .in_1(in_1),
    .in_2(in_2),
    .in_3(in_3),
    .out (out)
);
endmodule

结果:

打印的日志和真值表中相对应

image.png

波形也正常

image.png


扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:http://myfpga.cn/index.php/post/256.html

分享给朋友:
返回列表

上一篇:多路选择器

下一篇:半加器

“3-8译码器” 的相关文章

CDC 单脉冲信号处理

CDC 单脉冲信号处理

代码中的Sys_clk其实是没有用到的,项目文件:cdc_single.zip//------------------------------------------------------// File Name        : cdc.v// Autho...

点亮LED灯实验

点亮LED灯实验

设计流程:设计规划 -> 波形绘制 -> 代码编写 -> 代码编译 -> 逻辑仿真 -> 波形对比 -> 绑定管脚 -> 分析综合布局布线 -> 上板验证新建项目文件夹(led):Doc:放置文档资料(数据手册、波形图、文档、项目日志)Pri:放置工程...

全加器(层次化设计)

全加器(层次化设计)

该篇博客根据上一篇半加器的设计,再结合层次化的设计思想来实现一个全加器!层次化设计理论部分:数字电路中根据模块层次的不同有两种基本的结构设计方法:自底向上的设计方法 和 自顶向下的设计方法自底向上(Bottom-Up)        自底向上的设计是一种传统的设计方法,对设计进行逐次划分的过程是从存...

FPGA时序分析和时序约束

FPGA时序分析和时序约束

时序分析:时序分析的目的就是通过分析FPGA设计中各个寄存器之间的数据和时钟传输路径,来分析数据延迟和时钟延迟之间的关系。一个设计OK的系统,必然能够保证整个系统中所有的寄存器都能够正确的寄存数据。数据和时钟传输路径是由EDA软件,通过针对特定器件布局布线得到的。时序约束:两个作用告知 EDA 软件...

CDC跨时钟域信号处理

CDC跨时钟域信号处理

保证时序电路的时序要求:建立时间:在有效的时钟沿到来之前,输入端的输入信号需要保持稳定不变的最小时间保持时间:在有效的时钟沿到来之后,输入端的输入信号需要保持稳定不变的最小时间CDC问题1:亚稳态亚稳态原因:亚稳态解决方法:对于单信号来说,使用 Double FF来进行信号同步CDC问题2:数据收敛...

单比特和多比特的信号处理

单比特和多比特的信号处理

信号跨时钟域传输时,两个时钟的上升沿相位差没有固定关系,所以采样时钟很容易出现建立保持时间违例而采到亚稳态。使用两级同步器处理:两级同步器能降低亚稳态发生的概率,只是使信号变为稳态再往下传输,保证安全但并不保证正确。如上图,A信号建立保持时间,导致B为亚稳态,但是由于有F3的存在,使其有足够的时间恢...