------------------------------------------------------------
-- 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 diff256 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 diff256;

architecture rtl of diff256 is

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

begin  -- rtl

  T1xD <= AxDI(31-13 downto 0) & AxDI (31 downto 31-13+1);
  T2xD <= CxDI(31-3 downto 0) & CxDI (31 downto 31-3+1);
  T3xD <= BxDI xor T1xD xor T2xD;
  T4xD <= DxDI xor T2xD xor (T1xD(31-3 downto 0) & "000");

  T5xD <= T3xD(31-1 downto 0) & T3xD(31);
  T6xD <= T4xD(31-7 downto 0) & T4xD(31 downto 31-7+1);
  T7xD <= T1xD xor T5xD xor T6xD;
  T8xD <= T2xD xor T6xD xor (T5xD(31-7 downto 0) & "0000000");

  AxDO <= T7xD(31-5 downto 0) & T7xD(31 downto 31-5+1);
  CxDO <= T8xD(31-22 downto 0) & T8xD(31 downto 31-22+1);
  BxDO <= T5xD;
  DxDO <= T6xD;
             
end rtl;

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