Détecter le front d’un signal lent

On a souvent besoin de de traiter l’événement que constitue un front (montant ou descendant) d’un signal quelconque (donc lent par rapport à l’horloge). Pour rester conforme à la contrainte du synchronisme, il faut donc créer pour le signal lent une détection de front. On échantillonne le signal, on mémorise sa valeur, une succession 01 détecte un front montant, une succession 10 détecte un front descendant.

Detection: PROCESS
        VARIABLE detect : std_logic_vector(1 DOWNTO 0);
        BEGIN
            WAIT UNTIL rising_edge (clk); — c’est donc synchrone de clk
              front_montant <= ’0′;  front_descendant <= ’0′ ;
             detect(1) := detect(0);
             detect(0) := signal_lent;
             IF detect = « 01″ THEN
front_montant <= ’1′;
END IF;

             IF detect = « 10″ THEN
front_descendant <= ’1′;
END IF;

        END PROCESS; 

Observation:

  • Les signaux front_montant ou front_descendant vont servir de condition logique (ENABLE) dans un PROCESS de traitement
  • On n’a toujours qu’une seule horloge qui est clk

Leave a Reply

You must be logged in to post a comment.