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 Möglichkeit, sowohl positive als auch negative Zahlen in Binärform 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:
- Schreibe die positive Zahl in Binärform
- Invertiere alle Bits (0 wird zu 1, 1 wird zu 0)
- Addiere 1
Beispiel: -5 in 4 Bits darstellen
| Schritt | Operation | Ergebnis |
|---|---|---|
| 1 | Positiver Wert 5 in Binär | 0101 |
| 2 | Alle Bits invertieren | 1010 |
| 3 | 1 addieren | 1011 |
-5 in 4-Bit-Zweierkomplement ist <strong>4'b1011</strong>
Negative Zahlen in Verilog schreiben
Sie können negative Zahlen direkt im Dezimalformat schreiben:
reg signed [3:0] a;
a = -5; // Verilog verwendet automatisch das ZweierkomplementFür breitenbeschränkte Binärzahlen müssen Sie den Zweierkomplement-Wert schreiben:
a = 4'b1011; // This is -5 in 4-bit two's complementSigned vs Unsigned
Standardmäßig behandelt Verilog Zahlen als 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 von signed-Zahlen
Für N bit kann eine signed-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
- Verwenden Sie das Schlüsselwort
signed, um die Verarbeitung negativer Zahlen zu aktivieren - Ohne
signedbehandelt Verilog alle Werte als positiv
- Zweierkomplement-Arithmetik funktioniert automatisch, wenn
signedverwendet wird - Das MSB bestimmt das Vorzeichen: 1 = negativ, 0 = positiv
Aufgabe
Vervollständige den Code, indem du die korrekten Zweierkomplement-Werte schreibst.
Was zu tun ist:
- Setze
aauf -3 unter Verwendung von 4-Bit-Zweierkomplement-Binärdaten - Setze
bauf -8 unter Verwendung von 4-Bit-Zweierkomplement-Binärdaten - Setze
cauf -1 unter Verwendung von 4-Bit-Zweierkomplement-Binärdaten
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