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 :
- É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 directement des nombres négatifs au format décimal :
reg signed [3:0] a;
a = -5; // Verilog utilise automatiquement le complément à deuxPour 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 complementSigné 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 à 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 |
Notes importantes
- Utilisez le mot-clé
signedpour 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
Défi
Complétez le code en écrivant les valeurs correctes en complément à deux.
À faire :
- Définissez
asur -3 en utilisant le binaire en complément à deux sur 4 bits - Définissez
bsur -8 en utilisant le binaire en complément à deux sur 4 bits - Définissez
csur -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
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 VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Affectations et portes
Affectation continueAffectation avec opérateursPrimitives de portes intégréesPortes AND, OR et NOTPortes XOR et XNORRécapitulatif - Circuit de portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'une 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 RepeatBoucle ForeverInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres dimensionnésNombres non dimensionnésNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats des nombres6Modules
Structure d’un modulePorts d’entrée et de sortiePorts InoutInstantiation d’un moduleAssociation des ports par nomAssociation des ports par ordreRécapitulatif - Construire un module9Blocs procéduraux
Bloc alwaysBloc initialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - always vs initial12Projet de multiplexeur
Conception d’un multiplexeur 2 vers 1Conception d’un multiplexeur 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à étatsEntraînez-vous par vous-même : Compilateur Verilog en ligne