华工verilog仿真作业 四选一多路选择器 verilog代码 4-to-1 multiplexer

If的表达:

module mux4to1(input [1:0]d0,d1,d2,d3,input s1,s0,output [1:0] out);

    reg [1:0] out_t ;
    
    always @(*) begin
        if ({s1,s0} == 2'b00)
            out_t = d0 ;
        else if ({s1,s0} == 2'b01)
            out_t = d1 ;
        else if ({s1,s0} == 2'b10)
            out_t = d2 ;
        else
            out_t = d3 ;
    end
    assign out = out_t ;
 
endmodule

Case的表达:

module mux4to1(input [1:0]d0,d1,d2,d3,input s1,s0,output [1:0] out);

    reg [1:0] out_t ;
    
    always @(*) begin
       case({s1,s0})
       2'b00:out_t=d0;
       2'b01:out_t=d1;
       2'b10:out_t=d2;
       2'b11:out_t=d3;
       default:out_t=0;
       endcase
    end
    assign out = out_t ;
 
endmodule

testbench:

`timescale 1ns/1ns

module testbench;
    wire out_t;
    reg [1:0]d0_t,d1_t,d2_t,d3_t;
    reg s0_t,s1_t;
mux4to1 u_mux4to1(
    .out(out_t),
    .d0(d0_t),
    .d1(d1_t),
    .d2(d2_t),
    .d3(d3_t),
    .s0(s0_t),
    .s1(s1_t)
    );
  initial
  begin
  d0_t=2'b00;
  d1_t=2'b00;
  d2_t=2'b00;
  d3_t=2'b00;
  s1_t=2'b00;
  s0_t=2'b00; 
  end
  always #10 {s1_t,s0_t}  ={s1_t,s0_t}+1'b1;
  always #10 {d0_t,d1_t,d2_t,d3_t}={d0_t,d1_t,d2_t,d3_t}+1'b1;

always begin
#100;
if ($time >= 1000) $finish ;
end

  initial begin
    $dumpfile("out.vcd");
    $dumpvars(0, testbench);
end
endmodule

结果:

Case表达的结果:

If表达的结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值