verilog入门-38译码器

  • Post author:
  • Post category:其他



一、组合逻辑电路与时序逻辑电路


组合逻辑电路:

任意时刻的输出仅仅由该时刻的输入决定,与电路当前的状态无关



时序逻辑电路:

任意时刻的输出不仅由该时刻的输入决定,还与电路当前的状态有关




二、38译码器的工作原理


表①、38译码器真值表

 表①、38译码器真值表

3_8译码器模块接口图

3种输入状态翻译成8种输出状态。


三、Verilog代码实现


源码:

module decoder_38 (
    a,b,c,data
    
);


input  wire a;
input  wire b;
input  wire c;
output reg  [7:0]data;

always @( a,b,c) begin
    case ({a,b,c})
    3'd0:  data=8'b0000_0001;
    3'd1:  data=8'b0000_0010;
    3'd2:  data=8'b0000_0100;
    3'd3:  data=8'b0000_1000;
    3'd4:  data=8'b0001_0000;
    3'd5:  data=8'b0010_0000;
    3'd6:  data=8'b0100_0000;
    3'd7:  data=8'b1000_0000;
        
    endcase
    
end

endmodule 

testbench:

`timescale 1ns/100ps

module decoder_38_tb ;


reg a;
reg b;
reg c;
wire [7:0]data;

decoder_38 decoder_38_0 (
    .a(a),
    .b(b),
    .c(c),
    .data(data)
);


initial begin
    a=0;b=0;c=0;
    #200;
    a=0;b=0;c=1;
    #200;
    a=0;b=1;c=0;
    #200;
    a=0;b=1;c=1;
    #200;
    a=1;b=0;c=0;
    #200;
    a=1;b=0;c=1;
    #200;
    a=1;b=1;c=0;
    #200;
    a=1;b=1;c=1;
    #200;
    $stop;
end

endmodule


三、仿真模拟


modulesim仿真波形



版权声明:本文为fan5629153原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。