Wednesday, 9 November 2016

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

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

1 comment: