------------------------------------------------------------
-- 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 subst256 is
  
  port (
    AxDI : in  std_logic_vector(31 downto 0);
    BxDI : in  std_logic_vector(31 downto 0);
    CxDI : in  std_logic_vector(31 downto 0);
    DxDI : in  std_logic_vector(31 downto 0);
    AxDO : out std_logic_vector(31 downto 0);
    BxDO : out std_logic_vector(31 downto 0);
    CxDO : out std_logic_vector(31 downto 0);
    DxDO : out std_logic_vector(31 downto 0));

end subst256;

architecture rtl of subst256 is

  signal T1xD, T2xD, T3xD, T4xD, T5xD, T6xD, T7xD : std_logic_vector(31 downto 0);

begin  -- rtl

   T1xD <= (AxDI and CxDI) xor DxDI;
   T2xD <= CxDI xor BxDI xor T1xD;
   T3xD <= (DxDI or AxDI) xor BxDI;
   T4xD <= AxDI xor T2xD;
   T5xD <= (T3xD or T4xD) xor T1xD;
   T6xD <= T1xD and T3xD;
   T7xD <= T4xD xor T6xD;
   AxDO <= T2xD;
   BxDO <= T5xD;
   CxDO <= T3xD xor T5xD xor T7xD;
   DxDO <= not T7xD;
             
end rtl;

Generated on Fri Sep 24 10:39:12 CEST 2010
Home