Menu
CoddyTech

Nombres négatifs

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

Dans Verilog, les nombres négatifs sont représentés au format du complément à deux. Le complément à deux est une manière de représenter à la fois les nombres positifs et négatifs en binaire. Le bit de poids fort (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 directement des nombres négatifs au format décimal :

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

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

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

Signé contre non signé

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

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 valeurs correctes en complément à deux.

À faire :

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

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

Entraînez-vous par vous-même : Compilateur Verilog en ligne