------------------------------------------------------------ -- Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich -- http://www.iis.ee.ethz.ch/~sha3 ------------------------------------------------------------ library ieee; use ieee.numeric_std.all; use ieee.std_logic_1164.all; use work.hamsipkg.all; entity expansion is port ( DINxDI : in data; D1xDO : out std_logic_vector(31 downto 0); D2xDO : out std_logic_vector(31 downto 0); D3xDO : out std_logic_vector(31 downto 0); D4xDO : out std_logic_vector(31 downto 0); D5xDO : out std_logic_vector(31 downto 0); D6xDO : out std_logic_vector(31 downto 0); D7xDO : out std_logic_vector(31 downto 0); D8xDO : out std_logic_vector(31 downto 0)); end expansion; architecture rtl of expansion is begin -- rtl -- Expansion and Concatenation ----------------------------------------------------------------------------- -- D1xDO DINxDI(0))), 0) xor T256(1, to_integer(unsigned(DINxDI(1))), 0) xor T256(2, to_integer(unsigned(DINxDI(2))), 0) xor T256(3, to_integer(unsigned(DINxDI(3))), 0); -- D2xDO DINxDI(0))), 1) xor T256(1, to_integer(unsigned(DINxDI(1))), 1) xor T256(2, to_integer(unsigned(DINxDI(2))), 1) xor T256(3, to_integer(unsigned(DINxDI(3))), 1); -- D3xDO DINxDI(0))), 2) xor T256(1, to_integer(unsigned(DINxDI(1))), 2) xor T256(2, to_integer(unsigned(DINxDI(2))), 2) xor T256(3, to_integer(unsigned(DINxDI(3))), 2); -- D4xDO DINxDI(0))), 3) xor T256(1, to_integer(unsigned(DINxDI(1))), 3) xor T256(2, to_integer(unsigned(DINxDI(2))), 3) xor T256(3, to_integer(unsigned(DINxDI(3))), 3); -- D5xDO DINxDI(0))), 4) xor T256(1, to_integer(unsigned(DINxDI(1))), 4) xor T256(2, to_integer(unsigned(DINxDI(2))), 4) xor T256(3, to_integer(unsigned(DINxDI(3))), 4); -- D6xDO DINxDI(0))), 5) xor T256(1, to_integer(unsigned(DINxDI(1))), 5) xor T256(2, to_integer(unsigned(DINxDI(2))), 5) xor T256(3, to_integer(unsigned(DINxDI(3))), 5); -- D7xDO DINxDI(0))), 6) xor T256(1, to_integer(unsigned(DINxDI(1))), 6) xor T256(2, to_integer(unsigned(DINxDI(2))), 6) xor T256(3, to_integer(unsigned(DINxDI(3))), 6); -- D8xDO DINxDI(0))), 7) xor T256(1, to_integer(unsigned(DINxDI(1))), 7) xor T256(2, to_integer(unsigned(DINxDI(2))), 7) xor T256(3, to_integer(unsigned(DINxDI(3))), 7); T0xDO <= T256(0, to_integer(unsigned(DINxDI(0)))); T1xDO <= T256(1, to_integer(unsigned(DINxDI(0)))); T2xDO <= T256(2, to_integer(unsigned(DINxDI(0)))); T3xDO <= T256(3, to_integer(unsigned(DINxDI(0)))); D1xDO <= T0xDO(0) xor T1xDO(0) xor T2xDO(0) xor T3xDO(0); D2xDO <= T0xDO(1) xor T1xDO(1) xor T2xDO(1) xor T3xDO(1); D3xDO <= T0xDO(2) xor T1xDO(2) xor T2xDO(2) xor T3xDO(2); D4xDO <= T0xDO(3) xor T1xDO(3) xor T2xDO(3) xor T3xDO(3); D5xDO <= T0xDO(4) xor T1xDO(4) xor T2xDO(4) xor T3xDO(4); D6xDO <= T0xDO(5) xor T1xDO(5) xor T2xDO(5) xor T3xDO(5); D7xDO <= T0xDO(6) xor T1xDO(6) xor T2xDO(6) xor T3xDO(6); D8xDO <= T0xDO(7) xor T1xDO(7) xor T2xDO(7) xor T3xDO(7); end rtl;