Thursday, 10 November 2016

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

No comments:

Post a Comment