Altifigence Academy

2 / 63 · Konzept

Zahlensysteme und Darstellung mit fester Breite

Über die Basisumrechnung hinaus Wertebereiche, erforderliche Bitzahlen und Abschneidefehler berechnen.

Ausgangspunkt dieses Kurses

Empfohlen werden Schulalgebra und erste Programmiererfahrung. Binärzahlen und boolesche AlgebraBoolesche Algebra Algebra mit 0,1, AND, OR und NOT. Das Pluszeichen bedeutet meist OR und folgt anderen Regeln als Ganzzahladdition. Mehr erfahren werden im Kurs eingeführt; danach geht es zügig auf einführendem Hochschulniveau weiter. Konzentrieren Sie sich darauf, Eingangsbedingungen, Bitbreiten und Beobachtungszeitpunkte festzulegen und an Beispielen zu prüfen, statt Formeln auswendig zu lernen.

Bitfolge und Wert sind zu unterscheiden

Eine Schaltung speichert eine endliche Bitfolge. Ob sie als Ganzzahl, vorzeichenbehafteter Wert oder FestkommazahlFestkomma Zahlendarstellung mit festgelegtem Binärpunkt und Skalierung einer Ganzzahlbitfolge. Breite, Vorzeichen und Nachkommabitanzahl sind gemeinsam festzulegen. Mehr erfahren interpretiert wird, legt der Entwurfsvertrag fest. Diese Lektion setzt Ganzzahlarithmetik und Potenzen voraus und geht direkt zur Bereichsberechnung für reales RTL über.

Ein vorzeichenloserUnsigned Interpretation einer Bitfolge als nichtnegative Ganzzahl. Der n-Bit-Bereich ist 0 bis 2^n−1 und kann sich von der signed-Interpretation derselben Bits unterscheiden. Wert aus NN Bit wird so interpretiert:

u=∑i=0N−1bi2i,0≤u≤2N−1u=\sum_{i=0}^{N-1}b_i2^i,\qquad 0\le u\le 2^N-1

10110110 entspricht 128+32+16+4+2=182128+32+16+4+2=182. In Vierergruppen ergibt sich B6; 8'hB6 und 8'b10110110 sind daher dieselbe Bitfolge. Eine Hexadezimalziffer steht stets für vier Bit, was die Umrechnung beim Lesen von Adressen, Masken und Zeitdiagrammen erleichtert.

Dieselbe Bitfolge, andere Interpretation

Schalten Sie unten b7 um. Bei vorzeichenloser Interpretation kommt das Gewicht 128 hinzu; im ZweierkomplementZweierkomplement Darstellung vorzeichenbehafteter Ganzzahlen mit fester Bitbreite. n Bit reichen von −2^(n−1) bis 2^(n−1)−1. Mehr erfahren hat das höchstwertige Bit dagegen das Gewicht −128. Stellen Sie zunächst 0x7F und 0x80 ein und vergleichen Sie die Grenze beider Interpretationen.

Bits und Zahlendarstellungen

10110110 → unsigned 182 · signed -74 · hex 0xB6

Eine Bitfolge zu ändern und sie als signed zu interpretieren sind unterschiedliche Operationen. Obwohl die Schaltungsbreite unverändert acht Bit beträgt, kann ein Vergleich je nach Vorzeicheninformation der Operanden anders ausfallen.

Zuerst den Bereich, dann die Bitbreite festlegen

Die Mindestanzahl von Bits zur Unterscheidung von MM Zuständen ist:

N=⌈log⁡2M⌉N=\left\lceil\log_2 M\right\rceil

Für 0 bis 999 sind 1000 Werte und damit zehn Bit nötig. Für 0 bis 1024 sind es 1025 Werte und elf Bit. Wer Höchstwert und Zustandsanzahl verwechselt, verliert genau an der Grenze ein nötiges Bit. Wird das RTL bis zu M=1M=1 parametrisiert, muss die Breite auf mindestens eins begrenzt werden, damit kein Vektor mit null Bit entsteht.

Was beim Speichern in einem schmaleren Signal geschieht

Beim vorzeichenlosen Speichern mit verworfenen oberen Bits und nur NN verbleibenden Bits wird modular gerechnet:

xstored=x mod 2Nx_{stored}=x\bmod 2^N

Wird etwa das 9-Bit-Ergebnis 300 in acht Bit gespeichert, bleibt 44 übrig. Das ist weder Rundung noch Sättigung. Für Sättigungsarithmetik braucht es zusätzliche Logik, die eine Bereichsüberschreitung erkennt und den Höchstwert auswählt.

SystemVerilog
logic [7:0] a, b, low;
logic [8:0] full_sum;
assign full_sum = {1'b0, a} + {1'b0, b};
assign low = full_sum[7:0];

Die Erweiterung beider Operanden vor der Addition macht deutlich, dass auch der Übertrag erhalten bleiben soll. Aus der Zahlenschreibweise allein folgen weder Vorzeicheninterpretation noch Ergebnisbreite. Zum Lesen eines Zeitdiagramms sind Breite, Vorzeichen und Basis erforderlich.

Selbst ausprobieren

Wie viele Bits sind für Zählwerte von 0 bis 4095 beziehungsweise bis 4096 nötig? Welcher Wert bleibt beim Speichern von 511 als 8-Bit-unsigned übrig?

Erklärung lesen

Der erste Bereich hat 4096=2124096=2^{12} Werte und benötigt zwölf Bit; der zweite 4097 Werte und dreizehn Bit. Wegen 511 mod 256=255511\bmod256=255 wird 8'hFF gespeichert. Daraus allein lässt sich nicht schließen, dass kein Überlauf auftrat.

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