No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

System.vhd 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. ----------------------------------------------------------------------------------
  2. -- Company: INSA-Toulouse
  3. -- Engineer: Paul Faure
  4. --
  5. -- Create Date: 13.04.2021 10:19:15
  6. -- Module Name: System - Behavioral
  7. -- Project Name: Processeur sécurisé
  8. -- Target Devices: Basys 3 ARTIX7
  9. -- Tool Versions: Vivado 2016.4
  10. -- Description: Environnement du processeur, mapping entre le processeur et la carte
  11. --
  12. -- Dependencies:
  13. -- - Clock_Divider
  14. -- - Pipeline
  15. ----------------------------------------------------------------------------------
  16. library IEEE;
  17. use IEEE.STD_LOGIC_1164.ALL;
  18. -- Lien avec le fichier de contraintes
  19. -- Récupération des leds pour STD_OUT
  20. -- Récupération des switchs pour STD_IN
  21. -- Récupération d'un bouton pour RST
  22. -- Récupération de la clock
  23. entity System is
  24. Port ( led : out STD_LOGIC_VECTOR (7 downto 0);
  25. sw : in STD_LOGIC_VECTOR (7 downto 0);
  26. btnC : in STD_LOGIC;
  27. CLK : STD_LOGIC);
  28. end System;
  29. architecture Structural of System is
  30. component Pipeline is
  31. Generic (Nb_bits : Natural := 8;
  32. Instruction_En_Memoire_Size : Natural := 29;
  33. Addr_Memoire_Instruction_Size : Natural := 3;
  34. Memoire_Instruction_Size : Natural := 8;
  35. Instruction_Bus_Size : Natural := 5;
  36. Nb_Instructions : Natural := 32;
  37. Nb_Registres : Natural := 16;
  38. Addr_registres_size : Natural := 4;
  39. Memoire_Size : Natural := 32;
  40. Adresse_mem_size : Natural := 5;
  41. Memoire_Adresses_Retour_Size : Natural := 16;
  42. Adresse_Memoire_Adresses_Retour_Size : Natural := 4);
  43. Port (CLK : STD_LOGIC;
  44. RST : STD_LOGIC;
  45. STD_IN : in STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
  46. STD_OUT : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0));
  47. end component;
  48. component Pipeline_NS is
  49. Generic (Nb_bits : Natural := 8;
  50. Instruction_En_Memoire_Size : Natural := 29;
  51. Addr_Memoire_Instruction_Size : Natural := 3;
  52. Memoire_Instruction_Size : Natural := 8;
  53. Instruction_Bus_Size : Natural := 5;
  54. Nb_Instructions : Natural := 32;
  55. Nb_Registres : Natural := 16;
  56. Memoire_Size : Natural := 32);
  57. Port (CLK : STD_LOGIC;
  58. RST : STD_LOGIC;
  59. STD_IN : in STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
  60. STD_OUT : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0));
  61. end component;
  62. component Clock_Divider is
  63. Port ( CLK_IN : in STD_LOGIC;
  64. CLK_OUT : out STD_LOGIC);
  65. end component;
  66. -- signaux auxiliaires
  67. signal my_RST : STD_LOGIC;
  68. signal my_CLK : STD_LOGIC;
  69. constant SECURISED : boolean := true;
  70. begin
  71. -- Diviseur de clock
  72. clk_div : Clock_Divider
  73. port map (CLK_IN => CLK,
  74. CLK_OUT => my_CLK);
  75. -- Generation du processeur en fonction de la condition sécurisé ou non
  76. instance: if (SECURISED) generate
  77. instance_securisee : entity work.Pipeline
  78. generic map (Addr_Memoire_Instruction_Size => 8,
  79. Memoire_Instruction_Size => 256)
  80. port map (CLK => my_CLK,
  81. RST => my_RST,
  82. STD_IN => sw,
  83. STD_OUT => led);
  84. else generate
  85. instance_non_securisee : entity work.Pipeline_NS
  86. generic map (Addr_Memoire_Instruction_Size => 8,
  87. Memoire_Instruction_Size => 256)
  88. port map (CLK => my_CLK,
  89. RST => my_RST,
  90. STD_IN => sw,
  91. STD_OUT => led);
  92. end generate;
  93. -- Gestion du RST (inversion d'état)
  94. my_RST <= '1' when btnC = '0' else
  95. '0';
  96. end Structural;