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 une méthode pour 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 dimensionnés, vous devez écrire la valeur en complément à deux :

a = 4'b1011;   // Ceci est -5 en complément à deux sur 4 bits

Signé vs Non-signé

Par défaut, Verilog traite les nombres comme non-signés. 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

Notes importantes

  • Utilisez le mot-clé signed pour activer la gestion 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 en complément à deux sur 4 bits
  2. Définissez b à -8 en utilisant le binaire en complément à deux sur 4 bits
  3. Définissez c à -1 en utilisant le binaire en complément à deux sur 4 bits

Aide-mémoire

En Verilog, les nombres négatifs utilisent le format du complément à deux. Le bit de poids fort (MSB) indique le signe : 0 = positif, 1 = négatif.

Calcul du complément à deux :

  1. Écrire le nombre positif en binaire
  2. Inverser tous les bits
  3. Ajouter 1

Exemple : -5 sur 4 bits → 010110101011 = 4'b1011

Déclarez les signaux comme signed pour gérer les nombres négatifs :

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

Attribuez des valeurs négatives directement ou via le binaire en complément à deux :

reg signed [3:0] a;
a = -5;        // Verilog utilise automatiquement le complément à deux
a = 4'b1011;   // Équivalent : -5 en complément à deux sur 4 bits

Plage pour un type signé de N bits : -2^(N-1) à 2^(N-1) - 1 (par exemple, 4 bits : -8 à 7).

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