Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LIBRARY ieee;
- USE ieee.std_logic_1164.ALL;
- ENTITY twolights IS
- PORT( R, G, Reset, CLOCK : IN std_logic;
- Red, Green : OUT std_logic);
- END ENTITY twolights;
- ARCHITECTURE fencer OF twolights IS
- TYPE tillstand IS (Start, Oavgjort, Rtrettio, Rtjugo, Rtio, Rvinst, Gtrettio, Gtjugo, Gtio, Gvinst);
- SIGNAL nuvarande, nasta : tillstand;
- BEGIN
- PROCESS(R, G, Reset, nuvarande)
- BEGIN
- IF Reset = '1' THEN
- nasta <= Start;
- END IF;
- CASE nuvarande IS
- WHEN Start => -- Startbubblans fyra pilar
- IF (R = '1' AND G = '0') THEN
- nasta <= Rtio;
- ELSIF (R = '0' AND G = '1') THEN
- nasta <= Gtio;
- ELSIF (R = '1' AND G = '1') THEN
- nasta <= Oavgjort;
- ELSIF (R = '0' AND G = '0') THEN
- nasta <= Start;
- END IF;
- WHEN Rtio => -- Röd träff
- IF G = '1' THEN
- nasta <= Oavgjort;
- ELSIF G = '0' THEN
- nasta <= Rtjugo;
- END IF;
- WHEN Rtjugo => -- Röd träff 20 ms
- IF G = '1' THEN
- nasta <= Oavgjort;
- ELSIF G = '0' THEN
- nasta <= Rtrettio;
- END IF;
- WHEN Rtrettio => -- Röd träff 30ms
- IF G = '1' THEN
- nasta <= Oavgjort;
- ELSIF G = '0' THEN
- nasta <= Rvinst;
- END IF;
- WHEN Gtio => -- Grön träff
- IF R = '1' THEN
- nasta <= Oavgjort;
- ELSIF R = '0' THEN
- nasta <= Gtjugo;
- END IF;
- WHEN Gtjugo => -- Grön träff 20 ms
- IF R = '1' THEN
- nasta <= Oavgjort;
- ELSIF R = '0' THEN
- nasta <= Gtrettio;
- END IF;
- WHEN Gtrettio => -- Grön träff 30 ms
- IF R = '1' THEN
- nasta <= Oavgjort;
- ELSIF R = '0' THEN
- nasta <= Gvinst;
- END IF;
- WHEN OTHERS => NULL;
- END CASE;
- END PROCESS;
- PROCESS (nuvarande, CLOCK)
- BEGIN
- IF rising_edge(CLOCK) THEN
- nuvarande <= nasta;
- END IF;
- END PROCESS;
- PROCESS(nuvarande)
- BEGIN
- Red <= '0';
- Green <= '0';
- CASE nuvarande IS
- WHEN Oavgjort => -- Oavgjort är båda lamporna tända
- Red <= '1';
- Green <= '1';
- WHEN Rtio =>
- Red <= '1';
- WHEN Rtjugo =>
- Red <= '1';
- WHEN Rtrettio =>
- Red <= '1';
- WHEN Rvinst => -- Röd vinner och röd lampa tänds
- Red <= '1';
- WHEN Gtio =>
- Green <= '1';
- WHEN Gtjugo =>
- Green <= '1';
- WHEN Gtrettio =>
- Green <= '1';
- WHEN Gvinst => -- Grön vinner och grön lampa tänds
- Green <= '1';
- WHEN OTHERS => NULL; -- Lamporna tänds och släcks endast i de övre tillstånden
- END CASE;
- END PROCESS;
- END ARCHITECTURE fencer;
Advertisement