summaryrefslogtreecommitdiff
path: root/implementations/vhdl/Encrypt_Decypt/lilliputtbcii256v1/store_rtk.vhd
blob: 0edf110ade71d192fa2e116d3bad4da82e634bab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
library IEEE;
library work;
use IEEE.numeric_std.ALL;
use IEEE.STD_LOGIC_1164.ALL;
use work.crypt_pack.ALL;


entity store_rtk is
    Port (
    key_i 				: in type_key; -- Etat d'entrée
    key_o 				: out type_key; -- Etat de sortie
    round_number_i 		: in integer;
    initroundkey_i 		: in std_logic;
    clock_i 			: in std_logic; -- Permet de gérer la clock 
    reset_i 			: in std_logic); 
end store_rtk;

architecture store_rtk_arch of store_rtk is

signal store_rtk : type_stored_key;

begin
          
process(reset_i, clock_i) -- On définit ici un process car les fonctions ne doivent pas se faire en même temps 
begin 
	if(reset_i = '0') then 
		key_o <= (others => (others => (others => '0'))); --si rest_i est nul c'est que les valeurs de state_o sont nuls ;
    elsif(clock_i'event and clock_i = '1') then -- Dans le cas d'un front descendant d'horloge state_o prend la valeur de state_i. On utilise un front descendant d'horloge pour un soucis de synchronisation avec sbox
        store_rtk <=store_rtk;
		  if initroundkey_i='1' then
            store_rtk(round_number_i) <= key_i;
        end if;
        key_o<= store_rtk(round_number_i);
    end if;
end process;

end store_rtk_arch;