2. HDL Lab Report
1
Table of Contents 1
1. a D LATCH 2
b D FLIP FLOP 8
2.a JK FLIP FLOP 13
b. T FLIP FLOP 22
3. a 4X1 MULTIPLEXER IN STRUCTURAL MODEL 28
b. 4X1 MULTIPLEXER IN DATA FLOW MODEL 34
4. FULL ADDER 38
5. 2 TO 4 DECODER 46
6. SEVEN SEGMENT DISPLAY 50
7. 4X2 PRIORITY ENCODER 55
8. SYNCHRONOUS COUNTER 60
9. RING COUNTER 68
10. JHONSON COUNTER 75
11. SHIFT REGISTER 80
12. a SEQUENCE DETECTOR FOR 010 USING MOORE MECHINE 87
b SEQUENCE DETECTOR FOR 010 USING MEALY MECHINE 93
c SEQUENCE DETECTOR FOR 110 OR 0011 99
13. XS-3 TO BCD CONVERTER 108
14. TRAFFIC LIGHT CONTROLLER 114
3. HDL Lab Report
2
1.a D LATCH
AIM: To design a D latch using vhdl modelling.
THEORY:
D latch is similar to D flip flop except that it changes the output in the active high phase of input
clock(enable).
TRUTH TABLE:
D Q
0 0
1 1
SCHEMATIC DIAGRAM:
VHDL CODE:
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
4. HDL Lab Report
3
ENTITY D_LATCH IS
PORT ( D,CLOCK,PR,CLR : IN STD_LOGIC;
Q,QBAR : OUT STD_LOGIC);
END D_LATCH;
ARCHITECTURE BEHAVIORAL OF D_LATCH IS
SIGNAL S:STD_LOGIC;
BEGIN
PROCESS(CLOCK,PR,CLR,D)
BEGIN
IF(CLR='1' AND PR='0') THEN S<='0';
ELSIF(CLR='0' AND PR='1') THEN S<='1';
ELSIF(CLR='0' AND PR='0') THEN
IF(CLOCK='1') THEN S<=D;
END IF;
END IF;
END PROCESS;
Q<=S;
QBAR<= NOT S;
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
5. HDL Lab Report
4
ENTITY TB_D_LATCH IS
END TB_D_LATCH;
ARCHITECTURE BEHAVIOR OF TB_D_LATCH IS
-- COMPONENT DECLARATION FOR THE UNIT UNDER TEST (UUT)
COMPONENT D_LATCH
PORT(
D : IN STD_LOGIC;
CLOCK : IN STD_LOGIC;
PR : IN STD_LOGIC;
CLR : IN STD_LOGIC;
Q : OUT STD_LOGIC;
QBAR : OUT STD_LOGIC
);
END COMPONENT;
--INPUTS
SIGNAL D : STD_LOGIC := '0';
SIGNAL CLOCK : STD_LOGIC := '0';
SIGNAL PR : STD_LOGIC := '0';
SIGNAL CLR : STD_LOGIC := '0';
--OUTPUTS
SIGNAL Q : STD_LOGIC;
SIGNAL QBAR : STD_LOGIC;
6. HDL Lab Report
5
-- CLOCK PERIOD DEFINITIONS
CONSTANT CLOCK_PERIOD : TIME := 10 NS;
BEGIN
-- INSTANTIATE THE UNIT UNDER TEST (UUT)
UUT: D_LATCH PORT MAP (
D => D,
CLOCK => CLOCK,
PR => PR,
CLR => CLR,
Q => Q,
QBAR => QBAR
);
-- CLOCK PROCESS DEFINITIONS
CLOCK_PROCESS :PROCESS
BEGIN
CLOCK <= '0';
WAIT FOR CLOCK_PERIOD/2;
CLOCK <= '1';
WAIT FOR CLOCK_PERIOD/2;
END PROCESS;
-- STIMULUS PROCESS
STIM_PROC: PROCESS
BEGIN
PR<='0','1' AFTER 5 NS,'0' AFTER 8 NS;
7. HDL Lab Report
6
CLR<='1','0' AFTER 3 NS;
D<='1','0' AFTER 10 NS,'1' AFTER 25 NS,'0' AFTER 27 NS,'1' AFTER
29 NS,'0' AFTER 31 NS,'1' AFTER 36 NS;
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
OUTPUT
RESULT
Implemented D-latch and verified its output.
SYNTHESIS REPORT
=======================================================================
* Final Report *
=======================================================================
Final Results
RTL Top Level Output File Name : D_latch.ngr
Top Level Output File Name : D_latch
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
8. HDL Lab Report
7
Design Statistics
# IOs : 6
Cell Usage :
# BELS : 4
# INV : 1
# LUT2 : 3
# FlipFlops/Latches : 2
# LDCPE : 2
# Clock Buffers : 1
# BUFGP : 1
# IO Buffers : 5
# IBUF : 3
# OBUF : 2
========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 2 out of 4656 0%
Number of 4 input LUTs: 4 out of 9312 0%
Number of IOs: 6
Number of bonded IOBs: 6 out of 232 2%
IOB Flip Flops: 2
Number of GCLKs: 1 out of 24 4%
9. HDL Lab Report
8
1.b D FLIP FLOP
AIM:
To design a D flip flop in vhdl using behavioural modelling.
THEORY:
The D flip-flop is widely used. It is also known as a "data" or "delay" flip-flop.The D flip-flop
captures the value of the D-input at a definite portion of the clock cycle (such as the rising edge of
the clock). That captured value becomes the Q output. At other times, the output Q does not change.
TRUTH TABLE:
D Q
0 0
1 1
SCHEMATIC DIAGRAM:
VHDL CODE:
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY D_FF IS
10. HDL Lab Report
9
PORT ( D,CLR,PR,CLOCK : IN STD_LOGIC;
Q,QBAR : OUT STD_LOGIC);
END D_FF;
ARCHITECTURE BEHAVIORAL OF D_FF IS
SIGNAL S:STD_LOGIC:='0';
BEGIN
PROCESS(CLOCK,PR,CLR)
BEGIN
IF(CLR='1' AND PR='0') THEN S<='0';
ELSIF(CLR='0' AND PR='1') THEN S<='1';
ELSIF(CLR='0' AND PR='0') THEN
IF(CLOCK='1' AND CLOCK'EVENT) THEN S<=D;
END IF;
END IF;
END PROCESS;
Q<=S;
QBAR<= NOT S;
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_D_FF IS
END TB_D_FF;
ARCHITECTURE BEHAVIOR OF TB_D_FF IS
-- COMPONENT DECLARATION FOR THE UNIT UNDER TEST (UUT)
COMPONENT D_FF
PORT(
D : IN STD_LOGIC;
CLR : IN STD_LOGIC;
PR : IN STD_LOGIC;
CLOCK : IN STD_LOGIC;
Q : OUT STD_LOGIC;
QBAR : OUT STD_LOGIC
);
END COMPONENT;
--INPUTS
SIGNAL D : STD_LOGIC := '0';
11. HDL Lab Report
10
SIGNAL CLR : STD_LOGIC := '0';
SIGNAL PR : STD_LOGIC := '0';
SIGNAL CLOCK : STD_LOGIC := '0';
--OUTPUTS
SIGNAL Q : STD_LOGIC;
SIGNAL QBAR : STD_LOGIC;
-- CLOCK PERIOD DEFINITIONS
CONSTANT CLOCK_PERIOD : TIME := 10 NS;
BEGIN
-- INSTANTIATE THE UNIT UNDER TEST (UUT)
UUT: D_FF PORT MAP (
D => D,
CLR => CLR,
PR => PR,
CLOCK => CLOCK,
Q => Q,
QBAR => QBAR
);
-- CLOCK PROCESS DEFINITIONS
CLOCK_PROCESS :PROCESS
BEGIN
CLOCK <= '0';
WAIT FOR CLOCK_PERIOD/2;
CLOCK <= '1';
WAIT FOR CLOCK_PERIOD/2;
END PROCESS;
-- STIMULUS PROCESS
STIM_PROC: PROCESS
BEGIN
PR<='0','1' AFTER 5 NS,'0' AFTER 12 NS;
CLR<='1','0' AFTER 3 NS;
D<='1','0' AFTER 10 NS,'1' AFTER 25 NS,'0' AFTER 40 NS;
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
12. HDL Lab Report
11
OUTPUT
RESULT
Implemented D flip and verified its output.
SYNTHESIS REPORT
========================================================================
* Final Report *
========================================================================
Final Results
RTL Top Level Output File Name : D_ff.ngr
Top Level Output File Name : D_ff
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 6
Cell Usage :
# BELS : 4
# INV : 1
# LUT2 : 3
# FlipFlops/Latches : 2
# FDCPE : 2
# Clock Buffers : 1
# BUFGP : 1
# IO Buffers : 5
# IBUF : 3
# OBUF : 2
========================================================================
13. HDL Lab Report
12
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 2 out of 4656 0%
Number of 4 input LUTs: 4 out of 9312 0%
Number of IOs: 6
Number of bonded IOBs: 6 out of 232 2%
IOB Flip Flops: 2
Number of GCLKs: 1 out of 24 4%
14. HDL Lab Report
13
2.a JK FLIPFLOP
AIM:
To design a JK Flip flop in structural modelling.
THEORY:
The JK flip-flop augments the behavior of the SR flip-flop (J=Set, K=Reset) by interpreting the S = R
= 1 condition as a "flip" or toggle command. Specifically, the combination J = 1, K = 0 is a command to set
the flip-flop; the combination J = 0, K = 1 is a command to reset the flip-flop; and the combination J = K = 1
is a command to toggle the flip-flop, i.e., change its output to the logical complement of its current value.
JK flipflop can be made using a D flip flop by making D=J + Q
TRUTH TABLE
J K Q(t+1)
0 0 Q
0 1 0
1 0 1
1 1
15. HDL Lab Report
14
SCHEMATIC DIAGRAM:
VHDL CODE:
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY JK_FF IS
PORT ( J,K,PR,CLR,CLOCK : IN STD_LOGIC;
Q,QBAR : OUT STD_LOGIC);
END JK_FF;
ARCHITECTURE BEHAVIORAL OF JK_FF IS
COMPONENT D_FF IS
PORT ( D,CLR,PR,CLOCK : IN STD_LOGIC;
Q,QBAR : OUT STD_LOGIC);
END COMPONENT;
16. HDL Lab Report
15
COMPONENT AND_2 IS
PORT ( A,B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END COMPONENT;
COMPONENT OR_2 IS
PORT ( A,B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END COMPONENT;
SIGNAL S0,S1,S2,S3,S4,S5:STD_LOGIC:='0';
BEGIN
S1<=NOT K;
A0:AND_2 PORT MAP(J,S5,S0);
A1:AND_2 PORT MAP(S1,S4,S2);
A2:OR_2 PORT MAP(S0,S2,S3);
A3:D_FF PORT MAP(S3,CLR,PR,CLOCK,S4,S5);
Q<=S4;
QBAR<=S5;
END BEHAVIORAL;
-------------------------------------------------------------------
17. HDL Lab Report
16
TEST BENCH:
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_JK_FF IS
END TB_JK_FF;
ARCHITECTURE BEHAVIOR OF TB_JK_FF IS
-- COMPONENT DECLARATION FOR THE UNIT UNDER TEST (UUT)
COMPONENT JK_FF
PORT(
J : IN STD_LOGIC;
K : IN STD_LOGIC;
PR : IN STD_LOGIC;
CLR : IN STD_LOGIC;
CLOCK : IN STD_LOGIC;
Q : OUT STD_LOGIC;
QBAR : OUT STD_LOGIC
);
END COMPONENT;
--INPUTS
SIGNAL J : STD_LOGIC := '0';
SIGNAL K : STD_LOGIC := '0';
18. HDL Lab Report
17
SIGNAL PR : STD_LOGIC := '0';
SIGNAL CLR : STD_LOGIC := '0';
SIGNAL CLOCK : STD_LOGIC := '0';
--OUTPUTS
SIGNAL Q : STD_LOGIC;
SIGNAL QBAR : STD_LOGIC;
-- CLOCK PERIOD DEFINITIONS
CONSTANT CLOCK_PERIOD : TIME := 5 NS;
BEGIN
-- INSTANTIATE THE UNIT UNDER TEST (UUT)
UUT: JK_FF PORT MAP (
J => J,
K => K,
PR => PR,
CLR => CLR,
CLOCK => CLOCK,
Q => Q,
QBAR => QBAR
);
-- CLOCK PROCESS DEFINITIONS
CLOCK_PROCESS :PROCESS
BEGIN
CLOCK <= '0';
19. HDL Lab Report
18
WAIT FOR CLOCK_PERIOD/2;
CLOCK <= '1';
WAIT FOR CLOCK_PERIOD/2;
END PROCESS;
-- STIMULUS PROCESS
STIM_PROC: PROCESS
BEGIN
CLR<='1','0' AFTER 5 NS;
PR<='0','1' AFTER 6 NS,'0' AFTER 9 NS;
J<='0','1' AFTER 15 NS,'0' AFTER 25 NS,'1' AFTER 31 NS,'0' AFTER
38 NS,'1' AFTER 42 NS;
K<='1','0' AFTER 10 NS,'1' AFTER 20 NS,'0' AFTER 30 NS,'1' AFTER
40 NS;
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
COMPONENTS USED
1.D Flip flop
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY D_FF IS
PORT ( D,CLR,PR,CLOCK : IN STD_LOGIC;
Q,QBAR : OUT STD_LOGIC);
END D_FF;
ARCHITECTURE BEHAVIORAL OF D_FF IS
SIGNAL S:STD_LOGIC:='0';
BEGIN
PROCESS(CLOCK,PR,CLR)
20. HDL Lab Report
19
BEGIN
IF(CLR='1' AND PR='0') THEN S<='0';
ELSIF(CLR='0' AND PR='1') THEN S<='1';
ELSIF(CLR='0' AND PR='0') THEN
IF(CLOCK='1' AND CLOCK'EVENT) THEN S<=D;
END IF;
END IF;
END PROCESS;
Q<=S;
QBAR<= NOT S;
END BEHAVIORAL;
2. OR__2
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY OR_GATE IS
PORT ( A : IN STD_LOGIC;
B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END OR_GATE;
ARCHITECTURE BEHAVIORAL OF OR_GATE IS
BEGIN
Y <= A OR B ;
END BEHAVIORAL;
3.AND_GATE
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY AND_GATE IS
PORT ( A,B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END AND_GATE;
ARCHITECTURE BEHAVIORAL OF AND_GATE IS
BEGIN
Y <= A AND B;
END BEHAVIORAL;
21. HDL Lab Report
20
OUTPUT
RESULT
Implemented JK flip flop in structural model and verified the output.
SYNTHESIS REPORT
========================================================================
* Final Report *
========================================================================
Final Results
RTL Top Level Output File Name : jk_ff.ngr
Top Level Output File Name : jk_ff
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 7
Cell Usage :
# BELS : 5
# INV : 1
22. HDL Lab Report
21
# LUT2 : 3
# LUT3 : 1
# FlipFlops/Latches : 1
# FDCPE : 1
# Clock Buffers : 1
# BUFGP : 1
# IO Buffers : 6
# IBUF : 4
# OBUF : 2
========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 3 out of 4656 0%
Number of Slice Flip Flops: 1 out of 9312 0%
Number of 4 input LUTs: 5 out of 9312 0%
Number of IOs: 7
Number of bonded IOBs: 7 out of 232 3%
Number of GCLKs: 1 out of 24 4%
23. HDL Lab Report
22
2.b T FLIPFLOP
AIM:
To design a T flipflop in structural model.
THEORY:
If the T input is high, the T flip-flop changes state ("toggles") whenever the clock input is strobed. If
the T input is low, the flip-flop holds the previous value.
We can make a T flipflop from a JK flipflop by making J=K=T.
TRUTH TABLE:
T Q(t+1)
0 Q
1
SCHEMATIC DIAGRAM:
24. HDL Lab Report
23
VHDL CODE:
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY T_FF IS
PORT ( T,CLR,PR,CLOCK : IN STD_LOGIC;
Q,QBAR : OUT STD_LOGIC);
END T_FF;
ARCHITECTURE BEHAVIORAL OF T_FF IS
COMPONENT JK_FF IS
PORT ( J,K,PR,CLR,CLOCK : IN STD_LOGIC;
Q,QBAR : OUT STD_LOGIC);
END COMPONENT;
BEGIN
A0:JK_FF PORT MAP(T,T,PR,CLR,CLOCK,Q,QBAR);
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH:
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_T_FF IS
25. HDL Lab Report
24
END TB_T_FF;
ARCHITECTURE BEHAVIOR OF TB_T_FF IS
-- COMPONENT DECLARATION FOR THE UNIT UNDER TEST (UUT)
COMPONENT T_FF
PORT(
T : IN STD_LOGIC;
CLR : IN STD_LOGIC;
PR : IN STD_LOGIC;
CLOCK : IN STD_LOGIC;
Q : OUT STD_LOGIC;
QBAR : OUT STD_LOGIC
);
END COMPONENT;
--INPUTS
SIGNAL T : STD_LOGIC := '0';
SIGNAL CLR : STD_LOGIC := '0';
SIGNAL PR : STD_LOGIC := '0';
SIGNAL CLOCK : STD_LOGIC := '0';
--OUTPUTS
SIGNAL Q : STD_LOGIC;
SIGNAL QBAR : STD_LOGIC;
26. HDL Lab Report
25
-- CLOCK PERIOD DEFINITIONS
CONSTANT CLOCK_PERIOD : TIME := 5 NS;
BEGIN
-- INSTANTIATE THE UNIT UNDER TEST (UUT)
UUT: T_FF PORT MAP (
T => T,
CLR => CLR,
PR => PR,
CLOCK => CLOCK,
Q => Q,
QBAR => QBAR
);
-- CLOCK PROCESS DEFINITIONS
CLOCK_PROCESS :PROCESS
BEGIN
CLOCK <= '0';
WAIT FOR CLOCK_PERIOD/2;
CLOCK <= '1';
WAIT FOR CLOCK_PERIOD/2;
END PROCESS;
-- STIMULUS PROCESS
STIM_PROC: PROCESS
BEGIN
PR<='1','0' AFTER 4 NS;
27. HDL Lab Report
26
CLR<='0','1' AFTER 6 NS,'0' AFTER 8 NS;
T<='0','1' AFTER 15 NS,'0' AFTER 27 NS,'1' AFTER 39 NS;
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
OUTPUT:
SYNTHESIS REPORT:
========================================================================
* Final Report *
========================================================================
Final Results
RTL Top Level Output File Name : t_ff.ngr
Top Level Output File Name : t_ff
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 6
28. HDL Lab Report
27
Cell Usage :
# BELS : 5
# INV : 1
# LUT2 : 4
# FlipFlops/Latches : 1
# FDCPE : 1
# Clock Buffers : 1
# BUFGP : 1
# IO Buffers : 5
# IBUF : 3
# OBUF : 2
========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 3 out of 4656 0%
Number of Slice Flip Flops: 1 out of 9312 0%
Number of 4 input LUTs: 5 out of 9312 0%
Number of IOs: 6
Number of bonded IOBs: 6 out of 232 2%
Number of GCLKs: 1 out of 24 4%
29. HDL Lab Report
28
3.a 4X1 MULTIPLEXER IN STRUCTURAL MODEL
AIM
To implement a 4X1 multiplexer in structural model.
THEORY
Here, the 4 X 1 multiplexer is designed using three 2 X 1 multiplexers. The lowest bit is
taken as the select line of two multiplexers and the outputs of these (s1 and s2) connected to the
input of next multiplexer. The highest bit, which is the select line of last multiplexer, selects any
one of the signals s1, s2 and displayed as the output.
TRUTH TABLE
INPUT
SELECT LINE
S(1) S(0)
OUTPUT
O
I(3)-I(0)
00 I(0)
01 I(1)
10 I(2)
11 I(3)
SCHEMATIC DIAGRAM
30. HDL Lab Report
29
VHDL CODE
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MUX_4X1 IS
PORT( I : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
S : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
O : OUT STD_LOGIC);
END MUX_4X1;
ARCHITECTURE STRUCTURAL OF MUX_4X1 IS
COMPONENT MUX_2X1 IS
PORT ( I : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
S : IN STD_LOGIC;
O : OUT STD_LOGIC);
END COMPONENT;
SIGNAL TEMP:STD_LOGIC_VECTOR(1 DOWNTO 0);
SIGNAL TEMP1,TEMP2,TEMP3:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
TEMP1<=I(1)&I(0);
TEMP2<=I(3)&I(2);
TEMP3<=TEMP(1)&TEMP(0);
A0 : COMPONENT MUX_2X1 PORT MAP(TEMP1,S(0),TEMP(0));
A1 : COMPONENT MUX_2X1 PORT MAP(TEMP2,S(0),TEMP(1));
A2 : COMPONENT MUX_2X1 PORT MAP(TEMP3,S(1),O);
END STRUCTURAL;
31. HDL Lab Report
30
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_MUX IS
END TB_MUX;
ARCHITECTURE BEHAVIOR OF TB_MUX IS
COMPONENT MUX_4X1
PORT(
I : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
S : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
O : OUT STD_LOGIC );
END COMPONENT;
SIGNAL I : STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0');
SIGNAL S : STD_LOGIC_VECTOR(1 DOWNTO 0) := (OTHERS => '0');
SIGNAL O : STD_LOGIC;
BEGIN
UUT: MUX_4X1 PORT MAP (
I => I,
S => S,
O => O );
32. HDL Lab Report
31
STIM_PROC: PROCESS
BEGIN
I<="0110","0000" AFTER 100 NS;
S<="00","01" AFTER 20 NS,"10" AFTER 40 NS,"11" AFTER 60
NS,"00" AFTER 80 NS;
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
COMPONENTS USED
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MUX_2X1 IS
PORT ( I : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
S : IN STD_LOGIC;
O : OUT STD_LOGIC);
END MUX_2X1;
ARCHITECTURE DATAFLOW OF MUX_2X1 IS
BEGIN
O <= I(0)WHEN S ='0' ELSE I(1);
END DATAFLOW;
-------------------------------------------------------------------
33. HDL Lab Report
32
OUTPUT
RESULT
Implemented 4X1 mux in structural model and verified the output.
SYNTHESIS REPORT
========================================================================
* Final Report *
========================================================================
Final Results
RTL Top Level Output File Name : mux_4X1.ngr
Top Level Output File Name : mux_4X1
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 7
Cell Usage :
# BELS : 3
# LUT3 : 2
# MUXF5 : 1
# IO Buffers : 7
34. HDL Lab Report
33
# IBUF : 6
# OBUF : 1
========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 1 out of 4656 0%
Number of 4 input LUTs: 2 out of 9312 0%
Number of IOs: 7
Number of bonded IOBs: 7 out of 232 3%
35. HDL Lab Report
34
3.b 4X1 MULTIPLEXER IN DATA FLOW MODEL
AIM
To implement a 4X1 multiplexer in data flow model.
THEORY
Here 4X1 mux consisit of 4 input lines and 2 select lines according to the select line input
corresponding input line is connected to the output. Its operation is described in the truth table below.
TRUTH TABLE
INPUT
SELECT LINE
S(1) S(0)
OUTPUT
O
I(3)-I(0)
00 I(0)
01 I(1)
10 I(2)
11 I(3)
SCHEMATIC DIAGRAM
36. HDL Lab Report
35
VHDL CODE
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MULTIPLEXER IS
PORT ( I : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
S : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
O : OUT STD_LOGIC);
END MULTIPLEXER;
ARCHITECTURE DATAFLOW OF MULTIPLEXER IS
BEGIN
O <= I(0)WHEN S ="00" ELSE
I(1)WHEN S ="01" ELSE
I(2)WHEN S ="10" ELSE
I(3);
END DATAFLOW;
-------------------------------------------------------------------
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_MUX IS
END TB_MUX;
37. HDL Lab Report
36
ARCHITECTURE BEHAVIOR OF TB_MUX IS
COMPONENT MULTIPLEXER
PORT(
I : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
S : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
O : OUT STD_LOGIC
);
END COMPONENT;
SIGNAL I : STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0');
SIGNAL S : STD_LOGIC_VECTOR(1 DOWNTO 0) := (OTHERS => '0');
SIGNAL O : STD_LOGIC;
BEGIN
UUT: MULTIPLEXER PORT MAP (
I => I,
S => S,
O => O );
BEGIN
I<="0110","0000" AFTER 100 NS;
S<="00","01" AFTER 20 NS,"10" AFTER 40 NS,"11" AFTER 60
NS,"00" AFTER 80 NS;
WAIT;
END PROCESS;
END;
38. HDL Lab Report
37
OUTPUT
RESULT
Iplemented 4X1 mux in data flow model and variefied the output.
SYNTHESIS REPORT
=========================================================================
* Final Report *
=========================================================================
Final Results
RTL Top Level Output File Name : multiplexer.ngr
Top Level Output File Name : multiplexer
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 7
Cell Usage :
# BELS : 3
# LUT3 : 2
# MUXF5 : 1
# IO Buffers : 7
# IBUF : 6
# OBUF : 1
=========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 1 out of 4656 0%
Number of 4 input LUTs: 2 out of 9312 0%
Number of IOs: 7
Number of bonded IOBs: 7 out of 232 3%
39. HDL Lab Report
38
4.FULL ADDER
AIM
To design full adder using structural model.
THEORY
A full adder circuit is an arithmetic circuit block that can be used to add three bits to produce
a SUM and a CARRY output.
SUM= A⊕ B ⊕ Cin
CARRY= A B +Cin B+Cin A
Here full adder is realised using two half adders and an OR gate.
TRUTH TABLE
INPUT OUTPUT
A B Cin Sum Carry
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
40. HDL Lab Report
39
SCHEMATIC DIAGRAM
VHDL CODE
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY FULLADDER IS
PORT ( A,B,CIN : IN STD_LOGIC;
SUM,CARRY : OUT STD_LOGIC);
END FULLADDER;
ARCHITECTURE BEHAVIORAL OF FULLADDER IS
COMPONENT HALF_ADDER IS
PORT ( A,B : IN STD_LOGIC;
SUM,CARRY : OUT STD_LOGIC);
41. HDL Lab Report
40
END COMPONENT;
COMPONENT ORGATE IS
PORT ( A,B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END COMPONENT;
SIGNAL S1,S2,S3 :STD_LOGIC;
BEGIN
HA0 : COMPONENT HALF_ADDER PORT MAP(A,B,S1,S2);
HA1 : COMPONENT HALF_ADDER PORT MAP (S1,CIN,SUM,S3);
OR0 : COMPONENT ORGATE PORT MAP(S2,S3,CARRY);
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_FULLADDER IS
END TB_FULLADDER;
ARCHITECTURE BEHAVIOR OF TB_FULLADDER IS
COMPONENT FULLADDER
PORT( A : IN STD_LOGIC;
B : IN STD_LOGIC;
CIN : IN STD_LOGIC;
SUM : OUT STD_LOGIC;
CARRY : OUT STD_LOGIC );
END COMPONENT;
SIGNAL A : STD_LOGIC := '0';
SIGNAL B : STD_LOGIC := '0';
SIGNAL CIN : STD_LOGIC := '0';
SIGNAL SUM : STD_LOGIC;
SIGNAL CARRY : STD_LOGIC;
BEGIN
UUT: FULLADDER PORT MAP (
A => A,
B => B,
42. HDL Lab Report
41
CIN => CIN,
SUM => SUM,
CARRY => CARRY );
STIM_PROC: PROCESS
BEGIN
A<='0','1' AFTER 160 NS,'0' AFTER 320 NS;
B<='0','1' AFTER 80 NS,'0' AFTER 160 NS,'1' AFTER 240 NS,'0'
AFTER 320 NS;
CIN<='0','1' AFTER 40 NS,'0' AFTER 80 NS,'1' AFTER 120 NS,'0'
AFTER 160 NS,'1' AFTER 200
NS,'0' AFTER 240 NS,'1' AFTER 280NS,'0' AFTER 320 NS;
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
COMPONENTS USED
1. HALF_ADDER
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY HALF_ADDER IS
PORT ( A,B : IN STD_LOGIC;
SUM,CARRY : OUT STD_LOGIC);
END HALF_ADDER;
ARCHITECTURE BEHAVIORAL OF HALF_ADDER IS
COMPONENT AND_GATE IS
PORT ( A,B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END COMPONENT;
COMPONENT XOR_GATE IS
PORT ( A,B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END COMPONENT;
BEGIN
A0: XOR_GATE PORT MAP(A,B,SUM);
A1: AND_GATE PORT MAP (A,B,CARRY);
43. HDL Lab Report
42
END BEHAVIORAL;
2. OR_GATE
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY OR_GATE IS
PORT ( A : IN STD_LOGIC;
B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END OR_GATE;
ARCHITECTURE BEHAVIORAL OF OR_GATE IS
BEGIN
Y <= A OR B ;
END BEHAVIORAL;
3. XOR_GATE
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY XOR_GATE IS
PORT ( A,B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END AND_GATE;
ARCHITECTURE BEHAVIORAL OF XOR_GATE IS
BEGIN
Y <= A XOR B;
END BEHAVIORAL;
44. HDL Lab Report
43
4. AND_GATE
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY AND_GATE IS
PORT ( A,B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END AND_GATE;
ARCHITECTURE BEHAVIORAL OF AND_GATE IS
BEGIN
Y <= A AND B;
END BEHAVIORAL;
5. NOT_GATE
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY NOTGATE IS
PORT ( A : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END NOTGATE;
ARCHITECTURE BEHAVIORAL OF NOTGATE IS
BEGIN
Y <= NOT A ;
END BEHAVIORAL;
45. HDL Lab Report
44
OUTPUT
RESULT
Implemented full adder in structural model and verified the outputs.
SYNTHESIS REPORT
=========================================================================
* Final Report *
=========================================================================
Final Results
RTL Top Level Output File Name : FULLADDER.ngr
Top Level Output File Name : FULLADDER
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 5
Cell Usage :
# BELS : 2
# LUT3 : 2
# IO Buffers : 5
# IBUF : 3
# OBUF : 2
========================================================================
46. HDL Lab Report
45
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 1 out of 4656 0%
Number of 4 input LUTs: 2 out of 9312 0%
Number of IOs: 5
Number of bonded IOBs: 5 out of 232 2%
47. HDL Lab Report
46
5. 2 TO 4 DECODER
AIM
To implement a 2 to 4 decoder using when else statement.
THEORY
Decoders are circuits that are used to convert one form of binary code into another form.
Here we designed a 2 to 4 decoder and the truth table is given below.The two input data is
decoded into four output lines.
TRUTH TABLE
ENABLE INPUT
A
OUTPUT
Y
1 00 0001
1 01 0010
1 10 0100
1 11 1000
0 XX 0000
SCHEMATIC DIAGRAM
48. HDL Lab Report
47
VHDL CODE
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY DECODER2_4 IS
PORT ( A : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
ENABLE : IN STD_LOGIC;
Y : OUT STD_LOGIC_VECTOR (3 DOWNTO 0));
END DECODER2_4;
ARCHITECTURE DATAFLOW OF DECODER2_4 IS
BEGIN
Y<="0001" WHEN ENABLE='1' AND A="00" ELSE
"0010" WHEN ENABLE='1' AND A="01" ELSE
"0100" WHEN ENABLE='1' AND A="10" ELSE
"1000" WHEN ENABLE='1' AND A="11" ELSE
"0000";
END DATAFLOW;
-------------------------------------------------------------------
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_DECODER IS
END TB_DECODER;
49. HDL Lab Report
48
ARCHITECTURE BEHAVIOR OF TB_DECODER IS
COMPONENT DECODER2_4
PORT(
A : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
ENABLE : IN STD_LOGIC;
Y : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END COMPONENT;
SIGNAL A : STD_LOGIC_VECTOR(1 DOWNTO 0) := (OTHERS => '0');
SIGNAL ENABLE : STD_LOGIC := '0';
SIGNAL Y : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
UUT: DECODER2_4 PORT MAP (
A => A,
ENABLE => ENABLE,
Y => Y );
STIM_PROC: PROCESS
BEGIN
ENABLE<='0','1' AFTER 20 NS,'0' AFTER 100 NS;
A<="00","01" AFTER 40 NS,"10" AFTER 60 NS,"11" AFTER 80
NS,"00" AFTER 100 NS;
WAIT;
END PROCESS;
END;
50. HDL Lab Report
49
OUTPUT
RESULT
Implemented 2 to 4 decoder using when else and variefied the output.
SYNTHESIS REPORT
=========================================================================
* Final Report *
=========================================================================
Final Results
RTL Top Level Output File Name : DECODER2_4.ngr
Top Level Output File Name : DECODER2_4
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 7
Cell Usage :
# BELS : 4
# LUT3 : 4
# IO Buffers : 7
# IBUF : 3
# OBUF : 4
=========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 2 out of 4656 0%
Number of 4 input LUTs: 4 out of 9312 0%
Number of IOs: 7
Number of bonded IOBs: 7 out of 232 3%
51. HDL Lab Report
50
6.SEVEN SEGMENT DISPLAY
AIM
To design a seven segment display using with select statement.
THEORY
There are seven segments forming a figure-of-eight pattern. Each segment consists of one
or more LEDs. The 1’s are placed in cells where the segments are to be excited and 0’s are placed
where no excitations are required.
TRUTH TABLE
BCD input Seven segment output
I(3) I(2) I(1) I(0) O(6) O(5) O(4) O(3) O(2) O(1) O(0)
0 0 0 0 1 1 1 1 1 1 0
0 0 0 1 0 1 1 0 0 0 0
0 0 1 0 1 1 0 1 1 0 1
0 0 1 1 1 1 1 1 0 0 1
0 1 0 0 0 1 1 0 0 1 1
0 1 0 1 1 0 1 1 0 1 1
0 1 1 0 0 0 1 1 1 1 1
0 1 1 1 1 1 1 0 0 0 0
1 0 0 0 1 1 1 1 1 1 1
1 0 0 1 1 1 1 0 0 1 1
52. HDL Lab Report
51
SCHEMATIC DIAGRAM
VHDL CODE
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SEVENSEGDISPLAY IS
PORT ( I : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
O : OUT STD_LOGIC_VECTOR (6 DOWNTO 0));
END SEVENSEGDISPLAY;
ARCHITECTURE BEHAVIORAL OF SEVENSEGDISPLAY IS
53. HDL Lab Report
52
BEGIN
WITH I SELECT
O <= "1111110" WHEN "0000",
"0011000" WHEN "0001",
"0110111" WHEN "0010",
"0111101" WHEN "0011",
"1001001" WHEN "0100",
"1101101" WHEN "0101",
"1001111" WHEN "0110",
"0111000" WHEN "0111",
"0000000" WHEN "1111",
"1111111" WHEN "1000",
"1111001" WHEN OTHERS ;
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.NUMERIC_STD.ALL;
ENTITY TB_SSE IS
END TB_SSE;
ARCHITECTURE BEHAVIOR OF TB_SSE IS
COMPONENT SEVENSEGDISPLAY
PORT(
I : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
54. HDL Lab Report
53
O : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) );
END COMPONENT;
SIGNAL I : STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0');
SIGNAL O : STD_LOGIC_VECTOR(6 DOWNTO 0);
BEGIN
UUT: SEVENSEGDISPLAY PORT MAP (
I => I,
O => O
);
WITH
STIM_PROC: PROCESS
BEGIN
I<="0000","0001" AFTER 20 NS,"0010" AFTER 40 NS,"0011" AFTER
60 NS,"0100" AFTER 80 NS,"0101" AFTER 100 NS,"0110" AFTER 120
NS,"0111" AFTER 140 NS,"1000" AFTER 160 NS,"1001" AFTER 180
NS,"1111" AFTER 200 NS;
WAIT;
END PROCESS;
END;
OUTPUT
55. HDL Lab Report
54
RESULT
Implemented seven segment display using with select and variefied the output.
SYNTHESIS REPORT
=========================================================================
* Final Report *
=========================================================================
Final Results
RTL Top Level Output File Name : SEVENSEGDISPLAY.ngr
Top Level Output File Name : SEVENSEGDISPLAY
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 11
Cell Usage :
# BELS : 7
# LUT4 : 7
# IO Buffers : 11
# IBUF : 4
# OBUF : 7
=========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 4 out of 4656 0%
Number of 4 input LUTs: 7 out of 9312 0%
Number of IOs: 11
Number of bonded IOBs: 11 out of 232 4%
56. HDL Lab Report
55
7. 4x2 PRIORITY ENCODER
AIM:
To design a priority encoder using ‘when else’ statement in vhdl.
THEORY:
Similar to ordinay encoder except that if two or more inputs are given at the same time, the
input having the highest priority will take precedence.
TRUTH TABLE:
I3 I2 I1 I0 Y1 Y0
0 0 0 0 X X
0 0 0 1 0 0
0 0 1 X 0 1
0 1 X X 1 0
1 X X X 1 1
SCHEMATIC DIAGRAM:
57. HDL Lab Report
56
VHDL CODE:
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY PRIORITY_ENC IS
PORT ( ENABLE : IN STD_LOGIC;
I : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
Y : OUT STD_LOGIC_VECTOR (1 DOWNTO 0));
END PRIORITY_ENC;
ARCHITECTURE BEHAVIORAL OF PRIORITY_ENC IS
BEGIN
Y<="11" WHEN I(3)='1' AND ENABLE='1' ELSE
"10" WHEN I(2)='1' AND ENABLE='1' ELSE
"01" WHEN I(1)='1' AND ENABLE='1' ELSE
"00" WHEN I(0)='1' AND ENABLE='1' ELSE
"ZZ";
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH:
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_PRIORITY_ENC IS
END TB_PRIORITY_ENC;
58. HDL Lab Report
57
ARCHITECTURE BEHAVIOR OF TB_PRIORITY_ENC IS
-- COMPONENT DECLARATION FOR THE UNIT UNDER TEST (UUT)
COMPONENT PRIORITY_ENC
PORT(
ENABLE : IN STD_LOGIC;
I : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Y : OUT STD_LOGIC_VECTOR(1 DOWNTO 0)
);
END COMPONENT;
--INPUTS
SIGNAL ENABLE : STD_LOGIC := '0';
SIGNAL I : STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0');
--OUTPUTS
SIGNAL Y : STD_LOGIC_VECTOR(1 DOWNTO 0);
-- NO CLOCKS DETECTED IN PORT LIST. REPLACE <CLOCK> BELOW WITH
-- APPROPRIATE PORT NAME
BEGIN
-- INSTANTIATE THE UNIT UNDER TEST (UUT)
UUT: PRIORITY_ENC PORT MAP (
ENABLE => ENABLE,
I => I,
59. HDL Lab Report
58
Y => Y );
STIM_PROC: PROCESS
BEGIN
ENABLE<='1','0' AFTER 20 NS,'1' AFTER 25 NS;
I<="0111","1000" AFTER 5 NS,"0101" AFTER 10 NS,"0001" AFTER 15
NS,"0000" AFTER 20 NS,"1111" AFTER 25 NS,"0010" AFTER 30 NS,"0011"
AFTER 35 NS,"0001" AFTER 40 NS;
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
OUTPUT
SYNTHESIS REPORT
========================================================================
* Final Report *
========================================================================
Final Results
RTL Top Level Output File Name : priority_enc.ngr
Top Level Output File Name : priority_enc
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
60. HDL Lab Report
59
Design Statistics
# IOs : 7
Cell Usage :
# BELS : 5
# INV : 1
# LUT3 : 1
# LUT4 : 2
# MUXF5 : 1
# IO Buffers : 7
# IBUF : 5
# OBUFT : 2
========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 2 out of 4656 0%
Number of 4 input LUTs: 4 out of 9312 0%
Number of IOs: 7
Number of bonded IOBs: 7 out of 232 3%
61. HDL Lab Report
60
8. SYNCHRONOUS COUNTER
AIM
To design a 4-bit synchronous counter using structural model.
THEORY
A 4 bit synchronous counter is designed using 4 T flip flops. This circuit consist of an input
mode to select whether up or down counter. .The design equation for up /down counters are
given by
T0 = 1
T1 =Q0.MODE + 0.
T2= Q0Q1.MODE+ 0 1
T3= Q0Q1Q2.MODE+ 0 1 2 .
When mode=1,it works as up counter.
Mode=0,it works as down counter.
To implement this in structural mode it requires 4 T flipflops , 5 AND gates,3 OR gates and 1
NOT gate.
SCHEMATIC DIAGRAM
62. HDL Lab Report
61
VHDL CODE
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SYN_UP_DOWN IS
PORT ( MODE,CLK : IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0));
END SYN_UP_DOWN;
ARCHITECTURE BEHAVIORAL OF SYN_UP_DOWN IS
COMPONENT TFF PORT(T,CLK :IN STD_LOGIC;
Q,QBAR: OUT STD_LOGIC);
END COMPONENT;
COMPONENT NOTGATE IS
PORT ( A : IN STD_LOGIC;
Y : OUT STD_LOGIC);
63. HDL Lab Report
62
END COMPONENT;
COMPONENT AND_GATE IS
PORT ( A,B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END COMPONENT;
COMPONENT OR_GATE IS
PORT ( A,B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END COMPONENT;
SIGNAL MODEBAR : STD_LOGIC;
SIGNAL S,N,M,U,D:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
BEGIN
N0 : NOTGATE PORT MAP(MODE,MODEBAR);
T0 : TFF PORT MAP('1',CLK,S(0),M(0));
T1 : TFF PORT MAP(N(0),CLK,S(1),M(1));
T2 : TFF PORT MAP(N(1),CLK,S(2),M(2));
T3 : TFF PORT MAP(N(2),CLK,S(3),M(3));
A0: AND_GATE PORT MAP(S(0),MODE,U(0));
A1: AND_GATE PORT MAP(U(0),S(1),U(1));
A2: AND_GATE PORT MAP (S(2),U(1),U(2));
A3: AND_GATE PORT MAP(MODEBAR,M(0),D(0));
A4: AND_GATE PORT MAP(D(0),M(1),D(1));
A5: AND_GATE PORT MAP (M(2),D(1),D(2));
O0:OR_GATE PORT MAP(D(0),U(0),N(0));
O1:OR_GATE PORT MAP(D(1),U(1),N(1));
O2:OR_GATE PORT MAP(D(2),U(2),N(2));
Q<=S;
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_UP_DOWN IS
END TB_ UP_DOWN;
64. HDL Lab Report
63
ARCHITECTURE BEHAVIOR OF TB_ UP_DOWN IS
COMPONENT SYN_UP_DOWN
PORT(
MODE : IN STD_LOGIC;
CLK : IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END COMPONENT;
SIGNAL MODE : STD_LOGIC := '0';
SIGNAL CLK : STD_LOGIC := '0';
SIGNAL Q : STD_LOGIC_VECTOR(3 DOWNTO 0);
CONSTANT CLK_PERIOD : TIME := 10 NS;
BEGIN
UUT: SYN_UP_DOWN PORT MAP (
MODE => MODE,
CLK => CLK,
Q => Q
);
CLK_PROCESS :PROCESS
BEGIN
CLK <= '0';
WAIT FOR CLK_PERIOD/2;
CLK <= '1';
WAIT FOR CLK_PERIOD/2;
END PROCESS;
STIM_PROC: PROCESS
BEGIN
MODE<='1','0' AFTER 80 NS;
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
OUTPUT
65. HDL Lab Report
64
COMPONENTS USED
1.T FLIPFLOP
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TFF IS
PORT ( T,CLK : IN STD_LOGIC;
Q,QBAR : OUT STD_LOGIC);
END TFF;
ARCHITECTURE BEHAVIORAL OF TFF IS
SIGNAL S: STD_LOGIC:='0';
BEGIN
Q<=S;
QBAR<= NOT S;
PROCESS(CLK)
BEGIN
IF RISING_EDGE(CLK) THEN
IF(T='1') THEN
S<=NOT S;
ELSE S<=S;
END IF;
END IF;
END PROCESS;
END BEHAVIORAL;
2. AND GATE
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY AND_GATE IS
PORT ( A,B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END NOTGATE;
ARCHITECTURE BEHAVIORAL OF AND_GATE IS
BEGIN
PROCESS(A,B)
BEGIN
IF (A='1' AND B=’1’) THEN Y<='1' ;
66. HDL Lab Report
65
ELSE Y<='0';
END IF;
END PROCESS;
END BEHAVIORAL;
3.OR GATE
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY OR_GATE IS
PORT ( A,B : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END NOTGATE;
ARCHITECTURE BEHAVIORAL OF OR_GATE IS
BEGIN
PROCESS(A,B)
BEGIN
IF (A='0' AND B=’0’) THEN Y<='0' ;
ELSE Y<='1';
END IF;
END PROCESS;
END BEHAVIORAL;
5.NOT GATE
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY NOTGATE IS
PORT ( A : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END NOTGATE;
ARCHITECTURE BEHAVIORAL OF NOTGATE IS
BEGIN
PROCESS(A)
BEGIN
67. HDL Lab Report
66
IF A='1' THEN Y<='0' ;
ELSE Y<='1';
END IF;
END PROCESS;
END BEHAVIORAL;
RESULT
Implemented synchronous UP/DOWN counter in structural model and variefied the output.
SYNTHESIS REPORT
========================================================================
* Final Report *
========================================================================
Final Results
RTL Top Level Output File Name : Syn_up_down.ngr
Top Level Output File Name : Syn_up_down
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 6
Cell Usage :
# BELS : 8
# INV : 4
# LUT2 : 1
# LUT3 : 1
# LUT4 : 1
# VCC : 1
# FlipFlops/Latches : 4
# FDE : 4
# Clock Buffers : 1
# BUFGP : 1
# IO Buffers : 5
# IBUF : 1
# OBUF : 4
68. HDL Lab Report
67
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 4 out of 4656 0%
Number of Slice Flip Flops: 4 out of 9312 0%
Number of 4 input LUTs: 7 out of 9312 0%
Number of IOs: 6
Number of bonded IOBs: 6 out of 232 2%
Number of GCLKs: 1 out of 24 4%
69. HDL Lab Report
68
9.RING COUNTER
AIM
To simulate a half adder in data flow model
THEORY
In this program a 4 bit ring counter is implemented.A 4 bit ring counter consist of 4D flip
flops .The output of the rightmost DFF is fed into the input of first DFF.Initially a ‘1’ is set as output
of first DFF using prest pin.Then this bit will shift for each clock cycle.Ring counter has 4 states-
0001,0010,0100,1000.
CIRCUIT DIAGRAM
SCHEMATIC DIAGRAM
70. HDL Lab Report
69
VHDL CODE
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY RING_COUNTER IS
PORT ( CLK ,PR: IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0));
END RING_COUNTER;
ARCHITECTURE BEHAVIORAL OF RING_COUNTER IS
COMPONENT D_FF
PORT ( D,CLK,PR,CLR : IN STD_LOGIC;
Q ,QBAR: OUT STD_LOGIC );
END COMPONENT;
SIGNAL S : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
A0: D_FF PORT MAP(S(3),CLK,PR,'0',S(0));
A1: D_FF PORT MAP(S(0),CLK,'0','0',S(1));
A2: D_FF PORT MAP(S(1),CLK,'0','0',S(2));
A3: D_FF PORT MAP(S(2),CLK,'0','0',S(3));
Q<=S;
END BEHAVIORAL;
-------------------------------------------------------------------
71. HDL Lab Report
70
TEST BENCH:
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_RING IS
END TB_RING;
ARCHITECTURE BEHAVIOR OF TB_RING IS
COMPONENT RING_COUNTER
PORT(
CLK : IN STD_LOGIC;
PR : IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END COMPONENT;
SIGNAL CLK : STD_LOGIC := '0';
SIGNAL PR : STD_LOGIC := '0';
SIGNAL Q : STD_LOGIC_VECTOR(3 DOWNTO 0);
CONSTANT CLK_PERIOD : TIME := 10 NS;
BEGIN
UUT: RING_COUNTER PORT MAP (
CLK => CLK,
PR => PR,
Q => Q );
72. HDL Lab Report
71
CLK_PROCESS :PROCESS
BEGIN
CLK <= '0';
WAIT FOR CLK_PERIOD/2;
CLK <= '1';
WAIT FOR CLK_PERIOD/2;
END PROCESS;
STIM_PROC: PROCESS
BEGIN
PR<='1','0' AFTER 2 NS;
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
COMPONENTS USED
-------------------------------------------------------------------
D FLIP FLOP
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY D_FF IS
PORT ( D,CLK,PR,CLR : IN STD_LOGIC;
Q ,QBAR: OUT STD_LOGIC );
END D_FF;
73. HDL Lab Report
72
ARCHITECTURE BEHAVIORAL OF D_FF IS
SIGNAL S: STD_LOGIC :='0';
BEGIN
Q<=S;
PROCESS(CLK,CLR,PR)
BEGIN
IF(CLR='1' AND PR='0') THEN
S<='0';
ELSIF(CLR='0' AND PR='1') THEN
S<='1';
ELSIF (PR='1' AND CLR='1') THEN
S<='X';
ELSIF(CLR='0' AND PR='0') THEN
IF (RISING_EDGE(CLK)) THEN
IF(D='0') THEN
S<='0';
ELSIF(D='1') THEN S<='1';
END IF;
END IF;
END IF;
QBAR<=NOT S;
END PROCESS;
END BEHAVIORAL;
-------------------------------------------------------------------
74. HDL Lab Report
73
OUTPUT
RESULT
Implemented ring counter and verified the result.
SYNTHESIS REPORT
========================================================================
* Final Report *
========================================================================
Final Results
RTL Top Level Output File Name : ring_counter.ngr
Top Level Output File Name : ring_counter
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 6
Cell Usage :
# BELS : 3
# GND : 1
75. HDL Lab Report
74
# INV : 1
# VCC : 1
# FlipFlops/Latches : 4
# FDCPE : 4
# Clock Buffers : 1
# BUFGP : 1
# IO Buffers : 5
# IBUF : 1
# OBUF : 4
========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 2 out of 4656 0%
Number of Slice Flip Flops: 4 out of 9312 0%
Number of 4 input LUTs: 1 out of 9312 0%
Number of IOs: 6
Number of bonded IOBs: 6 out of 232 2%
Number of GCLKs: 1 out of 24 4%
76. HDL Lab Report
75
10.JHONSON COUNTER
AIM
To implement a 4-bit jhonson counter using D flip flop.
THEORY
In this program a 4 bit Johnson counter is implemented using four D flip flops. The output
Qbar of last DFF is given as input to the first DFF. Johnson counter has 8 states0000,1000,
1100,1110,1111,0111,0011,0001.
CIRCUIT DIAGRAM
SCEMATIC DIAGRAM
77. HDL Lab Report
76
VHDL CODE
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY JHONSON_COUNTER IS
PORT ( CLK ,PR: IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0));
END JHONSON_COUNTER;
ARCHITECTURE BEHAVIORAL OF JHONSON_COUNTER IS
COMPONENT D_FF
PORT ( D,CLK,PR,CLR : IN STD_LOGIC;
Q ,QBAR: OUT STD_LOGIC
);
END COMPONENT;
SIGNAL S,P : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
A0: D_FF PORT MAP(P(3),CLK,'0','0',S(0),P(0));
A1: D_FF PORT MAP(S(0),CLK,'0','0',S(1),P(1));
A2: D_FF PORT MAP(S(1),CLK,'0','0',S(2),P(2));
A3: D_FF PORT MAP(S(2),CLK,'0','0',S(3),P(3));
Q<=S;
END BEHAVIORAL;
-------------------------------------------------------------------
78. HDL Lab Report
77
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_JHONSON_COUNTER IS
END TB_JHONSON_COUNTER;
ARCHITECTURE BEHAVIOR OF TB_JHONSON_COUNTER IS
COMPONENT JHONSON_COUNTER
PORT(
CLK : IN STD_LOGIC;
PR : IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END COMPONENT;
SIGNAL CLK : STD_LOGIC := '0';
SIGNAL PR : STD_LOGIC := '0';
SIGNAL Q : STD_LOGIC_VECTOR(3 DOWNTO 0);
CONSTANT CLK_PERIOD : TIME := 10 NS;
BEGIN
UUT: JHONSON_COUNTER PORT MAP (
CLK => CLK,
PR => PR,
Q => Q );
CLK_PROCESS :PROCESS
BEGIN
79. HDL Lab Report
78
CLK <= '0';
WAIT FOR CLK_PERIOD/2;
CLK <= '1';
WAIT FOR CLK_PERIOD/2;
END PROCESS;
STIM_PROC: PROCESS
BEGIN
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
OUTPUT
RESULT
Implemented jhonson counter and verified the output.
SYNTHESIS REPORT
========================================================================
* Final Report *
========================================================================
Final Results
RTL Top Level Output File Name : jhonson_counter.ngr
Top Level Output File Name : jhonson_counter
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
80. HDL Lab Report
79
Design Statistics
# IOs : 6
Cell Usage :
# BELS : 3
# GND : 1
# INV : 1
# VCC : 1
# FlipFlops/Latches : 4
# FDCPE : 4
# Clock Buffers : 1
# BUFGP : 1
# IO Buffers : 4
# OBUF : 4
========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 2 out of 4656 0%
Number of Slice Flip Flops: 4 out of 9312 0%
Number of 4 input LUTs: 1 out of 9312 0%
Number of IOs: 6
Number of bonded IOBs: 5 out of 232 2%
Number of GCLKs: 1 out of 24 4%
81. HDL Lab Report
80
11.SHIFT REGESTER
AIM:
To design a shift register which works in the following modes.
Mode= 00 => SISO
Mode= 01 => PISO
Mode= 10 => SIPO
Mode= 11 => PIPO
THEORY:
Shift register that shifts by one position the bit array stored in it, shifting in the data present at
its input and shifting out the last bit in the array, at each transition of the clock input.Shift registers
can have both parallel and serial inputs and outputs. These are often configured as serial-in, parallel-
out (SIPO) or as parallel-in, serial-out (PISO). There are also types that have both serial and parallel
input and types with serial and parallel output.
SCHEMATIC DIAGRAM:
VHDL CODE:
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
82. HDL Lab Report
81
ENTITY SHIFT_REG IS
PORT ( I : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
MODE : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
LOAD,SERIAL_IN,SHIFT,CLOCK : IN STD_LOGIC;
SERIAL_OUT : OUT STD_LOGIC;
P : OUT STD_LOGIC_VECTOR (3 DOWNTO 0));
END SHIFT_REG;
ARCHITECTURE BEHAVIORAL OF SHIFT_REG IS
SIGNAL M:STD_LOGIC:='0';
SIGNAL N:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
BEGIN
PROCESS(CLOCK)
BEGIN
IF(LOAD='1' AND SHIFT='0') THEN M<=SERIAL_IN;
N<=I;
ELSIF(LOAD='0' AND SHIFT='1') THEN
IF(CLOCK='1' AND CLOCK'EVENT) THEN
CASE MODE IS
WHEN "00"=> SERIAL_OUT<=SERIAL_IN;
WHEN "01"=> N<=SERIAL_IN & N(3 DOWNTO 1);
WHEN "10"=> SERIAL_OUT<=N(0);
N<=N(0) & N(3 DOWNTO 1);
WHEN "11"=> P<=I;
WHEN OTHERS =>NULL;
END CASE;
END IF;
83. HDL Lab Report
82
END IF;
END PROCESS;
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH:
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_SHIFT IS
END TB_SHIFT;
ARCHITECTURE BEHAVIOR OF TB_SHIFT IS
-- COMPONENT DECLARATION FOR THE UNIT UNDER TEST (UUT)
COMPONENT SHIFT_REG
PORT(
I : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
MODE : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
LOAD : IN STD_LOGIC;
SERIAL_IN : IN STD_LOGIC;
SHIFT : IN STD_LOGIC;
CLOCK : IN STD_LOGIC;
SERIAL_OUT : OUT STD_LOGIC;
P : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
84. HDL Lab Report
83
END COMPONENT;
--INPUTS
SIGNAL I : STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0');
SIGNAL MODE : STD_LOGIC_VECTOR(1 DOWNTO 0) := (OTHERS => '0');
SIGNAL LOAD : STD_LOGIC := '0';
SIGNAL SERIAL_IN : STD_LOGIC := '0';
SIGNAL SHIFT : STD_LOGIC := '0';
SIGNAL CLOCK : STD_LOGIC := '0';
--OUTPUTS
SIGNAL SERIAL_OUT : STD_LOGIC;
SIGNAL P : STD_LOGIC_VECTOR(3 DOWNTO 0);
-- CLOCK PERIOD DEFINITIONS
CONSTANT CLOCK_PERIOD : TIME := 10 NS;
BEGIN
-- INSTANTIATE THE UNIT UNDER TEST (UUT)
UUT: SHIFT_REG PORT MAP (
I => I,
MODE => MODE,
LOAD => LOAD,
SERIAL_IN => SERIAL_IN,
SHIFT => SHIFT,
CLOCK => CLOCK,
85. HDL Lab Report
84
SERIAL_OUT => SERIAL_OUT,
P => P
);
-- CLOCK PROCESS DEFINITIONS
CLOCK_PROCESS :PROCESS
BEGIN
CLOCK <= '0';
WAIT FOR CLOCK_PERIOD/2;
CLOCK <= '1';
WAIT FOR CLOCK_PERIOD/2;
END PROCESS;
-- STIMULUS PROCESS
STIM_PROC: PROCESS
BEGIN
I<="1001","1111" AFTER 150 NS;
SERIAL_IN<='1','0' AFTER 20 NS,'1' AFTER 35 NS,'1' AFTER 50 NS,'0'
AFTER 60 NS;
LOAD<='1','0' AFTER 5 NS,'1' AFTER 40 NS,'0' AFTER 45 NS,'1' AFTER
80 NS,'0' AFTER 82 NS,'1' AFTER 100 NS,'0' AFTER 102 NS,'1' AFTER
200 NS,'0' AFTER 205 NS,'1' AFTER 280 NS,'0' AFTER 285 NS;
SHIFT<='0','1' AFTER 10 NS,'0' AFTER 40 NS,'1' AFTER 45 NS,'0'
AFTER 80 NS,'1' AFTER 82 NS,'0' AFTER 100 NS,'1' AFTER 102 NS,'0'
AFTER 200 NS,'1' AFTER 205 NS,'0' AFTER 280 NS,'1' AFTER 285 NS;
MODE<="00","01" AFTER 40 NS,"11" AFTER 80 NS,"10" AFTER 100 NS,"11"
AFTER 200 NS,"10" AFTER 280 NS;
WAIT;
END PROCESS;
END;
86. HDL Lab Report
85
OUTPUT:
SYNTHESIS REPORT:
========================================================================
* Final Report *
========================================================================
Final Results
RTL Top Level Output File Name : shift_reg.ngr
Top Level Output File Name : shift_reg
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 15
Cell Usage :
# BELS : 18
# LUT2 : 1
# LUT3 : 9
# LUT3_L : 1
# LUT4 : 6
87. HDL Lab Report
86
# MUXF5 : 1
# FlipFlops/Latches : 9
# FDCPE : 4
# FDE : 5
# Clock Buffers : 1
# BUFGP : 1
# IO Buffers : 14
# IBUF : 9
# OBUF : 5
========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 9 out of 4656 0%
Number of Slice Flip Flops: 5 out of 9312 0%
Number of 4 input LUTs: 17 out of 9312 0%
Number of IOs: 15
Number of bonded IOBs: 15 out of 232 6%
IOB Flip Flops: 4
Number of GCLKs: 1 out of 24 4%
88. HDL Lab Report
87
12.a SEQUENCE DETECTOR FOR 010 USING MOORE MECHINE
AIM
To design a MOORE state machine to detect the sequence 010 without reset.
STATE DIAGRAM
SCHEMATIC DIAGRAM
89. HDL Lab Report
88
VHDL CODE
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MOORE010 IS
PORT ( CLK,DIN,RESET : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END MOORE010;
ARCHITECTURE BEHAVIORAL OF MOORE010 IS
TYPE STATE_TYPE IS (S0,S1,S2,S3);
SIGNAL STATE :STATE_TYPE := S0;
SIGNAL SCLK :STD_LOGIC:='0';
BEGIN
PROCESS(CLK,RESET)
BEGIN
IF(RESET='0') THEN
IF(CLK = '1' AND CLK'EVENT) THEN
CASE STATE IS
WHEN S0 => Y<='0';
IF(DIN ='0') THEN STATE <= S1;
ELSE STATE <= S0; END IF;
WHEN S1 => Y<='0';
IF(DIN ='1') THEN STATE <= S2;
ELSE STATE <= S1; END IF;
90. HDL Lab Report
89
WHEN S2 => Y<='0';
IF(DIN ='0') THEN STATE <= S3;
ELSE STATE <= S0; END IF;
WHEN S3 => Y<='1';
IF(DIN ='0') THEN STATE <= S1;
ELSE STATE <= S2; END IF;
END CASE;
ELSE NULL;
END IF;
END IF;
END PROCESS ;
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_MOORE_010_NEW IS
END TB_MOORE_010_NEW;
ARCHITECTURE BEHAVIOR OF TB_MOORE_010_NEW IS
91. HDL Lab Report
90
COMPONENT MOORE010
PORT(
CLK : IN STD_LOGIC;
DIN : IN STD_LOGIC;
RESET : IN STD_LOGIC;
Y : OUT STD_LOGIC
);
END COMPONENT;
SIGNAL CLK : STD_LOGIC := '0';
SIGNAL DIN : STD_LOGIC := '0';
SIGNAL RESET : STD_LOGIC := '0';
SIGNAL Y : STD_LOGIC;
CONSTANT CLK_PERIOD : TIME := 50 NS;
BEGIN
UUT: MOORE010 PORT MAP (
CLK => CLK,
DIN => DIN,
RESET => RESET,
Y => Y
);
CLK_PROCESS :PROCESS
BEGIN
92. HDL Lab Report
91
CLK <= '0';
WAIT FOR CLK_PERIOD/2;
CLK <= '1';
WAIT FOR CLK_PERIOD/2;
END PROCESS;
STIM_PROC: PROCESS
BEGIN
DIN <= '0','1' AFTER 50 NS,'1' AFTER 100 NS,'0' AFTER 150
NS,'1' AFTER 200 NS,'0' AFTER 250 NS,'1' AFTER 300 NS,'0' AFTER
350 NS,'1' AFTER 400 NS,'0' AFTER 450 NS,'1' AFTER 500 NS,'0'
AFTER 550 NS,'0' AFTER 600 NS,'1' AFTER 650 NS,'0' AFTER 700
NS,'1' AFTER 750 NS,'1' AFTER 800 NS,'0' AFTER 850 NS,'1' AFTER
900 NS,'0' AFTER 950 NS,'0' AFTER 1000 NS,'1' AFTER 1050 NS,'1'
AFTER 1100 NS,'0' AFTER 1150 NS;
WAIT;
END PROCESS;
END;
OUTPUT
RESULT
Implemented MOORE machine to detect the sequence 010 and verified the
output.
SYNTHESIS REPORT
93. HDL Lab Report
92
=========================================================================
* Final Report *
=========================================================================
Final Results
RTL Top Level Output File Name : moore010.ngr
Top Level Output File Name : moore010
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 4
Cell Usage :
# BELS : 4
# INV : 2
# LUT2 : 1
# LUT3 : 1
# FlipFlops/Latches : 3
# FDE : 3
# Clock Buffers : 1
# BUFGP : 1
# IO Buffers : 3
# IBUF : 2
# OBUF : 1
=========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 2 out of 4656 0%
Number of Slice Flip Flops: 3 out of 9312 0%
Number of 4 input LUTs: 4 out of 9312 0%
Number of IOs: 4
Number of bonded IOBs: 4 out of 232 1%
Number of GCLKs: 1 out of 24 4%
94. HDL Lab Report
93
12.b SEQUENCE DETECTOR FOR 010 USING MEALY MECHINE
AIM
To design a mealy state machine to detect 010 without reset.
STATE DIAGRAM
SCHEMATIC DIAGRAM
95. HDL Lab Report
94
VHDL CODE
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MEALY010 IS
PORT ( CLK,DIN : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END MEALY010;
ARCHITECTURE BEHAVIORAL OF MEALY010 IS
TYPE STATE_TYPE IS (S0,S1,S2);
SIGNAL STATE :STATE_TYPE := S0;
BEGIN
PROCESS(CLK)
BEGIN
IF(CLK = '0' AND CLK'EVENT) THEN
CASE STATE IS
WHEN S0 => IF(DIN ='0') THEN STATE <= S1; Y<='0';
ELSE STATE <= S0; Y <= '0'; END IF;
WHEN S1 => IF(DIN ='1') THEN STATE <= S2; Y<='0';
ELSE STATE <= S1; Y <= '0'; END IF;
WHEN S2 => IF(DIN ='0') THEN STATE <= S1; Y<='1';
ELSE STATE <= S0; Y <= '0'; END IF;
96. HDL Lab Report
95
END CASE;
END IF;
END PROCESS;
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_MEALY010 IS
END TB_MEALY010;
ARCHITECTURE BEHAVIOR OF TB_MEALY010 IS
COMPONENT MEALY010
PORT(
CLK : IN STD_LOGIC;
DIN : IN STD_LOGIC;
Y : OUT STD_LOGIC
);
END COMPONENT;
SIGNAL CLK : STD_LOGIC := '0';
SIGNAL DIN : STD_LOGIC := '0';
SIGNAL Y : STD_LOGIC;
CONSTANT CLK_PERIOD : TIME := 50 NS;
97. HDL Lab Report
96
BEGIN
UUT: MEALY010 PORT MAP (
CLK => CLK,
DIN => DIN,
Y => Y );
CLK_PROCESS :PROCESS
BEGIN
CLK <= '0';
WAIT FOR CLK_PERIOD/2;
CLK <= '1';
WAIT FOR CLK_PERIOD/2;
END PROCESS;
STIM_PROC: PROCESS
BEGIN
DIN <= '0','1' AFTER 50 NS,'1' AFTER 100 NS,'0' AFTER 150
NS,'1' AFTER 200 NS,'0' AFTER 250 NS,'1' AFTER 300 NS,'0' AFTER
350 NS,'1' AFTER 400 NS,'0' AFTER 450 NS,'1' AFTER 500 NS,'0'
AFTER 550 NS,'0' AFTER 600 NS,'1' AFTER 650 NS,'0' AFTER 700
NS,'1' AFTER 750 NS,'1' AFTER 800 NS,'0' AFTER 850 NS,'1' AFTER
900 NS,'0' AFTER 950 NS,'0' AFTER 1000 NS,'1' AFTER 1050 NS,'1'
AFTER 1100 NS,'0' AFTER 1150 NS;
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
98. HDL Lab Report
97
OUTPUT
RESULT
Implemented mealy machine to detect the sequence 010.
SYNTHESIS REPORT
=========================================================================
* Final Report *
=========================================================================
Final Results
RTL Top Level Output File Name : mealy010.ngr
Top Level Output File Name : mealy010
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 3
Cell Usage :
# BELS : 3
# GND : 1
# INV : 2
# FlipFlops/Latches : 3
# FDR_1 : 2
# FDS_1 : 1
# Clock Buffers : 1
# BUFGP : 1
# IO Buffers : 2
# IBUF : 1
# OBUF : 1
=========================================================================
99. HDL Lab Report
98
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 2 out of 4656 0%
Number of Slice Flip Flops: 3 out of 9312 0%
Number of 4 input LUTs: 2 out of 9312 0%
Number of IOs: 3
Number of bonded IOBs: 3 out of 232 1%
Number of GCLKs: 1 out of 24 4%
100. HDL Lab Report
99
12.c SEQUENCE DETECTOR FOR 110 OR 0011
AIM:
Design a sequence detector to detect the sequences 110 or 0011 without reset.
STATE DIAGRAM:
101. HDL Lab Report
100
SCHEMATIC DIAGRAM:
VHDL CODE:
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MEALY IS
PORT ( X,CLOCK,RESET : IN STD_LOGIC;
Y : OUT STD_LOGIC);
END MEALY;
ARCHITECTURE BEHAVIORAL OF MEALY IS
TYPE STATE_TYPE IS (S0,S1,S2,S3,S4,S5,S6,S7);
SIGNAL STATE:STATE_TYPE:=S0;
SIGNAL COUNT:INTEGER RANGE 0 TO 100000000;
--SIGNAL CLOCK:STD_LOGIC;
102. HDL Lab Report
101
BEGIN
PROCESS(CLOCK,RESET)
BEGIN
IF(RESET='1') THEN STATE<=S0;
ELSIF (CLOCK='1' AND CLOCK'EVENT) THEN
CASE STATE IS
WHEN S0=> IF(X='1') THEN STATE<=S1; Y<='0';
ELSIF(X='0') THEN STATE<=S2; Y<='0';
END IF;
WHEN S1=> IF(X='1') THEN STATE<=S3; Y<='0';
ELSIF(X='0') THEN STATE<=S2; Y<='0';
END IF;
WHEN S2=> IF(X='1') THEN STATE<=S1; Y<='0';
ELSIF(X='0') THEN STATE<=S5; Y<='0';
END IF;
WHEN S3=> IF(X='1') THEN STATE<=S3; Y<='0';
ELSIF(X='0') THEN STATE<=S4; Y<='1';
END IF;
WHEN S4=> IF(X='1') THEN STATE<=S1; Y<='0';
ELSIF(X='0') THEN STATE<=S5; Y<='0';
END IF;
WHEN S5=> IF(X='1') THEN STATE<=S6; Y<='0';
103. HDL Lab Report
102
ELSIF(X='0') THEN STATE<=S5; Y<='0';
END IF;
WHEN S6=> IF(X='1') THEN STATE<=S7; Y<='1';
ELSIF(X='0') THEN STATE<=S2; Y<='0';
END IF;
WHEN S7=> IF(X='1') THEN STATE<=S3; Y<='0';
ELSIF(X='0') THEN STATE<=S2; Y<='1';
END IF;
END CASE;
END IF;
END PROCESS;
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH:
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_MEALY IS
END TB_MEALY;
ARCHITECTURE BEHAVIOR OF TB_MEALY IS
-- COMPONENT DECLARATION FOR THE UNIT UNDER TEST (UUT)
104. HDL Lab Report
103
COMPONENT MEALY
PORT(
X : IN STD_LOGIC;
CLOCK : IN STD_LOGIC;
RESET : IN STD_LOGIC;
Y : OUT STD_LOGIC
);
END COMPONENT;
--INPUTS
SIGNAL X : STD_LOGIC := '0';
SIGNAL CLOCK : STD_LOGIC := '0';
SIGNAL RESET : STD_LOGIC := '0';
--OUTPUTS
SIGNAL Y : STD_LOGIC;
-- CLOCK PERIOD DEFINITIONS
CONSTANT CLOCK_PERIOD : TIME := 10 NS;
BEGIN
-- INSTANTIATE THE UNIT UNDER TEST (UUT)
UUT: MEALY PORT MAP (
X => X,
CLOCK => CLOCK,
105. HDL Lab Report
104
RESET => RESET,
Y => Y
);
-- CLOCK PROCESS DEFINITIONS
CLOCK_PROCESS :PROCESS
BEGIN
CLOCK <= '1';
WAIT FOR CLOCK_PERIOD/2;
CLOCK <= '0';
WAIT FOR CLOCK_PERIOD/2;
END PROCESS;
-- STIMULUS PROCESS
STIM_PROC: PROCESS
BEGIN
RESET<='1','0' AFTER 2 NS;
X<='0','1' AFTER 10 NS,'0' AFTER 30 NS,'1' AFTER 50 NS,'0' AFTER 70
NS,'1' AFTER 80 NS,'0' AFTER 110 NS,'1' AFTER 140 NS,'0' AFTER 150
NS,'1' AFTER 160 NS,'0' AFTER 170 NS,'1' AFTER 190 NS,'0' AFTER 210
NS;
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
106. HDL Lab Report
105
OUTPUT:
SYNTHESIS REPORT:
========================================================================
* Final Report *
========================================================================
Final Results
RTL Top Level Output File Name : mealy.ngr
Top Level Output File Name : mealy
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 4
Cell Usage :
# BELS : 11
# GND : 1
# INV : 1
# LUT2 : 3
107. HDL Lab Report
106
# LUT2_L : 1
# LUT4 : 5
# FlipFlops/Latches : 9
# FDC : 7
# FDE : 1
# FDP : 1
# Clock Buffers : 1
# BUFGP : 1
# IO Buffers : 3
# IBUF : 2
# OBUF : 1
========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 6 out of 4656 0%
Number of Slice Flip Flops: 9 out of 9312 0%
Number of 4 input LUTs: 10 out of 9312 0%
Number of IOs: 4
Number of bonded IOBs: 4 out of 232 1%
Number of GCLKs: 1 out of 24 4%
108. HDL Lab Report
107
13. XS-3 BCD CONVERTER
AIM
To implement a sequential circuit which converts XS-3 to BCD .
THEORY
Input to the circuit will be provided on each clock cycle (LSB to MSB) and the
corresponding output(LSB to MSB) will be shown on that clock pulse itself.
TRUTH TABLE
XS_3 CODE INPUT BCD OUTPUT
0 0 1 1 0 0 0 0
0 1 0 0 0 0 0 1
0 1 0 1 0 0 1 0
0 1 1 0 0 0 1 1
0 1 1 1 0 1 0 0
1 0 0 0 0 1 0 1
1 0 0 1 0 1 1 0
1 0 1 0 0 1 1 1
1 0 1 1 1 0 0 0
1 1 0 0 1 0 0 1
110. HDL Lab Report
109
VHDL CODE
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY XS3TOBCD IS
PORT ( CLK,DIN,RESET : IN STD_LOGIC;
DOUT : OUT STD_LOGIC);
END XS3TOBCD;
ARCHITECTURE BEHAVIORAL OF XS3TOBCD IS
TYPE STATE_TYPE IS(S0,S1,S2,S3,S4,S5,S6);
SIGNAL STATE:STATE_TYPE:=S0;
BEGIN
PROCESS(CLK,RESET)
BEGIN
IF(RESET='0') THEN
IF(CLK='1' AND CLK'EVENT) THEN
CASE STATE IS
WHEN S0 => IF(DIN='1') THEN STATE<=S1;DOUT<='0';
ELSE STATE<=S2;DOUT<='1'; END IF;
WHEN S1 => IF(DIN='1') THEN STATE<=S3;DOUT<='0';
ELSE STATE<=S4;DOUT<='1'; END IF;
WHEN S2 => IF(DIN='1') THEN STATE<=S4;DOUT<='1';
ELSE STATE<=S4;DOUT<='0'; END IF;
WHEN S3 => IF(DIN='1') THEN STATE<=S5;DOUT<='1';
111. HDL Lab Report
110
ELSE STATE<=S5;DOUT<='0'; END IF;
WHEN S4 => IF(DIN='1') THEN STATE<=S5;DOUT<='0';
ELSE STATE<=S6;DOUT<='1'; END IF;
WHEN S5 => IF(DIN='1') THEN STATE<=S0;DOUT<='1';
ELSE STATE<=S2;DOUT<='0'; END IF;
WHEN S6 => IF(DIN='1') THEN STATE<=S0;DOUT<='0';
ELSE STATE<=S0;DOUT<='0'; END IF;
END CASE;
END IF;
ELSE STATE<=S0;DOUT<='0';
END IF;
END PROCESS;
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_XS3TOBCD IS
END TB_XS3TOBCD;
ARCHITECTURE BEHAVIOR OF TB_XS3TOBCD IS
COMPONENT XS3TOBCD
PORT(
CLK : IN STD_LOGIC;
112. HDL Lab Report
111
DIN : IN STD_LOGIC;
RESET : IN STD_LOGIC;
DOUT : OUT STD_LOGIC
);
END COMPONENT;
SIGNAL CLK : STD_LOGIC := '0';
SIGNAL DIN : STD_LOGIC := '0';
SIGNAL RESET : STD_LOGIC := '0';
SIGNAL DOUT : STD_LOGIC;
CONSTANT CLK_PERIOD : TIME := 10 NS;
BEGIN
UUT: XS3TOBCD PORT MAP (
CLK => CLK,
DIN => DIN,
RESET => RESET,
DOUT => DOUT
);
CLK_PROCESS :PROCESS
BEGIN
CLK <= '0';
WAIT FOR CLK_PERIOD/2;
CLK <= '1';
WAIT FOR CLK_PERIOD/2;
END PROCESS;
113. HDL Lab Report
112
STIM_PROC: PROCESS
BEGIN
RESET<='0','1' AFTER 40NS,'0' AFTER 50 NS;
DIN<='0','1' AFTER 12 NS,'1' AFTER 22 NS,'0' AFTER 32 NS,'1'
AFTER 52 NS,'1' AFTER 62 NS,'1' AFTER 72 NS,'0' AFTER 82 NS;
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
OUTPUT
RESULT
Implemented XS-3 to BCD converter and verified the output.
SYNTHESIS REPORT
========================================================================
Final Report
========================================================================
Final Results
RTL Top Level Output File Name : xs3tobcd.ngr
Top Level Output File Name : xs3tobcd
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
# IOs : 4
114. HDL Lab Report
113
Cell Usage :
# BELS : 10
# LUT2 : 3
# LUT3 : 6
# MUXF5 : 1
# FlipFlops/Latches : 8
# FDC : 7
# FDP : 1
# Clock Buffers : 1
# BUFGP : 1
# IO Buffers : 3
# IBUF : 2
# OBUF : 1
========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 5 out of 4656 0%
Number of Slice Flip Flops: 8 out of 9312 0%
Number of 4 input LUTs: 9 out of 9312 0%
Number of IOs: 4
Number of bonded IOBs: 4 out of 232 1%
Number of GCLKs: 1 out of 24 4%
115. HDL Lab Report
114
14.TRAFFIC LIGHT CONTROLLER
AIM:
1. The traffic light has 2 signals-GREEN which indicates the vehicles to pass and RED which
indicates the vehicles to stop.The period for which each incoming branch of the 4 way
junction has its GREEN signal as ON in 5 seconds after which it turns to RED and the
GREEN for next direction is ON.
2. Each direction has an emergency switch associated with it.If the emergency switch
associated with a particular incoming branch is activated, it overrides the current
configuration of the traffic light and allows the movement of vehicles from that particular
branch for next 10 seconds.After 10 seconds the old configuration is restored.
1.TRAFFIC LIGHT WITHOUT EMERGENCY SWITCH
STATE DIAGRAM:
In S0 the green light of traffic light post A is ON.
S1 the green light of traffic light post B is ON.
S2 the green light of traffic light post B is ON.
S3 the green light of traffic light post B is ON.
116. HDL Lab Report
115
SCHEMATIC
VHDL CODE
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY TRAFFIC_2 IS
PORT ( CLOCK: IN STD_LOGIC;
G_A,R_A,G_B,R_B,G_C,R_C,G_D,R_D : OUT STD_LOGIC);
END TRAFFIC_2;
ARCHITECTURE BEHAVIORAL OF TRAFFIC_2 IS
TYPE STATE_TYPE IS (S0,S1,S2,S3);
SIGNAL STATE:STATE_TYPE;
SIGNAL COUNT:INTEGER RANGE 0 TO 10;
117. HDL Lab Report
116
BEGIN
PROCESS(CLOCK)
BEGIN
IF (CLOCK='1' AND CLOCK'EVENT) THEN
CASE STATE IS
WHEN S0=> G_A<='1';
R_A<='0';
G_B<='0';
R_B<='1';
G_C<='0';
R_C<='1';
G_D<='0';
R_D<='1';
IF COUNT<4 THEN STATE<=S0; COUNT<=COUNT+1;
ELSE STATE<=S1; COUNT<=0;
END IF;
WHEN S1=> G_A<='0';
R_A<='1';
G_B<='1';
R_B<='0';
118. HDL Lab Report
117
G_C<='0';
R_C<='1';
G_D<='0';
R_D<='1';
IF COUNT<4 THEN STATE<=S1; COUNT<=COUNT+1;
ELSE STATE<=S2; COUNT<=0;
END IF;
WHEN S2=> G_A<='0';
R_A<='1';
G_B<='0';
R_B<='1';
G_C<='1';
R_C<='0';
G_D<='0';
R_D<='1';
IF COUNT<4 THEN STATE<=S2; COUNT<=COUNT+1;
ELSE STATE<=S3; COUNT<=0;
END IF;
119. HDL Lab Report
118
WHEN S3=> G_A<='0';
R_A<='1';
G_B<='0';
R_B<='1';
G_C<='0';
R_C<='1';
G_D<='1';
R_D<='0';
IF COUNT<4 THEN STATE<=S3; COUNT<=COUNT+1;
ELSE STATE<=S0; COUNT<=0;
END IF;
END CASE;
END IF;
END PROCESS P2;
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_TRAFFIC_2 IS
END TB_TRAFFIC_2;
120. HDL Lab Report
119
ARCHITECTURE BEHAVIOR OF TB_TRAFFIC_2 IS
-- COMPONENT DECLARATION FOR THE UNIT UNDER TEST (UUT)
COMPONENT TRAFFIC_2
PORT(
CLOCK : IN STD_LOGIC;
G_A : OUT STD_LOGIC;
R_A : OUT STD_LOGIC;
G_B : OUT STD_LOGIC;
R_B : OUT STD_LOGIC;
G_C : OUT STD_LOGIC;
R_C : OUT STD_LOGIC;
G_D : OUT STD_LOGIC;
R_D : OUT STD_LOGIC
);
END COMPONENT;
--INPUTS
SIGNAL CLOCK : STD_LOGIC := '0';
--OUTPUTS
SIGNAL G_A : STD_LOGIC;
SIGNAL R_A : STD_LOGIC;
SIGNAL G_B : STD_LOGIC;
121. HDL Lab Report
120
SIGNAL R_B : STD_LOGIC;
SIGNAL G_C : STD_LOGIC;
SIGNAL R_C : STD_LOGIC;
SIGNAL G_D : STD_LOGIC;
SIGNAL R_D : STD_LOGIC;
-- CLOCK PERIOD DEFINITIONS
CONSTANT SCLOCK_PERIOD : TIME := 1 NS;
BEGIN
-- INSTANTIATE THE UNIT UNDER TEST (UUT)
UUT: TRAFFIC_2 PORT MAP (
CLOCK => CLOCK,
G_A => G_A,
R_A => R_A,
G_B => G_B,
R_B => R_B,
G_C => G_C,
R_C => R_C,
G_D => G_D,
R_D => R_D
);
-- CLOCK PROCESS DEFINITIONS
CLOCK_PROCESS :PROCESS
122. HDL Lab Report
121
BEGIN
CLOCK <= '0';
WAIT FOR SCLOCK_PERIOD/2;
CLOCK <= '1';
WAIT FOR SCLOCK_PERIOD/2;
END PROCESS;
-- STIMULUS PROCESS
STIM_PROC: PROCESS
BEGIN
WAIT;
END PROCESS;
END;
OUTPUT
SYNTHESIS REPORT
========================================================================
Final Report
========================================================================
Final Results
RTL Top Level Output File Name : traffic_2.ngr
Top Level Output File Name : traffic_2
124. HDL Lab Report
123
# IBUF : 1
# OBUF : 8
========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 42 out of 4656 0%
Number of Slice Flip Flops: 40 out of 9312 0%
Number of 4 input LUTs: 77 out of 9312 0%
Number of IOs: 10
Number of bonded IOBs: 10 out of 232 4%
Number of GCLKs: 1 out of 24 4%
125. HDL Lab Report
124
2.TRAFFIC LIGHT EMERGENCY SWITCH
SCHEMATIC DIAGRAM:
VHDL CODE
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY TRAFFIC_2 IS
PORT ( CLOCK,S_A,S_B,S_C,S_D : IN STD_LOGIC;
G_A,R_A,G_B,R_B,G_C,R_C,G_D,R_D : OUT STD_LOGIC);
END TRAFFIC_2;
ARCHITECTURE BEHAVIORAL OF TRAFFIC_2 IS
TYPE STATE_TYPE IS (S0,S1,S2,S3,S4,S5,S6,S7);
SIGNAL STATE:STATE_TYPE:=S0;
SIGNAL COUNT:INTEGER RANGE 0 TO 10:=0;
SIGNAL COUNT_1:INTEGER RANGE 0 TO 15:=0;
126. HDL Lab Report
125
SIGNAL K,M:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
BEGIN
M<=S_A&S_B&S_C&S_D;
PROCESS(CLOCK)
BEGIN
IF (CLOCK='1' AND CLOCK'EVENT) THEN
CASE STATE IS
WHEN S0=>
IF COUNT<4 THEN STATE<=S0; COUNT<=COUNT+1;
IF(M="1000") THEN STATE<=S4;K<="1000";
ELSIF(M="0100") THEN STATE<=S5;K<="1000";
ELSIF(M="0010") THEN STATE<=S6;K<="1000";
ELSIF(M="0001") THEN STATE<=S7;K<="1000";
ELSE G_A<='1';
R_A<='0';
G_B<='0';
R_B<='1';
G_C<='0';
R_C<='1';
G_D<='0';
R_D<='1';
END IF;
ELSE STATE<=S1; COUNT<=0;
END IF;
127. HDL Lab Report
126
WHEN S1=>
IF COUNT<4 THEN STATE<=S1; COUNT<=COUNT+1;
IF(M="1000") THEN STATE<=S4;K<="0100";
ELSIF(M="0100") THEN STATE<=S5;K<="0100";
ELSIF(M="0010") THEN STATE<=S6;K<="0100";
ELSIF(M="0001") THEN STATE<=S7;K<="0100";
ELSE G_A<='0';
R_A<='1';
G_B<='1';
R_B<='0';
G_C<='0';
R_C<='1';
G_D<='0';
R_D<='1';
END IF;
ELSE STATE<=S2; COUNT<=0;
END IF;
WHEN S2=>
IF COUNT<4 THEN STATE<=S2; COUNT<=COUNT+1;
IF(M="1000") THEN STATE<=S4;K<="0010";
ELSIF(M="0100") THEN STATE<=S5;K<="0010";
ELSIF(M="0010") THEN STATE<=S6;K<="0010";
128. HDL Lab Report
127
ELSIF(M="0001") THEN STATE<=S7;K<="0010";
ELSE G_A<='0';
R_A<='1';
G_B<='0';
R_B<='1';
G_C<='1';
R_C<='0';
G_D<='0';
R_D<='1';
END IF;
ELSE STATE<=S3; COUNT<=0;
END IF;
WHEN S3=>
IF COUNT<4 THEN STATE<=S3; COUNT<=COUNT+1;
IF(M="1000") THEN STATE<=S4;K<="0001";
ELSIF(M="0100") THEN STATE<=S5;K<="0001";
ELSIF(M="0010") THEN STATE<=S6;K<="0001";
ELSIF(M="0001") THEN STATE<=S7;K<="0001";
ELSE G_A<='0';
R_A<='1';
G_B<='0';
R_B<='1';
129. HDL Lab Report
128
G_C<='0';
R_C<='1';
G_D<='1';
R_D<='0';
END IF;
ELSE STATE<=S0; COUNT<=0;
END IF;
WHEN S4=> IF (COUNT_1< 9) THEN
G_A<='1';
R_A<='0';
G_B<='0';
R_B<='1';
G_C<='0';
R_C<='1';
G_D<='0';
R_D<='1';
COUNT_1<= COUNT_1+1;
STATE<= S4;
ELSE COUNT_1<=0;
CASE K IS
130. HDL Lab Report
129
WHEN "1000"=> STATE<= S0;
WHEN "0100"=> STATE<= S1;
WHEN "0010"=> STATE<= S2;
WHEN "0001"=> STATE<= S3;
WHEN OTHERS=> NULL;
END CASE;
K<="0000";
END IF;
WHEN S5=> IF (COUNT_1< 9) THEN
G_A<='0';
R_A<='1';
G_B<='1';
R_B<='0';
G_C<='0';
R_C<='1';
G_D<='0';
R_D<='1';
COUNT_1<= COUNT_1+1;
STATE<= S5;
ELSE COUNT_1<=0;
CASE K IS
131. HDL Lab Report
130
WHEN "1000"=> STATE<= S0;
WHEN "0100"=> STATE<= S1;
WHEN "0010"=> STATE<= S2;
WHEN "0001"=> STATE<= S3;
WHEN OTHERS=> NULL;
END CASE;
K<="0000";
END IF;
WHEN S6=> IF (COUNT_1< 9) THEN
G_A<='0';
R_A<='1';
G_B<='0';
R_B<='1';
G_C<='1';
R_C<='0';
G_D<='0';
R_D<='1';
COUNT_1<= COUNT_1+1;
STATE<= S6;
ELSE COUNT_1<=0;
CASE K IS
132. HDL Lab Report
131
WHEN "1000"=> STATE<= S0;
WHEN "0100"=> STATE<= S1;
WHEN "0010"=> STATE<= S2;
WHEN "0001"=> STATE<= S3;
WHEN OTHERS=> NULL;
END CASE;
K<="0000";
END IF;
WHEN S7=> IF (COUNT_1< 9) THEN
G_A<='0';
R_A<='1';
G_B<='0';
R_B<='1';
G_C<='0';
R_C<='1';
G_D<='1';
R_D<='0';
COUNT_1<= COUNT_1+1;
STATE<= S7;
ELSE COUNT_1<=0;
CASE K IS
133. HDL Lab Report
132
WHEN "1000"=> STATE<= S0;
WHEN "0100"=> STATE<= S1;
WHEN "0010"=> STATE<= S2;
WHEN "0001"=> STATE<= S3;
WHEN OTHERS=> NULL;
END CASE;
K<="0000";
END IF;
END CASE;
END IF;
END PROCESS;
END BEHAVIORAL;
-------------------------------------------------------------------
TEST BENCH
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TB_TRAFFIC_CONTROLLR IS
END TB_TRAFFIC_CONTROLLR;
ARCHITECTURE BEHAVIOR OF TB_TRAFFIC_CONTROLLR IS
-- COMPONENT DECLARATION FOR THE UNIT UNDER TEST (UUT)
COMPONENT TRAFFIC_2
PORT(
134. HDL Lab Report
133
CLOCK : IN STD_LOGIC;
S_A : IN STD_LOGIC;
S_B : IN STD_LOGIC;
S_C : IN STD_LOGIC;
S_D : IN STD_LOGIC;
G_A : OUT STD_LOGIC;
R_A : OUT STD_LOGIC;
G_B : OUT STD_LOGIC;
R_B : OUT STD_LOGIC;
G_C : OUT STD_LOGIC;
R_C : OUT STD_LOGIC;
G_D : OUT STD_LOGIC;
R_D : OUT STD_LOGIC
);
END COMPONENT;
--INPUTS
SIGNAL CLOCK : STD_LOGIC := '0';
SIGNAL S_A : STD_LOGIC := '0';
SIGNAL S_B : STD_LOGIC := '0';
SIGNAL S_C : STD_LOGIC := '0';
SIGNAL S_D : STD_LOGIC := '0';
--OUTPUTS
SIGNAL G_A : STD_LOGIC;
SIGNAL R_A : STD_LOGIC;
SIGNAL G_B : STD_LOGIC;
135. HDL Lab Report
134
SIGNAL R_B : STD_LOGIC;
SIGNAL G_C : STD_LOGIC;
SIGNAL R_C : STD_LOGIC;
SIGNAL G_D : STD_LOGIC;
SIGNAL R_D : STD_LOGIC;
-- CLOCK PERIOD DEFINITIONS
CONSTANT CLOCK_PERIOD : TIME := 1 NS;
BEGIN
-- INSTANTIATE THE UNIT UNDER TEST (UUT)
UUT: TRAFFIC_2 PORT MAP (
CLOCK => CLOCK,
RESET => RESET,
S_A => S_A,
S_B => S_B,
S_C => S_C,
S_D => S_D,
G_A => G_A,
R_A => R_A,
G_B => G_B,
R_B => R_B,
G_C => G_C,
R_C => R_C,
G_D => G_D,
R_D => R_D
);
136. HDL Lab Report
135
-- CLOCK PROCESS DEFINITIONS
CLOCK_PROCESS :PROCESS
BEGIN
CLOCK <= '0';
WAIT FOR CLOCK_PERIOD/2;
CLOCK <= '1';
WAIT FOR CLOCK_PERIOD/2;
END PROCESS;
-- STIMULUS PROCESS
STIM_PROC: PROCESS
BEGIN
S_A<='0';
S_B<='0';
S_C<='0';
S_D<='0';
WAIT FOR 15 NS;
S_A<='0';
S_B<='1';
S_C<='0';
S_D<='0';
WAIT FOR 5 NS;
S_A<='0';
S_B<='0';
137. HDL Lab Report
136
S_C<='0';
S_D<='0';
WAIT;
END PROCESS;
END;
-------------------------------------------------------------------
OUTPUT
SYNTHESIS REPORT
========================================================================
* Final Report *
========================================================================
Final Results
RTL Top Level Output File Name : traffic_2.ngr
Top Level Output File Name : traffic_2
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : No
Design Statistics
138. HDL Lab Report
137
# IOs : 14
Cell Usage :
# BELS : 45
# LUT2_L : 1
# LUT3 : 4
# LUT3_L : 1
# LUT4 : 30
# LUT4_D : 2
# LUT4_L : 6
# MUXF5 : 1
# FlipFlops/Latches : 22
# FD : 22
# Clock Buffers : 1
# BUFGP : 1
# IO Buffers : 12
# IBUF : 4
# OBUF : 8
========================================================================
Device utilization summary:
Selected Device : 3s500efg320-4
Number of Slices: 24 out of 4656 0%
Number of Slice Flip Flops: 22 out of 9312 0%
Number of 4 input LUTs: 44 out of 9312 0%
Number of IOs: 14
Number of bonded IOBs: 13 out of 232 5%
Number of GCLKs: 1 out of 24 4%