FPGA的学习:3线8线译码器的实现

Posted 石小舟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FPGA的学习:3线8线译码器的实现相关的知识,希望对你有一定的参考价值。

首先来看系统框图和原理图。

输入信号有三个,然后2的3次方是8,所以输出有8个。

了解了时序后,对功能进行编码实现。

`timescale  1ns/1ns

module  decoder3_8
(
    input   wire            in1 ,   //输入信号in1
    input   wire            in2 ,   //输入信号in2
    input   wire            in3 ,   //输入信号in2

    output  reg     [7:0]   out     //输出信号out
);

//out:根据3个输入信号选择输出
always@(*)
    case({in1, in2, in3})
        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;      //这边的default状态可以指向其他的
    endcase

endmodule

 

完成代码实现后,进行仿真。

`timescale  1ns/1ns

module  tb_decoder3_8();

//wire型变量的定义

wire    [7:0]   out;

//reg型变量的定义

reg             in1;
reg             in2;
reg             in3;

//初始化输入信号
initial begin
    in1 <= 1'b0;
    in2 <= 1'b0;
    in3 <= 1'b0;
end

//in1:产生输入随机数,模拟输入端1的输入情况
always #10 in1 <= {$random} % 2;

always #10 in2 <= {$random} % 2;

always #10 in3 <= {$random} % 2;

initial begin
    $timeformat(-9, 0, "ns", 6);
    $monitor("@time %t: in1=%b in2=%b in3=%b out=%b", $time, in1, in2, in3, out);
end

//实例化

decoder3_8  decoder3_8_inst(
    .in1    (in1),  //input             in1
    .in2    (in2),  //input             in2
    .in3    (in3),  //input             in3

    .out    (out)   //output    [7:0]   out
);

endmodule

 

以上是关于FPGA的学习:3线8线译码器的实现的主要内容,如果未能解决你的问题,请参考以下文章

如何用双2-4线译码器转换为3-8线译码器?电路图怎么设计?

如何用双2-4线译码器转换为3-8线译码器?电路图怎么设计?求图及解释。。。

将2线4线的译码器扩展成3线8线的译码器

chap4组合逻辑电路

chap4组合逻辑电路

数字电路实验 02 - | 译码器及数码管驱动芯片应用