0% found this document useful (0 votes)
98 views17 pages

Design of Multiplexer, Decoder and Comparator: Expt - No:03 Date

The document describes designing a multiplexer, decoder, and comparator using VHDL and Verilog. It includes the algorithms, programs for each component in both languages, and verifies the output waveforms. Programs are written for a 4-bit multiplexer, 4-bit decoder, and 4-bit comparator. The design is implemented and tested using Xilinx ISE 9.1i software.

Uploaded by

hakkem b
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
98 views17 pages

Design of Multiplexer, Decoder and Comparator: Expt - No:03 Date

The document describes designing a multiplexer, decoder, and comparator using VHDL and Verilog. It includes the algorithms, programs for each component in both languages, and verifies the output waveforms. Programs are written for a 4-bit multiplexer, 4-bit decoder, and 4-bit comparator. The design is implemented and tested using Xilinx ISE 9.1i software.

Uploaded by

hakkem b
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 17

Expt.

No:03 DESIGN OF MULTIPLEXER, DECODER AND COMPARATOR


Date:

AIM:
To design a multiplexer, decoder and comparator using VHDL and verilog.

SOFTWARE REQUIRED:
Xilinx ISE 9.1i.

ALGORITHM:
STEP 1: Open Xilinx ISE 9.1i software.
STEP 2: Create a new project using File New project.
STEP 3: Type the program and save the project.
STEP 4: In synthesis/implementation double click synthesize-XST to check syntax.
STEP 5: Choose behavioral simulation.
STEP 6: In create new sourceTest bench waveform and save the test bench waveform.
STEP 7: In Xilinx ISE SimulatorSimulate Behavioral Model.
STEP 8: Verify the output waveform.

PROGRAM FOR MULTIPLEXER IN VHDL:


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity multiplexer is
Port (i0, i1 : in STD_LOGIC;
i2 : in STD_LOGIC;
i3 : in STD_LOGIC;

i4 : in STD_LOGIC;
i5 : in STD_LOGIC;
i6 : in STD_LOGIC;
i7 : in STD_LOGIC;
i8 : in STD_LOGIC;
i9 : in STD_LOGIC;
i10 : in STD_LOGIC;
i11 : in STD_LOGIC;
i12 : in STD_LOGIC;
i13 : in STD_LOGIC;
i14 : in STD_LOGIC;
i15 : in STD_LOGIC;
s : in STD_LOGIC_VECTOR (3 downto 0);
y : out STD_LOGIC);
end multiplexer;
architecture behavioral of multiplexer is
begin
process(i0,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,s)
begin
case s is
when "0000"=>
y<=i0;
when "0001"=>
y<=i1;
when "0010"=>

y<=i2;
when "0011"=>
y<=i3;
when "0100"=>
y<=i4;
when "0101"=>
y<=i5;
when "0110"=>
y<=i6;
when "0111"=>
y<= i7;
when "1000"=>
y<= i8;
when "1001"=>
y<= i9;
when "1010"=>
y<= i10;
when "1011"=>
y<= i11;
when "1100"=>
y<= i12;
when "1101"=>
y<= i13;
when "1110"=>
y<= i14;

when "1111"=>
y<= i15;
when others=>null;
end case;
end process;
end Behavioral;

OUTPUT OF MULTIPLEXER IN VHDL:

PROGRAM FOR MULTIPLEXER IN VERILOG:


module mux(i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, s0, s1, s2, s3, z);
input i0;
input i1;
input i2;
input i3;
input i4;
input i5;
input i6;
input i7;
input i8;
input i9;
input i10;
input i11;
input i12;
input i13;
input i14;
input i15;
input s0;
input s1;
input s2;
input s3;
output z;
reg op;

always@(i0 or i1 or i2 or i3 or i4 or i5 or i6 or i7 or i8 or i9 or i10 or i11 or i12 or i13 or i14 or


i15 or s0 or s1 or s2 or s3)
begin
case({s0,s1,s2,s3})
4'b0000:op<=i0;
4'b0001:op<=i1;
4'b0010:op<=i2;
4'b0011:op<=i3;
4'b0100:op<=i4;
4'b0101:op<=i5;
4'b0110:op<=i6;
4'b0111:op<=i7;
4'b1000:op<=i8;
4'b1001:op<=i9;
4'b1010:op<=i10;
4'b1011:op<=i11;
4'b1100:op<=i12;
4'b1101:op<=i13;
4'b1110:op<=i14;
4'b1111:op<=i15;
default:op<=op;
endcase
end
assign z=op;
endmodule

OUTPUT OF MULTIPLEXER IN VERILOG:

PROGRAM FOR DECODER IN VHDL:


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity dec is
Port ( inp : in STD_LOGIC_VECTOR (3 downto 0);
oup : out STD_LOGIC_VECTOR (15 downto 0));
end dec;
architecture Behavioral of dec is
begin
process(inp)
begin
case inp is
when "0000"=>
oup<="0000000000000001";
when "0001"=>
oup<="0000000000000010";
when "0010"=>
oup<="0000000000000100";
when "0011"=>
oup<="0000000000001000";
when "0100"=>
oup<="0000000000010000";
when "0101"=>

oup<="0000000000100000";
when "0110"=>
oup<="0000000001000000";
when "0111"=>
oup<= "0000000010000000";
when "1000"=>
oup <= "0000000100000000";
when "1001"=>
oup<= "0000001000000000";
when "1010"=>
oup <= "0000010000000000";
when "1011"=>
oup <= "0000100000000000";
when "1100"=>
oup <= "0001000000000000";
when "1101"=>
oup <= "0010000000000000";
when "1110"=>
oup <= "0100000000000000";
when "1111"=>
oup <= "1000000000000000";
when others=>
oup<="----------------";
end case;
end process; end Behavioral;

OUTPUT OF DECODER IN VHDL:

PROGRAM FOR DECODER IN VERILOG:


module decoder(x, y, z, w, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15);
input x;
input y;
input z;
input w;
output d0;
output d1;
output d2;
output d3;
output d4;
output d5;
output d6;
output d7;
output d8;
output d9;
output d10;
output d11;
output d12;
output d13;
output d14;
output d15;
and
(d0,xbar,ybar,zbar,wbar),(d1,xbar,ybar,zbar,w),(d2,xbar,ybar,z,wbar),(d3,xbar,ybar,z,w),
(d4,xbar,y,zbar,wbar),(d5,xbar,y,zbar,w),(d6,xbar,y,z,wbar),(d7,xbar,y,z,w),

(d8,x,ybar,zbar,wbar),(d9,x,ybar,zbar,w),(d10,x,ybar,z,wbar),(d11,x,ybar,z,w),
(d12,x,y,zbar,wbar),(d13,x,y,zbar,w),(d14,x,y,z,wbar),(d15,x,y,z,w);
not
(xbar,x),
(ybar,y),
(zbar,z),
(wbar,w);
endmodule

OUTPUT OF DECODER IN VERILOG:

PROGRAM FOR COMPARATOR IN VHDL:


use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity comparator is
Port ( a : in STD_LOGIC_VECTOR (3 downto 0);
b : in STD_LOGIC_VECTOR (3 downto 0);
e : out STD_LOGIC;
g : out STD_LOGIC;
l : out STD_LOGIC);
end comparator;
architecture Behavioral of comparator is
begin
process(a,b)
begin
if(a=b)then
e<='1';
g<='0';
l<='0';
elsif(a<b)then
e<='0';
g<='0';
l<='1';
else
e<='0';
g<='1';
l<='0';

end if;
end process;
end Behavioral;

OUTPUT OF COMPARATOR IN VHDL:

PROGRAM FOR COMPARATOR IN VERILOG:


module comparator(a3, a2, a1, a0, b3, b2, b1, b0, e, g, l);
input a3;
input a2;
input a1;
input a0;
input b3;
input b2;
input b1;
input b0;
output e;
output g;
output l;
wire e3,e2,e1,e0,g3,g2,g1,g0,l3,l2,l1,l0;
assign e3= a3 ~^ b3;
assign e2= a2 ~^ b2;
assign e1= a1 ~^ b1;
assign e0= a0 ~^ b0;
assign e= e3 & e2 & e1 &e0;
assign g3=a3 & (~b3);
assign g2=e3 & a2 & (~b2);
assign g1=e3 & e2 &a1 & (~b1);
assign g0=e3 & e2 &e1 & a0 & (~b0);
assign g= g3|g2|g1|g0;
assign l3=(~a3) & b3;

assign l2=e3 & (~a2) & b2;


assign l1=e3 & e2 & (~a1) & b1;
assign l0=e3 & e2 & e1 & (~a0) & b0;
assign l=l3|l2|l1|l0;
endmodule

OUTPUT OF COMPARATOR IN VERILOG:

RESULT:
Multiplexers, Decoders and Comparators are designed using VHDL and Verilog and the output
Waveforms are verified.

You might also like