2 / 20 · Konzept
Vorzeichenbehaftete Produkte und Akkumulatorbreite
Leiten Sie eine Akkumulatorbreite aus dem ungünstigsten Operandenbereich ab.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
Den negativsten Eingangswert berücksichtigen
Ein W-Bit-Eingang im Zweierkomplement reicht von −2^(W−1) bis 2^(W−1)−1. Das größte positive Produkt entsteht, wenn beide Eingaben den negativsten Wert haben. Für W=8 gilt (−128)×(−128)=16384, mehr als 127×127=16129. Ein vollständiges vorzeichenbehaftetes Produkt zweier W-Bit-Eingaben lässt sich sicher in 2W Bits darstellen.
Für eine Reduktion mit K Termen wählt dieser Kurs die folgende konservative Regel. K muss positiv sein; die Regel setzt gleiche Operandenbreiten und keinen zusätzlichen Bias voraus.
Die Regel liefert eine einfache sichere Grenze und behauptet nicht für jedes K die minimale Breite. Bei W=8 und K=4 wählen Sie achtzehn Bits. Vier maximale Produkte ergeben 65536. Ein vorzeichenbehafteter Siebzehn-Bit-Akkumulator reicht nur bis 65535 und versagt daher genau an dieser Grenze. Achtzehn Bits decken −131072 bis 131071 ab. Bei K=1 kommen keine zusätzlichen Akkumulationsbits hinzu.
Das Vorzeichen ausdrücklich erhalten
Deklarieren Sie Zwischensignale, statt die Größe von Ausdrücken zu erraten. AW muss mindestens PW betragen.
localparam int PW = 2*W;
localparam int AW = PW + $clog2(K);
logic signed [W-1:0] a, b;
logic signed [PW-1:0] product;
logic signed [AW-1:0] addend, acc;
assign product = $signed(a) * $signed(b);
assign addend = {{(AW-PW){product[PW-1]}}, product};Das Acht-Bit-Muster 0xFE stellt −2 dar. Die Multiplikation mit drei ergibt −6; die Erweiterung dieses Produkts erfordert Vorzeichenerweiterung. Nullerweiterung verwandelt eine negative Zahl in eine positive. Dokumentieren Sie den Punkt, an dem ein vorzeichenloses Schnittstellen-Bitmuster zum vorzeichenbehafteten arithmetischen Wert wird.
Die Breite hängt von der vollständigen, im Akkumulator gehaltenen Reduktion ab. Die Aufteilung von K in Kacheln rechtfertigt keine geringere Breite eines Teilakkumulators, wenn dieser vor dem Zusammenführen überlaufen kann. Das Hinzufügen eines Bias oder das Kombinieren mehrerer Reduktionen erfordert eine neue Wertebereichsanalyse.
Testen Sie Minimum×Minimum, Minimum×Maximum, Maximum×Maximum und wechselnde Vorzeichen. Bewahren Sie sowohl die breite Ganzzahlreferenz als auch das Ergebnis mit gewählter Breite auf. Exakte Akkumulation im spezifizierten Bereich und Umlauf oder Sättigung außerhalb davon sind getrennte Verhaltensregeln; wenn alle Abweichungen pauschal als Überlauf behandelt werden, bleiben echte Vorzeichenfehler verborgen.
Selbst ausprobieren
Bestimmen Sie für W=4 und K=3 die konservative AW und die maximale positive Summe. Welches Bit wird bei der Erweiterung des Produkts −8×7 verwendet?
Erklärung lesen
PW=8 und ceil(log2 3)=2, also AW=10. Die maximale positive Summe ist 3×64=192. Das Produkt ist −56 und muss mit Einsen erweitert werden. Zehn vorzeichenbehaftete Bits decken −512..511 ab.