Multiplexer 4 Inputs and Test Bench
Multiplexer 4 Inputs and Test Bench
input[1:0] select;
input[3:0] d;
output q;
wire q;
wire[1:0] select;
wire[3:0] d;
assign q = d[select];
endmodule
module mux_tb;
reg[3:0] d;
reg[1:0] select;
wire q;
integer i;
begin
begin
d = i;
select = 0; #1;
select = 1; #1;
select = 2; #1;
select = 3; #1;
$display("d=%b,select=%b,q=%b", d,select,q);
end
end
endmodule
if and always
module mux3( select, d, q );
input[1:0] select;
input[3:0] d;
output q;
reg q;
wire[1:0] select;
wire[3:0] d;
always @( select or d )
begin
if( select == 0)
q = d[0];
if( select == 1)
q = d[1];
if( select == 2)
q = d[2];
if( select == 3)
q = d[3];
end
endmodule
case
module mux4( select, d, q );
input[1:0] select;
input[3:0] d;
output q;
reg q;
wire[1:0] select;
wire[3:0] d;
always @( select or d )
begin
case( select )
0 : q = d[0];
1 : q = d[1];
2 : q = d[2];
3 : q = d[3];
endcase
end
endmodule
input[1:0] select;
input[3:0] d;
output q;
wire q;
wire[1:0] select;
wire[3:0] d;
assign q = ( select == 0 )? d[0] : ( select == 1 )? d[1] : ( select == 2 )?
d[2] : d[3];
endmodule
input[1:0] select;
input[3:0] d;
output q;
reg q;
wire[1:0] select;
wire[3:0] d;
always @( select or d)
begin
q = ( ~select[0] & ~select[1] & d[0] )
| ( select[0] & ~select[1] & d[1] )
| ( ~select[0] & select[1] & d[2] )
| ( select[0] & select[1] & d[3] );
end
endmodule
input[1:0] select;
input[3:0] d;
output q;
endmodule
module DFF(
Clk,
CE,
reset,
D,
set,
Q
);
endmodule
1:4 Demux:
endmodule
module tb_demux;
// Inputs
reg Data_in;
reg [1:0] sel;
// Outputs
wire Data_out_0;
wire Data_out_1;
wire Data_out_2;
wire Data_out_3;
initial begin
//Apply Inputs
Data_in = 1;
sel = 0; #100;
sel = 1; #100;
sel = 2; #100;
sel = 3; #100;
Data_in = 0;
end
endmodule