summaryrefslogtreecommitdiff
path: root/src/add_vhdltbc/encrypt/state_register.vhd
blob: cdba3625c394d5b62535e435db58a3819fc67c49 (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
library IEEE;
library work;
use IEEE.numeric_std.ALL;
use IEEE.STD_LOGIC_1164.ALL;
use work.crypt_pack.ALL;

entity state_register is
	port(
		state_i : in type_state; -- Etat d'entrée
		state_o : out type_state; -- Etatde sortie 
		clock_i : in std_logic; -- Permet de gérer la clock 
		reset_i : in std_logic);
end state_register;

architecture state_register_arch of state_register is
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 
			for i in 0 to 3 loop
				for j in 0 to 3 loop
					state_o(i)(j) <= (others => '0'); --si rest_i est nul c'est que les valeurs de state_o sont nuls 
				end loop;
			end loop;
    		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
    			state_o <= state_i;
    		end if;
    	end process;

    end state_register_arch;