VHDL Programs
VHDL Programs
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entitylogic_gates is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
Y : out STD_LOGIC);
endlogic_gates;
architectureBehavioral of logic_gates is
begin
P1: PROCESS (A,B)
BEGIN
IF A = '0' AND B = '0' THEN
Y <= '0' ;
ELSIF A = '0' AND B = '1' THEN
Y <= '0' ;
ELSIF A = '1' AND B = '0' THEN
Y <= '0' ;
ELSE
Y <= '1';
END IF;
END PROCESS P1;
endBehavioral;
__________________________________________________________________________________
AND GATE using IF ELSE
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entitylogic_gates is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
Y : out STD_LOGIC);
endlogic_gates;
architectureBehavioral of logic_gates is
begin
P1: PROCESS (A,B)
BEGIN
ELSE
Y <= '0';
END IF;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entitylogic_gates is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
Y : out STD_LOGIC);
endlogic_gates;
architectureBehavioral of logic_gates is
begin
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entitylogic_gates is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
Y : out STD_LOGIC);
endlogic_gates;
architectureBehavioral of logic_gates is
begin
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity HALD_ADDER is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
S : out STD_LOGIC;
C : out STD_LOGIC);
end HALD_ADDER;
architectureBehavioral of HALD_ADDER is
begin
S <= A XOR B;
C <= A AND B;
endBehavioral;
HALF ADDER using BEHAVIOURAL MODELLING (if else ladder)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity HALD_ADDER is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
S : out STD_LOGIC;
C : out STD_LOGIC);
end HALD_ADDER;
End Behavioral;
FULL ADDER using DATA FLOW (simple Logical Equations)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity FULL_ADDER is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
Cin : in STD_LOGIC;
S : out STD_LOGIC;
C : out STD_LOGIC);
end FULL_ADDER;
begin
end Behavioral;
FULL ADDER using BEHAVIOUR MODELLING (if else ladder)
**********************************************************************************
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity FULL_ADDER is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
Cin : in STD_LOGIC;
S : out STD_LOGIC;
C : out STD_LOGIC);
end FULL_ADDER;
ELSE
S <= '1';
C <= '1';
END IF;
END PROCESS P1;
End Behavioral;
HALF SUBTRACTOR using DATA FLOW ( Logical Equations)
**********************************************************************************
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity HALF_SUB is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
D : out STD_LOGIC;
BR : out STD_LOGIC);
end HALF_SUB;
begin
D <= A XOR B;
BR <= (NOT A) AND B ;
End Behavioral;
HALF SUBTRACTOR using BEHAVIOURAL MODELLING (if else ladder)
**********************************************************************************
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity HALF_SUB is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
D : out STD_LOGIC;
BR : out STD_LOGIC);
end HALF_SUB;
begin
P1: PROCESS (A,B)
BEGIN
IF A ='0' AND B ='0' THEN
D <='0';
BR <='0';
ELSIF A ='0' AND B ='1' THEN
D <='1';
BR <='1';
ELSIF A ='1' AND B ='0' THEN
D <='1';
BR <='0';
ELSE
D <='0';
BR <='0';
END IF;
END PROCESS P1;
End Behavioral;
entity FL_SB is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
Bin : in STD_LOGIC;
D : out STD_LOGIC;
Bout : out STD_LOGIC);
end FL_SB;
begin
End Behavioral;
FULL SUBTRACTOR using BEHAVIOURAL MODELLING (if else ladder)
**********************************************************************************
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity FL_SB is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
Bin : in STD_LOGIC;
D : out STD_LOGIC;
Bout : out STD_LOGIC);
end FL_SB;
ELSE
D <= '1';
Bout <= '1';
END IF;
END PROCESS P1;
End Behavioral;
8:1 MULTIPLEXER using DATA FLOW MODELLING ( When Else)
**********************************************************************************
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity MUX_81 is
Port ( D : in STD_LOGIC_VECTOR (7 downto 0);
SEL : in STD_LOGIC_VECTOR (2 downto 0);
Y : out STD_LOGIC);
end MUX_81;
begin
End Behavioral;
8:1 MULTIPLEXER using DATA FLOW MODELLING (With Select)
**********************************************************************************
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity MUX_81 is
Port ( D : in STD_LOGIC_VECTOR (7 downto 0);
SEL : in STD_LOGIC_VECTOR (2 downto 0);
Y : out STD_LOGIC);
end MUX_81;
begin
End Behavioral;
8:1 MULTIPLEXER using Behavioural Modelling (if elseif ladder)
**********************************************************************************
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity MUX_81 is
Port ( D : in STD_LOGIC_VECTOR (7 downto 0);
SEL : in STD_LOGIC_VECTOR (2 downto 0);
Y : out STD_LOGIC);
end MUX_81;
begin
P1 : PROCESS (SEL)
BEGIN
CASE SEL IS
END CASE;
END PROCESS P1;
End Behavioral;
entity DMUX_18 is
Port ( D : in STD_LOGIC;
SEL : in STD_LOGIC_VECTOR (02 downto 0);
Y : out STD_LOGIC_VECTOR (07 downto 0));
end DMUX_18;
begin
Y(0) <= D WHEN SEL = "000" ELSE '0';
Y(1) <= D WHEN SEL = "001" ELSE '0';
Y(2) <= D WHEN SEL = "010" ELSE '0';
Y(3) <= D WHEN SEL = "011" ELSE '0';
Y(4) <= D WHEN SEL = "100" ELSE '0';
Y(5) <= D WHEN SEL = "101" ELSE '0';
Y(6) <= D WHEN SEL = "110" ELSE '0';
Y(7) <= D WHEN SEL = "111" ELSE '0';
End Behavioral;
1:8 DEMULTIPLEXER using Behavioural Modelling (Case statement)
**********************************************************************************
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity NEW1 is
Port ( D : in STD_LOGIC;
SEL : in STD_LOGIC_VECTOR (02 downto 0);
Y0 : out STD_LOGIC;
Y1 : out STD_LOGIC;
Y2 : out STD_LOGIC;
Y3 : out STD_LOGIC;
Y4 : out STD_LOGIC;
Y5 : out STD_LOGIC;
Y6 : out STD_LOGIC;
Y7 : out STD_LOGIC);
end NEW1;
entity D_FF is
Port ( D : in STD_LOGIC;
CLK : in STD_LOGIC;
RESET : in STD_LOGIC;
Q : out STD_LOGIC);
end D_FF;
End Behavioral;
T Flip Flop using Behavioural Modelling
**********************************************************************************
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity TFF is
Port ( T : in STD_LOGIC;
CLK : in STD_LOGIC;
RESET : in STD_LOGIC;
DOUT : out STD_LOGIC);
end TFF;
begin
P1 : PROCESS (T, CLK, RESET)
VARIABLE M : STD_LOGIC := '0' ;
BEGIN
IF (RESET = '1') THEN M := '0';
ELSIF CLK'EVENT AND CLK = '1' THEN
IF (T = '1') THEN M := NOT M;
END IF;
END IF;
DOUT <= M;
End Behavioral;
entity DECODER_2_4 is
Port ( I : in STD_LOGIC_VECTOR (01 downto 0);
Z : out STD_LOGIC_VECTOR (03 downto 0));
end DECODER_2_4;
begin
-- 2:4 DECODER USING CASE
PROCESS (I)
BEGIN
CASE I IS
WHEN "00" => Z<= "0001" ;
WHEN "01" => Z<= "0010" ;
WHEN "10" => Z<= "0100" ;
WHEN OTHERS => Z <= "1000";
END CASE;
END PROCESS;
End Behavioral;
3:8 Decoder using Behavioural Modelling
**********************************************************************************
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Decoder_8_3 is
Port ( I : in STD_LOGIC_VECTOR (02 downto 0);
Z : out STD_LOGIC_VECTOR (07 downto 0));
end Decoder_8_3;
END CASE;
END Process;
End Behavioral;
entity ENCODER_4_2 is
Port ( DIN : in STD_LOGIC_VECTOR (03 downto 0);
Q : out STD_LOGIC_VECTOR (01 downto 0));
end ENCODER_4_2;
begin
PROCESS ( DIN )
BEGIN
CASE DIN IS
End Behavioral;
8:3 Encoder using Behavioural Modelling
**********************************************************************************
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ENCODER_8_3 is
Port ( Din : in STD_LOGIC_VECTOR (07 downto 0);
Q : out STD_LOGIC_VECTOR (02 downto 0));
end ENCODER_8_3;
entity BIN2GRAY is
Port ( Bin : in STD_LOGIC_VECTOR (03 downto 0);
Gout : out STD_LOGIC_VECTOR (03 downto 0));
end BIN2GRAY;
begin
End Behavioral;
4 Bit ALU using Behavioural Modelling
**********************************************************************************
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ALU4_BIT is
Port ( A : in STD_LOGIC_VECTOR (03 downto 0);
B : in STD_LOGIC_VECTOR (03 downto 0);
Y : out STD_LOGIC_VECTOR (03 downto 0);
SEL : in STD_LOGIC_VECTOR (02 downto 0));
end ALU4_BIT;
END CASE;
END PROCESS P1;
End Behavioral;