12345678910111213141516171819202122232425262728293031323334353637 |
- ----------------------------------------------------------------------------------
- -- Company: INSA-Toulouse
- -- Engineer: Paul Faure
- --
- -- Create Date: 16.04.2021 14:35:04
- -- Module Name: MemoireInstructions - Behavioral
- -- Project Name: Processeur sécurisé
- -- Target Devices: Basys 3 ARTIX7
- -- Tool Versions: Vivado 2016.4
- --
- -- Description: Memoire d'instruction
- -- - Accessible en lecture uniquement
- --
- -- Dependencies: None
- --
- -- Comments : Memoire circulaire, si l'adresse est utilisée modulo la taille de la mémoire
- ----------------------------------------------------------------------------------
-
-
- library IEEE;
- use IEEE.STD_LOGIC_1164.ALL;
- use IEEE.NUMERIC_STD.ALL;
-
- entity MemoireInstructions is
- Generic (Nb_bits : Natural; -- Taille d'une instruction en mémoire (Taille d'un code instruction + 3*Taille d'un mot binaire)
- Addr_size : Natural; -- Nombre de bits pour adresser la mémoire
- Mem_size : Natural); -- Taille de la mémoire (nombre d'instructions stockées)
- Port ( Addr : in STD_LOGIC_VECTOR (Addr_size-1 downto 0); -- Une adresse
- D_OUT : out STD_LOGIC_VECTOR (Nb_bits-1 downto 0) := (others => '0')); -- L'instruction presente a cette adresse
- end MemoireInstructions;
-
- architecture Behavioral of MemoireInstructions is
- signal MEMORY : STD_LOGIC_VECTOR ((Mem_Size * Nb_bits)-1 downto 0) := "1011000000000000000000000000000000000000000000000000010010000000000000000000000000000000000000000000000000010010000000000000000000000000000101000000000000000001000100000000000000000000000000000000000000000000000001000000000000000000000000000000000100000000000000000010100000000000000010000000000000000000000000000000001001000000000000000010000000000000000000000000000000010010000000000000000000000000000000000000000000000000010010000000000000001000000000011110100000000000000000100100000000000000000000000001100001000000000000000010100000000010111110100000000000000100000000000000000101000000000000000001000000000000001000000000000000000101100000000000100110000000000000011000000000000000001011000000000001001000000000000000100000000000000000010110000000000010001000000000000000100000000000000000101100000000000100000000000000000000000000000000000001011000000000000111100000000000011110000000000000000010110000000000001110000000000000111000000000000000000101100000000000011010000000000001101000000000000000001011000000000000110000000000000011000000000000000000010110000000000001011000000000000101100000000000000000101100000000000010100000000000001010000000000000000001011000000000000100100000000000010010000000000000000010110000000000001000000000000000100000000000000000000101100000000000001110000000000000111000000000000000001011000000000000011000000000000001100000000000000000010110000000000000001000000000000010100000000000000000101100000000000000000000000000000100000000000000000001001000000000000010100000000000000000000000000000000010110000000000000101000000000000010100000000000000000100100000000000001000000000000000000000000000000000001011000000000000010000000000000001000000000000000000100100000000000000011000000000000000000000000000000001001000000000000000100000000000000000000000000000000010010000000000000000100000000000000000000000000000000100100000000000000000000000000000000000000000000000000100100000000000000110000000000001010000000000000000001011000000000000001100000000000000110000000000000000010010000000000000010000000000000101000000000000000000101100000000000000100000000000000010000000000000000001001000000000000000100000000011001010000000000000000010110000000000000001000000000000000100000000000000000100100000000000000000000000001101101000000000000000001011000000000000000000000000000000000000000000000000100100000000000001111000000000000000000000000000000001001000000000000011100000000000000000000000000000000010010000000000000110100000000000000000000000000000000100100000000000001100000000000000000000000000000000000100100000000000011110000000001101101000000000000000001001000000000000111000000000011000010000000000000000010010000000000001101000000000111001000000000000000000100100000000000011000000000001100111000000000000000010010000000000000101100000000000000000000000000000000100100000000000001010000000000000000000000000000000001001000000000000010010000000000000000000000000000000010010000000000000100000000000000000000000000000000000010010000000000001011000000000110111100000000000000000100100000000000010100000000001110010000000000000000001001000000000000100100000000011100000000000000000000010010000000000001000000000000010000000000000000000001001000000000000001110000000000000000000000000000000010010000000000000011000000000000000000000000000000000100100000000000000101000000000000000000000000000000001001000000000000001000000000000000000000000000000000001001000000000000011100000000011101010000000000000000010010000000000000110000000000110010000000000000000000100100000000000001010000000000100000000000000000000001001000000000000010000000000011101000000000000000000100100000000000000011000000000000000000000000000000001001000000000000000100000000000000000000000000000000010010000000000000000100000000000000000000000000000000100100000000000000000000000000000000000000000000000000100100000000000000110000000001110101000000000000000001001000000000000001000000000011000100000000000000000010010000000000000001000000000110010100000000000000000100100000000000000000000000001000100000000000000000010101000000000000000000000000000000000000000000000000010110000000000010001000000000000000100000000000000000101100000000000100000000000000000000000000000000000001011000000000000111100000000000011110000000000000000010110000000000001110000000000000111000000000000000000101100000000000011010000000000001101000000000000000001011000000000000110000000000000011000000000000000000010110000000000001011000000000000101100000000000000000101100000000000010100000000000001010000000000000000001011000000000000100100000000000010010000000000000000010110000000000001000000000000000100000000000000000000101100000000000001110000000000000111000000000000000001011000000000000011000000000000001100000000000000000010110000000000000101000000000000010100000000000000000101100000000000001000000000000000100000000000000000001011000000000000001100000000000000110000000000000000010110000000000000010000000000000001000000000000000001001000000000000000010000000000000000000000000000000010010000000000000000000000000000000000000000000000000010010000000000000001000000000000101000000000000000000101100000000000000010000000000000001000000000000000001001000000000000000000000000011001010000000000000000010110000000000000000000000000000000000000000000000001001000000000000011110000000000000000000000000000000010010000000000000111000000000000000000000000000000000100100000000000001101000000000000000000000000000000001001000000000000011000000000000000000000000000000000001001000000000000111100000000011011010000000000000000010010000000000001110000000000110100100000000000000000100100000000000011010000000001110100000000000000000001001000000000000110000000000011010010000000000000000100100000000000001011000000000000000000000000000000001001000000000000010100000000000000000000000000000000010010000000000000100100000000000000000000000000000000100100000000000001000000000000000000000000000000000000100100000000000010110000000001100111000000000000000001001000000000000101000000000011001010000000000000000010010000000000001001000000000110110000000000000000000100100000000000010000000000000100000000000000000000010010000000000000011100000000000000000000000000000000100100000000000000110000000000000000000000000000000001001000000000000001010000000000000000000000000000000010010000000000000010000000000000000000000000000000000010010000000000000111000000000110111000000000000000000100100000000000001100000000001101111000000000000000001001000000000000010100000000011010010000000000000000010010000000000000100000000000111010000000000000000001001000000000000000110000000000000000000000000000000010010000000000000001000000000000000000000000000000000100100000000000000001000000000000000000000000000000001001000000000000000000000000000000000000000000000000001001000000000000001100000000011000110000000000000000010010000000000000010000000000110111000000000000000000100100000000000000010000000001101111000000000000000001001000000000000000000000000010001100000000000000000101010000000000000000000000000000000000000000000000000101100000000000011110000000000000111000000000000000001011000000000000111000000000000001100000000000000000010110000000000001101000000000000010100000000000000000101100000000000011000000000000000100000000000000000001011000000000000101100000000000000110000000000000000010110000000000001010000000000000001000000000000000000101100000000000010010000000000000001000000000000000001011000000000000100000000000000000000000000000000000010110000000000000111000000000000111100000000000000000101100000000000001100000000000001110000000000000000001011000000000000010100000000000011010000000000000000010110000000000000100000000000000110000000000000000000101100000000000000110000000000001011000000000000000001011000000000000001000000000000010100000000000000000010110000000000000000000000000000100000000000000000000111100000001011001110000000000000000000000000000000010000000000010110110100000000000000000000000000000000000110000000000001001000000000000100100000000000010000100100000000000010010000000000000000000000000000000001011000000000000000100000000000010010000000000000000010010000000000001000000000000000000100000000000000001001000000000000001110000000000000000000000000000000010010000000000000011000000000000000000000000000000000100100000000000000101000000000000000000000000000000001001000000000000001000000000000000000000000000000000001001000000000000011100000000011010110000000000000000010110000000000010000000000000000011100000000000000000100100000000000001100000000001110010000000000000000001011000000000000111100000000000001100000000000000000010010000000000000101000000000110000100000000000000000101100000000000011100000000000000101000000000000000001001000000000000010000000000010110010000000000000000010110000000000001101000000000000010000000000000000001001000000000000000110000000000000000000000000000000010010000000000000001000000000000000000000000000000000100100000000000000001000000000000000000000000000000001001000000000000000000000000000000000000000000000000001001000000000000001100000000001000000000000000000000010110000000000001100000000000000001100000000000000000100100000000000000100000000001101011000000000000000001011000000000000101100000000000000100000000000000000010010000000000000001000000000111001000000000000000000101100000000000010100000000000000001000000000000000001001000000000000000000000000011000010000000000000000010110000000000001001000000000000000000000000000000001001000000000000011110000000000000000000000000000000010010000000000000111000000000000000000000000000000000100100000000000001101000000000000000000000000000000001001000000000000011000000000000000000000000000000000001001000000000000111100000000010110010000000000000000010110000000000001000000000000000111100000000000000000100100000000000011100000000000100000000000000000000001011000000000000011100000000000011100000000000000000010010000000000001101000000000110101100000000000000000101100000000000001100000000000001101000000000000000001001000000000000110000000000011100100000000000000000010110000000000000101000000000000110000000000000000001001000000000000010110000000000000000000000000000000010010000000000000101000000000000000000000000000000000100100000000000001001000000000000000000000000000000001001000000000000010000000000000000000000000000000000001001000000000000101100000000011000010000000000000000010110000000000000100000000000000101100000000000000000100100000000000010100000000001011001000000000000000001011000000000000001100000000000010100000000000000000010010000000000001001000000000010000000000000000000000101100000000000000100000000000001001000000000000000001001000000000000100000000000001000000000000000000000010110000000000000001000000000000100000000000000000001001000000000000001110000000000000000000000000000000001001000000000000011100000000000010100000000000000000010110000000000000000000000000000011100000000000000001001000000000000001100000000000000000000000000000000010010000000000000010100000000000000000000000000000000100100000000000000100000000000000000000000000000000001001000000000000000110000000000000000000000000000000001001000000000000011000000000000010100000000000000000010110000000000010110000000000000011000000000000000000100100000000000001010000000000101111000000000000000001011000000000001010100000000000001010000000000000000010010000000000000100000000000101111100000000000000000100100000000000000110000000001011111000000000000000010010000000000000001000000000000000000000000000000000100100000000000000001000000000000000000000000000000001001000000000000000000000000000000000000000000000000010010000000000000111100000000000000000000000000000000010010000000000000010000000000101110000000000000000000100100000000000000010000000001111100000000000000000001001000000000000000000000000010111110000000000000000010010000000000001111000000000010000000000000000000001001000000000000011100000000000000000000000000000000010010000000000000110100000000000000000000000000000000100100000000000001100000000000000000000000000000000001001000000000000010110000000000000000000000000000000001001000000000000111000000000011111000000000000000000010010000000000001101000000000101111100000000000000000100100000000000011000000000000100000000000000000000001001000000000000101100000000011111000000000000000000100100000000000001010000000000000000000000000000000001001000000000000010010000000000000000000000000000000010010000000000000100000000000000000000000000000000000100100000000000000111000000000000000000000000000000000100100000000000010100000000000100000000000000000000001001000000000000100100000000001000000000000000000000010010000000000001000000000000010000000000000000000000100100000000000001110000000000100000000000000000000010010000000000000010000000000000000000000000000000000100100000000000000011000000000000000000000000000000000100100000000000001000000000000001010000000000000000001011000000000001010000000000000001000000000000000000010010000000000000011000000000010000000000000000000000101100000000000100110000000000000011000000000000000010010000000000000001000000000000000000000000000000000100100000000000000001000000000000000000000000000000001001000000000000000000000000000000000000000000000000010010000000000000111100000000000000000000000000000000010010000000000000010000000000010000000000000000000000100100000000000000010000000000101001000000000000000001001000000000000000000000000010111110000000000000000010010000000000001111000000000101111100000000000000001001000000000000011100000000000000000000000000000000010010000000000000110100000000000000000000000000000000100100000000000001100000000000000000000000000000000001001000000000000010110000000000000000000000000000000001001000000000000111000000000001010000000000000000000010010000000000001101000000000010110100000000000000000100100000000000011000000000000101101000000000000000001001000000000000101100000000011111000000000000000000100100000000000001010000000000000000000000000000000001001000000000000010010000000000000000000000000000000010010000000000000100000000000000000000000000000000000100100000000000000111000000000000000000000000000000000100100000000000010100000000000100000000000000000000001001000000000000100100000000001000000000000000000000010010000000000001000000000000010000000000000000000000100100000000000001110000000000100000000000000000000010010000000000000001000000000000000000000000000000000100100000000000000001000000000000000000000000000000001001000000000000000000000000000000000000000000000000010010000000000000111100000000000000000000000000000000010010000000000000010000000000000101000000000000000000100100000000000000010000000000101001000000000000000001001000000000000000000000000001100000000000000000000010010000000000001111000000000011000000000000000000001001000000000000011100000000000000000000000000000000010010000000000000110100000000000000000000000000000000100100000000000001100000000000000000000000000000000001001000000000000010110000000000000000000000000000000001001000000000000111000000000001010000000000000000000010010000000000001101000000000010000000000000000000000100100000000000011000000000000101001000000000000000001001000000000000101100000000011111000000000000000000100100000000000001010000000000000000000000000000000001001000000000000010010000000000000000000000000000000010010000000000000100000000000000000000000000000000000100100000000000000111000000000000000000000000000000000100100000000000010100000000000101000000000000000000001001000000000000100100000000001000000000000000000000010010000000000001000000000000010000000000000000000000100100000000000001110000000000100000000000000000000010010000000000000001000000000000000000000000000000000100100000000000000001000000000000000000000000000000001001000000000000000000000000000000000000000000000000010010000000000000111100000000000000000000000000000000010010000000000000010000000000000101000000000000000000101100000000000100100000000000000010000000000000000001001000000000000000100000000001010010000000000000000010110000000000010001000000000000000100000000000000000100100000000000000000000000001011111000000000000000001011000000000001000000000000000000000000000000000000010010000000000001111000000000101111100000000000000000101100000000000011110000000000001111000000000000000010010000000000000111000000000000000000000000000000000100100000000000001101000000000000000000000000000000001001000000000000011000000000000000000000000000000000010010000000000000101100000000000000000000000000000000010010000000000001110000000000010100000000000000000000101100000000000011100000000000001110000000000000000001001000000000000110100000000001000000000000000000000010110000000000001101000000000000110100000000000000000100100000000000011000000000000100000000000000000000001011000000000000110000000000000011000000000000000000010010000000000001011000000000010000000000000000000000101100000000000010110000000000001011000000000000000010010000000000000101000000000000000000000000000000000100100000000000001001000000000000000000000000000000001001000000000000010000000000000000000000000000000000010010000000000000011100000000000000000000000000000000010010000000000001010000000000010000000000000000000000101100000000000010100000000000001010000000000000000001001000000000000100100000000001000000000000000000000010110000000000001001000000000000100100000000000000000100100000000000010000000000000100000000000000000000001011000000000000100000000000000010000000000000000000010010000000000000111000000000010000000000000000000000101100000000000001110000000000000111000000000000000010010000000000000011000000000000000000000000000000000100100000000000000101000000000000000000000000000000001001000000000000001000000000000000000000000000000000001001000000000000011000000000000010100000000000000000010110000000000000110000000000000011000000000000000000100100000000000001010000000000001010000000000000000001011000000000000010100000000000001010000000000000000010010000000000000100000000000100010000000000000000000101100000000000001000000000000000100000000000000000010010000000000000001100000000000000000000000000000000100100000000000000010000000000000000000000000000000001001000000000000000010000000000000000000000000000000010010000000000000000000000000000000000000000000000000010010000000000000011000000000100010100000000000000000101100000000000000110000000000000011000000000000000001001000000000000001000000000010010110000000000000000010110000000000000010000000000000001000000000000000000100100000000000000010000000001000011000000000000000001011000000000000000100000000000000010000000000000000010010000000000000000000000000100000100000000000000000101100000000000000000000000000000000000000000000000010010000000000000111100000000000000000000000000000000100100000000000001110000000000000000000000000000000001001000000000000011010000000000000000000000000000000010010000000000000110000000000000000000000000000000000010010000000000001111000000000100100000000000000000000100100000000000011100000000000100000000000000000000001001000000000000110100000000010011100000000000000000010010000000000001100000000000100010100000000000000001001000000000000010110000000000000000000000000000000010010000000000000101000000000000000000000000000000000100100000000000001001000000000000000000000000000000001001000000000000010000000000000000000000000000000000001001000000000000101100000000010001010000000000000000010010000000000001010000000000100001000000000000000000100100000000000010010000000000100000000000000000000001001000000000000100000000000010001010000000000000000100100000000000000111000000000000000000000000000000001001000000000000001100000000000000000000000000000000010010000000000000010100000000000000000000000000000000100100000000000000100000000000000000000000000000000000100100000000000001110000000001010110000000000000000001001000000000000011000000000001001110000000000000000010010000000000000101000000000101010100000000000000000100100000000000001000000000001001111000000000000000010010000000000000001100000000000000000000000000000000100100000000000000010000000000000000000000000000000001001000000000000000010000000000000000000000000000000010010000000000000000000000000000000000000000000000000010010000000000000011000000000101100100000000000000000100100000000000000100000000000001010000000000000000001001000000000000000100000000000010100000000000000000010010000000000000000000000000000000000000000000000001010100000000000000000000000000000000000000000000000001011000000000010001000000000000000100000000000000000010110000000000100001000000000000000100000000000000000101100000000001000000000000000000000000000000000000001011000000000001111100000000000011110000000000000000010110000000000011110000000000000111000000000000000000101100000000000111010000000000001101000000000000000001011000000000001110000000000000011000000000000000000010110000000000011011000000000000101100000000000000000101100000000000110100000000000001010000000000000000001011000000000001100100000000000010010000000000000000010110000000000001001000000000000011100000000000000000101100000000000010000000000000000110000000000000000001011000000000000011100000000000010000000000000000000010110000000000000110000000000000010000000000000000000101100000000000001010000000000000011000000000000000001111000000000101100100000000000000000000000000000000010000000000000000100000000000000100000000000000000000000100000000000010000000000000001000000000000000011001001000000000000011000000000000000010000000000000000010000000000000001000000000000000010000000000000000000110100000000000010000000000000000110000000000000000001000000000000000011000000000000000110000000000000000000010000000000001000000000000000100000000000000001100101000000000000010000000000000000111000000000000000001011000000000001100000000000000010000000000000000000000100000000000000110000000000000011100000000000001100100100000000000001110000000000000001000000000000000000011000000000000011000000000000001100000000000000111010000000000000000111000000000000010000000000000000000100100000000000001100000000000000101000000000000000001110000000000000011100000000000001110000000000000000010010000000000000111000000000000000000000000000000001000000000000011100110000000000000000000000000000000000011000000000000011100000000000001110000000000000101010010000000000000111000000000000000000000000000000000101100000000000101110000000000000111000000000000000000101000000000000010100000000000001010000000000000110010010000000000000110000000000000100000000000000000000101100000000000101100000000000000110000000000000000001000000000000000010100000000000001000000000000000000010110000000000010101000000000000010100000000000000000100100000000000001000000000000000001000000000000000001011000000000001010000000000000001000000000000000000100110000000000000011000000000000000000000000000000000101100000000000100110000000000000011000000000000000010010000000000000001000000000000000000000000000000000100100000000000000001000000000000000000000000000000000100100000000000000100000000000001010000000000000000001011000000000001001000000000000000100000000000000000010010000000000000001000000000011101000000000000000000101100000000000100010000000000000001000000000000000010010000000000000000000000000000000000000000000000000100100000000000001111000000000000000000000000000000001001000000000000011100000000000000000000000000000000010010000000000000110100000000000000000000000000000000010010000000000000000000000000010000000000000000000000101100000000000100000000000000000000000000000000000001001000000000000111100000000011100100000000000000000010110000000000001111000000000000111100000000000000000100100000000000011100000000001110101000000000000000001011000000000000111000000000000011100000000000000000010010000000000001101000000000110010100000000000000000101100000000000011010000000000001101000000000000000010010000000000000110000000000000000000000000000000000100100000000000001011000000000000000000000000000000001001000000000000010100000000000000000000000000000000010010000000000000100100000000000000000000000000000000010010000000000001100000000000110110000000000000000000101100000000000011000000000000001100000000000000000001001000000000000101100000000011000010000000000000000010110000000000001011000000000000101100000000000000000100100000000000010100000000001110110000000000000000001011000000000000101000000000000010100000000000000000010010000000000001001000000000010000000000000000000000101100000000000010010000000000001001000000000000000010010000000000000100000000000000000000000000000000000100100000000000000111000000000000000000000000000000001001000000000000001100000000000000000000000000000000010010000000000000010100000000000000000000000000000000010010000000000001000000000000110010100000000000000000101100000000000010000000000000001000000000000000000001001000000000000011100000000011011100000000000000000010110000000000000111000000000000011100000000000000000100100000000000001100000000001110101000000000000000001011000000000000011000000000000001100000000000000000010010000000000000101000000000000101000000000000000000101100000000000001010000000000000101000000000000000010010000000000000010000000000000000000000000000000000100100000000000000011000000000000000000000000000000001001000000000000000100000000000000000000000000000000010010000000000000000100000000000000000000000000000000010010000000000000100000000000010000000000000000000000101100000000000001000000000000000100000000000000000001001000000000000001100000000011100100000000000000000010110000000000000011000000000000001100000000000000000100100000000000000100000000001101001000000000000000001011000000000000001000000000000000100000000000000000010010000000000000001000000000111001100000000000000000101100000000000000010000000000000001000000000000000010010000000000000000000000000000000000000000000000000100100000000000001111000000000000000000000000000000001001000000000000011100000000000000000000000000000000010010000000000000110100000000000000000000000000000000010010000000000000000000000000110100100000000000000000101100000000000000000000000000000000000000000000000001001000000000000111100000000011000010000000000000000010010000000000001110000000000111001100000000000000000100100000000000011010000000000100000000000000000000010010000000000000110000000000000000000000000000000000100100000000000001011000000000000000000000000000000001001000000000000010100000000000000000000000000000000010010000000000000100100000000000000000000000000000000010010000000000001100000000000111101000000000000000000100100000000000010110000000001100101000000000000000001001000000000000101000000000011011000000000000000000010010000000000001001000000000110110000000000000000001001000000000000010000000000000000000000000000000000010010000000000000011100000000000000000000000000000000100100000000000000110000000000000000000000000000000001001000000000000001010000000000000000000000000000000001001000000000000100000000000011010010000000000000000010010000000000000111000000000111010100000000000000000100100000000000001100000000001100101000000000000000001001000000000000010100000000010101100000000000000000010010000000000000100000000000000000000000000000000000100100000000000000110000000000000000000000000000000001001000000000000001000000000000000000000000000000000010010000000000000001000000000000000000000000000000000100100000000000000000000000000000000000000000000000001111000000011011010000000000000000000000000000000000";
- begin
- D_OUT <= MEMORY (((to_integer(unsigned(Addr)) + 1) * Nb_bits) - 1 downto Nb_bits * to_integer(unsigned(Addr)));
- end Behavioral;
|