-
HINTERGRUND
DER ERFINDUNG
-
Die
vorliegende Erfindung, wie in den Ansprüchen 1 und 10 definiert, bezieht
sich auf das Gebiet der programmierbaren logischen integrierten Schaltungen.
Genauer schafft die vorliegende Erfindung eine verbesserte programmierbare
Logikarchitektur, sowie eine Verbesserung bei der Zusammenstellung,
Konfiguration und den Anordnungen von Logikgatteranordnungsblöcken und
Logikelemente und ferner der Zwischenverbindungen zwischen diesen
Logikgatteranordnungsblöcken
und logischen Elementen.
-
Programmierbare
Logikvorrichtungen (PLDs) sind im Stand der elektronischen Technik wohl
bekannt. Solche programmierbaren Logikvorrichtungen werden gewöhnlich als
PALs (Programmable Array Logic, programmierbare Gatterlogik) PLAs
(Programmable Logic Arrays, programmierbare Logikgatteranordnungen)
und FPLAs (Field Programmable Logic Arrays, feldprogrammierbare
Logikgatter), PLDs (Programmable Logic Devices, programmierbare
Logikvorrichtungen), EPLDs (Erasable Programmable Logic Devices,
löschbare
programmierbare Logikvorrichtungen), EEPLDs (Electrically Erasable
Programmable Logic Devices, elektrisch löschbare programmierbare Logikvorrichtungen), LCAs
(Logic Cell Arrays, Logikzellenanordnungsn), FPGAs (Field Programmable
Gate Arrays, feldprogrammierbare Gatteranordnungen) und dergleichen bezeichnet.
Solche Vorrichtungen werden in einem weiten Anwendungsgebiet verwendet,
wo es wünschenswert
ist, serienmäßig produzierte
Standardvorrichtungen für
eine spezifische Anwendung zu programmieren. Solche Vorrichtungen
umfassen z. B. die wohlbekannten ClassicTM,
MAX® 5000
und FLEX® 8000
EPLDs, von Altera Corp. hergestellt.
-
Es
sind allgemein PLDs bekannt, bei denen viele Logikgatteranordnungsblöcke (LABs)
in einer zweidimensionalen Anordnung vorgesehen sind. Ferner weisen
PLDs eine Anordnung von kreuzenden Signalleitern für die programmierbare
Auswahl und Leitung von Logiksignalen zu, von und zwischen den Logikgatteranordnungsblöcken auf.
LABs enthalten eine Anzahl programmierbarer Logikelemente (LEs),
die relativ elementare Logikfunktionen bereitstellen, wie z. B.
Nicht-UND, Nicht-ODER und Exklusiv-ODER.
-
Infolge
der kontinuierlichen Skalierung und Schrumpfung von Halbleitervorrichtungsgeometrien, die
verwendet werden, um integrierte Schaltungen (auch bekannt als "Chips") zu bilden, wurden
integrierte Schaltungen zunehmend kleiner und dichter. Für eine programmierbare
Logik wird es möglich, eine
größere Anzahl
von programmierbaren Logikelementen auf eine integrierte Schaltung
zu setzen. Wenn die Anzahl der Elemente ansteigt, wird es ferner
zunehmend wichtig, die Techniken und Architekturen zu verbessern,
die verwendet werden, um die Elemente zu verbinden und die Signale
zwischen den Logikblöcken
zu leiten. Insbesondere ist es wichtig, genügend Verbindungsmittel zwischen
den programmierbaren Logikelementen bereitzustellen, so dass die
Fähigkeiten
der logischen Elemente vollständig genützt werden
können
und komplexe Logikfunktionen (die z. B. die Kombination mehrerer
LABs und LEs erfordern) ausgeführt
werden können,
ohne so viele Verbindungsmittel vorzusehen, dass ein verschwenderisches Übermaß von dieser
Art Betriebsmittel vorhanden ist.
-
Obwohl
solche Vorrichtungen einen bemerkenswerten Erfolg haben, unterliegen
solche Vorrichtungen auch gewissen Einschränkungen, insbesondere in Situationen,
in denen die Bereitstellung zusätzlicher
oder alternativer Typen von Verbindungen zwischen den Logikmodulen
Vorteile hätte,
die ausreichen, um die zusätzliche
Schaltungs- und Programmierkomplexität zu rechtfertigen. Solche
zusätzlichen
Verbindungswege können
wünschenswert sein,
um häufig
benötigte
Arten von Verbindungen herzustellen, gewisse Arten von Verbindungen
zu beschleunigen, die Herstellung von Kurzstreckenverbindungen zu
erlauben, ohne mehr Universal-Verbindungsmittel, wie z. B. Langstreckenverbindungen,
zu binden. Es besteht ferner ein ständiger Bedarf an Logikvorrichtungen
mit größerer Leistungsfähigkeit. Dies
ergibt eine Notwendigkeit, Logikfunktionen effizienter zu implementieren
und den Abschnitt der Vorrichtung, der der Verbindung individueller
Logikmodule gewidmet ist, besser zu nutzen.
-
Wie
deutlich wird, ist eine verbesserte programmierbare integrierte
Logikgatteranordnungs-Schaltungsarchitektur erforderlich, insbesondere
eine Architektur, die zusätzliche
Möglichkeiten für Verbindungen
zwischen den Logikmodulen und verbesserte Techniken zum Organisieren
und Verbinden der programmierbaren Logikelemente, einschließlich LABs
und LEs, bereitstellt.
-
US-Patent
Nr. 5.338.984 offenbart eine konfigurierbare Logikgatteranordnung,
die eine Matrix aus individuell konfigurierbaren Logikzellen, die
in Zeilen und Spalten angeordnet sind, mit Bussen, die benachbarte
Zeilen und benachbarte Spalten verbinden und zwischen diagonal ausgerichteten
Zellen verlaufen, umfasst.
-
ÜBERBLICK ÜBER DIE
ERFINDUNG
-
Die
vorliegende Erfindung schafft einen Logikgatteranordnungsblock für eine programmierbare Logikvorrichtung,
umfassend: einen ersten dedizierten Eingang; einen ersten Vier-Eingang-Funktionsblock
zum Implementieren logischer Funktionen; einen zweiten Vier-Eingang-Funktionsblock
zum Implementieren logischer Funktionen; einen Zwei-Eingang-Funktionsblock
zum Implementieren logischer Funktionen, wobei ein Ausgang des ersten
Vier-Eingang-Funktionsblocks mit einem ersten Eingang des Zwei-Eingang-Funktionsblocks verbunden
ist; und einen ersten Multiplexer-Block, der selektiv den ersten dedizierten
Eingang und den Ausgang des ersten Vier-Eingang-Funktionsblocks mit einem ersten
Eingang des zweiten Vier-Eingang-Funktionsblocks
verbindet.
-
Die
vorliegende Erfindung schafft ferner einen Logikgatteranordnungsblock
für eine
programmierbare Logikvorrichtung, umfassend: einen ersten dedizierten
Eingang; einen ersten programmierbaren Funktionsblock zum Implementieren
logischer Funktionen; einen zweiten programmierbaren Funktionsblock
zum Implementieren logischer Funktionen; einen dritten programmierbaren
Funktionsblock zum Implementieren logischer Funktionen, wobei ein
Ausgang des ersten programmierbaren Funktionsblocks mit einem ersten
Eingang des dritten programmierbaren Funktionsblocks verbunden ist;
einen ersten Multiplexer-Block, der den ersten dedizierten Eingang
und den Ausgang des ersten programmierbaren Funktionsblocks mit
einem ersten Eingang des zweiten programmierbaren Funktionsblocks
selektiv verbindet; und eine logische Zwischenverbindungsstruktur,
die einen Ausgang des ersten programmierbaren Funktionsblocks oder
einen Ausgang des zweiten programmierbaren Funktionsblocks mit einem
ausgewählten
Ausgang des Logikgatteranordnungsblocks programmierbar verbindet,
ohne über einen
globalen Zwischenverbindungsbereich der programmierbaren Logikvorrichtung
zu leiten.
-
Eine
neue programmierbare Logikvorrichtungsarchitektur mit einem verbesserten
Logikgatteranordnungsblock (Logic Array Block, LAB) und verbesserten
Verbindungsmitteln wird mittels der vorliegenden Erfindung geschaffen.
Die vorliegende Erfindung ist eine programmierbare Logikarchitektur,
die die Implementierung von logischen Funktionen erleichtert. Ferner
ist die vorliegende Erfindung eine Architektur zum Verbessern der
Verbindungen zwischen einer Gruppe von Funktionsblöcken, die
in einer grober gekörnten
Instanz, Logikgatteranordnungsblock (LAB) genannt, angeordnet sind.
Die vorliegende Erfindung ermöglicht
die Konstruktion größerer logischer
Funktionen (einschließlich
solcher, die mehrere LABs erfordern) in effizienterer Weise. Zwischen
der Schaltung und den Verbindungsmitteln zu diesem Zweck können auf
einer globalen Ebene LABs miteinander kombiniert und mit Eingangs-
und Ausgangszellen der programmierbaren integrierten Logikschaltung über ein
schaltkastenartiges Verbindungsschema oder globale programmierbare
Verbindungsmittel verbunden werden. Innerhalb eines LAB können Funktionsblöcke unter
Verwendung interner Rückführung und
eines lokalen Verbindungsbereiches kombiniert werden.
-
In
einer PLD der vorliegenden Erfindung werden globale Verbindungsmittel
verwendet, um Signale zu und von mehreren LABs programmierbar zu kombinieren
und zu verbinden. Ein LAB ist eine Gruppierung programmierbarer
Mittel zur Implementierung logischer Funktionen. Die globalen Verbindungsmittel
umfassen Schaltkästen,
Taktleitungen, lange Leitungen, Doppel leitungen, Einzelleitungen und
halb und teilweise belegte Multiplex-Bereiche. Lange Leitungen laufen
horizontal und vertikal für
die Verbindung von LABs über
die gesamten integrierten Schaltungen. Ferner können Ausgangssignale von den
LABs und Signale von Eingangs-Ausgangs-Blöcken der integrierten Schaltung
die langen Leitungen treiben. Doppelleitungen sind für kurze
lokale Verbindungen zwischen zwei LABs vorgesehen. Blockleitungen
sind für
das Treiben von LAB-Takteingängen vorgesehen.
Schaltkästen
werden verwendet, um Doppelleitungen mit anderen Doppelleitungen
in irgendeiner von drei Richtungen zu verbinden.
-
Die
vorliegende Erfindung enthält
einen LAB mit zwei Ebenen von programmierbaren Funktionsblöcken. In
einer Ausführungsform
der vorliegenden Erfindung befinden sich in einer ersten Ebene mehrere
primäre
Vier-Eingang-Funktionsblöcke. In
einer zweiten Ebene befinden sich mehrere sekundäre Vier-Eingang-Funktionsblöcke und
mehrere sekundäre
Zwei-Eingang-Funktionsblöcke. Diese
programmierbaren Funktionsblöcke
können
unter Verwendung von z. B. LUTs (Look Up Tables, Nachschlagtabellen)
implementiert sein. Die Ausgänge
der primären
LUTs werden dann in die Eingänge
der sekundären
LUTs eingespeist, um komplexere Logikfunktionen auf der Grundlage
dieser Ausgänge
zu schaffen.
-
Ein
LAB besitzt registergestützte
und kombinatorische Ausgänge.
Kombinatorische Ausgänge können lokal
zu den Eingängen
der primären
LUTs über
einen halb belegten Eingangsmultiplexerbereich, der für den LAB
lokal ist, zurückgeführt werden, ohne
globale Verbindungsmittel zu verwenden. Ein registergestützter Ausgang
kann über
globale Verbindungsmittel, die für
den LAB extern sind, zu einem Eingang des LAB zurückgeführt werden.
Ferner kann ein LAB der vorliegenden Erfindung eine Erzeugen-Fortpflanzen-Übertragskette implementieren. Außerdem kann
ein LAB der vorliegenden Erfindung in einem RAM-Modus konfiguriert
sein, um einen RAM-Speicher zu implementieren.
-
Gemäß der Lehre
dieser Erfindung wird ein Logikgatteranordnungsblock für eine programmierbare
Logikvorrichtung geschaffen, der die folgenden Elemente enthält: einen
dedizierten Eingang; einen ersten programmierbaren Funktionsblock
zum Implementieren logischer Funktionen; und einen zweiten programmierbaren
Funktionsblock, der mit dem dedizierten Eingang des ersten Funktionsblocks
selektiv verbunden wird, um logische Funktionen zu implementieren.
Genauer enthält
der Logikgatteranordnungsblock für
eine programmierbare Logikvorrichtung: (1) einen dedizierten Eingang;
(2) einen ersten Vier-Eingang-Funktionsblock zum Implementieren logischer
Funktionen; (3) einen zweiten Vier-Eingang-Funktionsblock zum Implementieren
logischer Funktionen; und (4) einen ersten Multiplexer-Block. Dieser
erste Multiplexer-Block besitzt einen ersten Eingang, der mit dem
dedizierten Eingang verbunden ist; einen zweiten Eingang, der mit
einem Ausgang des ersten Vier-Eingang-Funktionsblocks verbunden ist;
und einen Ausgang, der mit dem zweiten Vier-Eingang-Funktionsblock
verbunden ist. Der erste Multiplexer-Block dient zum selektiven
Verbinden des dedizierten Eingangs oder des ersten Vier-Eingang-Funktionsblocks
mit dem zweiten Vier-Eingang-Funktionsblock.
-
Weitere
Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden
deutlich beim Betrachten der folgenden genauen Beschreibung und der
beigefügten
Zeichnungen, in welchen ähnliche Bezugszeichen über alle
Figuren hinweg ähnliche Merkmale
bezeichnen.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm eines digitalen Systems, das eine programmierbare
integrierte Logikvorrichtungsschaltung enthält;
-
2 ist
ein Blockdiagramm, das die Gesamtarchitektur einer programmierbaren
Logikvorrichtung zeigt;
-
3 ist
ein Blockdiagramm eines Gesamtverbindungsschemas für Logikgatteranordnungsblöcke der
vorliegenden Erfindung;
-
4 ist ein genaueres Diagramm eines Schaltkastens
der vorliegenden Erfindung;
-
5 ist
ein vereinfachtes Blockdiagramm eines Logikgatteranordnungsblocks
(LAB) einer programmierbaren Logikvorrichtung;
-
6 ist
ein genaueres Blockdiagramm eines Logikgatteranordnungsblocks der
vorliegenden Erfindung;
-
7 ist
ein Blockdiagramm, das ein Übertragskettenschema
der vorliegenden Erfindung zeigt; und
-
8 ist
ein Blockdiagramm, das einen Logikgatteranordnungsblock der vorliegenden
Erfindung zeigt, der als Schreib/Lese-Speicher konfiguriert ist.
-
GENAUE BESCHREIBUNG DER
BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
1 zeigt
ein Blockdiagramm eines digitalen Systems, innerhalb dem die vorliegende
Erfindung ausgeführt
werden kann. In der speziellen Ausführungsform der 1 ist
eine Verarbeitungseinheit 101 mit einem Speicher 105 und
einer E/A-Einrichtung 111 verbunden und enthält eine
programmierbare Logikvorrichtung (PLD) 121. Die PLD 121 kann speziell über die
Verbindung 131 und dem Speicher 105 und über die
Verbindung 135 mit der E/A-Einrichtung 111 gekoppelt
sein. Das System kann ein programmiertes digitales Computersystem,
ein digitales Signalverarbeitungssystem, ein spezialisiertes digitales
Schaltnetzwerk oder ein anderes Verarbeitungssystem sein. Außerdem kann
das System ein Universalcomputer, ein Spezialzweckcomputer (wie
z. B. eine Telekommunikationsanlage), der für eine Anwendung spezifische
Aufgabe optimiert ist, wie z. B. die Programmierung der PLD 121,
oder eine Kombination aus einem Universalcomputer und einer Hilfs-Spezialzweck-Hardware
sein.
-
Die
Verarbeitungseinheit 101 kann Daten zur Verarbeitung oder
Speicherung zu einer geeigneten Systemkomponente leiten, ein im
Speicher 105 gespeichertes oder unter Verwendung der E/A-Einrichtung 111 eingegebenes
Programm ausführen,
oder eine andere ähnliche
Funktion ausführen.
Die Verarbeitungseinheit 101 kann eine Zentraleinheit (CPU), ein
Mikroprozessor, ein Fließkomma-Coprozessor, ein
Graphik-Coprozessor, ein Hardware-Controller, ein Mikrocontroller, eine
für die
Verwendung als Controller programmierte programmierbare Logikvorrichtung
oder eine andere Verar beitungseinheit sein. Ferner besteht in vielen
Ausführungsformen
häufig keine
Notwendigkeit für
eine CPU. Zum Beispiel können
anstelle einer CPU ein oder mehrere PLDs 121 die logischen
Operationen des Systems steuern.
-
In
bestimmten Ausführungsformen
kann die Verarbeitungseinheit 101 sogar ein Computersystem sein.
In einer Ausführungsform
kann der Quellcode im Speicher 105 gespeichert sein, in
Maschinensprache kompiliert werden und von der Verarbeitungseinheit 101 ausgeführt werden.
Die Verarbeitungseinheit 101 muss keine CPU enthalten,
wobei in einer Ausführungsform
die Befehle von einer oder mehreren PLDs 121 ausgeführt werden
können.
Statt den Quellcode im Speicher 105 zu speichern, können auch
lediglich die Maschinensprachdarstellung des Quellcodes ohne den
Quellcode im Speicher 105 für die Ausführung durch die Verarbeitungseinheit 101 gespeichert
sein. Der Speicher 105 kann ein Schrei/Lese-Speicher (RAM),
ein Nur-Lese-Speicher (ROM),
feste oder flexible Plattenmedien, PC-Karten-Flash-Plattenspeicher,
Bandspeichermittel oder irgendwelche anderen Speicher- und Wiedergewinnungsmittel
oder irgendwelche Kombinationen dieser Speicher- und Wiedergewinnungsmittel
umfassen.
-
Die
Verarbeitungseinheit 101 verwendet die E/A-Einrichtung 101,
um einen Eingabe- und Ausgabeweg für die Benutzerinteraktion bereitzustellen. Zum
Beispiel kann ein Benutzer logische Funktionen eingeben, die in
die programmierbare Logikvorrichtung 121 programmiert werden
sollen. Die E/A-Einrichtung 111 kann
eine Tastatur, eine Maus, eine Kugelführung, ein Digitalisierungstablett,
eine Text- oder Graphikanzeige, einen Berührungsschirm, ein Stifttablett,
einen Drucker oder andere Eingabe- oder Ausgabemittel oder irgendeine
Kombination dieser Mittel umfassen. In einer Ausführungsform
enthält die
E/A-Einrichtung 111 einen Drucker, der zum Drucken einer
Hardcopy irgendeiner Ausgabe der Verarbeitungseinheit 101 verwendet
wird. Genauer kann ein Benutzer unter Verwendung der E/A-Einrichtung 111 eine
Kopie eines Dokuments ausdrucken, das unter Verwendung eines Textverarbeitungsprogramms
erstellt worden ist, welches unter Verwendung der Verarbeitungseinheit 101 ausgeführt wird. In
anderen Fällen
kann ein Benutzer eine Kopie des Quellcodes oder eine Auflistung
logischer Funktionen, die in der PLD 121 enthalten sind,
ausdrucken.
-
Die
PLD kann vielen verschiedenen Zwecken innerhalb des Systems in 1 dienen.
Die PLD 121 kann ein logischer Baustein der Verarbeitungseinheit 101 sein
und deren interne und externe Operationen unterstützen. Die
PLD 121 wird programmiert, um die logischen Funktionen
zu implementieren, die notwendig sind, um ihre besondere Rolle in
der Systemoperation zu bewältigen.
-
Beispielhaft
für die
vielfältigen
Anwendungen für
die PLD 121 kann die Verarbeitungseinheit 101 die
PLD 121 über
die Verbindung 131 verwenden, um Speicher- oder Anschlussadressen
für den
Zugriff auf den Speicher 105 oder die E/A-Einrichtung 111 zu decodieren.
Die PLD 121 kann programmiert werden, um Daten wie ein
Speicher oder ein spezialisierter Speicher zu speichern, wobei diese
von der Verarbeitungseinheit 101 oder dem Speicher 105 (über die
Verbindung 131) kommen. Die PLD 121 kann als Mikrocontroller
für eine
Speichervorrichtung 105, wie z. B. ein festes oder flexibles
Plattenlaufwerk, verwendet werden. Die PLD 121 kann ferner
als Mikrocontroller für
eine E/A-Vorrichtung 111 konfiguriert sein, wie z. B. eine
Tastatur oder ein Scanner, die Daten über die Verbindung 135 weiterleiten.
-
In
anderen Ausführungsformen
kann die PLD 121 als Controller oder spezialisierte Verarbeitungseinheit
wie z. B. als Coprozessor für
die Durchführung
mathematischer oder graphischer Berechnungen verwendet werden. In
anderen Ausführungsformen
kann die PLD 121 für
Telekommunikationsanwendungen verwendet werden. Zum Beispiel würde die
Verarbeitungseinheit 101 Daten an die PLD 121 weiterleiten;
die PLD 121 verarbeitet diese Daten; anschließend gibt
die PLD 121 die Ergebnisse an die Verarbeitungseinheit 101 zurück. Ferner
kann die Verarbeitungseinheit 101 ein im Speicher 105 gespeichertes
oder unter Verwendung der E/A-Einheit 111 eingegebenes
Programm zur Ausführung
an die PLD 121 weiterleiten. Dies sind einige der vielen
Anwendungen einer PLD 121 innerhalb eines digitalen Systems.
Ferner kann ein System, wie z. B. dasjenige, das in 1 gezeigt
ist, mehrere PLDs 121 jeweils zur Durchführung verschiedener
Systemfunktionen enthalten.
-
Das
in 1 gezeigte System kann ferner zur Programmierung
der PLD 121 mit einem bestimmten Logikmuster verwendet
werden. Ein Computerpro gramm zum Ausbilden von Funktionen in einer
PLD kann im Speicher 105 gespeichert sein und unter Verwendung
der Verarbeitungseinheit 101 ausgeführt werden. Anschließend wird
ein Gestaltungsmerkmal, das in die PLD 121 programmiert
werden soll, über
die E/A-Einrichtung 111 eingegeben und von der Verarbeitungseinheit 101 verarbeitet. Schließlich überträgt und programmiert
die Verarbeitungseinheit 101 das Gestaltungsmerkmal in
die PLD 121.
-
Wie
in 1 gezeigt ist, enthält die Verarbeitungseinheit 101 die
PLD 121. In anderen Ausführungsformen kann jedoch die
PLD 121 für
die Verarbeitungseinheit 101 extern sein, wobei zwischen
der Verarbeitungseinheit 101 und der PLD 121 eine PLD-Schnittstelle
angeschlossen sein kann. Die PLD-Schnittstelle
würde die
geeigneten Adapter oder Anschlüsse
für die
Verbindung der PLD 121 mit der Verarbeitungseinheit 101 bereitstellen.
Außerdem würde die
PLD-Schnittstelle die geeigneten Spannungen und elektrischen Eigenschaften
für die
Verbindung der PLD 121 mit der Verarbeitungseinheit 101 bereitstellen.
-
2 ist
ein vereinfachtes Blockdiagramm der gesamten internen Architektur
und Organisation der PLD 121 der 1. Viele
Einzelheiten der PLD-Architektur,
der Organisation und der Schaltungsauslegung sind für ein Verständnis der
vorliegenden Erfindung nicht notwendig, wobei solche Einzelheiten
in 2 nicht gezeigt sind.
-
2 zeigt
eine zweidimensionale 6 × 6-Anordnung
von 36 Logikgatteranordnungsblöcken (LABs) 200.
Ein LAB 200 ist eine physikalisch gruppierte Menge logischer
Mittel, die zur Durchführung logischer
Funktionen konfiguriert oder programmiert sind. Die interne Architektur
eines LAB wird im Folgenden in Verbindung mit 3 genauer
beschrieben. PLDs können
eine beliebige Anzahl von LABs enthalten, mehr oder weniger als
die in 2 gezeigte PLD 121. Im Allgemeinen werden
in Zukunft zweifellos mit den technischen Fortschritten und Verbesserungen
programmierbare Logikvorrichtungen mit noch größeren Anzahlen von Logikgatteranordnungsblöcken hergestellt.
Ferner müssen
LABs 200 nicht in einer quadratischen Matrix organisiert
sein; z. B. kann die Anordnung in einer 5 × 7- oder 20 × 70-Matrix
von LABs organisiert sein.
-
Der
LAB 200 besitzt Eingänge
und Ausgänge
(nicht gezeigt), die programmierbar mit einer globalen Verbindungsstruktur
verbunden werden können,
die eine Anordnung von globalen horizontalen Verbindungen (GHs) 210 und
globalen vertikalen Verbindungen (GVs) 220 umfasst. Obwohl
in 2 als einzelne Leitungen gezeigt, repräsentiert
jede Leitung GH 210 und GV 220 mehrere Signalleiter. Die
Eingänge
und Ausgänge
des LAB 200 sind programmierbar mit einer benachbarten
GH 210 und einer benachbarten GV 220 verbindbar.
Unter Verwendung der Verbindungen GH 210 und GV 220 können mehrere
LABs 200 verbunden und kombiniert werden, um größere, komplexere
Logikfunktionen zu implementieren, als unter Verwendung eines einzelnen LAB 200 verwirklicht
werden können.
-
In
einer Ausführungsform
sind die Leiter GH 210 und GV 220 programmierbar
an den Schnittpunkten 225 dieser Leiter verbindbar. Außerdem können die
Leiter GH 210 und GV 220 mehrfache Verbindungen
zu anderen Leitern GH 210 und GV 200 herstellen.
Verschiedene Leiter GH 210 und GV 220 können programmierbar
miteinander verbunden werden, um einen Signalweg von einem LAB 200 an einem
Ort der PLD 121 zu einem weiteren LAB 200 an einem
anderen Ort der PLD 121 zu erzeugen. Ferner kann ein Ausgangssignal
von einem LAB 200 zu den Eingängen eines oder mehrerer LABs 200 geleitet
werden. Ferner können
unter Verwendung der globalen Verbindung Signale von einem LAB 200 zum
gleichen LAB 200 zurückgeführt werden.
In anderen Ausführungsformen
der vorliegenden Erfindung sind nur ausgewählte Leiter GH 210 mit
einer Auswahl von Leitern GV 220 programmierbar verbindbar.
In weiteren Ausführungsformen
können
ferner Leiter GH 210 und GV 220 speziell verwendet werden,
um ein Signal in einer spezifischen Richtungen, z. B. Eingang oder
Ausgang, jedoch nicht beides, zu leiten. Zum Beispiel können ein
oder mehrere Leiter GH 210 oder GV 220 als dedizierter
Eingangstreiber oder dediziertes Taktnetzwerk zum Treiben der LABs 200 von
einem Eingangsstift der integrierten Schaltung verwendet werden.
-
Die
PLD-Architektur in 2 zeigt ferner an den Rändern des
Chips Eingangs-Ausgangs-Treiber 230. Die Eingangs-Ausgangs-Treiber 230 dienen zum
Datenaustausch der PLD mit einer externen Schaltung außerhalb
des Chips. 2 zeigt 32 Eingangs-Ausgangs-Treiber 230;
jedoch kann eine PLD eine beliebige Anzahl von Eingangs-Ausgangs-Treibern
enthalten, mehr oder weniger als die dargestellte Anzahl. Jeder
Eingangs-Ausgangs-Treiber 230 ist für die Verwendung als Eingangstreiber,
Ausgangstreiber oder bidirektionaler Treiber konfigurierbar. Ein Eingangstreiber
nimmt Signale von außerhalb
des Chips an und übermittelt
diese an die Schaltung auf dem Chip. Ein Ausgangstreiber nimmt interne
Signale an und übermittelt
diese an die Außenwelt.
Ein bidirektionaler Treiber führt
die Funktionen sowohl eines Eingangstreibers als auch eines Ausgangstreibers
aus. Außerdem
besitzt ein bidirektionaler Treiber einen Hochimpedanzmodus, der
dem Treiber erlaubt, mit einem bidirektionalen Bus gekoppelt zu werden.
In anderen Ausführungsformen
der vorliegenden Erfindung kann eine PLD dedizierte Eingangstreiber
und dedizierte Ausgangstreiber sowie spezielle "schnelle" Eingangstreiber und dergleichen aufweisen.
-
Ähnlich den
LABs 200 sind die Eingangs-Ausgangs-Treiber 230 mit
benachbarten Leitern GH 210 und GV 220 programmierbar
verbindbar. Unter Verwendung der Leiter GH 210 und GV 220 sind
die Eingangs-Ausgangs-Treiber 230 mit
irgendeinem LAB 200 programmierbar verbindbar. Die Eingangs-Ausgangs-Treiber 230 erleichtern
die Übertragung
von Daten zwischen den LABs 200 und externen Schaltungen
außerhalb
des Chips. Zum Beispiel können
Logiksignale von anderen Chips außerhalb dieses Chips über Eingangs-Ausgangs-Treiber 230 angekoppelt
werden, um einen oder mehrere LABs 200 anzusteuern. Auf
der Grundlage dieser Eingaben von außerhalb des Chips und der in
den LABs 200 programmierten Logikfunktionen erzeugen die
LABs 200 Ausgangssignale, die über die globale Verbindung
zum Eingangs-Ausgangs-Treibern 230 weitergeleitet werden,
um sie mit einer Schaltung außerhalb
des Chips zu koppeln.
-
3 zeigt
eine weitere Ausführungsform
einer gesamten internen Architektur und Organisation der PLD 121 der 1.
Die PLD 121 der 3 enthält LABs 200, die physikalisch
gruppierte Mengen logischer Mittel sind, die konfiguriert oder programmiert
werden, um logische Funktionen auszuführen. 3 zeigt
6 LABs, die in einer 2 × 3-Matrix
angeordnet sind. Die PLD 121 kann jedoch eine beliebige
Anzahl von LABs größer oder
kleiner als diejenige, die in 3 gezeigt
ist, aufweisen. Ferner kann die PLD 121 in einem beliebigen
Format wie z. B. 10 × 12
organisiert sein. Die interne Architektur eines LAB 200 wird
im Folgenden genauer beschrieben.
-
Die
LABs 200 der 3 sind unter Verwendung globaler
Verbindungsmittel programmierbar verbindbar, wie oben mit Bezug
auf 2 beschrieben worden ist. Wie in 2 gezeigt,
sind die globalen Verbindungsmittel der 3 ebenfalls
in horizontaler und vertikaler Richtung organisiert. Unter Verwendung
dieser globalen Verbindungsmittel können die LABs 200 programmierbar
kombiniert werden, um größere komplexere
Logikfunktionen zu bilden, als mittels eines einzelnen LAB verfügbar ist.
Die globalen Verbindungsmittel der 3 enthalten
genauer Schaltkästen 310,
teilweise belegte Multiplexer-Bereiche 320, halb belegte
Multiplexer-Bereiche 330, horizontale lange Leitungen 340,
vertikale lange Leitungen 350, horizontale Doppelleitungen 360 und vertikale
Doppelleitungen 360.
-
3 zeigt
ferner nur einen Abschnitt der PLD 121. Die PLD 121 kann
ferner Eingangs-Ausgangs-Treiber 230 (nicht gezeigt) enthalten,
wie in 2, um die PLD 121 mit einer Schaltung
außerhalb
des Chips zu koppeln. Wie in
-
2 sind
die Eingangs-Ausgangs-Treiber 230 (nicht gezeigt) unter
Verwendung der globalen Verbindungsmittel programmierbar verbindbar.
-
Es
gibt verschiedene Typen von Verbindungsmitteln, die auf der Grundlage
der relativen Länge
ihrer Segmente unterscheidbar sind. Insbesondere lange Leitungen
(auch als "globale
Leitungen" bekannt),
die horizontale lange Leitungen 340 und vertikale lange
Leitungen 350 umfassen, sind Leiter, die über die
gesamte Länge
und breite einer Anordnung verlaufen. Horizontale lange Leitungen 340 erstrecken
sich in einer ersten Richtung einer Anordnung von LABs 200.
Vertikale lange Leitungen 350 erstrecken sich in einer
zweiten Richtung der Anordnung von LABs 200.
-
Horizontale
und vertikale lange Leitungen 340 und 350 werden
verwendet, um Signale über
die gesamte PLD 121 programmierbar zu koppeln. Auf diese
Weise können
mehrere LABs 200 kombiniert werden, um größere komplexere
Logikfunktionen zu implementieren. Ferner sind lange Leitungen 230 und 350 geeignete
Leiter für
die Verteilung von zeitkritischen Steuersignalen mit hoher Ausgangslast, wie
z. B. einem Taktsignal, über
eine integ rierte PLD-Schaltung mit minimaler Zeitverschiebung. Außerdem können lange
Leitungen 340 und 350 zu einem bidirektionalen
Dreizustands-Bus konfiguriert werden. In einer Ausführungsform
kann die PLD 121 lange Leitungen enthalten, die für eine bestimmte Funktion
dediziert sind, wie z. B. eine dedizierte Taktleitung für die Leitung
eines Taktnetzwerks.
-
Wie
in 3 gezeigt ist, weisen die LABs 200 Eingangs-Ausgangs-Leitungen
380 zum Empfangen und Bereitstellen von Logiksignalen auf. LAB-Eingangs-Ausgangs-Leitungen 380 enthalten bidirektionale
Wege, die als Eingang oder als Ausgang programmiert oder konfiguriert
werden können. Ferner
können
LAB-Eingangs-Ausgangs-Leitungen 380 dedizierte Eingänge und
dedizierte Ausgänge enthalten.
Außerdem
können
LAB-Eingangs-Ausgangs-Leitungen 380 eine Kombination bidirektionaler
Wege, dedizierter Eingänge
und dedizierter Ausgänge
enthalten.
-
Unter
Verwendung von LAB-Eingangs-Ausgangs-Leitungen 380 können horizontale
und vertikale lange Leitungen 340 und 350 verwendet
werden, um Signale zu und von LABs 200 an verschiedenen
Orten der PLD 121 programmierbar zu koppeln. Genauer können lange
Leitungen 340 und 350 Eingangssignale für den LAB 200 von
anderen LABs 200 bereitstellen. Lange Leitungen können auch durch
eine Schaltung wie z. B. Eingangs-Ausgangs-Treiber 230 (nicht
gezeigt) angesteuert werden. Eingangs-Ausgangs-Treiber 230 können verwendet
werden, um über
lange Leitungen 340 und 350 Eingangssignale von
externen Schaltungen und Quellen außerhalb des Chips programmierbar
mit den LABs 200 zu koppeln.
-
Genauer
können
in einer Ausführungsform dedizierte
Ausgänge
vom LAB 200 über
LAB-Eingangs-Ausgangs-Leitungen 380 direkt, ohne Umweg über andere
globale Verbindungsmittel, mit horizontalen langen Leitungen 340 programmierbar
gekoppelt werden. Außerdem
können
LAB-Eingangs-Ausgangs-Leitungen 380 auch
indirekt mit horizontalen und vertikalen langen Leitungen 340 und 350 über andere
globale Verbindungsmittel, einschließlich Doppelleitungen 360 und 370,
programmierbar gekoppelt werden.
-
Um
die dedizierten Eingänge
des LAB 200 zu verbinden, können lange Leitungen 340 und 350 über den
teilweise belegten Multiplexer-Bereich 320 (an den Schnittpunkten
der langen Leitungen 340 und 350 und der Doppelleitungen 360 und 370)
mit den Doppelleitungen 360 und 370 programmierbar gekoppelt
werden. Von den Doppelleitungen 360 und 370 können Signale über den
halb belegten Multiplexer-Bereich 330 mit LAB-Eingangs-Ausgangs-Leitungen 380 des
LAB 200 programmierbar gekoppelt werden. In anderen Ausführungsformen
der vorliegenden Erfindung können
horizontale und vertikale lange Leitungen 340 und 350 direkt
mit den dedizierten Eingängen
des LAB 200 oder ausgewählten LABs 200 programmierbar
gekoppelt werden.
-
Indem
kein direkter programmierbarer Eingangspfad von den langen Leitungen 340 und 350 zu den
LABs 200 vorgesehen ist, wird der in der PLD 121 erforderliche
Schaltungsaufwand reduziert. Die gesamte Chipgröße der PLD 121 wird
reduziert, ohne die Leistungsfähigkeit
der integrierten Schaltung stark zu beeinträchtigen. Der negative Einfluss
auf die Leistungsfähigkeit
ist minimal. Zum Beispiel werden Zeitverschiebungsdifferenzen zwischen
verschiedenen LABs 200 ähnlich
sein, da für
die Eingangssignale in den LAB 200 die gleiche Verzögerung hervorgerufen
wird. Ferner ergeben sich bestimmte Zunahmen, da der geringere Schaltungsaufwand
an den Eingängen
der LABs 200 ferner zu reduzierten Parasitäreffekten,
wie z. B. Widerständen und
Kapazitäten,
die die Leistungsfähigkeit
beeinträchtigen,
führt.
-
Zusätzlich zu
den horizontalen und vertikalen langen Leitungen 340 und 350 enthält die PLD 121 der 3 Doppelleitungen 360 und 370 zum
Leiten von Signalen innerhalb der PLD 121. Die langen Leitungen 340 und 350 sowie
die Doppelleitungen 360 und 370 verlaufen in horizontalen
und vertikalen Richtungen der Anordnung. Horizontale Doppelleitungen 360 verlaufen
in der ersten Richtung der Anordnung der LABs 200. Vertikale
Doppelleitungen 370 verlaufen in der zweiten Richtung der
Anordnung der LABs 200. Im Vergleich zu den langen Leitungen 340 und 350 unterstützen die
Doppelleitungen 360 und 370 kürzere lokale Verbindungen zwischen
zwei benachbarten LABs 200, ohne andere globale Verbindungsmittel,
wie z. B. Schaltkästen 310 und
lange Leitungen 340 und 350, zu verwenden. Um
das Diagramm in 3 zu vereinfachen, sind nur
die angegebenen Doppelleitungen 360 und 370 gezeigt,
die den Schaltkasten 310 umgehen. Obwohl nicht gezeigt,
verbinden auch andere Doppelleitungen in 3 programmierbar
zwei benachbarte LABs 200, ohne Schaltkästen 310 zu verwenden.
-
Wie
in dem Fall mit den langen Leitungen 340 und 350 können die
Doppelleitungen 360 und 370 verwendet werden,
um mehrere LABs 200 zu kombinieren und größere komplexere
Logikfunktionen zu implementieren. Horizontale und vertikale Doppelleitungen 360 und 370 werden
verwendet, um z. B. über
den halb belegten Multiplexer-Bereich 330 Eingangs- und
Ausgangssignale (über
LAB-Eingangs-Ausgangs-Leitungen 380) des einen LAB 200 mit
einem weiteren LAB 200 programmierbar zu koppeln. Dieser
Pfad durchläuft
nicht die Schaltkästen 310,
horizontale lange Leitungen 340 oder vertikale lange Leitungen 350.
Da die Doppelleitungen 360 und 370 kürzere Verbindungen
bereitstellen als die langen Leitungen 340 und 350,
weisen die Doppelleitungen 360 und 370 im Allgemeinen
bessere Leistungseigenschaften auf als die langen Leitungen 340 und 350.
Da die langen Leitungen 340 und 350 begrenzte
Betriebsmittel sind, bewahren die Doppelleitungen 360 und 370 die
langen Leitungen 340 und 350 für Logikfunktionen auf, die
längere
Signalpfade erfordern.
-
Die
Doppelleitungen 360 und 370 können einen LAB 200,
der LAB-Eingang-Ausgang-Leitungen 380 aufweist,
die diese bestimmten Doppelleitungen kreuzen oder schneiden, treiben
oder durch diesen getrieben werden. Genauer, die LAB-Eingangs-Ausgangs-Leitungen 380 können über den
halb belegten Eingangs-Multiplexer-Bereich 330 an den Schnittpunkten
der Doppelleitungen und der LAB-Eingangs-Ausgangs-Leitungen programmierbar
mit den Doppelleitungen 360 und 370 gekoppelt
werden. Wie oben beschrieben worden ist, können die langen Leitungen 340 und 350 über teilweise
belegte Multiplexer-Bereiche 320 an den Schnittpunkten
der langen Leitungen und der Doppelleitungen programmierbar mit
den Doppelleitungen 360 und 370 verbunden werden.
-
Die
Doppelleitungen 360 und 370 können über die im Folgenden beschriebenen
Schaltkästen 310 mit
anderen Doppelleitungen 360 und 370 programmierbar
verbunden werden. Genauer, um Signale zwischen mehr als zwei LABs 200 zu
koppeln, können
horizontale und vertikale Doppelleitungen 360 und 370 über die
Schaltkästen 310 bei
Bedarf programmierbar gekoppelt werden, um eine bestimmte Logikfunktion
zu implementieren.
-
Die
vorliegende Erfindung kann einzelne Leitungen 385 enthalten,
die den Doppelleitungen 360 und 370 ähnlich sind,
mit der Ausnahme, dass diese nur LAB-Eingangs-Ausgangs-Leitungen 380 eines LAB 200,
anstatt zweier LABs 200, schneiden. Zum Beispiel können die
Einzelleitungen 385 mit anderen Einzelleitungen 385 über Schaltkästen 310 programmierbar
gekoppelt werden. Die Einzelleitungen 385 können von
einem LAB 200 getrieben werden, der LAB-Eingangs-Ausgangs-Leitungen 380 aufweist, die
diese bestimmten Einzelleitungen 385 kreuzen oder schneiden.
In bestimmten Ausführungsformen der
vorliegenden Erfindung brauchen jedoch die globalen Verbindungsmittel
keine Einzelleitungen 385 enthalten. Die Einzelleitungen 385 erlauben
eine Flexibilität
bei der Verbindung von Signalen und LABs 200, jedoch muss
für viele
logische Entwürfe,
die in PLDs programmiert werden, ein LAB 200 mit wenigstens
einem weiteren LAB 200 verbunden werden. Diesbezüglich kann
der Schaltungsaufwand und der andere Aufwand, der zum Implementieren
einzelner Leitungen erforderlich ist, übermäßig sein, was zu einem größeren Leistungsverbrauch
und zu größeren Chips
der integrierten Schaltungen führt,
als notwendig. Ferner können
bestimmte Verbindungsmittel, wie z. B. Schaltkästen 310 (die verwendet
werden, um mehrere Einzelleitungen 385 programmierbar zu koppeln)
der begrenzende Faktor bei der Größe des Entwurfes sein, der
in der PLD implementiert werden kann. Daher kann eine effektive
effiziente PLD-Architektur Doppelleitungen 360 und 370,
jedoch keine Einzelleitungen 385 enthalten.
-
Weitere
Ausführungsformen
der vorliegenden Erfindung können
Dreifachleitungen, Vierfachleitungen, Fünffachleitungen, Sechsfachleitungen
und andere ähnliche
Verbindungsmittel enthalten. Ferner können in anderen Ausführungsformen
der vorliegenden Erfindung spezielle direkte und indirekte Verbindungen
zwischen LABs 200 vorhanden sein, die nicht über die
globalen Verbindungsmittel laufen.
-
Die
Schaltkästen 310 werden
verwendet, um globale Verbindungsmittel mit anderen globalen Verbindungsmitteln
zu verbinden. Ein genaueres Diagramm eines Schaltkastens 310 ist
in 4A gezeigt. Mehrere Leiter GH 210 und
GV 220 führen
in den bzw. aus dem Schaltkasten 310. Die Leiter GH 210 und
GV 220 repräsentieren
globale Verbindungsmittel. Zum Beispiel können GH 210 und GV 220 horizontalen
und vertikalen Doppelleitungen 360 und 370 der 3 entsprechen.
Der Schaltkasten 310 ist als quadratische Anordnung in 4A gezeigt,
kann jedoch in anderen Ausführungsformen eine
nichtquadratische Anordnung sein. Im Allgemeinen erlaubt der Schaltkasten 310 den
Leitern GH 210 oder GV 220, mit drei ähnlichen
Leitern in anderen Richtungen, in der gleichen Richtung oder in
Schaltrichtungen ("um
eine Ecke") von
der horizontalen Richtung zur vertikalen Richtung, oder umgekehrt, programmierbar
verbunden zu werden.
-
Die
Schaltkästen 310 sind
teilweise belegte Strukturen, die ausgewählte Schnittpunkte 400 bereitstellen,
an denen die Leiter GH 210 und GV 220 programmierbar
mit anderen solchen Leitern verbunden werden können. Die Leiter GH 210 und
GV 200 repräsentieren
globale Verbindungsmittel der PLD 121. Genauer können die
Leiter GH 210 und GV 220 globale Verbindungsmittel
repräsentieren,
die lange Leitungen, Doppelleitungen, Einzelleitungen und Kombinationen
hiervon umfassen. In der Ausführungsform
der 3 repräsentieren
z. B. die Leiter GH 210 und GV 220 die horizontalen
Doppelleitungen 360 bzw. die vertikalen Doppelleitungen 370.
-
Programmierbare
Verbindungen werden an ausgewählten
Schnittpunkten 400 unter Verwendung (nicht gezeigter) Multiplexer
hergestellt. Genauer sind die Leiter GH 210 und GV 220 an
den ausgewählten
Schnittpunkten der Leiter GH 210 und GV 220 programmierbar
verbindbar. Im Allgemeinen werden die ausgewählten Schnittpunkte 400 willkürlich gewählt. In 4A sind
die ausgewählten Schnittpunkte 400 diagonal
angeordnet, von einer oberen linken Ecke des Schaltkastens 310 zu
einer unteren rechten Ecke des Schaltkastens 310. In anderen
Ausführungsformen
jedoch können
die ausgewählten
Schnittpunkte 400 im Schaltkasten 310 in einer
weiteren beliebigen Anordnung angeordnet sein.
-
In
einer weiteren Ausführungsform
der vorliegenden Erfindung enthalten die Schaltkästen 310 Multiplexer
für die
programmierbare Kopplung von langen Leitungen 370 und 380.
Die Signale, die unter Verwendung langer Leitungen 370 und 380 geführt werden,
verlaufen in Längsrichtung
und Breitenrichtung der PLD 121, wie vorher beschrieben
worden ist. Außerdem
können
die langen Leitungen 370 und 380 durch das Treiben
vieler LABs 200 stark belastet sein. Folglich sind in einer
Ausführungsform
die programmierbaren Multiplexer der Schaltkästen 310 zum programmierbaren
Verbinden langer Leitungen 370 und 380 gepuffert,
um den längs
dieser Leitungen laufenden Signalen zu erlauben, die gesamte Länge und
Breite der Anordnung zu treiben. In einer weiteren Ausführungsform
der vorliegenden Erfindung können
die Leiter GH 210 und GV 220 eine Kombination
aus horizontalen und vertikalen langen Leitungen 370 und 380 sowie
horizontalen und vertikalen Doppelleitungen 360 und 370 repräsentieren. Außerdem können die
langen Leitungen 370 und 380 gepuffert sein, während die
Doppelleitungen 360 und 370 ungepuffert sind.
-
Weitere
Einzelheiten eines ausgewählten Schnittpunkts 400 sind
in 4B gezeigt. GH 210A, GH 210B,
GV 220A und GV 220B sind globale Leiter die sich
an verschiedenen ausgewählten
Schnittpunkten 400 in 4A "schneiden". Wie vorher beschrieben
worden ist, können
die Leiter GH 210A, GH 210B, GV 220A und
GV 220B globale Verbindungsmittel repräsentieren, die lange Leitungen, Doppelleitungen,
Einzelleitungen und Kombinationen hiervon umfassen. Zum Beispiel
repräsentieren
in der Ausführungsform
der 3 die Leiter GH 210A, GH 210B,
GV 220A und GV 220B horizontale Doppelleitungen 360 bzw.
vertikale Doppelleitungen 370.
-
Die
Leiter GH 210A, GH 210B, GV 220A und GV 220B sind
programmierbar miteinander verbindbar. Genauer ist GH 210A mit
GV 220A (wie durch die gestrichelte Verbindung 405 gezeigt),
GH 210B (wie durch die gestrichelte Verbindung 410 gezeigt) und
GV 220B (wie durch die gestrichelte Verbindung 415 gezeigt)
programmierbar verbindbar. GV 220A ist mit GV 220B (wie
durch die gestrichelte Verbindung 420 gezeigt) und GH 210B (wie
durch die gestrichelte Verbindung 425 gezeigt) programmierbar verbindbar.
GH 210B ist mit GV 220B (wie durch die gestrichelte
Verbindung 430 gezeigt) programmierbar verbindbar. Diese
programmierbaren Verbindungen sind bidirektional, wobei Signale
in beiden Richtungen laufen können.
Zum Beispiel kann ein Signal längs
der programmierbaren Verbindung 405 von GH 210A zu
GV 220A und von GV 220A zu GH 210A geleitet
werden.
-
Wie
in 3 gezeigt und vorher beschrieben worden ist, dienen
die teilweise belegten Multiplexer-Bereiche 320 zum programmierbaren
Koppeln horizon taler und vertikaler Doppelleitungen 360 und 370 mit
horizontalen und vertikalen langen Leitungen 340 und 350.
In den teilweise belegten Multiplexer-Bereichen 320 schneiden
die langen Leitungen 340 und 350 die Doppelleitungen 360 und 370.
An diesen Schnittpunkten können
die langen Leitungen 340 und 350 mit den Doppelleitungen 360 und 370 programmierbar
verbunden werden. Genauer sind die Bereiche 320 unter Verwendung
teilweise belegter Multiplexer-Strukturen implementiert. In den
teilweise belegten Multiplexer-Strukturen können die langen Leitungen 340 und 350 an
ausgewählten Schnittpunkten
mit den Doppelleitungen 360 und 370 programmierbar
gekoppelt werden. In weiteren Ausführungsformen der vorliegenden
Erfindung können die
Bereiche 320 vollständig
belegte Multiplexer-Strukturen
sein, wo die langen Leitungen 340 und 350 an allen
Schnittpunkten mit den Doppelleitungen 360 und 370 programmierbar
gekoppelt werden können.
In weiteren Ausführungsformen
der vorliegenden Erfindung können
die Bereiche 320 halb belegte Multiplexer-Strukturen sein,
wo die langen Leitungen 340 und 350 an der Hälfte der
Schnittpunkte mit den Doppelleitungen 360 und 370 programmierbar
gekoppelt werden können.
-
Halbbelegte
Multiplexer-Bereiche 330 dienen zum programmierbaren Koppeln
von LAB-Eingangs-Ausgangs-Leitungen 380 von den LABs 200 mit
horizontalen und vertikalen Doppelleitungen 360 und 370.
In den halb belegten Multiplexer-Bereichen 330 schneiden
die LAB-Eingangs-Ausgangs-Leitungen 380 die
Doppelleitungen 360 und 370. An diesen Schnittpunkten
können
die LAB-Eingangs-Ausgangs-Leitungen 380 mit den Doppelleitungen 360 und 370 programmierbar
gekoppelt werden. Genauer sind die Bereiche 320 unter Verwendung
von halb belegten Multiplexer-Strukturen implementiert. In den teilweise
belegten Multiplexer-Strukturen können die LAB-Eingangs-Ausgangs-Leitungen 380 an
einer ausgewählten
Hälfte
der Schnittpunkte mit den Doppelleitungen 360 und 370 programmierbar
gekoppelt werden. In weiteren Ausführungsformen der vorliegenden
Erfindung sind die Bereiche 330 voll belegte Multiplexer-Strukturen,
wo die LAB-Eingangs-Ausgangs-Leitungen 380 an
allen Schnittpunkten mit den Doppelleitungen 360 und 370 programmierbar
gekoppelt werden können.
In einer weiteren Ausführungsform
der vorliegenden Erfindung können
die Bereiche 330 teilweise belegte Multiplexer-Strukturen
sein, wo die LAB-Eingangs-Ausgangs-Bereiche 380 an
einem ausgewählten
Anteil der Schnittpunkte mit den Doppelleitungen 360 und 370 programmierbar
gekoppelt werden können.
-
5 zeigt
ein vereinfachtes Blockdiagramm eines LAB 200 der 2 und 3.
Der LAB 200 umfasst eine veränderliche Anzahl von Logikelementen
(LEs) 500, manchmal als "Logikzellen" bezeichnet, und eine lokale (oder interne)
Verbindungsstruktur 510. Der LAB 200 besitzt acht
LEs 500, jedoch kann der LAB 200 eine beliebige
Anzahl von LEs, mehr oder weniger als acht, aufweisen. In einer weiteren
Ausführungsform
der vorliegenden Erfindung besitzt der LAB 200 zwei "Bänke" von acht LEs für insgesamt 16 LEs, wobei jede
Bank separate Eingänge,
Ausgänge,
Steuersignale und Übertragsketten
aufweist.
-
Eine
genauere Beschreibung der LE 500 der vorliegenden Erfindung
folgt in Verbindung mit 6. Hier wird ein allgemeiner Überblick
dargestellt, der ausreicht, um für
ein Grundverständnis
des LAB 200 zu sorgen. Die LE 500 ist der kleinste
logische Baustein einer PLD. Signale von außerhalb des LAB, wie z. B.
von den GHs 210 und dem GVs 220, sind über eine
lokale Verbindungsstruktur 510 mit der LE 500 programmierbar
verbunden, obwohl die LE 500 in Form vieler anderer Architekturen
als denjenigen, die in den 2 und 3 gezeigt
sind, implementiert sein kann. In einer Ausführungsform enthält die LE 500 der
vorliegenden Erfindung einen Funktionsgenerator, der so konfigurierbar
ist, dass er eine logische Funktion einer Anzahl von Variablen bereitstellt, z.
B. eine Boolesche Operation mit vier Variablen. Ebenso wie kombinatorische
Funktionen bietet die LE 500 Unterstützung für sequentielle und registergestützte Funktionen
unter Verwendung von z. B. D-Flip-Flops.
-
Die
LE 500 stellt kombinatorische und registergestützte Ausgänge bereit,
die mit den GHs 210 und GVs 220 außerhalb
des LAB 200 verbindbar sind. Ferner können die Ausgänge von
der LE 500 intern in eine lokale Verbindungsstruktur 500 zurückgeführt werden; über die
lokale Verbindungsstruktur 510 kann ein Ausgang von einer
LE 500 mit den Eingängen
anderer LEs 500 programmierbar verbunden werden, ohne die
globalen Verbindungsstrukturen GHs 210 und GVs 220 zu
verwenden. Die lokale Verbindungsstruktur 510 erlaubt eine
Kurzstreckenverbindung von LEs, ohne die begrenzten globalen Betriebsmittel
GHs 210 und GVs 220 zu verwenden. Durch die lokale
Verbindungsstruktur 510 und die lokale Rückführung sind
LEs 500 programmierbar verbindbar, um größere komplexere
Logikfunktionen auszubilden, als unter Verwendung einer einzelnen LE 500 verwirklicht
werden kann. Aufgrund ihrer reduzierten Größe und kürzeren Länge weist die lokale Verbindungsstruktur 510 ferner
im Vergleich zu der globalen Verbindungsstruktur reduzierte Parasitäreffekte
auf. Folglich erlaubt die lokale Verbindungsstruktur 510 im
Wesentlichen den Signalen, sich schneller fortzupflanzen als durch
die globale Verbindungsstruktur.
-
6 zeigt
ein Blockdiagramm einer spezifischen Ausführungsform des LAB 200 der
vorliegenden Erfindung. Der LAB 200 der 6 ist
für die
Implementierung logischer Funktionen konfigurierbar. Der LAB 200 der 6 weist
keine wohldefinierte LE-Struktur auf wie der LAB 200 der 5.
Im Gegenteil, der LAB 200 der 6 ist eine
grober gekörnte
Instanz ohne klar definierte wiederholte Strukturen, wie z. B. LEs
(was im Folgenden als eine fein gekörnte Instanz bezeichnet wird).
Hier weist der LAB 200 acht "primäre" programmierbare
Funktionsgeneratoren auf. Diese primären programmierbaren Funktionsgeneratoren
enthalten "primäre" Vier-Eingang-Nachschlagtabellen
(LUTs) 601, 605, 610, 615, 620, 625, 630 und 635 in
einer ersten Ebene.
-
Die
LUTs sind programmierbare Elemente, die zur Bereitstellung einer
logischen Konfiguration konfigurierbar sind. Genauer ist eine Vier-Eingang-LUT konfigurierbar,
um die 16 möglichen
logischen Ausgänge
für eine
beliebige Boolesche Operation von vier Variablen zu erzeugen. Anstelle
einer Nachschlagtabelle können
die LUTs unter Verwendung anderer programmierbarer Systeme zur Durchführung und/oder
für die
Funktionalität
gestaltet sein, wie z. B. Logikgattern, Flip-Flops, Multiplexern
und programmierbarer UND-ODER-Anordnungen.
-
In
einer bevorzugten Ausführungsform
sind die LUTs unter Verwendung eines Schreib/Lese-Speichers (RAM)
implementiert. Genauer sind die LUTs unter Verwendung eines 16-Bit-RAM
in einer spezifischen Ausführungsform
implementiert, wobei jedes Bit einen Ausgangszustand entsprechend
einer von z. B. 16 möglichen
Eingangskombinationen speichert. In weiteren Ausführungsformen
der vorliegenden Erfindung können
die LUTs unter Verwendung anderer Typen von Speichern außer einem RAM
implementiert sein, wie z. B. einen FIFO-Speicher (FIFO = First
In First Out) oder einem inhaltsadressierbaren Speicher (CAM), oder
einer Kombination hieraus.
-
Ein
RAM kann unter Verwendung vieler verschiedener Herstellungstechniken
konstruiert werden, einschließlich
der Techniken Durchschmelzen, Antidurchschmelzen, ferromagnetischer
Kern, löschbarer
programmierbarer Nur-Lese-Speicher (EPROM)
und elektrisch löschbarer
programmierbarer Nur-Lese-Speicher
(EEPROM). Ein RAM kann ferner mittels der Technologie eines dynamischen Schreib/Lese-Speichers
(DRAM) oder eines statischen Schreib/Lese-Speicher (SRAM) konstruiert sein.
In einer bevorzugten Ausführungsform
der vorliegenden Erfindung verwenden die LUTs der 6 SRAM-Speicher.
-
Die
LUTs 601, 605, 610, 615, 620, 625, 630 und 635 besitzen
vier Eingänge,
die für
die vier Variablen verwendet werden, um einen bestimmten Ausgang
für diese
LUT auszuwählen.
Die LUT 601 besitzt vier Eingänge 638; die LUT 605 besitzt
vier Eingänge 640;
die LUT 61β besitzt
vier Eingänge 642; die
LUT 615 besitzt vier Eingänge 644; die LUT 620 besitzt
vier Eingänge 646;
die LUT 625 besitzt vier Eingänge 648; die LUT 630 besitzt
vier Eingänge 650;
und die LUT 635 besitzt vier Eingänge 652. Diese Eingänge bilden
einen Teil der lokalen Verbindungsstruktur 510 (oben beschrieben)
und ferner einen Teil der LAB-Eingangs-Ausgangs-Leitungen 380 der 3.
Signale von innerhalb und außerhalb
des LAB 200 können
mit diesen Eingängen
verbunden werden. Zum Beispiel können
Signale von den Doppelleitungen 360 und 370 mit
diesen Eingängen
des LAB 200 programmierbar verbunden werden.
-
Zusätzlich zu
den primären
LUT-Eingängen enthalten
die Eingänge
des LAB 200 in der lokalen Verbindungsstruktur 510 acht
dedizierte Eingänge 654, 656, 658, 660, 662, 664, 666 und 668.
Eine primäre
Vier-Eingang-LUT ist einem bestimmten dedizierten Eingang zugeordnet.
Genauer sind die dedizierten Eingänge 654, 656, 658, 660, 662, 664, 666 und 668 den
primären
LABs 601, 605, 610, 615, 620, 625, 630 bzw. 635 zugewiesen.
Die dedizierten Eingänge 654, 656, 658, 660, 662, 664, 666 und 668 weisen
mehrfache Anwendungen auf, die weiter unten beschrieben werden.
-
Diese
dedizierten Eingänge
und die Eingänge
der LUTs des LAB 200 können
programmierbar mit einem Signal gekoppelt werden, das auf der lokalen
Verbindungsstruktur 510 vorgesehen ist. In einer Ausführungsform
ist die lokale Verbindungsstruktur 510 eine halb belegte
Multiplexer-Struktur. In einer halb belegten Multiplexer-Struktur
kann nur die Hälfte der
vorgesehenen Signale mit einem bestimmten LUT-Eingang gekoppelt
werden. In anderen Ausführungsformen
kann die lokale Verbindungsstruktur 510 eine voll belegte
oder teilweise belegte Multiplexer-Struktur sein. In einer voll
belegten Multiplexer-Struktur kann jedes Signal mit jedem LUT-Eingang
gekoppelt werden. In einer teilweise belegten Multiplexer-Struktur
kann nur ein ausgewählter
Anteil der Signale mit einem bestimmten LUT-Eingang gekoppelt werden.
-
Konzeptionell
kann der LAB 200 der 6 in zwei
Gruppierungen von LUTs unterteilt werden, wobei beide Gruppierungen
im Wesentlichen ähnliche Konfigurationen
und Verbindungen zwischen den Elementen aufweisen. Genauer bilden
die LUTs 601, 605, 610 und 615 eine
erste LUT-Gruppierung;
die LUTs 620, 625, 630 und 635 bilden
eine zweite LUT-Gruppierung.
Diese Beschreibung diskutiert nur die Verbindungen für die LUTs 601, 605, 610 und 615 genauer,
da die LUTs 620, 625, 630 und 635 in ähnlicher
Weise verbunden sind.
-
Zusätzlich zu
den primären
LUTs 601, 605, 610, 615, 620, 625, 630 und 635 gibt
es sechs sekundäre
Funktionsgeneratoren. Diese sekundären Funktionsgeneratoren enthalten
die LUTs 670, 672, 674, 676, 678 und 680 in
einer zweiten Ebene. Im Allgemeinen werden die Ausgangssignale von
den primären
LUTs direkt und indirekt in die Eingänge der sekundären LUTs
gespeist, so dass größere und
komplexere Logikfunktionen aus der Kombination primärer und
sekundärer
LUTs erzeugt werden können. Analog
zu den zwei Gruppierungen der primären LUTs gibt es zwei Gruppierungen
von sekundären LUTs.
Eine erste Gruppierung der sekundären LUTs ist der ersten Gruppierung
der primären
LUTs zugeordnet. In ähnlicher
Weise ist eine zweite Gruppierung der sekundären LUTs der zweiten Gruppierung der
primären
LUTs zugewiesen. Die erste Gruppierung enthält sekundäre LUTs 670, 672 und 674.
Die zweite Gruppierung enthält
die LUTs 676, 678 und 680. Diese Beschreibung
diskutiert nur die Verbindungen für die LUTs 670, 672 und 674 genauer,
da die LUTs 676, 678 und 680 in ähnlicher
Weise verbunden sind.
-
Genauer
ist bei der ersten Gruppierung von LUTs in Bezug auf die sekundäre Zwei-Eingang-LUT 670 ein
Ausgang von der primären
LUT 601 direkt mit einem der zwei Eingänge der sekundären Zwei-Eingang-LUT 670 gekoppelt.
Ein Ausgang von der primären
LUT 605 ist direkt mit einem weiteren Eingang der sekundären Zwei-Eingang-LUT 670 gekoppelt. Bezüglich der
sekundären
Zwei-Eingang-LUT 674 ist ein Ausgang der primären LUT 610 direkt
mit einem der zwei Eingänge
der sekundären
Zwei-Eingang-LUT 674 gekoppelt. Ein Ausgang von der primären LUT 615 ist
direkt mit einem weiteren Eingang der sekundären Zwei-Eingang-LUT 674 gekoppelt.
-
Die
sekundäre
Gruppierung von LUTs ist in ähnlicher
Weise verbunden. Bezüglich
der sekundären
Zwei-Eingang-LUT 676 ist ein Ausgang von der primären LUT 620 direkt
mit einem der zwei Eingänge
der sekundären
Zwei-Eingang-LUT 676 gekoppelt.
Ein Ausgang von der primären
LUT 625 ist direkt mit einem weiteren Eingang der sekundären Zwei-Eingang-LUT 676 gekoppelt.
Bezüglich
der sekundären
Zwei-Eingang-LUT 680 ist ein Ausgang von der primären LUT 630 direkt
mit einem der zwei Eingänge
der sekundären
Zwei-Eingang-LUT 680 gekoppelt. Ein Ausgang von der primären LUT 635 ist direkt
mit einem weiteren Eingang der sekundären Zwei-Eingang-LUT 680 gekoppelt.
-
Die
sekundären
Zwei-Eingang-LUTs 670, 672, 678 und 680 werden
verwendet, um auf der Grundlage der Ausgänge von der spezifizierten
primären
LUT logische Funktionen zu erzeugen. Diese sekundären LUTs
werden verwendet, um größere und
komplexere logische Funktionen zu erzeugen, als mit einer einzelnen
primären
LUT verfügbar
sind. Genauer erleichtern die sekundären LUTs die Kombination mehrerer
primärer
LUTs. Zum Beispiel kann die sekundäre Zwei-Eingang-LUT 670 verwendet werden,
um primäre
LUTs 601 und 605 zu kombinieren, um eine größere Fünf-Eingang-LUT
für die Handhabung
von Funktionen mit bis zu fünf
Variablen zu erzeugen. Da vier sekundäre Zwei-Eingang-LUTs 670, 672, 678 und 680 in
der in 6 gezeigten Ausführungsform vorhanden sind,
können
vier Fünf-Eingang- Logikfunktionen implementiert
werden.
-
Der
LAB 200 der 6 enthält ferner mehrere programmierbare
Multiplexer 684. Die Multiplexer 684 sind programmierbar
konfiguriert, um einen Multiplexer-Eingang mit einem Multiplexer-Ausgang
zu koppeln. Die programmierbaren Multiplexer 684 weisen
eine beliebige Anzahl von Eingängen
auf. In 6 sind die Multiplexer 684 Zwei-Eingang-Multiplexer.
Die Multiplexer 684 werden durch benutzerprogrammierbare
Speicherzellen (nicht gezeigt), wie z. B. SRAM-Bits, gesteuert oder
konfiguriert. In Abhängigkeit
vom Zustand solcher benutzerprogrammierter Bits wird ein geeigneter
Eingang des Multiplexers 684 mit dem Ausgang des Multiplexers 684 programmierbar
gekoppelt.
-
Für die erste
Gruppierung von LUTs koppelt ein Multiplexer 684 programmierbar
einen dedizierten Eingang 654 und den Ausgang der primären LUT 601 mit
einem ersten Eingang der sekundären Vier-Eingang-LUT 672.
Ein Multiplexer 684 koppelt programmierbar einen Ausgang
der primären
LUT 605 und den dedizierten Eingang 656 mit einem zweiten
Eingang der sekundären
Vier-Eingang-LUT 672. Ein Multiplexer 684 koppelt
programmierbar einen Ausgang der primären LUT 610 und den
dedizierten Eingang 658 mit einem dritten Eingang der sekundären Vier-Eingang-LUT 672.
Ein Multiplexer 684 koppelt programmierbar einen Ausgang
der primären
LUT 615 und den dedizierten Eingang 660 mit einem
vierten Eingang der sekundären
Vier-Eingang-LUT 672.
-
Die
sekundäre
Gruppierung der LUTs ist in ähnlicher
Weise mit der sekundären
Vier-Eingang-LUT 678 verbunden. Genauer koppelt ein Multiplexer 684 programmierbar
den dedizierten Eingang 662 und den Ausgang der primären LUT 620 mit
einem ersten Eingang einer sekundären Vier-Eingang-LUT 678.
Ein Multiplexer 684 koppelt programmierbar einen Ausgang
der primären
LUT 625 und den dedizierten Eingang 664 mit einem
zweiten Eingang der sekundären
Vier-Eingang-LUT 678. Ein Multiplexer 684 koppelt
programmierbar einen Ausgang der primären LUT 630 und den
dedizierten Eingang 666 mit einem dritten Eingang der sekundären Vier-Eingang-LUT 678.
Ein Multiplexer 684 koppelt programmierbar einen Ausgang
der primären
LUT 635 und den dedizierten Eingang 668 mit einem
vierten Eingang der sekun dären
Vier-Eingang-LUT 678.
-
Die
sekundären
Vier-Eingang-LUT 672 und 678 werden verwendet,
um auf der Grundlage der Ausgänge
von einer Kombination primärer
LUTs und dedizierter Eingänge
logische Funktionen zu erzeugen. Diese sekundären LUTs 672 und 678 werden verwendet,
um größere und
komplexere Logikfunktionen zu erzeugen, als mit einer einzelnen
primären LUT
verfügbar
ist. Die sekundären
LUTs 672 und 678 erleichtern die Kombination mehrerer
primärer
LUTs. Zum Beispiel können
die sekundären
Vier-Eingang-LUTs 672 verwendet werden, um die primären LUTs 601, 605, 610 und 615 zu
kombinieren, um eine größere Sechs-Eingang
LUT für
die Handhabung von Funktionen mit bis zu sechs Variablen zu erzeugen.
Da zwei sekundäre
Vier-Eingang-LUTs 672 und 678 vorhanden
sind, können
in der in 6 gezeigten Ausführungsform
zwei Sechs-Eingang-Logikfunktionen implementiert werden.
-
Im
LAB 200 der 6 können daher zwei Sechs-Eingang-Logikfunktionen
und vier Fünf-Eingang-Logikfunktionen
(siehe oben) und Kombinationen hiervon implementiert werden. Zum
Beispiel besitzt der LAB 200 der 6 acht Vier-Eingang-LUTs 601, 605, 610, 615, 620, 625, 630 und 635;
weitere zwei Vier-Eingang-LUTs können
unter Verwendung der dedizierten Eingänge 654, 656, 658, 660, 662, 664, 666 und 668 und
der sekundären
Vier-Eingang-LUTs 672 und 678 implementiert
werden. Genauer sind die Multiplexer 684 so konfiguriert,
dass sie die dedizierten Eingänge 654, 656, 658 und 660 mit
der sekundären
Vier-Eingang LUT 672 programmierbar koppeln; wobei die
dedizierten Eingänge 662, 664, 666 und 668 mit
der sekundären
Vier-Eingang-LUT 678 programmierbar gekoppelt werden. In dieser
Konfiguration sind zehn Vier-Eingang-LUTs zur Verwendung verfügbar.
-
Die
primären
Vier-Eingang-LUTs 601, 605, 610, 615, 620, 625, 630 und 635 weisen
kombinatorische Pfadausgänge 687 und
einen registergestützten
Pfadausgang 689 auf. Der LAB 200 der vorliegenden
Erfindung besitzt acht kombinatorische Ausgänge 687 und acht registergestützte Ausgänge 689. Die
kombinatorischen Pfadausgänge 687 werden verwendet,
um Ergebnisse kombinatorischer Logikfunktionen auszugeben, die von
den aktuellen Eingangszuständen
in einer bestimmten vorgegebenen Weise abhängen; in
-
6 wird
dies durch die Konfigurationsinformation innerhalb der LUTs gewährleistet.
Die registergestützten
Pfadausgänge 689 sind
mit Speicherblöcken 691 verbunden;
diese Ausgänge 689 werden
verwendet, um registergestützte
oder sequentielle Logikfunktionen auszugeben, die sowohl von den
Eingangszuständen
als auch von der vorangehenden Historie abhängen. Registergestützte (oder
sequentielle) Funktionen werden unter Verwendung einer bestimmten
Form von Speicherschaltung implementiert, die Schaltungen wie z.
B. Register, Flip-Flops und dergleichen enthält.
-
Die
kombinatorischen Ausgänge 687 werden unter
Verwendung programmierbarer Multiplexer 684 programmierbar
ausgewählt.
Für die
erste Gruppierung von LUTs koppelt ein Multiplexer 684 programmierbar
den Ausgang der primären
LUT 601 und einen Ausgang der sekundären LUT 670 mit einem kombinatorischen
Ausgang 687. Ein Multiplexer 684 koppelt programmierbar
den Ausgang der primären LUT 605 und
einen Ausgang der sekundären
LUT 672 mit einem kombinatorischen Ausgang 687.
Ein Multiplexer 684 koppelt programmierbar den Ausgang
der primären
LUT 610 und den Ausgang der sekundären LUT 672 mit einem
kombinatorischen Ausgang 687. Ein Multiplexer 684 koppelt
programmierbar den Ausgang der primären LUT 615 und einen Ausgang
der sekundären
LUT 674 mit einem kombinatorischen Ausgang 687.
-
In ähnlicher
Weise koppelt für
die zweite Gruppierung von LUTs ein Multiplexer 684 den
Ausgang der primären
LUT 620 und einen Ausgang der sekundären LUT 676 mit einem
kombinatorischen Ausgang 687. Ein Multiplexer 684 koppelt
programmierbar den Ausgang der primären LUT 625 und einen
Ausgang der sekundären
LUT 678 mit einem kombinatorischen Ausgang 687.
Ein Multiplexer 684 koppelt programmierbar den Ausgang
der primären LUT 630 und
den Ausgang der sekundären
LUT 678 mit einem kombinatorischen Ausgang 687.
Ein Multiplexer 684 koppelt programmierbar den Ausgang
der primären
LUT 635 und einen Ausgang der sekundären LUT 680 mit einem
kombinatorischen Ausgang 687.
-
Die
kombinatorischen Ausgänge 687 bilden einen
Abschnitt der LAB-Eingang-Ausgang-Leitungen 380 der 3 und
sind mit der globalen Verbindungsstruktur, die lange Leitungen und
Doppelleitungen enthält, programmierbar
verbindbar. Wie vorher beschrieben worden ist, sind ferner in einer
Ausführungsform
der vorliegenden Erfindung die kombinatorischen Ausgänge 687 direkt
mit horizontalen und vertikalen langen Leitungen 360 und 370 programmierbar
verbindbar. Außerdem
können
die kombinatorischen Ausgänge 687 über die
globale Verbindungsstruktur mit dem LAB-Eingangs-Ausgangsleitungen 380,
die in andere LABs 200 oder den gleichen LAB 200 eingegeben
werden, programmierbar verbunden werden, um komplexere logische
Funktionen aus einer Kombination von LABs 200 zu bilden.
-
In
einer in 6 gezeigten Ausführungsform sind
die kombinatorischen Ausgänge 687 der
vorliegenden Erfindung in die lokale Verbindungsstruktur 510 (zur
Vereinfachung der Zeichnung nicht gezeigt) zurückgeführt. Wie vorher beschrieben
worden ist, ist die lokale Verbindungsstruktur 510 ein
vollständig, teilweise
oder halb belegter Multiplexer-Bereich, der die Kopplung dieser
kombinatorischen Ausgänge 687 mit
den Eingängen
erlaubt. Folglich können über die
lokale Verbindungsstruktur 510 die kombinatorischen Ausgänge 687 mit
den Eingängen
und dedizierten Eingängen
der primären
LUTs programmierbar verbunden werden, ohne Verbindungsmittel außerhalb
des LAB, wie z. B. globale Verbindungsleiter, zu verwenden.
-
Im
LAB 200 der 6 gibt es acht Speicherblöcke 691.
Eine primäre
Vier-Eingang-LUT
kann mit einem Speicherblock 691 programmierbar gekoppelt werden,
um einen registergestützten
Ausgang 689 bereitzustellen. Genauer kann für die erste
Gruppierung von LUTs ein Dateneingang des Speicherblocks 691 mit
Signalen vom dedizierten Eingang 654, dem Ausgang der primären LUT 601,
und dem Ausgang der sekundären
LUT 670 programmierbar verbunden werden. Genauer koppelt
ein Multiplexer 684 programmierbar diesen Dateneingang
des Speicherblocks 691 mit den Signalen von: dem dedizierten Eingang 654 und
dem Ausgang eines weiteren Multiplexers 684 (vorher beschrieben
als mit dem kombinatorischen Ausgang 687 gekoppelt), der
programmierbar zwischen dem Ausgang der primären LUT 601 und dem
Ausgang der sekundären
LUT 670 auswählt.
Diese Konfigurationspfade können
unter Verwendung einer anderen Schaltung, wie z. B. eines Drei-Eingang-Multiplexers,
erhalten werden. In der Ausführungsform
der 4 wurden jedoch zwei Zwei-Eingang-Multiplexer 684 verwendet,
da ein Multiplexer 684 für den kombinatorischen Ausgang 687 verwendet
wird. Dies ist ähnlich
zu dem Fall für die
anderen Speicherblöcke 691.
-
Ferner
kann ein Dateneingang des Speicherblocks 691 mit dem dedizierten
Eingang 656, dem Ausgang der primären LUT 605 und dem
Ausgang der sekundären
LUT 672 programmierbar gekoppelt werden. Genauer koppelt
ein Multiplexer 684 programmierbar diesen Dateneingang
des Speicherblocks 691 mit den Signalen von: dem dedizierten Eingang 656 und
dem Ausgang eines weiteren Multiplexers 684 (vorher als
mit dem kombinatorischen Ausgang 687 gekoppelt beschrieben),
der programmierbar zwischen dem Ausgang der primären LUT 605 und dem
Ausgang der sekundären
LUT 672 auswählt.
Ein Dateneingang des Speicherblocks 691 kann programmierbar
mit dem dedizierten Eingang 658, dem Ausgang der primären LUT 610 und
dem Ausgang der sekundären
LUT 672 gekoppelt werden. Genauer koppelt ein Multiplexer 684 programmierbar
diesen Dateneingang des Speicherblocks 691 mit den Signalen
von: dem dedizierten Eingang 658 und dem Ausgang eines
weiteren Multiplexers 684 (vorher als mit dem kombinatorischen
Ausgang 687 gekoppelt beschrieben), der programmierbar zwischen
dem Ausgang der primären
LUT 610 und dem Ausgang der sekundären LUT 672 auswählt. Ein Dateneingang
des Speicherblocks 691 kann programmierbar mit dem dedizierten
Eingang 660, dem Ausgang der primären LUT 615 und dem
Ausgang der sekundären
LUT 672 gekoppelt werden. Genauer koppelt ein Multiplexer 684 programmierbar
diesen Dateneingang des Speicherblocks 691 mit den Signalen
von: dem dedizierten Eingang 660 und dem Ausgang eines
weiteren Multiplexers 684 (vorher als mit dem kombinatorischen
Ausgang 687 gekoppelt beschrieben), der programmierbar
zwischen dem Ausgang der primären
LUT 615 und dem Ausgang der sekundären LUT 674 auswählt.
-
In ähnlicher
Weise kann für
die zweite Gruppierung von LUTs ein Dateneingang des Speicherblocks 691 programmierbar
mit dem dedizierten Eingang 662, dem Ausgang der primären LUT 620 und dem
Ausgang der sekundären
LUT 676 gekoppelt werden. Genauer koppelt ein Multiplexer 684 programmierbar
diesen Dateneingang des Speicherblocks 691 mit den Signalen
von: dem dedizierten Eingang 662 und dem Ausgang eines
weiteren Multiplexers 684 (vorher als mit dem kombinatorischen Ausgang 687 gekoppelt
beschrie ben), der programmierbar zwischen dem Ausgang der primären LUT 620 und
dem Ausgang der sekundären
LUT 676 auswählt.
Ein Dateneingang des Speicherblocks 691 kann programmierbar
mit dem dedizierten Eingang 664, dem Ausgang der primären LUT 625 und
dem Ausgang der sekundären
LUT 678 gekoppelt werden. Genauer koppelt ein Multiplexer 684 programmierbar
diesen Dateneingang des Speicherblocks 691 mit den Signalen
von: dem dedizierten Eingang 664 und dem Ausgang eines
weiteren Multiplexers 684 (vorher als mit dem kombinatorischen
Ausgang 687 gekoppelt beschrieben), der programmierbar zwischen
dem Ausgang der primären
LUT 625 und dem Ausgang der sekundären LUT 678 auswählt. Ein Dateneingang
des Speicherblocks 691 kann programmierbar mit dem dedizierten
Eingang 666, dem Ausgang der primären LUT 630 und dem
Ausgang der sekundären
LUT 678 gekoppelt werden. Genauer koppelt ein Multiplexer 684 programmierbar
diesen Dateneingang des Speicherblocks 691 mit den Signalen
von: dem dedizierten Eingang 666 und dem Ausgang eines
weiteren Multiplexers 684 (vorher als mit dem kombinatorischen
Ausgang 687 gekoppelt beschrieben), der programmierbar
zwischen dem Ausgang der primären
LUT 630 und dem Ausgang der sekundären LUT 678 auswählt. Ein
Dateneingang des Speicherblocks 691 kann programmierbar mit
dem dedizierten Eingang 666, dem Ausgang der primären LUT 635 und
dem Ausgang der sekundären LUT 680 gekoppelt
werden. Genauer koppelt ein Multiplexer 684 programmierbar
diesen Dateneingang des Speicherblocks 691 mit den Signalen
von: dem dedizierten Eingang 668 und dem Ausgang eines
weiteren Multiplexers 684 (vorher als mit dem kombinatorischen
Ausgang 687 gekoppelt beschrieben), der programmierbar
zwischen dem Ausgang der primären
LUT 635 und dem Ausgang der sekundären LUT 680 auswählt.
-
Die
Speicherblöcke 691 werden
verwendet, um einen Logikzustand zu speichern. Viele verschiedene
Logikbauelemente können
verwendet werden, um Speicherblöcke 691 zu
bilden, einschließlich
unter anderem Speicherzellen, D-, T-, S-R-, J-K- und andere Typen
von Haltegliedern und Registern. Zum Beispiel sind in der in 6 gezeigten
Ausführungsform
die Speicherblöcke 691 D-Typ-Register.
In anderen Ausführungsformen
der vorliegenden Erfindung kann der LAB 200 T-, S-R-, J-K-
und andere Typen von Haltegliedern und Registern und Kombinationen
hieraus enthalten. Ferner ist in einer weiteren Ausführungsform
der Speicherblock 691 programmierbar konfigu rierbar, um
auch als transparentes Halteglied zu arbeiten.
-
Der
LAB 200 besitzt die Eingangsleitungen CLK0 693,
CLK1 694, CE 696, S 697, R 698 und
DIN 699. Diese Leitungen regeln die Funktionalität, wobei sie
manchmal als die "sekundären Funktionen" des Speicherblocks 691 bezeichnet
werden. Diese Leitungen bilden einen Abschnitt der LAB-Eingangs-Ausgangs-Leitungen 380 (oben
beschrieben), die über
die globalen Verbindungsmittel, welche Schaltkästen 310, Doppelleitungen 360 und 370 und lange
Leitungen 340 und 350 enthalten, programmierbar
verbunden werden können.
-
In
einer typischen Operation speichert der Speicherblock 691 Daten
von seinem Dateneingang und gibt an seinem Datenausgang 689 in
Reaktion auf eine Taktsignaleingabe Daten aus. Ein Multiplexer 684 koppelt
programmierbar ein CLK0-Signal 693 und ein CLK1-Signal 694 mit
dem Taktsignaleingang des Speicherblocks 691. Die in 6 gezeigte Ausführungsform
besitzt acht dieser Multiplexer 684, die mit den Taktsignaleingängen der
Speicherblöcke 691 verbunden
sind, wobei ein Multiplexer 684 für einen Speicherblock 691 vorgesehen
ist. In Abhängigkeit
davon, wie viele Multiplexer 684 konfiguriert sind, kann
der Taktsignaleingang des Speicherblocks 691 durch die
Signale CLK0 693 oder CLK1 694 gesteuert werden.
Da ferner die Multiplexer 684 unabhängig für die acht Speicherblöcke 691 programmierbar
konfiguriert werden können,
kann ein Teil der Register im LAB 200 durch CLK0 693 kontrolliert
werden, während
der andere Teil durch CLK1 694 gesteuert wird. Die acht
Speicherblöcke 691 können auch
durch das gleiche Signal CLK0 693 oder CLK1 694 gesteuert werden.
-
Der
Speicherblock 691 kann in verschiedenen Modi arbeiten,
einschließlich
unter anderem als vorderflankengetriggertes Register, hinterflankengetriggertes
Register, Aktiv-Hoch-Halteglied, Aktiv-Niedrig-Halteglied, oder
als eine direkte kombinatorische Umgehung. Genauer arbeitet der
Speicherblock 691 im vorderflankengetriggerten Registermodus
als ein Register, das in Reaktion auf eine vordere Flanke eines
Takteingangssignals neue Daten speichert und gespeicherte Daten
ausgibt. Im hinterflankengetriggerten Registermodus arbeitet der
Speicherblock 691 als Register, das auf eine fallende Flanke
eines Takteingangssignals antwortet. Im Aktiv-Hoch-Haltegliedmodus arbeitet
der Speicherblock 691 als Halteglied, das Daten speichert,
wenn sein Takteingang auf Hochpegel liegt. Im Aktiv-Niedrig-Haltegliedmodus
arbeitet der Speicherblock 691 als Zwischenspeicher, der
Daten speichert, wenn sein Takteingang auf Niedrigpegel liegt. Im
direkten kombinatorischen Umgehungsmodus leitet der Speicherblock 691 Daten
ohne irgendeine Taktung hindurch; in diesem Modus wird der Speicherblock 691 transparent. Die
Speicherblöcke 691,
oder ein Teil derselben, kann in diesen Modi oder in einer Kombination
dieser Modi arbeiten. Zum Beispiel arbeiten in der in 6 gezeigten
Ausführungsform
die Speicherblöcke 691 im
Wesentlichen im gleichen Modus als vorderflankengetriggerte D-Typ-Register.
In einem weiteren Beispiel kann ein Teil der Speicherblöcke 691 in
vorderflankengetriggerten Registermodus arbeiten, während ein
weiterer Teil im Aktiv-Hoch-Haltegliedmodus
arbeitet.
-
Ferner
weisen die Speicherblöcke 691 die Signaleingänge Taktfreigabe
(CE), Setzen (S) und Rücksetzen
(R) auf. In der in 6 gezeigten Ausführungsform
koppelt ein Signal CE 696 direkt mit den CE-Signaleingang
der Speicherblöcke 691.
CE 696 gibt die Taktung des Speicherblocks 691 in
Reaktion auf ein Signal am Taktsignaleingang frei. Genauer, wenn
CE 696 gesetzt wird, kann im Betrieb der Taktsignaleingang
des Speicherblocks 691 verwendet werden, um den Speicherblock 691 zu
takten; wenn CE 696 nicht gesetzt ist, kann der Speicherblock 691 nicht
getaktet werden. Wie vorher diskutiert worden ist, kann CE 696 programmierbar mit
den globalen Verbindungsmitteln außerhalb des LAB 200 gekoppelt
werden. Ferner kann in anderen Ausführungsformen der vorliegenden
Erfindung CE 696 z. B. von mehreren Quellen stammen und
programmierbar über
einen Multiplexer 684 gekoppelt werden.
-
Ein
Signal S 697 koppelt direkt mit dem S-Signaleingang des
Speicherblocks 691. S 697 "setzt" (oder setzt im Voraus) den Speicherblock 691,
was den Speicherblock 691 mit einer "1" oder
einem logischen Hochpegel lädt.
Genauer, wenn S 697 gesetzt wird, wird im Betrieb der Speicherblock 691 asynchron
gesetzt (d. h. der Speicherblock 691 wird unabhängig vom
aktuellen Zustand des Speicherblocks 691 gesetzt); wenn
S 697 nicht gesetzt ist, wird die normale Operation des
Speicherblocks 691 freigegeben. In anderen Ausführungsformen
der vorliegenden Erfindung kann S 697 den Speicherblock 691 synchron
setzen, was bedeutet, dass der Speicherblock 691 beim nächsten Taktimpuls
gesetzt wird. Wie vorher beschrieben worden ist, kann S 697 mit den
globalen Verbindungsmitteln außerhalb
des LAB 200 programmierbar gekoppelt werden. Ferner kann in
anderen Ausführungsformen
der vorliegenden Erfindung S 697 z. B. von mehreren Quellen
stammen und über
einen Multiplexer 684 programmierbar gekoppelt werden.
-
Ein
Signal R 698 koppelt direkt mit dem R-Signaleingang des
Speicherblocks 691. R 698 "setzt" (oder setzt im Voraus) den Speicherblock 691 zurück, was
den Speicherblock 691 mit einer "0" oder
einem logischen Niedrigpegel lädt.
Genauer, wenn R 698 gesetzt wird, wird im Betrieb der Speicherblock 691 asynchron
zurückgesetzt
(d. h. der Speicherblock 691 wird unabhängig vom aktuellen Zustand
des Speicherblocks 691 zurückgesetzt); wenn R 698 nicht
gesetzt ist, wird die normale Operation des Speicherblocks 691 freigegeben.
In anderen Ausführungsformen
der vorliegenden Erfindung kann R 698 den Speicherblock 691 synchron
setzen, was bedeutet, dass der Speicherblock 691 beim nächsten Taktimpuls
gesetzt wird. Wie vorher beschrieben worden ist, kann R 698 mit
den globalen Verbindungsmitteln außerhalb des LAB 200 programmierbar
gekoppelt werden. Ferner kann in anderen Ausführungsformen der vorliegenden
Erfindung R 698 z. B. von mehreren Quellen stammen und über einen
Multiplexer 684 programmierbar gekoppelt werden. In 6 sind
die Signale S 697 und R 698 separate Signale.
In anderen Ausführungsformen
können
jedoch die Signale S 697 und R 698 und entsprechende
Funktionen unter Verwendung einer einzigen kombinierten Steuerleitung
implementiert sein.
-
Ein
Signal DIN 699 ist ebenfalls in 6 gezeigt.
DIN 699 wird jedoch in der Ausführungsform in 6 nicht
verwendet. Daher ist DIN 699 nicht mit dem Speicherblock 691 verbunden
gezeigt. DIN 699 wird in einer weiteren Ausführungsform
der vorliegenden Erfindung verwendet, die im Folgenden beschrieben
wird.
-
Die
registergestützten
Ausgänge 689 bilden einen
Teil der LAB-Eingangs-Ausgangs-Leitungen 380 der 3 und
sind programmierbar mit der globalen Verbindungsstruktur verbindbar,
die lange Leitungen und Doppelleitungen enthält. Wie vorher beschrieben
worden ist, sind außerdem
in einer Ausführungsform
der vorliegenden Erfindung registergestützte Ausgänge 689 direkt mit
den horizontalen und vertikalen langen Leitungen 360 und 370 programmierbar
verbindbar. Ferner können
die registergestützten
Ausgänge 689 über die
globale Verbindungsstruktur mit LAB-Eingangs-Ausgangs-Leitungen 380,
die in andere LABs 200 oder denselben LAB 200 eingegeben
werden, programmierbar verbunden werden, um komplexere logische
Funktionen aus einer Kombination von LABs 200 zu bilden.
-
In
einer Ausführungsform
der vorliegenden Erfindung sind die registergestützten Ausgänge 689 nicht wie
die kombinatorische Ausgänge 687 in
die lokale Verbindungsstruktur 687 als kombinatorische Ausgänge 687 zurückgeführt. Die
registergestützten Ausgänge 689 können jedoch über die
(obenbeschriebene) globale Verbindungsstruktur in die Eingänge des
gleichen LAB 200 zurückgeführt und
programmierbar mit diesen gekoppelt werden. Das Fehlen eines "internen" Rückführungspfades
spart wertvolle integrierte Schaltungsfläche für andere Merkmale ein. In anderen
Ausführungsformen
der vorliegenden Erfindung können
jedoch registergestützte Ausgänge 689 intern
in die lokale Verbindungsstruktur 687 zurückgeführt werden
und können
programmierbar mit den primären
LUTs gekoppelt werden, wie oben beschrieben worden ist.
-
7 ist
ein Blockdiagramm, das ein Übertragskettenschema
für einen
LAB 200 der 6 zeigt. Die in 6 gezeigten
Schaltungsmerkmale befinden sich in der in 7 gezeigten
Ausführungsform.
Um die 7 zu vereinfachen, wurden jedoch von der Zeichnung
Teile der LAB-Schaltung weggelassen, genauer die sekundären LUTs,
einige Multiplexer 684 und einige Verbindungen.
-
Wenn
ein Zähler,
Addierer oder eine andere ähnliche
Funktion implementiert wird, werden primäre LUTs des LAB 200 so
konfiguriert, dass sie ein einzelnes Bit der Logikfunktion implementieren.
Um diese Typen von Logikfunktion zu implementieren, ist typischerweise
ferner eine Übertragskette
erforderlich. Eine Übertragskette
kann implementiert werden, wenn ein Übertragsmodus im LAB 200 ermöglicht wird.
Unter anderen Anwendungen können Übertragsketten
verwendet werden, um arithmetisch-logische Funktionen zu implementieren,
wie z. B. Addierer, Akkumulatoren und Zähler.
-
Ein Übertragseingangs-(CIN)-Signal
wird in den LAB 200 über
DIN 699 eingegeben. CIN ist mit dem vorher beschriebenen
DIN-Eingang 699 gekoppelt; dies ist eine Anwendung für den Eingang
DIN 699. Wie vorher beschrieben worden ist, ist ferner DIN 699 mit
den globalen Verbindungsmitteln programmierbar verbindbar; daher
kann ein CIN-Signal über
lange Leitungen, Doppelleitungen und andere ähnliche Leiter und Betriebsmittel
programmierbar mit DIN 699 gekoppelt werden. Zum Beispiel
kann CIN von einem LAB 200 ausgegeben werden und über Doppelleitungen 360 und 370 programmierbar mit
einem weiteren LAB 200 verbunden werden.
-
In
einer Übertragskette
repräsentiert
die primäre
LUT 635, die mit DIN 699 gekoppelt ist, ein erstes
Bit für
einen Zähler,
Addierer oder eine ähnliche Logikfunktion,
die implementiert ist. Der Zähler
oder die ähnliche
Funktion können
eine beliebige Größe aufweisen.
Innerhalb eines einzelnen LAB 200 kann ein Zähler oder
eine andere ähnliche
Logikfunktion eine Wortgröße von einem
Bit bis zu acht Bits aufweisen. Das letzte Bit in der Übertragskette
gibt ein Übertragsausgangs-(COUT)-Signal 705 aus.
COUT 705 ist mit den globalen Verbindungsmitteln programmierbar
verbindbar. Ein zweites Bit in der Übertragskette würde durch
die primäre
LUT 630 repräsentiert.
Ein drittes Bit in der Übertragskette
würde durch
die primäre
LUT 625 repräsentiert.
In ähnlicher Weise
würden
die vierten, fünften,
sechsten, siebten und achten Bits für die Logikfunktion durch die
LUTs 620, 615, 610, 605 bzw. 601 repräsentiert.
-
Wenn
mehr als acht Bits benötigt
werden, können
eine breitere Logikfunktion und eine Übertragskette implementiert
werden, indem mehrere LABs 200 über die globale Verbindung
programmierbar gekoppelt werden. Zum Beispiel würde CIN über DIN 699 des einen
LAB 200 eingegeben, wobei sich die Übertragskette durch acht LUTs
bis COUT fortpflanzen würde.
Dieses COUT wird über
die globale Verbindung mit einem DIN 699 eines weiteren
LAB 200 programmierbar gekoppelt. Mehrere LABs 200 werden
programmierbar auf diese Weise kombiniert, bis die Logikfunktion
mit der gewünschten
Größe erhalten
wird.
-
Um
ferner einen Zähler
oder eine ähnliche Logikfunktion
zu implementieren, sind an Eingang A 710 und an Eingang
B 720 Dateneingänge
für die
primären
LUTs eines LAB 200. A 710 und B 720 sind zwei
Operanden, die vom LAB 200 weiterverarbeitet werden. Zum
Beispiel ist in einem Addierer A 710 ein Summand, während B 720 der
andere Summand ist. Ein Eingang A für eine bestimmte primäre LUT ist
ein bestimmtes Bit dieses Operanden. Ein Eingang B 720 für eine bestimmte
primäre
LUT ist ein bestimmtes Bit dieses Operanden. Ein weiterer Eingang
U/D 725 in die LUT 405 wird für eine Aufwärts-Abwärts-Zählersteuerung verwendet, wenn
ein Aufwärts-Abwärts-Zählerimplementiert wird. Zum
Beispiel wird der Zähler
bei einem Aufwärts-Abwärts-Zähler dann,
wenn U/D 725 gesetzt ist, beim Takten inkrementiert; wenn
U/D 725 nicht gesetzt ist, wird der Zähler beim Takten dekrementiert.
-
Ein
Ausgang der primären
LUTs (konfiguriert, um eine Zählertyp-Logikfunktion in 7 zu
implementieren) ist ein SUM-Signal. SUM ist das Ergebnis der Logikoperation
der Operanden A 409 und B 413. Übertragslogikblöcke 740 enthalten
die Logik zum Implementieren des Übertragsschemas der vorliegenden
Erfindung. Ein Übertragslogikblock 740 ist mit
einer primären
LUT im LAB 200 gekoppelt. Der LAB 200 besitzt
acht Übertragslogikblöcke 740.
-
Genauer
sind die Übertragslogikblöcke 740 mit
den Eingängen
A 710, B 720 und U/D 725 einer primären LUT
gekoppelt. Ein erster Übertragslogikblock 425,
der mit den Eingängen
der LUT 635 gekoppelt ist, nimmt einen Übertragseingang vom DIN 699 an.
Andere Übertragslogikblöcke 740 nehmen einen Übertragseingang
von einem vorangehenden Übertragslogikblock 425 an
(wie durch die Verbindung 750 gezeigt ist). Ein letzter Übertragslogikblock in
der Kette (mit der primären
LUT 601 in 7 gekoppelt gezeigt) erzeugt
das COUT-Signal 705, das über die globalen Verbindungsmittel
anderen LABs 200 zugeführt
werden kann. Auf der Grundlage seiner Eingänge A 710, B 720 und
U/D 725 bestimmt der Übertragslogikblock 425,
ob er ein Übertragssignal
erzeugt bzw. zum nächsten Übertragslogikblock (über die
Verbindung 750) in der Kette weiterleitet.
-
In
einer Ausführungsform
verwendet die Übertragskette
der vorliegenden Erfindung eine Übertrags-Fortpflanzungs-Erzeugungs-Technik.
Genauer wird das Übertragsbit
entweder weitergereicht oder von einer primären LUT erzeugt und an eine nachfolgende
primäre
LUT geleitet. Unter Verwendung dieser Technik kann eine gesamte Übertragskette
innerhalb eines LAB 200 implementiert werden. Die Übertragskettenimplementierung
der vorliegenden Erfindung bietet eine einfachere und effizientere Implementierung
für bestimmte
Logikfunktionen, wie z. B. einen Aufwärts-Abwärts-Zähler.
-
Wenn
das Übertragskettenmerkmal
verwendet wird, können
die sekundären
LUTs 672 und 678 (in 6 gezeigt)
immer noch mittels der dedizierten Eingänge (d. h. 654, 656, 658, 660, 662, 664, 666 und 668)
angesprochen werden. Die sekundären LUTs 672 und 678 können die
von anderen LUTs nicht verwendeten Register ansteuern. Wenn einige primäre LUTs
nicht im Übertragsmodus
verwendet werden, können
ferner diese primären
LUTs für
die Implementierung von Logikfunktionen verwendet werden, ohne die Übertragskette
zu beeinträchtigen. Zum
Beispiel können
drei primäre
LUTs (z. B. 635, 630 und 625) im Übertragsmodus
verwendet werden, wobei die übrigen
fünf primären LUTs
(d. h. 620, 615, 610, 605 und 601)
verwendet werden können,
um andere logische Funktionen zu implementieren, ohne die Funktionalität der Übertragskette
zu beeinträchtigen.
-
8 ist
ein Blockdiagramm des LAB 200 der 6, der konfiguriert
ist, um einen Schreib/Lese-Speicher (RAM) zu implementieren. Die
in 6 gezeigten Schaltungsmerkmale befinden sich in
der in 8 gezeigten Ausführungsform. Um jedoch die 8 zu
vereinfachen, sind einige LAB-Schaltungsteile
in der Zeichnung weggelassen.
-
Wie
in 8 gezeigt ist, implementiert der LAB 200 einen
RAM-Speicher im RAM-Modus. Im RAM-Modus dienen die primären LUTs
als individuelle RAM-Blöcke
zum Speichern von Daten. Eine primäre Vier-Eingang-LUT kann bis
zu sechzehn Bits an Daten speichern. Da acht primäre LUTs
pro LAB vorhanden sind, kann der LAB 200 128 Bits oder sechzehn
Bytes an Daten speichern. Der RAM kann in einem Format mit beliebiger
Breite und Tiefe organisiert sein. Zum Beispiel kann der RAM eine Vier-Bit-Wortbreite
und 32 Wörter
aufweisen. Ferner können
mehrere LABs 200 programmierbar kombiniert werden, um größere RAMs
zu implementieren.
-
Im
RAM-Modus sind die Eingänge
der primären
LUTs die Adressstifte für den
RAM. Der Eingang CE 696 (oben beschrieben) dient als Eingang
für ein Schreibfreigabe-(WE)-Steuersignal.
WE ermöglicht das
Schreiben oder Lesen der RAM-Zellen. Wenn WE auf Hochpegel liegt,
kann der RAM geschrieben werden; wenn WE auf Niedrigpegel liegt,
kann der RAM gelesen, jedoch nicht geschrieben werden. Wenn größere RAMs
unter Verwendung mehrerer LABs implementiert werden, können, um
eine Verzögerung
zwischen den LABs zu reduzieren, ein dediziertes (globales) Taktnetzwerk
oder lange Leitungen 340 und 350 verwendet werden,
um das WE-Signal innerhalb
der PLD 121 zu leiten. Ferner besitzt der LAB 200 ein
Programmregister 810, um eine Synchronisation des WE-Signals
mit dem dedizierten Taktsignal CLK0 oder CLK1 zu erlauben; das resultierende
synchronisierte Signal WES 820 wird zu einem WE-Decodierungslogikblock 830 weitergeleitet.
-
Eine
primäre
LUT besitzt einen WE-Decodierungslogikblock 830. Der LAB 200 besitzt
acht WE-Decodierungslogikblöcke 830,
wobei einer jeweils mit einer primären LUT gekoppelt ist. Der WE-Decodierungslogikblock 830 ermöglicht das Schreiben
oder Lesen des RAM auf der Grundlage des Zustands vom WES 820.
Ferner wird ein RAM-Bit 835 vom WE-Decodierungslogikblock 830 verwendet,
um die Organisation des RAM zu kontrollieren. Wenn das RAM-Bit 835 programmiert
wird, weist der RAM des LAB 200 eine bestimmte Wortbreite
und Tiefe auf, wie z. B. 128 Bits mal 1. wenn das RAM-Bit 835 nicht
programmiert ist, kann der RAM des LAB 200 mit 16 Bits
mal 8 Bits organisiert sein.
-
Um
Daten in eine primäre
LUT zu speichern oder zu schreiben, wählt ein Dateneingangs-Multiplexer 684 programmierbar
eine Datenquelle entweder von einem dedizierten Eingangsstift oder
den Eingang 699 aus. Zum Beispiel können Daten vom dedizierten
Eingangsstift 654 in die primäre LUT 601 geschrieben
werden; während
Daten vom dedizierten Eingangsstift 660 in die primäre LUT 615 geschrieben
werden können.
Alternativ können
Daten von DIN 699 in die primären LUTs 601 und 615 geschrieben
werden.
-
Um
Daten aus einer primären
LUT wiederzugewinnen oder zu lesen, werden Daten von einer primären LUT über den
jeweiligen LUT-Ausgang ausgegeben. Ein Multiplexer 684 koppelt
programmierbar einen dedizierten Eingang und den Ausgang einer primären LUT
mit einem Eingang einer sekundären Vier-Eingang-LUT.
Genauer koppelt in der ersten Gruppierung von LUTs ein Multiplexer 684 programmierbar
den dedizierten Eingang 654 und den Ausgang einer primären LUT 601 mit
einem ersten Eingang der sekundären
Vier-Eingang-LUT 672. Ein Multiplexer 684 koppelt
programmierbar den dedizierten Eingang 656 und den Ausgang
einer primären LUT 605 mit
einem zweiten Eingang der sekundären Vier-Eingang-LUT 672.
Ein Multiplexer 684 koppelt programmierbar den dedizierten
Eingang 658 und den Ausgang einer primären LUT 610 mit einem
dritten Eingang der sekundären
Vier-Eingang-LUT 672. Ein Multiplexer 684 koppelt
programmierbar den dedizierten Eingang 660 und den Ausgang
einer primären
LUT 615 mit einem vierten Eingang der sekundären Vier-Eingang-LUT 672.
-
In ähnlicher
Weise koppelt bei der zweiten Gruppierung von LUTs ein Multiplexer 684 den
dedizierten Eingang 662 und den Ausgang einer primären LUT 620 mit
einem ersten Eingang der sekundären Vier-Eingang-LUT 678.
Ein Multiplexer 684 koppelt programmierbar den dedizierten
Eingang 664 und den Ausgang einer primären LUT 625 mit einem zweiten
Eingang der sekundären
Vier-Eingang-LUT 678. Ein Multiplexer 684 koppelt
programmierbar den dedizierten Eingang 666 und den Ausgang
einer primären
LUT 630 mit einem dritten Eingang der sekundären Vier-Eingang-LUT 678.
Ein Multiplexer 684 koppelt programmierbar den dedizierten
Eingang 668 und den Ausgang einer primären LUT 635 mit einem
vierten Eingang der sekundären
Vier-Eingang-LUT 672.
-
Diese
Ausgänge
der sekundären
LUTs 672 und 678 können vom LAB 200 unter
Verwendung des kombinatorischen Ausgangs 687 oder des registergestützten Ausgangs 689 (Verbindungen
nicht gezeigt) ausgegeben werden, wie vorher beschrieben worden
ist. Die sekundären
LUTs 672 und 678 können logische Operationen mit
den Ausgangssignalen der primären
LUTs durchführen,
bevor sie vom LAB 200 ausgegeben werden. Ferner können die
sekundären
LUTs 672 und 678 auch verwendet werden, um Adressen
für die
RAM-Blöcke
zu decodieren.
-
Die
Erfindung kann ferner einen Logikgatteranordnungsblock für eine programmierbare
Logikvorrichtung schaffen, umfassend:
einen ersten primären Vier-Eingang-Funktionsblock zum
Implementieren logischer Funktionen;
einen zweiten primären Vier-Eingang-Funktionsblock zum
Implementieren logischer Funktionen;
einen dritten primären Vier-Eingang-Funktionsblock zum
Implementieren logischer Funktionen;
einen vierten primären Vier-Eingang-Funktionsblock zum
Implementieren logischer Funktionen; und
einen sekundären Vier-Eingang-Funktionsblock
zum Implementieren logischer Funktionen, wobei ein erster Eingang
des sekundären
Vier-Eingang-Funktionsblocks
mit dem ersten primären
Vier-Eingang-Funktionsblock
und einer ersten dedizierten Eingangsleitung programmierbar gekoppelt
wird, ein zweiter Eingang des sekundären Vier-Eingang-Funktionsblocks mit
dem zweiten primären
Vier-Eingang-Funktionsblock und einer zweiten dedizierten Eingangsleitung
programmierbar gekoppelt wird, ein dritter Eingang des sekundären Vier-Eingang-Funktionsblocks
mit dem dritten primären
Vier-Eingang-Funktionsblocks und einer dritten dedizierten Eingangsleitung
programmierbar gekoppelt wird, und ein vierter Eingang des sekundären Vier-Eingang-Funktionsblocks
mit dem vierten primären Vier-Eingang-Funktionsblock
und einer vierten dedizierten Eingangsleitung programmierbar gekoppelt wird.
-
Dieser
Logikanordnungsblock kann ferner umfassen:
einen ersten sekundären Zwei-Eingang-Funktionsblock,
wobei ein erster Eingang des ersten sekundären Zwei-Eingang-Funktionsblocks
mit dem zweiten primären
Vier-Eingang-Block gekoppelt wird, und ein zweiter Eingang des ersten
sekundären
Zwei-Eingang-Funktionsblocks mit dem zweiten primären Vier-Eingang-Block
gekoppelt wird; und
einen zweiten sekundären Zwei-Eingang-Funktionsblock,
wobei ein erster Eingang des zweiten sekundären Zwei-Eingang-Funktionsblocks
mit dem dritten primären
Vier-Eingang-Block gekoppelt wird, und ein zweiter Eingang des zweiten
sekundären
Zwei-Eingang-Funktionsblocks mit dem vierten primären Vier-Eingang-Block
gekoppelt wird.
-
Der
Logikgatteranordnungsblock kann ferner umfassen:
ein erstes
Register, das programmierbar mit der zweiten dedizierten Eingangsleitung,
dem zweiten primären
Vier-Eingang-Funktionsblock und dem sekundären Vier-Eingang-Funktionsblock
gekoppelt wird; und
ein zweites Register, das mit dem sekundären Vier-Eingang-Funktionsblock, dem
dritten primären Vier-Eingang-Funktionsblock
und der dritten dedizierten Eingangsleitung programmierbar gekoppelt wird.
-
Der
Logikgatteranordnungsblock kann ferner umfassen:
ein drittes
Register, das mit der ersten dedizierten Eingangsleitung, dem ersten
sekundären
Zwei-Eingang-Funktionsblock und den ersten primären Vier-Eingang-Funktionsblock
programmierbar gekoppelt wird; und
ein viertes Register, das
mit dem vierten primären Vier-Eingang-Funktionsblock, dem
zweiten sekundären
Zwei-Eingang-Funktionsblock oder der vierten dedizierten Eingangsleitung
programmierbar gekoppelt wird.
-
Das
Register kann ferner umfassen:
einen Takteingang, der selektiv
mit einer ersten Taktquelle oder einer zweiten Taktquelle gekoppelt
wird;
eine Taktfreigabesteuerung zum Freigeben der Taktung
durch den Takteingang des Register; und
eine Setz- und Rücksetzsteuerung
zum Setzen und Zurücksetzen
des Registers.
-
Die
Erfindung kann ferner eine programmierbare integrierte Logikgatteranordnungsschaltung schaffen,
die als zweidimensionale Anordnung von Zellen organisiert ist und
umfasst:
eine erste Anzahl von Leitern, die längs einer
ersten Abmessung der zweidimensionalen Anordnung verlaufen;
eine
zweite Anzahl von Leitern, die längs
einer zweiten Abmessung der zweidimensionalen Anordnung verlaufen,
wobei die zweiten mehreren Leiter mit den ersten mehreren Leitern
programmierbar gekoppelt werden; und
mehrere Logikgatteranordnungsblöcke, wobei
ein Logikgatteranordnungsblock umfasst:
mehrere programmierbare
Funktionsblöcke
erster Ebene zum Implementieren logischer Funktionen;
mehrerer
programmierbare Funktionsblöcke
zweiter Ebene, die mit den mehreren programmierbaren Funktionsblöcken erster
Ebene programmierbar gekoppelt sind, ohne über die ersten mehreren Leiter und
die zweiten mehreren Leiter zu führen,
wobei die mehreren programmierbaren Funktionsblöcke zweiter Ebene zum Implementieren
logischer Funktionen der Ausgänge
von den mehreren programmierbaren Funktionsblöcken erster Ebene dienen; und
mehrere
dedizierte Eingänge,
die mit den mehreren programmierbaren Funktionsblöcken zweiter
Ebene programmierbar gekoppelt werden.
-
Diese
programmierbare Logikgatteranordnung kann ferner mehrere Schaltkästen zum
programmierbaren Koppeln der ersten mehreren Leiter mit den zweiten
mehreren Leitern umfassen.
-
Zusätzlich kann
die programmierbare Logikgatteranordnung ferner mehrere Schaltkästen zum programmierbaren
Koppeln der ersten mehreren Leiter mit anderen Leitern innerhalb
der ersten mehreren Leiter umfassen.
-
Die
ersten mehreren Leiter können
Signale zwischen wenigstens zwei Logikgatteranordnungsblöcken programmierbar
koppeln, ohne über
die mehreren Schaltkästen
zu leiten.
-
Die
programmierbare Logikgatteranordnung kann ferner mehrere Multiplexer-Bereiche umfassen, um
die ersten mehreren Leiter und die zweiten mehreren Leiter mit den
Logikgatteranordnungsblöcken zu
koppeln.
-
Die
programmierbare Logikgatteranordnung kann ferner erste mehrere lange
Leiter umfassen, die in der ersten Abmessung der zweidimensionalen
Anordnung verlaufen, wobei die ersten mehreren langen Leiter zum
programmierbaren Koppeln mehrerer Logikgatteranordnungsblöcke dienen.
-
Die
programmierbare Logikgatteranordnung kann ferner mehrere Multiplexer-Bereiche zum programmierbaren
Koppeln der ersten mehreren langen Leiter mit den zweiten mehreren
langen Leitern umfassen.
-
Die
programmierbare Logikgatteranordnung kann ferner erste mehrere lange Leiter
umfassen, die in der ersten Abmessung der zweidimensionalen Anordnung
verlaufen, wobei die ersten mehreren langen Leiter die mehreren
Logikgatteranordnungsblöcke
programmierbar koppeln, wobei die mehreren Logikgatteranordnungsblöcke nicht
benachbart sind.
-
Die
Ausgänge
von den Logikgatteranordnungsblöcken
können
direkt mit den ersten mehreren langen Leitern programmierbar gekoppelt
werden, ohne über
einen Multiplexer-Bereich zu leiten.
-
Die
Ausgänge
von den Logikgatteranordnungsblöcken
können
direkt mit den ersten mehreren langen Leitern programmierbar gekoppelt
werden, wobei die ersten mehreren langen Leiter mit den Eingängen der
Logikgatteranordnungsblöcke über einen Multiplexer-Bereich
programmierbar gekoppelt werden können.
-
Die
ersten mehreren langen Leiter können einen
Dreizustands-Bus bilden.
-
Die
programmierbar Logikgatteranordnung kann ferner mehrere doppeltlange
Leitungen zum programmierbaren Koppeln von zwei Logikgatteranordnungsblöcken ohne
Verwendung eines Schaltkastens umfassen.
-
Die
ersten mehreren Leiter und die zweiten mehreren Leiter können doppeltlange
Leiter umfassen.
-
Der
Logikgatteranordnungsblock kann ferner umfassen:
einen Übertragslogikblock,
der mit dem ersten programmierbaren Funktionsblock gekoppelt ist,
wobei der Übertragslogikblock
ein Übertragssignal
in Reaktion auf Eingaben in den ersten programmierbaren Funktionsblock
erzeugt und weiterleitet.
-
Der
erste programmierbare Funktionsblock kann als Schreib/Lese-Speicher
zum Speichern von Daten konfigurierbar sein, wobei die Adressdaten
für den
Schreib/Lese-Speicher über
die Eingänge
des ersten programmierbaren Funktionsblocks bereitgestellt werden.
-
Der
Logikgatteranordnungsblock kann ferner ein Programmregister zum Synchronisieren
eines Schreibfreigabesignals mit einer Taktquelle umfassen.
-
Der
Logikgatteranordnungsblock kann ferner einen Schreibfreigabelogikblock
umfassen, der mit dem Schreib/Lese-Speicher gekoppelt ist, wobei
der Schreibfreigabelogikblock auf ein Schreibfreigabesignal anspricht,
um das Lesen und Schreiben des Schreib/Lese-Speichers freizugeben.
-
Der
zweite programmierbare Funktionsblock kann so konfiguriert sein,
dass er Adressdaten für den
Schreib/Lese-Speicher decodiert.
-
Der
dedizierte Eingang kann mit dem ersten Funktionsblock programmierbar
gekoppelt werden, um Daten des Schreib/Lese-Speichers in den ersten Funktionsblock
zu laden, wenn der erste Funktionsblock als Schreib/Lese-Speicher konfiguriert
ist.
-
Der
Logikgatteranordnungsblock kann ferner umfassen:
einen Dateneingangsstift,
der mit dem ersten Funktionsblock programmierbar gekoppelt ist,
wobei der Dateneingangsstift Daten vom Schreib/Lese-Speicher in
den Schreib/Lese-Speicher lädt.