HDL et vérification

En Verilog, on additionne les signaux a et b de 8 bits et l'on affecte le résultat au signal s de 8 bits (assign s = a + b;). À quoi faut-il prendre garde ?

  1. AL'addition de deux valeurs de 8 bits ne peut pas s'écrire en Verilog
  2. BLe résultat est automatiquement étendu à 16 bits
  3. CSi la somme dépasse 255, la retenue du 9e bit est perdue ; si elle est nécessaire, s doit faire 9 bits
Afficher la réponse et l'explication

Réponse : C. Si la somme dépasse 255, la retenue du 9e bit est perdue ; si elle est nécessaire, s doit faire 9 bits

La somme de deux valeurs de 8 bits atteint au plus 255+255=510 et nécessite 9 bits. Si la destination s fait 8 bits, la retenue de poids fort est silencieusement perdue : par exemple, 200+100 donne 44. Pour exploiter aussi la retenue, on déclare s sur 9 bits. Verilog ne signale pas d'erreur sur l'affectation de signaux de largeurs différentes et se contente de tronquer ou d'étendre ; un outil de lint est utile pour détecter ces incohérences.

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

Autres questions sur HDL et vérification

  1. Voulant que a vaille -1 signé, on a écrit le code ci-dessus, et gt vaut 1. Pourquoi ?
  2. Quelle est la combinaison des valeurs de la logique à quatre états utilisée en simulation Verilog ?
  3. En simulation, un registre sans réinitialisation vaut initialement X. Que se passe-t-il vraisemblablement dans la puce réelle ?
  4. 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 ?
  5. Quel énoncé est généralement correct au sujet des descriptions trois états produisant Z (haute impédance) en HDL ?

Comparatifs sur ce thème