4选1数据选择器程序及testbench文件,给出仿真波形,分析

1、编写4选1数据选择器模块代码:

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

2、写测试文件tmux4_1.v代码:

`timescale  1ns/1ns  
module tmux4_1;
 reg in0, in1, in2, in3;
 reg [1:0] sel;
 wire out;

initial
  begin
   in0 = 1; in1 = 0; in2 = 0; in3 = 0; sel = 2'b00;
   #20 sel = 2'b01; #10 sel = 2'b10; #10 sel = 2'b11;   //stay 20ns when out=1
   #10 in0 = 0; in1 = 1; in2 = 0; in3 = 0; sel = 2'b01;
   #20 sel = 2'b00; #10 sel = 2'b10; #10 sel = 2'b11;
   #10 in0 = 0; in1 = 0; in2 = 1; in3 = 0; sel = 2'b10;
   #20 sel = 2'b00; #10 sel = 2'b11; #10 sel = 2'b01;
   #10 in0 = 0; in1 = 0; in2 = 0; in3 = 1; sel = 2'b11;
   #20 sel = 2'b00; #10 sel = 2'b01; #10 sel = 2'b10;
   #200 $stop;
   end

//exemplify
mux4_1  u0_mux4_1(
    .in0 (in0),
    .in1 (in1),
    .in2 (in2),
    .in3 (in3),
    .sel (sel),
    .out (out)
);

endmodule

测试代码解读:
测试代码的输出分四个周期,在每个周期内,控制sel值分别选择4个输入in值。以第一周期为例,持续时间为50ns,in0输出1,in1-3输出都为0,sel在前20ns片选in0,然后每隔10ns挨个选择in1-3,其他周期类似。第二周期的时候,in1=1,in0、in2和in3都为0,sel选择in1输出持续20ns,然后选择in0、in2和in3输出各10ns。

3、仿真结果:
在这里插入图片描述
4、仿真结果分析:
仿真波形从上到下分别是in0-3、sel和out。in0、in1、in2、in3轮流输出50ns的1,除了输出1的输入在当前时刻其余3个输入全部输出0,在每一个输入1的周期内通过sel轮流选择20ns输出1,选择其他几个输入各自输出10ns,实验结果完全正确。

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值