Verilog 实现四选一选择器
前仿真模块
// An highlighted block
var foo = 'bar';
module selector_41(sel, a, b, c, d, y);
input [1:0] sel;
input a;
input b;
input c;
input d;
output reg y;
always @ (*) begin
case(sel) //case语句:括号为输入的条件
2'b00 : y = a;
2'b01 : y = b;
2'b10 : y = c;
2'b11 : y = d;
endcase
end
endmodule
后仿真模块
// An highlighted block
var foo = 'bar';
`timescale 1ns/1ps
module selector_41_tb;
reg [1:0] sel;
reg a;
reg b;
reg c;
reg d;
wire y;
selector_41 selector_41_inst(
.sel(sel),
.a(a),
.b(b),
.c(c),
.d(d),
.y(y)
);
initial begin
sel = 2'b00;a= 0;b =0; c=0; d=0;
#200 sel = 2'b00;a= 0;b =0; c=0; d=1;
#200 sel = 2'b00;a= 0;b =0; c=1; d=0;
#200 sel = 2'b00;a= 0;b =0; c=1; d=1;
#200 sel = 2'b00;a= 0;b =1; c=0; d=0;
#200 sel = 2'b00;a= 0;b =1; c=0; d=1;
#200 sel = 2'b00;a= 0;b =1; c=1; d=0;
#200 sel = 2'b00;a= 0;b =1; c=1; d=1;
#200 sel = 2'b00;a= 1;b =0; c=0; d=0;
#200 sel = 2'b00;a= 1;b =0; c=0; d=1;
#200 sel = 2'b00;a= 1;b =0; c=1; d=0;
#200 sel = 2'b00;a= 1;b =0; c=1; d=1;
#200 sel = 2'b00;a= 1;b =1; c=0; d=0;
#200 sel = 2'b00;a= 1;b =1; c=0; d=1;
#200 sel = 2'b00;a= 1;b =1; c=1; d=0;
#200 sel = 2'b00;a= 1;b =1; c=1; d=1;
#200 sel = 2'b01;a= 0;b =0; c=0; d=0;
#200 sel = 2'b01;a= 0;b =0; c=0; d=1;
#200 sel = 2'b01;a= 0;b =0; c=1; d=0;
#200 sel = 2'b01;a= 0;b =0; c=1; d=1;
#200 sel = 2'b01;a= 0;b =1; c=0; d=0;
#200 sel = 2'b01;a= 0;b =1; c=0; d=1;
#200 sel = 2'b01;a= 0;b =1; c=1; d=0;
#200 sel = 2'b01;a= 0;b =1; c=1; d=1;
#200 sel = 2'b01;a= 1;b =0; c=0; d=0;
#200 sel = 2'b01;a= 1;b =0; c=0; d=1;
#200 sel = 2'b01;a= 1;b =0; c=1; d=0;
#200 sel = 2'b01;a= 1;b =0; c=1; d=1;
#200 sel = 2'b01;a= 1;b =1; c=0; d=0;
#200 sel = 2'b01;a= 1;b =1; c=0; d=1;
#200 sel = 2'b01;a= 1;b =1; c=1; d=0;
#200 sel = 2'b01;a= 1;b =1; c=1; d=1;
#200 sel = 2'b10;a= 0;b =0; c=0; d=0;
#200 sel = 2'b10;a= 0;b =0; c=0; d=1;
#200 sel = 2'b10;a= 0;b =0; c=1; d=0;
#200 sel = 2'b10;a= 0;b =0; c=1; d=1;
#200 sel = 2'b10;a= 0;b =1; c=0; d=0;
#200 sel = 2'b10;a= 0;b =1; c=0; d=1;
#200 sel = 2'b10;a= 0;b =1; c=1; d=0;
#200 sel = 2'b10;a= 0;b =1; c=1; d=1;
#200 sel = 2'b10;a= 1;b =0; c=0; d=0;
#200 sel = 2'b10;a= 1;b =0; c=0; d=1;
#200 sel = 2'b10;a= 1;b =0; c=1; d=0;
#200 sel = 2'b10;a= 1;b =0; c=1; d=1;
#200 sel = 2'b10;a= 1;b =1; c=0; d=0;
#200 sel = 2'b10;a= 1;b =1; c=0; d=1;
#200 sel = 2'b10;a= 1;b =1; c=1; d=0;
#200 sel = 2'b10;a= 1;b =1; c=1; d=1;
#200 sel = 2'b11;a= 0;b =0; c=0; d=0;
#200 sel = 2'b11;a= 0;b =0; c=0; d=1;
#200 sel = 2'b11;a= 0;b =0; c=1; d=0;
#200 sel = 2'b11;a= 0;b =0; c=1; d=1;
#200 sel = 2'b11;a= 0;b =1; c=0; d=0;
#200 sel = 2'b11;a= 0;b =1; c=0; d=1;
#200 sel = 2'b11;a= 0;b =1; c=1; d=0;
#200 sel = 2'b11;a= 0;b =1; c=1; d=1;
#200 sel = 2'b11;a= 1;b =0; c=0; d=0;
#200 sel = 2'b11;a= 1;b =0; c=0; d=1;
#200 sel = 2'b11;a= 1;b =0; c=1; d=0;
#200 sel = 2'b11;a= 1;b =0; c=1; d=1;
#200 sel = 2'b11;a= 1;b =1; c=0; d=0;
#200 sel = 2'b11;a= 1;b =1; c=0; d=1;
#200 sel = 2'b11;a= 1;b =1; c=1; d=0;
#200 sel = 2'b11;a= 1;b =1; c=1; d=1;
end
endmodule