Synchronous_Reset.vhd 2.32 KB
----------------------------------------------------------------------------------
-- Company: ÉCOLE POLYTECHNIQUE DE LILLE - POLYTECH LILLE.
-- Engineer: 
-- 
-- Create Date: 17.10.2023 17:47:42
-- Design Name: Synchronous Reset signed generic multiplier.
-- Module Name: Synchronous RESET - Behavioral
-- Project Name: Synchronous Reset signed generic multiplier.
-- Target Devices: BASYS3
-- Tool Versions: 
-- Description: 
-- 
-- Dependencies: 
-- 
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
-- 
----------------------------------------------------------------------------------

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values

-- Uncomment the following library declaration if instantiating
-- any Xilinx leaf cells in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity Synchronous_Reset is
  -- Déclaration de N comme generic pour varier le nombre des bits des entrés A et B.
  generic(N : natural := 64);
  Port ( 
    reset : in std_logic;                       -- Déclaration du reset comme input.
    clk_in : in std_logic;                      -- Déclaration de l'horloge.
    A : in SIGNED(N-1 downto 0);                -- L'entrée A sur N Bits.
    B : in SIGNED(N-1 downto 0);                -- L'entrée B sur N Bits
    Resultat : out SIGNED(2*N -1 downto 0)      -- Le résultat du produit sur 2*N Bits.
  );
end Synchronous_Reset;

architecture Behavioral of Synchronous_Reset is
    signal produit : signed(2*N-1downto 0);     -- Déclarataion du signal intérmidiaire pour les calculs.
begin
-- Reset synchrone process.      =>        liste de sensibilité du processus ne contient pas le RESET.
Mlutiplier: process(clk_in)
    begin
        if rising_edge(clk_in) then             -- Tester si il y a un font montant sur l'horloge.
            if reset='1' then                   -- Teseter le reset pour le remise à ZERO du système.
                produit <= (others =>'0');
            else
                produit <= A*B;                 -- Calculer le produit A*B a l'aide du bibliothéque IEEE.NUMERIC_STD
            end if;
        end if;
    end process;
    Resultat <= produit;                        -- Affectation du signal a la résultat.
end Behavioral;