Thursday, 10 November 2016

18. Verilog code for 2 bit comparator.

// Verilog code for 2-bit Comparator  using Dataflow
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: RED-BLUE
// Engineer:
//
// Create Date:    19:03:59 11/10/2016
// Designer Name:  Madhu-Krishna
// Module Name:    comp_2bit_code
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module comp_2bit_code( input_a0,
                                          input_a1,
  input_b0,
   input_b1,
   agb,
   aeb,
    alb);

  // INPUTS
        input   input_a0;
input   input_a1;
input   input_b0;
input   input_b1;

  //OUTPUTS
         output  agb;
output  aeb;
output  alb;

  //Declaration of 2 bit comparator
  assign agb = ((input_a1) & (~input_b1))|((input_a0) & (~input_b0) & (~input_b1)) | ((input_a0) & (~input_b0) & (input_a1));
  assign aeb = (~(input_a0 ^ input_b0)) | (~(input_a1 ^input_b1));
  assign alb = ((~input_a1 & input_b1) | ((~input_a0) & (~input_a1) &(input_b0)) | ((~input_a0) & (input_b0) & (input_b1)));
endmodule

---------------------------------------------------------------------------------------------------------------------------------------------------------

// Verilog code for 2-bit Comparator  using strcutural
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: RED-BLUE
// Engineer:
//
// Create Date:    19:03:59 11/10/2016
// Designer Name:  Madhu-Krishna
// Module Name:    comp_2bit_str
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module comp_2bit_str( input_a0,
                                       input_a1,
       input_b0,
       input_b1,
       agb,
       aeb,
       alb);

  // INPUTS
    input input_a0;
    input input_a1;
    input input_b0;
    input input_b1;

  // OUTPUTS
    output  agb;
    output  aeb;
    output  alb;
 wire  [11:0] com_out;
  // NOT Gate Instantiation Template
   
   not_gate_code U_NOT_GATE1 (
    .input_a(input_a1),
    .output_y(com_out[0])
    );

   not_gate_code U_NOT_GATE2 (
    .input_a(input_a0),
    .output_y(com_out[1])
    );


   not_gate_code U_NOT_GATE3 (
    .input_a(input_b1),
    .output_y(com_out[2])
    );


   not_gate_code U_NOT_GATE4 (
    .input_a(input_b0),
    .output_y(com_out[3])
    );
  //  AND Gate Instantiation Template
    and_gate_code U_AND_GATE1 (
    .input_a(input_a1),
    .input_b(com_out[2]),
    .output_y(com_out[4])
    );
  // 3 in AND Gate Instantiation Template
   
  and_gate_3in U_AND_GATE2 (
    .input_a(input_a0),
    .input_b(com_out[3]),
    .input_c(com_out[2]),
    .output_y(com_out[5])
    );

  and_gate_3in U_AND_GATE3 (
    .input_a(input_a0),
    .input_b(com_out[3]),
    .input_c(input_a1),
    .output_y(com_out[6])
    );
// 3 in OR Gate Instantiation Template
or_gate_3in U_OR_GATE1 (
    .input_a(com_out[4]),
    .input_b(com_out[5]),
    .input_c(com_out[6]),
    .output_y(agb)
    );

// 2 in XNOR Gate Instantiation Template
   xnor_gate_code U_XNOR_GATE1 (
    .input_a(input_a0),
    .input_b(input_bo),
    .output_y(com_out[7])
    );

   xnor_gate_code U_XNOR_GATE2 (
    .input_a(input_a1),
    .input_b(input_b1),
    .output_y(com_out[8])
    );


    and_gate_code U_AND_GATE4 (
    .input_a(com_out[7]),
    .input_b(com_out[8]),
    .output_y(aeb)
    );

  //  AND Gate Instantiation Template
    and_gate_code U_AND_GATE5 (
    .input_a(com_out[0]),
    .input_b(input_b1),
    .output_y(com_out[9])
    );
  // 3 in AND Gate Instantiation Template
   
  and_gate_3in U_AND_GATE6 (
    .input_a(com_out[1]),
    .input_b(com_out[0]),
    .input_c(input_b0),
    .output_y(com_out[10])
    );

  and_gate_3in U_AND_GATE7 (
    .input_a(com_out[1]),
    .input_b(input_b0),
    .input_c(input_b1),
    .output_y(com_out[11])
    );
// 3 in OR Gate Instantiation Template
or_gate_3in U_OR_GATE2 (
    .input_a(com_out[9]),
    .input_b(com_out[10]),
    .input_c(com_out[11]),
    .output_y(alb)
    );
endmodule

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

// Verilog code for 2-bit Comparator  using behavioral
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: RED-BLUE
// Engineer:
//
// Create Date:    19:03:59 11/10/2016
// Designer Name:  Madhu-Krishna
// Module Name:    comp_2bit_beh1
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module comp_2bit_beh1( input_a0,
                                          input_a1,
  input_b0,
  input_b1,
  agb,
  aeb,
  alb);

  // INPUTS
    input  input_a0;
    input  input_a1;
    input  input_b0;
    input  input_b1;

  // OUTPUTS
    output agb;
output aeb;
output alb;

wire  [3:0]com_out;
reg    agb;
reg    aeb;
reg    alb;

  //  Behavioral style using if and else if
    assign com_out = {input_a1, input_a0, input_b1, input_b0};
    always @(*) begin
  if (com_out == 4'b0000) begin
       agb <= 1'b0;
aeb <= 1'b1;
alb <= 1'b0;
end else if (com_out == 4'b0001) begin
        agb <= 1'b0;
aeb <= 1'b0;
alb <= 1'b1;
end else if (com_out == 4'b0010) begin
        agb <= 1'b0;
aeb <= 1'b0;
alb <= 1'b1;
end else if (com_out == 4'b0011) begin
        agb <= 1'b0;
aeb <= 1'b0;
alb <= 1'b1;
end else if (com_out == 4'b0100) begin
        agb <= 1'b1;
aeb <= 1'b0;
alb <= 1'b0;
end else if (com_out == 4'b0101) begin
        agb <= 1'b0;
aeb <= 1'b1;
alb <= 1'b0;
end else if (com_out == 4'b0110) begin
        agb <= 1'b0;
aeb <= 1'b0;
alb <= 1'b1;
end else if (com_out == 4'b0111) begin
        agb <= 1'b0;
aeb <= 1'b0;
alb <= 1'b1;
end else if (com_out == 4'b1000) begin
        agb <= 1'b1;
aeb <= 1'b0;
alb <= 1'b0;
end else if (com_out == 4'b1001) begin
       agb <= 1'b1;
aeb <= 1'b0;
alb <= 1'b0;
end else if (com_out == 4'b1011) begin
        agb <= 1'b0;
aeb <= 1'b0;
alb <= 1'b1;
end else if (com_out == 4'b1100) begin
        agb <= 1'b1;
aeb <= 1'b0;
alb <= 1'b0;
end else if (com_out == 4'b1101) begin
        agb <= 1'b1;
aeb <= 1'b0;
alb <= 1'b0;
end else if (com_out == 4'b1110) begin
        agb <= 1'b1;
aeb <= 1'b0;
alb <= 1'b0;
end else  begin
        agb <= 1'b0;
aeb <= 1'b1;
alb <= 1'b0;
      end
   end
endmodule

------------------------------------------------------------------------------------------------------------------------------------------------------------


// Verilog code for 2-bit Comparator  using behavioral
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: RED-BLUE
// Engineer: 
// 
// Create Date:    19:03:59 11/10/2016 
// Designer Name:  Madhu-Krishna
// Module Name:    comp_2bit_beh2 
// Project Name: 
// Target Devices: 
// Tool versions: 
// Description: 
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//////////////////////////////////////////////////////////////////////////////////
module comp_2bit_beh2( input_a0,
                                          input_a1,
  input_b0,
  input_b1,
  agb,
  aeb,
  alb);

  // INPUTS
         input  input_a0;
input  input_a1;
input  input_b0;
input  input_b1;
 
  // OUTPUTS
    output  agb;
    output  aeb;
    output  alb;
 
wire  [3:0]com_out;
reg    agb;
reg    aeb;
reg    alb;
 
  //  Behavioral style using case 
    assign com_out = {input_a1, input_a0, input_b1, input_b0};
    always @(*) begin
  case( com_out)
4'b0000:begin
  agb = 1'b0;
   aeb = 1'b1;
   alb = 1'b0;
   end
4'b0001:begin
  agb = 1'b0;
   aeb = 1'b0;
   alb = 1'b1;
   end
4'b0010:begin
  agb = 1'b0;
   aeb = 1'b0;
   alb = 1'b1;
   end
4'b0011:begin
  agb = 1'b0;
   aeb = 1'b0;
   alb = 1'b1;
   end
4'b0100:begin
  agb = 1'b1;
   aeb = 1'b0;
   alb = 1'b0;
   end
4'b0101:begin
  agb = 1'b0;
   aeb = 1'b1;
   alb = 1'b0;
   end
4'b0110:begin
  agb = 1'b0;
   aeb = 1'b0;
   alb = 1'b1;
   end
4'b0111:begin
  agb = 1'b0;
   aeb = 1'b0;
   alb = 1'b1;
   end
4'b1000:begin
  agb = 1'b1;
   aeb = 1'b0;
   alb = 1'b0;
   end
4'b1001:begin
  agb = 1'b1;
   aeb = 1'b0;
   alb = 1'b0;
   end  
4'b1011:begin
  agb = 1'b0;
   aeb = 1'b0;
   alb = 1'b1;
   end
4'b1100:begin
  agb = 1'b1;
   aeb = 1'b0;
   alb = 1'b0;
   end
4'b1101:begin
  agb = 1'b1;
   aeb = 1'b0;
   alb = 1'b0;
   end
4'b1110:begin
  agb = 1'b1;
   aeb = 1'b0;
   alb = 1'b0;
   end
4'b1111:begin
  agb = 1'b0;
   aeb = 1'b1;
   alb = 1'b0;
   end
       default:begin
  agb = 1'b0;
   aeb = 1'b0;
   alb = 1'b0;
   end  
endcase
  end  
endmodule  
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

17. Verilog code for all Multiplexer in single code.

// Verilog code for all Multiplexer in single code.
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: RED-BLUE
// Engineer:
//
// Create Date:    23:17:10 11/09/2016
// Designer Name:  Madhu krishna
// Module Name:    diff_mux_sel
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
                             module diff_mux_sel(input_d0,
                                                                input_d1,
input_d2,
input_d3,
input_d4,
input_d5,
input_d6,
input_d7,
input_d8,
input_d9,
input_d10,
input_d11,
input_d12,
input_d13,
input_d14,
input_d15,
input_d16,
                                                                input_d17,
input_d18,
input_d19,
input_d20,
input_d21,
input_d22,
input_d23,
input_d24,
input_d25,
input_d26,
input_d27,
input_d28,
input_d29,
input_d30,
input_d31,
sel_0,
sel_1,
sel_2,
sel_3,
sel_4,
output_y);

  // INPUTS
    input input_d0;
    input input_d1;
    input input_d2;
    input input_d3;
    input input_d4;
    input input_d5;
    input input_d6;
    input input_d7;
    input input_d8;
    input input_d9;
    input input_d10;
    input input_d11;
    input input_d12;
    input input_d13;
    input input_d14;
    input input_d15;
    input input_d16;
    input input_d17;
    input input_d18;
    input input_d19;
    input input_d20;
    input input_d21;
    input input_d22;
    input input_d23;
    input input_d24;
    input input_d25;
    input input_d26;
    input input_d27;
    input input_d28;
    input input_d29;
    input input_d30;
    input input_d31;
input sel_0;
input sel_1;
input sel_2;
input sel_3;
    input sel_4;

  // OUTPUT
    output  output_y;

         reg      output_y;
wire   [2:0] mux_sel;
         wire      mux21_con_out;
wire [1:0]mux41_con_out;
wire [2:0]mux81_con_out;
wire [3:0]mux16_1con_out;
wire [4:0]mux32_1con_out;
  //Declaration of assignment statement
assign mux21_con_out = sel_0;
    assign mux41_con_out = {sel_1,sel_0};
    assign mux81_con_out = {sel_2, sel_1, sel_0};
    assign mux16_1con_out = {sel_3, sel_2, sel_1, sel_0};
    assign mux32_1con_out = {sel_4, sel_3, sel_2, sel_1, sel_0};

  always @(*) begin
   if ( mux_sel == 3'b000) begin
 case(mux21_con_out)
1'b0: output_y = input_d0;
                 1'b1: output_y = input_d1;
default: output_y = 1'b0;
     endcase
   end else if (mux_sel == 3'b001) begin
  case(mux41_con_out)
   2'b00: output_y = input_d0;
    2'b01: output_y = input_d1;
    2'b10: output_y = input_d2;
    2'b11: output_y = input_d3;
   default: output_y = 1'b0;
 endcase
end else if (mux_sel == 3'b010) begin
  case (mux81_con_out)
 3'b000: output_y = input_d0;
 3'b001: output_y = input_d1;
 3'b010: output_y = input_d2;
 3'b011: output_y = input_d3;
 3'b100: output_y = input_d4;
 3'b101: output_y = input_d5;
 3'b110: output_y = input_d6;
 3'b111: output_y = input_d7;
 default: output_y = 1'b0;
      endcase
  end else if (mux_sel == 3'b011) begin
     case ( mux16_1con_out)
        4'b0000:output_y = input_d0;
        4'b0001:output_y = input_d1;
        4'b0010:output_y = input_d2;
        4'b0011:output_y = input_d3;
        4'b0100:output_y = input_d4;
        4'b0101:output_y = input_d5;
        4'b0110:output_y = input_d6;
        4'b0111:output_y = input_d7;
        4'b1000:output_y = input_d8;
        4'b1001:output_y = input_d9;
        4'b1010:output_y = input_d10;
        4'b1011:output_y = input_d11;
        4'b1100:output_y = input_d12;
        4'b1101:output_y = input_d13;
        4'b1110:output_y = input_d14;
        4'b1111:output_y = input_d15;
        default:output_y = 1'b0;
      endcase
    end else begin
  case ( mux32_1con_out)
        5'b00000:output_y = input_d0;
        5'b00001:output_y = input_d1;
        5'b00010:output_y = input_d2;
        5'b00011:output_y = input_d3;
        5'b00100:output_y = input_d4;
        5'b00101:output_y = input_d5;
        5'b00110:output_y = input_d6;
        5'b00111:output_y = input_d7;
        5'b01000 :output_y = input_d8;
        5'b01001:output_y = input_d9;
        5'b01010:output_y = input_d10;
        5'b01011:output_y = input_d11;
        5'b01100:output_y = input_d12;
        5'b01101:output_y = input_d13;
        5'b01110:output_y = input_d14;
        5'b01111:output_y = input_d15;
        5'b10000:output_y = input_d16;
        5'b10001:output_y = input_d17;
        5'b10010:output_y = input_d18;
        5'b10011:output_y = input_d19;
        5'b10100:output_y = input_d20;
        5'b10101:output_y = input_d21;
        5'b10110:output_y = input_d22;
        5'b10111:output_y = input_d23;
        5'b11000:output_y = input_d24;
        5'b11001:output_y = input_d25;
        5'b11010:output_y = input_d26;
        5'b11011:output_y = input_d27;
        5'b11100:output_y = input_d28;
        5'b11101:output_y = input_d29;
        5'b11110:output_y = input_d30;
        5'b11111:output_y = input_d31;
        default: output_y = 1'b0;
      endcase
   end
  end
endmodule

Wednesday, 9 November 2016

16. Verilog code for 32:1 Multiplexer using 16:1 Mux and 2:1 Mux(structural) .

// Verilog code for 32:1 Multiplexer using 16:1 MUX and 2:1 MUX
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: RED-BLUE
// Engineer:
//
// Create Date:    17:38:04 11/09/2016
// Designer Name:  Madhu Krishna
// Module Name:    mux32_1_u_mux16_1
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
  module mux32_1_u_mux16_1(
        input_d0,
        input_d1,
input_d2,
input_d3,
input_d4,
input_d5,
input_d6,
input_d7,
input_d8,
input_d9,
input_d10,
input_d11,
input_d12,
input_d13,
input_d14,
input_d15,
input_d16,
        input_d17,
input_d18,
input_d19,
input_d20,
input_d21,
input_d22,
input_d23,
input_d24,
input_d25,
input_d26,
input_d27,
input_d28,
input_d29,
input_d30,
input_d31,
sel_0,
sel_1,
sel_2,
sel_3,
sel_4,
output_y);

  // INPUTS
    input input_d0;
    input input_d1;
    input input_d2;
    input input_d3;
    input input_d4;
    input input_d5;
    input input_d6;
    input input_d7;
    input input_d8;
    input input_d9;
    input input_d10;
    input input_d11;
    input input_d12;
    input input_d13;
    input input_d14;
    input input_d15;
    input input_d16;
    input input_d17;
    input input_d18;
    input input_d19;
    input input_d20;
    input input_d21;
    input input_d22;
    input input_d23;
   input input_d24;
    input input_d25;
    input input_d26;
    input input_d27;
    input input_d28;
    input input_d29;
    input input_d30;
    input input_d31;
   input sel_0;
   input sel_1;
   input sel_2;
   input sel_3;
    input sel_4;

  // OUTPUT
    output  output_y;
wire    [1:0] mux_com_out;
  // Declaration of 32:1 Multiplexer
   mux16_1_code U_MUX16_1_1 (
    .input_d0(input_d0),
    .input_d1(input_d1),
    .input_d2(input_d2),
    .input_d3(input_d3),
    .input_d4(input_d4),
    .input_d5(input_d5),
    .input_d6(input_d6),
    .input_d7(input_d7),
    .input_d8(input_d8),
    .input_d9(input_d9),
    .input_d10(input_d10),
    .input_d11(input_d11),
    .input_d12(input_d12),
    .input_d13(input_d13),
    .input_d14(input_d14),
    .input_d15(input_d15),
    .sel_0(sel_0),
    .sel_1(sel_1),
    .sel_2(sel_2),
    .sel_3(sel_3),
    .output_y(mux_com_out[0])
    );
 

mux16_1_code U_MUX16_1_2 (
    .input_d0(input_d16),
    .input_d1(input_d17),
    .input_d2(input_d18),
    .input_d3(input_d19),
    .input_d4(input_d20),
    .input_d5(input_d21),
    .input_d6(input_d22),
    .input_d7(input_d23),
    .input_d8(input_d24),
    .input_d9(input_d25),
    .input_d10(input_d26),
    .input_d11(input_d27),
    .input_d12(input_d28),
    .input_d13(input_d29),
    .input_d14(input_d30),
    .input_d15(input_d31),
    .sel_0(sel_0),
    .sel_1(sel_1),
    .sel_2(sel_2),
    .sel_3(sel_3),
    .output_y(mux_com_out[1])
    );

   // MUX2_1 Instantiation Template

   mux2_1_code U_MUX2_1 (
    .input_a(mux_com_out[0]),
    .input_b(mux_com_out[1]),
    .sel_0(sel_4),
    .output_y(output_y)
    );
endmodule

15. Verilog code for 16:1 Multiplexer using 8:1 Mux and 2:1 Mux(structural) .

// Verilog code for 16:1 Multiplexer using 8:1 Mux and 2:1 Mux.
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: RED BLUE
// Engineer:
//
// Create Date:    16:57:42 11/09/2016
// Designer Name:  Madhu Krishna
// Module Name:    mux16_1_u_mux8_1
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
               module mux16_1_u_mux8_1(input_d0,
                                                               input_d1,
input_d2,
input_d3,
input_d4,
input_d5,
input_d6,
input_d7,
input_d8,
input_d9,
input_d10,
input_d11,
input_d12,
input_d13,
input_d14,
input_d15,
sel_0,
sel_1,
sel_2,
sel_3,
output_y);

  // INPUTS
    input  input_d0;
    input  input_d1;
    input  input_d2;
    input  input_d3;
    input  input_d4;
    input  input_d5;
    input  input_d6;
    input  input_d7;
    input  input_d8;
    input  input_d9;
    input  input_d10;
    input  input_d11;
    input  input_d12;
    input  input_d13;
    input  input_d14;
    input  input_d15;
    input  sel_0;
    input  sel_1;
    input  sel_2;
    input  sel_3;


  // OUTPUT
    output output_y;
   
    wire   [1:0] mux_con_out;

  //  16:1 Multiplexer using 8:1 mux and 2:1 mux
 
  // 8:1 MUX  Instantiation Template
  mux8_1_code U_MUX8_1_1 (
    .input_d0(input_d0),
    .input_d1(input_d1),
    .input_d2(input_d2),
    .input_d3(input_d3),
    .input_d4(input_d4),
    .input_d5(input_d5),
    .input_d6(input_d6),
    .input_d7(input_d7),
    .sel_0(sel_0),
    .sel_1(sel_1),
    .sel_2(sel_2),
    .output_y(mux_con_out[0])
    );

 mux8_1_code U_MUX8_1_2 (
    .input_d0(input_d8),
    .input_d1(input_d9),
    .input_d2(input_d10),
    .input_d3(input_d11),
    .input_d4(input_d12),
    .input_d5(input_d13),
    .input_d6(input_d14),
    .input_d7(input_d15),
    .sel_0(sel_0),
    .sel_1(sel_1),
    .sel_2(sel_2),
    .output_y(mux_con_out[1])
    );

  // 2:1 MUX Instantiation Template
    mux2_1_code U_mux2_1_1 (
    .input_a(mux_con_out[0]),
    .input_b(mux_con_out[1]),
    .sel_0(sel_3),
    .output_y(output_y)
    );

endmodule

----------------------------------------------------------------------------------------------------------------------------------------------

14. Verilog code for 8:1 Multiplexer using 4:1 Mux and 2:1 Mux(structural) .

//Verilog code for 8:1 Multiplexer using 4:1 Multiplexer and 2:1 Multiplexer
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: RED-BLUE
// Engineer:
//
// Create Date:    16:14:30 11/09/2016
// Designer Name:  Madhu Krishna
// Module Name:    mux81_u_mux41
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module mux81_u_mux41(input_d0,
                                           input_d1,
   input_d2,
       input_d3,
   input_d4,
   input_d5,
   input_d6,
   input_d7,
   sel_0,
   sel_1,
   sel_2,
   output_y);

  // INPUTS
    input  input_d0;
    input  input_d1;
    input  input_d2;
    input  input_d3;
    input  input_d4;
    input  input_d5;
    input  input_d6;
    input  input_d7;
    input   sel_0;
    input   sel_1;
    input   sel_2;

  // OUTPUT
    output  output_y;
     wire   [1:0] mux_com_out;
  // Declaration of 8:1 mux using 4:1 mux and 2:1 mux

  // MUX 4:1 Instantiation Template
   mux4_1_code U_MUX4_1_1 (
    .input_d0(input_d0),
    .input_d1(input_d1),
    .input_d2(input_d2),
    .input_d3(input_d3),
    .sel_0(sel_0),
    .sel_1(sel_1),
    .output_y(mux_com_out[0])
    );

mux4_1_code MUX4_1_2 (
    .input_d0(input_d4),
    .input_d1(input_d5),
    .input_d2(input_d6),
    .input_d3(input_d7),
    .sel_0      (sel_0),
    .sel_1      (sel_1),
    .output_y(mux_com_out[1])
    );

  // MUX 2:1 Instantiation Template
mux2_1_code U_MUX2_1_1 (
    .input_a(mux_com_out[0]),
    .input_b(mux_com_out[1]),
    .sel_0   (sel_2),
    .output_y(output_y)
    );
endmodule

---------------------------------------------------------------------------------------------------------------------------------------------

13. Verilog code for 4:1 Multiplexer using 2:1 Multiplexer(structural).

// Verilog code for 4:1 MUX using 2:1 MUX  strctural
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: RED-BLUE
// Engineer:
//
// Create Date:    14:39:06 11/09/2016
// Designer Name:  Madhu Krishna
// Module Name:    mux41_u_mux21
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module mux41_u_mux21( input_d0,
                                            input_d1,
                                       input_d2,
                                       input_d3,
                                       sel_0,
                                       sel_1,
                                       output_y);
  //INPUTS
  input  input_d0;
input  input_d1;
input  input_d2;
input  input_d3;
input  sel_0;
input  sel_1;

  //OUPUT
    output   output_y;
     wire     [1:0]mux_com_out;

  // MUX 2:1 Insatantiation Template
    mux2_1_code U_MUX2_1_1 (
    .input_a(input_d0),
    .input_b(input_d1),
    .sel_0(sel_0),
    .output_y(mux_com_out[0])
    );

    mux2_1_code U_MUX2_1_2 (
    .input_a(input_d2),
    .input_b(input_d3),
    .sel_0(sel_0),
    .output_y(mux_com_out[1])
    );

    mux2_1_code U_MUX2_1_3 (
    .input_a(mux_com_out[0]),
    .input_b(mux_com_out[1]),
    .sel_0(sel_1),
    .output_y(output_y)
    );

endmodule


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

12. Verilog code for 16:1 Multiplexer( Different moduling style).

// Verilog code for 16:1 Multiplexer using dataflow
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:  RED-BLUE
// Engineer:
//
// Create Date:    11:04:27 11/09/2016
// Designer Name:  Madhu Krishna
// Module Name:    mux16_1_code
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
  module  mux16_1_code( input_d0,
                                           input_d1,
    input_d2,
 input_d3,
 input_d4,
input_d5,
                                    input_d6,
 input_d7,
  input_d8,
                                        input_d9,
  input_d10,
      input_d11,
 input_d12,
 input_d13,
                                    input_d14,
 input_d15,
 sel_0,
 sel_1,
                                      sel_2,
 sel_3,
output_y);
  //INPUTS
  input  input_d0;
input  input_d1;
input  input_d2;
input  input_d3;
input  input_d4;
input  input_d5;
input  input_d6;
input  input_d7;
input  input_d8;
input  input_d9;
  input  input_d10;
input  input_d11;
input  input_d12;
input  input_d13;
input  input_d14;
input  input_d15;
input  sel_0;
input  sel_1;
input  sel_2;
input  sel_3;

  //OUTPUT
    output output_y;
    wire [21:0]mux_com_out;

  // Declaration of data flow
    assign mux_com_out[0] = ~(sel_0);
assign mux_com_out[1] = ~(sel_1);
assign mux_com_out[2] = ~(sel_2);
assign mux_com_out[3] = ~(sel_3);
assign mux_com_out[4] = (input_d0 & mux_com_out[3] & mux_com_out[2] & mux_com_out[1] & mux_com_out[0]);
assign mux_com_out[5] = (input_d1 & mux_com_out[3] & mux_com_out[2] & mux_com_out[1] & sel_0);
assign mux_com_out[6] = (input_d2 & mux_com_out[3] & mux_com_out[2] & sel_1 & mux_com_out[0]);
assign mux_com_out[7] = (input_d3 & mux_com_out[3] & mux_com_out[2] & sel_1 & sel_0);
assign mux_com_out[8] = (input_d4 & mux_com_out[3] & sel_2 & mux_com_out[1] & mux_com_out[0]);
assign mux_com_out[9] = (input_d5 & mux_com_out[3] & sel_2 & mux_com_out[1] & sel_0);
assign mux_com_out[10] = (input_d6 & mux_com_out[3] & sel_2 & sel_1 & mux_com_out[0]);
assign mux_com_out[11] = (input_d7 & mux_com_out[3] & sel_2 & sel_1 & sel_0);
assign mux_com_out[12] = (input_d8 & sel_3 & mux_com_out[2] & mux_com_out[1] & mux_com_out[0]);
assign mux_com_out[13] = (input_d9 & sel_3 & mux_com_out[2] & mux_com_out[1] & sel_0);
assign mux_com_out[14] = (input_d10 & sel_3 & mux_com_out[2] & sel_1 & mux_com_out[0]);
assign mux_com_out[15] = (input_d11 & sel_3 & mux_com_out[2] & sel_1 & sel_0);
assign mux_com_out[16] = (input_d12 & sel_3 & sel_2 & mux_com_out[1] & mux_com_out[0]);
assign mux_com_out[17] = (input_d13 & sel_3 & sel_2 & mux_com_out[1] & sel_0);
assign mux_com_out[18] = (input_d14 & sel_3 & sel_2 & sel_1 & mux_com_out[0]);
assign mux_com_out[19] = (input_d15 & sel_3 & sel_2 & sel_1 & sel_0);

assign mux_com_out[20] = (mux_com_out[4] | mux_com_out[5]| mux_com_out[6] | mux_com_out[7] | mux_com_out[8] | mux_com_out[9] |mux_com_out[10] | mux_com_out[11] );
assign mux_com_out[21] = (mux_com_out[12] | mux_com_out[13]| mux_com_out[14] | mux_com_out[15] | mux_com_out[16] | mux_com_out[17] |mux_com_out[18] | mux_com_out[19] );
    assign output_y = (mux_com_out[20] | mux_com_out[21]);

endmodule


------------------------------------------------------------------------------------------------------------------------------------------------------------------



// Verilog code for 16:1 Multiplexer using structral
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:  RED-BLUE
// Engineer:
//
// Create Date:    11:04:27 11/09/2016
// Designer Name:  Madhu Krishna
// Module Name:    mux16_1_str
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
  module  mux16_1_str( input_d0,
        input_d1,
input_d2,
input_d3,
input_d4,
input_d5,
input_d6,
input_d7,
input_d8,
input_d9,
input_d10,
input_d11,
input_d12,
input_d13,
input_d14,
input_d15,
sel_0,
sel_1,
sel_2,
sel_3,
output_y);
  //INPUTS
   input  input_d0;
input  input_d1;
input  input_d2;
input  input_d3;
input  input_d4;
input  input_d5;
input  input_d6;
input  input_d7;
input  input_d8;
input  input_d9;
  input  input_d10;
input  input_d11;
input  input_d12;
input  input_d13;
input  input_d14;
input  input_d15;
input  sel_0;
input  sel_1;
input  sel_2;
input  sel_3;

  //OUTPUT
    output output_y;
    wire   [21:0]mux_com_out;

  // Declaration of 16:1 Multiplexer

  // NOT GATE Instantiation Template
 
 not_gate_code U_NOT_GATE1 (
    .input_a(sel_0),
    .output_y(mux_com_out[0])
    );
       
   
   not_gate_code U_NOT_GATE2 (
    .input_a(sel_1),
    .output_y(mux_com_out[1])
    );

   not_gate_code U_NOT_GATE3 (
    .input_a(sel_2),
    .output_y(mux_com_out[2])
    );

   not_gate_code U_NOT_GATE4 (
    .input_a(sel_3),
    .output_y(mux_com_out[3])
    );

  // 5in AND GATE Instantiation Template

   and_gate5_code U_AND_GATE1 (
    .input_a(input_d0),
    .input_b(mux_com_out[3]),
    .input_c(mux_com_out[2]),
    .input_d(mux_com_out[1]),
    .input_e(mux_com_out[0]),
    .output_y(mux_com_out[4])
    );


 and_gate5_code U_AND_GATE2 (
    .input_a(input_d1),
    .input_b(mux_com_out[3]),
    .input_c(mux_com_out[2]),
    .input_d(mux_com_out[1]),
    .input_e(sel_0),
    .output_y(mux_com_out[5])
    );

 and_gate5_code U_AND_GATE3 (
    .input_a(input_d2),
    .input_b(mux_com_out[3]),
    .input_c(mux_com_out[2]),
    .input_d(sel_1),
    .input_e(mux_com_out[0]),
    .output_y(mux_com_out[6])
    );

and_gate5_code U_AND_GATE4 (
    .input_a(input_d3),
    .input_b(mux_com_out[3]),
    .input_c(mux_com_out[2]),
    .input_d(sel_1),
    .input_e(sel_0),
    .output_y(mux_com_out[7])
    );

and_gate5_code U_AND_GATE5 (
    .input_a(input_d4),
    .input_b(mux_com_out[3]),
    .input_c(sel_2),
    .input_d(mux_com_out[1]),
    .input_e(mux_com_out[0]),
    .output_y(mux_com_out[8])
    );

and_gate5_code U_AND_GATE6 (
    .input_a(input_d5),
    .input_b(mux_com_out[3]),
    .input_c(sel_2),
    .input_d(mux_com_out[1]),
    .input_e(sel_0),
    .output_y(mux_com_out[9])
    );

and_gate5_code U_AND_GATE7 (
    .input_a(input_d6),
    .input_b(mux_com_out[3]),
    .input_c(sel_2),
    .input_d(sel_1),
    .input_e(mux_com_out[0]),
    .output_y(mux_com_out[10])
    );

and_gate5_code U_AND_GATE8 (
    .input_a(input_d7),
    .input_b(mux_com_out[3]),
    .input_c(sel_2),
    .input_d(sel_1),
    .input_e(sel_0),
    .output_y(mux_com_out[11])
    );

 and_gate5_code U_AND_GATE9 (
    .input_a(input_d8),
    .input_b(sel_3),
    .input_c(mux_com_out[2]),
    .input_d(mux_com_out[1]),
    .input_e(mux_com_out[0]),
    .output_y(mux_com_out[12])
    );

 and_gate5_code U_AND_GATE10 (
    .input_a(input_d9),
    .input_b(sel_3),
    .input_c(mux_com_out[2]),
    .input_d(mux_com_out[1]),
    .input_e(sel_0),
    .output_y(mux_com_out[13])
    );

 and_gate5_code U_AND_GATE11 (
    .input_a(input_d10),
    .input_b(sel_3),
    .input_c(mux_com_out[2]),
    .input_d(sel_1),
    .input_e(mux_com_out[0]),
    .output_y(mux_com_out[14])
    );

 and_gate5_code U_AND_GATE12(
    .input_a(input_d11),
    .input_b(sel_3),
    .input_c(mux_com_out[2]),
    .input_d(sel_1),
    .input_e(sel_0),
    .output_y(mux_com_out[15])
    );

 and_gate5_code U_AND_GATE13 (
    .input_a(input_d12),
    .input_b(sel_3),
    .input_c(sel_2),
    .input_d(mux_com_out[1]),
    .input_e(mux_com_out[0]),
    .output_y(mux_com_out[16])
    );

 and_gate5_code U_AND_GATE14 (
    .input_a(input_d13),
    .input_b(sel_3),
    .input_c(sel_2),
    .input_d(mux_com_out[1]),
    .input_e(sel_0),
    .output_y(mux_com_out[17])
    );

 and_gate5_code U_AND_GATE15 (
    .input_a(input_d14),
    .input_b(sel_3),
    .input_c(sel_2),
    .input_d(sel_1),
    .input_e(mux_com_out[0]),
    .output_y(mux_com_out[18])
    );

 and_gate5_code U_AND_GATE16 (
    .input_a(input_d15),
    .input_b(sel_3),
    .input_c(sel_2),
    .input_d(sel_1),
    .input_e(sel_0),
    .output_y(mux_com_out[19])
    );

 // 8 in OR GATE Instantiation Template

  or_gate8_code U_OR_GATE17 (
    .input_a(mux_com_out[4]),
    .input_b(mux_com_out[5]),
    .input_c(mux_com_out[6]),
    .input_d(mux_com_out[7]),
    .input_e(mux_com_out[8]),
    .input_f(mux_com_out[9]),
    .input_g(mux_com_out[10]),
    .input_h(mux_com_out[11]),
    .output_y(mux_com_out[20])
    );


 or_gate8_code U_OR_GATE18 (
    .input_a(mux_com_out[12]),
    .input_b(mux_com_out[13]),
    .input_c(mux_com_out[14]),
    .input_d(mux_com_out[15]),
    .input_e(mux_com_out[16]),
    .input_f(mux_com_out[17]),
    .input_g(mux_com_out[18]),
    .input_h(mux_com_out[19]),
    .output_y(mux_com_out[21])
    );

// OR Gate Instantiation Template

or_gate_code U_OR_GATE1 (
    .input_a(mux_com_out[20]),
    .input_b(mux_com_out[21]),
    .output_y(output_y)
    );


endmodule


// 5IN AND Gate  Verilog code

// Verilog code for 5 input AND GATE
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: RED- BLUE
// Engineer:
//
// Create Date:    11:47:42 11/09/2016
// Designer Name:  Madhu Krishna
// Module Name:    and_gate5_code
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module and_gate5_code(input_a,
                                        input_b,
                                    input_c,
input_d,
input_e,
output_y);

  //INPUTS
  input  input_a;
  input  input_b;
  input  input_c;
  input  input_d;
  input  input_e;

  //OUTPUT
    output  output_y;

 // Declaration of and gate

   assign  output_y = (input_a & input_b & input_c & input_d & input_e);

endmodule



--------------------------------------------------------------------------------------------------------------------------------------------------

// Verilog code for 16:1 Multiplexer using Behavioural
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:  RED-BLUE
// Engineer:
//
// Create Date:    11:04:27 11/09/2016
// Designer Name:  Madhu Krishna
// Module Name:    mux16_1_beh1
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
 module  mux16_1_beh1( input_d0,
        input_d1,
input_d2,
input_d3,
input_d4,
input_d5,
input_d6,
input_d7,
input_d8,
input_d9,
input_d10,
input_d11,
input_d12,
input_d13,
input_d14,
input_d15,
sel_0,
sel_1,
sel_2,
sel_3,
output_y);
  //INPUTS
   input  input_d0;
input  input_d1;
input  input_d2;
input  input_d3;
input  input_d4;
input  input_d5;
input  input_d6;
input  input_d7;
input  input_d8;
input  input_d9;
   input  input_d10;
input  input_d11;
input  input_d12;
input  input_d13;
input  input_d14;
input  input_d15;
input  sel_0;
input  sel_1;
input  sel_2;
input  sel_3;

  //OUTPUT
    output output_y;
wire [3:0]con_out;
reg    output_y;

  //Declaration of 16:1 Multiplexer

    assign con_out = { sel_3, sel_2, sel_1, sel_0};

    always @(*) begin
  if (con_out == 4'b0000) begin
 output_y <= input_d0;
          end else if (con_out == 4'b0001) begin
                 output_y <= input_d1;
          end else if (con_out == 4'b0010) begin
                 output_y <= input_d2;
  end else if (con_out == 4'b0011) begin
                 output_y <= input_d3;
  end else if (con_out == 4'b0100) begin
                 output_y <= input_d4;
  end else if (con_out == 4'b0101) begin
                 output_y <= input_d5;
  end else if (con_out == 4'b0110) begin
                 output_y <= input_d6;
  end else if (con_out == 4'b0111) begin
                 output_y <= input_d7;
  end else if (con_out == 4'b1000) begin
                 output_y <= input_d8;
  end else if (con_out == 4'b1001) begin
                output_y <= input_d9;
  end else if (con_out == 4'b1010) begin
               output_y <= input_d10;
 end else if (con_out == 4'b1011) begin
              output_y <= input_d11;
 end else if (con_out == 4'b1100) begin
              output_y <= input_d12;
 end else if (con_out == 4'b1101) begin
              output_y <= input_d13;
 end else if (con_out == 4'b1110) begin
             output_y <= input_d14;
 end else begin
            output_y <= input_d15;
        end
   end
 endmodule

--------------------------------------------------------------------------------------------------------------------------------------------

/// Verilog code for 16:1 Multiplexer using Behavioural
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:  RED-BLUE
// Engineer:
//
// Create Date:    11:04:27 11/09/2016
// Designer Name:  Madhu Krishna
// Module Name:    mux16_1_beh2
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
 module  mux16_1_beh2( input_d0,
        input_d1,
input_d2,
input_d3,
input_d4,
input_d5,
input_d6,
input_d7,
input_d8,
input_d9,
input_d10,
input_d11,
input_d12,
input_d13,
input_d14,
input_d15,
sel_0,
sel_1,
sel_2,
sel_3,
output_y);
  //INPUTS
  input  input_d0;
input  input_d1;
input  input_d2;
input  input_d3;
input  input_d4;
input  input_d5;
input  input_d6;
input  input_d7;
input  input_d8;
input  input_d9;
  input  input_d10;
input  input_d11;
input  input_d12;
input  input_d13;
input  input_d14;
input  input_d15;
input  sel_0;
input  sel_1;
input  sel_2;
input  sel_3;

  //OUTPUT
    output output_y;
wire [3:0]con_out;
reg    output_y;

  //Declaration of 16:1 Multiplexer

    assign con_out = { sel_3, sel_2, sel_1, sel_0};

    always @(*) begin
  case (con_out)
        4'b0000:output_y = input_d0;
        4'b0001:output_y = input_d1;
        4'b0010:output_y = input_d2;
        4'b0011:output_y = input_d3;
        4'b0100:output_y = input_d4;
        4'b0101:output_y = input_d5;
        4'b0110:output_y = input_d6;
        4'b0111:output_y = input_d7;
        4'b1000:output_y = input_d8;
        4'b1001:output_y = input_d9;
        4'b1010:output_y = input_d10;
        4'b1011:output_y = input_d11;
        4'b1100:output_y = input_d12;
        4'b1101:output_y = input_d13;
        4'b1110:output_y = input_d14;
        4'b1111:output_y = input_d15;
        default:output_y = 4'b0000;
      endcase
    end
endmodule

-----------------------------------------------------------------------------------------------------------------------------------------------