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

Subversion Repositories idea

[/] [idea/] [trunk/] [behavioral/] [main control/] [cbc_bop.vbe] - Rev 10

Go to most recent revision | Compare with Previous | Blame | View Log

-- VHDL data flow description generated from `cbc_bop`
--              date : Sat Sep  1 20:13:41 2001


-- Entity Declaration

ENTITY cbc_bop IS
  PORT (
  active : in BIT;      -- active
  clk : in BIT; -- clk
  cke : in BIT; -- cke
  ikey_ready : in BIT;  -- ikey_ready
  key_ready : in BIT;   -- key_ready
  dt_ready : in BIT;    -- dt_ready
  finish : in BIT;      -- finish
  e : in BIT;   -- e
  first_dt : inout BIT; -- first_dt
  e_mesin : out BIT;    -- e_mesin
  s_mesin : out BIT;    -- s_mesin
  s_gen_key : out BIT;  -- s_gen_key
  emp_buf : out BIT;    -- emp_buf
  cp_ready : out BIT;   -- cp_ready
  cke_b_mode : out BIT; -- cke_b_mode
  en_in : out BIT;      -- en_in
  en_iv : out BIT;      -- en_iv
  en_rcbc : out BIT;    -- en_rcbc
  en_out : out BIT;     -- en_out
  sel1 : out bit_vector(1 DOWNTO 0) ;   -- sel1
  sel2 : out bit_vector(1 DOWNTO 0) ;   -- sel2
  sel3 : out bit_vector(1 DOWNTO 0) ;   -- sel3
  vdd : in BIT; -- vdd
  vss : in BIT  -- vss
  );
END cbc_bop;


-- Architecture Declaration

ARCHITECTURE behaviour_data_flow OF cbc_bop IS
  SIGNAL current_state : REG_VECTOR(3 DOWNTO 0) REGISTER;       -- current_state
  SIGNAL aux85 : BIT;           -- aux85
  SIGNAL aux82 : BIT;           -- aux82
  SIGNAL aux74 : BIT;           -- aux74
  SIGNAL aux69 : BIT;           -- aux69
  SIGNAL aux63 : BIT;           -- aux63
  SIGNAL aux60 : BIT;           -- aux60
  SIGNAL aux59 : BIT;           -- aux59
  SIGNAL aux58 : BIT;           -- aux58
  SIGNAL aux57 : BIT;           -- aux57
  SIGNAL auxinit2 : BIT;                -- auxinit2
  SIGNAL aux77 : BIT;           -- aux77
  SIGNAL aux78 : BIT;           -- aux78

BEGIN
  aux78 <= (not (active) and ((cke and ikey_ready) or aux69));
  aux77 <= (not (current_state (2)) and not (active) and not (current_state
(0)) and not (current_state (1)) and current_state (3));
  auxinit2 <= (not (current_state (3)) and ((current_state (1) and not (finish)
and not (active) and current_state (0)) or aux74));
  aux57 <= (dt_ready and e);
  aux58 <= (not (active) and not ((not (key_ready) or first_dt)) and aux57);
  aux59 <= ((not (current_state (3)) and not (current_state (1)) and not
(current_state (0)) and current_state (2) and aux58) or (aux57
and aux77));
  aux60 <= (not (active) and current_state (2));
  aux63 <= (current_state (1) or current_state (0));
  aux69 <= not ((current_state (3) and not (current_state (1)) and not (current_state
(0)) and current_state (2)));
  aux74 <= (not (current_state (1)) and ((not (current_state (2)) and not
(active)) or (not (current_state (0)) and not (active) and key_ready
and dt_ready and first_dt)));
  aux82 <= (not (current_state (3)) and ((not (active) and not (current_state
(0)) and current_state (1)) or (aux60 and not ((not (current_state
(0)) and not ((key_ready and dt_ready)))))));
  aux85 <= (finish and not (current_state (3)) and current_state (1) and
current_state (0));
  label0 : BLOCK ((not (clk) and not (clk'STABLE)) = '1')
  BEGIN
    current_state (0) <= GUARDED ((not ((not (current_state (3)) or active)) and (not (current_state
(1)) or aux60) and not ((not (e) and (current_state (2) or current_state
(1)))) and (current_state (0) or (not (current_state (2)) and
aux57))) or (not (current_state (3)) and ((not (current_state
(2)) and not (active)) or (current_state (1) and not (active)
and current_state (0)) or (not (aux63) and aux58))));
  END BLOCK label0;
  label1 : BLOCK ((not (clk) and not (clk'STABLE)) = '1')
  BEGIN
    current_state (1) <= GUARDED ((not (current_state (3)) or (not (active) and (current_state
(1) or (current_state (2) and current_state (0))))) and (current_state
(3) or (current_state (1) and (aux60 or (not (finish) and not
(active) and current_state (0)))) or aux74));
  END BLOCK label1;
  label2 : BLOCK ((not (clk) and not (clk'STABLE)) = '1')
  BEGIN
    current_state (2) <= GUARDED (active or (current_state (1) and not ((not (current_state (2))
and current_state (0)))) or (not (current_state (0)) and current_state
(2) and not ((key_ready and dt_ready))) or (current_state (3)
and (current_state (2) xor current_state (0))));
  END BLOCK label2;
  label3 : BLOCK ((not (clk) and not (clk'STABLE)) = '1')
  BEGIN
    current_state (3) <= GUARDED (active or (current_state (2) and aux63) or aux85 or (not (current_state
(1)) and current_state (3) and (current_state (0) or (not (current_state
(2)) and not (dt_ready)) or (current_state (2) and not ((cke
and ikey_ready))))));
  END BLOCK label3;

sel3 (0) <= '0';

sel3 (1) <= (not (dt_ready) or active or e or (not (current_state (3)) and
not (current_state (2))) or aux63 or (current_state (2) and
(current_state (3) or not (key_ready) or first_dt)));

sel2 (0) <= aux59;

sel2 (1) <= not (aux59);

sel1 (0) <= ((aux60 and (current_state (1) or (not (e) and current_state
(0)))) or aux77 or aux82);

sel1 (1) <= ((not (current_state (3)) or active or (current_state (2) xor
aux63)) and not (aux82));

en_out <= (current_state (3) and not (active) and current_state (0) and
(not (current_state (1)) or current_state (2)));

en_rcbc <= (not (active) and aux85);

en_iv <= (not (active) and current_state (1) and (current_state (3) or
not ((not (current_state (2)) and current_state (0)))));

en_in <= auxinit2;

cke_b_mode <= (not (active) and cke and (ikey_ready or aux69));

cp_ready <= (not (active) and current_state (1) and not ((not (current_state
(3)) and not (current_state (2)))));

emp_buf <= auxinit2;

s_gen_key <= aux78;

s_mesin <= (not (active) and aux85);

e_mesin <= (e or not (aux78));

first_dt <= ((dt_ready and not (current_state (0)) and not (current_state
(1)) and current_state (3)) or not ((not (active) and not ((not
(current_state (1)) and not (current_state (0)) and current_state
(2))))));
END;

Go to most recent revision | 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.