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 :
- Écrivez le nombre positif en binaire
- Inversez tous les bits (0 devient 1, 1 devient 0)
- Ajoutez 1
Exemple : Représenter -5 sur 4 bits
| Étape | Opération | Résultat |
|---|---|---|
| 1 | 5 positif en binaire | 0101 |
| 2 | Inverser tous les bits | 1010 |
| 3 | Ajouter 1 | 1011 |
-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 à deuxPour 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 complementSigned 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 à 15Plage des nombres signés
Pour N bits, un nombre signé peut représenter :
- Minimum : -2^(N-1)
- Maximum : 2^(N-1) - 1
| Bits | Plage |
|---|---|
| 4 bits | -8 à 7 |
| 8 bits | -128 à 127 |
| 16 bits | -32768 à 32767 |
Remarques importantes
- Utilisez le mot-clé
signedpour 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
Défi
Complétez le code en écrivant les bonnes valeurs en complément à deux.
Ce qu'il faut faire :
- Définissez
aà -3 en utilisant le binaire sur 4 bits en complément à deux - Définissez
bà -8 en utilisant le binaire sur 4 bits en complément à deux - 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
endmoduleCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
1Introduction
Qu'est-ce que VerilogHardware vs SoftwareNiveaux d'abstraction de conceptionVotre premier moduleCommentaires4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Assignation et portes logiques
Assignation continueAssignation avec opérateursPrimitives de portes intégréesPortes AND OR NOTPortes XOR XNORRécapitulatif - Circuit à portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'ALU2Types de données
Type WireType RegEntiers et RéelsVecteursTableauxParamètresRécapitulatif - Déclarer des signaux5Opérateurs - Partie 2
Opérateurs logiquesOpérateurs de réductionOpérateurs de décalageOpérateur de concaténationOpérateur conditionnelRécapitulatif - Défi sur les opérateurs11Boucles
Boucle ForBoucle WhileBoucle RépéterBoucle InfinieInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres avec tailleNombres sans tailleNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats de nombres6Modules
Structure d'un modulePorts d'entrée et de sortiePorts InoutInstanciation de moduleMappage de ports par nomMappage de ports par ordreRécapitulatif - Créer un module9Blocs procéduraux
Bloc AlwaysBloc InitialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - Always vs Initial12Projet Multiplexeur
Conception d'un Mux 2 vers 1Conception d'un Mux 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à états