Altifigence Academy

2 / 24 · Konzept

Bitbreiten, Vorzeichenerweiterung und Überlauf

Unterscheiden Sie Interpretation, Erweiterung und Verringerung der Bitbreite anhand von Zahlenbeispielen.

Ein Bitmuster von seiner Bedeutung trennen

Das Acht-Bit-Muster 1111_1101 stellt vorzeichenlos 253 oder im vorzeichenbehafteten Zweierkomplement -3 dar. Die gespeicherten Bits sind identisch, Vergleiche und Erweiterungen unterscheiden sich jedoch. Ein vorzeichenbehafteter Acht-Bit-Wert reicht von -128 bis 127, ein vorzeichenloser von 0 bis 255. Die Bitbreite legt die Anzahl darstellbarer Muster fest, die Vorzeicheninterpretation ihre numerische Bedeutung.

Erweitern Sie den vorzeichenlosen Wert 253 beim Übergang auf sechzehn Bits mit Nullen. Erweitern Sie -3 mit dem Vorzeichen, indem Sie sein ursprüngliches höchstwertiges Bit wiederholen; daraus entsteht 1111_1111_1111_1101. Eine Nullerweiterung würde -3 in 253 verwandeln. Legen Sie in SystemVerilog die Operandentypen und Bitbreiten vor der Berechnung ausdrücklich fest; nehmen Sie nicht an, dass eine Verkettung oder eine Bereichsauswahl die beabsichtigte Vorzeicheninterpretation erhält.

SystemVerilog
logic [7:0] ua, ub;
logic [8:0] usum;
logic signed [7:0] sa, sb;
logic signed [8:0] sax, sbx, ssum;
assign usum = {1'b0, ua} + {1'b0, ub};
assign sax = {sa[7], sa};
assign sbx = {sb[7], sb};
assign ssum = sax + sbx;

Hier werden beide Eingaben vor der Addition auf neun Bits erweitert. Vorzeichenlos ergibt 255+1 den Wert 256 und anschließend Null in den unteren acht Bits. Vorzeichenbehaftet ergibt 127+1 mathematisch ebenfalls 128, doch die Verringerung auf vorzeichenbehaftete acht Bits liefert -128. Der Übertrag zeigt eine vorzeichenlose Grenzüberschreitung an; der vorzeichenbehaftete Überlauf eine vorzeichenbehaftete. Werden gleichnamige Operanden addiert und ändert sich das Vorzeichen des Ergebnisses, liegt ein vorzeichenbehafteter Überlauf vor. Die Addition von -1 und 1 kann einen Übertrag ohne vorzeichenbehafteten Überlauf erzeugen.

Planen Sie auch die Bitbreiten der Zwischenwerte. Das größte vorzeichenlose Acht-Bit-Produkt ist 65025 und benötigt sechzehn Bits. Vier vorzeichenlose Acht-Bit-Werte können sich zu 1020 addieren und erfordern zehn Bits. Wird jede Teilsumme auf acht Bits gekürzt, gehen Informationen verloren, die ein breiteres Ergebnisregister nicht wiederherstellen kann.

OperationBreites ErgebnisInterpretation nach Verringerung der Bitbreite
vorzeichenlos 255+12560 mit Übertrag
vorzeichenbehaftet 127+1128-128 mit Überlauf
vorzeichenbehaftet -3+2-1-1 ohne Überlauf

Untersuchen Sie unbeabsichtigte Größenänderungen mit Verilators WIDTH-Warnungen. Die Node-Prüfungen dieses Kurses führen numerische Modelle aus, keine dieser HDL-Codepassagen. Testen Sie Null, Extremwerte und gemischte Vorzeichen, bevor Sie typische positive Beispiele als Beleg für Korrektheit ansehen.

Selbst ausprobieren

Bestimmen Sie das Ergebnis, wenn die Acht-Bit-Werte -3 und 2 mit Vorzeichenerweiterung auf neun Bits gebracht und addiert werden. Bestimmen Sie außerdem die minimale Bitbreite für die exakte Summe von vier vorzeichenlosen Werten von 255.

Erklärung lesen

Die Neun-Bit-Operanden lauten 111111101 und 000000010. Ihre Summe ist 111111111, also -1. Vier Werte von 255 ergeben 1020; neun vorzeichenlose Bits reichen nur bis 511, daher sind zehn Bits erforderlich.

Deine Auswahl gilt für diesen Browser. Du kannst sie jederzeit in der Fußzeile ändern.