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 dargestellt. Das Zweierkomplement ist eine Möglichkeit, 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

So berechnest du das Zweierkomplement

So findest du das Zweierkomplement einer Zahl:

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

Beispiel: -5 in 4 Bit darstellen

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

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

Für Binärzahlen mit fester Breite musst du den Zweierkomplementwert schreiben:

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

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

Bereich 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 aktivieren
  • Ohne signed behandelt Verilog alle Werte als positiv
  • Die Zweierkomplement-Arithmetik funktioniert automatisch bei der Verwendung von signed
  • Das MSB bestimmt das Vorzeichen: 1 = negative, 0 = positive
challenge icon

Aufgabe

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

Was zu tun ist:

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