diff --git a/aes/rtl/vhdl/aes_pkg.vhd b/aes/rtl/vhdl/aes_pkg.vhd index 60dca15..a65b365 100644 --- a/aes/rtl/vhdl/aes_pkg.vhd +++ b/aes/rtl/vhdl/aes_pkg.vhd @@ -146,6 +146,8 @@ package aes_pkg is function bytesub (input : std_logic_vector(7 downto 0)) return std_logic_vector; function invbytesub (input : std_logic_vector(7 downto 0)) return std_logic_vector; + function subword (input : t_datatable1d) return t_datatable1d; + function subbytes (input : in t_datatable2d) return t_datatable2d; function invsubbytes (input : in t_datatable2d) return t_datatable2d; @@ -203,6 +205,16 @@ package body aes_pkg is end function invbytesub; + function subword (input : t_datatable1d) return t_datatable1d is + v_data : t_datatable1d; + begin + for i in 0 to 3 loop + v_data(i) := c_sbox(to_integer(unsigned(input(i)(7 downto 4))))(to_integer(unsigned(input(i)(3 downto 0)))); + end loop; + return v_data; + end function subword; + + function subbytes (input : in t_datatable2d) return t_datatable2d is variable v_data : t_datatable2d; begin