Negative Numbers
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 two's complement. two's complement est une méthode permettant 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 Two's complement
Pour trouver le Two's complement d’un nombre :
- Écrire le nombre positive en binaire
- Inverser tous les bit (0 devient 1, 1 devient 0)
- Ajouter 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 du complément à two fonctionne automatically lors de l'utilisation de
signed - Le MSB détermine le signe : 1 = negative, 0 = positive
Défi
Complétez le code en écrivant les valeurs correctes en two's complement.
À faire :
- Définissez
asur -3 en utilisant une représentation binaire sur 4 bits en two's complement - Définissez
bsur -8 en utilisant une représentation binaire sur 4 bits en two's complement - Définissez
csur -1 en utilisant une représentation binaire sur 4 bits en two's complement
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 conception4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicEntraînez-vous par vous-même : Compilateur Verilog en ligne