bonjour,
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
-----
entity gr_main is
port(
clock : in std_logic;
impulsion: in std_logic
);
end entity;
-----
architecture gr of gr_main is
signal inc : std_logic_vector (3 downto 0) :="0000";
-----
begin
-----
process
begin
wait until impulsion'event and impulsion='1';
loop
wait until clock'event and clock='1';
inc<=inc+1;
if impulsion'event and impulsion='1' then exit;
end if;
end loop;
-----
end process;
end gr;
--------------------------------------------------------------------
Le but de ce code est de calculer la période du signal 'impulsion'.
Alors voilà, mon problème vient du fait que lorsque la période est terminé, c'est-à-dire entre les deux fronts montants de impulsion, le signal 'inc' continue de compter.
Celà vient des lignes :
wait until impulsion'event and impulsion='1';
if impulsion'event and impulsion='1' then exit;
Car en effet, lorsque impulsion='1', on sort de la boucle, mais en même temps l'instruction :
wait until impulsion'event and impulsion='1';
Cette instruction nous fait retourner dans la boucle, d'où le comptage continue.
Mais je ne vois pas comment faire !!
Cordialement
DELALIN Ambroise
-----