wjwjs
module code3_8(a,b,c,out);
    
    //输入端口
    input a;
    input b;
    input c;
    
    //输出端口
    output reg [7:0]out;        //【】定义out信号为8位的位宽,高位在前,低位在后
    
    //所有在always@中要赋值的信号都必须定义为reg型
    always@(a,b,c)begin            //abc为敏感信号
        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;
            //default:out = xxxxxxxx;    如果不必枚举全部情况,则用default表示剩余情况
        endcase
    end  

endmodule
`timescale 1ns/1ns

module code3_8_tb;

    reg a;
    reg b;
    reg c;
    
    wire [7:0] out;
    code3_8 u1(
        .a(a),
        .b(b),
        .c(c),
        .out(out)
    );

    initial begin
        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;
        a = 0;b = 0;c = 0;
        #200;
        
        $stop;    
        
        end
    
endmodule

 4-16译码器增加一个输入端口即可

 

分类:

技术点:

相关文章:

  • 2021-09-18
  • 2021-09-21
  • 2021-11-18
  • 2021-10-15
  • 2021-09-18
  • 2021-04-19
  • 2021-11-24
  • 2021-04-20
猜你喜欢
  • 2021-04-11
  • 2021-04-06
  • 2021-12-28
  • 2022-12-23
  • 2021-09-27
  • 2021-05-06
  • 2022-01-21
相关资源
相似解决方案