OpenCores
URL https://opencores.org/ocsvn/idea/idea/trunk

Subversion Repositories idea

[/] [idea/] [trunk/] [fsm/] [idea_machine/] [heart_ctrl.fsm] - Diff between revs 6 and 9

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 6 Rev 9
-- File Name   : heart_ctrl.fsm                                 --
-- File Name   : heart_ctrl.fsm                                 --
-- Description : The heart control of idea processor            --
-- Description : The heart control of idea processor            --
-- Purpose     : To be used by SYF                              --
-- Purpose     : To be used by SYF                              --
-- Date        : Aug 23, 2001                                   --
-- Date        : Aug 23, 2001                                   --
-- Version     : 1.1                                            --
-- Version     : 1.1                                            --
-- Author      : Martadinata A.                                 --
-- Author      : Martadinata A.                                 --
-- Address     : VLSI RG, Dept. of Electrical Engineering ITB,  --
-- Address     : VLSI RG, Dept. of Electrical Engineering ITB,  --
--               Bandung, Indonesia                             --
--               Bandung, Indonesia                             --
-- E-mail      : marta@ic.vlsi.itb.ac.id                        --
-- E-mail      : marta@ic.vlsi.itb.ac.id                        --
entity heart_ctrl is
entity heart_ctrl is
port(
port(
ck,reset,start,key_ready           : in  bit;
ck,reset,start,key_ready           : in  bit;
round                              : out  bit_vector(2 downto 0);
round                              : out  bit_vector(2 downto 0);
en1,en2,en3,en4,en5,en6,en7,en_out : out bit;
en1,en2,en3,en4,en5,en6,en7,en_out : out bit;
en_key_out,sel_in                  : out bit;
en_key_out,sel_in                  : out bit;
finish                             : out bit;
finish                             : out bit;
vdd, vss                           : in bit
vdd, vss                           : in bit
);
);
end heart_ctrl;
end heart_ctrl;
architecture fsm of heart_ctrl is
architecture fsm of heart_ctrl is
type STATE_TYPE is (S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,
type STATE_TYPE is (S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,
S15,S16,S17,S18,S19,S20,S21,S22,S23,S24,S25,S26,S27,S28,S29,S30,S31,
S15,S16,S17,S18,S19,S20,S21,S22,S23,S24,S25,S26,S27,S28,S29,S30,S31,
S32,S33,S34,S35,S36,S37,S38,S39,S40,S41,S42,S43,S44,S45,S46,
S32,S33,S34,S35,S36,S37,S38,S39,S40,S41,S42,S43,S44,S45,S46,
S47,S48,S49,S50,S51,S52,S53,S54,S55,S56,S57,S58,S59,S60,S61,S62,S63,S64,
S47,S48,S49,S50,S51,S52,S53,S54,S55,S56,S57,S58,S59,S60,S61,S62,S63,S64,
S65,S66,S67);
S65,S66,S67);
-- pragma CLOCK ck
-- pragma CLOCK ck
-- pragma CURRENT_STATE CURRENT_STATE
-- pragma CURRENT_STATE CURRENT_STATE
-- pragma NEXT_STATE NEXT_STATE
-- pragma NEXT_STATE NEXT_STATE
signal CURRENT_STATE,NEXT_STATE: STATE_TYPE;
signal CURRENT_STATE,NEXT_STATE: STATE_TYPE;
begin
begin
process (CURRENT_STATE,start,key_ready,reset)
process (CURRENT_STATE,start,key_ready,reset)
   begin
   begin
      if (reset = '1') then
      if (reset = '1') then
                NEXT_STATE <= S1;
                NEXT_STATE <= S1;
      else
      else
         case CURRENT_STATE is
         case CURRENT_STATE is
-- round 1 --
-- round 1 --
              when S1 =>
              when S1 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 round <= "000";
                 round <= "000";
                 sel_in <= '0';
                 sel_in <= '0';
                 finish <= '0';
                 finish <= '0';
                 if((start and key_ready) = '1') then
                 if((start and key_ready) = '1') then
                     en_key_out <= '1';
                     en_key_out <= '1';
                     NEXT_STATE <= S2;
                     NEXT_STATE <= S2;
                 else
                 else
                     en_key_out <= '0';
                     en_key_out <= '0';
                     NEXT_STATE <= S1;
                     NEXT_STATE <= S1;
                 end if;
                 end if;
              when S2 =>
              when S2 =>
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "000";
                 round <= "000";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '0';
                 sel_in <= '0';
                 NEXT_STATE <= S3;
                 NEXT_STATE <= S3;
              when S3 =>
              when S3 =>
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "000";
                 round <= "000";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '0';
                 sel_in <= '0';
                 NEXT_STATE <= S4;
                 NEXT_STATE <= S4;
              when S4 =>
              when S4 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "000";
                 round <= "000";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '0';
                 sel_in <= '0';
                 NEXT_STATE <= S5;
                 NEXT_STATE <= S5;
              when S5 =>
              when S5 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "000";
                 round <= "000";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '0';
                 sel_in <= '0';
                 NEXT_STATE <= S6;
                 NEXT_STATE <= S6;
              when S6 =>
              when S6 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "000";
                 round <= "000";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '0';
                 sel_in <= '0';
                 NEXT_STATE <= S7;
                 NEXT_STATE <= S7;
              when S7 =>
              when S7 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "000";
                 round <= "000";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '0';
                 sel_in <= '0';
                 NEXT_STATE <= S8;
                 NEXT_STATE <= S8;
              when S8 =>
              when S8 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "000";
                 round <= "000";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '0';
                 sel_in <= '0';
                 NEXT_STATE <= S9;
                 NEXT_STATE <= S9;
-- round 2 --
-- round 2 --
              when S9 =>
              when S9 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "001";
                 round <= "001";
                 en_key_out <= '1';
                 en_key_out <= '1';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S10;
                 NEXT_STATE <= S10;
              when S10 =>
              when S10 =>
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "001";
                 round <= "001";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S11;
                 NEXT_STATE <= S11;
              when S11 =>
              when S11 =>
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "001";
                 round <= "001";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S12;
                 NEXT_STATE <= S12;
              when S12 =>
              when S12 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "001";
                 round <= "001";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S13;
                 NEXT_STATE <= S13;
              when S13 =>
              when S13 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "001";
                 round <= "001";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S14;
                 NEXT_STATE <= S14;
              when S14 =>
              when S14 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "001";
                 round <= "001";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S15;
                 NEXT_STATE <= S15;
              when S15 =>
              when S15 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "001";
                 round <= "001";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S16;
                 NEXT_STATE <= S16;
              when S16 =>
              when S16 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "001";
                 round <= "001";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S17;
                 NEXT_STATE <= S17;
-- round 3 --
-- round 3 --
              when S17 =>
              when S17 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "010";
                 round <= "010";
                 en_key_out <= '1';
                 en_key_out <= '1';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S18;
                 NEXT_STATE <= S18;
              when S18 =>
              when S18 =>
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "010";
                 round <= "010";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S19;
                 NEXT_STATE <= S19;
              when S19 =>
              when S19 =>
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "010";
                 round <= "010";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S20;
                 NEXT_STATE <= S20;
              when S20 =>
              when S20 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "010";
                 round <= "010";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S21;
                 NEXT_STATE <= S21;
              when S21 =>
              when S21 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "010";
                 round <= "010";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S22;
                 NEXT_STATE <= S22;
              when S22 =>
              when S22 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "010";
                 round <= "010";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S23;
                 NEXT_STATE <= S23;
              when S23 =>
              when S23 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "010";
                 round <= "010";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S24;
                 NEXT_STATE <= S24;
              when S24 =>
              when S24 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "010";
                 round <= "010";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S25;
                 NEXT_STATE <= S25;
-- round 4 --
-- round 4 --
              when S25 =>
              when S25 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "011";
                 round <= "011";
                 en_key_out <= '1';
                 en_key_out <= '1';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S26;
                 NEXT_STATE <= S26;
              when S26 =>
              when S26 =>
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "011";
                 round <= "011";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S27;
                 NEXT_STATE <= S27;
              when S27 =>
              when S27 =>
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "011";
                 round <= "011";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S28;
                 NEXT_STATE <= S28;
              when S28 =>
              when S28 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "011";
                 round <= "011";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S29;
                 NEXT_STATE <= S29;
              when S29 =>
              when S29 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "011";
                 round <= "011";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S30;
                 NEXT_STATE <= S30;
              when S30 =>
              when S30 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "011";
                 round <= "011";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S31;
                 NEXT_STATE <= S31;
              when S31 =>
              when S31 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "011";
                 round <= "011";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S32;
                 NEXT_STATE <= S32;
              when S32 =>
              when S32 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "011";
                 round <= "011";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S33;
                 NEXT_STATE <= S33;
-- round 5 --
-- round 5 --
              when S33 =>
              when S33 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "100";
                 round <= "100";
                 en_key_out <= '1';
                 en_key_out <= '1';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S34;
                 NEXT_STATE <= S34;
              when S34 =>
              when S34 =>
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "100";
                 round <= "100";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S35;
                 NEXT_STATE <= S35;
              when S35 =>
              when S35 =>
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "100";
                 round <= "100";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S36;
                 NEXT_STATE <= S36;
              when S36 =>
              when S36 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "100";
                 round <= "100";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S37;
                 NEXT_STATE <= S37;
              when S37 =>
              when S37 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "100";
                 round <= "100";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S38;
                 NEXT_STATE <= S38;
              when S38 =>
              when S38 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "100";
                 round <= "100";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S39;
                 NEXT_STATE <= S39;
              when S39 =>
              when S39 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "100";
                 round <= "100";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S40;
                 NEXT_STATE <= S40;
              when S40 =>
              when S40 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "100";
                 round <= "100";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S41;
                 NEXT_STATE <= S41;
-- round 6 --
-- round 6 --
              when S41 =>
              when S41 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "101";
                 round <= "101";
                 en_key_out <= '1';
                 en_key_out <= '1';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S42;
                 NEXT_STATE <= S42;
              when S42 =>
              when S42 =>
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "101";
                 round <= "101";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S43;
                 NEXT_STATE <= S43;
              when S43 =>
              when S43 =>
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "101";
                 round <= "101";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S44;
                 NEXT_STATE <= S44;
              when S44 =>
              when S44 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "101";
                 round <= "101";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S45;
                 NEXT_STATE <= S45;
              when S45 =>
              when S45 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "101";
                 round <= "101";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S46;
                 NEXT_STATE <= S46;
              when S46 =>
              when S46 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "101";
                 round <= "101";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S47;
                 NEXT_STATE <= S47;
              when S47 =>
              when S47 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "101";
                 round <= "101";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S48;
                 NEXT_STATE <= S48;
              when S48 =>
              when S48 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "101";
                 round <= "101";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S49;
                 NEXT_STATE <= S49;
-- round 7 --
-- round 7 --
             when S49 =>
             when S49 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "110";
                 round <= "110";
                 en_key_out <= '1';
                 en_key_out <= '1';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S50;
                 NEXT_STATE <= S50;
              when S50 =>
              when S50 =>
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "110";
                 round <= "110";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S51;
                 NEXT_STATE <= S51;
              when S51 =>
              when S51 =>
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "110";
                 round <= "110";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S52;
                 NEXT_STATE <= S52;
              when S52 =>
              when S52 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "110";
                 round <= "110";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S53;
                 NEXT_STATE <= S53;
              when S53 =>
              when S53 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "110";
                 round <= "110";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S54;
                 NEXT_STATE <= S54;
              when S54 =>
              when S54 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "110";
                 round <= "110";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S55;
                 NEXT_STATE <= S55;
              when S55 =>
              when S55 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "110";
                 round <= "110";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S56;
                 NEXT_STATE <= S56;
              when S56 =>
              when S56 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "110";
                 round <= "110";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S57;
                 NEXT_STATE <= S57;
-- round 8 --
-- round 8 --
              when S57 =>
              when S57 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "111";
                 round <= "111";
                 en_key_out <= '1';
                 en_key_out <= '1';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S58;
                 NEXT_STATE <= S58;
              when S58 =>
              when S58 =>
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '1'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "111";
                 round <= "111";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S59;
                 NEXT_STATE <= S59;
              when S59 =>
              when S59 =>
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '1'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "111";
                 round <= "111";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S60;
                 NEXT_STATE <= S60;
              when S60 =>
              when S60 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '1'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "111";
                 round <= "111";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S61;
                 NEXT_STATE <= S61;
              when S61 =>
              when S61 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '1';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "111";
                 round <= "111";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S62;
                 NEXT_STATE <= S62;
              when S62 =>
              when S62 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '1'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "111";
                 round <= "111";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S63;
                 NEXT_STATE <= S63;
              when S63 =>
              when S63 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '1'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "111";
                 round <= "111";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S64;
                 NEXT_STATE <= S64;
              when S64 =>
              when S64 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '1'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "111";
                 round <= "111";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '1';
                 sel_in <= '1';
                 NEXT_STATE <= S65;
                 NEXT_STATE <= S65;
-- output transformation --
-- output transformation --
              when S65 =>
              when S65 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '0';
                 finish <= '0';
                 round <= "111";
                 round <= "111";
                 en_key_out <= '1';
                 en_key_out <= '1';
                 sel_in <= '0';
                 sel_in <= '0';
                 NEXT_STATE <= S66;
                 NEXT_STATE <= S66;
              when S66 =>
              when S66 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '1';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '1';
                 finish <= '0';
                 finish <= '0';
                 round <= "111";
                 round <= "111";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '0';
                 sel_in <= '0';
                 NEXT_STATE <= S67;
                 NEXT_STATE <= S67;
              when S67 =>
              when S67 =>
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en1 <= '0'; en2 <= '0'; en3 <= '0'; en4 <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 en5 <= '0'; en6 <= '0'; en7 <= '0'; en_out <= '0';
                 finish <= '1';
                 finish <= '1';
                 round <= "111";
                 round <= "111";
                 en_key_out <= '0';
                 en_key_out <= '0';
                 sel_in <= '0';
                 sel_in <= '0';
                 NEXT_STATE <= S1;
                 NEXT_STATE <= S1;
              when others =>
              when others =>
                 assert('1')
                 assert('1')
                 report "Illegal state";
                 report "Illegal state";
         end case;
         end case;
      end if;
      end if;
end process;
end process;
process (ck)
process (ck)
  begin
  begin
     if ((ck AND NOT ck'STABLE) = '1') then
     if ((ck AND NOT ck'STABLE) = '1') then
             CURRENT_STATE <= NEXT_STATE;
             CURRENT_STATE <= NEXT_STATE;
     end if;
     end if;
end process;
end process;
end fsm;
end fsm;
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.