Menu
Coddy logo textTech

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:

  1. Schreibe die positive Zahl in Binärform
  2. Invertiere alle Bits (0 wird zu 1, 1 wird zu 0)
  3. Addiere 1

Beispiel: -5 in 4 Bits darstellen

SchrittOperationErgebnis
1Positiver Wert 5 in Binär0101
2Alle Bits invertieren1010
31 addieren1011

-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 Zweierkomplement

Für breitenbeschränkte Binärzahlen müssen Sie den Zweierkomplement-Wert schreiben:

a = 4'b1011;   // This is -5 in 4-bit two's complement

Signed 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 speichern

Wertebereich von signed-Zahlen

Für N bit kann eine signed-Zahl Folgendes darstellen:

  • Minimum: -2^(N-1)
  • Maximum: 2^(N-1) - 1
BitsBereich
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 signed behandelt Verilog alle Werte als positiv
  • Zweierkomplement-Arithmetik funktioniert automatisch, wenn signed verwendet wird
  • Das MSB bestimmt das Vorzeichen: 1 = negativ, 0 = positiv
challenge icon

Aufgabe

Vervollständige den Code, indem du die korrekten Zweierkomplement-Werte schreibst.

Was zu tun ist:

  1. Setze a auf -3 unter Verwendung von 4-Bit-Zweierkomplement-Binärdaten
  2. Setze b auf -8 unter Verwendung von 4-Bit-Zweierkomplement-Binärdaten
  3. Setze c auf -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
endmodule
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen