Menu
Coddy logo textTech

Negative Numbers

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

In Verilog werden negative Zahlen im two's complement-Format dargestellt. two's complement 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 Two's Complement

Um das two's complement einer Zahl zu bestimmen:

  1. Schreibe die positive Zahl binär
  2. Kehre alle bit 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

Bei binären Zahlen mit fester Breite musst du den Wert im two's complement 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