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);
  1. Aa n'étant pas déclaré signed, il est comparé comme la valeur non signée 255
  2. BEn Verilog, le résultat d'une comparaison vaut toujours 1
  3. 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.

S'entraîner sur ce thème Retour au thème

Autres questions sur HDL et vérification

  1. Quelle est la combinaison des valeurs de la logique à quatre états utilisée en simulation Verilog ?
  2. En simulation, un registre sans réinitialisation vaut initialement X. Que se passe-t-il vraisemblablement dans la puce réelle ?
  3. Dans la description ci-dessus, lorsque sel vaut X (indéterminé), la simulation Verilog sélectionne b pour y. Pourquoi cette propriété pose-t-elle problème en vérification ?
  4. Quel énoncé est généralement correct au sujet des descriptions trois états produisant Z (haute impédance) en HDL ?
  5. Quelle est la définition du banc de test utilisé en vérification HDL ?

Comparatifs sur ce thème