HDL et vérification
Dans la description ci-dessus, juste avant le front montant d'horloge, a=0 et b=1. Quelles sont les valeurs de a et b après le front montant ?
always @(posedge clk) begin
a <= b;
b <= a;
end
- Aa=1, b=0 (échangées)
- Ba=1, b=1
- Ca=0, b=0
Afficher la réponse et l'explication
Réponse : A. a=1, b=0 (échangées)
Avec l'affectation non bloquante, les deux membres de droite (ancienne valeur de b, 1, et ancienne valeur de a, 0) sont d'abord évalués, puis 1 est écrit dans a et 0 dans b simultanément : les valeurs sont échangées. En circuit, cela correspond à deux bascules dont les sorties sont reliées aux entrées l'une de l'autre. Avec l'affectation bloquante (=), a devient 1 à la première ligne, et b reçoit à la deuxième la nouvelle valeur de a, 1 : les deux valent alors 1.