HDL et vérification
Voulant que a vaille -1 signé, on a écrit le code ci-dessus, et gt vaut 1. Pourquoi ?
wire [7:0] a = 8'hFF;
wire gt = (a > 8'd1);
- Aa n'étant pas déclaré signed, il est comparé comme la valeur non signée 255
- BEn Verilog, le résultat d'une comparaison vaut toujours 1
- C8'hFF a la même valeur que 0
Afficher la réponse et l'explication
Réponse : A. a n'étant pas déclaré signed, il est comparé comme la valeur non signée 255
Les signaux Verilog étant traités comme non signés sauf déclaration signed, 8'hFF vaut 255, et 255 > 1 est vrai. En déclarant a et b comme « wire signed [7:0] », ils sont comparés en complément à deux, a valant -1, et le résultat est 0. La règle veut aussi que si une seule valeur non signée figure dans une expression, tout le calcul soit non signé ; pour les calculs signés, il est essentiel d'harmoniser le type de toutes les valeurs.