Negative Numbers
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 16 von 90.
In Verilog werden negative Zahlen im two's complement-Format dargestellt. two's complement ist eine Möglichkeit, sowohl positive als auch negative Zahlen binär darzustellen. Das höchstwertige Bit (MSB) gibt das Vorzeichen an:
- 0 = positive Zahl
- 1 = negative Zahl
So berechnest du Two's Complement
Um das two's complement einer Zahl zu bestimmen:
- Schreibe die positive Zahl binär
- Kehre alle bit um (0 wird zu 1, 1 wird zu 0)
- Addiere 1
Beispiel: -5 in 4 Bit darstellen
| Schritt | Operation | Ergebnis |
|---|---|---|
| 1 | Positive 5 im Binärsystem | 0101 |
| 2 | Alle Bits umkehren | 1010 |
| 3 | 1 addieren | 1011 |
-5 im 4-Bit-Zweierkomplement ist <strong>4'b1011</strong>
Negative Zahlen in Verilog schreiben
Du kannst negative Zahlen direkt im Dezimalformat schreiben:
reg signed [3:0] a;
a = -5; // Verilog verwendet automatisch das ZweierkomplementBei binären Zahlen mit fester Breite musst du den Wert im two's complement schreiben:
a = 4'b1011; // This is -5 in 4-bit two's complementVorzeichenbehaftet vs. vorzeichenlos
Standardmäßig behandelt Verilog Zahlen als vorzeichenlos. Um mit negativen Zahlen zu arbeiten, deklariere Signale als signed:
reg signed [3:0] negative; // Kann -8 bis 7 speichern
reg [3:0] positive; // Kann 0 bis 15 speichernBereich vorzeichenbehafteter Zahlen
Für N Bits kann eine vorzeichenbehaftete Zahl Folgendes darstellen:
- Minimum: -2^(N-1)
- Maximum: 2^(N-1) - 1
| Bits | Bereich |
|---|---|
| 4 Bits | -8 bis 7 |
| 8 Bits | -128 bis 127 |
| 16 Bits | -32768 bis 32767 |
Wichtige Hinweise
- Verwende das Schlüsselwort
signed, um die Verarbeitung negativer Zahlen zu aktivieren - Ohne
signedbehandelt Verilog alle Werte als positiv
- Die Zweierkomplement-Arithmetik funktioniert automatisch bei der Verwendung von
signed - Das MSB bestimmt das Vorzeichen: 1 = negative, 0 = positive
Aufgabe
Vervollständige den Code, indem du die richtigen Zweierkomplementwerte einträgst.
Was zu tun ist:
- Setze
amithilfe des 4-Bit-Binär-Zweierkomplements auf -3. - Setze
bmithilfe des 4-Bit-Binär-Zweierkomplements auf -8. - Setze
cmithilfe des 4-Bit-Binär-Zweierkomplements auf -1.
Probier es selbst
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
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareIhr erstes ModulKommentareAbstraktionsebenen des Designs4Operators 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 LogicÜbe selbstständig: Online-Verilog-Compiler