-- -- Component : main_control -- -- Generated by System Architect version v8.4_3.7 by mrmayer on Feb 9, 1997 -- -- LIBRARY ieee; USE ieee.std_logic_1164.all; ARCHITECTURE state_machine OF main_control IS TYPE main_control_state_type is ( cleared, timing, paused, frozen_timing, frozen_paused ); -- SDS Defined State Signals SIGNAL current_state : main_control_state_type := cleared ; SIGNAL next_state : main_control_state_type := cleared ; BEGIN ------------------------------------------------------------------- clocked : PROCESS ( set_reset, start_stop, sys_clk ) ------------------------------------------------------------------- BEGIN IF ( rising_edge(sys_clk) ) THEN current_state <= next_state; END IF; END PROCESS clocked ; ------------------------------------------------------------------- set_next_state : PROCESS ( current_state, set_reset, start_stop, sys_clk ) ------------------------------------------------------------------- BEGIN next_state <= current_state; CASE current_state IS WHEN cleared => IF ( start_stop='1' ) THEN next_state <= timing; END IF; WHEN timing => IF ( start_stop='1' ) THEN next_state <= paused; ELSIF ( set_reset='1' ) THEN next_state <= frozen_timing; END IF; WHEN paused => IF ( start_stop='1' ) THEN next_state <= timing; ELSIF ( set_reset='1' ) THEN next_state <= cleared; END IF; WHEN frozen_timing => IF ( start_stop='1' ) THEN next_state <= frozen_paused; ELSIF ( set_reset='1' ) THEN next_state <= timing; END IF; WHEN frozen_paused => IF ( start_stop='1' ) THEN next_state <= frozen_timing; ELSIF ( set_reset='1' ) THEN next_state <= paused; END IF; WHEN OTHERS => NULL; END CASE; END PROCESS set_next_state ; ------------------------------------------------------------------- unclocked : PROCESS ( current_state ) ------------------------------------------------------------------- BEGIN -- State Actions CASE current_state IS WHEN cleared => indicator_mode<='0'; reset<='1'; run_timer<='0'; pause_now <='0'; WHEN timing => indicator_mode<='0'; reset<='0'; run_timer<='1'; pause_now<='0'; WHEN paused => indicator_mode<='0'; reset<='0'; run_timer<='0'; pause_now<='0'; WHEN frozen_timing => indicator_mode<='1'; reset<='0'; run_timer<='1'; pause_now<='1'; WHEN frozen_paused => indicator_mode<='1'; run_timer<='0'; reset<='0'; pause_now<='1'; WHEN OTHERS => NULL; END CASE; END PROCESS unclocked ; END state_machine ;