4选1数据选择器 testbench代码编写

4选1数据选择器verilog代码

module mux4_1(out, in0, in1, in2, in3, sel); 
output out; 
input in0, in1, in2, in3; 
input[1:0] sel; 
reg out; 

always @(in0 or in1 or in2 or in3 or sel) //敏感信号列表 
	case(sel) 
		2'b00: out=in0; 
		2'b01: out=in1; 
		2'b10: out=in2; 
		2'b11: out=in3; 
		default: out=2'bx; 
	endcase
endmodule

4选1数据选择器testbench代码

'timescale 1ns/1ps

module mux_tb;
    reg in0,in1,in2,in3;
    reg[1:0] sel;
    wire out;
    integer i;
    integer j;

 mux4_1 tb(
        .in0(in0),
        .in1(in1),
        .in2(in2),
        .in3(in3),
        .sel(sel),
        .out(out)
    );
    
 initial begin
       for(i = 0;i < 5;i++) begin
              case(i)
                    0: sel = 2'b00;
                    1: sel = 2'b01;
                    2: sel = 2'b10;
                    3: sel = 2'b11;
              endcase

           for(j = 0;j < 16;j++) begin
                  case(j)
                    0:
                    #10 in0 = 1'b0; in1 = 1'b0; in2 = 1'b0; in3 = 1'b0;
                    1:
                    #10 in0 = 1'b0; in1 = 1'b0; in2 = 1'b0; in3 = 1'b1;
                    2:
                    #10 in0 = 1'b0; in1 = 1'b0; in2 = 1'b1; in3 = 1'b0;
                    3:
                    #10 in0 = 1'b0; in1 = 1'b0; in2 = 1'b1; in3 = 1'b1;

                    4:
                    #10 in0 = 1'b0; in1 = 1'b1; in2 = 1'b0; in3 = 1'b0;
                    5:
                    #10 in0 = 1'b0; in1 = 1'b1; in2 = 1'b0; in3 = 1'b1;
                    6:
                    #10 in0 = 1'b0; in1 = 1'b1; in2 = 1'b1; in3 = 1'b0;
                    7:
                    #10 in0 = 1'b0; in1 = 1'b1; in2 = 1'b1; in3 = 1'b1;

                    8:
                    #10 in0 = 1'b1; in1 = 1'b0; in2 = 1'b0; in3 = 1'b0;
                    9:
                    #10 in0 = 1'b1; in1 = 1'b0; in2 = 1'b0; in3 = 1'b1;
                    10:
                    #10 in0 = 1'b1; in1 = 1'b0; in2 = 1'b1; in3 = 1'b0;
                    11:
                     #10 in0 = 1'b1; in1 = 1'b0; in2 = 1'b1; in3 = 1'b1;

                    12:
                    #10 in0 = 1'b1; in1 = 1'b1; in2 = 1'b0; in3 = 1'b0;
                    13:
                    #10 in0 = 1'b1; in1 = 1'b1; in2 = 1'b0; in3 = 1'b1;
                    14:
                    #10 in0 = 1'b1; in1 = 1'b1; in2 = 1'b1; in3 = 1'b0;
                    15:
                    #10 in0 = 1'b1; in1 = 1'b1; in2 = 1'b1; in3 = 1'b1;
                 endcase
                            end

                      end
              end

endmodule

备注
这些代码全部是初学者第一次编写,可能存在错误,谨慎参考。

  • 1
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值