HDL et vérification
Quelle combinaison de cause et de remède explique l'apparition d'un verrou dans la description ci-dessus ?
always @(*) begin
case (sel)
2'b00: y = a;
2'b01: y = b;
2'b10: y = c;
endcase
end
- ALa case utilise trois entrées ; réduire à deux entrées
- By n'est pas affecté lorsque sel=2'b11 ; ajouter une clause default pour fixer la valeur dans tous les cas
- Calways @(*) est utilisé ; le remplacer par always @(posedge clk)
Afficher la réponse et l'explication
Réponse : B. y n'est pas affecté lorsque sel=2'b11 ; ajouter une clause default pour fixer la valeur dans tous les cas
sel, sur 2 bits, prend 4 valeurs, mais le cas 2'b11 n'est pas écrit ; y doit alors conserver sa valeur précédente et un verrou apparaît. En fixant la valeur pour tous les cas restants, par exemple « default: y = 0; », ou en affectant une valeur par défaut à y avant la case, on obtient un circuit combinatoire. Les verrous dus à des conditions oubliées sont une erreur fréquente chez les débutants en HDL.