2:1 MUX Verilog Code
4:1 MUX Verilog Code
Multiplexer Verilog Code
In this post we are sharing with you the Verilog code of different multiplexers such as 2:1 MUX, 4:1 MUX etc.
I am sure you are aware of with working of a Multiplexer. The general block level diagram of a Multiplexer is shown below.
When sel is at logic 0 out=I0 and when select is at logic 1 out=I1.
2:1 MUX Verilog in Data Flow Model is given below.
module mux2X1( in0,in1,sel,out); input in0,in1, sel; output out; assign out=(sel)?in1:in0; endmodule //test bench module mux2X1_tb; reg in0, in1; reg sel; wire out; mux2X1 uut(.in0(in0), .in1(in1),.sel(sel),.out(out)); initial begin $monitor( "in0=%d, in1=%d, sel= %d, out=%d", in0,in1,sel,out); for (int i=0; i<8; i=i+1) begin {in0,in1,sel} = i; #10; end end endmodule
Verilog Code of 2:1 MUX in Behavioral Model is given below.
module mux2X1( in0,in1,sel,out); input in0,in1, sel; output reg out; always @(*) begin if(sel) out= in1; else out=in0; end endmodule
Simulation Result:
Now we are going to share with you the 4:1 MUX Verilog code in dataflow and behavioral.
4:1 MUX Verilog Code in Dataflow model is given below.
module mux4X1( in,sel,out); input [3:0]in; input [1:0]sel; output out; assign out = sel[1] ? ( sel[0] ? in[3]: in[2]) : ( sel[0] ? in[1]: in[0]); endmodule
4:1 MUX Verilog Code in Behavioral model is given below.
module mux4X1( in,sel,out); input [3:0]in; input [1:0]sel; output reg out; always @(*) begin case(sel) 2'b00: out=in[0]; 2'b01: out=in[1]; 2'b10: out=in[2]; 2'b11: out=in[3]; default: out=1'b0; endcase end endmodule
Simulation Result:
If you have any query/suggestion please feel free to comment below the post.