thank you all
i managed to think of a traffic light cotroller
two highways and 2 sides(crossing)
but when i implement my code it won't traverse from state to another
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Uncomment the following lines to use the declarations that are
-- provided for instantiating Xilinx primitive components.
--library UNISIM;
--use UNISIM.VComponents.all;
entity TLcontrol is
Port ( TLight1, TLight2, STLight2 : out std_logic_vector(2 downto 0) ;
STLight1 : out std_logic_vector(1 downto 0) ;
clk, s1, s0 : in std_logic);
end TLcontrol;
architecture tlcntroller of TLcontrol is
signal state: integer range 0 to 5:=0;
signal sel : std_logic_vector (1 downto 0);
signal TMshort, TMlong, timer: std_logic:='0';
begin
sel<=s1 & s0;
--process:
timing

rocess(clk)
variable t1: integer range 0 to 100000000:=0;--for the short time delay."2s"
variable t2: integer range 0 to 1250000000:=0;--for the long time delay."25s"
begin
if(clk'event and clk='1')then
if(timer='1') then
if(t1=100000000) then
TMshort<='1';
t1:=0;
else
t1:=t1+1;
end if;--short
if(t2=1250000000) then
TMlong<='1';
t2:=0;
else
t2:=t2+1;
end if;--long
else
t1:=0;
t2:=0;
end if;--timer
end if;--clock
end process timing;
process (state, TMshort, TMlong, sel,clk, timer)
begin
if(clk'event and clk='1') then
case state is
when 0 =>
TLight1<="001";--green
TLight2<="001";--green
STLight1<="10";--red
STLight2<="100";--red
--update state2:
if(sel="00") then
state<=0;
elsif(sel="01" or sel="11") then
state<=1;
timer<='0';
elsif(sel="10") then
state<=5;
timer<='0';
end if;
when 1 =>
timer<='1';
TLight1<="001";--green
TLight2<="010";--yellow
STLight1<="10";--red
STLight2<="100";--red
--update state2:
if(TMshort='0') then
state<=1;
elsif(TMshort='1') then
if(sel="00") then
state<=0;
timer<='0';
else
state<=2;
timer<='0';
end if;
end if;
when 2 =>
timer<='1';
TLight1<="001";--green
TLight2<="100";--red
STLight1<="01";--green
STLight2<="100";--red
--update state2:
if(TMlong = '1')then
if(sel="00") then
state<=1;
timer<='0';
elsif(sel="01" or sel="11") then
state<=2;
elsif(sel="10") then
state<=3;
timer<='0';
end if;
else
state<=2;
end if;
when 3 =>
timer<='1';
TLight1<="010";--yellow
TLight2<="100";--red
STLight1<="10";--red
STLight2<="010";--yellow
--update state2:
if(TMshort='0') then
state<=3;
elsif(TMshort='1') then
state<=4;
timer<='0';
end if;
when 4 =>
timer<='1';
TLight1<="100";--red
TLight2<="100";--red
STLight1<="10";--red
STLight2<="001";--green
--update state2:
if(TMlong = '1')then
if(sel="00") then
state<=5;
timer<='0';
else
state<=4;
end if;
else
state<=4;
end if;
when 5 =>
timer<='1';
TLight1<="010";--yellow
TLight2<="010";--yellow
STLight1<="10";--red
STLight2<="010";--yellow
--update state2:
if(TMshort='0') then
state<=5;
elsif(TMshort='1') then
if(sel="00") then
state<=0;
else
state<=4;
timer<='0';
end if;
end if;
end if; --clock
end case;
end process;
end tlcntroller;
here is my code
can any one check it for me
i need to submit it on after tommorrow