Menu
Coddy logo textTech

Nombres négatifs

Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 16 sur 90.

En Verilog, les nombres négatifs sont représentés en utilisant le format du complément à deux. Le complément à deux est un moyen de représenter à la fois les nombres positifs et négatifs en binaire. Le bit le plus significatif (MSB) indique le signe :

  • 0 = nombre positif
  • 1 = nombre négatif

Comment calculer le complément à deux

Pour trouver le complément à deux d'un nombre :

  1. Écrivez le nombre positif en binaire
  2. Inversez tous les bits (0 devient 1, 1 devient 0)
  3. Ajoutez 1

Exemple : Représenter -5 sur 4 bits

ÉtapeOpérationRésultat
15 positif en binaire0101
2Inverser tous les bits1010
3Ajouter 11011

-5 en complément à deux sur 4 bits est <strong>4'b1011</strong>

Écrire des nombres négatifs en Verilog

Vous pouvez écrire des nombres négatifs directement en utilisant le format décimal :

reg signed [3:0] a;
a = -5;        // Verilog utilise automatiquement le complément à deux

Pour les nombres binaires avec taille, vous devez écrire la valeur en complément à deux :

a = 4'b1011;   // This is -5 in 4-bit two's complement

Signed vs Unsigned

Par défaut, Verilog traite les nombres comme unsigned. Pour travailler avec des nombres négatifs, déclarez les signaux comme signed :

reg signed [3:0] negative;   // Peut stocker de -8 à 7
reg [3:0] positive;          // Peut stocker de 0 à 15

Plage des nombres signés

Pour N bits, un nombre signé peut représenter :

  • Minimum : -2^(N-1)
  • Maximum : 2^(N-1) - 1
BitsPlage
4 bits-8 à 7
8 bits-128 à 127
16 bits-32768 à 32767

Remarques importantes

  • Utilisez le mot-clé signed pour activer la prise en charge des nombres négatifs
  • Sans signed, Verilog traite toutes les valeurs comme positives
  • L'arithmétique en complément à deux fonctionne automatiquement lors de l'utilisation de signed
  • Le MSB détermine le signe : 1 = négatif, 0 = positif
challenge icon

Défi

Complétez le code en écrivant les bonnes valeurs en complément à deux.

Ce qu'il faut faire :

  1. Définissez a à -3 en utilisant le binaire sur 4 bits en complément à deux
  2. Définissez b à -8 en utilisant le binaire sur 4 bits en complément à deux
  3. Définissez c à -1 en utilisant le binaire sur 4 bits en complément à deux

Essayez vous-même

module negative_challenge;
  reg signed [3:0] a, b, c;
  
  initial begin
    a = 4'b______;   // -3 in 4-bit two's complement
    b = 4'b______;   // -8 in 4-bit two's complement
    c = 4'b______;   // -1 in 4-bit two's complement
    
    $display("a = %d", a);
    $display("b = %d", b);
    $display("c = %d", c);
    $finish;
  end
endmodule
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux