Comment l'assignation de signal fonctionne-t-elle dans un processus?

J'ai appris qu'un signal n'est pas modifié immédiatement lors de la rencontre d'une expression, mais lorsque le processus se termine. Dans cet exemple, ici:

...
signal x,y,z : bit;
...
process (y)
begin
  x<=y;
  z<=not x;
end process;

L'exemple dit ceci:

Si le signal y les modifications, puis un événement sera prévue sur x pour faire la même chose que y. Aussi, une manifestation est prévue sur z pour faire le contraire de x. La question est, la valeur de z est l'inverse de y? Bien sûr, la réponse est non, car si la deuxième instruction est exécutée, l'événement sur x n'a pas encore été traitée, et la manifestation prévue sur z sera l'inverse de la valeur de x avant le début du processus.

Bien, j'ai besoin de comprendre certaines choses:

  1. De ce que j'ai appris, les signaux de valeurs sont mises à jour uniquement à la fin du processus de. Est-ce correct?
  2. Le signal x est mis à jour comme la première déclaration. Ce n'est pas de changer la valeur de xce changement est mis dans une file d'attente pour être exécuté après la fin du processus. Donc tout ce qui est après cette déclaration x <= y va pas voir le changement et voir x ayant son ancienne valeur. Est-ce correct?
  3. La deuxième déclaration est une tentative de modifier la valeur du signal z. La même ici, z ne changera pas sa valeur, mais il dépend de la valeur d'un autre processus. Le changement sur z sera mis en file d'attente pour être exécuté à la fin du processus. Est-ce correct?

Ce qui arrive à la fin du processus?

Possibilité numéro 1) La valeur en x est changé, alors x a sa nouvelle valeur. Le deuxième signal z est mis à jour, le premier signal x a été mis à jour et, étant donné que z dépend xsa valeur est modifiée en se basant sur la NOUVELLE mise à JOUR de la valeur de x. Et l'exemple devrait fonctionner correctement.

Possibilité numéro 2) La valeur en x est changé, alors x a sa nouvelle valeur. Le deuxième signal z est mis à jour. Étant donné que z est un vieux de la valeur de xc'est la valeur que z tiendra, l'ancienne valeur de x qui a été mis à jour, mais cette mise à jour n'est pas considérée.

Pourriez-vous me dire laquelle est la bonne façon?

source d'informationauteur Andry