--
-- 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 ;

<div align="center"><br /><script type="text/javascript"><!--
google_ad_client = "pub-7293844627074885";
//468x60, Created at 07. 11. 25
google_ad_slot = "8619794253";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />&nbsp;</div>