DE69429073T2 - Logische struktur und schaltung für schnellen übertrag - Google Patents
Logische struktur und schaltung für schnellen übertragInfo
- Publication number
- DE69429073T2 DE69429073T2 DE69429073T DE69429073T DE69429073T2 DE 69429073 T2 DE69429073 T2 DE 69429073T2 DE 69429073 T DE69429073 T DE 69429073T DE 69429073 T DE69429073 T DE 69429073T DE 69429073 T2 DE69429073 T2 DE 69429073T2
- Authority
- DE
- Germany
- Prior art keywords
- carry
- signal
- logic
- bit
- input
- 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 - Lifetime
Links
- 230000005540 biological transmission Effects 0.000 title 1
- 230000006870 function Effects 0.000 claims description 134
- 239000011159 matrix material Substances 0.000 claims description 13
- 230000001419 dependent effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 15
- 230000000295 complement effect Effects 0.000 description 12
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 230000001934 delay Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 101100311330 Schizosaccharomyces pombe (strain 972 / ATCC 24843) uap56 gene Proteins 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000002370 liquid polymer infiltration Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 101150018444 sub2 gene Proteins 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 206010027146 Melanoderma Diseases 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- WYTGDNHDOZPMIW-RCBQFDQVSA-N alstonine Natural products C1=CC2=C3C=CC=CC3=NC2=C2N1C[C@H]1[C@H](C)OC=C(C(=O)OC)[C@H]1C2 WYTGDNHDOZPMIW-RCBQFDQVSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000000034 method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
- G06F7/503—Half or full adders, i.e. basic adder cells for one denomination using carry switching, i.e. the incoming carry being connected directly, or only via an inverter, to the carry output under control of a carry propagate signal
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/1733—Controllable logic circuits
- H03K19/1737—Controllable logic circuits using multiplexers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17704—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form the logic functions being realised by the interconnection of rows and columns
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17724—Structural details of logic blocks
- H03K19/17728—Reconfigurable logic blocks, e.g. lookup tables
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17724—Structural details of logic blocks
- H03K19/17732—Macroblocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4812—Multiplexers
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Logic Circuits (AREA)
Description
- Die vorliegende Erfindung betrifft große integrierte Schaltungen, und insbesondere programmierbare oder konfigurierbare Logikanordnungen.
- Eine Art von Funktion, die mit programmierbaren Logikanordnungen ausgeführt wird, ist Arithmetik. Ein Bauelement wie z. B. eine konfigurierbare Logikmatrix von Xilinx, Inc., Zessionarin der vorliegenden Erfindung, kann arithmetische Vorgänge sowie eine Vielzahl anderer Logikfunktionen ausführen. Solche Bauelemente sind in den US-Patenten Nr. 4,870,302 und 4,706,216 beschrieben. Da diese Bauelemente für allgemeine Funktionen gedacht sind, ist die Arithmetik relativ langsam und erfordert eine erhebliche Menge an Siliciumfläche.
- Weitere programmierbare Logikanordnungen, wie beispielsweise die programmierbare Matrix-Logikanordnung, die im US-Patent Nr. 4,124,899 von Birkner beschrieben wird, sowie vom Benutzer programmierbare Bauelemente, die in Elgamal et al, US-Patent Nr. 4,758,745 beschrieben werden, können ebenfalls zur Durchführung von Arithmetikvorgängen programmiert werden. Bei diesen Bauelementen ist die Geschwindigkeit der Ausführung von arithmetischen und anderen Funktionen, die Übertragslogik benutzen, durch die Ausbreitung des Übertragssignalssignals begrenzt. Auch ist die Mehrzwecklogik, die zum Ausführen der Übertragsfunktion verwendet wird, signifikant.
- Zur Vermittlung eines Verständnisses darüber, wie Logikanordnungen arithmetische Vorgänge durchführen, und insbesondere darüber, was Verzögerungen verursacht, konzentriert sich die nachfolgende Beschreibung von Arithmetikfunktionen auf Addierer. Die Beschreibung lässt sich jedoch durchaus auch auf Subtrahierer, Inkrementierer, Dekrementierer und Akkumulatoren sowie auf andere Schaltungen ausweiten, die eine Übertragslogik verwenden.
- Die nachfolgende Erörterung konzentriert sich auf die Durchführung der mittleren Stufen in einem Mehrbit-Addierer. Das niedrigstwertige Bit ist ein Sonderfall, da kein Übertragssignal von einem geringerwertigen Bit empfangen werden kann. Das höchstwertige Bit ist ein Sonderfall, da das Übertragsbit zur Ermittlung eines Überlaufzustands verwendet werden kann. Diese beiden Sonderfälle werden später ausführlich erörtert.
- Unter Bezugnahme auf die Fig. 1a, 1b und 2 wird erläutert, wie die Geschwindigkeit eines Einzelbit-Schnellübertragsaddierers (Fig. 1a und 1b) und somit eines Mehrbit-Schnellübertragsaddierers, der durch Kaskadieren von Einzelbit-Addierern (Fig. 2) konstruiert wurde, durch die Geschwindigkeit begrenzt ist, mit der das Signal am Eintragsanschluss zum Austragsanschluss übertragen wird.
- Die Verknüpfungslogikgleichungen, die das Verhalten des in Fig. 1a gezeigten Einzelbit-Addierers bestimmen, lauten wie folgt:
- (1) Si = (Ai@Bi)@Ci
- (2) Ci+1 = Ai·Bi + (Ai@Bi)·Ci
- dabei repräsentiert:
- @ die Exklusiv-ODER-Funktion (XOR),
- · die AND-Funktion und
- + die OR-Funktion.
- Gleichung (1) zeigt, dass die Summe eine Funktion eines Eintrags von einem geringerwertigen Bit zusätzlich zur Addition der Einzelbits Ai und Bi ist. Der Schnellübertrags- Addiereralgorithmus der Gleichungen (1) und (2) zeigt, dass die Summe für ein bestimmtes Bit erst dann errechnet werden kann, wenn der Austrag vom vorherigen Bit zur Verfügung steht. Die Summe Si ist der Ausgang eines XOR-Gates und kann erst dann erzeugt werden, wenn jeder seiner Eingänge, von dem einer das Eintragssignal Ci ist, zur Verfügung steht.
- Ferner kann das Austragssignal Ci...1 ebenfalls erst dann generiert werden, wenn das geringerwertige Übertragsbit Ci zur Verfügung steht.
- Nachfolgend wird unter Bezugnahme auf Fig. 2 die Übertragung des Übertragssignals durch aufeinanderfolgende Stufen eines Schnellübertragsaddierers erläutert. Das AND-Gate 67 in der zweiten Addiererstufe Addi+1 erhält einen seiner Eingänge vom Ausgang des XOR-Gates 66 nach einer Verzögerung von nur einem Gate. Aber unter der Annahme, dass das Eintragssignal Ci voreingestellt ist (d. h., dass Addi das niedrigstwertige Bit ist), könnte das AND-Gate 67 eine zusätzliche Verzögerung von 3 Gates darauf warten, dass sich der Effekt von Ai und Bi durch die Gates 61, 62 und 65 ausbreitet, bevor sein anderer Eingang, der Austrag Ci+1 von dem geringerwertigen Bit, von dem Austrag des geringerwertigen Bits Ci und den zu addierenden geringerwertigen Bits Ai und Bi erzeugt wurde. Darüber hinaus wird der Austrag Ci+2 des zweiten Bits Addi+1 um weitere 2 Gates nach der Erzeugung des Übertragsbits Ci+1, verzögert. Das heißt, eine Kombination der Eingänge auf Ai+1 und Bi+1 mit dem Eintragssignal Ci+1 zum Erzeugen von Ci+2 erfordert, dass Ci+1 durch das AND-Gate 67 und das OR-Gate 70 übertragen wird. Somit gibt es erst 5 Gate-Verzögerungen nach dem Anlegen der Eingangssignale Ai und Bi ein gültiges Eintragssignal Ci+2 für den Eingang in eine dritte Stufe. Somit wird die Geschwindigkeit des konventionellen Schnellübertragsaddierers durch die Fortpflanzungsgeschwindigkeit des Übertragssignals begrenzt. Die Ausbreitungsverzögerung eines konventionellen Schnellübertragsaddierers beträgt 2n + 1 Gates, wobei n die Anzahl der Stufen im Mehrbit-Addierer ist.
- Da die Addition der Grundstein vieler anderer wichtiger Funktionen und Vorgänge ist, ist es für die Computerindustrie wichtig, schnellere Addiererschaltungen durch Beschleunigen der Übertragsfortpflanzungszeit zu entwickeln. Im allgemeinen funktionieren diese Methoden dadurch, dass ein Kompromiss zwischen Dichtigkeit und Komplexität der Komponenten und der Übertragsfortpflanzungsgeschwindigkeit gefunden wird.
- Ein gut bekannter Algorithmus, mit dem eine höhere Übertragsfortpflanzungsgeschwindigkeit erzielt wird, wird als Vorgriffsübertragslogik bezeichnet. Eine Schaltung zum Ausführen einer Vorgriffsübertragslogik ist in Fig. 3 dargestellt. Ein Verständnis dieser Logik erfordert die Einführung von zwei neuen Variablen:
- (3) Pi = Ai@Bi
- (4) Gi = Ai·Bi
- Die Variable P wird als "Übertragsfortpflanzung" bezeichnet, da, wenn P hoch ist, der Eintrag zum Austrag übertragen wird. Die Variable G wird als "Übertragsgenerierung" bezeichnet, da, wenn G hoch ist, ein Austrag durch die Addition der Bits generiert wird.
- Die Gleichungen (1) und (2) können im Hinblick auf diese neuen Variablen umgeschrieben werden:
- (5) Si = Pi@Ci
- (6) Ci+1 = Gi + Pi·Ci
- Mit einer geringfügigen algebraischen Manipulation können mit der Gleichung (6) neue Gleichungen geschrieben werden, bei denen das Übertragsbit auf jeder Ebene nur von den Summanden auf jeder Ebene und dem niedrigstwertigen Übertragsbit abhängig ist. Die folgenden Gleichungen werden in dem in Fig. 3 gezeigten Vierbit-Addierer ausgeführt
- (7) (a) C&sub1; = A&sub0;B&sub0; = G&sub0;
- (b) C&sub2; = G&sub1; + P&sub1;C&sub1; = G&sub1;+ P&sub1;C&sub1;
- (c) C&sub3; = G&sub2; + P&sub2;C&sub2; = G&sub2; + P2 (G&sub1; + P&sub1;Ci) = G&sub2;+ P&sub2;G&sub1;+ P&sub2;P&sub1;C&sub1;
- (d) C&sub4; = G&sub3; + P&sub3;C&sub3; = G&sub3; + P&sub3; (G&sub2; + P&sub2;G&sub1; + P&sub2;P&sub1;C&sub1;) = G&sub3; + P&sub3;G&sub2; + P&sub3;P&sub2;G&sub1; + P&sub3;P&sub2;P&sub1;C&sub1;
- Jedes Gi und Pi ist lediglich eine Funktion von Ai und Bi und nicht von vorherigen Übertragswerten, wie aus den Gleichungen 3 und 4 hervorgeht. Zum Zweiten ist in Gleichung 7b zu beachten, dass C&sub2; als Funktion von G&sub1;, P&sub1; und C&sub1; errechnet wird, und dass in Gleichung 7c C&sub3; als Funktion von G&sub2;, P&sub2; und C&sub2; errechnet wird. Da jedoch C&sub2; im Sinne von C&sub1; gelöst wurde, kann C&sub3; ebenfalls im Sinne von C&sub1; gelöst werden. Bei einer Betrachtung von Gleichung 7d und der allgemeineren Gleichung 6 wird man feststellen, dass jedes Ci+1 eine Funktion mehrerer Gi-Fälle, Pi-Fälle und von C&sub1; ist. Aus Fig. 3 ist ersichtlich, dass das geringerwertige Bit nur für die Berechnung der Summe, nicht für die Berechnung des Übertragsbits in das nächstwertige Bit gespeist wird. Da jedes Übertragsbit eine Funktion mehrerer Gi-Fälle, Pi-Fälle und von C&sub1; ist, sind die einzelnen Übertragsbits lediglich abhängig vom Austrag des niedrigstwertigen Bits. Somit ist die Übertragsstufenverzögerung der Vorgriffsübertragsschaltung nicht von der Zahl der addierten Bits abhängig.
- Weiterhin bezugnehmend auf Fig. 3 und Fig. 1a, beträgt die Verzögerung zwischen dem Anlegen der Eingangssignale (A und B) und dem Erscheinen eines gültigen Signals an den Erzeugungsausgängen (Gi-Fälle) und den Fortpflanzungsausgängen (Pi-Fälle) einer Addiererstufe 1 Gate (dies lässt sich aus Fig. 1a ersehen). Die in Fig. 3 durch den Übertragswiederherstellungsteil der Vorgriffsübertragsschaltungsanordnung addierte Verzögerung beträgt 2 Gates, was insgesamt eine 3-Gate-Verzögerung vom Anlegen der Eingangssignale am Addierer bis zu dem Zeitpunkt ergibt, an dem das letzte Austragsbit zur Verfügung steht. Diese Beziehung ist unabhängig von der Zahl der addierten Bits. Für eine Mehrbit-Addiererschaltung ist die Verzögerung erheblich geringer als die Verzögerung einer konventionellen Schnellübertragsaddiererschaltung. Mit zunehmender Anzahl von Stufen steigt jedoch die Zahl der Komponenten erheblich. Eine Vorgriffsübertragslogik erfordert weitaus mehr Komponenten als der konventionelle Schnellübertragsaddierer für die Ausführung einer Stufe eines Mehrbit Addierers. Dies veranschaulicht die Idee, dass eine schnellere Übertragsfortpflanzung eine höhere Komponentendichtigkeit erfordert.
- Fig. 4 zeigt ein weiteres Beispiel für Schaltungskomponenten zum Ausführen eines Addierers. Der Addierer von Fig. 4 ist sehr schnell, braucht aber, wie der Addierer von Fig. 3, viele Komponenten. Auch hier erfordert eine schnellere Übertragslogik eine höhere Komponentendichtigkeit.
- Auf den Seiten 6-30 bis 6-44 in "The Programmable Gate Array Data Book" von Xilinx, Inc., Copyright 1989, das von Xilinx, Inc., 2100 Logic Drive, San Jose, CA 95124 erhältlich ist, sind eine Reihe verschiedener Addierer und Zähler aufgeführt, die in programmierbaren Logikanordnungen von Xilinx gemäß dem Stand der Technik ausgeführt werden können. Xilinx, Inc., Inhaber der Urheberrechte, erhebt keine Einwände dagegen, dass diese Seiten fotokopiert werden, behält sich jedoch ansonsten alle Urheberrechte vor. Der Addierer von Fig. 4 wird auf Seite 6-30 des Xilinx-Datenbuches gezeigt. Fig. 5 zeigt einen Zähler, der auf Seite 6-34 des Xilinx-Datenbuches dargestellt ist. Die Fig. 4 und 5 zeigen somit Anwendungen von Arithmetikfunktionen, die in frühen Xilinx-Bauelementen ausgeführt wurden. In frühen Xilinx-Bauelementen erfordert die Berechnung der Summe einen Funktionsgenerator, und die Berechnung der Übertragsfunktion erfordert einen weiteren Funktionsgenerator. Typischerweise befinden sich zwei Funktionsgeneratoren in einem Logikblock einer konfigurierbaren Logikmatrix des Standes der Technik von Xilinx.
- Somit werden in den Addiererschaltungen der Fig. 4 und 5, sowie auch bei anderen Xilinx-Addiererschaltungen gemäß dem Stand der Technik, wenigstens zwei Funktionsgeneratoren für die Ausführung jeder Stufe eines Addierers oder Zählers benötigt.
- Die Wahrheitstabelle in Fig. 6c zeigt die logischen Beziehungen zwischen zwei Einzelbits, die addiert werden, dem Eintragsbit und dem Austragsbit. Eine sorgfältige Analyse dieser Wahrheitstabelle brachte ein nützliches Muster zu Tage. Wenn A und B gleich sind (Zeilen 1, 2, 7 und 8), dann ist der Wert des Austragsbits Cout, der Wert von A und von B. Sind A und B hingegen nicht gleich (Zeilen 3-6), dann ist der Wert des Austragsbits Cout der Wert des Eintragsbits Cin. Zwei äquivalente Verknüpfungslogikgleichungen repräsentieren dieses Muster:
- (10) Cout = (A@B)·(Cin) + ·A
- (11) Cout = (A@B)·(Cin) + ·A
- Die Schaltung in Fig. 6a implementiert Gleichung (10). Diese Schaltung erfüllt zwei Bedingungen. Wenn A und B nicht gleich sind, dann wird das Signal am Eintragsanschluss zum Austragsanschluss weitergegeben, und wenn A und B gleich sind, dann wird das Signal auf A zum Austragsanschluss weitergegeben. Wie in Fig. 6a gezeigt wird, werden die beiden addierten Einzelbits A und B an die beiden Eingangsanschlüsse des XOR-Gates 51 angelegt. Wenn A und B gleich sind, dann; schaltet ein niedriges Ausgangssignal vom XOR- Gate 51 den Durchgangstransistor T1 ein und den Durchgangstransistor T2 aus, so dass das Signal von A zum Austragsanschluss Cout durchgelassen wird. Wenn A und B nicht gleich sind, dann ist der Ausgang des XOR-Gates 51 hoch, wodurch der Durchgangstransistor T2 ein- und der Durchgangstransistor T1 ausgeschaltet wird. Dadurch wird das Signal des Eintragsanschlusses Cin wiederum zum Austragsanschluss Cout durchgelassen.
- Fig. 7a zeigt einen Volladdierer. Die Fig. 6b und 7b zeigen alternative Darstellungen der Schaltungen von Fig. 6a bzw. 7a. Der Inverter und die Transistoren der Fig. 6a und 7a werden als Multiplexer M in den Illustrationen der Fig. 6b und 7b repräsentiert.
- Nachfolgend wird anhand eines Vergleichs der Fig. 2 und 7a gezeigt, dass die oben beschriebene Schnellübertragslogik eine schnellere Ausbreitung des Übertragssignals ermöglicht als ein konventioneller Schnellübertragsaddierer. Fig. 7a zeigt eine Stufe einer Volladdiererschaltung, die gemäß EP-A-0 456 475 hergestellt wurde. Die Übertragsfortpflanzung wird wie oben in Verbindung mit Fig. 6a erörtert gesteuert. Wie oben beschrieben und in Fig. 2 dargestellt, beträgt die Stufenverzögerung eines konventionellen Schnellübertragsaddierers 1 AND-Gate plus 1 OR-Gate pro addiertem Bitpaar plus 1 XOR- Gate. Im Gegensatz dazu tritt, wie in Fig. 7a gezeigt, die ungünstigste Verzögerung dieser Schaltung dann auf, wenn eines der Eingangssignale, in diesem Fall Bi, zum Austragssignal übertragen wird, d. h., wenn das Signal das XOR-Gate 91 plus Inverter 92 passiert, um den Durchgangstransistor 93 einzuschalten. Dies geschieht gleichzeitig für alle addierten Bits. Die Stufenverzögerung für ein Übertragssignal für die Ausbreitung (für die Ausbreitung eines Übertragssignals) durch eine lange Reihe von Transistoren, wie z. B. Transistor 94, fügt nur eine minimale Zeit im Vergleich zu einer Gate-Verzögerung zum Erzeugen des Ergebnisses einer Addition hinzu. Wenn vier Volladdiererschaltungen wie in Fig. 7a gezeigt kaskadiert werden, dann steht das Ausgangssignal Cout im ungünstigsten Fall nach einer XOR-Gate- Verzögerung plus einer Inverterverzögerung plus der äußerst geringen Stufenverzögerung durch vier Durchgangstransistoren zur Verfügung.
- Gemäß der vorliegenden Erfindung wird eine programmierbare Logikanordnung bereitgestellt, umfassend eine Matrix aus Logikblöcken, wobei jeder Logikblock wenigstens eine Schaltung hat, umfassend: einen ersten Eingangsanschluss zum Anlegen eines ersten Eingangswertes; wenigstens zwei weitere Eingangsanschlüsse zum Erzeugen von wenigstens zwei weiteren Eingangswerten; einen Eintragsanschluss und einen Austragsanschluss; einen Multiplexer zum Verbinden des genannten ersten Eingangsanschlusses oder des genannten Eintragsanschlusses mit dem genannten Austragsanschluss; und eine Nachschlagtabelle, die mit dem genannten ersten Eingangsanschluss und mit den genannten wenigstens zwei weiteren Eingangsanschlüssen verbunden ist und ein Mittel zum Erzeugen eines zweiten Eingangswertes als eine Funktion der genannten wenigstens zwei weiteren Eingangswerte umfasst; wobei die genannte Nachschlagtabelle zum Erzeugen eines Ausbreitungssignals vorgesehen ist, das bewirkt, dass der genannte Multiplexer den genannten Eingangsanschluss mit dem genannten Austragsanschluss verbindet, wenn - und nur dann - der genannte erste Eingangswert gleich dem genannten zweiten Eingangswert ist, und den genannten Eintragsanschluss mit dem genannten Austragsanschluss verbindet, wenn - und nur dann - der genannte erste Eingangswert nicht gleich dem genannten zweiten Eingangswert ist.
- Die Schnellübertragslogikschaltung ist dann nützlich, wenn Addierer, Subtrahierer, Akkumulatoren und andere Funktionen implementiert werden, die Übertragslogik verwenden. Der Schnellübertragspfad wird mit dedizierter Hardware und dedizierter Verbindungsschaltungsanordnung in einer konfigurierbaren Logikmatrix realisiert, während ein Übertragsausbneitungssignal zum Erzeugen des Übertragssignals in programmierbaren Funktionsgeneratoren ausgeführt wird. Diese dedizierte Übertragspfad- Schaltungsanordnung ermöglicht eine schnelle Fortpflanzung des Übertragssignals und eine hohe Dichtigkeit von Logikfunktionen, die Übertragslogik verwenden. Das Übertragsausbreitungssignal wird auch zum Erzeugen der Summe verwendet. Es werden zwei Ausgestaltungen beschrieben, eine, bei der die Summe in einem programmierbaren Funktionsgenerator errechnet wird, und eine, bei der die Summe in einem dedizierten XOR- Gate ermittelt wird.
- In einer Ausgestaltung ist eine Schaltung mit Übertragslogik etwa viermal so schnell wie der Stand der Technik, kann mit etwa der Hälfte der Zahl von Logikblöcken realisiert werden und lässt Universallogikressourcen für andere Funktionen frei. Eine Ausgestaltung ermöglicht auch das Addieren oder Subtrahieren einer Konstante zu/von einer Variablen, ohne eine Verbindungsschaltungsanordnung zum Bereitstellen der Konstante zu benutzen.
- Die Erfindung nutzt eine boolesche Funktionsvereinfachung von einer von zwei logisch äquivalenten Übertragsfunktionen:
- (8) Ci+1 = (Ai@Bi)·(Ci) + (Ai@Bi)·Bi
- (9) Ci+1 = (Ai@Bi)·(Ci) + (Ai@Bi)·Ai
- Der Schnellübertragspfad empfängt die obige Ci-Funktion und erzeugt die obige Ci+ 1 Funktion. Die XOR-Funktionen von Ai und Bi in den obigen Gleichungen werden durch Nachschlagtabellen-Funktionsgeneratoren erzeugt. Der Übertragspfad wird in einer Matrix implementiert, wobei der Austrag eines Bits mit dem Eintrag des nächsten Bits verbunden ist. So wird ein Übertragspfad mit hoher Geschwindigkeit erzielt. In einer Ausgestaltung wird auch ein XOR-Gate vorgesehen, so dass die Summenfunktion Si vollendet werden kann, ohne dass mehr als ein Funktionsgenerator für ein Bit benötigt wird.
- Wenn die Übertragslogik-Hardware in eine konfigurierbare Logikmatrix in Verbindung mit Universallogikblöcken eingebaut wird, dann haben die Schnellübertrags- Logikschaltungen vorzugsweise eine dedizierte Verbindungsstruktur zwischen Übertragseingängen und Übertragsausgängen benachbarter Logikblöcke, wodurch die Leistung noch weiter verbessert wird.
- Die vorliegende Erfindung wird nachfolgend beispielhaft unter Bezugnahme auf die Begleitzeichnungen beschrieben. Dabei zeigt:
- Fig. 1a ein schematisches Diagramm einer Stufe eines konventionellen Volladdierers.
- Fig. 1b ein schematisches Symbol für die konventionelle, in Fig. 1a gezeigte Volladdiererstufe.
- Fig. 2 ein schematisches Diagramm von zwei kaskadenartig zusammengeschalteten Volladdierern.
- Fig. 3 ein schematisches Diagramm eines Vierbit-Addierers mit Vorgriffsübertragslogik.
- Fig. 4 ein schematisches Diagramm eines Addierers des Standes der Technik.
- Fig. 5 ein schematisches Diagramm eines Zählers des Standes der Technik.
- Fig. 6a ein schematisches Diagramm einer Schaltung, die ein Bit Übertragslogik gemäß der vorliegenden Erfindung bereitstellt.
- Fig. 6b eine alternative Darstellung der Schaltung von Fig. 6a.
- Fig. 6c eine Wahrheitstabelle zum Anzeigen der Beziehung zwischen den Variablen A, B Cin und Cout.
- Fig. 7a ein schematisches Diagramm einer Schaltung, die ein Volladdiererbit bereitstellt.
- Fig. 7b eine alternative Darstellung der Schaltung von Fig. 7a.
- Fig. 8a ein vereinfachtes Diagramm des Arithmetikteils der in der Xilinx, Inc. XC4000 Bauelementefamilie zur Anwendung kommenden Übertragslogik.
- Fig. 8b ein vereinfachtes Diagramm des Arithmetikteils der Übertragslogik gemäß der vorliegenden Erfindung.
- Fig. 9a eine Nachschlagtabellen-Ausgestaltung der Funktionsgeneratoren der Fig. 8a und 8b.
- Fig. 9b eine weitere Nachschlagtabellen-Ausgestaltung der Funktionsgeneratoren der Fig. 8a und 8b.
- Fig. 9c einen Karnaugh-Plan für den Nachschlagtabellen-Funktionsgenerator von Fig. 9a oder 9b.
- Fig. 9d eine der 2¹&sup6; Logikfunktionen, die mit dem Nachschlagtabellen- Funktionsgenerator von Fig. 9a oder 9b ausgeführt werden können.
- Fig. 10 ein schematisches Diagramm eines Logikblocks mit zwei Stufen, der in der Xilinx, Inc. XC4000-Bauelementefamilie zum Einsatz kommt, das die Schaltung von Fig. 8a beinhaltet.
- Fig. 11a ein schematisches Diagramm einer Logikmatrix, die eine Ausgestaltung einer dedizierten Übertragslogik-Verbindungsschaltungsanordnung zeigt.
- Fig. 11b ein schematisches Diagramm, das ein Beispiel einer Übertrags- Verbindungsschaltungsanordnung zeigt, die mit programmierbaren Verbindungen ausgeführt werden kann.
- Fig. 11c ein schematisches Diagramm einer Ausgestaltung einer dedizierten Übertragslogik-Verbindungsschaltungsanordnung.
- Fig. 12a ein schematisches Diagramm eines konfigurierbaren Logikblocks (CLB) gemäß der vorliegenden Erfindung, mit vier Stufen, der die Schaltung von Fig. 8b ausführt, wenn sie mit einem anderen CLB zum Errechnen der Summe kombiniert wird.
- Fig. 12b einen weiteren CLB gemäß der vorliegenden Erfindung, der die Schaltung von Fig. 8b unter Verwendung von dedizierter Hardware zum Errechnen der Summe ausführt.
- Fig. 12c eine Fliese, die den CLB von Fig. 12a oder 12b mit einer Verbindungsleitungsverlegung zum Verbinden einer Matrix von CLBs kombiniert.
- Fig. 12d zwei der Fliesen von Fig. 12c, die horizontal miteinander verbunden sind.
- Fig. 12e ein FPGA-Chip, das Kernfelder, wie z. B. in Fig. 12c gezeigt, sowie Rand- und Eckfelder für chipexterne Verbindungen aufweist.
- Fig. 8a illustriert eine Schaltung des Standes der Technik zum Ausführen einer Übertragslogik in einem konfigurierbaren Logikblock. Fig. 8b illustriert eine Schaltung gemäß der vorliegenden Erfindung. Erfindungsgemäß wird die Arithmetiklogik in einer Kombination von programmierbaren Bauelementen und Hardware ausgeführt. Wie in der Anordnung des Standes der Technik wird der Übertragspfad mit Hardware ausgeführt, um eine hohe Geschwindigkeit zu erzielen, umfassend MUX 913 in Fig. 8a und MUX 923 in Fig. 8b. Wie in Fig. 8a gezeigt, werden auch die Datenmodifikationsfunktion 911 und das XOR-Gate 912 zum Empfangen von Eingangssignalen in dedizierter Hardware ausgeführt, während zusätzliche Datenmodifikationsfunktionen 914 und 917 sowie XOR-Gates 915 und 916 zum Errechnen der Summe im programmierbaren Funktionsgenerator 902 ausgeführt werden.
- In Fig. 8b werden die Datenmodifikationsschaltungsanordnung 921 und das XOR- Gate 922 im Funktionsgenerator 903 ausgeführt, während das XOR-Gate 926 zum Errechnen der Summe in der Einheit 904 ausgeführt wird, die entweder ein programmierbarer Funktionsgenerator oder ein dediziertes XOR-Gate ist.
- Die Fig. 10, 11a, 11b und 11c zeigen Schaltpläne, die in den Bauelementen der Xilinx XC4000 Familie zum Ausführen der Struktur von Fig. 5a eingesetzt werden.
- In Fig. 10 ist die Schnellübertragslogik in eine Schaltung eingebaut, die Nachschlagtabellen-Funktionsgeneratoren, Multiplexer, Speicherzellen und zusätzliche Logik-Gates aufweist, die bei der Konfiguration der Schaltung für mehrere Einsatzzwecke verwendet werden.
- Der Betrieb der Nachschlagtabellen-Funktionsgeneratoren wird in Verbindung mit den Fig. 9a-9d beschrieben. Fig. 9a illustriert eine 16-Bit-Nachschlagtabelle, die ein Ausgangssignal als Reaktion auf eine von sechszehn möglichen Kombinationen von vier Eingangssignalen erzeugen kann. Somit steuern die Eingangssignale A und B den X- Decoder zum Auswählen von einer der vier Spalten in der 16-Bit-Nachschlagtabelle. Die Eingangssignale C und D steuern den Y-Decoder zum Auswählen von einer der vier Reihen in der 16-Bit-Nachschlagtabelle. Die 16-Bit-Nachschlagtabetle erzeugt ein Ausgangssignal, das das Bit am Schnittpunkt der gewählten Reihe und Spalte repräsentiert. Es gibt 16 solche Schnittpunkte und somit 16 solche Bits. Es gibt 2¹&sup6; mögliche Funktionskombinationen, die mit 16 Bits repräsentiert werden können. Wenn also ein NOR-Gate von den 16 Bits in der Nachschlagtabelle simuliert werden soll, dann würde der Kamaugh-Plan für die Nachschlagtabelle dem in Fig. 9c gezeigten entsprechen. In Fig. 9c sind alle Bits "0", mit Ausnahme des Bits am Schnittpunkt der ersten Reihe (die A = 0, B = 0 repräsentiert) und der ersten Spalte (die C = 0, D = 0 repräsentiert). Wenn eine weniger häufig verwendete Funktion mit der 16-Bit-Nachschlagtabelle erzeugt werden soll (z. B. wenn ein Ausgangssignal "1" für A = 1, B = 0, C = 0, D = 0 gewünscht wird), dann wird eine binäre "1" am Schnittpunkt der zweiten Reihe und der ersten Spalte gespeichert. Wird eine binäre "1" gewünscht, wenn A = 0, B = 0, C = 0 und D = 0 und auch dann, wenn A = 1, B = 0, C = 0 und D = 0, dann wird eine binäre "1" an jedem der Schnittpunkte der ersten Spalte mit der ersten Reihe und der zweite Reihe gespeichert. Die durch diese Beladung der Nachschlagtabelle repräsentierte Logikschaltung entspricht der in Fig. 9d gezeigten. Somit repräsentiert die Nachschlagtabelle von Fig. 9a eine elegante und einfache Implementation von einer beliebigen der 2¹&sup6; Logikfunktionen.
- Fig. 9b zeigt eine weitere Struktur zur Erzielung eines beliebigen der sechszehn Auswahlbits. Jedes der Register 0-15 in der senkrechten Spalte auf der linken Seite mit der Bezeichnung "16 Select Bits" enthält ein gewähltes Signal, entweder eine binäre 1 oder 0. Durch Wählen der richtigen Kombination der Signale A, B, C oder D sowie deren Komplemente wird ein bestimmtes Bit, das an einem bestimmten der 16 Orte im 16 Select Bits Register gespeichert ist, zur Ausgangsleitung übertragen. So wird beispielsweise zum Senden des Bits im "1" Register zur Ausgangsleitung das Signal A, B, C, D an die so bezeichneten Leitungen angelegt. Zum Senden des mit "15" bezeichneten Signals am sechszehnten Ort im 16 Select Bits Register zur Ausgangsleitung wird das Signal A, B, C, B an die entsprechenden Spalten angelegt. Auch hier kann wieder eine beliebige der 2¹&sup6; Logikfunktionen mit dieser Struktur implementiert werden.
- Bezugnehmend auf Fig. 10, Eingangsanschlüsse F1 und F2 erzeugen jeweils Eingangssignale A&sub0; und B&sub0;. Der Funktionsgenerator F, das XNOR-Gate X101, die Speicherzellen CL0, CL1, der Multiplexer M2 und ein dritter Eingangsanschluss F3 wirken zusammen, damit dieselbe Schaltung selektiv als Addierer oder als Subtrahierer fungieren kann. Ein Bauelement, bei dem eine Speicherzelle (nicht dargestellt) ein Ausgangssignal S&sub0; vom Funktionsgenerator F erhält, ermöglicht es der Schaltung, auch als Akkumulator oder Zähler zu fungieren. Ein Eingang des XNOR-Gates X101 ist der Ausgang von M2, und der andere Eingang ist der Ausgang des NOR-Gates N201. Die beiden Eingänge zum NOR- Gate N201 sind das Komplement des Signals des Eingangsanschlusses F2 und das Komplement des Wertes in CL7. Damit die Schaltung als mittlere Stufe in einem Mehrbit- Addierer fungieren kann, wird CL7 zum Anlegen eines niedrigen Signals an das NOR-Gate N201 gesetzt. Dies hat zur Folge, dass der Ausgang des NOR-Gates N201 das Signal am Eingangsanschluss F2 ist.
- Um zu steuern, ob die Schaltung im Inkrementiermodus oder im Dekrementiermodus arbeitet, bestimmt der Multiplexer M2, ob das vom NOR-Gate N201 angelegte Signal vom XNOR-Gate X101 invertiert wird oder nicht. Der von M2 bereitgestellte Wert wird von F3 oder CL1 gemäß Steuerung durch CL0 bereitgestellt. CL1 wird typischerweise dazu verwendet, einen Statikwert zu erzeugen, während F3 ein sich dynamisch änderndes Signal erzeugt.
- Wenn M2 bewirkt, dass die Schaltung im Inkrementiermodus arbeitet, dann wird das Signal B&sub0; durch das XNOR-Gate X101 zum XNOR-Gate X103 übertragen. Die Wahrheitstabelle eines XNOR-Gates zeigt, dass ein Eingangssignal an einem Anschluss eines XNOR-Gates zum Ausgang des XNOR-Gates weitergeleitet wird, wenn das Signal am anderen Eingangsanschluss hoch ist. Wenn also der Ausgang von M2 hoch ist, dann arbeitet die Übertragslogik im Inkrementiermodus. Wenn jedoch der Ausgang von M2 niedrig ist, dann wird das Signal B&sub0; durch das XNOR-Gate X101 invertiert, und die Übertragslogik der Schaltung arbeitet im Dekrementiermodus. Ferner, wenn das Steuersignal zum Wählen des Inkrementier-/Dekrementiermodus am F3-Anschluss entsteht, dann wird dieses Signal auch am Funktionsgenerator F angelegt, so dass die im Funktionsgenerator F implementierte Summenlogik demgemäß ebenfalls im Inkrementier- oder Dekrementiermodus arbeitet.
- Man nehme zunächst an, dass die Schaltung als Addierer oder Inkrementierer verwendet wird und dass der Multiplexer M2 ein hohes Signal erzeugt, so dass der Eingang B&sub0; zum Eingang des XNOR-Gates X103 weitergeleitet wird.
- Eine zweite Gruppe von Speicherzellen, CL2-CL5 und CL7, arbeiten zusammen, damit die Schaltung von Fig. 10 mehrere Funktionen ausführen kann. Damit die Schaltung als mittlere Stufe in einem Mehrbit-Addierer arbeiten kann, werden die Speicherzellen CL3, CL4 und CL5 in den H-Zustand gesetzt. Somit fungiert die Kombination von X103 und 1104 als XOR-Gate (äquivalent zum XOR-Gate 91 in Fig. 7a), so dass der Ausgang des XNOR- Gates X103 den Inverter 1104 passiert. Durch das Setzen der Speicherzelle CL4 in den H- Zustand wird das Signal vom Anschluss F1 auf die Leitung 105 gesetzt. In dieser Konfiguration ist die F-Stufe von Fig. 10 äquivalent zur Übertragsschaltung der Fig. 6a und 7a. Das Signal von F1 wird zu C&sub1; übertragen, wenn der Transistor T102 (äquivalent zum Transistor 93 von Fig. 7a) als Reaktion darauf, dass A&sub0; gleich B&sub0; ist, einschaltet. Durch das Setzen der Speicherzelle CL5 in den H-Zustand wird verhindert, dass der Wert in Zelle CL7 gleichzeitig zur Leitung 105 übertragen wird.
- Durch das Setzen der Speicherzelle CL3 in den L-Zustand wird bewirkt, dass die Transistoren T101 und T102 von dem Signal in der Speicherzelle CL2 gesteuert werden. Wenn CL2 in den H-Zustand geht, dann schaltet der Transistor T101 ein und bewirkt, dass C&sub0; zu C&sub1; übertragen wird. Mit dieser Konfiguration der Speicherzellen CL2 und CL3 kann das Übertragssignal C&sub0; die Übertragslogik der F-Stufe überspringen. Ein derartiges Überspringen der Übertragslogik einer bestimmten Stufe kann nützlich sein, wenn Layout-Beschränkungen voraussetzen, dass eine bestimmte Stufe in einem Logikblock für etwas anderes als eine Stufe in dem Addierer (oder Zähler usw.) verwendet wird.
- Wenn die Speicherzelle CL2 in den L-Zustand gesetzt wird (während CL3 noch immer im L-Zustand ist), dann schaltet T101 aus und T102 schaltet ein. Wenn T102 eingeschaltet ist, dann wird das Signal auf Leitung 105 zu C&sub0; übertragen. Das Signal auf Leitung 105 wird durch die Speicherzellen CL4, CL5 und CL7 gesteuert, die zusammen mit den Invertern I105 und I106 den 3 : 1 Multiplexer M101 bilden. Der Multiplexer M101 steuert, welches der 3 Signale, das Signal am Anschluss F1, die Ergänzung des Signals am Anschluss F3 ( )oder das Signal in der Speicherzelle CL7, auf die Leitung 105 gesetzt wird. Man beachte, dass das Signal auf F3 von Multiplexer M2 oder von Multiplexer M101 verwendet werden kann.
- Wie zuvor bemerkt, wenn die F-Stufe als mittlere Stufe in einem Mehrbit-Addierer arbeitet, dann werden Speicherzelten so programmiert, dass das Signal am Anschluss F1 auf die Leitung 105 gesetzt wird. Außerdem wird CL3 in den H-Zustand gesetzt, so dass der vom XNOR-Gate X103 erzeugte Wert, der als Funktion der A&sub0; und B&sub0; Eingänge auf den Leitungen F1 und F2 gesetzt wird, bestimmt, ob das Eintragssignal C&sub0; oder der Wert von F1 übertragen wird.
- Damit die F-Stufe das niedrigstwertige Bit in einem Mehrbit-Addierer addiert, kann der Eintrag auf Null voreingestellt werden, indem eine logische Null entweder an EintragT oder EintragB angelegt und die Speicherzelle MC zum Übertragen des Signals gesetzt wird. (Das Erzeugen dieses logischen Null-Signals wird nachfolgend in Zusammenhang mit Fig. 11a erörtert.)
- Alternativ kann zum Voreinstellen des Eintragssignals C&sub0; der G-Stufe jedes beliebige Signal auf , das Signal in CL7 oder das Signal auf F1 verwendet werden. Das Signal wird so gewählt, dass es auf die Leitung 105 gesetzt wird, indem CL5 in den H- Zustand und CL4 in den L-Zustand gesetzt wird, und das Signal in CL7 wird so gewählt, dass sowohl CL4 als auch CL5 in den L-Zustand gebracht werden. Der F1- Eingangsanschluss kann auch verwendet werden, um das C&sub1;-Signal voreinzustellen, wenn das Bit mit der niedrigsten Ordnung in der G-Stufe errechnet wird. F1 kann verwendet werden, wenn der F1-Eingang zum F-Funktionsgenerator nicht benötigt wird. Um F1 als Eingang zum Voreinstellen von C&sub1; zu verwenden, werden Signale im H-Zustand in den Speicherzellen CL4 und CL5 gespeichert. Außerdem wird CL3 in den L-Zustand und CL2 in den L-Zustand gesetzt, wodurch der Transistor T101 aus- und der Transistor T102 eingeschaltet wird, so dass das Signal auf Leitung 105 zu C&sub1; Obertragen wird.
- Die Speicherzelle CL7 fungiert nicht nur als Teil des 3 : 1 Multiplexers M101, sondern sie steuert auch einen Eingang zu den NOR-Gates N201 und N202. Damit die F-Stufe als mittlere Stufe in einem Mehrbit-Addierer zum Addieren der Werte A&sub0; und B&sub0; an den Anschlüssen F1 und F2 fungieren kann, wird CL7 in den H-Zustand gesetzt, so dass der Ausgang von N201 das Signal arn Eingangsanschluss F2 ist. Zum Addieren einer Konstante zum Eingangswert A&sub0; auf F1 wird CL7 in den L-Zustand gesetzt. Dadurch wird der Eingang von N201 in den H-Zustand gezwungen, wodurch der Ausgang von N201 in den L-Zustand gezwungen und bewirkt wird, dass der Summand vom Multiplexer M2 gewählt wird. Die Speicherzelle CL0 kann bewirken, dass M2 zwischen dem Anlegen des Wertes in CL1 und des Wertes von F3 an das XNOR-Gate X101 zum Erzeugen eines Ausgangs gewählt wird, der von X103 zu A&sub0; auf Anschluss F1 addiert wird. Somit kann durch Programmieren von CL7 in den L-Zustand ein Bit auf einen konstanten Wert programmiert werden, der zu einem Eingangswert hinzuaddiert wird, ohne dass die Verbindungsressourcen in Anspruch genommen werden müssen, mit denen der Anschluss F2 verbunden würde, die zum Übertragen von Signalen zu anderen Logikblöcken (nicht dargestellt) gebraucht werden könnte.
- Nicht alle Kombinationen von Logikwerten in den Speicherzellen von Fig. 10 sind akzeptabel. So könnte man sich beispielsweise in M101 darüber streiten, ob die Speicherzelle CL4 im H-Zustand und die Speicherzelle CL5 im L-Zustand sein muss, da sowohl das hohe als auch das niedrige Signal gleichzeitig auf Leitung 105 gesetzt werden können. Um einen solchen Widerspruch zu verhindern, kann Software zum Programmieren der Speicherzellen so programmiert werden, dass eine solche Kombination verhindert wird.
- Alternativ kann eine zusätzliche Speicherzelle hinzugefügt werden, um nur eines der beiden Signale zu wählen, das auf Leitung 105 gesetzt wird.
- Wie oben erörtert, werden zwei Stufen, die F-Stufe und die G-Stufe, die jeweils ein Bit eines Mehrbit-Addierers repräsentieren, wie in Fig. 10 gezeigt kaskadenartig zusammengeschaltet. Somit kann ein einzelner Logikblock zwei Bits in einer Mehrbit- Funktion implementieren, die Übertragslogik benutzt. Dies ist eine erhebliche Verbesserung der Dichtigkeit von Komponenten, die zum Ausführen von Funktionen erforderlich sind, die Übertragslogik verwenden, im Vergleich zu den früheren Xilinx-Bauelementen. Im Gegensatz dazu wird, wie in Fig. 5 gezeigt, ein Mehrbit-Zähler in der Schaltungsanordnung des Standes der Technik mit einer Dichtigkeit von nur einem Bit pro Logikblock realisiert.
- Was die G-Stufe von Fig. 10 betrifft, so empfängt ein Multiplexer M3 in der G-Stufe das Austragssignal der F-Stufe, C&sub1;, nachdem es durch zwei Inverter I107 und I108 gepuffert wurde. In einem Addierer wird das Austragssignal C&sub1; im G-Funktionsgenerator mit den Summanden A&sub1; und B&sub1; kombiniert, die jeweils am Anschluss G4 und G1 vorliegen, um das Summenbit S&sub1; zu errechnen. Das Austragssignal C&sub1; der F-Stufe steht ebenfalls zur Verfügung, um vom Transistor T103 zum Austrag Ci+2 der G-Stufe übertragen zu werden, je nach den Konfigurationsbedingungen der Übertragslogik der G-Stufe.
- Ein großer Teil der Übertragslogik der G-Stufe ist identisch mit der Übertragslogik der F-Stufe. So arbeitet beispielsweise das XNOR-Gate X102 der G-Stufe analog zum XNOR-Gate X101 der F-Stufe und wird vom Ausgang desselben Multiplexers M2 gesteuert, um zu ermitteln, ob die G-Stufe als Addierer oder Inkrementierer einerseits oder als Subtrahierer oder Dekrementierer andererseits fungiert. Zusätzlich fungiert das NOR-Gate N202 der G-Stufe als NOR-Gate N201 der F-Stufe, wo ein Ausgang von der Speicherzelle CL7 gesteuert wird, um den Summanden der G-Stufe auf einen konstanten Wert zu zwingen, ohne dass die Verbindungsressourcen verwendet werden müssen, die mit den Eingangsanschlüssen der G-Stufe gekoppelt sind.
- Im Gegensatz zu den Speicherzellen CL2 und CL3 der F-Stufe hat die G-Stufe jedoch nur eine Speicherzelle CL6. CL6 arbeitet ähnlich wie CL3 und steuert, ob die G-Stufe als Mittelstufe in einem Mehrbit-Addierer fungiert oder ob das Übertragssignal die Übertragslogik der G-Stufe umgeht. Wenn CL6 im H-Zustand ist, dann schaltet der Transistor T105 ein, und die G-Stufe fungiert als Mittelstufe in einem Mehrbit-Addierer. Wenn CL6 im L-Zustand ist, wodurch bewirkt wird, dass ein niedriges Signal durch den Transistor T106 an den Inverter I110 angelegt wird, dann schaltet T103 ein (und T104 aus). Durch das Einschalten des Transistors T103 kann das Übertragssignal bei C&sub1; die Übertragslogik der G-Stufe umgehen. Wie bei der F-Stufe, kann das Umgehen der G-Stufe oder einer beliebigen anderen bestimmten Stufe in einem Logikblock, von einem Design- Layout möglicherweise verlangt werden, das die G-Stufe für eine andere Funktion benötigt.
- Die Multiplexer M3 und M4 in der G-Stufe werden auf andere Weise verbunden und benutzt als die Multiplexer M1 und M2 der F-Stufe. Der Multiplexer M2 der F-Stufe steuert, ob die Übertragslogik der G-Stufe sowie die Übertragslogik der F-Stufe im Inkrementiermodus oder im Dekrementiermodus arbeitet. Die G-Stufe hat jedoch ihren eigenen Multiplexer M4, der steuert, ob die Summenlogik im Funktionsgenerator G im Inkrementiermodus oder im Dekrementiermodus arbeitet. M4 ist so verdrahtet, dass die Summenlogik auf diese Weise gesteuert wird, da einer seiner Eingänge, G3, mit derselben Verbindungsschaltungsanordnung (nicht dargestellt) gekoppelt ist wie der entsprechende Eingang F3, der den Inkrementier-/Dekrementiermodus des F-Funktionsgenerators steuert.
- Die anderen Eingänge der Multiplexer M3 und M4 der G-Stufe sind so verteilt, dass gleichzeitig benötigte Signale nicht in denselben Multiplexer eingehen. Zum Arbeiten als mittlere Stufe in einem Mehrbit-Addierer, benötigt der G-Funktionsgenerator sowohl ein Signal, das steuert, ob er im Inkrementier- oder im Dekrementiermodus arbeitet, als auch ein Austragssignal von dem geringerwertigen Bit. Somit wird das an F3 angelegte Inkrementier- /Dekrementiermodus-Signal auch durch G3 an den Multiplexer M4 angelegt, und das Austragssignal vom geringerwertigen Bit wird zum Multiplexer M3 geleitet, so dass beide Signale gleichzeitig dem G-Funktionsgenerator zur Verfügung stehen.
- Um einen Überlauf zu erfassen, wie nachfolgend beschrieben wird, müssen ferner die Signale C&sub1; und C&sub0; verglichen werden und daher gleichzeitig zur Verfügung stehen. Somit wird das Signal C&sub1; an den Multiplexer M3 und das Signal C&sub0; an den anderen Multiplexer M4 angelegt, so dass beide zusammen als Eingang zum G-Funktionsgenerator zur Verfügung stehen.
- Die Schaltung von Fig. 10, die zwei kaskadenartig zusammengeschaltete Stufen umfasst, hat ferner die Fähigkeit, in der G-Stufe einen Überlauf der im vorherigen Block stattgefundenen Verarbeitung des höchstwertigen Bits zu erfassen. Es ist in der Technik bekannt, dass ein Überlauf dadurch erfasst wird, dass erkannt wird, dass der Übertrag des Vorzeichenbits sich vom Übertrag des höchstwertigen Bits unterscheidet. Somit kann das Erfassen eines Überlaufzustands erfolgen, indem die XOR-Funktion des Übertrags des Vorzeichenbits und des Übertrags des höchstwertigen Bits errechnet wird. In der in Fig. 10 gezeigten Schaltung wird der Übertrag des höchstwertigen Bits bei C&sub0; präsentiert, dem Eintrag zur F-Stufe, und der Übertrag des Vorzeichenbits (der eine Funktion der A&sub0; und B&sub0; Signale zur F-Stufe und des C&sub0; Signals ist) wird an C&sub1; angelegt, dem Austrag der F-Stufe. Co wird durch I120 und I121 zum Multiplexer M4 in der G-Stufe geleitet. C&sub1; wird durch I107 und I108 zum Multiplexer M3 in der G-Stufe geleitet. Zum Konfigurieren der Schaltung von Fig. 10 zum Erfassen eines Überlaufs wird M3 so programmiert, dass C&sub1; zum G- Funktionsgenerator geleitet wird, und M4 wird so programmiert, dass C&sub0;, zum G- Funktionsgenerator geleitet wird. Der G-Funktionsgenerator wird so programmiert, dass er die XOR-Funktion von C&sub1; und C&sub0; errechnet, was, wie oben erörtert, ein Überlauferfassungssignal ist.
- Die Schaltung von Fig. 10 kann auch im Dekrementiermodus arbeiten. Im Dekrementiermodus kann die Schaltung einen Zähler dekrementieren oder eine Subtraktion durchführen, einschließlich einer Subtraktion einer Konstante von einer Variablen.
- Mit der Schaltung von Fig. 10 können mehrere Subtraktionsarten eingesetzt werden. Drei übliche Subtraktionsarten sind Zweier-Komplement, Einer-Komplement und Vorzeichen-Größe.
- Wenn der Zweier-Komplement-Subtraktionsmodus verwendet werden soll, dann wird das Eintragsbit des niedrigstwertigen Bits auf eine logische Eins voreingestellt. Soll das niedrigstwertige Bit von der F-Stufe kommen, dann wird der Eintrag des niedrigstwertigen Bits durch EintragT oder EintragB voreingestellt, und die Speicherzelle MC wird so gesetzt, dass sie das Signal zu C&sub0; überträgt. Um ein voreingestelltes Signal an EintragB oder EintragT der F-Stufe anzulegen, wird das voreingestellte Signal in der F-Stufe eines anderen Logikblocks erzeugt und mit der F-Stufe des niedrigstwertigen Bits mit einem Mittel verbunden, das nachfolgend in Verbindung mit den Fig. 10-12 erörtert wird. Das Signal kann in der F-Stufe wie oben erörtert generiert und durch die G-Stufe zum nächsten Logikblock geleitet werden, indem Transistor T103 ein- und Transistor T104 ausgeschaltet wird. Somit wird die Übertragslogik in der G-Stufe dieses Logikblocks zum Erzeugen eines voreingestellten Signals umgangen.
- Alternativ wird, wenn das niedrigstwertige Bit von der G-Stufe kommen soll, in einer Zweier-Komplement-Subtraktion der Transistor T101 aus- und der Transistor T102 eingeschaltet (durch das Setzen von CL3 und CL2 in den L-Zustand), so dass einer der drei Eingänge des Multiplexers M101 zum Voreinstellen von C&sub1; auf eine logische Eins verwendet werden kann. Multiplexer M101 kann die logische Eins durch den F3-Anschluss bereitstellen, indem ein L-Signal an F3 angelegt und CL5 in den H-Zustand und CL4 in den L-Zustand gesetzt wird. Der Multiplexer M101 kann die logische Eins als gespeicherten Wert in der Speicherzelle CL7 bereitstellen, indem CL7 in den H-Zustand, CL5 in den L-Zustand und CL4 in den L-Zustand gesetzt wird. Der Multiplexer M101 kann die logische Eins durch den F1-Eingangsanschluss bereitstellen, indem ein hohes Signal an F1 angelegt wird und CL5 sowie CL4 in den H-Zustand gesetzt werden.
- Beim Durchführen einer Einer-Komplement-Subtraktion oder einer Vorzeichen- Größen-Subtraktion wird der Eintrag des niedrigstwertigen Bits gewöhnlich auf eine logische Null voreingestellt. Im Falle einer Einer-Komplement-Subtraktion muss der Austrag des Vorzeichenbits zum niedrigstwertigen Bit addiert werden, um die endgültige Antwort zu erzeugen. Dies kann dadurch erfolgen, dass der Austragsanschluss des Vorzeichenbits mit dem Eintragsanschluss des niedrigstwertigen Bits verbunden wird, anstatt den Eintrag des niedrigstwertigen Bits voreinzustellen. Alternativ wird der Austrag des Vorzeichenbits zur generierten Summe addiert. Wenn das niedrigstwertige Bit in der F-Stufe errechnet werden soll, dann wird der Eintrag C&sub0; auf Null voreingestellt, indem eine logische Null an EintragT oder EintragB angelegt und die Speicherzelle MC so gesetzt wird, dass das Signal zu C&sub0; gesendet wird. Wenn das niedrigstwertige Bit in der G-Stufe errechnet werden soll, dann wird der Eintrag C&sub1; durch einem der drei Pfade im Multiplexer M101 wie oben erörtert auf Null voreingestellt. Zum Erzielen der logischen Null durch den F3-Anschluss wird ein H-Signal an F3 angelegt (da es invertiert wird). Zum Erzeugen des Logiksignals durch CL7 wird die logische Null an CL7 angelegt. Zum Erzeugen der logischen Null durch F1 wird ein L-Signal an F1 angelegt.
- Für eine Zweier-Komplement- und eine Einer-Komplement-Subtraktion muss der Ausgang des Multiplexers M2 in den L-Zustand gesetzt werden. Für eine Vorzeichen- Größen-Subtraktion ist der Ausgang von M2 davon abhängig, ob die Vorzeichen der beiden zu subtrahierenden Zahlen gleich sind. Für eine Vorzeichen-Größen-Subtraktion wird der Ausgang von M2 in den L-Zustand gesetzt, wenn die beiden Zahlen das gleiche Vorzeichen haben. Der Ausgang von M2 wird in den H-Zustand gesetzt, wenn die beiden Zahlen entgegengesetzte Vorzeichen haben.
- Nachfolgend wird ein Mehrbit-Addierer unter Bezugnahme auf Fig. 11a beschrieben. Hier wird eine geordnete Matrix von Blöcken 1-4, bei der jeder Block eine Schaltung gemäß Fig. 10 aufweist, so vorgesehen, dass der in Fig. 10 mit Ci+2 und in Fig. 11a mit Austrag an jedem Logikblock bezeichnete Austrag mit dem Eintrag des Logikblocks darüber, in beiden Figuren mit EintragB bezeichnet, und dem Eintrag des Logikblocks darunter verbunden wird, der in beiden Figuren mit EintragT bezeichnet ist. Ferner kann jeder Logikblock selektiv ein Übertragssignal entweder vom Logikblock darüber (an Anschluss EintragT) oder vom Logikblock darunter (am Anschluss EintragB) empfangen. Ob ein Logikblock ein Übertragssignal vom Logikblock darüber oder vom Logikblock darunter empfängt, wird von der Speicherzelle MC gesteuert. Wenn MC im H-Zustand ist, dann ist der Transistor T152 eingeschaltet, und das Übertragssignal vom Logikblock darunter wird am Anschluss EintragB empfangen. Wenn MC im L-Zustand ist, dann ist der Transistor T151 eingeschaltet, und das Übertragssignal vom Logikblock darüber wird am Anschluss EintragT empfangen. So verbindet beispielsweise die Leitung L112 den Austragsanschluss von Block 2 mit dem Eintragsanschluss EintragB von Block 1 und mit dem Eintragsanschluss EintragT von Block 3. Ebenso verbindet die Leitung L113 den Austragsanschluss von Block 4 mit dem Eintragsanschluss EintragB von Block 3 und dem Eintragsanschluss EintragT von Block 5 (nicht dargestellt). Somit empfängt Block 3 ein Übertragssignal an EintragB von Block 4 auf L113 und an EintragT von Block 2 auf L112. Die Art und Weise, in der die Speicherzelle MC programmiert wird, bestimmt, welcher der Transistoren T151 und T152 eingeschaltet ist, und somit, welche der Übertragssignale von der internen Schaltungsanordnung von Logikblock 3 verwendet werden.
- Wie in Fig. 10 dargestellt, werden zwei zusätzliche Gate-Verzögerungen pro zwei Bits durch die Inverter I101 und I102 addiert, um die Signalqualität auf einer langen Leitung zu erhalten (etwa vier Gate-Verzögerungen für vier Bits). Im Gegensatz dazu steht das Ausgangssignal Cout von vier kaskadierten konventionellen Schnellübertrags-Volladdierern, wie z. B. in Fig. 2 gezeigt, erst dann zur Verfügung, wenn ein XOR-Gate, vier AND-Gates und vier OR-Gates übertragen werden (neun Gate-Verzögerungen). Während Vorgriffsübertragsschaltungen, wie z. B. in Fig. 3 gezeigt, schnellere Übertragsfortpflanzungen nur durch eine weit höhere Dichtigkeit von Komponenten erzielen, braucht die Schaltung von Fig. 10 nicht mehr Komponenten als ein konventioneller Schnellübertragsaddierer.
- Der Hauptvorteil der dedizierten Übertragsverbindungsschaltungsanordnung besteht darin, dass sie weitaus schneller arbeitet als eine programmierbare Übertragsverbindungsschaltungsanordnung. Diese erhöhte Leistung geht auf Kosten der Flexibilität der programmierbaren Verbindungen. Die in Fig. 11a gezeigte dedizierte Verbindungsschaltungsanordnung ist jedoch flexibel, da die Übertragssignale in einer von zwei Richtungen durch die Matrix übertragen werden können.
- Fig. 11b zeigt eine Verbindungsstruktur, die keine dedizierte Verbindungsschaltungsanordnung zum Übertragen von Signalen in einer Reihe von Richtungen durch eine Matrix verwendet. Fig. 11 zeigt nur eine Teilmenge von Speicherzellen und Verbindungen, die in der Verbindungsstruktur zum Verbinden von Logikblöcken zur Bildung eines Mehrbit-Addierers oder einer anderen Mehrbit-Funktion notwendig wären, die Übertragslogik verwendet. Gemäß Fig. 11 kann der Ausgang C&sub0; von Logikblock 11-2 entweder mit dem Logikblock 11-1 oder mit dem Logikblock 11-3 verbunden werden, indem ein entsprechender Transistor eingeschaltet wird, den die Speicherzelte M11- 2 steuert, die den Ausgang des Logikblocks 11-2 mit der Verbindungsleitung 11-a verbindet. Wenn es gewünscht wird, den Ausgang C&sub0; des Logikblocks 11-2 mit dem Eingang CIB von Logikblock 11-1 zu verbinden, dann wird die Speicherzelle M11-1 so programmiert, dass sie ihren entsprechenden Transistor einschaltet, so dass das Signal auf Leitung 11-a zum Anschluss CIB von Block 11-1 übertragen wird. Wenn es gewünscht wird, den Ausgang C&sub0; mit dem Logikblock 11-3 zu verbinden, dann wird die Speicherzelle M11-3 eingeschaltet, um die Verbindungsleitung 11-a mit dem Eingang CIT des Logikblocks 11-3 zu verbinden. Weitere Speicherzellen (nicht dargestellt) können ebenfalls so programmiert werden, dass die Richtung der Signalfortpflanzung von einem Logikblock zum nächsten gesteuert wird. So lässt sich leicht ersehen, dass eine große Zahl von Speicherzellen benötigt wird, um Flexibilität bei der Steuerung der Fortpflanzungsrichtung des Übertragssignals durch die Stufen eines Mehrbit-Addierers zu erzielen.
- Eine in Fig. 11c gezeigte weitere Schaltung weist eine weiterentwickelte dedizierte Übertragsverbindungsschaltungsanordnung auf. Diese dedizierte Verbindungsschaltungsanordnung ermöglicht die Erstellung einer Übertragskette auf serpentinenartige Weise mit beliebiger Lange. Einige der Blöcke sind wie in Fig. 11a konfiguriert, d. h. so, dass das Austragssignal zum Logikblock darüber und zum Logikblock darunter übertragen wird. Am oberen und am unteren Rand der Matrix sind die Schaltungen jedoch unterschiedlich konfiguriert. Am oberen Rand wird das Austragssignal eines Logikblockes zum Eintrag des unteren Logikblockes und zum Eintrag des Logikblockes auf der rechten Seite übertragen. Ferner empfängt jeder obere Logikblock ein Eintragssignal vom Logikblock darunter und von dem Logikblock auf der linken Seite. Jede Schaltung am Boden ist so konfiguriert, dass das Austragssignal eines Logikblocks zum Eintrag des Logikblocks darüber und zum Eintrag des Logikblocks auf der rechten Seite übertragen wird. Ferner empfängt jede untere Schaltung ein Eintragssignal vom Logikblock darüber und vom Logikblock auf der linken Seite. Die Speicherzelle MC jedes Logikblocks steuert, welches Eintragssignal der beiden verfügbaren Eintragssignale von dem Logikblock empfangen wird, wie in Verbindung mit 11a erörtert wurde.
- Die in Fig. 11c gezeigte hochentwickelte dedizierte Verbindungsschaltungsanordnung ist insbesondere bei der Erzielung erhöhter Flexibilität bei Design-Layouts nützlich. Mehrbit-Addierer oder -zähler oder andere Mehrbit- Arithmetikfunktionen brauchen nicht auf eine bestimmte Spalte von Logikblöcken beschränkt zu sein. So kann beispielsweise ein Acht-Bit-Zähler in Hufeisenkonfiguration ausgeführt werden, die aus Logikblöcken B3, B4, A4 und A3 besteht, wobei A3 das niedrigstwertige Bit und das nächste höherwertige Bit, A4 die nächsten beiden höherwertigen Bits, B4 das nächste und schließlich B3 die beiden höchstwertigen Bits enthält. Die Speicherzellen MC (Fig. 10) jedes Blockes werden so programmiert, dass das Übertragssignal von C&sub0; von Logikblock A3 zu CIT von Logikblock A4, dann von C&sub0; von Logikblock A4 zu CIB von Logikblock B4 und schließlich von C&sub0; von Logikblock B4 zu CIB von Logikblock B3 gesendet wird. Da die interne Schaltungsanordnung der Logikblöcke (wie in Fig. 10 gezeigt) die Umgehung der Übertragslogik von (einem) beliebigen Bit(s) ermöglicht, braucht der Acht-Bit- Zähler (oder eine andere Funktion mit Übertragslogik) nicht in benachbarten Blöcken realisiert zu werden. So könnten sich beispielsweise die niedrigstwertigen Bits im Logikblock A2 anstatt A3 befinden, während sich die übrigen sechs Bits wie im obigen Beispiel in A4, B4, B3 befinden. Durch geeignetes Programmieren der Speicherzellen CL2 und CL3 und CL6 in Block A3 umgeht das Übertragssignal C&sub0; von Logikblock A2 die Übertragslogik von Logikblock A3 und geht weiter zu CIT von Logikblock A4.
- Fig. 12a illustriert einen konfigurierbaren Logikblock CLB, der die Ausgestaltung von Fig. 8b ausführt. Vier Funktionsgeneratoren F, G, H und J sind im Logikblock CLB enthalten. Die Funktionsgeneratoren F, G, H und J umfassen jeweils Nachschlagtabellen, wie oben in Verbindung mit den Fig. 9a bis 9d erörtert wurde. Somit stellt jeder Funktionsgenerator irgendeine Funktion der Eingangssignale F0 bis F3, G0 bis G3, H0 bis H3 bzw. J0 bis J3 bereit. Zum Ausführen einer Arithmetikfunktion von Eingangsvariablen A und B wird ein Bit in jedem der Funktionsgeneratoren gehandhabt. So kann beispielsweise das Summenbit S&sub0; der niedrigsten Ordnung anhand der Bits von A und B der niedrigsten Ordnung, nämlich Bits A&sub0; und B&sub0;, im F-Funktionsgenerator errechnet werden. Bit A&sub0; wird an den FB- Eingangsanschluss sowie an einen Eingangsanschluss F0, F1, F2 oder F3 des F- Funktionsgenerators angelegt. Bit B&sub0; wird an einen anderen Anschluss des F- Funktionsgenerators angelegt oder in dem Funktionsgenerator als eine Funktion der anderen Eingänge generiert. Zur Durchführung einer Addition wird eine logische 0 an die Eintragsleitung CIN angelegt. Ebenso werden die Bits A&sub1; und B&sub1; zum G-Funktionsgenerator gesendet, usw. für die Bits höherer Ordnung. Die Funktionsgeneratoren werden jeweils so programmiert, dass die entsprechende Nachschlagtabelle zum Erzeugen der XOR-Funktion der Bits A und B geladen wird, wie durch Einheit 903 von Fig. 8b angezeigt wird. (Wie in Fig. 8b gezeigt, kann der B-Eingangswert innerhalb des Funktionsgenerator in Abhängigkeit anderer Eingänge auf Leitungen generiert werden, die nicht für den A-Eingang verwendet werden. Dies ist deshalb möglich, weil der Funktionsgenerator eine beliebige Funktion von vier Eingängen bereitstellen kann). Somit führen die Funktionsgeneratoren eine beliebige Datenmodifikation 921 aus und generieren jeweils die XOR-Funktion 922 der entsprechenden Bits Ai und Bi. Diese Ausgestaltung begrenzt keine Arithmetikvorgänge zu Vier-Bit-Zahlen, weil der CLB als Teil einer Matrix von CLBs gebildet wird, und Bits höherer Ordnung in CLBs gehandhabt werden können, die über dem gezeigten CLB angeschlossen sind.
- Mit den Funktionsgeneratoren sind Schnellübertrags-MUXs C1, C2, C3 und C4 assoziiert. Der MUX C1 empfängt ein Eintragssignal CIN (das 0 ist, wenn der arithmetische Vorgang Addition ist und der F-Funktionsgenerator die Bits niedrigster Ordnung empfängt) und ein B-Eingangssignal FB, und erzeugt ein Ausgangssignal C1OUT. Der MUX C2 empfängt das C1OUT-Signal und ein zweites B-Eingangssignal GB und erzeugt ein Ausgangssignal C2OUT. Die MUXs C3 und C4 sind gleichwertig angeschlossen. Der MUX C4 erzeugt das COUT-Signal vom Logikblock CLB. Die Funktionsgeneratoren F, G, H und J erzeugen als Ausgangssignale X, Y, Z und V jeweils das entsprechende Übertragsausbreitungssignal Pi. Diese Ausgangssignale steuern Übertrags-MUXs C1, C2, C3 und C4, wie in Verbindung mit Fig. 6a erörtert wurde, und erzeugen somit eine kumulative Austragsfunktion COUT.
- Das Übertragssignal muss regelmäßig neu gespeist werden, wie in Verbindung mit den Invertern I101 und I102 von Fig. 10 erörtert wurde. Die Frequenz, mit der Neuspeisungspuffer bereitgestellt werden, ist von der Verbindungsarchitektur abhängig, in der die Erfindung zum Einsatz kommt. Wie in Fig. 12a gezeigt, wird ein Neuspeisungspuffer, der die Inverter I121 und I122 umfasst, alle vier Multiplexer im Übertragspfad oder einmal pro CLB positioniert. In einer anderen Ausgestaltung werden Neuspeisungspuffer alle zwei Multiplexer im Übertragspfad bereitgestellt, so dass zwei Neuspeisungspuffer in jedem CLB vorgesehen werden. Die Erfindung ist natürlich nicht auf eine Architektur begrenzt, bei der ein CLB vier Funktionsgeneratoren umfasst. Es sind auch viele weitere Variationen möglich.
- Die Ausgestaltung von Fig. 12a verwendet einen anderen CLB, der mit dem gezeigten identisch ist, sich aber daneben, vorzugsweise rechts oder links von dem gezeigten, befindet, um die Summe Si von Fig. 8b zu erzeugen. Zur Bereitstellung des Übertragsausbreitungssignals Pi zum Summen-CLB auf der linken oder rechten Seite werden die MUXs B1, B2, B3 und B4 von ihren jeweiligen Speicherzellen 1 und 5 gesetzt, um die Ausgänge der Übertrags-MUXs C1, C2, C3 und C4 weiterzuleiten. Die Speicherzellen 3 und 7 werden ebenso gesetzt, um zu bewirken, dass die MUXs S3 und S1 die Ausgänge der MUXs B3 und B1 weiterleiten. Somit erscheinen die Ausgänge der Übertrags-MUXs C1, C2, C3 und C4 an den Ausgangsleitungen XB, YB, ZB und VB. Im Summen-CLB auf der linken oder rechten Seite des Übertrags-CLB ist der Ausgang XB mit der Leitung FB und einem der Eingänge F0 bis F3 verbunden. Der Ausgang X ist mit einem anderen der Eingänge F0 bis F3 verbunden. Äquivalente Verbindungen werden mit den G-, H- und J-Funktionsgeneratoren vorgenommen. Im Summen-CLB erzeugen dann die Funktionsgeneratoren F, G, H und J die Summenausgänge für aufeinanderfolgende Bits.
- Fig. 12b zeigt eine weitere Ausgestaltung der Erfindung, die nur einen einzigen Funktionsgenerator pro Bit erfordert. Der CLB von Fig. 12b ist dem von Fig. 12a ähnlich, enthält jedoch XOR-Gates S1 bis S4 zum Errechnen der Summe.
- In der Ausgestaltung von Fig. 12a steuert eine einzelne Speicherzelle 1 beide MUXs B3 und B4, während in der Ausgestaltung von Fig. 12b der MUX B4 von der Speicherzelle 9 gesteuert wird, und der MUX B3 ist ein MUX mit drei Eingängen, der von den Speicherzellen 6 und 7 gesteuert wird. Und, wie erörtert, werden in der Ausgestaltung von Fig. 12a Übertrag und Summe eines Bits in zwei verschiedenen CLBs errechnet, während in der Ausgestaltung von Fig. 12b die XOR-Gates S1 bis S4 es zulassen, dass sowohl Übertrag als auch Summe in einem einzelnen CLB errechnet werden. Somit ist die Ausgestaltung von Fig. 12b effizienter für die Ausführung von Arithmetikfunktionen, und die Ausgestaltung von Fig. 12a hat eine höhere Dichtigkeit und daher geringere Kosten pro CLB. Natürlich sind viele weitere Variationen möglich. So kann beispielsweise in Fig. 12b die Speicherzelle 9 MUX B3 steuern und auch eine der Speicherzellen 6 und 7 ersetzen, um eine Einzelsteuerung zu MUX B4 bereitzustellen, um eine Speicherzelle einzusparen. In einer weiteren Ausgestaltung kann eine Speicherzelle den Übertragsmodus in allen vier Speicherzellen B1 bis B4 aktivieren.
- Man beachte, dass in den Ausgestaltungen der Fig. 12a und 12b keine Notwendigkeit für die Multiplexer M1, M3 und M4 von Fig. 10 oder für die zugehörigen Konfigurationsspeicherzellen zum Konfigurieren der Multiplexer M1, M3 und M4 besteht. Man beachte auch, dass im Gegensatz zu Fig. 10, die Funktionsgeneratoreingänge, z. B. F0 bis F3, vollständig austauschbar sind. Ein Eingangssignal kann zu einem beliebigen gewählten dieser Eingänge geleitet werden, was dann von Vorteil sein kann, wenn die Signale durch die Verbindungsstruktur geleitet werden, wie nachfolgend erörtert wird. Man beachte auch, dass in den Fig. 12a und 12b jede Datenmodifizierungslogik (siehe Datenmodifikationseinheit 921 in Fig. 8b) vollständig vom Benutzer wählbar und nicht dadurch beschränkt ist, dass Arithmetikeingänge auf bestimmte Stifte gelegt werden müssen. Somit kann die Software, die das Benutzer-Design leitet, eine Route leichter finden, und die Route benötigt gewöhnlich einen kürzeren Weg. Beim Vergleich der Erfindung gemäß Fig. 8b mit dem Bauelement von Fig. 8a, setzt das Bauelement von Fig. 8a ferner voraus, dass die Eingänge Ai, Bi und Ci an den Funktionsgenerator 902 angelegt werden, wodurch die Zahl der zusätzlichen Eingänge auf einen begrenzt wird. Im Gegensatz dazu, kann die Ausgestaltung von Fig. 8b in der Datenmodifikationsfunktion 921 eine beliebige Funktion von drei Variablen aufnehmen. Wenn die Summe Si in einem anderen Funktionsgenerator 904 errechnet wird, dann kann dieser Funktionsgenerator die Si- Funktion im Datenmodifikationsbereich 927 durch eine beliebige Funktion von zwei zusätzlichen Eingängen modifizieren.
- Wenn die Übertragsmultiplexer C1 bis C4 von Fig. 12a oder 12b nicht für die Übertragsfunktion in einem Arithmetikvorgang verwendet werden, dann können sie zum Erzeugen der AND- oder OR-Funktion sowie bestimmter anderer Funktionen zum Einsatz kommen. So wird beispielsweise durch Anlegen einer logischen 0 auf die Leitung FB von Fig. 12a ein Multiplexer C1 so programmiert, dass die AND-Funktion des X-Ausgangssignals des F-Funktionsgenerators und des Eintragssignals CIN erzeugt wird. Durch Anlegen einer logischen 1 an die Leitung FB wird der Multiplexer C1 so programmiert, dass er die OR- Funktion des Komplements des X-Ausgangssignals und des Eintragssignals CIN generiert.
- Eine Architektur zum Leiten von Signalen von einem CLB zu einem anderen ist in den Fig. 12c und 12d illustriert. Fig. 12c zeigt eine Fliese, die Logik und Verlegung kombiniert. Fig. 12d zeigt zwei horizontal benachbarte Fliesen, TILE1,1 und TILE2,1, die so miteinander verbunden sind, wie es der Fall ist, wenn ein Chip wie z. B. das in Fig. 12e gezeigte gebildet wird. Die nach rechts verlaufenden Leitungen in TILE1,1 sind auf die nach links in TILE2,1 verlaufenden Leitungen ausgerichtet und mit ihnen verbunden. Die Kernfliese von Fig. 12c beinhaltet auch Leitungen am oberen und unteren Ende der Fliese. Wenn eine über die andere gesetzt wird, dann stehen die oberen und die unteren Leitungen auch miteinander in Verbindung. In einem kompletten integrierten Circuit-Chip werden die Fliesen von Fig. 12c so kombiniert, dass sich eine Struktur wie die in Fig. 12e gezeigte ergibt, bei der Elemente C Kernfliesen enthalten, Elemente N, S, E und W Fliesen am nördlichen, südlichen, östlichen und westlichen Rand für den Eingang und den Ausgang zum Chip umfassen, und die Elemente NW, NE, SW und SE Eckfliesen für zusätzliche Chip-Ein- und - ausgänge umfassen. Aufgrund von Teilern wie DS und DC können benachbarte stromführende Leitungen programmierbar verbunden oder nicht verbunden werden.
- In Fig. 12c ist der CLB von Fig. 12a oder 12b näher zur Mitte der Figur hin dargestellt. Die Eingangsleitungen JB bis CLK auf der linken Seite in den Fig. 12a und 12b sind auch entsprechend auf der linken Seite des CLB von Fig. 12c positioniert. Der Einfachheit halber sind nur die Leitungen JF, F0 und CLK bezeichnet. Wie in Fig. 12a oder 12b, verläuft die Eintrags-Eingangsleitung CIN vom unteren Rand der Zeichnung in den CLB, und die Austragsleitung COUT verläuft vom oberen Rand der Zeichnung hinaus. Die Ausgangsleitungen VB bis X verlaufen von der rechten Seite des CLB in Fig. 12a und 12b sowie in Fig. 12c. In Fig. 12c sind nur die Leitungen VB und X bezeichnet. Fig. 12c zeigt auch 24 Eingangsauswahlleitungen M0 bis M23, von denen nur M23 der Einfachheit halber bezeichnet ist. Die Leitungen M0 bis M23 wählen Eingangssignale von den Fliesen aus dem Norden, Süden, Osten und Westen für den Eingang zum CLB. Viele kleine offene Kreise sind in Fig. 12c dargestellt. Jeder repräsentiert einen programmierbaren Verbindungspunkt oder PIP, der mit Hilfe eines Transistors, mehrerer Transistoren, einer Trennsicherung, einer EPROM-Zelle oder einem anderen Mittel so programmiert werden kann, dass die horizontale Leitung und die vertikale Leitung, die sich in dem Kreis kreuzen, elektrisch verbunden sind. Der Einfachheit halber ist nur ein PIP bezeichnet. Fig. 12c zeigt auch Hartverbindungen, die jeweils durch einen schwarzen Fleck dargestellt sind. Die CLB-Ausgangsleitungen VB bis X können programmierbar durch einen PIP mit einer der Leitungen verbunden werden, z. B. Q0 mit Hartverbindungen.
- Bezugnehmend auf Fig. 12d, kann das Ausbreitungssignal Pi am X-Ausgang des F- Funktionsgenerators von CLB1,1 in der Fliese TILE1,1 durch PIPX1,1,1 mit der Direktverbindungsleitung Q01,1 verbunden werden, die in die Fliese TILE2,1 verläuft, und kann durch PIPF04,2,1 mit dem F0-Eingang von CLB2,1 verbunden werden. Wie Fig. 12a zeigt, ist das Austragssignal Ci+1 vom Schnellübertrags-MUX C1 durch Multiplexer B1 und S1 mit dem XB-Ausgang von CLB1,1 verbunden. PIPXB2,1,1 verbindet sich mit einer anderen Direktverbindungsleitung Q11,1, die durch PIPGB3,2,1 mit der Eingangsleitung G0 des G- Funktionsgenerators von CLB2,1 verbunden ist. Dies dient als Eintragseingang Ci für das nächste Summenbit, das im G-Funktionsgenerator von TILE2,1 errechnet werden soll. Bits höherer Ordnung sind entsprechend verbunden. Somit treten die Fortpflanzungs- und Schnellübertragsfunktionen im TILE1,1 und die Summenfunktion im TILE2,1 auf.
- Die vollständige Austauschbarkeit der Stifte F0 bis F3 kann eine von zwei vorteilhaften Auswirkungen haben. In der Ausgestaltung von Fig. 12d kann eine geringe Zahl von PIPs eine ausreichende Verknüpfbarkeit ergeben. Da jeder PIP etwa sechs Transistoren erfordert, wird durch eine Verringerung der Zahl von PIPs die Größe des Chips verringert. Alternativ steht, wenn mehr PIPs bereitgestellt werden, ein schneller Weg für alle Funktionsgeneratoreingänge allgemein zur Verfügung, und daher ist der Chipbetrieb schneller.
- Es wurden zwei Ausgestaltungen der Erfindung in Verbindung mit den Fig. 12a und 12b ausführlich beschrieben. Weitere Ausgestaltungen der vorliegenden Erfindung, die die hierin gelehrten Merkmale aufweisen, werden für eine Fachperson im Hinblick auf die obige Offenbarung offensichtlich sein. So ist es beispielsweise möglich, Logikblöcke miteinander zu verbinden, die nicht nebeneinander liegen. Ferner zeigen die Fig. 12a und 12b zwar einen Logikblock mit vier Übertragslogikstufen und vier Funktionsgeneratoren, doch können die Logikblöcke auch mit anderen Stufenzahlen gebildet werden.
- Für ein weiteres Beispiel ist es offensichtlich, dass, obwohl die Steuerschaltungsanordnung der Fig. 12a und 12b als durch Speicherzellen gesteuert beschrieben wurde, diese Speicherzellen SRAM-Speicherzellen, EPROMS, EEPROMS, Sicherungen oder Trennsicherungen sein können. Es ist auch offensichtlich, dass Steuersignale durch Ausgangssignale von Logik-Gates und andere verfügbare Signale bereitgestellt werden können.
Claims (5)
1. Programmierbare Logikanordnung, umfassend eine Matrix aus Logikblöcken, wobei
jeder Logikblock wenigstens eine Schaltung hat, umfassend:
ein Mittel zum Erzeugen eines ersten Eingangswertes (Bi);
einen Eingangsanschluss zum Anlegen eines zweiten Eingangswertes (Ai);
einen Eintragsanschluss (Ci) und einen Austragsanschluss (Ci+1);
einen Multiplexer (923) zum Verbinden des genannten Eingangsanschlusses oder
des genannten Eintragsanschlusses mit dem genannten Austragsanschluss; und
eine Nachschlagtabelle (903) zum Erzeugen eines Ausbreitungssignals, das bewirkt,
dass der genannte Multiplexer den genannten Eingangsanschluss mit dem genannten
Austragsanschluss verbindet, wenn - und nur dann - der genannte erste Eingangswert gleich
dem genannten zweiten Eingangswert (Ai = Bi) ist, und den genannten Eintragsanschluss mit
dem genannten Austragsanschluss verbindet, wenn - und nur dann - der genannte erste
Eingangswert nicht gleich dem genannten zweiten Eingangswert (Ai ≠ Bi) ist, wobei der
genannte erste Eingangswert (Bi) von einer Mehrzahl von Eingängen in die genannte
Nachschlagtabelle abhängig ist.
2. Programmierbare Logikanordnung nach Anspruch 1, ferner umfassend:
ein Funktionserzeugungsmittel (904), das das genannte Ausbreitungssignal und ein
Signal auf dem genannten Eintragsanschluss als Eingang empfängt, wobei das genannte
Funktionserzeugungsmittel die XOR-Funktion des genannten Ausbreitungssignals und das
genannte Signal an dem genannten Eintragsanschluss erzeugen kann.
3. Programmierbare Logikanordnung nach Anspruch 2, bei der das genannte
Funktionserzeugungsmittel (904) ein XOR-Gate ist.
4. Programmierbare Logikanordnung nach Anspruch 1, bei der zwei benachbarte der
genannten Logikblöcke die Summe und den Übertrag der genannten Eingangswerte
berechnen, wobei dieser Logikblock zum Errechnen der Summe eine Nachschlagtabelle (904)
umfasst, die alle Funktionen von wenigstens zwei Eingängen erzeugen kann.
5. Programmierbare Logikanordnung nach Anspruch 1, bei der das genannte Mittel zum
Erzeugen eines ersten Eingangswertes (Bi) ferner eine Funktion umfasst, die in der genannten
Nachschlagtabelle gespeichert ist und die den genannten ersten Eingangswert als vom
Anwender wählbare Funktion der genannten Mehrzahl von Eingängen bereitstellt.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/116,659 US5349250A (en) | 1993-09-02 | 1993-09-02 | Logic structure and circuit for fast carry |
PCT/US1994/009864 WO1995006979A1 (en) | 1993-09-02 | 1994-08-31 | Logic structure and circuit for fast carry |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69429073D1 DE69429073D1 (de) | 2001-12-20 |
DE69429073T2 true DE69429073T2 (de) | 2002-03-21 |
Family
ID=22368495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69429073T Expired - Lifetime DE69429073T2 (de) | 1993-09-02 | 1994-08-31 | Logische struktur und schaltung für schnellen übertrag |
Country Status (5)
Country | Link |
---|---|
US (1) | US5349250A (de) |
EP (2) | EP0667059B1 (de) |
JP (1) | JP3594601B2 (de) |
DE (1) | DE69429073T2 (de) |
WO (1) | WO1995006979A1 (de) |
Families Citing this family (221)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5122685A (en) * | 1991-03-06 | 1992-06-16 | Quicklogic Corporation | Programmable application specific integrated circuit and logic cell therefor |
US5416367A (en) * | 1991-03-06 | 1995-05-16 | Quicklogic Corporation | Programmable application specific integrated circuit and logic cell therefor |
US5633830A (en) * | 1995-11-08 | 1997-05-27 | Altera Corporation | Random access memory block circuitry for programmable logic array integrated circuit devices |
US5550782A (en) * | 1991-09-03 | 1996-08-27 | Altera Corporation | Programmable logic array integrated circuits |
USRE35977E (en) * | 1992-05-08 | 1998-12-01 | Altera Corporation | Look up table implementation of fast carry arithmetic and exclusive-or operations |
US5629886A (en) * | 1993-09-02 | 1997-05-13 | Xilinx, Inc. | Method and structure for providing fast propagation of a carry signal in a field programmable gate array |
US6154053A (en) * | 1993-09-02 | 2000-11-28 | Xilinx, Inc. | Look-ahead carry structure with homogeneous CLB structure and pitch larger than CLB pitch |
US6288570B1 (en) | 1993-09-02 | 2001-09-11 | Xilinx, Inc. | Logic structure and circuit for fast carry |
US5481206A (en) | 1993-09-02 | 1996-01-02 | Xilinx, Inc. | Circuit for fast carry and logic |
US5898319A (en) * | 1993-09-02 | 1999-04-27 | Xilinx, Inc. | Method and structure for providing fast conditional sum in a field programmable gate array |
US5546018A (en) * | 1993-09-02 | 1996-08-13 | Xilinx, Inc. | Fast carry structure with synchronous input |
USRE38451E1 (en) * | 1993-11-12 | 2004-03-02 | Altera Corporation | Universal logic module with arithmetic capabilities |
US5682107A (en) * | 1994-04-01 | 1997-10-28 | Xilinx, Inc. | FPGA architecture with repeatable tiles including routing matrices and logic matrices |
US5442306A (en) * | 1994-09-09 | 1995-08-15 | At&T Corp. | Field programmable gate array using look-up tables, multiplexers and decoders |
US5606266A (en) * | 1994-11-04 | 1997-02-25 | Altera Corporation | Programmable logic array integrated circuits with enhanced output routing |
US5636368A (en) * | 1994-12-23 | 1997-06-03 | Xilinx, Inc. | Method for programming complex PLD having more than one function block type |
US5566123A (en) * | 1995-02-10 | 1996-10-15 | Xilinx, Inc. | Synchronous dual port ram |
US5751162A (en) * | 1995-04-06 | 1998-05-12 | Texas Instruments Incorporated | Field programmable gate array logic module configurable as combinational or sequential circuits |
US5631576A (en) * | 1995-09-01 | 1997-05-20 | Altera Corporation | Programmable logic array integrated circuit devices with flexible carry chains |
US5818255A (en) * | 1995-09-29 | 1998-10-06 | Xilinx, Inc. | Method and circuit for using a function generator of a programmable logic device to implement carry logic functions |
US5672985A (en) * | 1995-12-18 | 1997-09-30 | Altera Corporation | Programmable logic array integrated circuits with carry and/or cascade rings |
US5898602A (en) * | 1996-01-25 | 1999-04-27 | Xilinx, Inc. | Carry chain circuit with flexible carry function for implementing arithmetic and logical functions |
US5894565A (en) * | 1996-05-20 | 1999-04-13 | Atmel Corporation | Field programmable gate array with distributed RAM and increased cell utilization |
US6297665B1 (en) | 1996-11-22 | 2001-10-02 | Xilinx, Inc. | FPGA architecture with dual-port deep look-up table RAMS |
US5889413A (en) | 1996-11-22 | 1999-03-30 | Xilinx, Inc. | Lookup tables which double as shift registers |
US6323682B1 (en) | 1996-11-22 | 2001-11-27 | Xilinx, Inc. | FPGA architecture with wide function multiplexers |
US6288568B1 (en) | 1996-11-22 | 2001-09-11 | Xilinx, Inc. | FPGA architecture with deep look-up table RAMs |
US6427156B1 (en) | 1997-01-21 | 2002-07-30 | Xilinx, Inc. | Configurable logic block with AND gate for efficient multiplication in FPGAS |
US6201410B1 (en) | 1997-02-26 | 2001-03-13 | Xilinx, Inc. | Wide logic gate implemented in an FPGA configurable logic element |
US5914616A (en) * | 1997-02-26 | 1999-06-22 | Xilinx, Inc. | FPGA repeatable interconnect structure with hierarchical interconnect lines |
US5889411A (en) * | 1997-02-26 | 1999-03-30 | Xilinx, Inc. | FPGA having logic element carry chains capable of generating wide XOR functions |
US5963050A (en) | 1997-02-26 | 1999-10-05 | Xilinx, Inc. | Configurable logic element with fast feedback paths |
US5920202A (en) * | 1997-02-26 | 1999-07-06 | Xilinx, Inc. | Configurable logic element with ability to evaluate five and six input functions |
US6204689B1 (en) | 1997-02-26 | 2001-03-20 | Xilinx, Inc. | Input/output interconnect circuit for FPGAs |
US5942913A (en) * | 1997-03-20 | 1999-08-24 | Xilinx, Inc. | FPGA repeatable interconnect structure with bidirectional and unidirectional interconnect lines |
US6184710B1 (en) | 1997-03-20 | 2001-02-06 | Altera Corporation | Programmable logic array devices with enhanced interconnectivity between adjacent logic regions |
US6014038A (en) * | 1997-03-21 | 2000-01-11 | Lightspeed Semiconductor Corporation | Function block architecture for gate array |
US6359466B1 (en) * | 1997-09-16 | 2002-03-19 | Vantis Corporation | Circuitry to provide fast carry |
US6097212A (en) * | 1997-10-09 | 2000-08-01 | Lattice Semiconductor Corporation | Variable grain architecture for FPGA integrated circuits |
US6069490A (en) * | 1997-12-02 | 2000-05-30 | Xilinx, Inc. | Routing architecture using a direct connect routing mesh |
US6185724B1 (en) | 1997-12-02 | 2001-02-06 | Xilinx, Inc. | Template-based simulated annealing move-set that improves FPGA architectural feature utilization |
US6467017B1 (en) | 1998-06-23 | 2002-10-15 | Altera Corporation | Programmable logic device having embedded dual-port random access memory configurable as single-port memory |
US6353920B1 (en) * | 1998-11-17 | 2002-03-05 | Xilinx, Inc. | Method for implementing wide gates and tristate buffers using FPGA carry logic |
US6154052A (en) * | 1999-02-04 | 2000-11-28 | Xilinx, Inc. | Combined tristate/carry logic mechanism |
US6603332B2 (en) | 1999-02-25 | 2003-08-05 | Xilinx, Inc. | Configurable logic block for PLD with logic gate for combining output with another configurable logic block |
US6407576B1 (en) | 1999-03-04 | 2002-06-18 | Altera Corporation | Interconnection and input/output resources for programmable logic integrated circuit devices |
US6323680B1 (en) | 1999-03-04 | 2001-11-27 | Altera Corporation | Programmable logic device configured to accommodate multiplication |
US6359468B1 (en) | 1999-03-04 | 2002-03-19 | Altera Corporation | Programmable logic device with carry look-ahead |
US6426648B1 (en) | 1999-12-30 | 2002-07-30 | RUPP CHARLé R. | Carry lookahead for programmable logic array |
US7119576B1 (en) | 2000-09-18 | 2006-10-10 | Altera Corporation | Devices and methods with programmable logic and digital signal processing regions |
US7346644B1 (en) | 2000-09-18 | 2008-03-18 | Altera Corporation | Devices and methods with programmable logic and digital signal processing regions |
US6754686B1 (en) | 2000-10-13 | 2004-06-22 | Xilinx, Inc. | Literal sharing method for fast sum-of-products logic |
US6480023B1 (en) | 2000-10-13 | 2002-11-12 | Xilinx, Inc. | Configurable logic block for PLD |
US6724810B1 (en) | 2000-11-17 | 2004-04-20 | Xilinx, Inc. | Method and apparatus for de-spreading spread spectrum signals |
US6369608B1 (en) | 2001-01-18 | 2002-04-09 | Xillinx, Inc. | Conditioning semiconductor-on-insulator transistors for programmable logic devices |
US6388466B1 (en) | 2001-04-27 | 2002-05-14 | Xilinx, Inc. | FPGA logic element with variable-length shift register capability |
US6937062B1 (en) | 2001-09-18 | 2005-08-30 | Altera Corporation | Specialized programmable logic region with low-power mode |
US6566906B1 (en) | 2001-09-18 | 2003-05-20 | Altera Corporation | Specialized programmable logic region with low-power mode |
US7398503B2 (en) * | 2002-01-31 | 2008-07-08 | Cadence Design Systems, Inc | Method and apparatus for pre-tabulating sub-networks |
US7028281B1 (en) | 2002-07-12 | 2006-04-11 | Lattice Semiconductor Corporation | FPGA with register-intensive architecture |
US7111110B1 (en) | 2002-12-10 | 2006-09-19 | Altera Corporation | Versatile RAM for programmable logic device |
US6798240B1 (en) * | 2003-01-24 | 2004-09-28 | Altera Corporation | Logic circuitry with shared lookup table |
US7800401B1 (en) | 2003-02-10 | 2010-09-21 | Altera Corporation | Fracturable lookup table and logic element |
US6943580B2 (en) * | 2003-02-10 | 2005-09-13 | Altera Corporation | Fracturable lookup table and logic element |
US6888373B2 (en) | 2003-02-11 | 2005-05-03 | Altera Corporation | Fracturable incomplete look up table for area efficient logic elements |
US7082592B1 (en) | 2003-06-16 | 2006-07-25 | Altera Corporation | Method for programming programmable logic device having specialized functional blocks |
US7440964B2 (en) * | 2003-08-29 | 2008-10-21 | Vortaloptics, Inc. | Method, device and software for querying and presenting search results |
US7185035B1 (en) | 2003-10-23 | 2007-02-27 | Altera Corporation | Arithmetic structures for programmable logic devices |
US7565388B1 (en) | 2003-11-21 | 2009-07-21 | Altera Corporation | Logic cell supporting addition of three binary words |
US7167021B1 (en) | 2003-11-24 | 2007-01-23 | Altera Corporation | Logic device logic modules having improved arithmetic circuitry |
US7071732B1 (en) | 2003-12-09 | 2006-07-04 | Xilinx, Inc. | Scalable complex programmable logic device with segmented interconnect resources |
US7698358B1 (en) | 2003-12-24 | 2010-04-13 | Altera Corporation | Programmable logic device with specialized functional block |
US7467177B2 (en) * | 2003-12-29 | 2008-12-16 | Xilinx, Inc. | Mathematical circuit with dynamic rounding |
US7865542B2 (en) * | 2003-12-29 | 2011-01-04 | Xilinx, Inc. | Digital signal processing block having a wide multiplexer |
US7860915B2 (en) * | 2003-12-29 | 2010-12-28 | Xilinx, Inc. | Digital signal processing circuit having a pattern circuit for determining termination conditions |
US7870182B2 (en) | 2003-12-29 | 2011-01-11 | Xilinx Inc. | Digital signal processing circuit having an adder circuit with carry-outs |
US7480690B2 (en) * | 2003-12-29 | 2009-01-20 | Xilinx, Inc. | Arithmetic circuit with multiplexed addend inputs |
US7853632B2 (en) | 2003-12-29 | 2010-12-14 | Xilinx, Inc. | Architectural floorplan for a digital signal processing circuit |
US7844653B2 (en) | 2003-12-29 | 2010-11-30 | Xilinx, Inc. | Digital signal processing circuit having a pre-adder circuit |
US7840627B2 (en) | 2003-12-29 | 2010-11-23 | Xilinx, Inc. | Digital signal processing circuit having input register blocks |
US7849119B2 (en) | 2003-12-29 | 2010-12-07 | Xilinx, Inc. | Digital signal processing circuit having a pattern detector circuit |
US7472155B2 (en) * | 2003-12-29 | 2008-12-30 | Xilinx, Inc. | Programmable logic device with cascading DSP slices |
US7882165B2 (en) * | 2003-12-29 | 2011-02-01 | Xilinx, Inc. | Digital signal processing element having an arithmetic logic unit |
US7467175B2 (en) * | 2003-12-29 | 2008-12-16 | Xilinx, Inc. | Programmable logic device with pipelined DSP slices |
US7567997B2 (en) * | 2003-12-29 | 2009-07-28 | Xilinx, Inc. | Applications of cascading DSP slices |
US7853636B2 (en) | 2003-12-29 | 2010-12-14 | Xilinx, Inc. | Digital signal processing circuit having a pattern detector circuit for convergent rounding |
US8495122B2 (en) * | 2003-12-29 | 2013-07-23 | Xilinx, Inc. | Programmable device with dynamic DSP architecture |
US7840630B2 (en) * | 2003-12-29 | 2010-11-23 | Xilinx, Inc. | Arithmetic logic unit circuit |
US7853634B2 (en) | 2003-12-29 | 2010-12-14 | Xilinx, Inc. | Digital signal processing circuit having a SIMD circuit |
US7193440B1 (en) * | 2004-02-14 | 2007-03-20 | Herman Schmit | Configurable circuits, IC's, and systems |
US7157933B1 (en) | 2004-02-14 | 2007-01-02 | Herman Schmit | Configurable circuits, IC's, and systems |
US7193432B1 (en) | 2004-02-14 | 2007-03-20 | Herman Schmit | VPA logic circuits |
US7284222B1 (en) | 2004-06-30 | 2007-10-16 | Tabula, Inc. | Method and apparatus for identifying connections between configurable nodes in a configurable integrated circuit |
US7109752B1 (en) | 2004-02-14 | 2006-09-19 | Herman Schmit | Configurable circuits, IC's, and systems |
US7126373B1 (en) | 2004-02-14 | 2006-10-24 | Herman Schmit | Configurable logic circuits with commutative properties |
US7167025B1 (en) | 2004-02-14 | 2007-01-23 | Herman Schmit | Non-sequentially configurable IC |
US7126381B1 (en) | 2004-02-14 | 2006-10-24 | Herman Schmit | VPA interconnect circuit |
US7425841B2 (en) | 2004-02-14 | 2008-09-16 | Tabula Inc. | Configurable circuits, IC's, and systems |
US7205791B1 (en) | 2004-03-12 | 2007-04-17 | Altera Corporation | Bypass-able carry chain in a programmable logic device |
US7061268B1 (en) | 2004-03-15 | 2006-06-13 | Altera Corporation | Initializing a carry chain in a programmable logic device |
US7167022B1 (en) | 2004-03-25 | 2007-01-23 | Altera Corporation | Omnibus logic element including look up table based logic elements |
US7282950B1 (en) | 2004-11-08 | 2007-10-16 | Tabula, Inc. | Configurable IC's with logic resources with offset connections |
US7449915B2 (en) * | 2004-06-30 | 2008-11-11 | Tabula Inc. | VPA logic circuits |
US7145361B1 (en) | 2004-06-30 | 2006-12-05 | Andre Rohe | Configurable integrated circuit with different connection schemes |
US7408382B2 (en) * | 2004-06-30 | 2008-08-05 | Tabula, Inc. | Configurable circuits, IC's, and systems |
US7193438B1 (en) | 2004-06-30 | 2007-03-20 | Andre Rohe | Configurable integrated circuit with offset connection |
US7439766B2 (en) * | 2004-06-30 | 2008-10-21 | Tabula, Inc. | Configurable logic circuits with commutative properties |
US7312630B2 (en) | 2004-06-30 | 2007-12-25 | Tabula, Inc. | Configurable integrated circuit with built-in turns |
US7617269B2 (en) * | 2004-08-03 | 2009-11-10 | Stmicroelectronics Pvt. Ltd. | Logic entity with two outputs for efficient adder and other macro implementations |
US7342415B2 (en) | 2004-11-08 | 2008-03-11 | Tabula, Inc. | Configurable IC with interconnect circuits that also perform storage operations |
US7259587B1 (en) * | 2004-11-08 | 2007-08-21 | Tabula, Inc. | Configurable IC's with configurable logic resources that have asymetric inputs and/or outputs |
US7224181B1 (en) * | 2004-11-08 | 2007-05-29 | Herman Schmit | Clock distribution in a configurable IC |
US7917559B2 (en) * | 2004-11-08 | 2011-03-29 | Tabula, Inc. | Configurable IC's with configurable logic circuits that perform adder and/or subtractor operations |
US7295037B2 (en) * | 2004-11-08 | 2007-11-13 | Tabula, Inc. | Configurable IC with routing circuits with offset connections |
US7301368B2 (en) | 2005-03-15 | 2007-11-27 | Tabula, Inc. | Embedding memory within tile arrangement of a configurable IC |
US7242216B1 (en) | 2004-11-08 | 2007-07-10 | Herman Schmit | Embedding memory between tile arrangement of a configurable IC |
US7330050B2 (en) | 2004-11-08 | 2008-02-12 | Tabula, Inc. | Storage elements for a configurable IC and method and apparatus for accessing data stored in the storage elements |
US7276933B1 (en) | 2004-11-08 | 2007-10-02 | Tabula, Inc. | Reconfigurable IC that has sections running at different looperness |
US7743085B2 (en) | 2004-11-08 | 2010-06-22 | Tabula, Inc. | Configurable IC with large carry chains |
US7573296B2 (en) | 2004-11-08 | 2009-08-11 | Tabula Inc. | Configurable IC with configurable routing resources that have asymmetric input and/or outputs |
US20070244958A1 (en) * | 2004-11-08 | 2007-10-18 | Jason Redgrave | Configurable IC's with carry bypass circuitry |
US7268586B1 (en) | 2004-11-08 | 2007-09-11 | Tabula, Inc. | Method and apparatus for accessing stored data in a reconfigurable IC |
US7317331B2 (en) | 2004-11-08 | 2008-01-08 | Tabula, Inc. | Reconfigurable IC that has sections running at different reconfiguration rates |
US7496879B2 (en) * | 2004-12-01 | 2009-02-24 | Tabula, Inc. | Concurrent optimization of physical design and operational cycle assignment |
US7428721B2 (en) * | 2004-12-01 | 2008-09-23 | Tabula, Inc. | Operational cycle assignment in a configurable IC |
US7236009B1 (en) | 2004-12-01 | 2007-06-26 | Andre Rohe | Operational time extension |
US7653677B1 (en) * | 2005-01-26 | 2010-01-26 | Xilinx, Inc. | Digital logic circuit for adding three binary words and method of implementing same |
US7298169B2 (en) * | 2005-03-15 | 2007-11-20 | Tabula, Inc | Hybrid logic/interconnect circuit in a configurable IC |
US7310003B2 (en) * | 2005-03-15 | 2007-12-18 | Tabula, Inc. | Configurable IC with interconnect circuits that have select lines driven by user signals |
US7825684B2 (en) | 2005-03-15 | 2010-11-02 | Tabula, Inc. | Variable width management for a memory of a configurable IC |
US7230869B1 (en) | 2005-03-15 | 2007-06-12 | Jason Redgrave | Method and apparatus for accessing contents of memory cells |
US20070244959A1 (en) * | 2005-03-15 | 2007-10-18 | Steven Teig | Configurable IC's with dual carry chains |
US7224182B1 (en) * | 2005-03-15 | 2007-05-29 | Brad Hutchings | Hybrid configurable circuit for a configurable IC |
US7530033B2 (en) * | 2005-03-15 | 2009-05-05 | Tabula, Inc. | Method and apparatus for decomposing functions in a configurable IC |
US8620980B1 (en) | 2005-09-27 | 2013-12-31 | Altera Corporation | Programmable device with specialized multiplier blocks |
US8463836B1 (en) | 2005-11-07 | 2013-06-11 | Tabula, Inc. | Performing mathematical and logical operations in multiple sub-cycles |
US7765249B1 (en) | 2005-11-07 | 2010-07-27 | Tabula, Inc. | Use of hybrid interconnect/logic circuits for multiplication |
US7818361B1 (en) | 2005-11-07 | 2010-10-19 | Tabula, Inc. | Method and apparatus for performing two's complement multiplication |
US7372297B1 (en) | 2005-11-07 | 2008-05-13 | Tabula Inc. | Hybrid interconnect/logic circuits enabling efficient replication of a function in several sub-cycles to save logic and routing resources |
US7461362B1 (en) | 2005-12-01 | 2008-12-02 | Tabula, Inc. | Replacing circuit design elements with their equivalents |
US7679401B1 (en) | 2005-12-01 | 2010-03-16 | Tabula, Inc. | User registers implemented with routing circuits in a configurable IC |
US7489162B1 (en) | 2005-12-01 | 2009-02-10 | Tabula, Inc. | Users registers in a reconfigurable IC |
US8041759B1 (en) | 2006-02-09 | 2011-10-18 | Altera Corporation | Specialized processing block for programmable logic device |
US8266198B2 (en) | 2006-02-09 | 2012-09-11 | Altera Corporation | Specialized processing block for programmable logic device |
US8266199B2 (en) | 2006-02-09 | 2012-09-11 | Altera Corporation | Specialized processing block for programmable logic device |
US8301681B1 (en) | 2006-02-09 | 2012-10-30 | Altera Corporation | Specialized processing block for programmable logic device |
US7797497B1 (en) | 2006-03-08 | 2010-09-14 | Tabula, Inc. | System and method for providing more logical memory ports than physical memory ports |
US7504858B1 (en) | 2006-03-08 | 2009-03-17 | Tabula, Inc. | Configurable integrated circuit with parallel non-neighboring offset connections |
US7694083B1 (en) | 2006-03-08 | 2010-04-06 | Tabula, Inc. | System and method for providing a virtual memory architecture narrower and deeper than a physical memory architecture |
US7518400B1 (en) | 2006-03-08 | 2009-04-14 | Tabula, Inc. | Barrel shifter implemented on a configurable integrated circuit |
US7609085B1 (en) | 2006-03-08 | 2009-10-27 | Tabula, Inc. | Configurable integrated circuit with a 4-to-1 multiplexer |
US7669097B1 (en) | 2006-03-27 | 2010-02-23 | Tabula, Inc. | Configurable IC with error detection and correction circuitry |
US7529992B1 (en) | 2006-03-27 | 2009-05-05 | Tabula, Inc. | Configurable integrated circuit with error correcting circuitry |
US7836117B1 (en) | 2006-04-07 | 2010-11-16 | Altera Corporation | Specialized processing block for programmable logic device |
US8707225B1 (en) * | 2006-04-07 | 2014-04-22 | Cadence Design Systems, Inc. | Synthesis of area-efficient subtractor and divider functional blocks |
US7822799B1 (en) | 2006-06-26 | 2010-10-26 | Altera Corporation | Adder-rounder circuitry for specialized processing block in programmable logic device |
US8386550B1 (en) | 2006-09-20 | 2013-02-26 | Altera Corporation | Method for configuring a finite impulse response filter in a programmable logic device |
US7930336B2 (en) | 2006-12-05 | 2011-04-19 | Altera Corporation | Large multiplier for programmable logic device |
US8386553B1 (en) | 2006-12-05 | 2013-02-26 | Altera Corporation | Large multiplier for programmable logic device |
US7930666B1 (en) | 2006-12-12 | 2011-04-19 | Tabula, Inc. | System and method of providing a memory hierarchy |
US7587697B1 (en) | 2006-12-12 | 2009-09-08 | Tabula, Inc. | System and method of mapping memory blocks in a configurable integrated circuit |
US7814137B1 (en) | 2007-01-09 | 2010-10-12 | Altera Corporation | Combined interpolation and decimation filter for programmable logic device |
US8650231B1 (en) | 2007-01-22 | 2014-02-11 | Altera Corporation | Configuring floating point operations in a programmable device |
US7865541B1 (en) | 2007-01-22 | 2011-01-04 | Altera Corporation | Configuring floating point operations in a programmable logic device |
US8645450B1 (en) | 2007-03-02 | 2014-02-04 | Altera Corporation | Multiplier-accumulator circuitry and methods |
US7514957B2 (en) | 2007-03-20 | 2009-04-07 | Tabula, Inc | Configurable IC having a routing fabric with storage elements |
US8112468B1 (en) | 2007-03-22 | 2012-02-07 | Tabula, Inc. | Method and apparatus for performing an operation with a plurality of sub-operations in a configurable IC |
US7772879B1 (en) | 2007-04-11 | 2010-08-10 | Actel Corporation | Logic module including versatile adder for FPGA |
US7733124B1 (en) * | 2007-06-22 | 2010-06-08 | Altera Corporation | Method and apparatus for PLD having shared storage elements |
US7949699B1 (en) | 2007-08-30 | 2011-05-24 | Altera Corporation | Implementation of decimation filter in integrated circuit device using ram-based data storage |
US7825685B2 (en) | 2007-09-06 | 2010-11-02 | Tabula, Inc. | Configuration context switcher with a clocked storage element |
US7663400B1 (en) * | 2007-12-21 | 2010-02-16 | Actel Corporation | Flexible carry scheme for field programmable gate arrays |
US8244791B1 (en) | 2008-01-30 | 2012-08-14 | Actel Corporation | Fast carry lookahead circuits |
US8863067B1 (en) | 2008-02-06 | 2014-10-14 | Tabula, Inc. | Sequential delay analysis by placement engines |
US8959137B1 (en) | 2008-02-20 | 2015-02-17 | Altera Corporation | Implementing large multipliers in a programmable integrated circuit device |
US8244789B1 (en) | 2008-03-14 | 2012-08-14 | Altera Corporation | Normalization of floating point operations in a programmable integrated circuit device |
US7746100B2 (en) * | 2008-04-28 | 2010-06-29 | Altera Corporation | Flexible adder circuits with fast carry chain circuitry |
US8166435B2 (en) | 2008-06-26 | 2012-04-24 | Tabula, Inc. | Timing operations in an IC with configurable circuits |
US8626815B1 (en) | 2008-07-14 | 2014-01-07 | Altera Corporation | Configuring a programmable integrated circuit device to perform matrix multiplication |
US8255448B1 (en) | 2008-10-02 | 2012-08-28 | Altera Corporation | Implementing division in a programmable integrated circuit device |
US8307023B1 (en) | 2008-10-10 | 2012-11-06 | Altera Corporation | DSP block for implementing large multiplier on a programmable integrated circuit device |
US8543635B2 (en) | 2009-01-27 | 2013-09-24 | Xilinx, Inc. | Digital signal processing block with preadder stage |
US8479133B2 (en) | 2009-01-27 | 2013-07-02 | Xilinx, Inc. | Method of and circuit for implementing a filter in an integrated circuit |
US8549055B2 (en) | 2009-03-03 | 2013-10-01 | Altera Corporation | Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry |
US8706790B1 (en) | 2009-03-03 | 2014-04-22 | Altera Corporation | Implementing mixed-precision floating-point operations in a programmable integrated circuit device |
US8645449B1 (en) | 2009-03-03 | 2014-02-04 | Altera Corporation | Combined floating point adder and subtractor |
US8468192B1 (en) | 2009-03-03 | 2013-06-18 | Altera Corporation | Implementing multipliers in a programmable integrated circuit device |
US8886696B1 (en) | 2009-03-03 | 2014-11-11 | Altera Corporation | Digital signal processing circuitry with redundancy and ability to support larger multipliers |
US8805916B2 (en) * | 2009-03-03 | 2014-08-12 | Altera Corporation | Digital signal processing circuitry with redundancy and bidirectional data paths |
US8650236B1 (en) | 2009-08-04 | 2014-02-11 | Altera Corporation | High-rate interpolation or decimation filter in integrated circuit device |
US8396914B1 (en) | 2009-09-11 | 2013-03-12 | Altera Corporation | Matrix decomposition in an integrated circuit device |
US8412756B1 (en) | 2009-09-11 | 2013-04-02 | Altera Corporation | Multi-operand floating point operations in a programmable integrated circuit device |
US7948267B1 (en) | 2010-02-09 | 2011-05-24 | Altera Corporation | Efficient rounding circuits and methods in configurable integrated circuit devices |
US8539016B1 (en) | 2010-02-09 | 2013-09-17 | Altera Corporation | QR decomposition in an integrated circuit device |
US8601044B2 (en) | 2010-03-02 | 2013-12-03 | Altera Corporation | Discrete Fourier Transform in an integrated circuit device |
US8458243B1 (en) | 2010-03-03 | 2013-06-04 | Altera Corporation | Digital signal processing circuit blocks with support for systolic finite-impulse-response digital filtering |
US8484265B1 (en) | 2010-03-04 | 2013-07-09 | Altera Corporation | Angular range reduction in an integrated circuit device |
US8510354B1 (en) | 2010-03-12 | 2013-08-13 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8539014B2 (en) | 2010-03-25 | 2013-09-17 | Altera Corporation | Solving linear matrices in an integrated circuit device |
US8589463B2 (en) | 2010-06-25 | 2013-11-19 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8862650B2 (en) | 2010-06-25 | 2014-10-14 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8577951B1 (en) | 2010-08-19 | 2013-11-05 | Altera Corporation | Matrix operations in an integrated circuit device |
RU2445680C1 (ru) * | 2010-11-03 | 2012-03-20 | Лев Петрович Петренко | ФУНКЦИОНАЛЬНАЯ СТРУКТУРА СКВОЗНОГО ПЕРЕНОСА f1(←←)i+1 И f2(←←)i УСЛОВНО "i+1" И УСЛОВНО "i" РАЗРЯДОВ "k" ГРУППЫ АРГУМЕНТОВ МНОЖИМОГО [ni]f(2n) ПРЕДВАРИТЕЛЬНОГО СУММАТОРА fΣ([ni]&[ni,0]) ПАРАЛЛЕЛЬНО-ПОСЛЕДОВАТЕЛЬНОГО УМНОЖИТЕЛЯ fΣ(Σ) (ВАРИАНТЫ) |
US8645451B2 (en) | 2011-03-10 | 2014-02-04 | Altera Corporation | Double-clocked specialized processing block in an integrated circuit device |
US9600278B1 (en) | 2011-05-09 | 2017-03-21 | Altera Corporation | Programmable device using fixed and configurable logic to implement recursive trees |
US8812576B1 (en) | 2011-09-12 | 2014-08-19 | Altera Corporation | QR decomposition in an integrated circuit device |
US8949298B1 (en) | 2011-09-16 | 2015-02-03 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
US9053045B1 (en) | 2011-09-16 | 2015-06-09 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
US8762443B1 (en) | 2011-11-15 | 2014-06-24 | Altera Corporation | Matrix operations in an integrated circuit device |
US8543634B1 (en) | 2012-03-30 | 2013-09-24 | Altera Corporation | Specialized processing block for programmable integrated circuit device |
US9098332B1 (en) | 2012-06-01 | 2015-08-04 | Altera Corporation | Specialized processing block with fixed- and floating-point structures |
US8996600B1 (en) | 2012-08-03 | 2015-03-31 | Altera Corporation | Specialized processing block for implementing floating-point multiplier with subnormal operation support |
US9207909B1 (en) | 2012-11-26 | 2015-12-08 | Altera Corporation | Polynomial calculations optimized for programmable integrated circuit device structures |
US9189200B1 (en) | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
US9348795B1 (en) | 2013-07-03 | 2016-05-24 | Altera Corporation | Programmable device using fixed and configurable logic to implement floating-point rounding |
US9379687B1 (en) | 2014-01-14 | 2016-06-28 | Altera Corporation | Pipelined systolic finite impulse response filter |
US9684488B2 (en) | 2015-03-26 | 2017-06-20 | Altera Corporation | Combined adder and pre-adder for high-radix multiplier circuit |
US9785405B2 (en) * | 2015-05-29 | 2017-10-10 | Huawei Technologies Co., Ltd. | Increment/decrement apparatus and method |
US10942706B2 (en) | 2017-05-05 | 2021-03-09 | Intel Corporation | Implementation of floating-point trigonometric functions in an integrated circuit device |
CN111104101A (zh) * | 2019-11-07 | 2020-05-05 | 上海精密计量测试研究所 | 一种带有slice空洞的进位链构造及测试方法 |
US11714607B2 (en) * | 2020-12-28 | 2023-08-01 | Achronix Semiconductor Corporation | Adder circuit using lookup tables |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4124899A (en) * | 1977-05-23 | 1978-11-07 | Monolithic Memories, Inc. | Programmable array logic circuit |
US4870302A (en) * | 1984-03-12 | 1989-09-26 | Xilinx, Inc. | Configurable electrical circuit having configurable logic elements and configurable interconnects |
US4706216A (en) * | 1985-02-27 | 1987-11-10 | Xilinx, Inc. | Configurable logic element |
US4758745B1 (en) * | 1986-09-19 | 1994-11-15 | Actel Corp | User programmable integrated circuit interconnect architecture and test method |
US5267187A (en) * | 1990-05-10 | 1993-11-30 | Xilinx Inc | Logic structure and circuit for fast carry |
CA2037142C (en) * | 1990-05-10 | 1996-05-07 | Hung-Cheng Hsieh | Logic structure and circuit for fast carry |
US5055718A (en) * | 1990-05-11 | 1991-10-08 | Actel Corporation | Logic module with configurable combinational and sequential blocks |
US5198705A (en) * | 1990-05-11 | 1993-03-30 | Actel Corporation | Logic module with configurable combinational and sequential blocks |
US5220213A (en) * | 1991-03-06 | 1993-06-15 | Quicklogic Corporation | Programmable application specific integrated circuit and logic cell therefor |
US5260611A (en) * | 1991-09-03 | 1993-11-09 | Altera Corporation | Programmable logic array having local and long distance conductors |
US5359242A (en) * | 1993-01-21 | 1994-10-25 | Altera Corporation | Programmable logic with carry-in/carry-out between logic blocks |
US5258668A (en) * | 1992-05-08 | 1993-11-02 | Altera Corporation | Programmable logic array integrated circuits with cascade connections between logic modules |
-
1993
- 1993-09-02 US US08/116,659 patent/US5349250A/en not_active Expired - Lifetime
-
1994
- 1994-08-31 EP EP94926045A patent/EP0667059B1/de not_active Expired - Lifetime
- 1994-08-31 EP EP00115392A patent/EP1126613A3/de not_active Withdrawn
- 1994-08-31 WO PCT/US1994/009864 patent/WO1995006979A1/en active IP Right Grant
- 1994-08-31 JP JP50826095A patent/JP3594601B2/ja not_active Expired - Lifetime
- 1994-08-31 DE DE69429073T patent/DE69429073T2/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH08503570A (ja) | 1996-04-16 |
US5349250A (en) | 1994-09-20 |
JP3594601B2 (ja) | 2004-12-02 |
EP1126613A2 (de) | 2001-08-22 |
EP0667059B1 (de) | 2001-11-14 |
EP0667059A1 (de) | 1995-08-16 |
WO1995006979A1 (en) | 1995-03-09 |
DE69429073D1 (de) | 2001-12-20 |
EP1126613A3 (de) | 2006-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69429073T2 (de) | Logische struktur und schaltung für schnellen übertrag | |
DE69132540T2 (de) | Programmierbare logische Schaltung | |
DE69827589T2 (de) | Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen | |
DE3839113C2 (de) | ||
DE69731700T2 (de) | Arithmetischer Schaltkreis und arithmetisches Verfahren | |
DE69832985T2 (de) | Multiplizier-Akkumulatorschaltungen | |
DE3586283T2 (de) | Binaere subtrahierschaltung. | |
DE10019698C2 (de) | Vorrichtung zum Durchführen einer Summier-und-Vergleichs-Operation | |
DE4335245A1 (de) | Vektorlogikverfahren und dynamisches Logikgatter für eine selbstzeitgebende, monotone Logikprogression | |
DE68927488T2 (de) | Binäre Übertragvorgriffsschaltung | |
DE3940897A1 (de) | Schaltungsanordnung und verfahren zur berechnung digitaler summen in einem halbleiteraddierer mit paralleluebertrag | |
EP1540460B1 (de) | Vorrichtung und verfahren zum umsetzen und addiererschaltung | |
DE112005001906B4 (de) | Mehrbit-Addierer und Verfahren zum Propagieren, Generieren oder Killen von Carry-In-Bits entlang einer Carry-Kette | |
EP0352549B1 (de) | Carry-select-Addierer | |
DE3828290C2 (de) | ||
EP0224656B1 (de) | Mehrstelliger Carry-Ripple-Addierer in CMOS-Technik mit zwei Typen von Addiererzellen | |
DE3880409T2 (de) | Binäre Additions- und Multiplikationsvorrichtung. | |
DE102004056738B3 (de) | Programmierbare Logikzelle für eine programmierbare Logikanordnung, arithmetische Einheit und digitale Schaltungsanordnung | |
DE69622486T2 (de) | Übertragvorgriffsgerät mit alternierender polarität | |
DE1499227C3 (de) | Schaltungsanordnung für arithmetische und logische Grundoperationen | |
DE60016527T2 (de) | Ein Inkrementierer / Dekrementierer mit verringerter Ausgangsbelastungsarchitektur | |
DE2913899C2 (de) | Rechen- und Verknüpfungsschaltung | |
EP0218071B1 (de) | Addierzelle für Carry-Ripple-Addierer in CMOS-Technik | |
DE10206830B4 (de) | Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden | |
DE3785762T2 (de) | Mehrwertige Ale. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |