-
Hintergrund der Erfindung
-
Die
vorliegende Erfindung betrifft Multiplizierer/Akkumulator-("MAC")-Blöcke,
und insbesondere betrifft die vorliegende Erfindung eine effizientere
Art, auf welche Multiplizierer in einem MAC-Block zu verwenden sind.
-
Ein
MAC-Block, der manchmal Digitalsignalverarbeitungs-("DSP"-)Block genannt wird,
ist eine DSP-Schaltung, die eine Gruppe von Multiplizierern und
anderen Komponenten, wie beispielsweise Rechen- bzw. Arithmetik-Komponenten, implementiert.
MAC-Blöcke
können
bei der Verarbeitung von vielen unterschiedlichen Typen von Anwendungen
verwendet werden, einschließlich
Graphikanwendungen, Netzwerkbildungsanwendungen, Kommunikationsanwendungen
und Videoanwendungen. Aufgrund der Vielseitigkeit von MAC-Blöcken, und
von Multiplizierern im Allgemeinen, haben Hersteller von programmierbaren
Logikvorrichtungen, wie beispielsweise Altera® Corporation
aus San Jose, Kalifornien, in letzter Zeit mit einem Herstellen von
programmierbaren Logikvorrichtungen begonnen, die, zusätzlich zu
einer programmierbaren Logikschaltung, auch eine Hardware-DSP-Schaltung
in der Form von MAC-Blöcken
enthalten. Die MAC-Blöcke
von programmierbaren Logikvorrichtungen stellen eine Art zur Verfügung, auf
welche eine bestimmte Funktionalität einer Anwenderentwicklung
unter Verwendung von weniger Platz auf der programmierbaren Logikvorrichtung implementiert
sein kann, und resultieren aufgrund der Art einer DSP-Schaltung
in Bezug auf eine programmierbare Logikschaltung in einer schnelleren
Ausführungszeit.
-
MAC-Blöcke sind
aus einer Anzahl von Multiplizierern und Addierern hergestellt.
Wann immer einer oder mehrere der Multiplipizierer in einem bestimmten
MAC-Block verwendet werden müssen,
wird der gesamte MAC-Block in einen Betriebsmode basierend darauf
versetzt, wie viele der Multiplizierer für die bestimmte Implementierung
zu verwenden sind. Wenn beispielsweise der MAC-Block eine Gesamtheit
von vier 18-Bit-mal-18-Bit-Multiplizierern enthält und wenn eine bestimmte
Entwicklung die Verwendung eines einzigen 18-Bit-mal-18-Bit-Multiplizierers
erfordert, dann wird der MAC-Block in einen derartigen Betriebsmode
versetzt, dass jeder der 18-Bit-mal-18-Bit-Multiplizierer nur individuell
in einem 18-Bit-mal-18-Bit-Multiplikationsmode verwendet werden
kann. Daher sind die übrigen
drei Multiplizierer auf eine Verwendung nur in 18-Bit-mal-18-Bit-Multiplikationsmodes
beschränkt.
Dies resultiert in einer ineffizienten Beschränkung bezüglich der potentiellen Verwendung
der übrigen
Multiplizierer im MAC-Block. Ein solcher MAC-Block mit mehreren
Multiplizierern ist aus
US 6523055 bekannt.
-
Es
wäre daher
erwünscht,
einen MAC-Block zu implementieren, so dass die Multiplizierer im MAC-Block
in unterschiedlichen Betriebsmoden gleichzeitig verwendet werden
können.
-
Zusammenfassung
der Erfindung
-
Es
ist daher eine Aufgabe der vorliegenden Erfindung, einen MAC-Block
zur Verfügung
zu stellen, in welchem eine Modenaufteilung unter den Multiplizierern
im MAC-Block ermöglicht
werden kann.
-
Diese
und andere Aufgaben der vorliegenden Erfindung werden durch Bereitstellen
einer programmierbaren Logikvorrichtung erreicht, die einen oder
mehrere MAC-Blöcke
hat, in welchen unterschiedliche Moden gleichzeitig implementiert
werden können.
Die Multiplizierer und eine andere DSP-Schaltung (z.B. eine Arithmetikschaltung,
wie beispielsweise Addierer), die einen MAC-Block bilden, können unterschiedlichen
Betriebsmoden zu irgendeinem bestimmten Zeitpunkt zugeteilt werden.
Beispielsweise kann bei einer bevorzugten Anordnung eines MAC-Blocks
mit vier 18-Bit-mal-18-Bit-Multiplizierern ein 18-Bit-mal-18-Bit-Multiplizierer zum
Implementieren eines 18-Bit-mal-18-Bit-Multiplikationsmodes verwendet
werden, während
zwei andere Multiplizierer zum Implementieren der Summe von zwei
18-Bit-mal-18-Bit-Multiplikationsmodes verwendet werden können. Irgendwelche
solchen geeigneten Moden können
basierend auf verfügbaren
Ressourcen bzw. Betriebsmitteln gleichzeitig implementiert werden.
-
Irgendwelche
geeigneten Steuersignale und irgendeine Steuerschaltung können zum
Steuern verwendet werden, welche Moden im MAC-Block zu implementieren
sind. Steuersignale können
beispielsweise anzeigen, ob die Ausgabe eines bestimmten Multiplizierers
in einen Addierer/Subtrahierer einzugeben ist, und zwar basierend
darauf, ob der Mode, der implementiert ist, eine solche Schaltung
erfordert. Weil irgendwelche geeigneten Moden gemäß der vorliegenden
Erfindung implementiert werden können,
wird es verstanden werden, dass irgendwelche geeigneten Steuersignale
und irgendeine Steuerschaltung verwendet werden können. Es
wird weiterhin verstanden werden, dass unterschiedliche Steuersignale
und unterschiedliche Steuerschaltungen zum Implementieren derselben
Moden verwendet werden können.
-
Kurze Beschreibung
der Zeichnungen
-
Die
obige und andere Aufgaben der vorliegenden Erfindung werden bei
einer Betrachtung der folgenden detaillierten Beschreibung, genommen
in Zusammenhang mit den beigefügten
Zeichnungen, offensichtlich werden, wobei sichgleiche Bezugszeichen
immer auf gleiche Teile beziehen und wobei:
-
1 eine
schematische Darstellung eines illustrativen MAC-Blocks ist;
-
2 ein
Blockdiagramm eines illustrativen MAC-Blocks ist, wobei vier n-Bit-mal-n-Bit-Multiplizierer als
vier n-Bit-mal-n-Bit-Multiplizierer implementiert sind;
-
3 ein
Blockdiagramm eines illustrativen MAC-Blocks ist, wobei vier n-Bit-mal-n-Bit-Multiplizierer als
acht n/2-Bit-mal-n/2-Bit-Multiplizierer implementiert sind;
-
4 ein
schematisches Diagramm einer illustrativen 18-Bit-mal-18-Bit-Multiplikationsmode-Implementierung
gemäß der vorliegenden
Erfindung ist;
-
5 ein
schematisches Diagramm einer illustrativen 52-Bit-Akkumulationsmode-Implementierung gemäß der vorliegenden
Erfindung ist;
-
6 ein
schematisches Diagramm einer illustrativen Summe aus zwei 18-Bit-mal-18-Bit-Multiplikationsmode-Implementierung
gemäß der vorliegenden
Erfindung ist;
-
7 ein
schematisches Diagramm einer illustrativen Summe einer Implementierung
eines Modes von vier 18-Bit-mal-18-Bit-Multiplikationen gemäß der vorliegenden
Erfindung ist;
-
8 ein
schematisches Diagramm einer illustrativen 9-Bit-mal-9-Bit-Multiplikationsmode-Implementierung
gemäß der vorliegenden
Erfindung ist;
-
9 ein
schematisches Diagramm einer illustrativen Summe einer Implementierung
eines Modes von zwei 9-Bit-mal-9-Bit-Multiplikationen gemäß der vorliegenden
Erfindung ist;
-
10 ein
schematisches Diagramm einer illustrativen Summe einer Implementierung
eines Modes von vier 9-Bit-mal-9-Bit-Multiplikationen gemäß der vorliegenden
Erfindung ist;
-
11 ein
schematisches Diagramm einer illustrativen 36-Bit-mal-36-Bit-Multiplikationsmode-Implementierung
gemäß der vorliegenden
Erfindung ist;
-
12 ein
Blockdiagramm eines MAC-Blocks mit illustrativen Steuersignalen
gemäß der vorliegenden
Erfindung ist;
-
13 ein
Blockdiagramm einer illustrativen programmierbaren Logikvorrichtung
mit wenigstens einem Mac-Block gemäß der vorliegenden Erfindung
ist; und
-
14 ein
Blockdiagramm eines illustrativen Systems ist, das eine programmierbare
Logikvorrichtung gemäß der vorliegenden
Erfindung verwendet.
-
Detaillierte
Beschreibung der Erfindung
-
Die
vorliegende Erfindung stellt einen MAC-Block zur Verfügung, der
zulässt,
dass seine Multiplizierer, eine andere Schaltung oder beides unter
einem oder mehreren Betriebsmoden gleichzeitig aufgeteilt wird.
Einer oder mehrere Multiplizierer des MAC-Blocks können zum
Arbeiten in einem Mode bestimmt werden (z.B. einem Multiplikationsmode),
wohingegen einer oder mehrere andere Multiplizierer des MAC-Blocks
zum Arbeiten in einem anderen Mode bestimmt sein können (z.B.
ein Mode einer Summe von Multiplizierern). Die vorliegende Erfindung
lässt zu,
dass ein einziger MAC-Block unterschiedliche Moden unterstützt, die
unterschiedliche Anzahlen von Multiplizierern erfordern. Beispielsweise
können
zwei Multiplizierer in einem Mode verwendet werden, während nur
ein Multiplizierer in einem zweiten Mode verwendet werden kann.
-
Die
vorliegende Erfindung ist insbesondere auf programmierbare Logikvorrichtungen
anwendbar, die eine integrierte DSP-Schaltung enthalten. Aufgrund
der Notwendigkeit für
Flexibilität
von solchen Vorrichtungen lässt
ein Zulassen, dass ein MAC-Block in mehr als einem Mode gleichzeitig
arbeitet, eine effizientere Verwendung der DSP-Ressourcen bzw. -Betriebsmittel
zu, die innerhalb einer bestimmten programmierbaren Logikvorrichtung
verfügbar
sind.
-
Ein
Zulassen, dass ein MAC-Block in mehr als einem unterschiedlichen
Mode arbeitet, kann durch Verwenden von irgendeiner geeigneten Schaltung
und irgendwelchen geeigneten Steuersignalen erreicht werden.
-
Ein
MAC-Block gemäß der vorliegenden
Erfindung kann in irgendwelchen geeigneten Moden arbeiten. Beispielsweise
enthalten im Fall eines MAC-Blocks mit vier 18-Bit-mal-18-Bit-Multiplizierern,
was bedeutet, dass jeder, als 36-Bit-Binärausgabe,
das Produkt von zwei 18-Bit-Binär-Multiplikandeneingaben bestimmen kann,
oder die zwei Produkte (in eine 36-Bit-Zahl verkettet) aus zwei
Paaren von 9-Bit-Binär-Multiplikandeneingaben
(in ein Paar von 18-Bit-Zahlen verkettet), geeignete Moden, sind
aber nicht darauf beschränkt,
wie beispielsweise einen 18-Bit-mal-18-Bit-Multiplizierer, einen
52-Bit-Akkumulator, eine Akkumulatorinitialisierung, eine Summe
aus zwei 18-Bit-mal-18-Bit-Multiplizierern,
ein Summe aus vier 18-Bit-mal-18-Bit-Multiplizierern, einen 9-Bit-mal-9-Bit-Multiplizierer,
eine Summe aus zwei 9-Bit-mal-9-Bit-Multiplizierern, eine Summe
aus vier 9-Bit-mal-9-Bit-Multiplizierern, einen 36-Bit-mal-36-Bit-Multiplizierer oder
irgendwelche anderen geeigneten Moden. Die aufgelisteten Moden werden
hierin manchmal jeweils als Moden 1–8 bezeichnet, wobei die Akkumulatorinitialisierung
der Mode 2A ist. Es wird verstanden werden, dass diese lediglich
illustrative Moden sind, die durch einen MAC-Block gemäß der vorliegenden
Erfindung unterstützt
werden können.
Irgendwelche anderen geeigneten Moden können unterstützt werden.
Eine solche Unterstützung
von Moden kann basierend auf irgendwelchen geeigneten Faktoren bestimmt
werden, einschließlich
beispielsweise den Notwendigkeiten einer Anwendung, einer Größe von verfügbaren Multiplizierern,
einer Anzahl von Multiplizierern oder irgendwelchen anderen geeigneten
Faktoren. Beispielsweise ist es klar, dass dann, wenn ein MAC-Block
acht 9-Bit-mal-9-Bit-Multiplizierer enthalten würde, unterschiedliche Moden
verwendet werden können
(z.B. Summe aus acht 9-Bit-mal-9-Bit-Multiplizierern).
-
Unterschiedliche
Multiplizierer eines MAC-Blocks können in unterschiedlichen Moden
gleichzeitig verwendet werden, um die Situation zu vermeiden, in
welcher ein bestimmter Mode relativ wenige Multiplizierer eines
MAC-Blocks verwendet, und die anderen Multiplizierer leer lässt.
-
Bei
einigen Ausführungsbeispielen
der vorliegenden Erfindung kann ein MAC-Block in zwei oder mehr Abschnitte
von Multiplizierern aufgeteilt sein. Moden können gemäß einem Abschnitt bestimmt
werden, wobei alle Multiplizierer in einem Abschnitt von Multiplizierern
im selben Mode arbeiten. Diese Anordnung kann eine einfachere Organisation
von Steuersignalen zur Verfügung
stellen und stellt ein Gleichgewicht zwischen Flexibilität und Einfachheit
zur Verfügung.
Abschnitte können
basierend auf Moden definiert werden, für die es erwünscht ist,
dass sie verwendet werden. Beispielsweise dann, wenn alle Multiplizierer
eines MAC-Blocks in einem bestimmten Mode zu verwenden sind, wird
ein Aufteilen nicht auftreten. Wenn eine Hälfte der Multiplizierer für einen
bestimmten Mode nötig
ist, dann kann der MAC-Block so aufgeteilt werden, dass es zwei
Abschnitte gibt, wobei jeder eine Hälfte der Multiplizierer hat.
Jeder der zwei Abschnitte kann dann unter einem anderen Mode betrieben
werden, wenn es erwünscht
ist. Bei einem geeigneten Ansatz kann ein Abschnitt weiter aufgeteilt
werden. Beispielsweise kann ein MAC-Block unter drei Moden aufgeteilt
werden, wo einer der Moden eine Hälfte der Multiplizierer verwendet,
ein zweiter Mode ein Viertel der Multiplizierer verwendet und ein
dritter Mode ein Viertel der Multiplizierer verwendet. Ein MAC-Block
kann auf vier Moden aufgeteilt werden, wobei jeder Mode ein Viertel
der verfügbaren
Multiplizierer verwendet. Irgendeine solche geeignete Modenaufteilung
kann gemäß der vorliegenden
Erfindung durchgeführt
werden. Wenn alle Multiplizierer eines MAC-Blocks erforderlich sind,
dann wird der MAC-Block unter einem einzigen Mode arbeiten.
-
Der
Kürze und
der Klarheit halber und nicht anhand einer Beschränkung und
ohne Verlust an Allgemeinheit wird die vorliegende Erfindung hierin
primär
in Bezug auf einen MAC-Block beschrieben, der aus vier Multiplizierern
einer Größe von 18-Bit-mal-18-Bit
hergestellt ist. Die illustrative Art dieser Anordnung wird erkannt
werden und es wird verstanden werden, dass die Lehre der vorliegenden
Erfindung auf irgendeinen anderen geeigneten Typ von MAC-Block mit
irgendeiner geeigneten Anordnung von Komponentenschaltungen angewendet
werden können.
-
1 zeigt
die Schaltung eines illustrativen Ausführungsbeispiels eines MAC-Blocks 10 vom
oben beschriebenen Typ. Der MAC-Block 10 mit Eingängen 101–108 enthält vier
Multiplizierer 11, 12, 13 und 14.
Jeder Multiplizierer 11-14 kann ein 18-Bit-mal-18-Bit-Multiplizierer
sein. Jeder MAC-Block 10 enthält auch vorzugsweise eine Anzahl
von Addierern/Subtrahierem 15, 16, 17 und 18,
was die Durchführung
einer Addition und einer Subtraktion der Ausgaben der verschiedenen
Multiplizierer 11-14 sowie eine Akkumulatorfunktion
zulässt.
-
Multiplexer 119 lassen
zu, dass die verschiedenen Multiplizierer 11-14 einen
Eingang 101 gemeinsam nutzen. Gleichermaßen lassen
Multiplexer 109 und 110 zu, dass jeder der Multiplizierereingänge 111, 112, 121, 122, 131, 132, 141, 142 registriert
oder nicht registriert wird. Zusätzlich
können
die Register 110, wenn sie mit Multiplexern 190 verwendet
werden, Eingangsschieberegisterketten bilden, die zulassen, dass
Daten seriell eingegeben werden. Solche Eingangsschieberegisterketten
können
sich sogar zu einem anderen unterschiedlichen speziellen Multiplizierer
ausdehnen. Die verschiedenen Funktionen können bei 160, 165, 170, 175, 180, 185, 195 ausgegeben
werden.
-
Gemäß der Erfindung
werden dann, wenn eine Anwenderentwicklung eine Multiplikation und
andere Arithmetikschaltungselemente enthält, diese Elemente, die "MAC-Elemente" genannt werden können, vorzugsweise
automatisch in einen MAC-Block, wie beispielsweise den MAC-Block 10,
gruppiert. Die miteinander gruppierten MAC-Elemente können innerhalb
des MAC-Blocks die spezialisierten Funktionen einer Multiplikation,
einer Multiplikation, der eine Addition folgt, einer Multiplikation,
der eine Subtraktion folgt, und einer Multiplikation, der eine Akkumulation
folgt, durchführen.
-
In 2 ist
eine vertikal angeordnete Organisation eines MAC-Blocks gezeigt,
die auf vier Multiplizierern basiert. Vier Multipliziererschaltungen 136 können in
vertikaler Richtung gestapelt werden, um potentiell parallel zu
arbeiten. Jede Multipliziererschaltung 136 kann einen n-Bit-mal-n-Bit-Multiplizierer
(z.B. einen 18-Bit-mal-18-Bit-Multiplizierer) enthalten, um ein
n-Bit-mal-n-Bit-Multiplikationsprodukt
zur Verfügung
zu stellen. Die Eingaben jeder Multipliziererschaltung zu n Bits
von Information für
den Multiplikanden und für
den Multiplikator für
die Multipliziereroperation zugeführt werden. Jede Multipliziererschaltung 136 kann
eine Ausgabe haben, die eine Breite von 2n Bits haben kann. Jede
Multipliziererschaltung 136 kann eine Ausgabe stromabwärts zuführen, die
das Ergebnis einer Multiplikationsoperation ist. Jede n-Bit-mal-n-Bit-Multipliziererschaltung 136 kann
eine Multiplikation mit einem Vorzeichen oder ohne Vorzeichen eines
Zweierkomplements unterstützen.
Dynamische Steuereingänge 156 mit
Vorzeichen/ohne Vorzeichen können
Eingangssignale empfangen, die das Vorzeichen der Multiplikatoren
und der Multiplikanden für
die Multiplikationsoperationen von Multipliziererschaltungen 136 steuern.
-
Ein
MAC-Block 192 kann drei Gruppen von Registerschaltungen
enthalten. Der MAC-Block 192 kann Eingangsregisterschaltungen 134,
Pipeline-Registerschaltungen
und eine Ausgangsregisterschaltung 154 enthalten. Wenn
es erwünscht
ist, können
zusätzliche
Pipline-Registerschaltungen innerhalb der Multipliziererschaltungen 136,
innerhalb von Additions/Sub traktions/Akkumulations-Schaltungen 144 und/oder
innerhalb von Additions/Subtraktions-Schaltungen 140 enthalten
sein, um die Geschwindigkeit zu erhöhen. Die Ausgangsregisterschaltung 154 kann
ungefähr
dieselbe Anzahl von Registern enthalten, die in Eingangsregierschaltungen 134 sind.
Die Anzahl von Registern, die in der Ausgangsregisterschaltung 154 enthalten
sind, können
ausreichend sein, um die Ausgabe des MAC-Blocks 192 zu
registrieren (z.B. die Ausgabe des MAC-Blocks 192 für alle Moden
registrieren, die durch den MAC-Block 192 unterstützt werden.
Die Anzahl von Ausgangsregistern kann kleiner als die, gleich der
oder größer als
die Anzahl der Eingangsregister sein, und zwar in Abhängigkeit
davon, welche Implementierung oder Architektur für den MAC-Block 192 verwendet
wird, oder in Abhängigkeit
vom Bereich einer Funktionalität,
die durch den MAC-Block 192 zur Verfügung gestellt wird.
-
Der
Klarheit und Kürze
halber sind Pipeline-Registerschaltungen in 2 nicht
gezeigt und sind in irgendeiner der anderen hierin beschriebenen
Figuren nicht gezeigt. Wie es oben angegeben ist, können Eingangsregisterschaltungen 134,
eine Pipeline-Registerschaltung oder eine Ausgangsregisterschaltung 154 im MAC-Block 192 enthalten
sein, wenn es erwünscht
ist. Unabhängige
Gruppen von Takt- und Löschsignalen 158 können für Eingangsregisterschaltungen 134,
die Pipeline-Registerschaltung oder die Ausgangsregisterschaltung 154 zur
Verfügung
gestellt werden. Zwei Gruppen von Takt- und Löschsignalen 158 kann
für die
Eingangsregisterschaltungen 134 und die Pipeline-Registerschaltungen
zur Verfügung
gestellt sein, und zwei Gruppen können für die Ausgangsregisterschaltung 154 zur
Verfügung
gestellt sein. Die Eingangregisterschaltungen 134 können Abtastketten
enthalten und können
eine zusätzliche
Schaltung enthalten, die mit den Abtastketten zu verwenden ist,
um zuzulassen, dass die Abtastketten als Logik bei einigen Digitalsignalverarbeitungsfunktionen
verwendet werden, wie beispielsweise beim Bereitstellen von FIR-Filtern.
Die Eingangsregisterschaltungen 134 können 8n Register (z.B. 144
Register) für
8n Dateneingaben und q Register (z.B. 4 Register) für eine Steuerung
mit Vorzeichen/ohne Vorzeichen der Multipliziererschaltungen 136 und
für eine
Additions/Subtraktions-Steuerung der Additions/Subtraktions/Akkumulations-Schaltungen 144 enthalten.
Jedes Register kann eine Fähigkeit
zur programmierbaren Inversion haben, um eine logische Inversion
zur Verfügung
zu stellen, wenn es erwünscht
ist, oder um nicht verwendete Bits von Registereingaben zu invertieren, wenn
eine Eingabe für
einen Multiplizierer weniger als n Bits hat.
-
Die
Ausgangsregisterschaltung 154 kann Rückkoppelpfade 161 zu
den Additions/Subtraktions/Akkumulations-Schaltungen 144 für Akkumulationsoperationen
haben. Irgendeine der drei Gruppen von Registern, der Eingangsregisterschaltung 134,
der Pipeline-Registerschaltung und der Ausgangsregisterschaltung 154, kann
unter Verwendung von programmierbaren Logikanschlussstücken ("PLCs") in denjenigen Schaltungen umgangen
werden, die durch eine Direktzugriffsspeichersteuerung gesteuert
werden können.
Die Pipeline-Registerschaltung kann ungefähr dieselbe Anzahl von Registern
wie die Eingangsregisterschaltungen 134 enthalten.
-
Eine
Schnittstellenschaltung 133, die links vom MAC-Block 192 gezeigt
ist, kann die Eingaben des MAC-Blocks 192, die die Eingaben
der Eingangsregisterschaltungen 134 sein können, zuführen. Die
Eingangsregisterschaltungen 134 können acht Eingangsregister
enthalten, die jeweils n-Bit-Eingaben haben und die die Eingaben
der vier n-Bit-mal-n-Bit-Multipliziererschaltungen 136 zuführen.
-
Additions/Subtraktions/Akkumulations-Schaltungen 144 können Anschlüsse zum
Empfangen von Eingaben von Multipliziererschaltungen 136 und
von Rückkehrpfaden 161 haben.
Wenn es erwünscht
ist, können die
Additions/Subtraktions/Akkumulations-Schaltungen 144 konfiguriert
sein, um die Ausgaben von den Multipliziererschaltungen 136 zu
der Addiererschaltung 140 zu übergeben. Die Ausgaben der
Multipliziererschaltungen 136 können zu einer Ausgabeauswahlschaltung 152 oder
der Ausgangsregisterschaltung 154 geführt werden, ohne durch die
Additions/Subtraktions/Akkumulations-Schaltungen 144 und/oder
die Additions/Subtraktions-Schaltung 140 geführt zu werden.
Zum Zwecke der Klarheit und der Kürze und nicht anhand einer Beschränkung und
ohne Verlust an Allgemeinheit wird die Additions/Subtraktions-Schaltung 140 hierin
primär im
Zusammenhang mit einer Addiererschaltung beschrieben. Die Additions/Subtraktions/Akkumulations-Schaltungen 144 können jeweils
konfiguriert sein, um eine Zweierkomplement-Addition von zwei 2n-Bit-Eingaben
durchzuführen,
um eine 2n+1-Bit-Ausgabe zu erzeugen. Die Additions/Subtraktions/Akkumulations-Schaltungen 144 können jeweils konfiguriert
sein, um eine Zweierkomplement-Subtraktion von zwei 2n-Bit-Eingaben durchzuführen, um
eine 2n+1-Bit-Ausgabe zu erzeugen. Die Additions/Subtraktions/Akkumulations-Schaltungen 144 können jeweils
konfiguriert sein, um eine Akkumulation von einer 2n-Bit-Eingabe
mit einer n+y-Bit-Ausgabe
durchzuführen.
Dynamische Additions/Subtraktions-Steuereingaben 162 und 164 können zu
den Additions/Subtraktions-Schaltungen 144 eingegeben werden,
die zum Schalten zwischen Additions/Subtraktions-Operationen und
zum Handhaben von komplexen Multiplikationen verwendet werden. Die dynamischen
Additions/Subtraktions-Eingaben 162 können für komplexe Multiplikationen
benötigt
werden, welche Multiplikationen enthalten, die komplexe Zahlen enthalten.
Eine komplexe Multiplikation von zwei komplexen Zahlen kann manchmal
sowohl eine Additionsoperation als auch eine Subtraktionsoperation
enthalten.
-
Die
Ausgaben der Additions/Subtraktions/Akkumulations-Schaltungen 144 können zu
einer Ausgabeauswahlschaltung 152 oder dem Ausgangsregister 154 geführt werden,
ohne über
die Addiererschaltung 140 geführt zu werden. Wenn es erwünscht ist,
kann die Addiererschaltung 140 konfiguriert sein, um Eingaben von
den Additions/Subtraktions/Akkumulations-Schaltungen 144 (z.B.
eine n+1-Bit-Ausgabe
einer Zweierkomplement-Addition, eine n+y-Bit-Ausgabe einer Akkumulation,
etc.) zu übergeben.
Die Addiererschaltung 140 kann eine Ausgabe haben, die
das Ergebnis der Addition der Ausgaben von den Additions/Subtraktions/Akkumulations-Schaltungen 144 ist.
Die Ausgabeauswahlschaltung 152 kann Eingaben haben, die
von der Addiererschaltung 140 sind. Die Ausgabeauswahlschaltung 152 kann
Auswählen,
welche der Eingaben der Ausgabeauswahlschaltungen 152 zur
Ausgangsregisterschaltung 154 übergeben bzw. geführt werden.
Die Ausgangsregisterschaltung 154 kann die Eingaben der
Schnittstellenstellung 133 zuführen, die rechts vom MAC-Block 192 gezeigt.
Der Prozentteil von lokalen Verbindungsbetriebsmitteln, der zum
Verbinden der Schaltungen im MAC-Block 192 zugeteilt ist,
erhöht
sich, wenn sich die Komplexität
und die Variationen bezüglich
einer Digitalsignalverarbeitungsfunktionalität erhöht, von links nach rechts im
MAC-Block 192.
-
Nimmt
man Bezug auf 2, kann die "oberste Hälfte" des MAC-Blocks 192 unter anderen
Komponenten die zwei Multiplizierer 136 und den Addierer/Subtrahierer 144 enthalten,
die am obersten Ende des MAC-Blocks 192 gezeigt sind. Die "untere Hälfte" des MAC-Blocks 192 kann
unter anderen Komponenten die zwei Multiplizierer 136 und
den Addierer/Subtrahierer enthalten, die am unteren Ende des MAC-Blocks 192 gezeigt
sind.
-
Der
MAC-Block 192 kann konfiguriert sein, um eine Organisation
zu haben, die auf einem n/2-Bit-mal-n/2-Bit-Multiplizierer basiert.
Beispielsweise kann, nimmt man nun Bezug auf 3, der MAC-Block 192 Multipliziererschaltungen 136 enthalten,
die konfiguriert sind, um acht n/2-Bit-mal-n/2-Bit-Multiplizierer
zu enthalten. Die acht n/2-Bit-mal-n/2-Bit-Multiplizierer können aus
den vier n-Bit-mal-n-Bit-Multiplizierern
der Multipliziererschaltungen 136 der 2 konfiguriert
sein.
-
Wenn
es erwünscht
ist, kann der MAC-Block 192 implementiert sein, um konfiguriert
sein zu können, um
eine Organisation zu haben, die auf einem p-Bit-mal-p-Bit-Multiplizierer basiert, und
um eine oder mehrere Organisationen zu haben, die auf einem p/m-Bit-mal-p/m-Bit-Multiplizierer
basiert, wobei p, m und p/m ganze Zahlen sind. Wie es oben angegeben
ist, basiert diese Architektur wenigstens teilweise auf den Beschränkungen
der lokalen Verbindungsressourcen. Die unterschiedlichen Organisationen
können
auswählbar
sein und der MAC-Block 192 kann dazu fähig sein, in einige oder alle
der Organisationen konfiguriert zu sein, die auf dem p/m-Bit-mal-p/m-Bit-Multiplizierer basieren.
-
Der
MAC-Block 192 kann Additions/Subtraktions/Akkumulations-Schaltungen 144 enthalten,
die konfiguriert sind, um vier Additions- oder Subtraktionseinheiten
zur Verfügung
zu stellen. Jede Additions- oder Subtraktionseinheit kann eine auf
einer Addition basierende Operation an zwei n-Bit-Eingaben durchführen und eine n+1-Bit-Ausgabe
haben. Wenn es erwünscht
ist, können
die Additions/Subtraktions/Akkumulations-Schaltungen 144 konfiguriert
sein, um die Ausgaben der Operation des n/2-Bit-mal-n/2-Bit-Multiplizierers zu übergeben.
Die Ausgaben der Multipliziererschaltungen 136 können zu
einer Ausgabeauswahlschaltung 152 oder zur Ausgangsregisterschaltung 154 geführt werden,
ohne durch die Additions/Subtraktions/Akkumulations-Schaltungen 144 oder
die Addiererschaltung 140 geführt zu werden. Die Additions/Subtraktions/Akkumulations-Schaltungen 144 können das
Ergebnis der Addition (oder der Subtraktion) von bestimmten Ausgangspaaren
der Operation des n/2-Bit-mal-n/2-Bit-Multiplizierers erzeugen.
-
Der
MAC-Block 192 kann eine Addiererschaltung 140 enthalten,
die konfiguriert ist, um zwei Addierer zur Verfügung zu stellen. Wenn es erwünscht ist,
kann die Addiererschaltung 140 die Eingaben, die von den Additions/Subtraktions/Akkumulations-Schaltungen 144 zur
Addiererschaltung 140 zugeführt werden, weiterleiten bzw. übergeben
bzw. durchlassen. Die Ausgaben der Additions/Subtraktions/Akkumulations-Schaltungen 144 können zur
Ausgabeauswahlschaltung 152 oder zu den Ausgangsregisterschaltungen 154 geführt werden,
ohne durch die Addiererschaltung 140 geführt zu werden.
Die Addiererschaltung 140 kann zwei Ausgaben erzeugen,
die die Ergebnisse der Addition von bestimmten Paaren von Ausgaben
von den Additions/Subtraktions/Akkumulations-Schaltungen 144 sind.
-
Die
lokalen Verbindungsbetriebsmittel des MAC-Blocks 192 können konfigurierbar
sein, um die auf dem n/2-Bit-mal-n/2-Bit-Multiplizierer basierende
Organisation mit derselben Eingabe/Ausgabe-Schnittstellenschaltung 133 und
Unterstützungsschaltung
(z.B. den Multipliziererschaltungen 136, der Addiererschaltung 140,
etc.) zu implementieren, wie die auf dem n-Bit-mal-n-Bit-Multiplizierer basierende
Organisation. Die lokalen Verbindungsbetriebsmittel des MAC-Blocks 192 können konfiguriert
sein, um einige Schmetterlings-Kreuzverteilermuster
zum Ausbilden von geeigneten Verbindungen in der auf dem n/2-Bit-mal-n/2-Bit-Multiplizierer basierenden
Organisation enthalten.
-
Die
Schmetterlings-Kreuzverteilermuster sind für Auswahlverbindungen zwischen
den Eingangsregisterschaltungen 134 und den Multipliziererschaltungen 136 implementiert.
Die Schmetterlings-Kreuzverteilermuster können dazu verwendet werden,
die n/2-Bits höherer
Ordnung von Paaren von miteinander multiplizierten Eingaben von
n Bits zu haben und die n/2 Bits niedrigerer Ordnung von Paaren
von miteinander multiplizierten Eingaben von n Bits zu haben. Die
Schmetterlings-Kreuzverteilermuster sind für Auswahlverbindungen zwischen
den Multipliziererschaltungen 136 und den Additions/Subtraktions/Akkumulations-Schaltungen 144 implementiert.
Wie es oben angegeben ist, können
die Additions/Subtraktions/Akkumulations-Schaltungen 144 konfiguriert
sein, um vier Additions-(oder Subtraktions-)Einheiten zu enthalten.
Jede Additions-(oder Subtraktions-)Einheit kann zwei Eingaben von
n Bits von den Multipliziererschaltungen 136 haben. Die Schmetterlings-Kreuzverteilermuster
können
verwendet werden, um die zwei Eingaben von jeder Additions-(oder
Subtraktions-)Einheit zu haben, die entweder das Ergebnis der Multiplikation
der Bits höherer
Ordnung durch die Multiplizierer der Multipliziererschaltungen 136 oder
das Ergebnis der Multiplikation der Bits niedrigerer Ordnung durch
die Multiplizierer der Multipliziererschaltungen 136 sind.
Die Schmetterlings-Kreuzverteilermuster
können
auch bei der Verbindung zwischen den Additions/Subtraktions/Akkumulations-Schaltungen 144 und
der Addiererschaltung 140 verwendet werden. Die Addiererschaltung 140 kann
in zwei Addierer (z.B. zwei unabhängige Addierer) aufgeteilt
sein. Das Schmetterlings-Kreuzverteilermuster kann verwendet werden,
um das Ergebnis von Operationen in Bezug auf Bits höherer Ordnung
zu einer obersten Hälfte
der Addiererschaltung 140 zuzuführen und das Ergebnis von Operationen
an Bits niedrigerer Ordnung zu einer unteren Hälfte der Addiererschaltung 140 zuzuführen. Bei
der auf dem n/2-Bit-mal-n/2-Bit-Multiplizierer basierenden Organisation
kann es sein, dass eine Akkumulatorfunktionalität nicht verfügbar ist.
Die Akkumulatorfunktionalität
kann deshalb nicht verfügbar
sein, weil die Betriebsmittel des MAC-Blocks 192 im Wesentlichen beim
Zulassen der Implementierung der auf dem n/2-Bit-mal-n/2-Bit-Multiplizierer
basierenden Organisation verbraucht sein können.
-
Die
Schmetterlings-Kreuzverteilermuster sind beispielhaft für Techniken
zum Zerlegen einer einzigen Multipliziererschaltung in mehrere kleinere
Multipliziererschaltungen, ein Beispiel für Techniken zum Managen von
Daten, so dass die Ausgaben der mehreren kleineren Multipliziererschaltungen
geeignet zusammenaddiert werden (z.B. ein Addieren von Bits niedrigerer
Ordnung zu Bits niedrigerer Ordnung), oder ein Beispiel für Techniken
zum Managen von Daten zum Kompensieren von Beschränkungen
bezüglich
der Betriebsmittel eines MAC-Blocks.
Solche Kreuzverteilermuster können
dazu verwendet werden, Verbindungen wegen der Art zu handhaben,
auf welche eine Schaltung für
einen MAC-Block abgelegt wurde, oder wegen der Anordnung, die für die Schaltung
ausgewählt
wurde. Die Schmetterlings-Kreuzverteilermuster sind als illustratives
Beispiel zur Verfügung
gestellt. Andere Techniken können
ebenso verwendet werden. Beispielsweise können die n-Bit-mal-n-Bit-Multiplizierer
auf eine andere Weise zerlegt werden, die die Notwendigkeit für die Schmetterlings- Kreuzverteilermuster
eliminiert, oder auf eine Weise zerlegt werden, die andere Typen
von Kreuzverteilermuster erfordert. Demgemäß können andere Kreuzverteilermuster
oder Verbindungsmuster zum Implementieren des MAC-Blocks 192 verwendet
werden.
-
Die
Flexibilität
und die Konfigurabilität
des MAC-Blocks 192 kann die Konfiguration einer Gruppe
von Betriebsmoden unterstützen.
Wenn es erwünscht
ist, kann der MAC-Block 192 der 2 und der
MAC-Block 192 der 3 jeweils
ein separates Ausführungsbeispiel
eines MAC-Blocks sein, wobei jeder seine eigene Gruppe von Betriebsmoden
hat. Bei einigen Ausführungsbeispielen
kann der MAC-Block 192 dazwischen konfigurierbar sein,
dass er eine auf einem n-Bit-mal-n-Bit-Multiplizierer
basierende Organisation oder eine n/2-Bit-mal-n/2-Bit-Multiplizierer basierende
Organisation hat und dass er Betriebsmoden hat, die jeweils zugehörig sind.
Die Moden des MAC-Blocks 192 können mit Speicherbits konfiguriert
sein, um zu veranlassen, dass die Moden Anwendern verfügbar sind.
-
Die 4-11 sind
ein Blockdiagramm von illustrativen Implementierungen von unterschiedlichen Betriebsmoden,
die ein MAC-Block gemäß der vorliegenden
Erfindung unterstützen
kann. Genauer gesagt stellen die Modenimplementierungen der 4-11 die
Komponenten des Host-MAC-Blocks dar, die zum Implementieren eines
jeweiligen Modes erforderlich sein können. Wenn beispielsweise eine
bestimmte Modenimplementierung einen einzigen 18-Bit-mal-18-Bit-Multiplizierer erfordert,
dann können übrige Multiplizierer zum
Implementieren von anderen Moden gemäß der Modenaufteilungseigenschaften
der vorliegenden Erfindung verwendet werden.
-
4 ist
ein Blockdiagramm einer illustrativen Implementierung eines 18-Bit-mal-18-Bit-Multiplikationsmodes
in einem MAC-Block. Wie es dargestellt ist, verwendet eine einzige
18-Bit-mal-18-Bit-Multiplikationsimplementierung einen 18-Bit-mal-18-Bit-Multiplizierer 404 mit
einem Multiplikanden- und einem Multiplikatoreingang 400 und 402 und
einem Produktausgang 406. Bei einem typischen MAC-Block
würde die
dargestellte Implementierung zulassen, dass vier solche Multiplikationsmoden
in einem einzigen MAC-Block gleichzeitig implementiert sind, wobei
jeder einen der vier verfügbaren
Multiplizierer verwendet. Gemäß den Modenaufteilungseigenschaften
der vorliegenden Erfindung können
die übrigen
drei Multiplizierer zum Implementieren von irgendeinem anderen geeigneten
Mode gleichzeitig mit dem 18-Bit-mal-18-Bit-Multiplikationsmode verwendet werden,
den dieser Multiplizierer 404 gerade zum Implementieren
verwendet.
-
5 ist
ein Blockdiagramm einer illustrativen Implementierung eines 52-Bit-Akkumulationsmodes
in einem MAC-Block. Wie es dargestellt ist, verwendet eine einzige
52-Bit-Akkumulationsmodenimplementierung einen 18-Bit-mal-18-Bit-Multiplizierer 504 und
einen Ausgang 506. Ein Addierer/Subtrahierer 508 wird
zum Durchführen
von Additionsoperationen zum Aktualisieren der im Register 510 gespeicherten
laufenden Summe verwendet. Eine Ausgabe 512 des Registers 510 wird
in den Addierer/Subtrahierer 508 rückgekoppelt, um mit einer nächsten Ausgabe 506 des
Multiplizierers 504 addiert zu werden. Bei einem typischen
MAC-Block würde
die dargestellte Implementierung zulassen, dass zwei solche Akkumulationsmoden
in einem einzigen MAC-Block gleichzeitig implementiert sind, wobei
jeder einen der vier verfügbaren
Multiplizierer verwendet (d.h. zwei der Multiplizierer verschwendet),
wenn ein MAC-Block, wie beispielsweise der MAC-Block 192 der 2,
verwendet wird. Dies ist aufgrund der beschränkten bestimmten Arithmetikschaltung
so, die im MAC-Block 192 der 2 verfügbar ist.
Gemäß den Modenaufteilungseigenschaften
der vorliegenden Erfindung können
jedoch die übrigen
Multiplizierer beim Implementieren von anderen Moden gleichzeitig
mit dem Akkumulationsmode verwendet werden, die nicht auf der bestimmten
Schaltung beruhen, die bereits im Einsatz ist (z.B. ein 18-Bit-mal-18-Bit-Multiplikationsmode).
Dies lässt
eine effizientere Verwendung von MAC-Block-Betriebsmitteln zu.
-
6 ist
ein Blockdiagramm einer illustrativen Implementierung der Summe
der Produkte eines Modes von zwei 18-Bit-mal-18-Bit-Multiplizierern
in einem MAC-Block (z.B. der zwei Multiplizierer von entweder der
oberen Hälfte
oder von der unteren Hälfte).
Wie es dargestellt ist, verwendet eine Modenimplementierung einer
einzigen Summe aus den Produkten von zwei Multiplizierern zwei Multiplizierer 608 und 610 mit
Eingängen 600, 602, 604 und 606.
Produkte 612 und 614 werden in einen Addierer/Subtrahierer 616 eingegeben,
der eine Ausgabe 618 liefert. In einem typischen MAC-Block
würde die
dargestellte Implementierung zulassen, dass zwei solche Moden einer
Summe der Produkte von zwei Multiplizierern gleichzeitig in einem
einzigen MAC-Block implementiert sind, wobei jeder zwei der vier
verfügbaren
Multiplizierer verwendet. Gemäß den Modenaufteilungseigenschaften
der vorliegenden Erfindung können
die übrigen
zwei Multiplizierer zum Implementieren von irgendeinem anderen geeigneten
Mode gleichzeitig mit dem Mode für
die Summe der Produkte von zwei Multiplizierern verwendet werden,
den die Multiplizierer 608 und 610 zum Implementieren
verwenden.
-
7 ist
ein Blockdiagramm einer illustrativen Implementierung des Modes
für die
Summe der Produkte von vier 18-Bit-mal-18-Bit-Multiplizierern in
einem MAC-Block. Wie es dargestellt ist, verwendet eine Modenimplementierung
für eine
einzige Summe der Produkte von vier Multiplizierern vier Multiplizierer 716, 718, 720 und 722 mit
Eingängen 700, 702, 704, 706, 708, 710, 712 und 714.
Die Multiplizierer 716 und 718 können Multiplizierer
der oberen Hälfte
sein und die Multiplizierer 720 und 722 können Multiplizierer
der unteren Hälfte sein.
Produkte 724 und 726 werden in einen Addierer/Subtrahierer 732 einer
ersten Stufe eingegeben. Produkte 728 und 730 werden
in einen Addierer/Subtrahierer 734 einer ersten Stufe eingegeben.
Ausgaben 736 und 738 von den Addierern/Subtrahierern 732 und 736 werden
in einen Addierer/Subtrahierer 740 einer zweiten Stufe
eingegeben, der eine Ausgabe 742 erzeugt. Weil alle Multiplizierer
des MAC-Blocks bei der in 7 gezeigten
Implementierung verwendet werden, können keine anderen Moden gleichzeitig
gemäß der vorliegenden
Erfindung implementiert werden.
-
8 ist
ein Blockdiagramm einer illustrativen Implementierung eines 9-Bit-mal-9-Bit-Multiplikationsmodes
in einem MAC-Block. Wie es dargestellt ist, verwendet ein einziger
Multiplikationsmode einen einzigen 18-Bit-mal-18-Bit-Multiplizierer 804 mit
Eingängen 800 und 802 und
einem Ausgangsprodukt 806. Bei einem typischen MAC-Block
(z.B. dem MAC-Block 192 in 3) würde die
dargestellte Implementierung zulassen, dass acht solche 9-Bit-mal-9-Bit-Multiplikationsmoden
in einem einzigen MAC-Block gleichzeitig implementiert werden (d.h.
jeder 18-Bit-mal-18-Bit-Multiplizierer kann zum Implementieren von
zwei 9-Bit-mal-9-Bit-Multiplizierern verwendet werden). Gemäß den Modenaufteilungseigenschaften
der vorliegenden Erfindung können die übrigen drei
18-Bit-mal-18-Bit-Multiplizierer und ein 9-Bit-mal-9-Bit-Multiplizierer
zum Implementieren von irgendeinem anderen geeigneten Mode gleichzeitig
mit dem 9-Bit-mal-9-Bit-Multiplikationsmode verwendet werden, den
der Multiplizierer 804 zum Implementieren verwendet. Es
wird verstanden werden, dass die anderen Moden nicht 9-Bit-mal-9-Bit-Multiplizierer
enthalten müssen
(d.h. sie können
eine 18-Bit-mal-18-Bit-Multiplikation enthalten).
-
9 ist
ein Blockdiagramm einer illustrativen Implementierung des Modes
für eine
Summe der Produkte von zwei 9-Bit-mal-9-Bit-Multiplizierern in einem
MAC-Block. Wie es dargestellt ist, verwendet eine Modenimplementierung
einer einzigen Summe aus den Produkten von zwei 9-Bit-mal-9-Bit-Multiplizierern
zwei Multiplizierer 908 und 910 (z.B. entweder
die zwei 18-Bit-mal-18-Bit-Multiplizierer der oberen Hälfte oder
die zwei 18-Bit-mal-18-Bit-Multiplizierer der unteren Hälfte) mit
Eingängen 900, 902, 904 und 906.
Produkte 912 und 914 werden in einen Addierer/Subtrahierer 916 eingegeben,
der eine Ausgabe 918 liefert. Bei einem typischen MAC-Block
(z.B. dem MAC-Block 192 in 3) würde die
dargestellte Implementierung zulassen, dass vier solche Moden für eine Summe
aus den Produkten von zwei 9-Bit-mal-9-Bit-Multiplizierern in einem
einzigen MAC-Block gleichzeitig implementiert werden (d.h. weil
jeder 18-Bit-mal-18-Bit-Multiplizierer zwei 9-Bit-mal-9-Bit-Multiplizierer
implementieren kann). Gemäß den Modenaufteilungseigenschaften
der vorliegenden Erfindung können
die übrigen
zwei 18-Bit-mal-18-Bit-Multiplizierer und zwei 9-Bit-mal-9-Bit-Multiplizierer
zum Implementieren von irgendeinem anderen geeigneten Mode gleichzeitig
mit dem Mode für
die Summe aus den Produkten von zwei 9-Bit-mal-9-Bit-Multiplizierern
verwendet werden, für
den die Multiplizierer 908 und 910 zum Implementieren
verwendet werden.
-
10 ist
ein Blockdiagramm einer illustrativen Implementierung eines Modes
für eine
Summe der Produkte von vier 9-Bit-mal-9-Bit-Multiplizierern in einem
MAC-Block. Wie es dargestellt ist, verwendet eine einzige Modenimplementierung
für eine
Summe der Produkte von vier 9-Bit-mal-9-Bit-Multiplizierern vier 18-Bit-mal-18-Bit-Multiplizierer 1016, 1018, 1020 und 1022 mit
Eingängen 1000, 1002, 1004, 1006, 1008, 1010, 1012 und 1014.
Beispielsweise können
die Multiplizierer 1016 und 1018 die Multiplizierer
der oberen Hälfte
sein und können
die Multiplizierer 1020 und 1022 die Multiplizierer
der unteren Hälfte
sein. Produkte 1024 und 1026 werden in einen Addierer/Subtrahierer 1032 der
ersten Stufe eingegeben. Produkte 1028 und 1030 werden
in einen Addierer/Subtrahierer 1034 der ersten Stufe eingegeben.
Ausgaben 1036 und 1038 von den Addierern/Subtrahierern 1032 und 1036 werden
in einen Addierer/Subtrahierer 1040 einer zweiten Stufe eingegeben,
der eine Ausgabe 1042 erzeugt. Bei einem typischen MAC-Block
(z.B. dem MAC-Block 192 in 3) würde die
dargestellte Implementierung zulassen, dass zwei solche Moden für eine Summe
aus den Produkten von vier 9-Bit-mal-9-Bit-Multiplizierern in einem
einzigen MAC-Block gleichzeitig implementiert werden (d.h. weil
jeder 18-Bit-mal-18-Bit-Multiplizierer
zwei 9-Bit-mal-9-Bit-Multiplizierer implementieren kann). Gemäß den Modenaufteilungseigenschaften
der vorliegenden Erfindung können
die übrigen
vier 9-Bit-mal-9-Bit-Multiplizierer zum Implementieren von irgendeinem
anderen geeigneten Mode gleichzeitig mit dem Mode für die Summe
aus den Produkten von vier 9-Bit-mal-9-Bit-Multiplizierern verwendet
werden, für dessen
Implementierung die Multiplizierer 1016, 1018, 1020 und 1022 verwendet
werden. Es wird verstanden werden, dass dann, wenn es einen Mangel
an Betriebsmitteln (z.B. Addierern) gibt, bestimmte Moden nicht gleichzeitig
mit denjenigen der 10 implementiert werden können.
-
11 ist
ein Blockdiagramm einer illustrativen Implementierung eines 36-Bit-mal-36-Bit-Multiplikationsmodes
in einem MAC-Block. Ein Multiplizierer 1104 mit Eingängen 1100 und 1102 und
einem Ausgangsprodukt 906 ist aus vier 18-Bit-mal-18-Bit-Multiplizierern
und Addierern gebildet. Weil alle Multiplizierer des MAC-Blocks
bei der in 11 gezeigten Implementierung
verwendet werden, können
gemäß der vorliegenden Erfindung
keine anderen Moden gleichzeitig implementiert werden.
-
Es
wird verstanden werden, dass irgendwelche anderen geeigneten Moden
in einem MAC-Block gemäß der vorliegenden
Erfindung implementiert werden können.
Beispielsweise können
bestimmte Moden ohne die Notwendigkeit von Multiplizierern implementiert
werden, wie beispielsweise XOR-Gatter mit einer Breite von 36 Bits,
UND-Gatter, ODER-Gatter oder irgendwelche anderen geeigneten logischen
Gatter unter Verwendung von beispielsweise der Arithmetikschaltung
des MAC-Blocks. Diese Moden können
beispielsweise beim Unterstützen
von bitweisen Operationen für
Mikroprozessoren nützlich
sein. Es wird auch verstanden werden, dass, obwohl sich einige Moden
auf eine "Summe" beziehen, irgendeine
andere geeignete Arithmetikoperation verwendet werden kann, (z.B.
eine Differenz), die die Addier/Subtrahierer-Schaltung der MAC-Blöcke verwendet.
-
Andere
Moden können
beispielsweise Berechnungen eines zyklischen Redundanzcodes ("CRC") einer hohen Bandbereite
von 16 Bits und 32 Bits enthalten. CRC wird in vielen Kommunikationsprotrollen
verwendet, um sicherzustellen, dass die empfangenen Daten dieselben
wie die gesendeten Daten sind. Eine CRC-Codierung/Decodierung ist
für ein
Codieren von 1 Bit zu einer Zeit relativ einfach zu implementieren,
erhöht
sich aber bezüglich
einer Komplexität
für ein
gleichzeitiges Codieren von mehreren Bits.
-
Weil
eine 12-Bit-mal-12-Bit-Multiplikation einen gesamten 18-Bit-mal-18-Bit-Multiplizierer zur
Implementierung erfordert, resultiert sie in einer Verschwendung
von Betriebsmitteln (z.B. nur 96 Bits, wenn die Eingaben/Ausgaben
verwendet werden). Gemäß der vorliegenden
Erfindung können
die vier 18-Bit-mal-18-Bit-Multiplizierer
jedes MAC-Blocks sechs 12-Bit-mal-12-Bit-Multiplikationen anstelle
nur vier unterstützen,
indem zugelassen wird, dass ungenutzte Betriebsmittel in separaten
gleichzeitigen Moden verwendet werden. Dies steht im Gegensatz zu
einem Implementieren von 9-Bit-mal-9-Bit-Multiplizierern von 18-Bit-mal-18-Bit-Multiplizierern,
weil das Aufteilen eines 18-Bit-mal-18-Bit-Multiplizierers in zwei 9-Bit-mal-9-Bit-Multiplizierer
innerhalb des 18-Bit-mal-18-Bit-Multiplizierers enthalten ist. Ein
Aufteilen von zwei 18-Bit-mal-18-Bit-Multiplizierern in drei 12-Bit-mal-12-Bit-Multiplizierer
enthält
ein gemeinsames Nutzen von Betriebsmitteln zwischen den Multiplizierern.
Dies erfordert ein komplexes Führen
und eine Eingabeabbildung.
-
Aus ähnlichen
Gründen
kann eine 24-Bit-mal-24-Bit-Multiplikation, die normalerweise einen
vollständigen
MAC-Block zum Implementieren in einer 36-Bit-mal-36-Bit-Multiplikation erfordern
würde,
gemäß der vorliegenden
Erfindung effizienter gemacht werden, um zuzulassen, dass ein einziger
MAC-Block zwei gleichzeitige 24-Bit-mal-24-Bit-Multiplikationen
unterstützt.
-
Die
Modenaufteilungseigenschaften der vorliegenden Erfindung können auf
irgendeine geeignete Weise implementiert werden. Beispielsweise
kann ein MAC-Block
bei einem geeigneten Ansatz unter Verwendung einer geeigneten Schaltung
konfiguriert sein (wie z.B. einschließlich von Multiplexern, Registern,
etc.), um zuzulassen, dass unterschiedliche Moden gleichzeitig innerhalb
des MAC-Blocks implementiert werden. Irgendwelche geeigneten Steuersignale
können
verwendet werden, um anzuzeigen, wie ein MAC-Block in Bezug auf
die gleichzeitig zu implementierenden Moden zu konfigurieren ist.
Irgendwelche oder alle dieser Steuersignale können anwendergesteuert sein.
-
12 ist
ein vereinfachtes Blockdiagramm eines MAC-Blocks 1200 gemäß der vorliegenden
Erfindung mit Steuersignalen 1201-1211. Die Steuersignale 1201-1211 können anzeigen,
in welchem Mode oder in welchen Moden der MAC-Block 1200 gleichzeitig
arbeitet. Die Steuersignale 1201-1211 sind lediglich
illustrativ. Es wird verstanden werden, dass irgendwelche anderen
geeigneten Steuersignale zum Implementieren der Modenaufteilungseigenschaften
der vorliegenden Erfindung verwendet werden können. Der Kürze und der Klarheit halber,
aber nicht anhand einer Beschränkung
und ohne Verlust an Allgemeinheit ist die vorliegende Erfindung
hierin primär
in Bezug auf die Steuersignale 1201-1211 beschrieben.
-
Die
Steuersignale 1201-1204 sind "SPLIT"-Signale bzw. "AUFTEILUNGS"-Signale, die für jeden der vier jeweiligen
18-Bit-mal-18-Bit-Multiplizierer
des MAC-Blocks 1200 anzeigen, ob der Multiplizierer als 18-Bit-mal-18-Bit-Multiplizierer
zu verwenden ist oder ob der Multiplizierer als zwei 9-Bit-mal-9-Bit-Multiplizierer
zu verwenden ist. Irgendeine geeignete Anzahl von SPLIT-Signalen kann zum
Implementieren von irgendeinem geeigneten Mode verwendet werden,
der die Verwendung eines bestimmten bemaßten Multiplizierers erfordert.
Wenn beispielsweise ein bestimmter Mode die Verwendung von 4-Bit-mal-4-Bit-Multiplizierern erfordert,
dann können
zusätzliche
SPLIT-Signale verwendet werden. Bei einem anderen geeigneten Ansatz können SPLIT-Signale
verwendet werden, um anzuzeigen, dass ein bestimmter Multiplizierer
als zwei oder mehrere kleinere Multiplizierer verwendet wird (d.h.
wie es gegensätzlich
dazu ist, in nur zwei kleinere Multiplizierer aufgeteilt zu werden).
-
Die
Steuersignale 1205 und 1208 stellen "SMODE"-Signale dar, die
dazu verwendet werden können, anzuzeigen,
ob die Akkumulatorfunktionalität
des MAC-Blocks 1200 freizugeben ist. Somit können die
Steuersignale 1205 und 1208 zum Implementieren
eines 52-Bit-Akkumulationsmodes verwendet werden. Das Steuersignal 1205 kann
zur oberen Hälfte
des MAC-Blocks 1200 gehören,
während
das Steuersignal 1208 zur unteren Hälfte des MAC-Blocks 1200 gehören kann.
-
Die
Steuersignale 1206 und 1209 stellen "ZERO"-Signale bzw. "NULL"-Signale dar, die dazu verwendet werden
können,
zusammen mit dem SMODE-Signal
anzuzeigen, ob ein Mode 2A zu implementieren ist. Der Mode 2A wird
zum Initialisieren (z.B. durch eine Nullsetzung) der im Mode 2 (d.h.
dem oben unter Bezugnahme auf 5 beschriebenen
52-Bit-Akkumulatormode) verwendeten Akkumulatorkomponenten verwendet.
Unter Bezugnahme auf 2 können die Steuersignale 1206 und 1209 beispielsweise
veranlassen, dass geeignete Bits von entweder dem Addierer/Subtrahierer 144 der
oberen Hälfte
oder dem Addierer/Subtrahierer 144 der unteren Hälfte jeweils
auf Erde gelegt werden, um den Akkumulator auf Null zu setzen. Die
Steuersignale 1206 und 1209 können dazu verwendet werden,
bei einer bestimmten Anordnung eine 36-Bit-mal-36-Bit-Multiplikation anzuzeigen.
Das bedeutet, dass bei einer bevorzugbaren Implementierung eines
36-Bit-mal-36-Bit-Multiplikationsmodes ein Nullsetzen der Addierer/Subtrahierer
nötig sein
kann.
-
Die
Steuersignale 1207 und 1210 stellen "MODE3"-Signale dar, die
dazu verwendet werden können, anzuzeigen,
wann die Ausgaben von zwei Multiplizierern (d.h. entweder zwei in
der oberen Hälfte
oder zwei in der unteren Hälfte
des MAC-Blocks) miteinander zu addieren sind. Die Steuersignale 1207 und 1210 werden daher
dazu verwendet, anzuzeigen, wann der Mode für die Summe von zwei 18-Bit-mal-18-Bit-Multiplikationen zu
implementieren ist oder wann der Mode einer Summe von zwei 9-Bit-mal-9-Bit-Multiplikationen
zu implementieren ist. Die Steuersignale 1207 und 1210 gehören jeweils
zur oberen Hälfte
und zur unteren Hälfte
des MAC-Blocks.
-
Das
Steuersignal 1211 stellt ein "MODE4"-Signal dar, das dazu verwendet werden
kann, anzuzeigen, wann die Ausgaben von vier Multiplizierern miteinander
zu addieren sind. Das Steuersignal 1211 wird daher dazu
verwendet, anzuzeigen, wann der Mode für eine Summe aus vier 18-Bit-mal-18-Bit-Multiplikationen
zu implementieren ist oder wann der Mode für eine Summe von vier 9-Bit-mal-9-Bit-Muliplikationen zu
implementieren ist. Weil alle vier Multiplizierer des MAC-Blocks
in diesen Moden verwendet werden, wird ein einziges MODE4-Signal
für den
gesamten MAC-Block verwendet.
-
Die
nachfolgende Tabelle 1 fasst die obigen Steuersignale zusammen,
wie sie verwendet werden, um einen jeweiligen der jeweils beschriebenen
Moden zu implementieren. A, B, C und D stellen jeweils vier 18-Bit-mal-18-Bit-Multiplizierer
im MAC-Block dar, wobei A und B die Multiplizierer der oberen Hälfte und
C und D die Multiplizierer der unteren Hälfte sind. R und S stellen
die obere Hälfte
und die untere Hälfte
des MAC-Blocks dar.
-
-
Jeder
der Moden 1-8 in der TABELLE 1 kann in entweder einem einzigen 18-Bit-Multiplizierer
in einer Hälfte
des MAC-Blocks (d.h. entweder der oberen Hälfte oder der unteren Hälfte) oder
im gesamten MAC-Block implementiert werden. Die nachfolgende TABELLE
2 fasst diese Flexibilität
zusammen.
-
-
-
Wenn
ein bestimmter Mode eine Hälfte
des MAC-Blocks erfordert, dann kann die andere Hälfte durch einen Mode eines
halben Blocks oder durch einen Mode eines einzigen Multiplizierers
(oder durch zwei solcher Moden) verwendet werden. Wenn ein bestimmter
Mode einen einzigen Multiplizierer erfordert, dann können die übrigen Multiplizierer
durch einen Mode eines halben Blocks, durch Moden eines einzigen
Multiplizierers oder durch beides verwendet werden.
-
Es
wird verstanden werden, dass bestimmte Anordnungen eines MAC-Blocks gemäß der vorliegenden
Erfindung bestimmte folgerichtige und praktische Beschränkungen
enthalten können.
Beispielsweise erfordern bei einer geeigneten Anordnung die Moden
4, 7 und 8, dass die Steuersignale 1201-1204 auf
denselben Wert eingestellt werden. Es kann erforderlich sein, dass
die Steuersignale 1205 und 1208 für die Moden 4,
7 und 8 auf denselben Wert eingestellt werden. Es kann erforderlich
sein, dass die Steuersignale 1206 und 1209 für die Moden
4, 7 und 8 auf denselben Wert eingestellt werden. Die Moden 3 und
6 können
erfordern, dass die Steuersignale 1201 und 1202 auf
denselben Wert eingestellt werden und dass die Steuersignale 1203 und 1204 auf
denselben Wert eingestellt werden. Es wird verstanden werden, dass
solche Beschränkungen lediglich
illustrativ sind und wenigstens teilweise von der verwendeten bestimmten
Anordnung abhängen,
der Anwendung, für
welche der MAC-Block verwendet werden wird, oder beides.
-
Es
wird verstanden werden, dass irgendwelche anderen geeigneten Moden
gemäß der vorliegenden Erfindung
dargestellt und implementiert werden können. Es wird weiterhin verstanden
werden, dass irgendwelche anderen Steuersignale zusätzlich zu
oder anstelle von denjenigen, die dargestellt sind, verwendet werden können.
-
13 ist
ein vereinfachtes Blockdiagramm einer programmierbaren Logikvorrichtung 1300 mit
einem oder mehreren MAC-Blöcken 1302,
die gemäß der vorliegenden
Erfindung konfiguriert sind. PLD 1300 kann irgendeine geeignete Verbindungsschaltung,
eine Speicherschaltung und eine programmierbare Logikschaltung haben,
um zuzulassen, dass die PLD 1300 Anwenderentwicklungen
implementiert und MAC-Blöcke 1302 beim
Implementieren der Anwenderentwicklungen verwendet.
-
14 stellt
eine PLD 1300 (13) dieser
Erfindung (d.h. mit wenigstens einem Multiplizierer, der mit den
Modenaufteilungseigenschaften der vorliegenden Erfindung konfiguriert
ist) in einem Datenverarbeitungssystem 1400 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung dar. Das Datenverarbeitungssystem 1400 kann
eine oder mehrere der folgenden Komponenten enthalten: einen Prozessor 1402;
einen Speicher 1404; eine I/O-Schaltung 1406; und periphere
Vorrichtungen 1408. Diese Komponenten sind durch einen
Systembus 1410 miteinander gekoppelt und auf einer Leiterplatte 1412 ausgebreitet,
die in einem Endbenutzersystem 1414 enthalten ist.
-
Das
System 1400 kann in einer weiten Vielfalt von Anwendungen
verwendet werden, wie beispielsweise bei einer Netzwerkbildung von
Computern, einer Netzwerkbildung von Daten, einer Instrumentation,
einer Videoverarbeitung, DSP oder irgendeiner anderen Anwendung,
wo der Vorteil eines Verwendens einer programmierbaren oder erneut
programmierbaren Logik erwünscht
ist. Die PLD 1300 kann zum Durchführen einer Vielfalt von unterschiedlichen
logischen Funktionen verwendet werden. Beispielsweise kann die PLD 1300 als
Prozessor oder Steuerung konfiguriert sein, der bzw. die in Kooperation
mit dem Prozessor 1402 arbeitet. Die PLD 1300 kann
auch als Zuteiler zum Zuteilen eines Zugriffs zu einem gemeinsam
genutzten Betriebsmittel im System 1400 verwendet werden.
Bei noch einem weiteren Beispiel kann die PLD 1300 als
Schnittstelle zwischen dem Prozessor 1402 und einer der
anderen Komponenten im System 1400 konfiguriert sein.
-
Somit
wird ein MAC-Block mit Modenaufteilungsfähigkeiten zur Verfügung gestellt.
Ein Fachmann auf dem Gebiet wird erkennen, dass die vorliegende
Erfindung durch andere als die beschriebenen Ausführungsbeispiele
ausgeführt
werden kann, die zu Zwecken einer Darstellung und nicht einer Beschränkung präsentiert sind,
und die vorliegende Erfindung nur durch die Ansprüche beschränkt ist,
die folgen.