The objective of traffic light control system is  to control the flow of vehicles to avoid the traffic jam.
The basic idea behind the project is work with four lane.Further it can be extended for 8 lane system.
The four lanes are east,west,north and south direction.The traffic moving activity is controlled by RED,GREEN,YELLOW signals.
 
VHDL Programme: 
     
     
     
The basic idea behind the project is work with four lane.Further it can be extended for 8 lane system.
The four lanes are east,west,north and south direction.The traffic moving activity is controlled by RED,GREEN,YELLOW signals.
When traffic is moving from west
to east then it may move from west to east or west to south where intersection
is there, hence control is required. To move from west to north there is no
intersection hence a control is not required for that. Similarly when traffic
is moving from east to west, then it may also go to east to north, because
there is an intersection, but it can go through east to south smoothly without
traffic indication. Same rule follows for north to south and south to north
vice versa.
Based on above assumption
following will be Traffic light state.
| 
STATE | 
EAST-WEST | 
NORTH-SOUTH | 
COUNTER | 
| 
0 | 
GREEN | 
RED | 
120 | 
| 
1 | 
YELLOW | 
RED | 
5 | 
| 
2 | 
RED | 
RED | 
60 | 
| 
3 | 
RED | 
GREEN | 
120 | 
| 
4 | 
RED | 
YELLOW | 
5 | 
| 
5 | 
RED | 
RED | 
60 | 
BLOCK DIAGRAM:
1) Counter program which can count upto 120 count.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity cntr_120is
    Port ( clk : in  STD_LOGIC;
reset : in  STD_LOGIC;
           ce_120 : in  STD_LOGIC;
           co_120_out : out  STD_LOGIC_vector(6 downto 0);
           co_120 : out  STD_LOGIC);
end cntr_120;
architecture Behavioral of cntr_120 is
signal cnt120 : std_logic_vector(6 downto 0);
begin
process(clk,reset,  cnt120)
begin
if (reset = '1') then
    cnt120 <= (others => '0');
 elsif(clk'event and clk = '1') then
 if (ce_120 = '1') then
  if (cnt120 = "1111000" ) then
        co_120 <= '1';
        cnt120<=(others=>'0');
  else
    cnt120<= cnt120 + 1;
    co_120 <= '0';
  end if;
  end if;
  co_120_out<=  cnt120;
end if;
end process;
end Behavioral;
2) Counter program which can count upto 60 count.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity cntr_60 is
    Port ( clk : in  STD_LOGIC;
reset : in  STD_LOGIC;
           ce_60 : in  STD_LOGIC;
           co_60_out : out  STD_LOGIC_vector(6 downto 0);
           co_60 : out  STD_LOGIC);
end cntr_60;
architecture Behavioral of cntr_60 is
signal cnt60 : std_logic_vector(5 downto 0);
begin
process(clk,reset,  cnt60)
begin
if (reset = '1') then
    cnt60 <= (others => '0');
 elsif(clk'event and clk = '1') then
 if (ce_60 = '1') then
  if (cnt60 = "111100" ) then
        co_60 <= '1';
        cnt60<=(others=>'0');
  else
    cnt60<= cnt60 + 1;
    co_60 <= '0';
  end if;
  end if;
  co_60_out<=  cnt60;
end if;
end process;
end Behavioral;
3) Counter program which can count upto 5 count.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity cntr_5 is
    Port ( clk : in  STD_LOGIC;
reset : in  STD_LOGIC;
           ce_5 : in  STD_LOGIC;
           co_5_out : out  STD_LOGIC_vector(2 downto 0);
           co_5 : out  STD_LOGIC);
end cntr_5;
architecture Behavioral of cntr_5 is
signal cnt5 : std_logic_vector(2 downto 0);
begin
process(clk,reset,  cnt5)
begin
if (reset = '1') then
    cnt5 <= (others => '0');
 elsif(clk'event and clk = '1') then
 if (ce_5 = '1') then
  if (cnt5= "101" ) then
        co_5 <= '1';
        cnt5<=(others=>'0');
  else
    cnt5<= cnt5 + 1;
    co_5 <= '0';
  end if;
  end if;
  co_60_out<=  cnt60;
end if;
end process;
end Behavioral;


 
No comments:
Post a Comment