DE19702326B4 - Einrichtung und Verfahren für eine selbstgetaktete algorithmische Ausführung - Google Patents

Einrichtung und Verfahren für eine selbstgetaktete algorithmische Ausführung Download PDF

Info

Publication number
DE19702326B4
DE19702326B4 DE19702326A DE19702326A DE19702326B4 DE 19702326 B4 DE19702326 B4 DE 19702326B4 DE 19702326 A DE19702326 A DE 19702326A DE 19702326 A DE19702326 A DE 19702326A DE 19702326 B4 DE19702326 B4 DE 19702326B4
Authority
DE
Germany
Prior art keywords
rate
logic
bit
pulse
self
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.)
Expired - Fee Related
Application number
DE19702326A
Other languages
English (en)
Other versions
DE19702326A1 (de
Inventor
Michael A. Menlo Park Baxter
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of DE19702326A1 publication Critical patent/DE19702326A1/de
Application granted granted Critical
Publication of DE19702326B4 publication Critical patent/DE19702326B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled

Abstract

Einrichtung für eine selbstgetaktete algorithmische Ausführung mit einer funktionellen Logikeinheit (24), die mittels eines Eingangspuffers (22) Eingangsdaten mit einer ersten Rate empfängt, mit den empfangenen Eingangsdaten Operationen mit einer zweiten Rate durchführt, um Ausgangsdaten zu erzeugen, und die Ausgangsdaten mittels eines Ausgangspuffers (26) mit einer zur ersten Rate synchronen Rate ausgibt, und einer Impulsfolgenerzeugungseinrichtung (34), die eine selbstgetaktete Impulsfolge erzeugt, die der zweiten Rate entspricht, und die die zweite Rate an die funktionelle Logikeinheit anlegt, wobei die zweite Rate unabhängig von der ersten Rate festgelegt wird.

Description

  • Die Erfindung betrifft eine Einrichtung und Verfahren zum Erzeugen von internen Takt- bzw. Zeitsteuersignalen für Hochleistungscomputersysteme. Inbesondere betrifft die Erfindung eine Einrichtung 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 Hauptzeitbasis 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 Synchronisierung für alle Speicher zu wirken, die in dem System verwendet sind. In anderen Systemen können mehrere zusätzliche unterschiedlich phasengesteuerte Taktsignale verwendet werden, um gesonderte Gruppen von Speicher anzusteuern, die jedoch alle in herkömmlicher 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öglichen Geschwindigkeit durchlaufen wird. In Pipelinesystemen ist beispielsweise die funktionelle Logik auf die Speicher verteilt, so daß eine Systemdesign-Beschränkung bei einer minimalen Sollausfü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 Pipeline-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 funktionellen 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, superharmonisches Taktsignal haben, welches die Mikrooperationen des Pipelinesynchronismus mit der langsameren (Daten-)Stromrate verschachtelt, die an den Eingangs- und Ausgangsanschlüssen der Pipeline 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 Zeitsteuerintervall 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 rekonfigurierbaren Logikeinrichtungen (RLDs), wie feldprogrammierbaren Gate-Arrays (FPGAs) durchzuführen, da die Übertragungsverzögerungen 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 "Werkzeugen", die verwendet worden sind, um die tatsächlichen RLD-Verbindungen zu erzeugen, ein Register-Transfer-Sprachen-(RTL) Paradigma angewendet. 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 Masterzeitbasis synchronisierten Taktsystemen zu vermeiden, indem funktionelle Computeraufgaben in eine Reihe von zeitlich asynchron gesteuerten Unteraufgaben aufgeteilt werden. Leider haben bestehende asynchrone Logikausführungen auch viele Einschränkungen: so müssen beispielsweise "Abschlußsignale" bei Beendigen von funktionellen Aufgaben erzeugt werden; sie haben variable oder unbekannte 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 synchronen externen Schaltung zusammenzubringen, und es ist schwierig, die gesamte systemweite Performance mit dem Netz von externen taktgebündelten Schaltungen zusammenzubringen.
  • Aus NOVAK J. H., BRUNVALD E.: "Using FPGAs to Prototype a Self-Timed Floating Point Co-Processor, In: Proceedings of the IEEE 1994 Custom Integrated Circuits Conference, 1994, S. 85–88" sind FPGAs bekannt. Die dort beschriebene Schaltung Arbeitet mit einem System mittels sogenannter „handshaking"-Signale zusammen. Das dort beschriebenen System stellt ein asynchrones System dar. Aufgrund der „handshaking"-Prozesse ergeben sich Verzögerungen zwischen den einzelnen Stufen.
  • Aus ROSENBERGER F. U.: Q-Modules: internally Clocked Delay-Insensitive Modules. In: IEEE Transactions on Computers, Vol. 37, No. 9, 1988, S. 1005–1018" sind sogenannte Q-Module bekannt. Die dort beschriebenen Schaltung ist selbstgetaktet. Bedingungen, wie eine logische Verzögerung müssen erfüllt sein. Die Frequenz der Q-Module ist langsamer als die Taktfrequenz, die durch den Taktgenerator vorgegeben ist.
  • Aufgabe der Erfindung ist es eine Einrichtung und ein entsprechendes Verfahren zum Ausführen algorithmischer Operationen bereit zu stellen, in die bzw. bei denen Daten mit einem vorgegebenen Referenztakt eingehen und die Daten mit einem zum Referenztakt synchronen Takt ausgegeben werden, wobei die Einrichtung dazu in der Lage sein soll, die Daten schneller zu verarbeiten, als dies mit dem Referenztakt möglich wäre, wobei je nach durchzuführendem Algorithmus jeweils ein optimales Ergebnis erzielt werden soll.
  • Vorstehende Aufgabe wird durch die Gegenstände der Ansprüche 1 und 13 erreicht. Vorteilhafte Weiterbildungen gehen aus den Unteransprüchen hervor.
  • Vorteilhaft weist eine Einrichtung eine funktionelle Logikanordnung, einen Referenz-Takteingang und einen Impulszuordner auf. Die funktionelle Logikanordnung erhält Eingangsdaten synchron mit einem Referenztakt, der an dem Referenz-Takteingang erhalten worden ist, führt algorithmische Berechnungen an den eingegebenen Daten mit einer Maximalrate, welche von dem Impulszuordner festgelegt worden ist, entsprechend den physikalischen Kenndaten der funktionellen Logikanordnung durch, erzeugt Ausgangsdaten und überträgt die Ausgangsdaten synchron mit dem Referenztakt. Die Maximalrate, die mittels des Impulszuordners eingestellt worden ist, ist von dem Referenztakt unabhängig.
  • Vorteilhaft weist ein Verfahren für eine selbstgetaktete algorithmische Ausführung die Schritte auf. Übertragen von eingegebenen Daten an eine Logikanordnung synchron mit einem Referenztakt; Erzeugen einer Impulsfolge mit einer Maximalrate zum Ansteuern der funktionellen Logikanordnung mit einer Rate, die von einer Algorithmus-Ausführungszeit für die funktionelle Logikanordnung abhängt, von dem Referenztakt aber unabhängig ist; Erzeugen 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ührungsformen unter Bezugnahme auf die anliegenden Zeichnungen im einzelnen erläutert. Es zeigen:
  • 1 ein Blockdiagramm einer bevorzugten Ausführungsform einer Einrichtung für eine selbstgetaktete algorithmische Ausführung;
  • 2A ein Blockdiagramm einer bevorzugten Ausführungsform eines Impulszuordners gemäß der Erfindung;
  • 2B ein Blockdiagramm einer bevorzugten Ausführungsform einer Startlogik in dem Impulszuordner;
  • 2C ein Blockdiagramm einer bevorzugten Ausführungsform einer Verzögerungseinheit in dem Impulszuordner;
  • 2D ein Blockdiagramm einer bevorzugten Ausführungsform eines Impulszählers in dem Impulszuordner;
  • 2E ein Blockdiagramm einer bevorzugten Ausführungsform einer Sequenz-Gate-Logik in dem Impulszuordner;
  • 3 ein Blickdiagramm einer bevorzugten Ausführungsform einer funktionellen Logik gemäß der Erfindung;
  • 4 ein Blockdiagramm einer bevorzugten Ausführungsform eines Multiplexers in der funktionellen Logik;
  • 5 ein Blockdiagramm einer bevorzugten Ausführungsform eines partiellen Produktgenerators in der funktionellen Logik;
  • 6 ein Blockdiagramm einer bevorzugten Ausführungsform einer partiellen Produktsummiereinheit in der funktionellen Logik;
  • 7 ein Blockdiagramm einer bevorzugten Ausführungsform eines Produktakkumulators in der funktionellen Logik;
  • 8 ein bevorzugten Zeitsteuerdiagramm, das die Arbeitsweise der Erfindung wiedergibt;
  • 9A eine Matrix, die bevorzugte partielle Produktadditionen für eine 16 Bit mal 16 Bit-Multiplikation gemäß der Erfindung wiedergibt;
  • 9B eine Matrix, die bevorzugte partielle Produktadditionen für eine 8 Bit mal 8 Bit-Multiplikation der Erfindung wiedergibt;
  • 10 ein Ablaufdiagramm eines bevorzugten Verfahrens für eine selbstgetaktete algorithmische Ausführung;
  • 11 ein Ablaufdiagramm eines bevorzugten Verfahrens zum Erzeugen einer Impulsfolge, und
  • 12 ein Ablaufdiagramm eines bevorzugten Verfahrens zum Erzeugen von Ausgangsdaten entsprechend der Impulsfolge.
  • Die vorliegende Erfindung betrifft eine Verfahren und eine Einrichtung für eine selbstgetaktete algorithmische Ausführung. Durch eine Paarbildung einer Verzögerungseinheit mit einer funktionellen Logikanordnung, die ausgelegt ist, um einen ausgewählten Algorithmus auszuführen, wird gemäß der Erfindung der ausgewählte Algorithmus mit der schnellstmöglichen Geschwindigkeit unabhängig von irgendwelchen Referenztakten durchgeführt, welche andere funktionelle Logikanordnungen bzw. -gruppen ansteuern. Folglich brauchen im Unterschied zu bekannten Zeitsteuereinrichtungen und -Verfahren charakteristische Zeitsteuerkenndaten für eine funktionelle Logikanordnung, welche den Algorithmus durchfü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 funktionellen Logikanordnung basiert, welche den Algorithmus entsprechend dem Erzeugen eines Satzes von selbstgetakteten Impulsen durchfü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 Hardware-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 fundamentalen 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 Logikanordnung, welche einen Algorithmus durchführt, so daß die funktionelle 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 bekannt, 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ährend 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 Verbindungswirkungen zwischen der funktionellen Logik und Speichervorrichtungen beeinträchtigt, und viertens beim Stand der Technik der Nachdruck auf funktionelle Logik Gestaltungen stark beeinflussen, 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 Logikeinheit (RLD) dargestellt, wie beispielsweise eine feldprogrammierbaren Gate-Array (FPGA), der Xilinx XC4000-Serie (Xilinx, San Jose, Kalifornien). Rekonfigurierbare Logikeinheiten (RLDs) weisen 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 Konfigurationsdatenbestandes oder eines Konfigurations-Bitstroms. In einem vorgegebenen konfigurierbaren Logikblock (CLB) werden ganz bestimmte logische Funktionen über die Funktionsgeneratoren entsprechend dem Konfigurationsbitstrom erzeugt.
  • Jeder Funktionsgenerator hat eine charakteristische stabile Signalausbreitungsverzögerung. Beispielsweise haben in einem konfigurierbaren 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 dritter Funktionsgenerator (Typ "H") hat eine Ausbreitungsverzögerung von annähernd 2,5 ns. Die Übertraglogikelemente weisen bekanntlich eine Übertrag-Ausbreitungslogik auf, die entsprechend ausgelegt ist, um sehr kleine stabile Übertragungsverzögerungen zu haben. 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 funktionelle 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 Inertialverzö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übertragung im wesentlichen unabhängig von der Impulsbreite ist. Vorteilhafterweise sind Inertialverzögerungen stabile, gut gesteuerte Verzögerungen. Der Fachmann erkennt daher, daß die vorliegende Erfindung nicht in einer rekonfigurierbaren Logikeinheit (RLD) ausgeführt zu werden braucht, sondern stattdessen auch in anderen herkömmlichen bekannten Logikeinheiten ausgeführt werden kann.
  • Obwohl in der vorliegenden Beschreibung eine funktionelle Logikeinheit beschrieben ist, welche eine X-Bit mal Y-Bit-Multiplikation ausführt, die ein P-Bit-Produkt ergibt, (wobei X, Y und P ganze Zahlen sind), weiß der Fachmann, daß die funktionelle Logikeinheit auch so ausgelegt sein könnte, um eine große Anzahl alternativer Algorithmen durchzuführen. Derartige alternative Algorithmen können Schritte aufweisen, um jede Art von arithmetischen, logischen, grafischen, wortverarbeitenden, signalverarbeitenden 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-Einheit zu schaffen (beispielsweise Cross-Barschalter in einem FPGA).
  • Zur Verdeutlichung zeigen 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 weniger 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 anzusprechen.
  • In 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 synchrone Zustandseinrichtung (state machine) 30 und einen Impulszuordner 34 auf. Der Eingangspuffer 22 ist eine bekannte Einrichtung, 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 Refererenztakt wird vorzugsweise mit Hilfe eines Taktmechanismus ausgeführt, der in der US-Patentanmeldung SN 08/501,970 "System und Methode zum phasensychronen frequenzflexiblen Takten und Nachrichtenübermitteln" beschrieben ist. Selbstverständlich kann der Referenztakt stattdessen auch mit einer bekannten Takterzeugungseinrichtung 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 Referenztakt abhängig ist. Die Zeit, welche von der funktionellen Logik 24 gefordert wird, um den Multiplikationsalgorithmus durchzuführen, ist die Algorithmus-Ausführungszeit.
  • Die Übertragungsverzögerungen in der funktionellen Logik 24 bestimmen deren Algorithmus-Ausführungszeit und werden üblicherweise basierend auf einem Satz von darin enthaltenen Logikvorrichtungen berechnet. Die funktionelle Logik 24 gibt ein P-Bit-Produkt über eine Leitung 25 an den Ausgangspuffer 26 ab. Einzelheiten der funktionellen Logik 24 werden nachstehend anhand von 3 beschrieben. Der Ausgangspuffer 26 ist ein bekannter Puffer, 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 Einrichtung, welche ein Startsignal 90 (siehe 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 logischen "1"-Zustand gehalten hat. Die synchrone Zustandseinrichtung 30 wartet zwei Referenztaktwechsel ab, bevor sie das Startsignal 90 in einen logischen Zustand "1" setzt, so daß der Eingangspuffer 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 Leitung 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 2A beschrieben. Sobald die Einrichtung 20 in einer konkreten 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 Ausgabedaten 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 Impulszuordner 34 vorzugsweise ein integraler Bestandteil der funktionalen 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 angepaßt und die funktionelle Logik 24 wird von dem Impulszuordner 34 weder "übertaktet" noch "untertaktet".
  • In 2A ist ein Blockdiagramm einer bevorzugten Ausführungsform eines Impulszuordners 34 gemäß der Erfindung dargestellt. Der Impulszuordner 34 weist eine Startlogik 36, eine Verzögerungseinheit 38, einen Impulszähler 40 und eine Sequenz-Gatelogik 42 auf. Die Impulsrate, -dauer und -periodizität (wenn überhaupt) des Impulszuordners 34 werden vorzugsweise für die funktionelle Logik 24 optimiert, welche er ansteuert. Der Impulszuordner 34 ist ebenfalls vorzugsweise mit Hilfe logischer Einrichtungen ausgeführt, die der funktionellen Logik 24 angenähert sind, um so in entsprechender Weise auf Temperatur- und Alterungswirkungen anzusprechen, 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 spezifische Untergruppen der funktionellen Logik 34 mit verschiedenen Raten und zu verschiedenen Zeiten während der Operation der funktionellen Logik 24 anzusteuern. In einer solchen alterntiven Ausführungsform würde jeder der Impulszuordner 34 vorzugsweise den Startimpuls 104 erhalten.
  • Wenn das Startsignal 90 auf der Leitung 32 auf logisch "1" übergeht, erzeugt die Startlogik 36 einen Rücksetz(1)-Impuls 105 (siehe 8) auf einer Leitung 48 und einen Startimpuls auf einer Leitung 35. Der Rücksetz(1)-Impuls 105 initialisiert den Impulszähler 40. Einzelheiten der Startlogik 36 werden nachstehend anhand von 2B angegeben. Die Verzögerungseinheit 38 erhält den Startimpuls und erzeugt nach einer ersten bekannten Verzögerung ein Ausgangssignal 133 der Verzögerungseinheit (siehe 8) auf der Leitung 39. Nach einer zweiten bekannten Verzögerung erzeugt die Verzögerungseinheit 38 ein Rückkopplungssignal 132 (siehe 8) auf einer Leitung 37. Einzelheiten der Verzögerungseinheit 38 werden nachstehend anhand von 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 duch 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ögerungszeit, die auf der Leitung 37 beruht, minimiert ist. In einer beispielhaften Ausführungsform mit einer FPGA der Xilinx XC4000-Serie 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 Haltesignals 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 Impulszä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 errreicht, 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ände aus Gründen, die nachstehend noch beschrieben werden. Folglich muß die Leitung 44 aus mindestens drei binären Bitleitungen gebildet sein, die hier als MUX(0) 92 (das niedrigstwertige Bit (LSB)), MUX(1) 94 und MUX(2) 96 (das höchstwertige Bit (MSB)) definiert sind (siehe 3). Einzelheiten des Impulszählers 40 werden nachstehend anhand von 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 8) auf einer Leitung 45, ein Partialprodukt-Summierer-Taktsignal (PPS-CLK) 98 (siehe 8), ein Produkt-Akkumulator-Takt(1)-Signal (PA-CLK(1)) 99 (siehe 8) auf einer Leitung 47, ein PA-CLK(2) 100 (siehe 8) auf einer Leitung 48 und eine PA-CLK(3) 101 (siehe 8) auf einer Leitung 49. Jeder der Takte 98 bis 101 ist vorzugsweise ein Rechtecksignal, das von dem Impulszählstand und dem Ausgangssignal 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 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. Einzelheiten der Sequenz-Gate-Logik 42 werden nachstehend anhand von 2E beschrieben.
  • In 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 2B dargestellt, verbunden sind. In einer beispielhaften Ausführungsform, die mit Hilfe einer FPGA der Xilinx XC4000-Serie realisiert ist, weist die Startlogik 36 herkömmliche Xilinx-Programmelemente FDS, AND2B1, AND2B0 und OR2B1 auf.
  • In 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 untergebracht und besteht aus Übertrag-Logikelementen in einem Satz aus "n" CLBs 138, 144, 150, 154, wobei n eine ganze Zahl ist. Vorzugsweise 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 beispielhaften 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. Forcieren eines Übertragsignals von einer vorhergehenden Stelle (carry-in Signal) entspricht.
  • Die Logik, die in jedem CLB 138, 144, 150, 154 verwendet ist, addiert eine bekannte Verzögerung (1,5 ns für ein Xilinx XC4000-Übertrag-Logik-Element und 4,5 ns für einen Xilinx XC4000-Funktionsgenerators des F-Typs) zu derjenigen der Verzögerungseinheit 38. Die Operationsfrequenz der Verzögerungseinheit 38 wird vorzugsweise 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 selbstgetakteter Impulszuordner 34 gefordert.
  • Die Anzahl an CLBs 138, 144, 150, 154, welche die Verzögerungseinheit 38 aufweisen, hängt daher von dem langsamsten Teil der funktionellen Logik 24 ab. Wenn der langsamste Teil der funktionellen Logik 24 "t" ns benötigt, dann weist die Verzögerungseinheit 38 "n" CLBs mit einer Gesamtverzögerung auf, die gleich einer Hälfte von "t" ns (d.h. einer halben Periode) ist. Da RLD in Realzeit umzuprogrammieren ist, kann die Verzögerung der Verzögerungseinheit 38 dynamisch während des Verlaufs der Verarbeitungsoperationen 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 Übertrag-Logikelement(1) 139 durch. Das Übertrag-Logikelement(1) 139 läßt dann den Impuls über eine Übertragleitung 142 zu einem zweiten CLB 144 durch. In der zweiten CLB 144 erhält das Übertrag-Logikelement(2) 145 den Impuls und läßt ihn zu dem Funktionsgenera tor(2) 146 durch und überträgt auch den Impuls über die Austragleitung 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 Leitung 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ögerungseinheit 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 implementierenden 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 Leitung 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 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 Funktionsgenerator(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ögerungseinheit 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 Impulsinversion hat der selbstgetaktete Oszillator Übergänge zwischen logisch "1" und logisch "0". Wie dem Fachmann geläufig, könnte der Impuls stattdessen 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 Übertrag-Logikelementen (d.h. durch Ändern des Wertes von "n") geändert werden. In einer alternativen Ausführungsform könnte "n" null sein, mit der Folge, daß der Startimpuls, das Rückkopplungssignal 132 und das Ausgangssignal 133 der Verzögerungseinheit dasselbe Signal werden. In einer weiteren alternativen Ausführungsform könnte die Betriebsfrequenz der Verzögerungseinheit 38 durch einen zusätzlichen Signalweg über einen oder mehrere Funktionsgeneratoren geändert werden.
  • In noch einer weiteren Ausführungsform könnte die Betriebsfrequenz der Verzögerungseinheit 38 mit Hilfe von Signalleitweg-Ressourcen in der RLD einige genau definierte Verzögerungs-Kenndaten haben, modifiziert oder eingestellt werden. Dem Fachmann ist bekannt, daß die Verzögerungseinheit 38 auch in nicht-rekonfigurierbaren Einheiten mit Hilfe einer Logik untergebracht werden könnte, in welcher einzelne Elemente eine bekannte maximale Signalübertragungsverzögerung haben.
  • In 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 2D dargestellt, angeordnet miteinander verbunden sind. Die ROMs 160 sind mit Flip-Flops 162 verbunden, um dadurch das Impulszählen durchzufü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 entspricht. 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 folgenden Tabelle erzeugt, in welcher der vorliegende sowie der nächste Zustand wiedergegeben sind:
    Figure 00190001
  • In 2E ist ein Blockdiagramm einer bevorzugten Ausführungsform einer Sequenz-Gate-Logik 42 der Erfindung dargestellt. Die Sequenz-Gate-Logik 42 ist durch eine Anzahl Logikeinheiten gebildet, die so, wie in 2E dargestellt, angeordnet und miteinander verbunden sind (die logischen Einheiten sind vorzugsweise partiell in einer FPGA der Xilinx XC4000-Serie mit Hilfe der Elemente D3_8E, AND2B1, FD, FD_1, NOR2, OR8 und OR7) gebildet. Die Sequenz-Gate-Logik 42 decodiert acht Zustände mit Hilfe einer Anzahl von Störungs-Überwachungsschaltungen 170, wie in 2E dargestellt ist. Das Decodieren erfolgt zeitlich in der Reihenfolge des Impulszählens auf der Leitung 44. Der letzte Impulszählzustand (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ührungsformen der Sequenz-Gate-Logik 42 die verdrahteten ODER-Glieder 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 negative Flanke getriggerten Flip-Flops und von durch eine positive Flanke getriggerten Flip-Flops auf, die ein hocheffizientes duales Flip-Flop pro CLB-Packungsstrategie liefern, wobei gleiche getaktete Flip-Flops verbunden sind.
  • In 3 ist ein Blockdiagramm einer bevorzugten Ausführugnsform einer funktionellen Logik 24 der Erfindung dargestellt. Die funktionelle Logik 24 weist einen Multiplexer (MUX) 50, einen partiellen Produktgenerator (PPG) 42, einen partiellen Produkt-Summierer (PPS) 54 und eine Produktakkumulator (PA) 56 auf. Der Multiplexer 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 4 nachstehend beschrieben wird. Der PP-Generator 52 multipliziert den Y-Bit-Multiplikator auf der Leitung 23 mit der S-Bit-Multiplikanden-Untergruppe und gibt einen Satz partieller Produkte an den PP-Summierer 54 ab, wie im einzelnen nachstehend anhand von 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 einzelnen anhand von 6 nachstehend beschrieben wird. Der P-Akkumulator 56 erhält einen Rücksetz(2)-Impuls 207 (siehe 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 Produktakkumulation, 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 8) auf Leitungen 47 bis 49 ab, wie im einzelnen anhand von 7 nachstehend beschrieben wird. Eine vollständige Multiplikation X-Bit mal Y-Bit wird von der funktionellen Logik 24 durchgeführt, nachdem jede S-Bit-Multiplikanden-Untergruppe mit dem Y-Bit-Multiplikator multipliziert und durch den P-Akkumulator 56 akkumuliert worden ist.
  • In 4 ist ein Blockdiagramm einer bevorzugten Ausführungsform des Multiplexers (MUX) 50 in der funktionellen Logik 24 dargestellt. 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-Multiplikanden erhält. Der erste MUX 58 erhält die geradzahligen Multiplikanden-Bits (d.h. 20, 22,....214 für einen 16 Bit-Multiplikanden) während der zweite MUX 60 die ungeradzahligen Multiplikanden-Bits (d.h. 21, 23,....215 für einen 16-Bit-Multiplikanden) 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 Impulszä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 vorzugsweise (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-Multiplikanden-Untergruppe an den PP-Generator 52 ab. Folglich wird eine 2-Bit-Multiplikanden-Untergruppe (21 und 2i+1) an den PPG 52 gesetzt, wobei das Bit 21 aus dem ersten MUX 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 Impulszählstand von (0,0,1) bis (0,0,0) reicht.
  • In 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 partiellen 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 Multikplkation 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 abgegeben 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 gehalten. Für jeden Impulszählstand wird eine 2-Bit-Multiplikanden-Untergruppe (d.h. 2i und 2i+1) zu jedem der acht PPMs geleitet, wobei mit einem ersten 2-Bit-Multiplikandenpaar (20 und 21) begonnen wird, wenn der Impulszählstand auf eins gesetzt ist, und endet mit einem letzten 2-Bit-Multiplikandenpaar (214 und 215) wenn der Impulszählstand auf null gesetzt ist.
  • Wie in 5 zur Verdeutlichung dargestellt ist, sind die Spaltenpositionen 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 20 ist das niedrigswertige Bit (LSB) und das Bit 217 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 allgemeinen Fall einer Partialproduktgeneration von X-Bit mal Y-Bit gilt.
  • In 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 Partialprodukte und erzeugt eine Partialproduktsumme. Im Falle einer Multiplikation 16 Bit mal 16 Bit werden die zwei LBSs (20 bis 21) von dem ersten Satz PPMs 51 unmittelbar von den PPS-Flip-Flops 68 aufgenommen; der PPS-Addierer 64 addiert 14 Bit (22 bis 215) sowohl von dem ersten als auch von dem zweiten Satz PPMs 51, 52; die PPS-Inkrementiereinheit 66 nimmt die zwei MSBs (216 bis 217) von dem zweiten Satz PPMs 53 und einen Übertrag von dem 14 Bit-PPS-Addierer 64 an; eine 18-Bit-Partialproduktsumme (20 bis 217) 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 7 ist ein Blockdiagramm einer bevorzugten Ausführungsform des P-Akkumulators (PA) 58 in der funktionellen Logik 24 dargestellt. Der PA 56 weist einen PA-Addierer 70, der entsprechend geschaltet ist, um die Partialproduktsumme von dem PPS 54 aufzunehmen und um Akkumulationen durchzuführen, eine PA-Inkrementiereinheit 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 (p0 bis P31, wobei p0 das LSB und p31 das MSB ist) zu speichern.
  • Die zwei LSBs 20 bis 21 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 (p0 bis p1) 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 20 und 21 sequentiell nach jeder Produktakkumulation über die dritten bis neunten Flip-Flop-Sätze 76 bis 88 entsprechend einer Anstiegsflanke des PA-CLK(3) 101 auf der Leitung 49 verschoben werden. Folglich werden nach einem PA-CLK(1) 99-Wechsel Bits p0 und p1 in dem zweiten Flip-Flop-Satz 74 gespeichert. Nach acht PA-CLK(2) 100-Wechsel werden Bits p16 bis p31 in dem ersten Flip-Flop-Satz 72 gespeichert und nach sieben PA-CLK(3) 101-Wechsel werden Bits p2 und p3 in dem neunten Flip-Flop-Satz 88, Bits p4 und p5 in dem achten Flip-Flop-Satz 86, Bits p6 und p7 in dem siebten Flip-Flop-Satz 84, Bits p8 und p9 in dem sechsten Flip-Flop-Satz 82, Bits p10 und p11 in dem fünften Flip-Flop-Satz 80, Bits p12 und p13 in dem vierten Flip-Flop-Satz 78 und Bits p14 und p15 werden in dem dritten Flip-Flop-Satz 76 gespeichert. Das 32 Bit-Produkt (Bit p0 bis p31) wird dann an den Ausgangspuffer 26 über die Leitung 25 abgegeben.
  • In 8 ist ein bevorzugtes Zeitdiagramm 89 der Arbeitsweise der Erfindung dargestellt. Die in 8 dargestellten Wellenformen sind idealisiert und folglich werden logische Wirkungen betrachtet, 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 Ausgangssignal 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 Startsignal 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 Produktberechnungszeit 114 auf.
  • Das erste Startsignal 104 wird von dem Impulszuordner 34 über die Leitung 32 erhalten, wie in 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)-Signale an den MUX 50 über die Leitung 44 gesendet werden. Dementsprechend wählt der MUX 50 das erste 2 Bit-Multiplikandenpaar (20 bis 21) 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 vorhanden 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-Partialproduktsumme 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-FlopSatzes 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 bekannten Übertragungsverzögerungen, die in einer konkreten Einrichtung vorliegen, die in der vorliegenden Erfindung verwendet wird, ist das Produkt 102 bekannt, das in der Produktberechnungszeit 114 zu berechnen ist. Folglich gibt es einen ersten Zeitpunkt 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 9A ist eine Matrix von bevorzugten Partialproduktadditionen 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 niedristwertige Bit (LSB) 20 und das höchstwertige Bit (MSB) 231 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 20 und 21 der 16 Bit-Multiplikanden mit dem 16 Bit-Multiplikator multipliziert; im Teil "II" werden Bits 22 und 23 des 16 Bit-Multiplikanden mit dem 16 Bit-Multiplikator multipliziert, und so weiter, bis im Teil "VIII" Bits 214 und 215 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 9B ist eine Matrix von bevorzugten Partialprodukt-Additionen für eine gemäß der Erfindung durchgeführte 8 Bit mal 8 Bit-Multiplikation dargestellt. Für die 8 Bit mal 8 Bit-Multiplikation würde der PPS 54 entsprechend ausgelegt, um über vier Summierungen 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 Augabepuffer 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 20 und MSB 215 ist. An den Teilen der Matrix, die mit "1" bis "IV" bezeichnet sind, ist ein Abgleich der nunmehr vier Partialprodukt-Multiplikatoren 62 in dem PPG 52 dargestellt. Im Teil "I" werden Bits 20 und 21 des 8 Bit-Multiplikanden mit dem 8 Bit-Multiplikator multipliziert; in Teil "II" werden Bits 22 und 23 des 8 Bit-Multiplikanden mit dem 8 Bit-Multiplikator multipliziert, usw., bis im Teil "IV" Bits 26 und 27 des 8 Bit-Multiplikanden mit dem 8 Bit-Multiplikator multipliziert werden. Der PA 56 addiert vier Teile in der in der Matrix angegebenen Weise, wodurch sich dann das 16 Bit-Produkt ergibt.
  • In 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 Freigabesignal 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 Referenztakt-Umschalten in der vorstehend beschriebenen Weise überträ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 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 12 beschrieben. Beim Schritt 206 werden die Ausgangsdaten von der funktionellen Logik 24 über die Leitung 25 und in den Ausgangspuffer 26 synchron mit und entsprechend einem Umschalten des Referenztaktes auf der Leitung 28 übertragen, während das Ausgangsfreigabesignal auf der Leitung 31 auf logisch "1" gesetzt wird, wie vorstehend beschrieben ist. Nach dem Schritt 206 endet das bevorzugte Verfahren.
  • In 11 ist ein Ablaufdiagramm eines bevorzugten Verfahrens zum Erzeugen einer Impulsfolge (Schritt 202 der 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 zurück. Beim Schritt 254 initialisiert die Startlogik 36 den Impulszähler 40, wie oben ausgeführt ist. Beim Schritt 255 überträgt die Startlogik 36 einen Startimpuls an die Verzögerungseinheit 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 mals 16 Bit-Multiplikation) entsprechend dem Ausgangssignal 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 Impulszä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; andernfalls 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 12 ist ein Ablaufdiagramm eines bevorzugten Verfahrens zum Erzeugen von Ausgangsdaten entsprechend der Impulsfolge (Schritt 204 in 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 initialisiert, wie oben beschrieben ist. Beim Schritt 302 wählt der MUX 50 eine nächste S-Bit-Multiplikanden-Untergruppe in der vorbeschriebenen Weise aus. Beim Schritt 304 multipliziert der PPG 52 eine aktuelle S-Bit-Multiplikanden-Untergruppe (d.h. die aktuelle 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 beschrieben ist.
  • Als nächstes erzeugt beim Schritt 306 der PPS 54 die Partialproduktsumme 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 Verfahren auf Schritt 302 zurück; andernfalls geht das Verfahren auf Schritt 312 über. Beim Schritt 312 gibt der PA 56 ein P-Bit-Produkt an den Ausgangspuffer 26 ab. Nach dem Schritt 312 endet das bevorzugte Verfahren.
  • Die Erfindung wird vorzugsweise in Verbindung mit einem Rechensystem verwendet. Beim Stand der Technik sind Schaltungen, die entsprechend ausgelegt sind, um hochschnelle Implementierungen von ganz speziellen Algorithmen durchzuführen, aus mehreren Schaltungsschichten 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 Schaltungschicht zur anderen übertragen. Solche bekannten Schaltungsausführungen erfordern oft viele Schaltungsschichten, 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 geschaffen, um einen Algorithmus mit Hilfe erheblich weniger Hardware-Ressourcen durchzuführen, als sie bei den bekannten Hochleistungsschaltungen erforderlich sind. Dies ist insbesondere vorteilhaft, wenn ein oder mehrere Versionen der Erfindung in einer RLD implementiert werden.
  • Die vorstehend beschriebene Erfindung liefert viele weitere Vorteile gegenüber den derzeit existierenden logischen Konzeptionen. Die Erfindung ist insbesondere vorteilhaft im Hinblick auf aktuelle 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 Taktelemente, sondern hat stattdessen ihr eigenes integrales Impulszuordner-Zeitsteuerelement; sie hat Abschlußzeiten, welche datenunabhängig sind; sie kann sich synchron mit einer externen Schaltungsanordnung 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 unterzubringen und sie beeinflußt das Leistungsvermögen nur einer örtlich begrenzten Schaltungsgruppe statt eines ganzen Systems einer externen Schaltungsanordnung.
  • Modifikationen der Erfindung können altenative Ausführungsformen ergeben. Beispielsweise könnte die Verzögerungseinheit 28 entsprechend ausgelegt werden, damit ein Impuls entsprechend der RDL-Konfiguration kontinuierlich zurückgeführt wird; dadurch entfä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 funktionelle Logik kann entsprechend modifiziert werden, um Funktionen einschließlich eines selbstgetakteten Teilers, eines selbstgetakteten Convolvers oder eines selbst getakteten Signalprozessors zu schaffen, ohne hierauf beschränkt zu werden.

Claims (18)

  1. Einrichtung für eine selbstgetaktete algorithmische Ausführung mit einer funktionellen Logikeinheit (24), die mittels eines Eingangspuffers (22) Eingangsdaten mit einer ersten Rate empfängt, mit den empfangenen Eingangsdaten Operationen mit einer zweiten Rate durchführt, um Ausgangsdaten zu erzeugen, und die Ausgangsdaten mittels eines Ausgangspuffers (26) mit einer zur ersten Rate synchronen Rate ausgibt, und einer Impulsfolgenerzeugungseinrichtung (34), die eine selbstgetaktete Impulsfolge erzeugt, die der zweiten Rate entspricht, und die die zweite Rate an die funktionelle Logikeinheit anlegt, wobei die zweite Rate unabhängig von der ersten Rate festgelegt wird.
  2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die zweite Rate in Abhängigkeit von der Zeit festgelegt wird, die die Logikeinheit zur Ausführung einer Operation benötigt.
  3. Einrichtung nach Anspruch 1 oder 2, bei welcher die funktionelle Logikeinheit eine vorausgesagte Ausführungszeit hat und die zweite Rate eine maximale Rate ist, die auf der vorausgesagten Ausführungszeit basiert.
  4. Einrichtung nach Anspruch 1, bei welcher die funktionelle Logikeinheit und die Impulsfolgenerzeugungseinrichtung in einer Gruppe von Hardware-Ressourcen einander nahe sind oder einstückig miteinander sind, um auf dieselbe Art und Weise auf Betriebsparameterschwankungen der Hardware-Ressourcen anzusprechen.
  5. Einrichtung nach Anspruch 1, bei welcher die Impulsfolgenerzeugungseinrichtung eine Verzögerungseinheit aufweist, welche eine selbstgetaktete Schwingung erzeugt.
  6. Einrichtung nach Ansprüche 5, bei welcher die Verzögerungseinheit eine Gruppe von in Reihe geschalteter Logikeinheiten aufweist, wobei jede Logikeinheit eine vorhersehbare Übertragungszeit hat.
  7. Einrichtung nach Anspruch 6, bei welcher die Gruppe in Reihe geschalteter Logikeinheiten eine Gruppe von Übertrag-Logikelementen aufweist.
  8. Einrichtung nach Anspruch 6, bei welcher die Gruppe der Übertrag-Logikelemente eine Übertrag-Übertragungslogik in einer rekonfigurierbaren Logikeinheit aufweist.
  9. Einrichtung nach Anspruch 5, bei welcher die Impulsfolgenerzeugungseinrichtung ferner eine Logikanordnung (42) zum Erzeugen von Taktsignalen aufweist, wobei die Logikanordnung (42) entsprechend geschaltet ist, um ein Ausgangssignal der Verzögerungseinheit aufzunehmen und entsprechend geschaltet ist, um einen Satz Taktsignale an die funktionelle Logikeinheit zu liefern, um dadurch eine zweite Rate zu schaffen.
  10. Einrichtung nach Anspruch 9, bei welcher die Impulsfolgenerzeugungseinrichtung 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.
  11. Einrichtung nach Anspruch 10, bei welcher die Impulsfolgeerzeugungseinrichtung ferner eine Startlogik zum Erzeugen eines Startimpulses aufweist, um den Betrieb der Verzögerungseinheit zu initiieren.
  12. Einrichtung nach Anspruch 5, bei welcher die funktionelle Logikeinheit eine Multipliziereinheit aufweist, welche aufweist: einen Multiplexer, der entsprechend geschaltet ist, um einen Multiplikanden zu erhalten; einen Partialprodukt-Generator, der entsprechend geschaltet ist, um einen Mulitplikator und eine Untergruppe von Bits in dem Mul tiplikanden zu erhalten, um einen Satz Partialprodukte zu erzeugen; einen Partialproduktsummierer, der entsprechend geschaltet ist, um den Satz Partialprodukte zu erhalten, um eine Partialproduktsumme zu erzeugen, und einen Produktakkumulator, der entsprechend geschaltet ist, um die Partialproduktsumme zu erhalten, um die Partialproduktsummen zu akkumulieren, um einen Produkt zu erzeugen, wobei die Multipliziereinheit entsprechend der selbstgetakteten Schwingung, die von der Verzögerungseinheit erzeugt worden ist, gesteuert wird.
  13. Verfahren für eine selbstgetaktete algorithmische Ausführung bei einer Einrichtung, die eine funktionelle Logikeinheit (24) und eine Impulsfolgeerzeugungseinrichtung aufweist, wobei das Verfahren die Schritte aufweist: Erhalten von Eingangdaten mit einer ersten Rate mittels eines Eingangspuffers (22); Erzeugen einer selbstgetakteten Impulsfolge mit einer zweiten Rate mittels der Impulsfolgeerzeugungseinrichtung, die von der ersten Rate unabhängig ist; Anlegen der zweiten Rate an die funktionelle Logikeinheit (24); Verarbeiten der Eingangsdaten mit der zweiten Rate entsprechend der Impulsfolge und Durchführen von Operationen mit den Eingangsdaten mit der zweiten Rate mittels der Logikeinheit (24); und Ausgeben der Ausgangsdaten mit einer zur ersten Rate synchronen Rate mittels einer Ausgangspuffers.
  14. Verfahren nach Anspruch 13, bei welchem der Schritt, Erzeugen der Impulsfolge, mit einer maximalen Rate durchgeführt wird, die von einer Ausführungszeit abhängt, die der Gruppe funktionaler Logikeinheiten zugeordnet ist.
  15. Verfahren nach Anspruch 13, bei welchem der Schritt, Erhalten von Eingangssignalen, synchron mit einem Referenztakt durchgeführt wird; der Schritt Erzeugen mit einer selbst-getakteten Rate durchgeführt wird, die von dem Referenztakt unabhängig ist, und der Schritt Ausgeben synchron mit dem Referenztakt durchgeführt wird.
  16. Verfahren nach Anspruch 15, bei welchem der Schritt, Erzeugen die Schritte aufweist: Erzeugen einer selbstgetakteten Schwingung entsprechend einem Taktsignal und Aufrechterhalten der selbstgetakteten Schwingung bis ein Haltesignal erhalten wird.
  17. Verfahren nach Anspruch 16, 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.
  18. Verfahren nach Anspruch 13, bei welchem der Schritt Verarbeiten die Unterschritte aufweist: Erzeugen einer Gruppe von Partialprodukten, indem ein Multiplikator und eine Untergruppe von Bits in einen Multiplikanden multipliziert werden; Erzeugen einer Partialproduktsumme durch Addieren der Gruppe Partialprodukte; Akkumulieren der Partialproduktsumme mit einer vorherigen Partialproduktsumme und Wiederholen jedes Unterschritts in dem Verarbeitungsschritt, bis ein Multiplikationsprodukt erzeugt ist.
DE19702326A 1996-01-24 1997-01-23 Einrichtung und Verfahren für eine selbstgetaktete algorithmische Ausführung Expired - Fee Related DE19702326B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US590499 1996-01-24
US08/590,499 US5854918A (en) 1996-01-24 1996-01-24 Apparatus and method for self-timed algorithmic execution

Publications (2)

Publication Number Publication Date
DE19702326A1 DE19702326A1 (de) 1997-07-31
DE19702326B4 true 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)

* Cited by examiner, † Cited by third party
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
ATE243390T1 (de) 1996-12-27 2003-07-15 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.)
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.)
DE19704728A1 (de) * 1997-02-08 1998-08-13 Pact Inf Tech Gmbh Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
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
US7003660B2 (en) 2000-06-13 2006-02-21 Pact Xpp Technologies Ag Pipeline configuration unit protocols and communication
AU5805300A (en) 1999-06-10 2001-01-02 Pact Informationstechnologie Gmbh Sequence partitioning in cell structures
US6675306B1 (en) 2000-03-10 2004-01-06 Ricoh Company Ltd. Method and apparatus for phase-lock in a field programmable gate array (FPGA)
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
WO2002103532A2 (de) 2001-06-20 2002-12-27 Pact Xpp Technologies Ag 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
EP1483682A2 (de) 2002-01-19 2004-12-08 PACT XPP Technologies AG Reconfigurierbarer prozessor
US8127061B2 (en) 2002-02-18 2012-02-28 Martin Vorbach Bus systems and reconfiguration methods
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
AU2003289844A1 (en) 2002-09-06 2004-05-13 Pact Xpp Technologies Ag Reconfigurable sequencer structure
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
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
US7219182B2 (en) 2003-03-10 2007-05-15 Marvell International Ltd. Method and system for using an external bus controller in embedded disk controllers
EP1676208A2 (de) 2003-08-28 2006-07-05 PACT XPP Technologies AG Datenverarbeitungseinrichtung und verfahren
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)

* Cited by examiner, † Cited by third party
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
US4841468A (en) * 1987-03-20 1989-06-20 Bipolar Integrated Technology, Inc. High-speed digital multiplier architecture
US4876660A (en) * 1987-03-20 1989-10-24 Bipolar Integrated Technology, Inc. Fixed-point multiplier-accumulator 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
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
US5153848A (en) * 1988-06-17 1992-10-06 Bipolar Integrated Technology, Inc. Floating point processor with internal free-running clock
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

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
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
CN1103951C (zh) 2003-03-26
JP3784476B2 (ja) 2006-06-14
US5854918A (en) 1998-12-29
JPH09204236A (ja) 1997-08-05
DE19702326A1 (de) 1997-07-31
CN1162153A (zh) 1997-10-15

Similar Documents

Publication Publication Date Title
DE19702326B4 (de) Einrichtung und Verfahren für eine selbstgetaktete algorithmische Ausführung
DE102005051478B4 (de) Flashdatenspeichervorrichtung
DE69534812T2 (de) Programmierbare logische Vorrichtung, die mehr als eine Konfiguration speichert, und Mittel zum Umschalten der Konfiguration
DE3300260C2 (de)
DE3049437C2 (de) Matrixanordnung einer Vielzahl von Verarbeitungselementen
DE2809405C3 (de) Prioritätssteuerschaltung
EP0010173B1 (de) Halbleiterplättchen mit verbesserter Prüfbarkeit der monolithisch hochintegrierten Schaltungen
DE60002571T2 (de) Elastische schnittstelleanornung und verfahren dafür
DE4417575C2 (de) Verbesserte Array-Architektur für programmierbare logische Zellen
DE3300262C2 (de)
DE2457553C2 (de) Asynchrone Taktgebereinrichtung
US4851995A (en) Programmable variable-cycle clock circuit for skew-tolerant array processor architecture
DE69435034T2 (de) Verfahren ind vorrichtung zur durchfuehrung einer schnellen hadamard transform
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
DE4016113A1 (de) Probabilistisches schlussfolgerungssystem
DE4129657C2 (de) Programmierbare Frequenzteiler-Einrichtung
DE10124351A1 (de) Zeitlich selbstgesteuertes Übertragungssystem und Verfahren zum Verarbeiten von Mehrfachdatensätzen
DE19549156B4 (de) Datensignalverteilungsschaltung für ein Synchronspeicherelement
DE3138698C2 (de)
CH657487A5 (de) Funktionsgenerator zur erzeugung einer anzahl von sich wiederholenden digitalen wellenformen.
DE60313637T2 (de) Verfahren und vorrichtung zum verarbeiten von verschlüsselungsoperationen mit beliebiger schlüsselbitlänge mit ähnlichen effizienzen
DE102019215453A1 (de) Auf linearem Schieberegister basierter Taktsignalgenerator, zeitdomänenverschachtelter Analog-Digital-Umsetzer und Verfahren
DE10018988A1 (de) Hochgeschwindigkeits-Pipelinevorrichtung und Verfahren zum Erzeugen von Steuersignalen dafür
EP1789889B1 (de) Rechnereinrichtung mit rekonfigurierbarer architektur zur aufnahme eines globalen zellularen automaten

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