Processeur/Processeur.srcs/sources_1/new/MemoireInstructions.vhd
2021-06-18 09:26:32 +02:00

40 lines
8.8 KiB
VHDL

----------------------------------------------------------------------------------
-- 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
-- Do not touch until (-- Skadoosh)
-- Do not add any Skadoosh
signal MEMORY : STD_LOGIC_VECTOR ((Mem_Size * Nb_bits)-1 downto 0) := "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010000000000000000000000001000100000000000000000000000001010000000000000101000000000100110001110000001010000000000101100001011000000000000000001001000000000000101000000000011100000101000000011000000000100100000011000000000000000010101000000110000000000000000011110111001100000000000000000100000000010000000100000000000001000000100000001000000000010010000000000000001000000000100000000010000000100000000010101000000010000000000000000100010000001000000000000000000100100000010010101010000000010101000000010000000000000000100010000001000000000000000000100100000010101010100000000010000100000010000000000000000000110000001100000011000000100100100000011000000000000000000101000000100000001000000000010010000000000000101000000000100000000010000000100000000001000000000100000001000000000010010000001000000000000000000111101010110000000000000000001000000000100000001000000000000010000001000000010000000000100100000000000000010000000001000000000100000001000000000010100000001000001010000000000110100000000000000010000000001010000000010000110000000000010100000000000001011000000001001100000001000011000000000001011000011010000001100000000010110000110000000010000000000101100001011000000010000000001011000010100000000000000000000010000001000000001000000100101000000001000010110000000000010000000100000001100000010010010000001100000001000000000100000000010000000000000000001110000010110000001100000000010010000001100000000000000001000001101110000000000000000000011000000110000001100000001010010000001100000000000000000010100000001000000010000001001001000000100000101000000000010000000000100000000000000000100100000000000000000000000010100000000000000000000000000010110000010000000010000000000101100000011000000110000000001011000000100000000000000000010110000000000000001000000000100000000001000000100000000001011000001010000000100000000010000000001000000011000000000111100100011000000000000000001000000000000000001000000000000010000001000000010000000010100100000001000000010000000001000000000100000000000000000010100000000000000010000000000101100000111000000000000000001111010000110000000000000000010000000001100000001000000000110000000001000000010000000000001000000010000001000000001010100000001000000110000000000101100000100000000100000000000010000000010000000000000001010010000000000000001000000000111000000110000000000000000001001000000000000000000000000010000000000100000011000000000101000000011000000100000000010000010000110000000000000000000110000001100000011000000100100100000011000000000000000001011000001100000001100000000001100000001000000010000000010100000000001000000000000000001010000000000000001100000000011000000001000000010000000000000100000010000000010000001001010000000010000010100000000000100000001000000011000000100100100000011000000010000000001110000001010000001100000000010010000001100000000000000000100000000010000000000000000001010000000000000001000000000100000100101000000000000000000001100000000000000000000001001001000000000000000000000000010110000001000000000000000000010100000010000000100000000101000000000010000001100000000010110000001100000001000000000101000000011000000010000000001000000000100000000000000000010010000000100000000000000000100100000000000000000000000010100000000000000000000000000010110000001000000010000000000101100000001000000010000000001011000000000000000000000000010000000000000000001000000000100000000001000000000000000001000000000000000000100000000100100000000100000000000000001010100001111000000000000000001111000001010000000000000000010000000000000000001000000000000100000001000000010000001001001000000100000000100000000010000000000100000000000000001010100000001000000000000000010001000000010000000000000000010010000000111111111000000001010100000001000000000000000010001000000010000000000000000010010000000100000000000000001000000010011000000000000000000011000000110000001100000001010010000001100000000000000000010100000001000000010000001001001000000100000010100000000010000000000100000000000000000100100000000000000000000000001111010100100000000000000000";
-- Skadoosh
begin
D_OUT <= MEMORY (((to_integer(unsigned(Addr)) + 1) * Nb_bits) - 1 downto Nb_bits * to_integer(unsigned(Addr)));
end Behavioral;