library ieee;
use ieee.std_logic_1164.all;
package crypt_pack is
subtype INT32 is STD_LOGIC_VECTOR(31 downto 0); -- MSB is 31, LSB is 0
component crypt -- Crypto core
port( k0, k1: in INT32;
RV0: out STD_LOGIC;
CLOCK: in STD_LOGIC;
DONE: out STD_LOGIC;
RESET: in STD_LOGIC);
end component;
FUNCTION "xor" ( l:STD_LOGIC_VECTOR; r:INTEGER ) RETURN STD_LOGIC_VECTOR;
FUNCTION "xor" ( l:INTEGER; r:STD_LOGIC_VECTOR ) RETURN STD_LOGIC_VECTOR;
-- FUNCTION "sll" ( l,r:STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR;
-- FUNCTION "srl" ( l,r:STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR;
FUNCTION SHL( l:STD_LOGIC_VECTOR; r:INTEGER ) RETURN STD_LOGIC_VECTOR;
FUNCTION SHL( l:INTEGER; r:STD_LOGIC_VECTOR ) RETURN STD_LOGIC_VECTOR;
FUNCTION SHR( l:STD_LOGIC_VECTOR; r:INTEGER ) RETURN STD_LOGIC_VECTOR;
FUNCTION SHR( l:INTEGER; r:STD_LOGIC_VECTOR ) RETURN STD_LOGIC_VECTOR;
FUNCTION To_INT32 ( l:INTEGER ) RETURN STD_LOGIC_VECTOR;
FUNCTION To_INT32 ( b:BIT_VECTOR ) RETURN STD_LOGIC_VECTOR;
end;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
package body crypt_pack is
FUNCTION To_INT32 ( l:INTEGER ) RETURN STD_LOGIC_VECTOR is
begin
return CONV_STD_LOGIC_VECTOR(l, 32);
end;
FUNCTION To_INT32 ( b:BIT_VECTOR ) RETURN STD_LOGIC_VECTOR is
begin
return To_StdLogicVector(b);
end;
FUNCTION "xor" ( l:STD_LOGIC_VECTOR; r:INTEGER ) RETURN STD_LOGIC_VECTOR is
begin
return l xor CONV_STD_LOGIC_VECTOR(r, l'length);
end;
FUNCTION "xor" ( l:INTEGER; r:STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR is
begin
return CONV_STD_LOGIC_VECTOR(l, r'length) xor r;
end;
-- FUNCTION "sll" ( l,r:STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR is
-- begin
-- return SHL(l, r);
-- end;
-- FUNCTION "srl" ( l,r:STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR is
-- begin
-- return SHR(l, r);
-- end;
-- FUNCTION "sll" ( l:STD_LOGIC_VECTOR; r:INTEGER ) RETURN STD_LOGIC_VECTOR is
-- return l(r to l'length) & 'r' zeros.
FUNCTION SHL( l:STD_LOGIC_VECTOR; r:INTEGER ) RETURN STD_LOGIC_VECTOR is
begin
return SHL(l, CONV_STD_LOGIC_VECTOR(r, l'length));
end;
FUNCTION SHL( l:INTEGER; r:STD_LOGIC_VECTOR ) RETURN STD_LOGIC_VECTOR is
begin
return SHL(CONV_STD_LOGIC_VECTOR(l, r'length), r);
end;
FUNCTION SHR( l:STD_LOGIC_VECTOR; r:INTEGER ) RETURN STD_LOGIC_VECTOR is
begin
return SHR(l, CONV_STD_LOGIC_VECTOR(r, l'length));
end;
FUNCTION SHR( l:INTEGER; r:STD_LOGIC_VECTOR ) RETURN STD_LOGIC_VECTOR is
begin
return SHR(CONV_STD_LOGIC_VECTOR(l, r'length), r);
end;
end;