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;
Comments
0 B
|0 👍
/0 👎
0 B
|👍
/👎