2017-02-20 2 views
0

J'ai toujours un peu de mal à comprendre la liste de sensibilité et à activer un processus. la plupart des manuels disent qu'un processus est activé chaque fois qu'un événement se produit sur un signal dans la liste de sensibilité.Le processus est-il activé ou suspendu?

process(in) 
begin 
    x <= in; 
end process; 

Vous voyez maintenant cet exemple, « dans » est une entrée déclarée dans l'entité. Maintenant, si "in" commence à 0 et passe à 1, alors le processus s'activera et la valeur de x prendra la valeur "in". Supposons maintenant après avoir changé de 0 à 1 qu'il reste maintenant à la valeur constante de 1. Cela signifie-t-il que le processus ne sera pas activé? Est-ce que x donnera toujours la sortie de '1'? Je veux dire qu'il ne sera pas activé et ne sera activé qu'une fois dans les changements de retour de 1 à 0. Quelqu'un peut-il confirmer s'il vous plaît?

+1

Est-ce que 'in' n'est pas un mot réservé ou quelque chose? –

+0

C'est le cas, mais j'ai supposé qu'il voulait juste l'utiliser comme exemple. @BrianDrummond –

Répondre

0

Dans la liste de sensibilité (je suppose qu'il s'agit d'un langage matériel, VHDL a la même syntaxe et le même format) chaque fois qu'il y a un changement de signal (L-> H, 0 -> 1, 1-> 0. .. tout changement dans la variable que vous avez listée dans la liste de sensibilité), il activera le processus et le processus s'exécutera jusqu'à la fin, ce qui entraînera la fin du processus. A la fin du processus, les signaux/sorties (dépend de la façon dont vous les interprétez) seront stockés sur un pilote, ce qui mettra à jour les signaux donnés après un certain délai de propagation.

Donc, à partir de votre deuxième déclaration, oui. S'il passe à 0 -> 1, le processus s'active, si 1 -> 0, le processus est activé, et si dans reste 1, le processus ne sera pas activé. La valeur de x reste donc.

+0

Oui, c'est VHDL, mais merci !! –