DE19702326A1 - Einrichtung und Verfahren für eine selbstgetaktete algorithmische Ausführung - Google Patents
Einrichtung und Verfahren für eine selbstgetaktete algorithmische AusführungInfo
- Publication number
- DE19702326A1 DE19702326A1 DE19702326A DE19702326A DE19702326A1 DE 19702326 A1 DE19702326 A1 DE 19702326A1 DE 19702326 A DE19702326 A DE 19702326A DE 19702326 A DE19702326 A DE 19702326A DE 19702326 A1 DE19702326 A1 DE 19702326A1
- Authority
- DE
- Germany
- Prior art keywords
- logic
- pulse
- rate
- self
- signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
Description
Die Erfindung betrifft eine Einrichtung und Verfahren zum Erzeu
gen von internen Takt- bzw. Zeitsteuersignalen für Hochleistungs
computersysteme. Inbesondere betrifft die Erfindung eine Einrich
tung und ein Verfahren für eine selbstgetaktete algorithmische
Ausführung, welche nicht starr bezüglich einer Master- bzw.
Hauptzeitbasis synchronisiert ist.
In Hochleistungscomputersystemen ist eine Master- oder Hauptzeit
basis erforderlich, um verschiedene notwendige Schaltaktivitäten
nacheinander durchzuführen. In einigen Computersystemen wird ein
einheitliches Taktsignal durch mehrere Taktverstärker gepuffert,
um so als die einzige Quelle einer zeitlich richtigen Synchroni
sierung für alle Speicher zu wirken, die in dem System verwendet
sind. In anderen Systemen können mehrere zusätzliche unterschied
lich phasengesteuerte Taktsignale verwendet werden, um gesonderte
Gruppen von Speicher anzusteuern, die jedoch alle in herkömmli
cher Weise mit der Masterzeitbasis in dem System synchronisiert
sind.
Wenn mehrere Taktsignale verwendet werden, wechseln oder ändern
die verschiedenen Speicher einen Zustand mit Datenströmen oder
Befehlsfolgen bei verhältnismäßig verschiedenen Raten. Solche
mehrfach getakteten Schaltungen sind oft so ausgelegt, daß eine
funktionelle Logik zwischen den Speichern mit der schnellstmögli
chen Geschwindigkeit durchlaufen wird. In Pipelinesystemen ist
beispielsweise die funktionelle Logik auf die Speicher verteilt,
so daß eine Systemdesign-Beschränkung bei einer minimalen Soll
ausführungszeit erhalten wird, ohne gleichzeitig die Anzahl an
funktionellen Logik- oder Speicherelementen erhöhen zu müssen.
In derartigen Pipelinesystemen wird ein superharmonischer Takt
verwendet, um die internen Ränge bestimmter funktioneller Pipeli
ne-Einheiten mit einer schnelleren Rate zu durchlaufen, während
die Eingabe-Ausgabebereiche der funktionellen Einheit mit einer
langsameren Rate durchlaufen werden, die mit dem Rest der funk
tionellen Pipeline-Einheiten in dem System kompatibel ist. Diese
herkömmliche Methode ist als "Mikropipelining" bekannt und
schließt Einrichtungen ein, in welchen die inneren Speicher einer
funktionellen Pipeline-Einheit ein strikt synchrones, superharmo
nisches Taktsignal haben, welches die Mikrooperationen des Pipe
linesynchronismus mit der langsameren (Daten-)Stromrate ver
schachtelt, die an den Eingangs- und Ausgangsanschlüssen der Pi
peline vorliegt.
Leider sind aufgrund der Nachteile des "Mikropipelining" mehrere
Taktverstärker in einer Baumorganisation mit geringer Schräge
(low-skew) erforderlich, um die niedrigste mögliche Schräge in
dem Triggersignal sicherzustellen, das tatsächlich von jedem der
Speicher empfangen worden ist, und es ist ein einheitliches Zeit
steuerintervall erforderlich. Folglich sind Gruppen von logischen
Elementen in einer Mikropipeline schwierig unterzubringen, die
keine Übertragungsverzögerungen hat, die kurz genug sind, um in
dem einheitlichen Zeitsteuerintervall zu arbeiten. Ferner sind
Mikropipelining-Konzepte besonders schwierig mit Hilfe von rekon
figurierbaren Logikeinrichtungen (RLDs), wie feldprogrammierbaren
Gate-Arrays (FPGAs) durchzuführen, da die Übertragungsverzögerun
gen in einer RLD-Einheit sich von funktioneller zu funktioneller
Einheit ändern, was einen halb-globalen Mikropipeline-Takt
schwierig macht.
Wenn RLD-Einheiten verwendet worden sind, um verschiedene logi
sche Strukturen durchzuführen, wird bei der Mehrheit von "Werk
zeugen", die verwendet worden sind, um die tatsächlichen RLD-Ver
bindungen zu erzeugen, ein Register-Transfer-Sprachen-(RTL)
Paradigma zu erzeugen. Ein derartiges Paradigma vertraut stark
auf das Vorhandensein von gesonderten Master-Zeitbasis-Takten zum
Ansteuern der funktionellen Logik- und Speichereinheiten in der
RLD-Einheit. Ein derartiges Paradigma ignoriert die Wirkungen,
welche die Implementierung der Logikausführung in die RLD-Einheit
auf Forderungen bezüglich Silizium-Ressourcen haben. In der Tat
verlangen die RLD-Werkzeughersteller oft, daß ein "Vorteil" ihres
Logik-Ausführungsparadigmas darin besteht, daß es nicht auf die
charakteristischen RLD-Merkmale zugeschnitten ist.
Bei anderen Hochleistungs-Computersystemen ist versucht worden,
die vorstehend erwähnten Schwierigkeiten bei auf einer Master
zeitbasis synchronisierten Taktsystemen zu vermeiden, indem funk
tionelle Computeraufgaben in eine Reihe von zeitlich asynchron
gesteuerten Unteraufgaben aufgeteilt werden. Leider haben beste
hende asynchrone Logikausführungen auch viele Einschränkungen: so
müssen beispielsweise "Abschlußsignale" bei Beendigen von funk
tionellen Aufgaben erzeugt werden; sie haben variable oder unbe
kannte Abschlußzeiten; sie erfordern externe Taktelemente; sie
haben datenabhängige Abschlußzeiten; sie sind asynchron an eine
externe Schaltungsanordnung anzuschließen; es liegt ein inkohä
renter Phasenabgleich bei Datenaustausch mit einer externen
Schaltungsanordnung vor; es ist schwierig, sie mit einer synchro
nen externen Schaltung zusammenzubringen, und es ist schwierig,
die gesamte systemweite Performance mit dem Netz von externen
taktgebündelten Schaltungen zusammenzubringen.
Gemäß der Erfindung sollen daher eine Einrichtung und ein Verfah
ren für eine selbstgetaktete algorithmische Ausführung geschaffen
werden, welche die inhärente Bürde bzw. Belastung trennt, um die
schnellstmöglichen Pipeline-Sequenzen von der simultanen Bürde
aus zu erreichen, um die kürzest möglichen Zwischenzustand-Verzö
gerungsbeschränkungen in einem System zu haben, welches verein
heitlichte Zeitsteuerintervalle benutzt.
Gemäß der Erfindung ist dies mit Einrichtung für eine selbstgetak
tete algorithmische Ausführung mit den Merkmalen des Anspruchs 1
erreicht. Vorteilhafte Weiterbildungen sind Gegenstand von auf
den Anspruch 1 unmittelbar oder mittelbar rückbezogenen Ansprü
chen. Ferner ist dies mit einem Verfahren für eine selbstgetakte
te logarithmische Ausführung mit den Merkmalen des Anspruchs 14
erreicht. Vorteilhafte Weiterbildungen des erfindungsgemäßen Ver
fahrens sind Gegenstand der auf den Anspruch 14 unmittelbar oder
mittelbar rückbezogenen Ansprüche.
Die Einrichtung gemäß der Erfindung weist vorzugsweise eine funk
tionelle Logikanordnung, einen Referenz-Takteingang und einen Im
pulszuordner auf. Die funktionelle Logikanordnung erhält Ein
gangsdaten synchron mit einem Referenztakt, der an dem Referenz-Takteingang
erhalten worden ist, führt algorithmische Berechnun
gen an den eingegebenen Daten mit einer Maximalrate, welche von
dem Impulszuordner festgelegt worden ist, entsprechend den physi
kalischen Kenndaten der funktionellen Logikanordnung durch, er
zeugt Ausgangsdaten und überträgt die Ausgangsdaten synchron mit
dem Referenztakt. Die Maximalrate, die mittels des Impulszuord
ners eingestellt worden ist, ist von dem Referenztakt unabhängig.
Das erfindungsgemäße Verfahren für eine selbstgetaktete algorith
mische Ausführung weist die Schritte auf: Übertragen von eingege
benen Daten an eine Logikanordnung synchron mit einem Referenz
takt; Erzeugen einer Impulsfolge mit einer Maximalrate zum An
steuern der funktionellen Logikanordnung mit einer Rate, die von
einer Algorithmus-Ausführungszeit für die funktionelle Logikan
ordnung abhängt, von dem Referenztakt aber unabhängig ist; Erzeu
gen von Ausgangsdaten von der funktionellen Logikanordnung aus
entsprechend der Impulsfolge mit maximaler Rate, und Übertragen
der Ausgangsdaten von der funktionellen Logikanordnung synchron
mit dem Referenztakt.
Nachfolgend wird die Erfindung anhand von bevorzugten Ausfüh
rungsformen unter Bezugnahme auf die anliegenden Zeichnungen im
einzelnen erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm einer bevorzugten Ausführungsform einer
Einrichtung für eine selbstgetaktete algorithmische Aus
führung;
Fig. 2A ein Blockdiagramm einer bevorzugten Ausführungsform eines
Impulszuordners gemäß der Erfindung;
Fig. 2B ein Blockdiagramm einer bevorzugten Ausführungsform einer
Startlogik in dem Impulszuordner;
Fig. 2C ein Blockdiagramm einer bevorzugten Ausführungsform einer
Verzögerungseinheit in dem Impulszuordner;
Fig. 2D ein Blockdiagramm einer bevorzugten Ausführungsform eines
Impulszählers in dem Impulszuordner;
Fig. 2E ein Blockdiagramm einer bevorzugten Ausführungsform einer
Sequenz-Gate-Logik in dem Impulszuordner;
Fig. 3 ein Blockdiagramm einer bevorzugten Ausführungsform einer
funktionellen Logik gemäß der Erfindung;
Fig. 4 ein Blockdiagramm einer bevorzugten Ausführungsform eines
Multiplexers in der funktionellen Logik;
Fig. 5 ein Blockdiagramm einer bevorzugten Ausführungsform eines
partiellen Produktgenerators in der funktionellen Logik;
Fig. 6 ein Blockdiagramm einer bevorzugten Ausführungsform einer
partiellen Produktsummiereinheit in der funktionellen
Logik;
Fig. 7 ein Blockdiagramm einer bevorzugten Ausführungsform eines
Produktakkumulators in der funktionellen Logik;
Fig. 8 ein bevorzugten Zeitsteuerdiagramm, das die Arbeitsweise
der Erfindung wiedergibt;
Fig. 9A eine Matrix, die bevorzugte partielle Produktadditionen
für eine 16 Bit mal 16 Bit-Multiplikation gemäß der Erfin
dung wiedergibt;
Fig. 9B eine Matrix, die bevorzugte partielle Produktadditionen
für eine 8 Bit mal 8 Bit-Multiplikation der Erfindung wie
dergibt;
Fig. 10 ein Ablaufdiagramm eines bevorzugten Verfahrens für eine
selbstgetaktete algorithmische Ausführung;
Fig. 11 ein Ablaufdiagramm eines bevorzugten Verfahrens zum Erzeu
gen einer Impulsfolge, und
Fig. 12 ein Ablaufdiagramm eines bevorzugten Verfahrens zum Erzeu
gen von Ausgangsdaten entsprechend der Impulsfolge.
Die vorliegende Erfindung betrifft eine Verfahren und eine Ein
richtung für eine selbstgetaktete algorithmische Ausführung.
Durch eine Paarbildung einer Verzögerungseinheit mit einer funk
tionellen Logikanordnung, die ausgelegt ist, um einen ausgewähl
ten Algorithmus auszuführen, wird gemäß der Erfindung der ausge
wählte Algorithmus mit der schnellstmöglichen Geschwindigkeit un
abhängig von irgendwelchen Referenztakten durchgeführt, welche
andere funktionelle Logikanordnungen bzw. -gruppen ansteuern.
Folglich brauchen im Unterschied zu bekannten Zeitsteuereinrich
tungen und -Verfahren charakteristische Zeitsteuerkenndaten für
eine funktionelle Logikanordnung, welche den Algorithmus durch
führt, nicht entweder durch eine Referenztakt-Geschwindigkeit
eingeschränkt zu werden oder davon abhängig zu sein.
Statt dessen erhält die vorliegende Erfindung erstens Daten von
anderen funktionellen Logikanordnungen, arbeitet zweitens an den
Daten mit einer selbstgetakteten Rate, die auf einer funktionel
len Logikanordnung basiert, welche den Algorithmus entsprechend
dem Erzeugen eines Satzes von selbstgetakteten Impulsen durch
führt, und gibt drittens Daten zu einem spezifischen bekannten
Zeitpunkt ab, der von den anderen funktionellen Logikanordnungen
angenommen wird. Folglich sind die Einrichtung und das Verfahren
gemäß der Erfindung insbesondere vorteilhaft gegenüber dem Stand
der Technik, da sie eine funktionelle Logikanordnung ermöglicht,
mit einer Geschwindigkeit zu arbeiten, die unabhängig von der
Operationsgeschwindigkeit anderer funktioneller Logikanordnungen
oder von Referenztakten ist; folglich vereinfacht dies die Hard
ware-Auslegung, während die schnellstmöglichen algorithmischen
Ausführungsgeschwindigkeiten erhalten werden.
Gemäß der Erfindung werden diese Vorteile dadurch erreicht, daß
funktionelle Logikeinheiten hinsichtlich ihrer meist fundamenta
len physikalischen Strukturen betrachtet werden. Die vorliegende
Erfindung verläßt sich nicht auf ein Register-Transfer-Logik-(RTL-)Paradigma.
Vielmehr schafft die Erfindung eine besonders
vorteilhafte Zeitsteuerschaltung für eine funktionelle Logikan
ordnung, welche einen Algorithmus durchführt, so daß die funktio
nelle Logikanordnung mit ihrer schnellstmöglichen Rate arbeiten
kann. Folglich definiert die vorliegende Erfindung ein neues
Paradigma zum Ausführen logischer Strukturen in Silizium-Ressourcen,
wobei die Silizium-Ressourcen als Incremental-Arbiter
nicht nur von der algorithmischen Ausführung, sondern auch von
Zeitsteuerraten betrachtet werden.
Bei dem Stand der Technik ist dieses neue Paradigma nicht be
kannt, da erstens die temporale Auswirkung auf Implementierung
von Logik in bekannten Systemen von den Nebenwirkungen abhängt,
die nur an den Speichervorrichtungen zu sehen sind; zweitens
funktionelle Logikgruppen beim Stand der Technik mechanistisch
als Leitungen zum Durchlassen von Daten betrachtet werden, wäh
rend in Wirklichkeit die funktionelle Logikgruppe auch als eine
Möglichkeit betrachtet werden kann, eine Gesamtausführungszeit
von funktionellen Logiksätzen zu verringern, drittens das RTL-Paradigma
die Analyse von vorteilhaften oder integralen Verbin
dungswirkungen zwischen der funktionellen Logik und Speichervor
richtungen beeinträchtigt, und viertens beim Stand der Technik
der Nachdruck auf funktionelle Logik Gestaltungen stark beein
flussen, welche ein lokalisiertes Rückkoppeln einschließen, um
individuell gestaltete bzw. Zeitsteuerschaltungen auf dem Niveau
einer algorithmischen Implementierung zu erzeugen.
Die Erfindung ist vorzugsweise in einer rekonfigurierbaren Logik
einheit (RLD) dargestellt, wie beispielsweise eine feldprogram
mierbaren Gate-Array (FPGA), der Xilinx XC4000-Serie (Xilinx, San
Jose, Kalifornien). Rekonfigurierbare Logikeinheiten (RLDs) wei
sen einen Satz konfigurierbarer Logikblöcke (CLBs) auf. Jeder
konfigurierbare Logikblock (CLB) enthält vorzugsweise mindestens
einen Funktionsgenerator sowie ein oder mehrere Übertraglogikelemente.
Die innere Struktur eines feldprogrammierbaren Gate-Array
(FPGA) ist dynamisch rekonfigurierbar durch Verwenden eines Kon
figurationsdatenbestandes oder eines Konfigurations-Bitstroms. In
einem vorgegebenen konfigurierbaren Logikblock (CLB) werden ganz
bestimmte logische Funktionen über die Funktionsgeneratoren ent
sprechend dem Konfigurationsbitstrom erzeugt.
Jeder Funktionsgenerator hat eine charakteristische stabile
Signalausbreitungsverzögerung. Beispielsweise haben in einem kon
figurierbaren Logikblock (CLB) der Xilinx XC4000-Serie jeweils
ein erster und ein zweiter Funktionsgenerator (Typ "F" und "G")
eine Übertragungsverzögerung von annähernd 4,5 ns, und ein drit
ter Funktionsgenerator (Typ "H") hat eine Ausbreitungsverzögerung
von annähernd 2,5 ns. Die Übertraglogikelemente weisen bekannt
lich eine Übertrag-Ausbreitungslogik auf, die entsprechend ausge
legt ist, um sehr kleine stabile Übertragungsverzögerungen zu ha
ben. Die übertrag-Ausbreitungslogik in einem FPGA der Xilinx
XC4000 Serie hat eine Übertragungsverzögerung von 1,5 ns.
Die Erfindung schafft Vielfachrückkopplungspegel bzw. -ebenen, um
selektiv Ressourcen in der rekonfigurierbaren Logikeinheit (RLD)
zu kombinieren, um verschiedene interne Übertragungsverzögerungen
zu erzeugen. Diese Rückkopplung wird verwendet, um individuelle
Zeitsteuerschaltungen zu schaffen, um ein oder mehrere funktio
nelle Logikeinheiten in der RLD-Einheit anzusteuern. Vorzugsweise
nutzt die vorliegende Erfindung "Intertial"-Verzögerungen und
verläßt sich nicht nur auf "reine" Verzögerungen. Eine Inertial
verzögerung ist definiert als eine Verzögerung, bei welcher eine
Übertragung eine minimale Impulsbreite erfordert, während eine
reine Verzögerung eine ist, bei welcher die Verzögerungsübertra
gung im wesentlichen unabhängig von der Impulsbreite ist. Vor
teilhafterweise sind Inertialverzögerungen stabile, gut gesteuer
te Verzögerungen. Der Fachmann erkennt daher, daß die vorliegende
Erfindung nicht in einer rekonfigurierbaren Logikeinheit (RLD)
ausgeführt zu werden braucht, sondern statt dessen auch in anderen
herkömmlichen bekannten Logikeinheiten ausgeführt werden kann.
Obwohl in der vorliegenden Beschreibung eine funktionelle Logik
einheit beschrieben ist, welche eine X-Bit mal Y-Bit-Multiplika
tion ausführt, die ein P-Bit-Produkt ergibt, (wobei X, Y und P
ganze Zahlen sind), weiß der Fachmann, daß die funktionelle Lo
gikeinheit auch so ausgelegt sein könnte, um-eine große Anzahl
alternativer Algorithmen durchzuführen. Derartige alternative Al
gorithmen können Schritte aufweisen, um jede Art von arithmeti
schen, logischen, grafischen, wortverarbeitenden, signalverarbei
tenden oder Netz-Operationen durchzuführen. Beispielsweise kann
diese Erfindung dazu verwendet werden, um Zeitsteuersignale für
die effiziente Nutzung eines internen RLD-Randomspeichers (RAM),
Vielfachregisterdateien oder eine Datenwegwahl in einer RLD-Ein
heit zu schaffen (beispielsweise Cross-Barschalter in einem
FPGA).
Zur Verdeutlichung zeigen
Fig. 3 bis 7 unten Einzelheiten einer
beispielshaften 16 Bit mal 16 Bit-Multiplikation, die ein 32 Bit-Produkt
ergibt. Der Fachmann erkennt jedoch, daß die Erfindung
auch verwendet werden kann, um Multiplikationen mit mehr oder we
niger als 16 Bits durchzuführen. In der folgenden Beschreibung
haben die Signale und Bits, die nachstehend beschrieben sind,
vorzugsweise nur zwei Zustände, nämlich logisch "1" und logisch
"0". Obwohl die Elemente der Erfindung so beschrieben sind, daß
sie nur auf eine Anstiegsflanke eines Zustandsübergangs (d. h.
eines Übergangs von logisch "0" auf logisch "1") ansprechen, ist
dem Fachmann bekannt, daß die rekonfigurierbare Logikeinheit
(RLD) auch entsprechend konfiguriert sein kann, um entweder nur
auf Zustandsübergänge mit einer fallenden Flanke oder sowohl auf
solche mit einer ansteigenden als auch einer fallenden Flanke an
zusprechen.
In Fig. 1 ist ein Blockdiagramm einer bevorzugten Ausführungsform
einer Einrichtung zur selbstgetakteten algorithmischen Ausführung
dargestellt. Die Einrichtung 20 weist einen Eingangspuffer 22,
eine funktionelle Logik 24, einen Ausgangspuffer 26, eine syn
chrone Zustandseinrichtung (state machine) 30 und einen Impulszu
ordner 34 auf. Der Eingangspuffer 22 ist eine bekannte Einrich
tung, die entweder einen X Bit-Multiplikanden oder einen Y-Bit-Multiplikator
lädt, der über eine Leitung 19 von einer (nicht
dargestellten) externen Schaltung jedesmal dann erhalten worden
ist, wenn die externe Schaltung ein eingegebenes Freigabesignal
auf einer Leitung 29 in einem logischen "1"-Zustand hält, während
ein Referenztaktsignal auf einer Leitung 28 erhalten wird. Der
Referenztakt wird vorzugsweise mit Hilfe eines Taktmechanismus
ausgeführt, der in der US-Patentanmeldung SN 08/501,970 "System
und Methode zum phasensynchronen frequenzflexiblen Takten und
Nachrichtenübermitteln" beschrieben ist. Selbstverständlich kann
der Referenztakt statt dessen auch mit einer bekannten Takterzeu
gungseinrichtung geschaffen werden.
Der Eingangspuffer 22 gibt den X-Bit-Multiplikanden über eine
Leitung 21 und den Y-Bit-Multiplikator über eine Leitung 23 an
die funktionelle Logik 24 ab. Die funktionelle Logik 24 erhält
den Multiplikanden und den Multiplikator und multipliziert sie
entsprechend einem Multiplikationsalgorithmus mit einer Taktrate,
die von dem Impulszuordner 34 abhängt, aber nicht von dem Refe
renztakt abhängig ist. Die Zeit, welche von der funktionellen
Logik 24 gefordert wird, um den Multiplikationsalgorithmus durch
zuführen, ist die Algorithmus-Ausführungszeit.
Die Übertragungsverzögerungen in der funktionellen Logik 24 be
stimmen deren Algorithmus-Ausführungszeit und werden üblicherwei
se basierend auf einem Satz von darin enthaltenen Logikvorrich
tungen berechnet. Die funktionelle Logik 24 gibt ein P-Bit-Pro
dukt über eine Leitung 25 an den Ausgangspuffer 26 ab. Einzelhei
ten der funktionellen Logik 24 werden nachstehend anhand von
Fig. 3 beschrieben. Der Ausgangspuffer 26 ist ein bekannter Puf
fer, welcher das P-Bit-Produkt lädt und dann über eine Leitung 27
an die externe Schaltung abgibt, wenn die externe Schaltung einen
Ausgabe-Freigabe-Impuls auf einer Leitung 31 in einem logischen
"1"-Zustand erhält, während der Referenztakt über die Leitung 28
erhalten wird.
Die synchrone Zustandseinrichtung 30 ist eine bekannte Einrich
tung, welche ein Startsignal 90 (siehe Fig. 8) in einen logischen
"1"-Zustand umwandelt, nachdem der Referenztakt auf der Leitung
28 zweimal gewechselt hat und die externe Schaltung gleichzeitig
das eingegebene Freigabesignal auf einer Leitung 29 in einem lo
gischen "1"-Zustand gehalten hat. Die synchrone Zustandseinrich
tung 30 wartet zwei Referenztaktwechsel ab, bevor sie das Start
signal 90 in einen logischen Zustand "1" setzt, so daß der Ein
gangspuffer 22 fortlaufend sowohl den X-Bit-Multiplikanden als
auch den Y-Bit-Multiplikator von der externen Schaltung erhalten
kann.
Der Impulszuordner 34 überwacht das Startsignal 90 auf einer Lei
tung 32 von der synchronen Zustandseinrichtung 30 und erzeugt und
sendet seinerseits einen Satz Signale über eine Leitung 33 an die
funktionelle Logik 24, wenn das Startsignal 90 auf logisch "1"
übergeht. Einzelheiten der Arbeitsweise des Impulszuordners 34
und des Satzes Signale, die er abgibt, werden nachstehend anhand
von Fig. 2A beschrieben. Sobald die Einrichtung 20 in einer kon
kreten Vorrichtung verwirklicht ist oder gemäß den Beschränkungen
einer vorgegebenen konkreten Vorrichtung ausgelegt ist, sind die
Übertragungsverzögerungen der funktionellen Logik 24 und eine
Taktrate des Pulszuordners 34 bekannt. Folglich sind die Ausgabe
daten an dem Ausgangspuffer 26 in bekannter Zeit vorhanden, wenn
die Eingangsdaten in den Eingangspuffer 22 getaktet sind.
Diese bekannte Zeit ändert sich jedoch etwas infolge von normalen
Ausführungsschwankungen der konkreten Vorrichtung als Funktion
der Temperatur und Alterung der Vorrichtung. Da jedoch der Im
pulszuordner 34 vorzugsweise ein integraler Bestandteil der funk
tionalen Logik 24 ist, wie unten noch beschrieben wird, machen
sowohl der Impulszuordner 34 als auch die funktionelle Logik 24
dieselben Temperatur- und Zeitschwankungen durch. Folglich sind
der Impulszuordner 34 und die funktionelle Logik 24 sehr gut an
gepaßt und die funktionelle Logik 24 wird von dem Impulszuordner
34 weder "übertaktet" noch "untertaktet".
In Fig. 2A ist ein Blockdiagramm einer bevorzugten Ausführungsform
eines Impulszuordners 34 gemäß der Erfindung dargestellt. Der Im
pulszuordner 34 weist eine Startlogik 36, eine Verzögerungsein
heit 38, einen Impulszähler 40 und eine Sequenz-Gatelogik 42 auf.
Die Impulsrate, -dauer und -periodizität (wenn überhaupt) des Im
pulszuordners 34 werden vorzugsweise für die funktionelle Logik
24 optimiert, welche er ansteuert. Der Impulszuordner 34 ist
ebenfalls vorzugsweise mit Hilfe logischer Einrichtungen ausge
führt, die der funktionellen Logik 24 angenähert sind, um so in
entsprechender Weise auf Temperatur- und Alterungswirkungen anzu
sprechen, wie oben ausgeführt ist.
Obwohl nur ein Impulszuordner 34 nachstehend beschrieben wird, um
die gesamte funktionelle Logik 24 anzusteuern, könnten alternativ
hierzu auch mehrere Impulszuordner 34 vorgesehen sein, um spezi
fische Untergruppen der funktionellen Logik 34 mit verschiedenen
Raten und zu verschiedenen Zeiten während der Operation der funk
tionellen Logik 24 anzusteuern. In einer solchen alternativen Aus
führungsform würde jeder der Impulszuordner 34 vorzugsweise den
Startimpuls 104 erhalten.
Wenn das Startsignal 90 auf der Leitung 32 auf logisch "1" über
geht, erzeugt die Startlogik 36 einen Rücksetz(1)-Impuls 105
(siehe Fig. 8) auf einer Leitung 48 und einen Startimpuls auf ei
ner Leitung 35. Der Rücksetz(1)-Impuls 105 initialisiert den Im
pulszähler 40. Einzelheiten der Startlogik 36 werden nachstehend
anhand von Fig. 2B angegeben. Die Verzögerungseinheit 38 erhält
den Startimpuls und erzeugt nach einer ersten bekannten Verzöge
rung ein Ausgangssignal 133 der Verzögerungseinheit (siehe Fig. 8)
auf der Leitung 39. Nach einer zweiten bekannten Verzögerung er
zeugt die Verzögerungseinheit 38 ein Rückkopplungssignal 132
(siehe Fig. 8) auf einer Leitung 37. Einzelheiten der Verzöge
rungseinheit 38 werden nachstehend anhand von Fig. 2C beschrieben.
Die Startlogik 36 erhält ein Rückkopplungssignal 132 über eine
Leitung 37 und erzeugt ihrerseits den nächsten Startimpuls auf
der Leitung 35, wodurch eine selbstgetaktete Schwingung erzeugt
ist. Die Periode dieser selbstgetakteten Schwingung ist durch die
Übertragungsverzögerungen festgelegt, die durch die Startlogik
36, die Verzögerungseinheit 38 und die Leitung 37 bedingt sind.
Vorzugsweise sind die Startlogik 36 und die Verzögerungseinheit
38 in einer RLD-Einheit untergebracht, so daß die Verzögerungs
zeit, die auf der Leitung 37 beruht, minimiert ist. In einer bei
spielhaften Ausführungsform mit einer FPGA der Xilinx XC4000-Se
rie liegt die durch die Leitung 37 bedingte Verzögerung zwischen
1,7 ns und 2,2 ns, wenn übliche Anordnungsvorschriften angewendet
werden, um CLB-Anordnungen zu definieren. Bei Erhalt eines Halte
signals auf einer Leitung 41 von dem Impulszähler 40 stoppt die
Startlogik 36 das Erzeugen von Startimpulsen auf der Leitung 35;
folglich wird die selbstgetaktete Schwingung angehalten.
Der Impulszähler 40 erhält ein Ausgangssignal 133 von der Verzö
gerungseinheit 38 auf der Leitung 39 und erzeugt dementsprechend
ein Impuls zählen auf der Leitung 44 und das Haltesignal auf der
Leitung 41. Der Impulszählstand wird über eine Leitung 43 auf den
anfänglichen Impulszählstand (vorzugsweise "1") zurückgesetzt und
wird jedesman inkrementiert, wenn das Ausgangssignal 133 von der
Verzögerungseinheit wechselt. Sobald der Impulszählstand den
größten Impulszählstand erreicht, erzeugt der Impulszähler 40
das Haltesignal auf der Leitung 41. Eine Leitung 44 besteht aus
einer Anzahl binärer Bitleitungen, die ausreichen, um den größten
Impulszählstand zu übertragen. Beispielsweise erfordert bei einer
16 Bit mal 16 Bit-Multiplikation der Impulszählstand acht Zustän
de aus Gründen, die nachstehend noch beschrieben werden. Folglich
muß die Leitung 44 aus mindestens drei binären Bitleitungen ge
bildet sein, die hier als MUX(0) 92 (das niedrigstwertige Bit
(LSB)), MUX(1) 94 und MUX(2) 96 (das höchstwertige Bit (MSB)) de
finiert sind (siehe Fig. 8). Einzelheiten des Impulszählers 40
werden nachstehend anhand von Fig. 2D beschrieben.
Die Sequenz-Gate-Logik 42 erhält den Impulszählstand über eine
Leitung 44 und das Ausgangssignal 133 der Verzögerungseinheit
über die Leitung 39. Dementsprechend erzeugt die Logik 42 ein
Rücksetz(2)-Signal 97 (siehe Fig. 8) auf einer Leitung 45, ein
Partialprodukt-Summierer-Taktsignal (PPS-CLK) 98 (siehe Fig. 8),
ein Produkt-Akkumulator-Takt(1)-Signal (PA-CLK(1)) 99 (siehe
Fig. 8) auf einer Leitung 47, ein PA-CLK(2) 100 (siehe Fig. 8) auf
einer Leitung 48 und eine PA-CLK(3)101 (siehe Fig. 8) auf einer
Leitung 49. Jeder der Takte 98 bis 101 ist vorzugsweise ein
Rechtecksignal, das von dem Impulszählstand und dem Ausgangs
signal 133 der Verzögerungseinheit abgeleitet ist.
Das Impulszählsignal 44, das Rücksetz(2)-Signal 97, der PPS-CLK
46 und die PA-CLKs 47 bis 49 fungieren zusammen als der Satz
Signale, die auf einer Leitung 33 an die funktionelle Logik 24
abgegeben worden sind, wie in Fig. 1 dargestellt ist. Gemäß dem
selbst-getakteten Paradigma ist absichtlich keines der Signale
des Satzes Signale, die an die Leitung 33 abgegeben worden sind,
mit dem Referenztakt auf der Leitung 28 synchronisiert. Einzel
heiten der Sequenz-Gate-Logik 42 werden nachstehend anhand von
Fig. 2E beschrieben.
In Fig. 2B ist ein Blockdiagramm einer bevorzugten Ausführungsform
der Startlogik 36 gemäß der Erfindung dargestellt. Die Startlogik
36 weist eine Gruppe von Logikeinrichtungen auf, die so, wie in
Fig. 2B dargestellt, verbunden sind. In einer beispielhaften Aus
führungsform, die mit Hilfe einer FPGA der Xilinx XC4000-Serie
realisiert ist, weist die Startlogik 36 herkömmliche Xilinx-Pro
grammelemente FDS, AND2B1, AND2B0 und OR2B1 auf.
In Fig. 2C ist ein Blockdiagramm einer bevorzugten Ausführungsform
der Verzögerungseinheit 38 der Erfindung dargestellt. Die Verzö
gerungseinheit 38 ist vorzugsweise in einer RLD-Einheit unterge
bracht und besteht aus Übertrag-Logikelementen in einem Satz aus
"n" CLBs 138, 144, 150, 154, wobei n eine ganze Zahl ist. Vor
zugsweise weist jedes Übertraglogikelement eine Hochleistungs
übertrag-Übertragungsschaltung auf. Die Verzögerungseinheit 38
weist zusätzlich eine Untergruppe der Funktionsgeneratoren in
diesem Satz von n CLBs auf, um einen Signalleitweg zwischen der
Verzögerungseinheit 38 und der Logik außerhalb der Verzögerungs
einheit 38, nämlich der Startlogik 36, dem Impulszähler 40 und
der Sequenz-Gate-Logik 42, zu erleichtern. In einer beispielhaf
ten Ausführungsform ist die Verzögerungseinheit 38 in einer FPGA
der Xilinx XC4000-Serie durch das Verwenden von Anweisungen "CI
PRÜFEN" und "CI FORCIEREN" ausgeführt, was einem Prüfen bzw. For
cieren eines Übertragsignals von einer vorhergehenden Stelle
(carry-in signal) entspricht.
Die Logik, die in jedem CLB 138, 144, 150, 154 verwendet ist, ad
diert eine bekannte Verzögerung (1,5 ns für ein Xilinx XC4000-Übertrag-Logik-Element
und 4,5 ns für einen Xilinx XC4000-Funk
tionsgenerators des F-Typs) zu derjenigen der Verzögerungseinheit
38. Die Operationsfrequenz der Verzögerungseinheit 38 wird vor
zugsweise entweder durch Erhöhen oder Erniedrigen der Anzahl von
in Reihe geschalteten Übertrag-Logikelementen geändert. In der
bevorzugten Ausführungsform wird ein mit maximaler Rate selbst-getakteter
Impulszuordner 34 gefordert.
Die Anzahl an CLBs 138, 144, 150, 154, welche die Verzögerungs
einheit 38 aufweisen, hängt daher von dem langsamsten Teil der
funktionellen Logik 24 ab. Wenn der langsamste Teil der funktio
nellen Logik 24 "t" ns benötigt, dann weist die Verzögerungsein
heit 38 "n" CLBs mit einer Gesamtverzögerung auf, die gleich ei
ner Hälfte von "t" ns (d. h. einer halben Periode) ist. Da RLD in
Realzeit umzuprogrammieren ist, kann die Verzögerung der Verzöge
rungseinheit 38 dynamisch während des Verlaufs der Verarbeitungs
operationen der funktionellen Logik 24 geändert werden. Dadurch
kann ein erster Satz von Operationen der funktionellen Logik 24
mit einer ersten selbst-getakteten Rate durchgeführt werden, ein
zweiter Satz von anderen Operationen der funktionellen Logik 24
kann mit einer zweiten selbstgetakteten Rate durchgeführt werden,
usw.
In einer ersten CLB 138 erhält der Funktionsgenerator(1) 140 den
Startimpuls auf der Leitung 35 und läßt den Impuls zu dem Über
trag-Logikelement(1) 139 durch. Das Übertrag-Logikelement(1) 139
läßt dann den Impuls über eine Übertragleitung 142 zu einem zwei
ten CLB 144 durch. In der zweiten CLB 144 erhält das Übertrag-Lo
gikelement(2) 145 den Impuls und läßt ihn zu dem Funktionsgenera
tor(2) 146 durch und überträgt auch den Impuls über die Austrag
leitung 148 an einen dritten CLB 150. Nachdem der Impuls den
Funktionsgenerator(2) 146 durchlaufen hat, kann der Impuls von
der Verzögerungseinheit 38 an dieser Stelle "abgegriffen" werden,
um so das Ausgangssignal 133 der Verzögerungseinheit auf der Lei
tung 39 zu werden. Hierbei ist ein "Abgriff" als eine Verbindung
in der Verzögerungseinheit 38 definiert, die einen Signalleitweg
extern zu der Verzögerungseinheit 38 erleichtert.
Dieses "Abgreifen" ist als eine Verbindung in der Verzögerungs
einheit 38 definiert, welche einen Signalleitweg außerhalb der
Verzögerungseinheit 38 erleichtert. Dies "Abgeifen" kann auch an
einer anderen Stelle in der Verzögerungseinheit 38 erfolgen oder
kann an mehreren Stellen in Abhängigkeit von der zu implementie
renden funktionellen Logik 24 erfolgen. Die genaue Position in
der Verzögerungseinheit 38, wo die Leitung 39 abgegriffen wird,
wird vorzugsweise so gewählt, daß die Signale, die auf der Lei
tung 33 von dem Impulszuordner erzeugt worden sind, bezüglich der
(nicht dargestellten) externen Schaltung, welche die Arbeitsweise
der Einrichtung 20 initiiert, phasenabgeglichen sind, wie anhand
von Fig. 1 ausgeführt ist.
In dem dritten konfigurierbaren Logikblock (CLB) 151 erhält das
Übertrag-Logikelement(3) 151 den Impuls und läßt ihn zu einem
Übertrag-Logikelement in einem nächsten CLB durch, usw., bis der
Impuls zu dem Übertrag-Logikelement (n) in einem "n-ten" CLB 154
durchgekommen ist. Konfigurierbare Logikblöcke (CLBs) zwischen
dem dritten CLB 150 und dem "n-ten" CLB 154 haben vorzugsweise
dieselbe Ausführung und haben vorzugsweise dasselbe Interface,
wie der dritte CLB 150. In dem dritten CLB 151 ist der Funktions
generator(3) 152 für den Betrieb der Verzögerungseinheit 38 nicht
erforderlich, da der dritte CLB 151 nicht abgegriffen wird, um
den Impuls zu einem Bestimmungsort außerhalb der Verzögerungsein
heit 38 zu leiten. Folglich kann der Funktionsgenerator(3) 152
vorzugsweise dazu verwendet werden, einen Teil der Operationen
der funktionellen Logik 24 auszuführen.
In dem n-ten CLB erhält das Übertrag-Logikelement (n) 155 den Im
puls und läßt ihn zu dem Funktionsgenerator(n) 156 durch, welcher
den Impuls invertiert und den invertierten Impuls auf der Leitung
37 als das Rückkopplungssignal 132 abgibt. Aufgrund dieser Im
pulsinversion hat der selbstgetaktete Oszillator Übergänge zwi
schen logisch "1" und logisch "0". Wie dem Fachmann geläufig,
könnte der Impuls statt dessen auch von dem Funktionsgenerator(1)
140 invertiert worden sein.
Die Betriebsfrequenz der Verzögerungseinheit 38 kann durch Erhö
hen oder Erniedrigen der Anzahl an in Reihe geschalteten Über
trag-Logikelementen (d. h. durch Ändern des Wertes von "n") geän
dert werden. In einer alternativen Ausführungsform könnte "n"
null sein, mit der Folge, daß der Startimpuls, das Rückkopplungs
signal 132 und das Ausgangssignal 133 der Verzögerungseinheit
daßelbe Signal werden. In einer weiteren alternativen Ausfüh
rungsform könnte die Betriebsfrequenz der Verzögerungseinheit 38
durch einen zusätzlichen Signalweg über einen oder mehrere Funk
tionsgeneratoren geändert werden.
In noch einer weiteren Ausführungsform könnte die Betriebsfre
quenz der Verzögerungseinheit 38 mit Hilfe von Signalleitweg-Ressourcen
in der RLD einige genau definierte Verzögerungs-Kenn
daten haben, modifiziert oder eingestellt werden. Dem Fachmann
ist bekannt, daß die Verzögerungseinheit 38 auch in nicht-rekon
figurierbaren Einheiten mit Hilfe einer Logik untergebracht wer
den könnte, in welcher einzelne Elemente eine bekannte maximale
Signalübertragungsverzögerung haben.
In Fig. 2D ist ein Blockdiagramm einer bevorzugten Ausführungsform
des Impulszählers 40 der Erfindung dargestellt. Der Impulszähler
40 ist aus einer Anzahl Logikeinheiten 160, 162, 164 gebildet
(die vorzugsweise in einem FPGA der Xilinx XC4000-Serie mit Hilfe
der Elemente ROM16x1, FDR und AND3B3 gebildet sind), wobei die
logischen Einrichtungen 160, 162, 164 so, wie in Fig. 2D darge
stellt, angeordnet miteinander verbunden sind. Die ROMs 160 sind
mit Flip-Flops 162 verbunden, um dadurch das Impulszählen durch
zuführen. Ein vorliegender Zustandscode Q3, Q2, Q1, Q0 der Flip-Flops
162 wird dazu verwendet, den Impulszählstand zu erzeugen,
wobei ein vorliegender Zustandscode dem Haltesignal 134 ent
spricht. Der Impulszähler 40 inkrementiert, bis der Rücksetz(1)-Impuls
105 auf der Leitung 43 erhalten wird. Die Codes, die in
den ROM′s 160 zu speichern sind, werden entsprechend der folgen
den Tabelle erzeugt, in welcher der vorliegende sowie der nächste
Zustand wiedergegeben sind:
In Fig. 2E ist ein Blockdiagramm einer bevorzugten Ausführungsform
einer Sequenz-Gate-Logik 42 der Erfindung dargestellt. Die Se
quenz-Gate-Logik 42 ist durch eine Anzahl Logikeinheiten gebil
det, die so, wie in Fig. 2E dargestellt, angeordnet und miteinan
der verbunden sind (die logischen Einheiten sind vorzugsweise
partiell in einer FPGA der Xilinx XC4000-Serie mit Hilfe der Ele
mente D3_8E, AND2B1, FD, FD_1, NOR2, OR8 und OR7) gebildet. Die
Sequenz-Gate-Logik 42 decodiert acht Zustände mit Hilfe einer An
zahl von Störungs-Überwachungsschaltungen 170, wie in Fig. 2E dar
gestellt ist. Das Decodieren erfolgt zeitlich in der Reihenfolge
des Impulszählens auf der Leitung 44. Der letzte Impulszählzu
stand (d. h. (0,0,0)) wird genau zu einem Zeitpunkt decodiert. Die
CLKs 46, 47, 48 werden durch ein "Oder-Schalten" der Ausgänge der
Störungsüberwachungsschaltung 170 erzeugt. Fachleuten, die den
Aufbau der FPGA kennen, ist bekannt, daß in alternativen Ausfüh
rungsformen der Sequenz-Gate-Logik 42 die verdrahteten ODER-Glie
der durch verdrahtete UND-Glieder mit Hilfe einer DeMorganisation
der lokalen Zustandsdecodierer ersetzt werden. Die bevorzugten
Sequenz-Gate-Logik 42 weist eine gerade Anzahl von durch eine ne
gative Flanke getriggerten Flip-Flops und von durch eine positive
Flanke getriggerten Flip-Flops auf, die ein hocheffizientes dua
les Flip-Flop pro CLB-Packungsstrategie liefern, wobei gleiche
getaktete Flip-Flops verbunden sind.
In Fig. 3 ist ein Blockdiagramm einer bevorzugten Ausführungsform
einer funktionellen Logik 24 der Erfindung dargestellt. Die funk
tionelle Logik 24 weist einen Multiplexer (MUX) 50, einen par
tiellen Produktgenerator (PPG) 42, einen partiellen Produkt-Sum
mierer (PPS) 54 und eine Produktakkumulator (PA) 56 auf. Der Mul
tiplexer 50 erhält einen X-Bit-Multiplikanden auf der Leitung 21
und gibt eine S-Bit-Multiplikanden-Untergruppe entsprechend dem
Impulszählen auf der Leitung 44 ab, wie im einzelnen anhand von
Fig. 4 nachstehend beschrieben wird. Der PP-Generator 52 multipli
ziert den Y-Bit-Multiplikator auf der Leitung 23 mit der S-Bit-Multiplikanden-Untergruppe
und gibt einen Satz partieller Produk
te an den PP-Summierer 54 ab, wie im einzelnen nachstehend anhand
von Fig. 5 beschrieben wird.
Der PP-Summierer 54 verknüpft den Satz partieller Produkte und
gibt eine partielle Produktsumme an den Produktakkumulator 56
entsprechend dem PPS-CLK 98 auf der Leitung 46 ab, wie im einzel
nen anhand von Fig. 6 nachstehend beschrieben wird. Der P-Akkumu
lator 56 erhält einen Rücksetz(2)-Impuls 207 (siehe Fig. 8) auf
der Leitung 45 von der Startlogik 36 und setzt dementsprechend
dessen interne Flip-Flops (FFs) auf null. Vor dem Empfang dieses
Rücksetz(2)-Impulses 107 verbleibt ein vorheriges P-Bit-Produkt
auf der Leitung 25. Der P-Akkumulator 56 erzeugt eine Produktak
kumulation, indem die partielle Produktsumme zu einer Untergruppe
von Produkt-Akkumulationsbits addiert wird, und gibt ein P-Bit-Produkt
auf der Leitung 25 entsprechend dem PA-CLK (1,2,3) 99,
100, 101 (siehe Fig. 8) auf Leitungen 47 bis 49 ab, wie im einzel
nen anhand von Fig. 7 nachstehend beschrieben wird. Eine vollstän
dige Multiplikation X-Bit mal Y-Bit wird von der funktionellen
Logik 24 durchgeführt, nachdem jede S-Bit-Multiplikanden-Unter
gruppe mit dem Y-Bit-Multiplikator multipliziert und durch den P-Akkumulator
56 akkumuliert worden ist.
In Fig. 4 ist ein Blockdiagramm einer bevorzugten Ausführungsform
des Multiplexers (MUX) 50 in der funktionellen Logik 24 darge
stellt. Der MUX 50 weist einen ersten MUX 58 und einen zweiten
MUX 60 auf. Jeder MUX 58, 60 ist mit dem Eingangspuffer 22 über
die Leitung 21 verbunden, so daß jeder eine Hälfte des X-Bit-Mul
tiplikanden erhält. Der erste MUX 58 erhält die geradzahligen
Multiplikanden-Bits (d. h. 2⁰, 2², . . . 2¹⁴ für einen 16 Bit-Multi
plikanden) während der zweite MUX 60 die ungeradzahligen Multi
plikanden-Bits (d. h. 2¹, 2³, . . . 2¹⁵ für einen 16-Bit-Multipli
kanden) erhält. Jeder MUX 58, 60 erhält den Impulszählstand über
die Leitungen 44.
Im Verlaufe der Multiplikation von X-Bit mal Y-Bit wird der Im
pulszählstand von dem Anfangsimpulszählstand bis einschließlich
auf den höchsten Impulszählstand inkrementiert. Im Falle eines 16
Bit-Multiplikanden entspricht der Anfangsimpulszählstand vorzugs
weise (0,0,1) auf der Leitung 44, wobei "1" das niedrigstwertige
Bit (LSB) ist, und der höchste Impulszählstand vorzugsweise
(0,0,0) entspricht. Der Impulszählstand geht folglich von (0,0,1)
auf (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0), (1,1,1) und dann
(0,0,0).
Die ersten und zweiten Multiplexer 58, 60 geben eine S-Bit-Multi
plikanden-Untergruppe an den PP-Generator 52 ab. Folglich wird
eine 2-Bit-Multiplikanden-Untergruppe (2i und 2i+1) an den PPG 52
gesetzt, wobei das Bit 2i aus dem ersten MLJX 58 und das Bit 2i+1
aus dem zweiten MUX 60 gewählt wird. Für eine Multiplikation 16
Bit mal 16 Bit ist "S" gleich "2" und "i" ist eine ganze
Zahl, welche vorzugsweise von null bis vierzehn geht, wenn der Im
pulszählstand von (0,0,1) bis (0,0,0) reicht.
In Fig. 5 ist ein Blockdiagramm einer bevorzugten Ausführungsform
des partiellen Produktgenerators (PPG) 42 in der funktionellen
Logik dargestellt. Der PPG 52 weist eine erste Gruppe von par
tiellen Produktmultiplikatoren (PPMs) 51 und eine zweite Gruppe
von PPMs 53 auf, deren Eingänge miteinander verbunden sind, um
die S-Bit-Multiplikanden-Untergruppe von den ersten und zweiten
Multiplexern 58, 60 und dem Y-Bit-Multilikator auf der Leitung 23
aufzunehmen. Die Ausgänge der ersten und zweiten Gruppe von PPMs
51, 53 sind mit dem PPS 54 verbunden. Für eine Multikplikation 16
Bit mal 16 Bitt weist jede Gruppe von PPMs 51, 53 vier PPMs 2 Bit
mal 2 Bit auf, die parallen betrieben werden, so daß folglich
insgesamt 32 Bits nach jeder Multiplikation an den PPS 54 abgege
ben werden.
Jedes 2 Bit-Multiplikatorpaar von dem 16 Bit-Multiplikator auf
der Leitung 23 wird zu einem der acht PPMs geleitet und während
jeder partiellen Produkt-Multiplikationsoperation konstant gehal
ten. Für jeden Impulszählstand wird eine 2-Bit-Multiplikanden-Un
tergruppe (d. h. 2i und 2i+1) zu jedem der acht PPMs geleitet, wo
bei mit einem ersten 2-Bit-Multiplikandenpaar (2⁰ und 2¹) begon
nen wird, wenn der Impulszählstand auf eins gesetzt ist, und en
det mit einem letzten 2-Bit-Multiplikandenpaar (2¹⁴ und 2¹⁵),
wenn der Impulszählstand auf null gesetzt ist.
Wie in Fig. 5 zur Verdeutlichung dargestellt ist, sind die Spal
tenpositionen der zwei 16-Bit-Partialprodukte von der ersten und
zweiten Gruppe von PPMs 51, 53 vertikal ausgerichtet, wenn deren
Bits von dem PPS 54 addiert werden, wie es im Stand der Technik
bekannt ist. Das Bit 2° ist das niedrigswertige Bit (LSB) und das
Bit 2¹⁷ ist das höchstwertige Bit (MSB). Obwohl eine 16 Bit mal
16 Bit-Partialproduktgeneration beschrieben worden ist, weiß der
Fachmann, daß dieselbe Beschreibung analog auch bei dem allgemei
nen Fall einer Partialproduktgeneration von X-Bit mal Y-Bit gilt.
In Fig. 6 ist ein Blockdiagramm einer bevorzugten Ausführungsform
des PPS 54 in der funktionellen Logik 24 dargestellt. Der PPS 54
weist einen PPS-Addierer 24, eine PPS-Inkrementiereinheit 66 und
einen Satz PPS-Flip-Flops 68 auf. Der PPS 54 ist entsprechend ge
schaltet, um die zwei Partialprodukte zu erhalten, die von dem
PPG 52 erzeugt worden sind. Der PPS 54 addiert die zwei Partial
produkte und erzeugt eine Partialproduktsumme. Im Falle einer
Multiplikation 16 Bit mal 16 Bit werden die zwei LBSs (2⁰ bis 2¹)
von dem ersten Satz PPMs 51 unmittelbar von den PPS-Flip-Flops 68
aufgenommen; der PPS-Addierer 64 addiert 14 Bit (2² bis 2¹⁵) so
wohl von dem ersten als auch von dem zweiten Satz PPMs 51, 52;
die PPS-Inkrementiereinheit 66 nimmt die zwei MSBs (2¹⁶ bis 2¹⁶)
von dem zweiten Satz PPMs 53 und einen Übertrag von dem 14 Bit-PPS-Addierer
64 an; eine 18-Bit-Partialproduktsumme (2° bis 2¹⁷)
wird erzeugt und abgegeben. Die Partialproduktsumme, die sich aus
der Addition ergibt, wird in den PPS-Flip-Flops 68 entsprechend
einem PPS-CLK 98 auf der Leitung 46 gespeichert.
In Fig. 7 ist ein Blockdiagramm einer bevorzugten Ausführungsform
des P-Akkumulators (PA) 58 in der funktionellen Logik 24 darge
stellt. Der PA 56 weist einen PA-Addierer 70, der entsprechend
geschaltet ist, um die Partialproduktsumme von dem PPS 54 aufzu
nehmen und um Akkumulationen durchzuführen, eine PA-Inkrementier
einheit 71, und eine Gruppe von PA-Flip-Flops 72 bis 88 auf, um
schließlich das P-Bit-Produkt zu speichern.
Für eine Multiplikation 16 Bit mal 16 Bit ist der PA-Addierer 70
ein 16 Bit-Addierer; die PA-Inkrementiereinheit 71 ist eine 2
Bit-Inkrementiereinheit und der Satz PA-Flip-Flops 72 bis 88
weist einen ersten Flip-Flop-Satz 72, einen zweiten Flip-Flop-Satz
74, einen dritten Flip-Flop-Satz 76, einen vierten Flip-Flop-Satz
78, einen fünften Flip-Flop-Satz 80, einen sechsten
Flip-Flop-Satz 82, einen siebten Flip-Flop-Satz 84, einen achten
Flip-Flop-Satz 86 und einen neunten Flip-Flop-Satz 88 auf, um ein
32 Bit-Produkt (p⁰ bis p³¹, wobei p⁰ das LSB und p³¹ das MSB ist)
zu speichern.
Die zwei LSBs 2⁰ bis 2¹ von einer ersten Partialproduktsumme, die
von dem PPS 54 erhalten worden sind, werden in dem zweiten Flip-
Flop-Satz 74 entsprechend der Anstiegsflanke des PA-CLK(1) 99 auf
der Leitung 47 gespeichert, wodurch die zwei LSBs (p⁰ bis p¹) des
32 Bit-Produkts entstehen. Eine 16 Bit-Produktakkumulations-Un
tergruppe (Bits 22 bis 217 von dem Ausgang des 16 Bit-Addierers
70 und der 2 Bit-Inkrementiereinheit 71) wird in dem ersten Flip-Flop-Satz
72 entsprechend der Vorderflanke des PA-CLK(2) 100 auf
der Leitung 48 gespeichert. Der 16 Bit-Addierer 70 addiert Bits
20 bis 215 jeder Partialproduktsumme, die von dem PPS 54 erhalten
worden ist, zu der 16 Bit-Produktakkumulations-Untergruppe, um
eine Produktakkumulation zu erzeugen (Bits 20 bis 216 von dem
Ausgang des 16 Bit-Addierers 70 und der 2 Bit-Inkrementiereinheit
71).
Die Bits 22 bis 217 jeder Produktakkumulation werden dann die
Produktakkumulations-Untergruppe, welche zu dem ersten Flip-Flop-Satz
72 rückgekoppelt wird, während Produktakkumulationsbits 2⁰
und 2¹ sequentiell nach jeder Produktakkumulation über die drit
ten bis neunten Flip-Flop-Sätze 76 bis 88 entsprechend einer An
stiegsflanke des PA-CLK(3) 101 auf der Leitung 49 verschoben wer
den. Folglich werden nach einem PA-CLK(1) 99-Wechsel Bits p⁰ und
p¹ in dem zweiten Flip-Flop-Satz 74 gespeichert. Nach acht PA-CLK(2)
100-Wechsel werden Bits p¹⁶ bis p³¹ in dem ersten Flip-Flop-Satz
72 gespeichert und nach sieben PA-CLK(3) 101-Wechsel
werden Bits p² und p³ in dem neunten Flip-Flop-Satz 88, Bits p⁴
und p⁵ in dem achten Flip-Flop-Satz 86, Bits p⁶ und p⁷ in dem
siebten Flip-Flop-Satz 84, Bits p⁸ und p⁹ in dem sechsten Flip-
Flop-Satz 82, Bits p¹⁰ und p¹¹ in dem fünften Flip-Flop-Satz 80,
Bits p¹² und p¹³ in dem vierten Flip-Flop-Satz 78 und Bits p¹⁴
und p¹⁵ werden in dem dritten Flip-Flop-Satz 76 gespeichert. Das
32 Bit-Produkt (Bit p⁰ bis p³¹) wird dann an den Ausgangspuffer
26 über die Leitung 25 abgegeben.
In Fig. 8 ist ein bevorzugtes Zeitdiagramm 89 der Arbeitsweise der
Erfindung dargestellt. Die in Fig. 8 dargestellten Wellenformen
sind idealisiert und folglich werden logische Wirkungen betrach
tet, die im Augenblick eines Zustandsübergangs auftreten. Das
Zeitdiagramm 89 weist ein Startsignal 90, ein Q-Startsignal 128,
ein Start-Impulssignal 130, ein Rückkopplungssignal 132, ein Aus
gangssignal 133 der Verzögerungseinheit, ein Haltesignal 134, ein
Rücksetz(1)-Signal 91, ein MuX(0)-Signal 92, ein MUX(1)-Signal
94, ein MUX(2)-Signal 96, ein PPS-CLK-Signal 98, ein Rücksetz(2)-Signal
97, ein PA-CLK(1)-Signal 99, ein PA-CLK(2)-Signal 100, ein
PA-CLK(3)-Signal 101, ein Produktsignal 102, ein erstes Start
signal 104, ein nächstes Startsignal (106) ein erstes PPS-CLK-Signal
108, ein ersten PA-CLK(1)-Signal 109, ein erstes PA-CLK(2)-Signal
110, ein erstes PA-CLK(3)-Signal 112 und eine Pro
duktberechnungszeit 114 auf.
Das erste Startsignal 104 wird von dem Impulszuordner 34 über die
Leitung 32 erhalten, wie in Fig. 2A dargestellt ist. Entsprechend
dem ersten Startsignal 104 initialisiert die Startlogik 36 das
MUX(0) 92 (das LSB)-, das MUX(1) 94- und das MUX(2) 96 (das MSB)-Signal
bei (0,0,1), indem der Rücksetz(1)-Impuls 105 über die
Leitung 143 und die MUX(0) 92-, MUX(1) 94- und die MUX(2)96-Signale
an den MUX 50 über die Leitung 44 gesendet werden. Dementspre
chend wählt der MUX 50 das erste 2 Bit-Multiplikandenpaar (2⁰ bis
2¹) für eine Multiplikation 16 Bit mals 16 Bit aus, wie oben er
örtert ist. Die Sequenz-Gate-Logik 72 verzögert das Abgeben des
ersten PPS-CLK-Signals 108 an den PPS 54, bis eine erste 18 Bit-Partialproduktsumme
an den Eingängen der PPS-Flip-Flops 68 vor
handen ist.
Nachdem die ersten 18 Bit-Partialproduktsumme in den PPS-Flip-Flops
68 gespeichert worden ist, werden die MUX(0) 92-, MUX(1)
94- und die MUX(2)-Signale in einen nächsten Zustand (d. h.
(0,1,0)) in Vorbereitung einer nächsten 18 Bit-Partialproduktsum
me inkrementiert. Die Sequenz-Gate-Logik 42 verzögert auch das
Aussenden des ersten PA-CLK(1)-Signals 109 über die Leitung 47,
bis die erste 18 Bit-Partialproduktsumme an den Eingängen des
zweiten Flip-Flop-Satzes 74 anliegt. Unmittelbar bevor der PA-CLK(1)-Impuls
109 über die Leitung 47 abgegeben wird, erzeugt die
Startlogik 36 den Rücksetz(2)-Impuls 107 über die Leitung 45, um
das vorherige P-Bit-Produkt 102 zu löschen.
Der PA-CLK(1) 99 wird einmal bei jeder vollständigen 16 Bit mal
16 Bit-Multiplikationsoperation gewechselt bzw. umgeschaltet. Das
erste PA-CLK(2)-Signal 110 auf der Leitung 48 wird nur erzeugt,
nachdem eine erste 16 Bit-Produktakkumulations-Untergruppe an den
Eingängen 72 des ersten Flip-Flop-Satzes 72 anliegt, worauf der
PA-CLK(2) 100 geschaltet wird, jedesmal wenn eine nächste 16 Bit-Produktakkumulations-Untergruppe
an den Eingängen des ersten
Flip-Flop-Satzes 72 anliegt. Der PA-CLK(2) 100 wird acht mal pro
jeder vollständigen 16 Bit mal 16 Bit-Multiplikationsoperation
umgeschaltet. Das erste PA-CLK(3)-Signal 112 auf der Leitung 49
wird nur erzeugt, nachdem eine zweite 18 Bit-Produktakkumulation
an den Eingängen des dritten Flip-Flop-Satzes 76 anliegt, worauf
der PA-CLK(3) 101 umgeschaltet wird, jedesmal, wenn eine nächste
18 Bit-Produktakkumulation an den Eingängen des dritten Flip-Flop-Satzes
72 anliegt.
Der PA-CLK(3) 101 wird sieben mal für jede vollständige 16 Bit
mal 16 Bit-Multiplikationsoperation umgeschaltet. Infolge der be
kannten Übertragungsverzögerungen, die in einer konkreten Ein
richtung vorliegen, die in der vorliegenden Erfindung verwendet
wird, ist das Produkt 102 bekannt, das in der Produktberechnungs
zeit 114 zu berechnen ist. Folglich gibt es einen ersten Zeit
punkt nach dem ersten Startsignal 104, an welchem das zweite
Startsignal 106 an den Impulszuordner 34 abgegeben werden kann,
nachdem sich das Produktsignal 102 stabilisiert hat. Obwohl nur
eine 16 Bit mal 16 Bit-Multiplikation beschrieben worden ist,
weiß der Fachmann, daß in entsprechender Weise eine X-Bit mal Y-Bit-Multiplikation
durchgeführt werden kann.
In Fig. 9A ist eine Matrix von bevorzugten Partialproduktadditio
nen für eine 16 Bit mal 16 Bit-Multiplikation dargestellt, die
gemäß der Erfindung durchgeführt worden ist. Für diese 16 Bit mal
16 Bit-Multiplikation geht der PPS 54 über acht Summiervorgänge
und der PA 56 geht über sieben Akkumulationen, so daß sich
schließlich ein 32 Bit-Produktausgangssignal auf der Leitung 25
an dem Ausgangspuffer 26 ergibt, wie vorstehend ausgeführt ist.
In der obersten Zeile der Matrix ist eine Spalte für jedes Bit
des 32 Bit-Produkts dargestellt, wobei das niedrigistwertige Bit
(LSB) 2⁰ und das höchstwertige Bit (MSB) 2³¹ ist. Bezüglich der
Teile der Matrix, die mit "I" bis "VIII" bezeichnet sind, ist ein
Abgleich der acht Partialprodukt-Multiplikatoren 62 in dem PPG 52
dargestellt. Im Teil "I" werden Bits 2⁰ und 2¹ der 16 Bit-Multi
plikanden mit dem 16 Bit-Multiplikator multipliziert; im Teil
"II" werden Bits 2² und 2³ des 16 Bit-Multiplikanden mit dem 16
Bit-Multiplikator multipliziert, und so weiter, bis im Teil
"VIII" Bits 2¹⁴ und 2¹⁵ der 16 Bit-Multiplikanden mit dem 16 Bit-Multiplikator
multipliziert werden. Der P-Akkumulator 56 addiert
alle acht Teil in der Weise, die in der Matrix wiedergegeben ist,
wodurch sich das 32 Bit-Produkt ergibt.
In Fig. 9B ist eine Matrix von bevorzugten Partialprodukt-Additio
nen für eine gemäß der Erfindung durchgeführte 8 Bit mal 8 Bit-Multiplikation
dargestellt. Für die 8 Bit mal 8 Bit-Multiplika
tion würde der PPS 54 entsprechend ausgelegt, um über vier Sum
mierungen zu gehen und der PR 56 würde über drei Akkumulationen
gehen, so daß sich schließlich ein 16 Bit-Produkt ergibt, das
über die Leitung 25 an den Aufgabepuffer 26 abgegeben wird, wie
oben ausgeführt ist. In der obersten Zeile der Matrix ist eine
Spalte für jedes Bit des 16 Bit-Produkts dargestellt, wobei das
LSB 2⁰ und MSB 2¹⁵ ist. An den Teilen der Matrix, die mit "1"
bis "IV" bezeichnet sind, ist ein Abgleich der nunmehr vier Par
tialprodukt-Multiplikatoren 62 in dem PPG 52 dargestellt. Im
Teil"I" werden Bits 2⁰ und 2¹ des 8 Bit-Multiplikanden mit dem 8
Bit-Multiplikator multipliziert; in Teil "II" werden Bits 2² und
2³ des 8 Bit-Multiplikanden mit dem 8 Bit-Multiplikator multipli
ziert, usw., bis im Teil "IV" Bits 2⁶ und 2⁷ des 8 Bit-Multipli
kanden mit dem 8 Bit-Multiplikator multipliziert werden. Der PA
56 addiert vier Teile in der in der Matrix angegebenen Weise, wo
durch sich dann das 16 Bit-Produkt ergibt.
In Fig. 10 ist ein Ablaufdiagramm eines bevorzugten Verfahrens für
eine selbst-getaktete algorithmische Ausführung dargestellt. Das
bevorzugte Verfahren beginnt beim Schritt 200, bei welchem ein
Wechsel des Referenztaktes, während das eingegebene Freigabe
signal auf der Leitung 29 logisch "1" gesetzt wird, bewirkt, daß
der Eingangspuffer 22 die Eingangsdaten über Leitungen 21 und 23
an die Eingänge der funktionellen Logik 24 synchron mit dem Refe
renztakt-Umschalten in der vorstehend beschriebenen Weise über
trägt. Als nächstes erzeugt beim Schritt 202 und entsprechend dem
Übergang des Startsignals 30 von logisch "0" auf logisch "1" auf
der Leitung 32 der Impulszuordner 34 eine Maximalraten-Impulsfol
ge über die Leitung 33, um die funktionelle Logik 24 mit einer
Rate in Abhängigkeit von der Algorithmus-Ausführungszeit für die
funktionelle Logik 24, aber unabhängig von dem Referenztakt auf
der Leitung 28 anzusteuern.
Schritt 202 wird im einzelnen anhand von Fig. 11 beschrieben. Beim
Schritt 204 erzeugt die funktionelle Logik 24 Ausgangsdaten auf
der Leitung 25 entsprechend der Maximalraten-Impulsfolge auf der
Leitung 33. Schritt 204 wird im einzelnen anhand von Fig. 12 be
schrieben. Beim Schritt 206 werden die Ausgangsdaten von der
funktionellen Logik 24 über die Leitung 25 und in den Ausgang
spuffer 26 synchron mit und entsprechend einem Umschalten des Re
ferenztaktes auf der Leitung 28 übertragen, während das Ausgangs
freigabesignal auf der Leitung 31 auf logisch "1" gesetzt wird,
wie vorstehend beschrieben ist. Nach dem Schritt 206 endet das
bevorzugte Verfahren.
In Fig. 11 ist ein Ablaufdiagramm eines bevorzugten Verfahrens zum
Erzeugen einer Impulsfolge (Schritt 202 der Fig. 10) dargestellt.
Das bevorzugte Verfahren beginnt bei Schritt 250, wobei die
Startlogik 36 den Zustand des Startsignals auf der Leitung 32 und
des Haltesignals auf der Leitung 41 überwacht. Bei Schritt 252
geht, wenn das Startsignal 90 auf logisch "1" übergeht, während
das Haltesignal auf logisch "0" gesetzt bleibt, das Verfahren auf
Schritt 254 über; sonst geht das Verfahren auf Schritt 250 zu
rück. Beim Schritt 254 initialisiert die Startlogik 36 den Im
pulszähler 40, wie oben ausgeführt ist. Beim Schritt 255 über
trägt die Startlogik 36 einen Startimpuls an die Verzögerungsein
heit 38, wie oben beschrieben ist.
Als nächstes inkrementiert beim Schritt 256 der Impulszähler 40
das Impulszählsignal (d. h. MUX(0) 92, MUX(1) 94 und MUX(2) 96 für
eine 16 Bit mal 16 Bit-Multiplikation) entsprechend dem Aus
gangssignal 133 der Verzögerungseinheit, wie oben beschrieben
ist. Die Stelle in der Verzögerungseinheit 38, an welcher das
Ausgangssignal 133 der Verzögerungseinheit abgegriffen wird, kann
geändert werden, um die Zeitsteuerimpulse des Impulszuordners 34
bezüglich einer externen Schaltungsanordnung, die mit der Ein
richtung 20 verbunden ist, in der Phase abzugleichen.
Beim Schritt 258 erzeugt die Sequenz-Gate-Logik 42 das PPS-CLK-Signal
98 und die PA-CLK-Signale 99 bis 101 entsprechend dem Im
pulszählsignal in der vorstehend beschriebenen Weise. Beim
Schritt 260 geht, wenn das Impulszählsignal gleich dem größten
Impulszählsignal ist, das Verfahren auf Schritt 262 über; andern
falls geht das Verfahren auf Schritt 256 zurück. Beim Schritt 262
stoppt der Impulszähler 40 mit dem Übertragen von Startimpulsen
an die Verzögerungseinheit 38, indem das Haltesignal auf Leitung
41 auf logisch "1" gesetzt wird. Nach dem Schritt 262 endet das
bevorzugte Verfahren.
In Fig. 12 ist ein Ablaufdiagramm eines bevorzugten Verfahrens zum
Erzeugen von Ausgangsdaten entsprechend der Impulsfolge (Schritt
204 in Fig. 12) dargestellt. Das bevorzugte Verfahren beginnt bei
Schritt 300, wobei der MUX 50 den X-Bit-Multiplikanden eingibt,
der PPG 52 den Y-Bit-Multiplikator eingibt und die Startlogik 36
die Partialproduktsumme und die Produktakkumulation auf null ini
tialisiert, wie oben beschrieben ist. Beim Schritt 302 wählt der
MUX 50 eine nächste S-Bit-Multiplikanden-Untergruppe in der vor
beschriebenen Weise aus. Beim Schritt 304 multipliziert der PPG
52 eine aktuelle S-Bit-Multiplikanden-Untergruppe (d. h. die ak
tuelle Untergruppe ist die nächste Untergruppe, die beim Schritt
302 gewählt wurde) mit dem Y-Bit-Multiplikator, um die an den PPS
54 abgegebenen Partialprodukte zu erzeugen, wie vorstehend be
schrieben ist.
Als nächstes erzeugt beim Schritt 306 der PPS 54 die Partialpro
duktsumme und gibt sie in der vorbeschriebenen Weise an den PA 56
ab. Beim Schritt 308 addiert der PA 56 die Partialproduktsumme zu
der Produktakkumulation, wie oben beschrieben ist. Beim Schritt
310 kehrt, wenn eine nächste, S-Bit-Multiplikanden-Untergruppe
noch mit dem Y-Bit-Multiplikator zu multiplizieren ist, das Ver
fahren auf Schritt 302 zurück; andernfalls geht das Verfahren auf
Schritt 312 über. Beim Schritt 312 gibt der PA 56 ein P-Bit-Pro
dukt an den Ausgangspuffer 26 ab. Nach dem Schritt 312 endet das
bevorzugte Verfahren.
Die Erfindung wird vorzugsweise in Verbindung mit einem Rechensy
stem verwendet. Beim Stand der Technik sind Schaltungen, die ent
sprechend ausgelegt sind, um hochschnelle Implementierungen von
ganz speziellen Algorithmen durchzuführen, aus mehreren Schal
tungsschichten gebildet. Jede Schaltungsschicht erhält einen Satz
Signale, führt ganz bestimmte Operationen durch und gibt einen
Satz Ergebnisse synchron mit einem Taktimpuls ab. Signale werden
von einer Schaltungsschicht zur anderen übertragen. Solche bekann
ten Schaltungsausführungen erfordern oft viele Schaltungsschich
ten, wozu eine große Anzahl von Hardware-Ressourcen verwendet
werden müssen, was unerwünscht ist.
Im Unterschied zum Stand der Technik wird bei der Erfindung ein
Algorithmus ausgeführt, indem eine minimale Anzahl von Hardware-Ressourcen
immer wieder mit einer maximalen selbstgetakteten Rate
verwendet wird, um ein Ergebnis zu erhalten. Das heißt, dieselbe
Menge an Hardware-Ressourcen wird wiederholt nach Empfang des
Startsignals bis zum Vorliegen des Haltesignals verwendet, um ein
Ergebnis zu erzielen. Gemäß der Erfindung ist ein Mittel geschaf
fen, um einen Algorithmus mit Hilfe erheblich weniger Hardware-Ressourcen
durchzuführen, als sie bei den bekannten Hochlei
stungsschaltungen erforderlich sind. Dies ist insbesondere vor
teilhaft, wenn ein oder mehrere Versionen der Erfindung in einer
RLD implementiert werden.
Die vorstehend beschriebene Erfindung liefert viele weitere Vor
teile gegenüber den derzeit existierenden logischen Konzeptionen.
Die Erfindung ist insbesondere vorteilhaft im Hinblick auf ak
tuelle asynchrone Logikkonzeptionen. Beispielsweise erfordert die
vorliegende Erfindung nicht das Erzeugen von "Abschlußsignalen"
bei Beenden von operationellen Aufgaben; sie hat bekannte und
voraussagbare Abschlußzeiten; sie erfordert keine externen Takt
elemente, sondern hat statt dessen ihr eigenes integrales Impuls
zuordner-Zeitsteuerelement; sie hat Abschlußzeiten, welche daten
unabhängig sind; sie kann sich synchron mit einer externen Schal
tungsanordnung kombinieren lassen; sie kann kohärent Phasendaten
mit einer externen Schaltungsanordnung austauschen; sie erhöht
nur eine zusätzliche örtlich festgelegte Schaltungskomplexität,
wenn die Verzögerung in dem Zeitsteuerelement zunimmt; sie ist
sehr leicht in einer synchronen externen Schaltungsanordnung un
terzubringen und sie beeinflußt das Leistungsvermögen nur einer
örtlich begrenzten Schaltungsgruppe statt eines ganzen Systems
einer externen Schaltungsanordnung.
Modifikationen der Erfindung können alternative Ausführungsformen
ergeben. Beispielsweise könnte die Verzögerungseinheit 28 ent
sprechend ausgelegt werden, damit ein Impuls entsprechend der
RDL-Konfiguration kontinuierlich zurückgeführt wird; dadurch ent
fällt die Startlogik 36. In einer derartigen Ausführungsform
könnte ein RS-Flip-Flop einen Multiplexer freigeben, damit er das
Ausgangssignal der Verzögerungseinheit zu dem Impulszähler und
der Sequenz-Gate-Logik 32 entsprechend dem Startsignal passieren
läßt. Somit ist die funktionelle Logik nicht auf den Fall einer
selbst getakteten Multipliziereinheit beschränkt. Die funktionel
le Logik kann entsprechend modifiziert werden, um Funktionen ein
schließlich eines selbstgetakteten Teilers, eines selbstgetakte
ten Convolvers oder eines selbst getakteten Signalprozessors zu
schaffen, ohne hierauf beschränkt zu werden.
Claims (21)
1. Einrichtung für eine selbstgetaktete algorithmische Ausführung
mit
einer funktionellen Logikeinheit, die vorgesehen ist, um Ein gangsdaten mit einer ersten Rate zu erhalten, um Ausgangsdaten mit einer zweiten Rate unabhängig von der ersten Rate zu erzeu gen, und welche ferner vorgesehen ist, um die Ausgangsdaten mit der ersten Rate zu übertragen, und
einem Impulszuordner zum Erzeugen einer selbstgetakteten Impuls folge, welche der zweiten Rate entspricht, wobei der Impulszuord ner entsprechend geschaltet ist, um die funktionelle Logik zu steuern.
einer funktionellen Logikeinheit, die vorgesehen ist, um Ein gangsdaten mit einer ersten Rate zu erhalten, um Ausgangsdaten mit einer zweiten Rate unabhängig von der ersten Rate zu erzeu gen, und welche ferner vorgesehen ist, um die Ausgangsdaten mit der ersten Rate zu übertragen, und
einem Impulszuordner zum Erzeugen einer selbstgetakteten Impuls folge, welche der zweiten Rate entspricht, wobei der Impulszuord ner entsprechend geschaltet ist, um die funktionelle Logik zu steuern.
2. Einrichtung nach Anspruch 1, bei welcher die funktionelle Lo
gikeinheit eine vorausgesagte Ausführungszeit hat und die zweite
Rate eine maximale Rate ist, die auf der vorausgesagten Ausfüh
rungszeit basiert.
3. Einrichtung nach Anspruch 1, bei welcher die funktionelle Lo
gikeinheit und der Impulszuordner in einer Gruppe von Hardware-Ressourcen
festgelegt sind, um sympathetisch auf Betriebsparame
terschwankungen der Hardware-Ressourcen anzusprechen.
4. Einrichtung nach Anspruch 1, bei welcher der Impulszuordner
eine Verzögerungseinheit aufweist, welche eine selbstgetaktete
Schwingung erzeugt.
5. Einrichtung nach Anspruch 4, bei welcher die Verzögerungsein
richtung eine Gruppe von in Reihe geschalteter Logikeinheiten
aufweist, wobei jede Logikeinheit eine vorhersehbare Übertra
gungszeit hat.
6. Einrichtung nach Anspruch 5, bei welcher die Gruppe in Reihe
geschalteter Logikeinheiten eine Gruppe von Übertrag-Logikelemen
ten aufweist.
7. Einrichtung nach Anspruch 5, bei welcher die Gruppe Übertrag-Logikelemente
eine Übertrag-Übertragungslogik in einer rekonfigu
rierbaren Logikeinheit aufweist.
8. Einrichtung nach Anspruch 4, bei welcher der Impulszuordner
ferner eine Sequenz-Gate-Logik zum Erzeugen von Taktsignalen auf
weist, wobei die Sequenz-Gate-Logik entsprechend geschaltet ist,
um ein Ausgangssignal der Verzögerungseinheit aufzunehmen und
entsprechend geschaltet ist, um einen Satz Taktsignale an die
funktionale Logik zu liefern, um dadurch eine zweite Rate zu
schaffen.
9. Einrichtung nach Anspruch 8, bei welcher der Impulszuordner
ferner einen Impulszähler zum Erzeugen eines Impulszählsignals
aufweist, wobei der Impulszähler entsprechend geschaltet ist, um
das Ausgangssignal der Verzögerungseinheit zu erhalten.
10. Einrichtung nach Anspruch 9, bei welcher der Impulszuordner
ferner eine Startlogik zum Erzeugen eines Startimpulses aufweist,
um den Betrieb der Verzögerungseinheit zu initiieren.
11. Einrichtung nach Anspruch 4, bei welcher die funktionelle
Logik eine Multipliziereinheit aufweist, welche aufweist:
einen Multiplexer, der entsprechend geschaltet ist, um einen Mul tiplikanden zu erhalten;
einen Partialprodukt-Generator, der entsprechend geschaltet ist, um einen Multiplikator und eine Untergruppe von Bits in dem Mul tiplikanden zu erhalten, um einen Satz Partialprodukte zu erzeu gen;
einen Partialproduktsummierer, der entsprechend geschaltet ist, um den Satz Partialprodukte zu erhalten, um eine Partialprodukt summe zu erzeugen, und
einen Produktakkumulator, der entsprechend geschaltet ist, um die Partialproduktsumme zu erhalten, um die Partialproduktsummen zu akkumulieren, um ein Produkt zu erzeugen,
wobei die Multipliziereinheit entsprechend der selbstgetakteten Schwingung, die von der Verzögerungseinheit erzeugt worden ist, gesteuert wird.
einen Multiplexer, der entsprechend geschaltet ist, um einen Mul tiplikanden zu erhalten;
einen Partialprodukt-Generator, der entsprechend geschaltet ist, um einen Multiplikator und eine Untergruppe von Bits in dem Mul tiplikanden zu erhalten, um einen Satz Partialprodukte zu erzeu gen;
einen Partialproduktsummierer, der entsprechend geschaltet ist, um den Satz Partialprodukte zu erhalten, um eine Partialprodukt summe zu erzeugen, und
einen Produktakkumulator, der entsprechend geschaltet ist, um die Partialproduktsumme zu erhalten, um die Partialproduktsummen zu akkumulieren, um ein Produkt zu erzeugen,
wobei die Multipliziereinheit entsprechend der selbstgetakteten Schwingung, die von der Verzögerungseinheit erzeugt worden ist, gesteuert wird.
12. Impulszuordner in einer rekonfigurierbaren Logikeinheit, wo
bei der Impulszuordner eine Gruppe von Übertrag-Logikelementen
aufweist, die entsprechend geschaltet sind, um eine selbstgetak
tete Schwingung zu erzeugen.
13. Einrichtung zum Steuern eines selbstgetakteten algorithmi
schen Ausführungssystems, welches eine funktionelle Logik auf
weist, die Eingangsdaten erhält und Ausgangsdaten entsprechend
einem Satz von Steuersignalen erzeugt, wobei die Einrichtung auf
weist:
eine Startlogik, die geschaltet ist, um ein Startsignal zu erhal ten und dementsprechend einen Startimpuls zu erzeugen;
eine Verzögerungseinheit, die geschaltet ist, um den Startimpuls zu erhalten und um dementsprechend ein Ausgangssignal an der Ver zögerungseinheit und ein Rückkopplungssignal zu erzeugen;
einen Impulszähler, der geschaltet ist, um das Ausgangssignal der Verzögerungseinheit zu erhalten und um ein Impulszählsignal zu erzeugen und um selektiv ein Haltesignal zu erzeugen, und
eine Sequenz-Gate-Logik, die entsprechend geschaltet ist, um ein Impulszählsignal zu erhalten und um dementsprechend den Satz Steuersignale zu erzeugen,
wobei die Startlogik entsprechend geschaltet ist, um das Rück kopplungssignal zu erhalten und um dementsprechend den Startim puls zu regenieren, wenn das Haltesignal nicht erzeugt worden ist.
eine Startlogik, die geschaltet ist, um ein Startsignal zu erhal ten und dementsprechend einen Startimpuls zu erzeugen;
eine Verzögerungseinheit, die geschaltet ist, um den Startimpuls zu erhalten und um dementsprechend ein Ausgangssignal an der Ver zögerungseinheit und ein Rückkopplungssignal zu erzeugen;
einen Impulszähler, der geschaltet ist, um das Ausgangssignal der Verzögerungseinheit zu erhalten und um ein Impulszählsignal zu erzeugen und um selektiv ein Haltesignal zu erzeugen, und
eine Sequenz-Gate-Logik, die entsprechend geschaltet ist, um ein Impulszählsignal zu erhalten und um dementsprechend den Satz Steuersignale zu erzeugen,
wobei die Startlogik entsprechend geschaltet ist, um das Rück kopplungssignal zu erhalten und um dementsprechend den Startim puls zu regenieren, wenn das Haltesignal nicht erzeugt worden ist.
14. Verfahren für eine selbstgetaktete algorithmische Ausführung
bei einer Einrichtung, die eine Gruppe funktioneller Logikeinhei
ten und einen Impulszuordner aufweist, wobei das Verfahren die
Schritte aufweist:
Erhalten von Eingangsdaten mit einer ersten Rate;
Erzeugen einer selbstgetakteten Impulsfolge mit einer zweiten Ra te, die von der ersten Rate unabhängig ist;
Verarbeiten der Eingangsdaten der zweiten Rate entsprechend der Impulsfolge und
Ausgeben der Ausgangsdaten mit der ersten Rate.
Erhalten von Eingangsdaten mit einer ersten Rate;
Erzeugen einer selbstgetakteten Impulsfolge mit einer zweiten Ra te, die von der ersten Rate unabhängig ist;
Verarbeiten der Eingangsdaten der zweiten Rate entsprechend der Impulsfolge und
Ausgeben der Ausgangsdaten mit der ersten Rate.
15. Verfahren nach Anspruch 14, bei welchem der Schritt, Erzeugen
der Impulsfolge, mit einer maximalen Rate durchgeführt ist, die
von einer Ausführungszeit abhängt, die der Gruppe funktionaler
Logikeinheiten zugeordnet ist.
16. Verfahren nach Anspruch 14, bei welchem der Schritt, Erhalten
von Eingangssignalen, synchron mit einem Referenztakt durchge
führt wird;
der Schritt Erzeugen mit einer selbst-getakteten Rate durchge führt wird, die von dem Referenztakt unabhängig ist, und der Schritt Ausgeben synchron mit dem Referenztakt durchgeführt wird.
der Schritt Erzeugen mit einer selbst-getakteten Rate durchge führt wird, die von dem Referenztakt unabhängig ist, und der Schritt Ausgeben synchron mit dem Referenztakt durchgeführt wird.
17. Verfahren nach Anspruch 16, bei welchem der Schritt, Erzeugen
die Schritte aufweist:
Erzeugen einer selbstgetakteten Schwingung entsprechend einem Taktsignal und
Aufrechterhalten der selbstgetakteten Schwingung, bis ein Halte signal erhalten wird.
Erzeugen einer selbstgetakteten Schwingung entsprechend einem Taktsignal und
Aufrechterhalten der selbstgetakteten Schwingung, bis ein Halte signal erhalten wird.
18. Verfahren nach Anspruch 17, bei welchem der Schritt Erzeugen
ferner die Schritte aufweist:
Erzeugen eines Impulszählsignals und
Erzeugen eines Satzes von Steuersignalen, um das Verarbeiten der Eingangsdaten mit einer Rate zu steuern, welche der Periode der selbstgetakteten Schwingung entspricht.
Erzeugen eines Impulszählsignals und
Erzeugen eines Satzes von Steuersignalen, um das Verarbeiten der Eingangsdaten mit einer Rate zu steuern, welche der Periode der selbstgetakteten Schwingung entspricht.
19. Verfahren nach Anspruch 14, bei welchem der Schritt Verarbei
ten die Unterschritte aufweist:
Erzeugen einer Gruppe von Partialprodukten, indem ein Multiplika tor und eine Untergruppe von Bits in einem Multiplikandem multi pliziert werden;
Erzeugen einer Partialproduktsumme durch Addieren der Gruppe Par tialprodukte;
Akkumulieren der Partialproduktsumme mit einer vorherigen Par tialproduktsumme und
Wiederholen jedes Unterschritts in dem Verarbeitungsschritt, bis ein Multiplikationsprodukt erzeugt ist.
Erzeugen einer Gruppe von Partialprodukten, indem ein Multiplika tor und eine Untergruppe von Bits in einem Multiplikandem multi pliziert werden;
Erzeugen einer Partialproduktsumme durch Addieren der Gruppe Par tialprodukte;
Akkumulieren der Partialproduktsumme mit einer vorherigen Par tialproduktsumme und
Wiederholen jedes Unterschritts in dem Verarbeitungsschritt, bis ein Multiplikationsprodukt erzeugt ist.
20. Einrichtung für eine selbstgetaktete algorithmische Ausfüh
rung mit
einer Einrichtung zum Erhalten von Eingangsdaten mit einer ersten Rate;
einer Einrichtung zum Erzeugen einer selbstgetakteten Impulsfolge mit einer zweiten Rate, wobei die zweite Rate unabhängig von der ersten Rate ist;
einer Einrichtung zum Verarbeiten der Eingangsdaten mit der zwei ten Rate, um Ausgangsdaten entsprechend der selbst-getakteten Im pulsfolge zu erzeugen, und eine Einrichtung zum Abgeben der Ausgangsdaten mit der ersten Ra te.
einer Einrichtung zum Erhalten von Eingangsdaten mit einer ersten Rate;
einer Einrichtung zum Erzeugen einer selbstgetakteten Impulsfolge mit einer zweiten Rate, wobei die zweite Rate unabhängig von der ersten Rate ist;
einer Einrichtung zum Verarbeiten der Eingangsdaten mit der zwei ten Rate, um Ausgangsdaten entsprechend der selbst-getakteten Im pulsfolge zu erzeugen, und eine Einrichtung zum Abgeben der Ausgangsdaten mit der ersten Ra te.
21. Einrichtung nach Anspruch 20, bei welcher die Erzeugungsein
richtung eine Einrichtung zum Erzeugen einer selbstgetakteten
Schwingung aufweist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/590,499 US5854918A (en) | 1996-01-24 | 1996-01-24 | Apparatus and method for self-timed algorithmic execution |
US590499 | 2000-06-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19702326A1 true DE19702326A1 (de) | 1997-07-31 |
DE19702326B4 DE19702326B4 (de) | 2005-02-24 |
Family
ID=24362511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19702326A Expired - Fee Related DE19702326B4 (de) | 1996-01-24 | 1997-01-23 | Einrichtung und Verfahren für eine selbstgetaktete algorithmische Ausführung |
Country Status (4)
Country | Link |
---|---|
US (1) | US5854918A (de) |
JP (1) | JP3784476B2 (de) |
CN (1) | CN1103951C (de) |
DE (1) | DE19702326B4 (de) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
DE19651075A1 (de) | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
DE19654595A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen |
DE19654846A1 (de) | 1996-12-27 | 1998-07-09 | Pact Inf Tech Gmbh | Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.) |
JP3961028B2 (ja) | 1996-12-27 | 2007-08-15 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | データフロープロセッサ(dfp)の自動的なダイナミックアンロード方法並びに2次元または3次元のプログラミング可能なセルストラクチャを有するモジュール(fpga,dpga等) |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
DE19704728A1 (de) * | 1997-02-08 | 1998-08-13 | Pact Inf Tech Gmbh | Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
US6317842B1 (en) * | 1999-02-16 | 2001-11-13 | Qlogic Corporation | Method and circuit for receiving dual edge clocked data |
CN1378665A (zh) | 1999-06-10 | 2002-11-06 | Pact信息技术有限公司 | 编程概念 |
US6675306B1 (en) | 2000-03-10 | 2004-01-06 | Ricoh Company Ltd. | Method and apparatus for phase-lock in a field programmable gate array (FPGA) |
JP2004506261A (ja) | 2000-06-13 | 2004-02-26 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | パイプラインctプロトコルおよびct通信 |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
WO2005045692A2 (en) | 2003-08-28 | 2005-05-19 | Pact Xpp Technologies Ag | Data processing device and method |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
ATE478381T1 (de) | 2001-06-20 | 2010-09-15 | Richter Thomas | Verfahren zur bearbeitung von daten |
US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US7434191B2 (en) | 2001-09-03 | 2008-10-07 | Pact Xpp Technologies Ag | Router |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
WO2003060747A2 (de) | 2002-01-19 | 2003-07-24 | Pact Xpp Technologies Ag | Reconfigurierbarer prozessor |
WO2003071432A2 (de) | 2002-02-18 | 2003-08-28 | Pact Xpp Technologies Ag | Bussysteme und rekonfigurationsverfahren |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
WO2004021176A2 (de) | 2002-08-07 | 2004-03-11 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
WO2004038599A1 (de) | 2002-09-06 | 2004-05-06 | Pact Xpp Technologies Ag | Rekonfigurierbare sequenzerstruktur |
US7007114B1 (en) | 2003-01-31 | 2006-02-28 | Qlogic Corporation | System and method for padding data blocks and/or removing padding from data blocks in storage controllers |
US7870346B2 (en) | 2003-03-10 | 2011-01-11 | Marvell International Ltd. | Servo controller interface module for embedded disk controllers |
US7457903B2 (en) | 2003-03-10 | 2008-11-25 | Marvell International Ltd. | Interrupt controller for processing fast and regular interrupts |
US7039771B1 (en) | 2003-03-10 | 2006-05-02 | Marvell International Ltd. | Method and system for supporting multiple external serial port devices using a serial port controller in embedded disk controllers |
US7492545B1 (en) | 2003-03-10 | 2009-02-17 | Marvell International Ltd. | Method and system for automatic time base adjustment for disk drive servo controllers |
US7139150B2 (en) | 2004-02-10 | 2006-11-21 | Marvell International Ltd. | Method and system for head position control in embedded disk drive controllers |
US8166217B2 (en) | 2004-06-28 | 2012-04-24 | Marvell International Ltd. | System and method for reading and writing data using storage controllers |
US9201599B2 (en) | 2004-07-19 | 2015-12-01 | Marvell International Ltd. | System and method for transmitting data in storage controllers |
US7757009B2 (en) | 2004-07-19 | 2010-07-13 | Marvell International Ltd. | Storage controllers with dynamic WWN storage modules and methods for managing data and connections between a host and a storage device |
US8032674B2 (en) | 2004-07-19 | 2011-10-04 | Marvell International Ltd. | System and method for controlling buffer memory overflow and underflow conditions in storage controllers |
US7386661B2 (en) | 2004-10-13 | 2008-06-10 | Marvell International Ltd. | Power save module for storage controllers |
US7240267B2 (en) | 2004-11-08 | 2007-07-03 | Marvell International Ltd. | System and method for conducting BIST operations |
US7802026B2 (en) | 2004-11-15 | 2010-09-21 | Marvell International Ltd. | Method and system for processing frames in storage controllers |
US7609468B2 (en) | 2005-04-06 | 2009-10-27 | Marvell International Ltd. | Method and system for read gate timing control for storage controllers |
US8250503B2 (en) | 2006-01-18 | 2012-08-21 | Martin Vorbach | Hardware definition method including determining whether to implement a function as hardware or software |
US8473911B1 (en) | 2010-07-23 | 2013-06-25 | Xilinx, Inc. | Documentation generation from a computer readable symbolic representation |
US9520180B1 (en) | 2014-03-11 | 2016-12-13 | Hypres, Inc. | System and method for cryogenic hybrid technology computing and memory |
US9768762B2 (en) | 2014-09-25 | 2017-09-19 | Taiwan Semiconductor Manufacturing Company, Ltd. | Integrated circuit and method of testing |
US10579492B2 (en) * | 2017-12-29 | 2020-03-03 | Intel Corporation | Device, system and method for identifying a source of latency in pipeline circuitry |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3222536A (en) * | 1961-02-02 | 1965-12-07 | Burroughs Corp | Time-controlled logical circuit |
US3358128A (en) * | 1964-08-31 | 1967-12-12 | Burroughs Corp | Delay line arithmetic circuit |
US3553446A (en) * | 1966-08-04 | 1971-01-05 | Honeywell Inc | Carry determination logic |
US4322643A (en) * | 1980-04-28 | 1982-03-30 | Rca Corporation | Digital phase comparator with improved sensitivity for small phase differences |
JPS6055438A (ja) * | 1983-09-05 | 1985-03-30 | Matsushita Electric Ind Co Ltd | 2入力加算器 |
NL8401308A (nl) * | 1984-04-24 | 1985-11-18 | Philips Nv | Voloptelschakeling. |
US4707800A (en) * | 1985-03-04 | 1987-11-17 | Raytheon Company | Adder/substractor for variable length numbers |
US4737926A (en) * | 1986-01-21 | 1988-04-12 | Intel Corporation | Optimally partitioned regenerative carry lookahead adder |
US4876660A (en) * | 1987-03-20 | 1989-10-24 | Bipolar Integrated Technology, Inc. | Fixed-point multiplier-accumulator architecture |
US4841468A (en) * | 1987-03-20 | 1989-06-20 | Bipolar Integrated Technology, Inc. | High-speed digital multiplier architecture |
US5047975A (en) * | 1987-11-16 | 1991-09-10 | Intel Corporation | Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode |
US5153848A (en) * | 1988-06-17 | 1992-10-06 | Bipolar Integrated Technology, Inc. | Floating point processor with internal free-running clock |
US4982352A (en) * | 1988-06-17 | 1991-01-01 | Bipolar Integrated Technology, Inc. | Methods and apparatus for determining the absolute value of the difference between binary operands |
US4972362A (en) * | 1988-06-17 | 1990-11-20 | Bipolar Integrated Technology, Inc. | Method and apparatus for implementing binary multiplication using booth type multiplication |
US5173617A (en) * | 1988-06-27 | 1992-12-22 | Motorola, Inc. | Digital phase lock clock generator without local oscillator |
JP2968289B2 (ja) * | 1989-11-08 | 1999-10-25 | 株式会社リコー | 中央演算処理装置 |
US5018093A (en) * | 1990-01-02 | 1991-05-21 | Ibm Corporation | High performance self-checking adder having small circuit area |
US5038117A (en) * | 1990-01-23 | 1991-08-06 | Hewlett-Packard Company | Multiple-modulator fractional-N divider |
US5175453A (en) * | 1990-08-15 | 1992-12-29 | Lsi Logic Corporation | Configurable pulse generator, especially for implementing signal delays in semiconductor devices |
US5109394A (en) * | 1990-12-24 | 1992-04-28 | Ncr Corporation | All digital phase locked loop |
US5483478A (en) * | 1992-10-16 | 1996-01-09 | Xilinx, Inc. | Method and structure for reducing carry delay for a programmable carry chain |
US5566079A (en) * | 1992-11-12 | 1996-10-15 | Vlsi Technology, Inc. | Parameterized generic multiplier complier |
US5511181A (en) * | 1993-04-26 | 1996-04-23 | Apple Computer, Inc. | Polycyclic timing system and apparatus for pipelined computer operation |
US5450607A (en) * | 1993-05-17 | 1995-09-12 | Mips Technologies Inc. | Unified floating point and integer datapath for a RISC processor |
US5553276A (en) * | 1993-06-30 | 1996-09-03 | International Business Machines Corporation | Self-time processor with dynamic clock generator having plurality of tracking elements for outputting sequencing signals to functional units |
JPH0738423A (ja) * | 1993-07-23 | 1995-02-07 | Mitsubishi Electric Corp | 分周回路 |
US5710910A (en) * | 1994-09-30 | 1998-01-20 | University Of Washington | Asynchronous self-tuning clock domains and method for transferring data among domains |
US5576982A (en) * | 1994-10-17 | 1996-11-19 | Unisys Corporation | Fast significant bit calculator and its application to integer multiplication and division |
US5502403A (en) * | 1994-12-20 | 1996-03-26 | Cypress Semiconductor Corp. | High speed configuration independent programmable macrocell |
US5566123A (en) * | 1995-02-10 | 1996-10-15 | Xilinx, Inc. | Synchronous dual port ram |
-
1996
- 1996-01-24 US US08/590,499 patent/US5854918A/en not_active Expired - Lifetime
- 1996-12-03 JP JP32321396A patent/JP3784476B2/ja not_active Expired - Fee Related
-
1997
- 1997-01-23 DE DE19702326A patent/DE19702326B4/de not_active Expired - Fee Related
- 1997-01-23 CN CN97102100.7A patent/CN1103951C/zh not_active Expired - Fee Related
Non-Patent Citations (2)
Title |
---|
NOVAK, J.H., BRUNVALD, E.: Using FFGAs to Prototypw a Self-Timed Floating Point Co- Processor. In: Proceedings of the IEEE 1994 Custom Integrated Circuits Conference, 1994, S. 85-88 * |
ROSENBERGER, F.U. (u.a.): Q-Modules: Internally Clocked Delay-Insensitive Modules. In: IEEE Transactions on Computers, Vol. 37, No. 9, 1988, S. 1005-1018 * |
Also Published As
Publication number | Publication date |
---|---|
JPH09204236A (ja) | 1997-08-05 |
DE19702326B4 (de) | 2005-02-24 |
CN1162153A (zh) | 1997-10-15 |
CN1103951C (zh) | 2003-03-26 |
US5854918A (en) | 1998-12-29 |
JP3784476B2 (ja) | 2006-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19702326A1 (de) | Einrichtung und Verfahren für eine selbstgetaktete algorithmische Ausführung | |
DE102005051478B4 (de) | Flashdatenspeichervorrichtung | |
EP0010173B1 (de) | Halbleiterplättchen mit verbesserter Prüfbarkeit der monolithisch hochintegrierten Schaltungen | |
DE69534812T2 (de) | Programmierbare logische Vorrichtung, die mehr als eine Konfiguration speichert, und Mittel zum Umschalten der Konfiguration | |
DE60202749T2 (de) | Schnittstelle von synchron zu asynchron zu synchron | |
DE19839627B4 (de) | Digitaler Signalprozessor | |
DE60002571T2 (de) | Elastische schnittstelleanornung und verfahren dafür | |
DE2658248C2 (de) | ||
DE69435034T2 (de) | Verfahren ind vorrichtung zur durchfuehrung einer schnellen hadamard transform | |
DE102005010779B4 (de) | Schlüsseldispositionsvorrichtung und System zur Ver-/Entschlüsselung von Daten | |
WO2006092448A2 (de) | Verfahren und vorrichtung zum berechnen einer polynom-multiplikation, insbesondere für die elliptische kurven-kryptographie | |
DE102020113922A1 (de) | Multipliziererschaltungsanordnung mit reduzierter latenz für sehr grosse zahlen | |
DE10124351B4 (de) | Verfahren und Vorrichtung zum Verarbeiten zweier Datenoperanden in einem Prozessor | |
DE2457553A1 (de) | Asynchroner taktgeber | |
DE4129657C2 (de) | Programmierbare Frequenzteiler-Einrichtung | |
DE60118815T2 (de) | Schaltung zur Regenerierung von einem Taktsignal aus mindestens zwei Synchronisierungsbits | |
DE60101169T2 (de) | Logikschaltkreis mit Pipeline-Struktur | |
DE3138698C2 (de) | ||
DE10016611A1 (de) | Prüfsystem | |
DE102004013480A1 (de) | Zufallszahlengenerator und Verfahren zum Erzeugen von Zufallszahlen | |
CH657487A5 (de) | Funktionsgenerator zur erzeugung einer anzahl von sich wiederholenden digitalen wellenformen. | |
DE10018988B4 (de) | Hochgeschwindigkeits-Pipelinevorrichtung und Verfahren zum Erzeugen von Steuersignalen dafür | |
DE60219155T2 (de) | Verfahren und Einrichtung zur Phasenjustierung zweier Taktsignale | |
WO2006029986A1 (de) | Rechnereinrichtung mit rekonfigurierbarer architektur zur aufnahme eines globalen zellularen automaten | |
DE19803216C2 (de) | Mikrocomputer, der zur Ausgabe von Impulsen in der Lage ist |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |