Negative Zahlen
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 16 von 90.
In Verilog werden negative Zahlen im Zweierkomplement-Format dargestellt. Das Zweierkomplement ist eine Methode, um sowohl positive als auch negative Zahlen im Binärsystem darzustellen. Das höchstwertige Bit (MSB) gibt das Vorzeichen an:
- 0 = positive Zahl
- 1 = negative Zahl
Wie man das Zweierkomplement berechnet
Um das Zweierkomplement einer Zahl zu finden:
- Schreiben Sie die positive Zahl im Binärformat
- Invertieren Sie alle Bits (0 wird zu 1, 1 wird zu 0)
- Addieren Sie 1
Beispiel: Darstellung von -5 in 4 Bit
| Schritt | Operation | Ergebnis |
|---|---|---|
| 1 | Positive 5 in Binärform | 0101 |
| 2 | Alle Bits invertieren | 1010 |
| 3 | 1 addieren | 1011 |
-5 im 4-Bit-Zweierkomplement ist <strong>4'b1011</strong>
Schreiben von negativen Zahlen in Verilog
Sie können negative Zahlen direkt im Dezimalformat schreiben:
reg signed [3:0] a;
a = -5; // Verilog verwendet automatisch das ZweierkomplementFür binäre Zahlen mit Größenangabe müssen Sie den Zweierkomplementwert schreiben:
a = 4'b1011; // Dies ist -5 im 4-Bit-ZweierkomplementVorzeichenbehaftet vs. Vorzeichenlos
Standardmäßig behandelt Verilog Zahlen als vorzeichenlos (unsigned). Um mit negativen Zahlen zu arbeiten, deklarieren Sie Signale als signed:
reg signed [3:0] negative; // Kann -8 bis 7 speichern
reg [3:0] positive; // Kann 0 bis 15 speichernWertebereich vorzeichenbehafteter Zahlen
Für N Bits kann eine vorzeichenbehaftete Zahl Folgendes darstellen:
- Minimum: -2^(N-1)
- Maximum: 2^(N-1) - 1
| Bits | Wertebereich |
|---|---|
| 4 Bits | -8 bis 7 |
| 8 Bits | -128 bis 127 |
| 16 Bits | -32768 bis 32767 |
Wichtige Hinweise
- Verwenden Sie das Schlüsselwort
signed, um die Verarbeitung negativer Zahlen zu aktivieren - Ohne
signedbehandelt Verilog alle Werte als positiv
- Zweierkomplement-Arithmetik funktioniert automatisch bei der Verwendung von
signed - Das MSB bestimmt das Vorzeichen: 1 = negativ, 0 = positiv
Aufgabe
Vervollständigen Sie den Code, indem Sie die korrekten Zweierkomplement-Werte schreiben.
Was zu tun ist:
- Setzen Sie
aauf -3 unter Verwendung des 4-Bit-Zweierkomplements in Binärform - Setzen Sie
bauf -8 unter Verwendung des 4-Bit-Zweierkomplements in Binärform - Setzen Sie
cauf -1 unter Verwendung des 4-Bit-Zweierkomplements in Binärform
Spickzettel
In Verilog verwenden negative Zahlen das Zweierkomplement-Format. Das MSB (Most Significant Bit) gibt das Vorzeichen an: 0 = positiv, 1 = negativ.
Berechnung des Zweierkomplements:
- Schreiben Sie die positive Zahl binär auf
- Invertieren Sie alle Bits
- Addieren Sie 1
Beispiel: -5 in 4 Bits → 0101 → 1010 → 1011 = 4'b1011
Deklarieren Sie Signale als signed, um negative Zahlen zu verarbeiten:
reg signed [3:0] negative; // Kann -8 bis 7 speichern
reg [3:0] positive; // Kann 0 bis 15 speichernWeisen Sie negative Werte direkt oder über binäres Zweierkomplement zu:
reg signed [3:0] a;
a = -5; // Verilog verwendet automatisch das Zweierkomplement
a = 4'b1011; // Äquivalent: -5 im 4-Bit-ZweierkomplementBereich für N-Bit signed: -2^(N-1) bis 2^(N-1) - 1 (z. B. 4 Bits: -8 bis 7).
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. SoftwareAbstraktionsebenen im DesignDein erstes ModulKommentare4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – Einfache MathematikBitweise Operatoren7Zuweisung und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-PrimitiveAND OR NOT GatterXOR XNOR GatterZusammenfassung - Logikgatterschaltung10Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher KomparatorCase-AnweisungCasex und CasezWiederholung - ALU-Design5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenShift-OperatorenVerkettungsoperatorBedingter OperatorZusammenfassung – Operator-Challenge11Schleifen
For-SchleifeWhile-SchleifeRepeat-SchleifeEndlosschleifeDisable-AnweisungRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit GrößenangabeZahlen ohne GrößenangabeNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturEingangs- und Ausgangs-PortsInout-PortsModul-InstanziierungPort-Mapping nach NamePort-Mapping nach ReihenfolgeZusammenfassung – Ein Modul erstellen