OpenCores
URL https://opencores.org/ocsvn/mini_aes/mini_aes/trunk

Subversion Repositories mini_aes

[/] [mini_aes/] [trunk/] [source/] [mini_aes.vhdl] - Diff between revs 2 and 5

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 2 Rev 5
Line 1... Line 1...
-- $Id: mini_aes.vhdl,v 1.1.1.1 2005-12-06 02:48:33 arif_endro Exp $
-- $Id: mini_aes.vhdl,v 1.2 2005-12-23 04:21:39 arif_endro Exp $
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- Title       : Mini AES 128
-- Title       : Mini AES 128
-- Project     : Mini AES 128 
-- Project     : Mini AES 128 
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- File        : mini_aes.vhdl
-- File        : mini_aes.vhdl
Line 45... Line 45...
 
 
entity mini_aes is
entity mini_aes is
  port (
  port (
    clock  : in  std_logic;
    clock  : in  std_logic;
    clear  : in  std_logic;
    clear  : in  std_logic;
 
    load_i : in  std_logic;
    enc    : in  std_logic;             -- active low (e.g. 0 = encrypt, 1 = decrypt)
    enc    : in  std_logic;             -- active low (e.g. 0 = encrypt, 1 = decrypt)
    key_i  : in  std_logic_vector (127 downto 00);
    key_i  : in  std_logic_vector (7 downto 0);
    data_i : in  std_logic_vector (127 downto 00);
    data_i : in  std_logic_vector (7 downto 0);
    data_o : out std_logic_vector (127 downto 00);
    data_o : out std_logic_vector (7 downto 0);
    done_o : out std_logic
    done_o : out std_logic
    );
    );
end mini_aes;
end mini_aes;
 
 
architecture data_flow of mini_aes is
architecture data_flow of mini_aes is
 
 
 
  component io_interface
 
    port (
 
      clock      : in  std_logic;
 
      clear      : in  std_logic;
 
      load_i     : in  std_logic;
 
      load_i_int : out std_logic;
 
      data_i     : in  std_logic_vector (7 downto 0);
 
      key_i      : in  std_logic_vector (7 downto 0);
 
      data_o     : out std_logic_vector (7 downto 0);
 
      data_o_int : in  std_logic_vector (127 downto 000);
 
      data_i_int : out std_logic_vector (127 downto 000);
 
      key_i_int  : out std_logic_vector (127 downto 000);
 
      done_o_int : in  std_logic;
 
      done_o     : out std_logic
 
      );
 
  end component;
 
 
  component bram_block_a
  component bram_block_a
    port (
    port (
      clk_a_i     : in  std_logic;
      clk_a_i     : in  std_logic;
      en_a_i      : in  std_logic;
      en_a_i      : in  std_logic;
      we_a_i      : in  std_logic;
      we_a_i      : in  std_logic;
Line 198... Line 216...
  signal   key_counter_up   : integer range 0 to 43;
  signal   key_counter_up   : integer range 0 to 43;
  signal   key_counter_down : integer range 0 to 43;
  signal   key_counter_down : integer range 0 to 43;
  signal   done             : std_logic                           := '0';
  signal   done             : std_logic                           := '0';
  signal   done_decrypt     : std_logic                           := '0';
  signal   done_decrypt     : std_logic                           := '0';
  signal   counter1bit      : std_logic                           := '0';
  signal   counter1bit      : std_logic                           := '0';
 
  signal   done_o_int       : std_logic                           := '0';
 
  signal   data_i_int       : std_logic_vector (127 downto 000)   := ( X"00000000_00000000_00000000_00000000" );
 
  signal   data_o_int       : std_logic_vector (127 downto 000)   := ( X"00000000_00000000_00000000_00000000" );
 
  signal   key_i_int        : std_logic_vector (127 downto 000)   := ( X"00000000_00000000_00000000_00000000" );
  signal   load             : std_logic                           := '0';
  signal   load             : std_logic                           := '0';
 
  signal   load_io          : std_logic                           := '0';
  signal   di_0_i           : std_logic_vector (007 downto 000);
  signal   di_0_i           : std_logic_vector (007 downto 000);
  signal   di_1_i           : std_logic_vector (007 downto 000);
  signal   di_1_i           : std_logic_vector (007 downto 000);
  signal   di_2_i           : std_logic_vector (007 downto 000);
  signal   di_2_i           : std_logic_vector (007 downto 000);
  signal   di_3_i           : std_logic_vector (007 downto 000);
  signal   di_3_i           : std_logic_vector (007 downto 000);
  signal   do_0_o           : std_logic_vector (007 downto 000);
  signal   do_0_o           : std_logic_vector (007 downto 000);
Line 242... Line 265...
  signal   do_a_1_o         : std_logic_vector (07 downto 00);
  signal   do_a_1_o         : std_logic_vector (07 downto 00);
  signal   do_a_2_o         : std_logic_vector (07 downto 00);
  signal   do_a_2_o         : std_logic_vector (07 downto 00);
  signal   do_b_1_o         : std_logic_vector (07 downto 00);
  signal   do_b_1_o         : std_logic_vector (07 downto 00);
  signal   do_b_2_o         : std_logic_vector (07 downto 00);
  signal   do_b_2_o         : std_logic_vector (07 downto 00);
 
 
--signal data_i : std_logic_vector (127 downto 000) :=
--signal data_i_int : std_logic_vector (127 downto 000) :=
--( X"3243F6A8_885A308D_313198A2_E0370734" );  -- PT 0
--( X"3243F6A8_885A308D_313198A2_E0370734" );  -- PT 0
--( X"00112233_44556677_8899AABB_CCDDEEFF" );  -- PT 1
--( X"00112233_44556677_8899AABB_CCDDEEFF" );  -- PT 1
--( X"3925841D_02DC09FB_DC118597_196A0B32" );  -- CT 0
--( X"3925841D_02DC09FB_DC118597_196A0B32" );  -- CT 0
--( X"69C4E0D8_6A7B0430_D8CDB780_70B4C55A" );  -- CT 1
--( X"69C4E0D8_6A7B0430_D8CDB780_70B4C55A" );  -- CT 1
--signal key_i : std_logic_vector (127 downto 000) :=
--signal key_i : std_logic_vector (127 downto 000) :=
Line 260... Line 283...
  en_a_i  <= VCC;
  en_a_i  <= VCC;
  en_b_i  <= VCC;
  en_b_i  <= VCC;
  we_a_i  <= GND;
  we_a_i  <= GND;
  we_b_i  <= GND;
  we_b_i  <= GND;
 
 
  done_o <= done_decrypt;
  done_o_int <= done_decrypt;
 
 
 
  my_io : io_interface
 
    port map (
 
      clock      => clock,
 
      clear      => clear,
 
      load_i     => load_i,
 
      load_i_int => load_io,
 
      data_i     => data_i,
 
      key_i      => key_i,
 
      data_o     => data_o,
 
      data_o_int => data_o_int,
 
      data_i_int => data_i_int,
 
      key_i_int  => key_i_int,
 
      done_o_int => done_o_int,
 
      done_o     => done_o
 
      );
 
 
  sbox1     : bram_block_a
  sbox1     : bram_block_a
    port map (
    port map (
      clk_a_i     => clk_a_i,
      clk_a_i     => clk_a_i,
      en_a_i      => en_a_i,
      en_a_i      => en_a_i,
Line 300... Line 339...
--
--
  key       : key_scheduler
  key       : key_scheduler
    port map (
    port map (
      clock       => clock,
      clock       => clock,
      load        => load,
      load        => load,
      key_i       => key_i,
      key_i       => key_i_int,
      key_o       => key_o,
      key_o       => key_o,
      done        => done
      done        => done
      );
      );
--
--
  count2bit : counter2bit
  count2bit : counter2bit
Line 317... Line 356...
  foldreg   : folded_register
  foldreg   : folded_register
    port map (
    port map (
      clk_i       => clock,
      clk_i       => clock,
      enc_i       => enc,
      enc_i       => enc,
      load_i      => load,
      load_i      => load,
      data_i      => data_i,
      data_i      => data_i_int,
      key_i       => key_b,
      key_i       => key_b,
      di_0_i      => di_0_i,
      di_0_i      => di_0_i,
      di_1_i      => di_1_i,
      di_1_i      => di_1_i,
      di_2_i      => di_2_i,
      di_2_i      => di_2_i,
      di_3_i      => di_3_i,
      di_3_i      => di_3_i,
Line 338... Line 377...
    elsif (clock = '1' and clock'event) then
    elsif (clock = '1' and clock'event) then
      fifo16x8 (127 downto 000)   <= fifo16x8i (127 downto 000);
      fifo16x8 (127 downto 000)   <= fifo16x8i (127 downto 000);
      if (done = '1') then
      if (done = '1') then
        load                      <= '1';
        load                      <= '1';
      else
      else
        load                      <= '0';
--      load                      <= '0';
 
        load                      <= load_io;
      end if;
      end if;
    end if;
    end if;
  end process;
  end process;
--
--
  process(clear, clock)
  process(clear, clock)
Line 385... Line 425...
 
 
  key_o_srl2 (43 downto 40) <= ( key_o_srl4_p (03), key_o_srl4_p (02), key_o_srl4_p (01), key_o_srl4_p (00) ) when ( enc = '0' ) else
  key_o_srl2 (43 downto 40) <= ( key_o_srl4_p (03), key_o_srl4_p (02), key_o_srl4_p (01), key_o_srl4_p (00) ) when ( enc = '0' ) else
                               ( key_o_srl2_p (03), key_o_srl2_p (02), key_o_srl2_p (01), key_o_srl2_p (00) );
                               ( key_o_srl2_p (03), key_o_srl2_p (02), key_o_srl2_p (01), key_o_srl2_p (00) );
 
 
  key_o_srl3 (43 downto 00) <= ( key_o_srl2 (43 downto 04) &
  key_o_srl3 (43 downto 00) <= ( key_o_srl2 (43 downto 04) &
                                 key_i (127 downto 096) &
                                 key_i_int (127 downto 096) &
                                 key_i (095 downto 064) &
                                 key_i_int (095 downto 064) &
                                 key_i (063 downto 032) &
                                 key_i_int (063 downto 032) &
                                 key_i (031 downto 000)
                                 key_i_int (031 downto 000)
                               ) when (done = '1') else
                               ) when (done = '1') else
                                 key_o_srl3 (43 downto 00);
                                 key_o_srl3 (43 downto 00);
 
 
  fifo16x8o (127 downto 000) <= fifo16x8i (127 downto 000) when (done = '1') else fifo16x8o (127 downto 000);
  fifo16x8o (127 downto 000) <= fifo16x8i (127 downto 000) when (done = '1') else fifo16x8o (127 downto 000);
  fifo16x8i (127 downto 000) <= ( fifo16x8 (095 downto 000) & output_o );
  fifo16x8i (127 downto 000) <= ( fifo16x8 (095 downto 000) & output_o );
 
 
  data_o (127 downto 000) <= fifo16x8o (127 downto 000);
  data_o_int (127 downto 000) <= fifo16x8o (127 downto 000);
--
--
  input (0)               <= do_0_o;
  input (0)               <= do_0_o;
  input (1)               <= do_1_o;
  input (1)               <= do_1_o;
  input (2)               <= do_2_o;
  input (2)               <= do_2_o;
  input (3)               <= do_3_o;
  input (3)               <= do_3_o;
Line 423... Line 463...
  di_0_i                 <= output (31 downto 24)  when (enc = '0') else inv_mixcol_o (31 downto 24);
  di_0_i                 <= output (31 downto 24)  when (enc = '0') else inv_mixcol_o (31 downto 24);
  di_1_i                 <= output (23 downto 16)  when (enc = '0') else inv_mixcol_o (23 downto 16);
  di_1_i                 <= output (23 downto 16)  when (enc = '0') else inv_mixcol_o (23 downto 16);
  di_2_i                 <= output (15 downto 08)  when (enc = '0') else inv_mixcol_o (15 downto 08);
  di_2_i                 <= output (15 downto 08)  when (enc = '0') else inv_mixcol_o (15 downto 08);
  di_3_i                 <= output (07 downto 00)  when (enc = '0') else inv_mixcol_o (07 downto 00);
  di_3_i                 <= output (07 downto 00)  when (enc = '0') else inv_mixcol_o (07 downto 00);
--
--
  key_b (127 downto 000) <= key_i (127 downto 000) when (enc = '0') else (key_o_srl3 (43) & key_o_srl3 (42) & key_o_srl3 (41) & key_o_srl3 (40));
  key_b (127 downto 000) <= key_i_int (127 downto 000) when (enc = '0') else (key_o_srl3 (43) & key_o_srl3 (42) & key_o_srl3 (41) & key_o_srl3 (40));
 
 
  current_key <= key_o_srl3(key_counter_down);
  current_key <= key_o_srl3(key_counter_down);
 
 
  process (clock, load)
  process (clock, load)
  begin
  begin

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.