Menu
CoddyTech

Negative Zahlen

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 16 von 90.

In Verilog werden negative Zahlen im Zweierkomplement dargestellt. Das Zweierkomplement 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 das Zweierkomplement

So findest du das Zweierkomplement einer Zahl:

  1. Schreibe die positive Zahl binär auf
  2. Kehre alle Bits um (aus 0 wird 1, aus 1 wird 0)
  3. Addiere 1

Beispiel: −5 mit 4 Bits darstellen

SchrittOperationErgebnis
1Positives 5 im Binärsystem0101
2Alle Bits umkehren1010
31 addieren1011

−5 im 4-Bit-Zweierkomplement ist 4'b1011

Negative Zahlen in Verilog schreiben

Du kannst negative Zahlen direkt im Dezimalformat schreiben:

reg signed [3:0] a;
a = -5;        // Verilog verwendet automatisch das Zweierkomplement

Bei Binärzahlen mit fester Breite musst du den Wert im Zweierkomplement schreiben:

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

Mit Vorzeichen vs. ohne Vorzeichen

Standardmäßig sind reg- und wire-Signale vorzeichenlos. Um mit negativen Zahlen zu arbeiten, deklarierst du Signale als signed:

reg signed [3:0] negative;   // Kann Werte von -8 bis 7 speichern
reg [3:0] positive;          // Kann Werte von 0 bis 15 speichern

Wertebereich vorzeichenbehafteter Zahlen

Für N Bits kann eine vorzeichenbehaftete 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

  • Verwende das Schlüsselwort signed, um die Verarbeitung negativer Zahlen zu ermöglichen
  • Ohne signed behandelt ein reg oder wire jeden Wert als positiv
  • Die Zweierkomplement-Arithmetik funktioniert automatisch, wenn du signed verwendest.
  • Das höchstwertige Bit bestimmt das Vorzeichen: 1 = negativ, 0 = positiv
challenge icon

Aufgabe

Vervollständige den Code, indem du die richtigen Zweierkomplementwerte einträgst.

Aufgabe:

  1. Setze a mithilfe des 4-Bit-Zweierkomplements auf -3
  2. Setze b mithilfe des 4-Bit-Zweierkomplements auf -8
  3. Setze c mithilfe des 4-Bit-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
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

Übe selbstständig: Online-Verilog-Compiler