Booth-Multiplizierer erklärt (mit Beispielen)
Lernen Sie Booth-Rekodierung mit Radix-2 und Radix-4, verfolgen Sie −3 × 5 Schritt für Schritt und vermeiden Sie Vorzeichen- und Breitenfehler in iterativen Hardware-Multiplizierern.
Kurz gesagt: Booth-Rekodierung schreibt Folgen von
1-Bits als vorzeichenbehaftete Ziffern um. Radix-2-Booth untersucht pro Iteration das Paar :01addiert den Multiplikanden,10subtrahiert ihn,00und11tun nichts, anschließend folgt ein arithmetischer Rechtsshift. Eine sichere -Bit-Implementierung erweitert das Vorzeichen des Multiplikanden und verwendet einen -Bit-Akkumulator. Modified Booth mit Radix 4 reduziert die Zahl der Teilprodukte ungefähr auf die Hälfte, indem es aus wählt.
Binärmultiplikation lässt sich aus Shifts und Additionen aufbauen. Die Herausforderung besteht nicht darin, dass sich Zweierkomplement-Operanden ohne Booth nicht multiplizieren ließen – das ist durchaus möglich –, sondern darin, Vorzeichenbehandlung und Teilprodukterzeugung korrekt zu entwerfen.
Booths Verfahren bietet eine einheitliche vorzeichenbehaftete Rekodierung und komprimiert Folgen von 1-Bits. Es ist für zwei unterschiedliche Architekturen nützlich:
- einen iterativen Multiplizierer, der einen Addierer über mehrere Takte wiederverwendet
- einen parallelen Multiplizierer, der rekodierte Teilprodukte erzeugt und sie mit einem Addierer-/Kompressortree reduziert
Beide Architekturen nutzen dieselbe Rekodierungsidee, unterscheiden sich jedoch bei Latenz, Fläche und Timing.
Die Identität einer Einsenfolge
Betrachten Sie eine Folge binärer Einsen von Bit bis Bit , wobei gilt:
Beispiel:
Bei einer gewöhnlichen vorzeichenlosen Shift-and-Add-Multiplikation würden für 1111 vier verschobene Kopien des Multiplikanden addiert. Die Booth-Rekodierung stellt diese Folge durch eine Subtraktion an ihrer unteren Grenze und eine Addition an der Stelle oberhalb ihrer oberen Grenze dar.
Das garantiert nicht bei jedem Bitmuster weniger von null verschiedene Operationen. Eine lange Folge profitiert; isolierte oder alternierende Einsen können keine Reduktion bringen und die Zahl der Addier-/Subtrahierentscheidungen sogar erhöhen. Ein iterativer Radix-2-Multiplizierer mit fester Latenz führt weiterhin Iterationen aus – die Rekodierung ändert die Rechenaktion innerhalb jeder Iteration, nicht automatisch die Zykluszahl.
Radix-2-Booth-Rekodierung
Unterhalb des Multiplikators wird ein implizites Nullbit angehängt:
In Iteration betrachtet man das aktuelle niederwertigste Multiplikatorbit und das gespeicherte vorherige Bit :
| Aktion des Akkumulators | ||
|---|---|---|
| 0 | 0 | unverändert |
| 0 | 1 | addieren |
| 1 | 0 | subtrahieren |
| 1 | 1 | unverändert |
Danach wird die Verkettung aus Akkumulator, Multiplikator und gespeichertem Bit arithmetisch um eine Stelle nach rechts geschoben.
Das Paar erkennt die Grenzen einer Folge:
10markiert das untere Ende einer Einsenfolge, daher wird subtrahiert01markiert nach dem Durchlaufen der Folge ihr oberes Ende, daher wird addiert- gleiche benachbarte Bits liegen innerhalb einer konstanten Folge, sodass keine Rechenaktion nötig ist
Die Bitreihenfolge in der Tabelle ist wichtig. Manche Texte schreiben stattdessen ; dadurch kehren sich die Zeilenbezeichnungen um. Geben Sie die verwendete Konvention stets ausdrücklich an.
Breiten-sicherer iterativer Datenpfad
Beide Eingangsoperanden seien vorzeichenbehaftete -Bit-Zweierkomplementwerte:
- : Multiplikand
- : Multiplikator
Verwendet werden:
- : auf Bit vorzeichenerweiterter Multiplikand
- : -Bit-Akkumulator, anfangs null
- : das -Bit-Multiplikatorregister
- : gespeichertes Bit, anfangs null
- ein Iterationszähler von 0 bis
In jeder der Iterationen:
- prüfen
- bei
01setzen - bei
10setzen - bei
00oder11unverändert lassen - die Verkettung arithmetisch um eine Stelle nach rechts schieben
Nach Iterationen wird das redundante oberste Vorzeichenerweiterungsbit von verworfen. Die verbleibenden Bits von bilden zusammen mit das vorzeichenbehaftete -Bit-Produkt.
Warum das zusätzliche Akkumulatorbit wichtig ist
Der -Bit-Zweierkomplementbereich lautet:
Der positive Betrag von passt nicht in Bit. Wer -M nur mit Bit vorab berechnet, kann daher beim kleinsten Wert scheitern. Vorzeichenerweiterung und ein -Bit-Akkumulator stellen und dar.
Beispiel:
Verwenden Sie 4-Bit-Operanden:
Erweitern Sie das Vorzeichen des Multiplikanden auf fünf Bit:
Initialisieren Sie:
Die Tabelle zeigt das Paar und die Rechenaktion, gefolgt vom Zustand nach dem kombinierten arithmetischen Rechtsshift:
| Iteration | Paar | Aktion vor Shift | nach Shift | nach Shift | |
|---|---|---|---|---|---|
| initial | – | – | 00000 | 0101 | 0 |
| 1 | 10 | 00001 | 1010 | 1 | |
| 2 | 01 | 11111 | 0101 | 0 | |
| 3 | 10 | 00001 | 0010 | 1 | |
| 4 | 01 | 11111 | 0001 | 0 |
Nach vier Iterationen wird das redundante obere Vorzeichenbit von verworfen:
Als 8-Bit-Zweierkomplementwert gilt:
Das stimmt mit überein.
Einen kombinierten Shift nachverfolgen
Nach der ersten Subtraktion:
Der arithmetische Rechtsshift kopiert das Vorzeichenbit des Akkumulators an die neue oberste Stelle und verschiebt jedes andere Bit um eine Position:
Der Shift muss auf das gesamte verkettete Register wirken. Würden und getrennt geschoben, ginge der Bittransfer über ihre Grenze verloren.
Hardwareblöcke
Ein wiederverwendbarer iterativer Booth-Multiplizierer enthält:
- ein -Bit-Multiplikandenregister,
- einen -Bit-Akkumulator,
- ein -Bit-Multiplikatorregister plus ,
- einen -Bit-Addierer/Subtrahierer,
- Paardecoder für addieren/subtrahieren/halten,
- einen kombinierten arithmetischen Shifter,
- Iterationszähler sowie
busy/done-Steuerung.
Der Addierer wird in allen Iterationen wiederverwendet. Das spart gegenüber einem vollständig parallelen Multiplizierer Fläche, kostet jedoch Latenz. Ob eine Iteration einen Takt oder mehrere Mikroschritte benötigt, hängt von Steuerwerk und Datenpfad ab.
Der ALU-Baustein kann Addier-/Subtrahierverhalten in einer Lehrschaltung bereitstellen; prüfen Sie jedoch seine Breite und sein Verhalten bei vorzeichenbehaftetem Überlauf. Ein Schieberegister veranschaulicht serielle Bewegung. Der Booth-Datenpfad benötigt dagegen ein breiteres kombiniertes Register, dessen oberstes Bit mit dem Vorzeichen aufgefüllt wird.
Modified Booth mit Radix 4
Modified Booth mit Radix 4 untersucht überlappende 3-Bit-Fenster und rekodiert jeweils zwei Multiplikatorbits. Am unteren Ende wird eine Null angehängt, am oberen Ende wird der Multiplikator bei Bedarf mit seinem Vorzeichen erweitert.
Für ein Fenster gilt:
| Fenster | Rekodiertes Vielfaches |
|---|---|
000 | |
001 | |
010 | |
011 | |
100 | |
101 | |
110 | |
111 |
Die verfügbaren Vielfachen sind:
entsteht durch einen Linksshift, weshalb diese Teilprodukte vergleichsweise günstig zu erzeugen sind. Für einen -Bit-Multiplikator liefert Radix 4 ungefähr rekodierte Ziffern statt Radix-2-Ziffern.
Diese Reduktion kann:
- die Zahl der Iterationen in einem iterativen Radix-4-Entwurf halbieren
- die Zahl der Teilproduktzeilen in einem parallelen Entwurf verringern
Sie macht den vollständigen Multiplizierer nicht automatisch doppelt so schnell. Rekodierung, Vorzeichenkorrektur, Teilprodukterzeugung, Reduktion, Routing, Endaddition und Pipeline tragen ebenfalls zum Timing bei.
Parallele Reduktion: Wallace, Dadda und Endaddierer
Ein Hochdurchsatz-Multiplizierer kann Teilprodukte parallel erzeugen, ihre Spalten mit Carry-Save-Kompressoren reduzieren und die Berechnung mit einem Carry-Propagate-Addierer abschließen.
Wallace- und Dadda-Bäume sind zwei klassische Reduktionspläne. Die Modified-Booth-Rekodierung kann vor einem solchen Baum eingesetzt werden, um die Zeilenzahl zu verringern. Der Endaddierer kann eine Carry-Lookahead-, Parallel-Prefix-, Carry-Select- oder eine andere für die Zieltechnologie gewählte Struktur verwenden.
„Kombinatorisch“ bedeutet nicht zwangsläufig „ein Prozessortakt“. Ein breiter Multiplizierer kann auf mehrere Pipeline-Stufen verteilt werden, um eine Zieltaktperiode einzuhalten. Andere Prozessoren verwenden aus Flächen- oder Leistungsgründen iterative Einheiten. Die Architektur ist eine Implementierungsentscheidung.
Booth im Vergleich
| Ansatz | Signierter Betrieb | Teilprodukte/Zyklen | Typischer Kompromiss |
|---|---|---|---|
| Iteratives Shift/Add | mit korrekter Vorzeichenbehandlung möglich | meist Iterationen | kleiner Datenpfad, einfache Steuerung |
| Iteratives Radix-2-Booth | native Zweierkomplement-Rekodierung | Iterationen | einheitlich signiert, add/sub/skip |
| Iteratives Radix-4-Booth | native Zweierkomplement-Rekodierung | etwa | mehr Decodierung und Auswahl |
| Paralleles Teilprodukt-Array/Baum | signiert oder unsigniert | Zeilen parallel | mehr Hardware, pipelinefähig |
| Radix-4-Booth plus Reduktionsbaum | native signierte Rekodierung | etwa halb so viele Anfangszeilen | häufige Hochleistungsoption |
Es gibt keinen universellen Sieger. Operandenbreite, Zielzellen oder FPGA-Ressourcen, Durchsatz, Latenz, Fläche, Leistung und Verifikationsaufwand bestimmen die geeignete Struktur.
In DigiSim aufbauen
Für eine 4-Bit-Lehrschaltung:
- Einen sichtbaren 5-Bit-Akkumulator aus Speicherelementen erzeugen.
- Den 4-Bit-Multiplikanden auf 5 Bit vorzeichenerweitern.
- Einen 5-Bit-Addier/Subtrahierpfad verwenden.
- Multiplikator und separates speichern.
(Q0, Q−1)in Addieren, Subtrahieren und Halten decodieren.- Den arithmetischen Shift über den kompletten Zustand
{A,Q,Q−1}führen. - Genau vier Iterationen zählen.
busy,doneund das 8-Bit-Produkt ausgeben.
Gehen Sie die Tabelle für schrittweise durch und vergleichen Sie jeden Zustand nach dem Shift. Eine Abweichung in der ersten Iteration deutet meist auf eine vertauschte Paarreihenfolge oder Subtraktionspolarität hin. Eine Abweichung nach dem Shift eines negativen Akkumulators weist häufig auf einen logischen statt eines arithmetischen Shifts hin.
Prüfliste
Für eine erschöpfende Prüfung eines kleinen -Bit-Multiplizierers werden alle
Eingangspaare gegen ein vorzeichenbehaftetes Referenzprodukt mit Bit geprüft.
Berücksichtigen Sie mindestens:
- und
- positiv × positiv
- positiv × negativ
- negativ × positiv
- negativ × negativ
- die maximal positiven Werte
- den kleinsten Wert
- die Multiplikatormuster
0000,1111,0101und1010 - Reset oder Neustart während
busy
Prüfen Sie außerdem mit Assertions:
- Es finden genau Radix-2-Iterationen statt.
donewird für jede angenommene Operation genau einmal ausgegeben.- Die Eingänge werden entweder zwischengespeichert oder müssen laut Schnittstellenvertrag stabil bleiben.
- Das Ergebnis wird nicht vor seiner Gültigkeit verwendet.
- Der kombinierte Shift erhält das Vorzeichen des Akkumulators.
Eine ideale funktionale Simulation belegt die Rechenfolge, nicht die maximale Hardwaretaktfrequenz. Führen Sie nach der Abbildung des Entwurfs auf die Zieltechnologie eine statische Timing-Analyse durch.
Weiterlernen
Vertiefen Sie die Zweierkomplement-Arithmetik für Vorzeichenerweiterung und Wertebereich. Vergleichen Sie anschließend die Ripple-Carry-Addition mit Carry-Lookahead-Strukturen.
Andrew D. Booth stellte das einheitliche vorzeichenbehaftete Verfahren 1951 in seinem Aufsatz „A Signed Binary Multiplication Technique“ vor. Die zentrale Rekodierung ist weiterhin relevant; eine professionelle Implementierung benötigt jedoch explizite Breiten, einen definierten Latenzvertrag, erschöpfende vorzeichenbehaftete Tests und eine auf die Zieltechnologie zugeschnittene Timing-Analyse.

