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

Subversion Repositories idea

[/] [idea/] [trunk/] [behavioral/] [idea_machine/] [heart_ctrl_bop.vbe] - Rev 9

Compare with Previous | Blame | View Log

-- VHDL data flow description generated from `heart_ctrl_bop`
--              date : Sat Sep  1 15:57:59 2001


-- Entity Declaration

ENTITY heart_ctrl_bop IS
  PORT (
  vss : in BIT; -- vss
  vdd : in BIT; -- vdd
  finish : out BIT;     -- finish
  reset_crnd : out BIT; -- reset_crnd
  ck_crnd : out BIT;    -- ck_crnd
  sel_in : out BIT;     -- sel_in
  en_key_out : out BIT; -- en_key_out
  en_out : out BIT;     -- en_out
  en7 : out BIT;        -- en7
  en6 : out BIT;        -- en6
  en5 : out BIT;        -- en5
  en4 : out BIT;        -- en4
  en3 : out BIT;        -- en3
  en2 : out BIT;        -- en2
  en1 : out BIT;        -- en1
  round : in bit_vector(0 TO 2) ;       -- round
  key_ready : in BIT;   -- key_ready
  start : in BIT;       -- start
  reset : in BIT;       -- reset
  ck : in BIT   -- ck
  );
END heart_ctrl_bop;


-- Architecture Declaration

ARCHITECTURE behaviour_data_flow OF heart_ctrl_bop IS
  SIGNAL current_state : REG_VECTOR(0 TO 3) REGISTER;   -- current_state
  SIGNAL aux10 : BIT;           -- aux10
  SIGNAL aux9 : BIT;            -- aux9
  SIGNAL aux8 : BIT;            -- aux8
  SIGNAL aux0 : BIT;            -- aux0
  SIGNAL current_state_s0 : BIT;                -- current_state_s0
  SIGNAL current_state_s5 : BIT;                -- current_state_s5
  SIGNAL current_state_s6 : BIT;                -- current_state_s6
  SIGNAL current_state_s7 : BIT;                -- current_state_s7
  SIGNAL current_state_s9 : BIT;                -- current_state_s9
  SIGNAL current_state_s10 : BIT;               -- current_state_s10
  SIGNAL aux5 : BIT;            -- aux5

BEGIN
  aux5 <= (round (2) and round (1) and round (0) and current_state (1)
and not (current_state (0)) and not (current_state (3)));
  current_state_s10 <= (current_state (2) and current_state (3) and current_state (0));
  current_state_s9 <= (not (current_state (1)) and not (current_state (3)) and current_state
(2));
  current_state_s7 <= (not (current_state (0)) and current_state (3) and not (current_state
(2)) and current_state (1));
  current_state_s6 <= (not (current_state (3)) and current_state (0) and not (current_state
(2)) and current_state (1));
  current_state_s5 <= (current_state (3) and not (current_state (1)) and not (current_state
(2)));
  current_state_s0 <= (not (current_state (3)) and current_state (2) and current_state
(1));
  aux0 <= (start and key_ready and not (current_state (0)) and not (current_state
(3)) and not (current_state (1)) and not (current_state (2)));
  aux8 <= (not (reset) and current_state (1) and not (current_state (0))
and not (current_state (3)));
  aux9 <= ((not (current_state (1)) and current_state (0)) or (not (current_state
(2)) and current_state (3) and current_state (0)));
  aux10 <= ((current_state (2) and not (current_state (0)) and current_state
(3)) or aux9);
  label0 : BLOCK ((ck and not (ck'STABLE)) = '1')
  BEGIN
    current_state (3) <= GUARDED (not (reset) and (current_state_s9 or current_state_s6 or aux10));
  END BLOCK label0;
  label1 : BLOCK ((ck and not (ck'STABLE)) = '1')
  BEGIN
    current_state (2) <= GUARDED (reset or current_state_s9 or (not (current_state (2)) and current_state
(3) and current_state (0)) or aux5);
  END BLOCK label1;
  label2 : BLOCK ((ck and not (ck'STABLE)) = '1')
  BEGIN
    current_state (1) <= GUARDED (reset or current_state_s9 or current_state_s7 or current_state_s5
or current_state_s6 or aux9);
  END BLOCK label2;
  label3 : BLOCK ((ck and not (ck'STABLE)) = '1')
  BEGIN
    current_state (0) <= GUARDED (reset or (not (current_state (1)) and current_state (0)) or
current_state_s9 or current_state_s5 or aux0);
  END BLOCK label3;

en1 <= (not (reset) and not (current_state (1)) and current_state (0));

en2 <= (not (reset) and not (current_state (2)) and current_state (3)
and current_state (0));

en3 <= (not (reset) and current_state (2) and not (current_state (0))
and current_state (3));

en4 <= (not (reset) and current_state_s5);

en5 <= (not (reset) and current_state_s6);

en6 <= (not (reset) and current_state_s7);

en7 <= aux8;

en_out <= (not (reset) and current_state_s9);

en_key_out <= ((not (reset) and aux5) or (not (reset) and aux0));

sel_in <= (not (reset) and (round (2) or round (1) or round (0)) and ((current_state
(1) and not (current_state (0)) and not (current_state (3)))
or current_state_s7 or current_state_s5 or current_state_s6
or aux0 or aux10));

ck_crnd <= ((not ((round (2) and round (1) and round (0))) and aux8) or
(not (reset) and (current_state_s10 or current_state_s0)));

reset_crnd <= (not (reset) and current_state_s0);

finish <= (not (reset) and current_state_s10);
END;

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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