DE69635431T2 - Verbindungsarchitektur für programmierbare logische Vorrichtung mit grobkörniger Oberflächenstruktur - Google Patents

Verbindungsarchitektur für programmierbare logische Vorrichtung mit grobkörniger Oberflächenstruktur Download PDF

Info

Publication number
DE69635431T2
DE69635431T2 DE69635431T DE69635431T DE69635431T2 DE 69635431 T2 DE69635431 T2 DE 69635431T2 DE 69635431 T DE69635431 T DE 69635431T DE 69635431 T DE69635431 T DE 69635431T DE 69635431 T2 DE69635431 T2 DE 69635431T2
Authority
DE
Germany
Prior art keywords
input
block
output
programmable
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69635431T
Other languages
English (en)
Other versions
DE69635431D1 (de
Inventor
Richard G. Milpitas Cliff
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Altera Corp
Original Assignee
Altera Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Altera Corp filed Critical Altera Corp
Publication of DE69635431D1 publication Critical patent/DE69635431D1/de
Application granted granted Critical
Publication of DE69635431T2 publication Critical patent/DE69635431T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/1733Controllable logic circuits
    • H03K19/1737Controllable logic circuits using multiplexers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17704Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form the logic functions being realised by the interconnection of rows and columns
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/1778Structural details for adapting physical parameters

Description

  • 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.

Claims (19)

  1. Logikgatteranordnungsblock für eine programmierbare Logikvorrichtung, umfassend: einen ersten dedizierten Eingang (638, 640, 642, 644, 646, 648, 650, 652, 654, 658, 660, 664); einen ersten Vier-Eingang-Funktionsblock (601, 605, 610, 615, 620, 625, 630, 635) zum Implementieren von logischen Funktionen; einen zweiten Vier-Eingang-Funktionsblock (672, 678) zum Implementieren logischer Funktionen; einen Zwei-Eingang-Funktionsblock (670, 674, 676, 680) 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 (648), der selektiv den ersten dedizierten Eingang und den Ausgang des ersten Vier-Eingang-Funktionsblocks mit einem ersten Eingang des zweiten Vier-Eingang-Funktionsblocks verbindet.
  2. Logikgatteranordnungsblock nach Anspruch 1, der ferner einen lokalen Zwischenverbindungsbereich (684) umfasst, der den Ausgang des ersten Vier-Eingang-Funktionsblocks, einen Ausgang des zweiten Vier-Eingang-Funktionsblocks und einen Ausgang des Zwei-Eingang-Funktionsblocks mit Eingängen des Logikgatteranordnungsblocks programmierbar verbindet, ohne über einen globalen Zwischenverbindungsbereich der programmierbaren Logikvorrichtung zu leiten.
  3. Logikgatteranordnungsblock nach Anspruch 1 oder Anspruch 2, der ferner einen dritten Vier-Eingang-Funktionsblock (601, 605, 610, 615, 620, 625, 630, 635) umfasst, wobei ein Ausgang des dritten Vier-Eingang-Funktionsblocks mit einem zweiten Eingang des Zwei-Eingang-Funktionsblocks verbunden ist.
  4. Logikgatteranordnungsblock nach Anspruch 3, ferner umfassend: einen zweiten dedizierten Eingang (638, 640, 642, 644, 646, 648, 650, 652); und einen zweiten Multiplexer-Block (684), der den zweiten dedizierten Eingang und den Ausgang des dritten Vier-Eingang-Funktionsblocks mit einem zweiten Eingang des zweiten Vier-Eingang-Funktionsblocks selektiv verbindet.
  5. Logikgatteranordnungsblock nach Anspruch 1, ferner umfassend: einen Speicherblock zum Speichern von Daten (691); und einen zweiten Multiplexer-Block (684), der den Ausgang des ersten Vier-Eingang-Funktionsblocks und den ersten dedizierten Eingang mit einem Eingang des Speicherblocks selektiv verbindet.
  6. Logikgatteranordnungsblock nach Anspruch 1, ferner umfassend: einen Speicherblock zum Speichern von Daten (691); und einen zweiten Multiplexer-Block (684), der den Ausgang des ersten Vier-Eingang-Funktionsblocks, den Ausgang des Zwei-Eingang-Funktionsblocks und den ersten dedizierten Eingang mit einem Eingang des Speicherblocks selektiv verbindet.
  7. Logikgatteranordnungsblock nach Anspruch 4, ferner umfassend: einen Speicherblock zum Speichern von Daten (691); und einen zweiten Multiplexer-Block (684), der den Ausgang des zweiten Vier-Eingang-Funktionsblocks, den Ausgang des dritten Vier-Eingang-Funktionsblocks und den zweiten dedizierten Eingang mit einem Eingang des Speicherblocks selektiv verbindet.
  8. Logikgatteranordnungsblock nach irgendeinem der Ansprüche 1 bis 7, ferner umfassend: einen kombinatorischen Ausgang (687), der den ersten Funktions block mit Eingängen in den Logikgatteranordnungsblock über eine lokale Zwischenverbindungsstruktur programmierbar verbindet, ohne eine globale Zwischenverbindungsstruktur zu verwenden; und ein Register (691), das programmierbar mit dem ersten Funktionsblock und dem ersten dedizierten Eingang verbunden ist, wobei das Register einen registergepufferten Ausgang bereitstellt, der nicht-programmierbar mit der lokalen Zwischenverbindungsstruktur verbunden ist.
  9. System, das eine programmierbare Logikvorrichtung (121) mit einem Logikgatteranordnungsblock nach irgendeinem der Ansprüche 1 bis 8 enthält.
  10. Logikgatteranordnungsblock für eine programmierbare Logikvorrichtung, umfassend: einen ersten dedizierten Eingang (638, 640, 642, 644, 646, 648, 650, 652, 654, 658, 660, 664); einen ersten programmierbaren Funktionsblock (601, 605, 610, 615, 620, 625, 630, 635) zum Implementieren logischer Funktionen; einen zweiten programmierbaren Funktionsblock (672, 678) zum Implementieren logischer Funktionen; einen dritten programmierbaren Funktionsblock (670, 674, 676, 680) 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 (684), 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 (510), 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 (210, 220) der programmierbaren Logikvorrichtung zu leiten.
  11. Logikgatteranordnungsblock nach Anspruch 10, bei dem ein Aus gang des dritten programmierbaren Funktionsblocks (670, 674, 676, 680) über die lokale Zwischenverbindungsstruktur (510) mit den dedizierten Eingängen des Logikanordnungsblocks programmierbar verbunden ist, ohne über den globalen Zwischenverbindungsbereich der programmierbaren Logikvorrichtung zu leiten.
  12. Logikgatteranordnungsblock nach Anspruch 11, ferner umfassend: einen zweiten dedizierten Eingang (638, 640, 642, 644, 646, 648, 650, 652); einen vierten programmierbaren Funktionsblock (601, 605, 615, 620, 625, 630, 635), der mit dem dritten programmierbaren Funktionsblock verbunden ist und mit dem zweiten dedizierten Eingang und dem zweiten programmierbaren Funktionsblock programmierbar verbunden ist, wobei ein Ausgang des vierten programmierbaren Funktionsblocks über die lokale Zwischenverbindungsstruktur mit den dedizierten Eingängen des Logikgatteranordnungsblocks programmierbar verbunden ist, ohne über den globalen Zwischenverbindungsbereich der programmierbaren Logikvorrichtung zu leiten.
  13. Logikgatteranordnungsblock nach irgendeinem der Ansprüche 10 bis 12, ferner umfassend: einen Speicherblock (691), der mit dem ersten dedizierten Eingang und dem ersten programmierbaren Funktionsblock programmierbar verbunden ist.
  14. Logikgatteranordnungsblock nach Anspruch 13, bei dem der Speicherblock (691) mit dem dritten programmierbaren Funktionsblock programmierbar verbunden ist.
  15. Logikgatteranordnungsblock nach Anspruch 13, bei dem ein Ausgang des Speicherblocks (691) mit der lokalen Zwischenverbindungsstruktur nicht-programmierbar verbunden ist.
  16. Logikgatteranordnungsblock nach irgendeinem der Ansprüche 10 bis 15, bei dem der erste programmierbare Funktionsblock (601, 605, 610, 615, 620, 625, 630, 635) und der zweite programmierbare Funktionsblock (672, 678) im Wesentlichen identisch sind.
  17. Logikgatteranordnungsblock nach Anspruch 11 oder irgendeinem der davon abhängigen Ansprüche 12 bis 16, bei dem der erste programmierbare Funktionsblock (601, 605, 610, 615, 620, 625, 630, 635) und der zweite programmierbare Funktionsblock (672, 678) Vier-Eingang-Nachschlagtabellen sind und der dritte programmierbare Funktionsblock (670, 674, 676, 680) eine Zwei-Eingang-Nachschlagtabelle ist.
  18. Logikgatteranordnungsblock nach Anspruch 11 oder irgendeinem der davon abhängigen Ansprüche 12 bis 17, bei dem die programmierbaren Funktionsblöcke (601, 605, 610, 615, 620, 625, 630, 635, 670, 672, 674, 676, 678, 680) in einem statischen Schreib/Lese-Speicher implementiert sind.
  19. System, das eine programmierbare Logikvorrichtung (121) mit einem Logikgatteranordnungsblock nach irgendeinem der Ansprüche 10 bis 18 enthält.
DE69635431T 1995-06-07 1996-05-31 Verbindungsarchitektur für programmierbare logische Vorrichtung mit grobkörniger Oberflächenstruktur Expired - Lifetime DE69635431T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US484831 1995-06-07
US08/484,831 US5815726A (en) 1994-11-04 1995-06-07 Coarse-grained look-up table architecture

Publications (2)

Publication Number Publication Date
DE69635431D1 DE69635431D1 (de) 2005-12-22
DE69635431T2 true DE69635431T2 (de) 2006-06-22

Family

ID=23925801

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69635431T Expired - Lifetime DE69635431T2 (de) 1995-06-07 1996-05-31 Verbindungsarchitektur für programmierbare logische Vorrichtung mit grobkörniger Oberflächenstruktur
DE69637399T Expired - Lifetime DE69637399T2 (de) 1995-06-07 1996-05-31 Grobkörnig strukturierte integrierte Halbleiterschaltung mit Nachschlagtabellen

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE69637399T Expired - Lifetime DE69637399T2 (de) 1995-06-07 1996-05-31 Grobkörnig strukturierte integrierte Halbleiterschaltung mit Nachschlagtabellen

Country Status (3)

Country Link
US (2) US5815726A (de)
EP (2) EP0748049B1 (de)
DE (2) DE69635431T2 (de)

Families Citing this family (173)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US6526461B1 (en) * 1996-07-18 2003-02-25 Altera Corporation Interconnect chip for programmable logic devices
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
ATE243390T1 (de) 1996-12-27 2003-07-15 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US5982195A (en) * 1997-02-20 1999-11-09 Altera Corporation Programmable logic device architectures
US5914616A (en) * 1997-02-26 1999-06-22 Xilinx, Inc. FPGA repeatable interconnect structure with hierarchical interconnect lines
US5889411A (en) * 1997-02-26 1999-03-30 Xilinx, Inc. FPGA having logic element carry chains capable of generating wide XOR functions
US6204689B1 (en) 1997-02-26 2001-03-20 Xilinx, Inc. Input/output interconnect circuit for FPGAs
US5920202A (en) * 1997-02-26 1999-07-06 Xilinx, Inc. Configurable logic element with ability to evaluate five and six input functions
US6201410B1 (en) 1997-02-26 2001-03-13 Xilinx, Inc. Wide logic gate implemented in an FPGA configurable logic element
US5963050A (en) 1997-02-26 1999-10-05 Xilinx, Inc. Configurable logic element with fast feedback paths
US5942913A (en) * 1997-03-20 1999-08-24 Xilinx, Inc. FPGA repeatable interconnect structure with bidirectional and unidirectional interconnect lines
US6160419A (en) * 1997-11-03 2000-12-12 Altera Corporation Programmable logic architecture incorporating a content addressable embedded array block
US5905385A (en) * 1997-04-01 1999-05-18 Advanced Micro Devices, Inc. Memory bits used to couple look up table inputs to facilitate increased availability to routing resources particularly for variable sized look up tables for a field programmable gate array (FPGA)
JP3469046B2 (ja) * 1997-07-08 2003-11-25 株式会社東芝 機能ブロック、および半導体集積回路装置
KR100234305B1 (ko) * 1997-07-30 1999-12-15 윤종용 화상 형성 장치의 스캐너 비선형성 보정 장치
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US6191611B1 (en) 1997-10-16 2001-02-20 Altera Corporation Driver circuitry for programmable logic devices with hierarchical interconnection resources
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6211696B1 (en) * 1998-05-30 2001-04-03 Cypress Semiconductor Corp. Hybrid product term and look-up table-based programmable logic device with improved speed and area efficiency
US6201408B1 (en) 1998-05-30 2001-03-13 Cypress Semiconductor Corp. Hybrid product term and look-up table-based programmable logic device with improved speed and area efficiency
US6144573A (en) 1998-06-26 2000-11-07 Altera Corporation Programmable logic devices with improved content addressable memory capabilities
US6453382B1 (en) 1998-11-05 2002-09-17 Altera Corporation Content addressable memory encoded outputs
US6353920B1 (en) * 1998-11-17 2002-03-05 Xilinx, Inc. Method for implementing wide gates and tristate buffers using FPGA carry logic
US6505337B1 (en) 1998-11-24 2003-01-07 Xilinx, Inc. Method for implementing large multiplexers with FPGA lookup tables
US6118300A (en) 1998-11-24 2000-09-12 Xilinx, Inc. Method for implementing large multiplexers with FPGA lookup tables
US6114873A (en) * 1998-12-17 2000-09-05 Nortel Networks Corporation Content addressable memory programmable array
US6396302B2 (en) * 1999-02-25 2002-05-28 Xilinx, Inc. Configurable logic element with expander structures
US7003660B2 (en) 2000-06-13 2006-02-21 Pact Xpp Technologies Ag Pipeline configuration unit protocols and communication
US6150838A (en) 1999-02-25 2000-11-21 Xilinx, Inc. FPGA configurable logic block with multi-purpose logic/memory circuit
US6245634B1 (en) * 1999-10-28 2001-06-12 Easic Corporation Method for design and manufacture of semiconductors
US6331733B1 (en) 1999-08-10 2001-12-18 Easic Corporation Semiconductor device
US6236229B1 (en) * 1999-05-13 2001-05-22 Easic Corporation Integrated circuits which employ look up tables to provide highly efficient logic cells and logic functionalities
US6118693A (en) * 1999-05-26 2000-09-12 Lattice Semiconductor Corporation Electrically erasable non-volatile memory cell with integrated SRAM cell to reduce testing time
US6239611B1 (en) * 1999-06-10 2001-05-29 Xilinx, Inc. Circuit and method for testing whether a programmable logic device complies with a zero-hold-time requirement
AU5805300A (en) 1999-06-10 2001-01-02 Pact Informationstechnologie Gmbh Sequence partitioning in cell structures
US7185293B1 (en) 1999-11-29 2007-02-27 Cellot, Inc. Universal hardware device and method and tools for use therewith
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US9141390B2 (en) 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
GB2374242B (en) * 2001-04-07 2005-03-16 Univ Dundee Integrated circuit and related improvements
US6580289B2 (en) * 2001-06-08 2003-06-17 Viasic, Inc. Cell architecture to reduce customization in a semiconductor device
WO2002103532A2 (de) 2001-06-20 2002-12-27 Pact Xpp Technologies Ag Verfahren zur bearbeitung von daten
US10031733B2 (en) 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
US6331788B1 (en) * 2001-07-03 2001-12-18 The United States Of America As Represented By The Secretary Of The Air Force Simplified cellular array structure for programmable Boolean networks
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
EP1483682A2 (de) 2002-01-19 2004-12-08 PACT XPP Technologies AG Reconfigurierbarer prozessor
US6690201B1 (en) 2002-01-28 2004-02-10 Xilinx, Inc. Method and apparatus for locating data transition regions
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US20030229837A1 (en) * 2002-06-06 2003-12-11 Cox William D. Method and apparatus for testing a logic cell in a semiconductor device
US6970012B2 (en) * 2002-06-10 2005-11-29 Xilinx, Inc. Programmable logic device having heterogeneous programmable logic blocks
US6873185B2 (en) * 2002-06-19 2005-03-29 Viasic, Inc. Logic array devices having complex macro-cell architecture and methods facilitating use of same
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
AU2003289844A1 (en) 2002-09-06 2004-05-13 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US6937064B1 (en) * 2002-10-24 2005-08-30 Altera Corporation Versatile logic element and logic array block
EP1676208A2 (de) * 2003-08-28 2006-07-05 PACT XPP Technologies AG Datenverarbeitungseinrichtung und verfahren
US7019557B2 (en) * 2003-12-24 2006-03-28 Viciciv Technology Look-up table based logic macro-cells
US7336097B2 (en) * 2003-12-24 2008-02-26 Viciciv, Inc. Look-up table structure with embedded carry logic
US7193440B1 (en) * 2004-02-14 2007-03-20 Herman Schmit Configurable circuits, IC's, and systems
US7284222B1 (en) 2004-06-30 2007-10-16 Tabula, Inc. Method and apparatus for identifying connections between configurable nodes in a configurable integrated circuit
US7622951B2 (en) * 2004-02-14 2009-11-24 Tabula, Inc. Via programmable gate array with offset direct connections
US7109752B1 (en) 2004-02-14 2006-09-19 Herman Schmit Configurable circuits, IC's, and systems
US7425841B2 (en) 2004-02-14 2008-09-16 Tabula Inc. Configurable circuits, IC's, and systems
US7193432B1 (en) 2004-02-14 2007-03-20 Herman Schmit VPA logic circuits
US7126373B1 (en) 2004-02-14 2006-10-24 Herman Schmit Configurable logic circuits with commutative properties
US7126381B1 (en) 2004-02-14 2006-10-24 Herman Schmit VPA interconnect circuit
US7167025B1 (en) 2004-02-14 2007-01-23 Herman Schmit Non-sequentially configurable IC
US7157933B1 (en) 2004-02-14 2007-01-02 Herman Schmit Configurable circuits, IC's, and systems
US20050218929A1 (en) * 2004-04-02 2005-10-06 Man Wang Field programmable gate array logic cell and its derivatives
US7030652B1 (en) 2004-04-23 2006-04-18 Altera Corporation LUT-based logic element with support for Shannon decomposition and associated method
US7730335B2 (en) 2004-06-10 2010-06-01 Marvell World Trade Ltd. Low power computer with main and auxiliary processors
US7788427B1 (en) 2005-05-05 2010-08-31 Marvell International Ltd. Flash memory interface for disk drive
US7702848B2 (en) * 2004-06-10 2010-04-20 Marvell World Trade Ltd. Adaptive storage system including hard disk drive with flash interface
US7617359B2 (en) * 2004-06-10 2009-11-10 Marvell World Trade Ltd. Adaptive storage system including hard disk drive with flash interface
US7634615B2 (en) * 2004-06-10 2009-12-15 Marvell World Trade Ltd. Adaptive storage system
US7312630B2 (en) 2004-06-30 2007-12-25 Tabula, Inc. Configurable integrated circuit with built-in turns
US7193438B1 (en) 2004-06-30 2007-03-20 Andre Rohe Configurable integrated circuit with offset connection
US7145361B1 (en) * 2004-06-30 2006-12-05 Andre Rohe Configurable integrated circuit with different connection schemes
US7408382B2 (en) * 2004-06-30 2008-08-05 Tabula, Inc. Configurable circuits, IC's, and systems
US7282950B1 (en) 2004-11-08 2007-10-16 Tabula, Inc. Configurable IC's with logic resources with offset connections
US7449915B2 (en) * 2004-06-30 2008-11-11 Tabula Inc. VPA logic circuits
US7439766B2 (en) * 2004-06-30 2008-10-21 Tabula, Inc. Configurable logic circuits with commutative properties
US7620917B2 (en) * 2004-10-04 2009-11-17 Synopsys, Inc. Methods and apparatuses for automated circuit design
US7295037B2 (en) * 2004-11-08 2007-11-13 Tabula, Inc. Configurable IC with routing circuits with offset connections
US7276933B1 (en) 2004-11-08 2007-10-02 Tabula, Inc. Reconfigurable IC that has sections running at different looperness
US7342415B2 (en) 2004-11-08 2008-03-11 Tabula, Inc. Configurable IC with interconnect circuits that also perform storage operations
US7301368B2 (en) * 2005-03-15 2007-11-27 Tabula, Inc. Embedding memory within tile arrangement of a configurable IC
US7917559B2 (en) * 2004-11-08 2011-03-29 Tabula, Inc. Configurable IC's with configurable logic circuits that perform adder and/or subtractor operations
US20070244958A1 (en) * 2004-11-08 2007-10-18 Jason Redgrave Configurable IC's with carry bypass circuitry
US7268586B1 (en) 2004-11-08 2007-09-11 Tabula, Inc. Method and apparatus for accessing stored data in a reconfigurable IC
US7573296B2 (en) 2004-11-08 2009-08-11 Tabula Inc. Configurable IC with configurable routing resources that have asymmetric input and/or outputs
US7743085B2 (en) 2004-11-08 2010-06-22 Tabula, Inc. Configurable IC with large carry chains
US7242216B1 (en) 2004-11-08 2007-07-10 Herman Schmit Embedding memory between tile arrangement of a configurable IC
US7317331B2 (en) 2004-11-08 2008-01-08 Tabula, Inc. Reconfigurable IC that has sections running at different reconfiguration rates
US7330050B2 (en) 2004-11-08 2008-02-12 Tabula, Inc. Storage elements for a configurable IC and method and apparatus for accessing data stored in the storage elements
US7259587B1 (en) * 2004-11-08 2007-08-21 Tabula, Inc. Configurable IC's with configurable logic resources that have asymetric inputs and/or outputs
US7224181B1 (en) 2004-11-08 2007-05-29 Herman Schmit Clock distribution in a configurable IC
US7334208B1 (en) 2004-11-09 2008-02-19 Viasic, Inc. Customization of structured ASIC devices using pre-process extraction of routing information
US7496879B2 (en) * 2004-12-01 2009-02-24 Tabula, Inc. Concurrent optimization of physical design and operational cycle assignment
US7428721B2 (en) 2004-12-01 2008-09-23 Tabula, Inc. Operational cycle assignment in a configurable IC
US7236009B1 (en) 2004-12-01 2007-06-26 Andre Rohe Operational time extension
US7298169B2 (en) 2005-03-15 2007-11-20 Tabula, Inc Hybrid logic/interconnect circuit in a configurable IC
US7825684B2 (en) 2005-03-15 2010-11-02 Tabula, Inc. Variable width management for a memory of a configurable IC
US7530033B2 (en) * 2005-03-15 2009-05-05 Tabula, Inc. Method and apparatus for decomposing functions in a configurable IC
US20070244959A1 (en) * 2005-03-15 2007-10-18 Steven Teig Configurable IC's with dual carry chains
US7224182B1 (en) 2005-03-15 2007-05-29 Brad Hutchings Hybrid configurable circuit for a configurable IC
US7310003B2 (en) * 2005-03-15 2007-12-18 Tabula, Inc. Configurable IC with interconnect circuits that have select lines driven by user signals
US7230869B1 (en) 2005-03-15 2007-06-12 Jason Redgrave Method and apparatus for accessing contents of memory cells
US7375552B1 (en) 2005-06-14 2008-05-20 Xilinx, Inc. Programmable logic block with dedicated and selectable lookup table outputs coupled to general interconnect structure
US7274214B1 (en) 2005-06-14 2007-09-25 Xilinx, Inc. Efficient tile layout for a programmable logic device
US7276934B1 (en) 2005-06-14 2007-10-02 Xilinx, Inc. Integrated circuit with programmable routing structure including diagonal interconnect lines
US7218143B1 (en) * 2005-06-14 2007-05-15 Xilinx, Inc. Integrated circuit having fast interconnect paths between memory elements and carry logic
US7804719B1 (en) 2005-06-14 2010-09-28 Xilinx, Inc. Programmable logic block having reduced output delay during RAM write processes when programmed to function in RAM mode
US7265576B1 (en) 2005-06-14 2007-09-04 Xilinx, Inc. Programmable lookup table with dual input and output terminals in RAM mode
US7256612B1 (en) 2005-06-14 2007-08-14 Xilinx, Inc. Programmable logic block providing carry chain with programmable initialization values
US7268587B1 (en) 2005-06-14 2007-09-11 Xilinx, Inc. Programmable logic block with carry chains providing lookahead functions of different lengths
US7253658B1 (en) 2005-06-14 2007-08-07 Xilinx, Inc. Integrated circuit providing direct access to multi-directional interconnect lines in a general interconnect structure
US7818361B1 (en) 2005-11-07 2010-10-19 Tabula, Inc. Method and apparatus for performing two's complement multiplication
US8463836B1 (en) 2005-11-07 2013-06-11 Tabula, Inc. Performing mathematical and logical operations in multiple sub-cycles
US7765249B1 (en) 2005-11-07 2010-07-27 Tabula, Inc. Use of hybrid interconnect/logic circuits for multiplication
US7372297B1 (en) 2005-11-07 2008-05-13 Tabula Inc. Hybrid interconnect/logic circuits enabling efficient replication of a function in several sub-cycles to save logic and routing resources
US7262633B1 (en) 2005-11-11 2007-08-28 Tabula, Inc. Via programmable gate array with offset bit lines
US7679401B1 (en) 2005-12-01 2010-03-16 Tabula, Inc. User registers implemented with routing circuits in a configurable IC
US7489162B1 (en) 2005-12-01 2009-02-10 Tabula, Inc. Users registers in a reconfigurable IC
US7902864B1 (en) * 2005-12-01 2011-03-08 Altera Corporation Heterogeneous labs
US7461362B1 (en) 2005-12-01 2008-12-02 Tabula, Inc. Replacing circuit design elements with their equivalents
US8250503B2 (en) 2006-01-18 2012-08-21 Martin Vorbach Hardware definition method including determining whether to implement a function as hardware or software
US7504858B1 (en) 2006-03-08 2009-03-17 Tabula, Inc. Configurable integrated circuit with parallel non-neighboring offset connections
US7694083B1 (en) 2006-03-08 2010-04-06 Tabula, Inc. System and method for providing a virtual memory architecture narrower and deeper than a physical memory architecture
US7797497B1 (en) 2006-03-08 2010-09-14 Tabula, Inc. System and method for providing more logical memory ports than physical memory ports
US7518400B1 (en) 2006-03-08 2009-04-14 Tabula, Inc. Barrel shifter implemented on a configurable integrated circuit
US7609085B1 (en) 2006-03-08 2009-10-27 Tabula, Inc. Configurable integrated circuit with a 4-to-1 multiplexer
US7529992B1 (en) 2006-03-27 2009-05-05 Tabula, Inc. Configurable integrated circuit with error correcting circuitry
US7669097B1 (en) 2006-03-27 2010-02-23 Tabula, Inc. Configurable IC with error detection and correction circuitry
US7397276B1 (en) * 2006-06-02 2008-07-08 Lattice Semiconductor Corporation Logic block control architectures for programmable logic devices
US20080263324A1 (en) * 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US7737751B1 (en) * 2006-08-25 2010-06-15 Altera Corporation Periphery clock distribution network for a programmable logic device
US7378874B2 (en) * 2006-08-31 2008-05-27 Viasic, Inc. Creating high-drive logic devices from standard gates with minimal use of custom masks
US7587697B1 (en) 2006-12-12 2009-09-08 Tabula, Inc. System and method of mapping memory blocks in a configurable integrated circuit
US7930666B1 (en) 2006-12-12 2011-04-19 Tabula, Inc. System and method of providing a memory hierarchy
US7456653B2 (en) * 2007-03-09 2008-11-25 Altera Corporation Programmable logic device having logic array block interconnect lines that can interconnect logic elements in different logic blocks
US7508231B2 (en) 2007-03-09 2009-03-24 Altera Corporation Programmable logic device having redundancy with logic element granularity
US7525344B2 (en) 2007-03-20 2009-04-28 Tabula, Inc. Configurable IC having a routing fabric with storage elements
US7610566B1 (en) 2007-03-22 2009-10-27 Tabula, Inc. Method and apparatus for function decomposition
US7692309B2 (en) * 2007-09-06 2010-04-06 Viasic, Inc. Configuring structured ASIC fabric using two non-adjacent via layers
WO2009035586A1 (en) 2007-09-06 2009-03-19 Tabula, Inc. Configuration context switcher
US7750474B1 (en) * 2007-11-01 2010-07-06 Marvell International Ltd. Metal programmable logic and multiple function pin interface
US8863067B1 (en) 2008-02-06 2014-10-14 Tabula, Inc. Sequential delay analysis by placement engines
US8166435B2 (en) 2008-06-26 2012-04-24 Tabula, Inc. Timing operations in an IC with configurable circuits
US20100057685A1 (en) * 2008-09-02 2010-03-04 Qimonda Ag Information storage and retrieval system
US8674721B2 (en) 2008-09-17 2014-03-18 Tabula, Inc. Controllable storage elements for an IC
EP2180591B1 (de) 2008-10-21 2012-04-04 Hella KGaA Hueck & Co. Verfahren zur automatischen Bestimmung der Systemdynamik und/oder der Position eines permanenterregten Gleichstrommotors
WO2011123151A1 (en) 2010-04-02 2011-10-06 Tabula Inc. System and method for reducing reconfiguration power usage
WO2011162116A1 (ja) 2010-06-24 2011-12-29 太陽誘電株式会社 半導体装置
US8760193B2 (en) 2011-07-01 2014-06-24 Tabula, Inc. Configurable storage elements
US9148151B2 (en) 2011-07-13 2015-09-29 Altera Corporation Configurable storage elements
US9203397B1 (en) 2011-12-16 2015-12-01 Altera Corporation Delaying start of user design execution
CN104737450B (zh) * 2012-10-28 2018-01-19 太阳诱电株式会社 可再构成的半导体装置
US10482209B1 (en) 2018-08-06 2019-11-19 HLS Logix LLC Field programmable operation block array
US11451230B2 (en) * 2020-04-23 2022-09-20 Xilinx, Inc. Compute dataflow architecture

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US34363A (en) * 1862-02-11 Improvement in machinery for cleaning cotton
US3473160A (en) * 1966-10-10 1969-10-14 Stanford Research Inst Electronically controlled microelectronic cellular logic array
GB1444084A (en) * 1972-06-21 1976-07-28 Honeywell Inf Systems Generalized logic device
US4020469A (en) * 1975-04-09 1977-04-26 Frank Manning Programmable arrays
US4124899A (en) * 1977-05-23 1978-11-07 Monolithic Memories, Inc. Programmable array logic circuit
US4717912A (en) * 1982-10-07 1988-01-05 Advanced Micro Devices, Inc. Apparatus for producing any one of a plurality of signals at a single output
US4546273A (en) * 1983-01-11 1985-10-08 Burroughs Corporation Dynamic re-programmable PLA
USRE34363E (en) * 1984-03-12 1993-08-31 Xilinx, Inc. Configurable electrical circuit having configurable logic elements and configurable interconnects
US4617479B1 (en) * 1984-05-03 1993-09-21 Altera Semiconductor Corp. Programmable logic array device using eprom technology
US4713792A (en) * 1985-06-06 1987-12-15 Altera Corporation Programmable macrocell using eprom or eeprom transistors for architecture control in programmable logic circuits
US4609986A (en) * 1984-06-14 1986-09-02 Altera Corporation Programmable logic array device using EPROM technology
US4642487A (en) * 1984-09-26 1987-02-10 Xilinx, Inc. Special interconnect for configurable logic array
US4706216A (en) * 1985-02-27 1987-11-10 Xilinx, Inc. Configurable logic element
GB2202356B (en) * 1985-02-27 1989-10-11 Xilinx Inc Configurable combinational logic circuit
JPH073838B2 (ja) * 1985-02-28 1995-01-18 株式会社東芝 半導体集積回路
US5015884A (en) * 1985-03-29 1991-05-14 Advanced Micro Devices, Inc. Multiple array high performance programmable logic device family
US4677318A (en) * 1985-04-12 1987-06-30 Altera Corporation Programmable logic storage element for programmable logic devices
US4912342A (en) * 1988-05-05 1990-03-27 Altera Corporation Programmable logic device with array blocks with programmable clocking
US4871930A (en) * 1988-05-05 1989-10-03 Altera Corporation Programmable logic device with array blocks connected via programmable interconnect
US4899067A (en) * 1988-07-22 1990-02-06 Altera Corporation Programmable logic devices with spare circuits for use in replacing defective circuits
US5212652A (en) * 1989-08-15 1993-05-18 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure
US5267187A (en) * 1990-05-10 1993-11-30 Xilinx Inc Logic structure and circuit for fast carry
US5121006A (en) * 1991-04-22 1992-06-09 Altera Corporation Registered logic macrocell with product term allocation and adjacent product term stealing
US5384499A (en) * 1991-04-25 1995-01-24 Altera Corporation High-density erasable programmable logic device architecture using multiplexer interconnections
US5241224A (en) * 1991-04-25 1993-08-31 Altera Corporation High-density erasable programmable logic device architecture using multiplexer interconnections
US5317209A (en) * 1991-08-29 1994-05-31 National Semiconductor Corporation Dynamic three-state bussing capability in a configurable logic array
US5260610A (en) * 1991-09-03 1993-11-09 Altera Corporation Programmable logic element interconnections for programmable logic array integrated circuits
US5550782A (en) * 1991-09-03 1996-08-27 Altera Corporation Programmable logic array integrated circuits
US5371422A (en) * 1991-09-03 1994-12-06 Altera Corporation Programmable logic device having multiplexers and demultiplexers randomly connected to global conductors for interconnections between logic elements
US5260611A (en) * 1991-09-03 1993-11-09 Altera Corporation Programmable logic array having local and long distance conductors
US5258668A (en) * 1992-05-08 1993-11-02 Altera Corporation Programmable logic array integrated circuits with cascade connections between logic modules
US5463328A (en) * 1993-03-08 1995-10-31 Altera Corporation Expanded programmable logic architecture
US5317212A (en) * 1993-03-19 1994-05-31 Wahlstrom Sven E Dynamic control of configurable logic
US5311080A (en) * 1993-03-26 1994-05-10 At&T Bell Laboratories Field programmable gate array with direct input/output connection
US5350954A (en) * 1993-03-29 1994-09-27 Altera Corporation Macrocell with flexible product term allocation
US5473266A (en) * 1993-04-19 1995-12-05 Altera Corporation Programmable logic device having fast programmable logic array blocks and a central global interconnect array
US5444394A (en) * 1993-07-08 1995-08-22 Altera Corporation PLD with selective inputs from local and global conductors
US5386156A (en) * 1993-08-27 1995-01-31 At&T Corp. Programmable function unit with programmable fast ripple logic
US5394033A (en) * 1993-09-01 1995-02-28 Lattice Semiconductor Corporation Structure and method for implementing hierarchical routing pools in a programmable logic circuit
US5546018A (en) * 1993-09-02 1996-08-13 Xilinx, Inc. Fast carry structure with synchronous input
EP0734573B1 (de) * 1993-12-13 2002-04-03 Lattice Semiconductor Corporation Anwendungsspezifische module in einem programmierbaren logikbaustein
US5943242A (en) * 1995-11-17 1999-08-24 Pact Gmbh Dynamically reconfigurable data processing system

Also Published As

Publication number Publication date
EP0748049A2 (de) 1996-12-11
US5815726A (en) 1998-09-29
DE69635431D1 (de) 2005-12-22
EP0748049B1 (de) 2005-11-16
DE69637399D1 (de) 2008-02-14
EP1659693A3 (de) 2006-07-19
EP1659693A2 (de) 2006-05-24
US6122720A (en) 2000-09-19
EP0748049A3 (de) 1997-11-19
EP1659693B1 (de) 2008-01-02
DE69637399T2 (de) 2008-12-18

Similar Documents

Publication Publication Date Title
DE69635431T2 (de) Verbindungsarchitektur für programmierbare logische Vorrichtung mit grobkörniger Oberflächenstruktur
DE19639629C2 (de) Programmierbare, monolithische, integrierte Logikschaltung und Verfahren zum Implementieren derselben
EP1222739B1 (de) Rekonfigurierbares gate-array
DE69822796T2 (de) Nutzerprogrammierbarer prozessor
DE60204189T2 (de) FPGA mit zumindest zwei unterschiedlichen und unabhängig konfigurierbaren Speicherstrukturen
DE4417575C2 (de) Verbesserte Array-Architektur für programmierbare logische Zellen
DE68929518T2 (de) Verfahren zur Verwendung einer elektronisch wiederkonfigurierbaren Gatterfeld-Logik und dadurch hergestelltes Gerät
DE69633370T2 (de) Benutzerprogrammierbares Gatterfeld mit Multiport-RAM
DE69827589T2 (de) Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
DE69721342T2 (de) FPGA mit erhöhter Zellnutzung
DE69733931T2 (de) Kreuzvermittlungsschalter und verfahren mit beschränktem spannungshub und blockierungsfreien vermittlungswegen
DE4107889C2 (de) Halbleiterspeichereinrichtung und N-Bit-Datenpfad
DE69831900T2 (de) Programmier-Modus-Auswahl mit JTAG Schaltungen
DE4416881C2 (de) Verfahren zum Betrieb einer Datenverarbeitungseinrichtung
DE4425552C2 (de) Gatterarray
EP0202456B1 (de) In integrierter Technik hergestellter Logik-Array-Baustein
DE2822219A1 (de) Integrierte logikschaltung
WO2002029600A2 (de) Zellenarordnung mit segmentierterwischenzellstruktur
DE69534659T2 (de) Architektur und Verbindungsmodel für programmierbare logische Schaltungen
DE2627546A1 (de) Integrierte schaltung hoher packungsdichte
DE102009053578A1 (de) Verfahren und Vorrichtung zum Durchführen eines parallelen Routens unter Verwendung einer Multithreaded-Routing-Prozedur
DE102004045527B4 (de) Konfigurierbare Logikschaltungsanordnung
DE60012639T2 (de) Verbindungsressourcen für programmierbare logische integrierte schaltungen
DE60129269T2 (de) Speicherschaltung für eine programmierbare logische integrierte Schaltungsanordnung
DE102020111904A1 (de) Logikschaltkreise mit erhöhten arithmetischen dichten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition