MULTIPLEXER

 

Multiplexer

 

AIM: Develop HDL Program for 2:1 Multiplexer, 4:1 Multiplexer, 8:1 multiplexer, 16:1 multiplexer

 

Tools/Software Required:

1.                                                         Personal Computer.

2.                                                         Vivado 2019.2 Software

3.                                                         Verilog/VHDL

THEORY:

Multiplexer generally means many into one. A multiplexer is a circuit with many Inputs but only one output. By applying control signals we can steer any input to the output. The circuit has n-input signal, control signal & one output signal. Where 2n= m. One of the popular multiplexer is the 16 to 1 multiplexer, which has 16 input bits, 4 control bits & 1 output bit. Multiplexer (or mux) is a device that selects one of several analog or digital input signals and forwards the selected input into a single line. A multiplexer of 2n inputs has n select lines, which are used to select which input line to send to the output. An electronic multiplexer can be considered as a multiple-input, single-output switch. Multiplexers are mainly used to increase the amount of data that can be sent over the network within a certain amount of time and bandwidth. A multiplexer is also called a data selector

 

Procedure:

1.                  Click on Vivado2017.2 icon.A window is opened.

2.                  Click on File→New Project→Press Next→Give the Project name and Project Location→Press Next→Choose Project Type as RTL Project→Press Next→

3.                  Create File→File Type: VHDL\VERILOG File Name→ Filename→Press Next→ Press Next→ Press Next→Finish.

4.                  Write the module definition by giving input ports and output ports  →Press Ok.

5.                  Two workspaces are opened with names Project Manager and Flow Navigator

6.                  In Project Manager  →Click on Sources →Design Sources→File→A window is opened with File name. Write the Program in the File →Click on Save.

7.                  In Flow Navigator→Click on Simulation  →Run Simulation→Run Behavioural Simulation→A window is opened with name “untitled1”→Force Constants→Run for 100 µs. Observe the simulation results for various combinations by clicking on Zoom Out.

VHDL Code for 2:1 Multiplexer

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity mux21 is

    Port ( sel : in STD_LOGIC;

           input : in STD_LOGIC_VECTOR (0 to 1);

           yout : out STD_LOGIC);

end mux21;

architecture Behavioral of mux21 is

begin

process(input,sel)

begin

case(sel) is 

when '0' => yout <= input(0);

when '1' => yout <= input(1);

when others=> null;

end case;

end process;

end Behavioral;

RTL Schematic for 2:1 Multiplexer





Simulation Waveform for 2:1 Multiplexer





Verilog Code for 2:1 Multiplexer

//2x1 MUX

module muxx2x1( A, B, S, Z);

input wire A, B, S;

output reg Z;

always @(A or B or S)

begin

if(S)

Z= B;

else

Z=A;

end

endmodule

RTL SCHEMATIC for 2:1 Multiplexer



Simulation Waveform for 2:1 Multiplexer



VHDL Code for 4:1 Multiplexer

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity mux41 is

    Port ( input : in STD_LOGIC_VECTOR (0 to 3);

           sel : in STD_LOGIC_VECTOR (0 to 1);

           yout : out STD_LOGIC);

end mux41;

architecture Behavioral of mux41 is

begin

process(input,sel)

begin

case(sel) is

when "00" => yout<=input(0);

when "01" => yout<=input(1);

when "10" => yout<=input(2);

when "11" => yout<=input(3);

when others=>null;

end case;

end process;

end Behavioral;

RTL Schematics for 4:1 Multiplexer




Simulation Waveform for 4:1 Multiplexer





Verilog code for 4:1  MUX using 2:1 MUX

 

module muxx4x1(A,B,C,D,S0,S1,S2,Z);

    input A,B,C,D,S0,S1,S2;

    output Z;

    wire y0,y1;

 muxx2x1 x1(A,B,S0,y0);

 muxx2x1 x2(C,D,S1,y1);

 muxx2x1 x3(y0,y1,S2,Z);

endmodule

RTL SCHEMATICS for 4:1 Multiplexer





Simulation Waveform for 4:1 Multiplexer


Uploading: 68905 of 68905 bytes uploaded.



 

      Verilog Code for 4:1 Multiplexer

 

module MUXX421(A,B,C,D,S0,S1,Y);

    input wire A,B,C,D,S0,S1;

    output reg Y;

always @(A or B or C or D or S0 or S1)

begin

if(S0==0 && S1==0)

Y= A;

else if(S0==0 && S1==1)

Y=B;

else if(S0==1 && S1==0)

Y=C;

else

Y=D;

end

endmodule

RTL Schematic for 4:1 Multiplexer





Simulation Waveform for 4:1 Multiplexer





VHDL Code for 8:1 Multiplexer

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity mux81 is

    Port ( inp : in STD_LOGIC_VECTOR (0 to 7);

           sec : in STD_LOGIC_VECTOR (0 to 2);

           yout : out STD_LOGIC);

end mux81;

architecture Behavioral of mux81 is

begin

process(inp,sec)

begin

case (sec) is

when "000" => yout<=inp(0);

when "001" => yout<=inp(1);

when "010" => yout<=inp(2);

when "011" => yout<=inp(3);

when "100" => yout<=inp(4);

when "101" => yout<=inp(5);

when "110" => yout<=inp(6);

when "111" => yout<=inp(7);

when others=>null;

end case;

end process;

end Behavioral;

 

RTL Schematics for 8:1 Multiplexer



Simulation Waveform for 8:1 Multiplexer

 


Verilog program for 8:1 Multiplexer

module muxx8x1(d0,d1,d2,d3,d4,d5,d6,d7,sel,out);

input d0,d1,d2,d3,d4,d5,d6,d7;

input [2:0] sel;

output reg out;

always@(sel)

begin

case(sel)

3'b000:out=d0;

3'b001:out=d1;

3'b010:out=d2;

3'b011:out=d3;

3'b100:out=d4;

3'b101:out=d5;

3'b110:out=d6;

3'b111:out=d7;

endcase

end

endmodule

 

RTL Schematic for 8:1 Multiplexer


 

 

Simulation Waveform for 8:1 Multiplexer

 

 


VHDL Code for 16:1 Multiplexer

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity mux161 is

    Port ( inp : in STD_LOGIC_VECTOR (0 to 15);

           sel : in STD_LOGIC_VECTOR (0 to 3);

           yout : out STD_LOGIC);

end mux161;

architecture Behavioral of mux161 is

begin

process(inp,sel)

begin

case (sel) is

when "0000" => yout<=inp(0);

when "0001" => yout<=inp(1);

when "0010" => yout<=inp(2);

when "0011" => yout<=inp(3);

when "0100" => yout<=inp(4);

when "0101" => yout<=inp(5);

when "0110" => yout<=inp(6);

when "0111" => yout<=inp(7);

when "1000" => yout<=inp(8);

when "1001" => yout<=inp(9);

when "1010" => yout<=inp(10);

when "1011" => yout<=inp(11);

when "1100" => yout<=inp(12);

when "1101" => yout<=inp(13);

when "1110" => yout<=inp(14);

when "1111" => yout<=inp(15);

when others=>null;

end case;

end process;

end Behavioral;

RTL Schematic for 16:1 Multiplexer

 


Simulation Waveform for 16:1 Multiplexer



Verilog code for 16:1 MUX using 4:1 MUX

module muxx16x1(A,S,Z);

    input [1:16]A;

    input [1:10]S;

    output Z;

    wire y1,y2,y3,y4;

 MUXX421 x1(A[1],A[2],A[3],A[4],S[1],S[2],y1);

 MUXX421 x2(A[5],A[6],A[7],A[8],S[3],S[4],y2);

 MUXX421 x3(A[9],A[10],A[11],A[12],S[5],S[6],y3);

 MUXX421 x4(A[13],A[14],A[15],A[16],S[7],S[8],y4);

 MUXX421 x5(y1,y2,y3,y4,S[9],S[10],Z);

endmodule

RTL Schematic for 16:1 Multiplexer



RTL Schematic for 2:1 Multiplexer Coined as “MUXX421” in 16:1 Multiplexer

 


Simulation Waveform for 16:1 Multiplexer

 


 

Result:

The 2:1,4:1,8:1,16:1 Multiplexers are simulated using Vivado2017.2 software on an I3 Processor with 64-bit Operating System.

 

Comments

Popular posts from this blog

Decoder

Realization of Logic gates using Hardware Description Language