DE69630352T2 - Programmierbarer schalter für eingangs-/ausgangssignale eines anwenderprogrammierbaren gatterfeldes - Google Patents

Programmierbarer schalter für eingangs-/ausgangssignale eines anwenderprogrammierbaren gatterfeldes Download PDF

Info

Publication number
DE69630352T2
DE69630352T2 DE69630352T DE69630352T DE69630352T2 DE 69630352 T2 DE69630352 T2 DE 69630352T2 DE 69630352 T DE69630352 T DE 69630352T DE 69630352 T DE69630352 T DE 69630352T DE 69630352 T2 DE69630352 T2 DE 69630352T2
Authority
DE
Germany
Prior art keywords
signal
fpga
configuration memory
programmable
user
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
DE69630352T
Other languages
English (en)
Other versions
DE69630352D1 (de
Inventor
A. Thomas KEAN
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.)
Xilinx Inc
Original Assignee
Xilinx Inc
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
Priority claimed from GBGB9508931.4A external-priority patent/GB9508931D0/en
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of DE69630352D1 publication Critical patent/DE69630352D1/de
Application granted granted Critical
Publication of DE69630352T2 publication Critical patent/DE69630352T2/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/17736Structural details of routing resources
    • H03K19/17744Structural details of routing resources for input/output signals
    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft integrierte Schaltungen, und insbesondere Feld-programmierbare Logikeinrichtungen (FPGAs), die einen programmierbaren Kern mit einer Logik, einen Konfigurationsspeicher zum Programmieren der Kernlogik, eine Logik zum Programmieren des Konfigurationsspeichers, und Anschlussflecken-Treiber zur Kopplung mit externen Anschlussflecken und Stiften aufweisen.
  • HINTERGRUND DER ERFINDUNG
  • Wiederprogrammierbare FPGAs sind kommerziell seit einigen Jahren verfügbar geworden. Die am besten bekannten kommerzielle Familie von FPGAs sind diejenigen von Xilinx, Inc. Eine Klasse von diesen Einrichtungen verwendet Zellen mit einem Speicher mit einem statischen wahlfreien Zugriff (SRAM), um Steuerbits zu halten, die deren Konfigurationen steuern. Jede SRAM Zelle steuert einen oder mehrere Transistoren an den konfigurierbaren Punkten in einen FPGA und dient als einer oder mehrere Einträge in einer Nachschlagtabelle (die Konfigurationsspeicherzellen bestimmen kollektiv, welche Funktionen das FPGA implementieren wird).
  • Die vorliegende Erfindung wird in Verbindung mit SRAM FPGAs beschrieben werden. Die Konfiguration des FPGA wird typischerweise von einem nicht-flüchtigen Konfigurationsspeicher in die SRAM Konfigurationsspeicherzellen geladen, wenn eine Energie an das System angelegt wird.
  • Einige kommerziell erhältliche SRAM FPGAs weisen eine Strom-gestützte Schnittstelle zu den SRAM Konfigurationsspeicher auf. Das heißt, ein Strom von Daten wird an einen oder einige wenige Anschlussstifte in dem FPGA angelegt und durch ein Schieberegister an Ziel-SRAM-Zellen eingeschoben, um eine Konfiguration für die gesamte Einrichtung oder für einen Unterabschnitt des FPGA bereitzustellen. Diese Strom-gestützte Schnittstelle stellt ein effizientes Verfahren zum Laden der gesamten Einrichtungskonfiguration aus einer externen Quelle ohne irgendwelche zusätzlichen Zusatzschaltungen, beispielsweise Zeilen- und Spaltendekoder, bereit. In herkömmlichen Strom-gestützten FPGAs sind die Orte der Ziel-SRAM-Zellen nicht einzeln adressierbar. Um irgendwelche Änderungen in der Konfiguration durchzuführen, muss für einige Strom-gestützte Schnittstellen ein gesamter Abschnitt des Konfigurationsspeichers neu geladen werden.
  • Andere SRAM FPGAs sind RAM adressierbar, und verwenden Daten- und Adressenleitungen, die jeweils mit einem getrennten externen Stift verbunden sind, um auf den Konfigurationsspeicher in einer Weise zuzugreifen, die ähnlich zu derjenigen ist, die verwendet wird, um auf irgendeinen Speicher mit wahlfreiem Zugriff zuzugreifen. Mit einem adressierbaren Konfigurationsspeicher kann ein externer Prozessor Lese- und Schreiboperationen mit Wortbreite an den Registern des Entwurfs des Benutzers ausführen, ohne andere Teile der Konfiguration neu laden zu müssen. In derartigen Systemen kann ein kleiner Abschnitt des Konfigurationsspeichers schnell geändert werden, und der verbleibende Konfigurationsspeicher bleibt ungestört. Somit erlaubt der Konfigurationsspeicher eine Kommunikation mit hoher Bandbreite (hoher Geschwindigkeit) zwischen dem Prozessor und dem FPGA. Derartige Systeme können Mechanismen zum Synchronisieren von Berechnungsvorgängen zwischen dem FPGA und einem Prozessor außerhalb des FPGA bereitstellen und stellen einen Mechanismus zum Unterstützen einer dynamischen Rekonfiguration bereit. Bei einer dynamischen Rekonfiguration tritt eine Teilrekonfiguration auf während der Rest des FPGA in Verwendung ist. Diese Systeme erlauben noch die Verwendung von herkömmlichen Entwurfswerkzeugen, um FPGA Konfigurationen für statische Konstruktionen zu schaffen.
  • Eine Konfigurationsinformation kann aus einer Vielzahl von Quellen geladen werden, z. B. aus dem Speicher, auf den durch einen Mikroprozessor zugegriffen wird, aus einem nicht-flüchtigen PROM unter der Steuerung des FPGA selbst (siehe Beschreibung in Freeman, U.S. Reissue Patent Re34, 363), oder durch Abbilden des FPGA Konfigurationsspeichers in den Adressenraum des Mikroprozessors.
  • Eine Teilekonfiguration kann auch von innerhalb einigen bekannten FPGAs auftreten. Freeman in dem U.S. Patent 5,343,406 [Aktennummer M-936] beschreibt ein Nachschlagtabellen-FPGA, bei dem die Nachschlagtabellen, die kombinatorische Funktionen erzeugen, sowohl von einem extern zugeführten Konfigurationsbitstrom als auch von der Verbindungsverdrahtung innerhalb des FPGA geladen werden kann. Somit kann eine Teilrekonfiguration dieser FPGA Chips auftreten. Derartige FPGA Chips sind von Xilinx, Inc. als XC4000 Serie FPGA Chips erhältlich.
  • Einige Ziele sind für die Betrachtung wichtig, wenn das FPGA entworfen wird. Da Paket-Anschlussstifte auf einem FPGA begrenzt sind, ist es wichtig, dass ein Laden der Konfigurationsinformation so wenig speziell vorgesehene Paket-Anschlussstifte wie möglich erfordert, um so viele Stifte wie möglich für eine Benutzereingabe und -ausgabe zu belassen, nachdem das FPGA konfiguriert worden ist (eine Verwendung von bestimmten Anschlussstiften zum Laden von Daten während einer Konfiguration und dann die zur Verfügungstellung davon für andere Zwecke nach einer Konfiguration beschränkt die Anzahl von Anschlussstiften, die für eine Benutzerlogik verfügbar sind, nicht). Ferner sollte der Aufbau des FPGA erfordern, dass so wenig zusätzliche Komponenten wie möglich zu der Platine hinzugefügt werden, in der das FPGA angeordnet werden soll (ein Zweck einer Verwendung eines FPGA besteht darin einen Platinenteile-Zählwert zu verringern). Für einige Benutzer ist auch wichtig, dass die FPGA Konfigurationsstruktur eine teilweise und eine schnellere Rekonfiguration erlaubt. Für einen Benutzer ist es ferner vorteilhaft in der Lage zu sein auf interne Gatter und Register während eines Betriebs zuzugreifen (ein System, um einen Benutzer einen Zugriff auf interne Gatter und Register während eines Betriebs zu erlauben, wird in der Patent Cooperation Treaty Patentanmeldung mit der Seriennummer WO 94/10754, veröffentlicht am 11. Mai 1994 [Aktennummer MA-002] beschrieben).
  • Gegenwärtige FPGAs versuchen diese entgegengesetzten Ziele durch bereitstellen einer Vielzahl von Programmiermoden (Seriellbett-Stromladung, Parallelbett-Stromladung, Ladung unter Steuerung eines Mikroprozessors, etc.) zu erfüllen. Ein Anbieten von diesen Optionen erfordert einen relativ komplexen Satz der Programmierlogik auf dem FPGA. Einige Moden erfordern eine größere Anzahl von Anschlussstiften und andere erfordern eine größere Programmierzeit. Z. B. verwendet ein serieller Modus nur einen Datenstift, wohingegen ein paralleler Modus acht oder sechzehn Datenstifte erfordern kann. Aber ein serieller Modus benötigt wenigstens acht oder sechzzehn mal so lang zum Laden der Konfiguration. Nicht sämtliche Anschlussstifte, die während einer Konfiguration verwendet werden, sind speziell diesem Zweck zugewiesen. Jedoch hat eine Auswahl zwischen diesen Moden das spezielle Zuweisen eines Satzes von Anschlussstiften auf den FPGA erfordert, um den Modus zu wählen.
  • In gegenwärtigen RAM adressierbaren FPGAs sind einige der Anschlussstifte des FPGAs Adressleitungen, Datenleitungen und anderen Steuerleitungen zum Laden des Konfigurationsspeichers speziell zugewiesen, wohingegen andere Anschlussstifte speziell der Eingabe und Ausgabe der Benutzerlogik zugewiesen sind. 1 zeigt einen derartigen FPGA Chip und die Beziehungen zwischen externen Anschlussflecken, den FPGA Benutzerlogik-Strukturen, und dem Konfigurationsspeicher, der die Benutzerlogik konfiguriert. Es ist zweckdienlich den FPGA als in ersten und zweiten Speichern gebildet zu visualisieren, wobei ein erster Speicher die Konfigurationsinformation hält, die die Funktionen wählt, die durch den FPGA ausgeführt werden, und einen zweiten Speicher, der die Funktion ausführt, die von dem Benutzer gewählt wird. 1 zeigt den FPGA in dieser Weise (physikalisch werden der Konfigurationsspeicher und die Benutzerlogik auf dem gleichen Substrat eines integrierten Schaltungsaufbaus gebildet. Diese Struktur ist in der PCT Anmeldung mit der Seriennummer WO 94/10754, veröffentlicht am 11. Mai 1994, beschrieben).
  • Wie in 1 gezeigt sind einige der Anschlussflecken zum Zugriff auf die Benutzerlogik 19 und andere zum Adressieren und Laden des Konfigurationsspeichers 25 vorgesehen. Die Anschlussflecken-Treiber 18 werden durch ein Benutzer-erzeugtes Aktivierungssignal konfiguriert, um zu bestimmen, ob ein bestimmter Benutzerlogik-Anschlussflecken 16 ein Eingabeanschlussflecken, ein Ausgabeanschlussflecken oder nicht verwendet ist. Schalter wie der Schalter 15 werden von dem darunter liegenden Konfigurationsspeicher 25 konfiguriert, um Signale zwischen den Anschlussflecken-Treibern 18 und der internen Benutzerlogik 19 zu transferieren. Eine derartige interne Benutzerlogik wird ausführlich von dem vorliegenden Erfinder in der Patent Cooperation Treaty Patentanmeldung mit der Seriennummer WO 94/10754, veröffentlicht am 11. Mai 1994, diskutiert. Die Anschlussflecken R0 bis R3, R/W, CE, CK, RST, C0 bis C2, D0 bis D7 und ihre diesbezüglichen Anschlussstifte (in 1 nicht gezeigt) sind speziell der Konfigurationsfunktion zugewiesen. Eine kommerziell erhältliche Einrichtung weist typischerweise eine größere Anzahl von Anschlussflecken sowohl für eine Konfiguration als auch eine Benutzerlogik auf, als in 1 gezeigt.
  • Der Konfigurationsspeicher 25 wird durch Adressierung einer Speicherzelle oder eines Speicherworts geladen, sowie dies in einem herkömmlichen RAM durchgeführt wird. Zeilen- und Spalten-Adressbusse 22 und 27 transportieren Adressensignale, die von Zeilen- und Spalten-Dekodern 21 und 26 dekodiert werden, und verbinden ein gewähltes Wort des Konfigurationsspeichers 25 mit dem Konfiguration-Datenbus 23, um gelesen oder geschrieben zu werden. Die Anschlussflecken D0 bis D7 sind mit dem Konfigurationsdatenbus 23 gekoppelt.
  • 2 zeigt die Beziehung zwischen den Adressen- und Datenbussen, den Zeilen- und Spalten-Dekodierungsstruktwen, den acht Bit-Treibern, die jedem Wort zugeordnet sind, und den Datenorten in dem Konfigurationsspeicherfeld 25. Derartige Strukturen sind in dem technischen Gebiet alt bekannt. Betty Prince diskutiert in "Semiconductor Memories© 1983, 1991 von John Wiley & Sons derartige Strukturen auf den Seiten 149–174.
  • In 1 ist auch eine Speicherladesteuereinheit 24 gezeigt. Die Steuereinheit 24 aktiviert Zeilen- und Spaltendekoder 21 und 26 im Ansprechen auf altbekannte Takt-, Chipaktivierungs-, und Rücksetzsignale von den Anschlussflecken CE, CK bzw. RST. Die Speichersteuereinheit 24 bestimmt im Ansprechen auf ein Lese/Schreib-Signal auf dem Anschlussflecken R/W, ob die Anschlussflecken D0 bis D7 eine Eingangskonfiguration zum Schreiben oder eine Ausgangskonfiguration zum Lesen des Datenbusses 23 aufweisen werden.
  • Wenn die Struktur der 1 während eines Betriebs rekonfiguriert oder teilweise rekonfiguriert werden soll, adressiert eine externe Einrichtung, wie ein Mikroprozessor, Abschnitte des Konfigurationsspeichers und lädt neue Daten an diese Stellen.
  • 3A zeigt die Beziehung zwischen Teilen der FPGA Benutzerlogik der 1, nämlich einen Anschlussflecken 16, den diesbezüglichen Anschlussflecken-Treiber 18, und einen Schalter 15 in der Benutzerlogik. In 3A sendet und empfängt der Schalter 15, der in 3A an der Ostkante des FPGA angeordnet ist, Signale zwischen der Benutzerlogik links und den externen Anschlussflecken 16 und dem Stift 17 rechts. Leitungen, die sich auf der linken Seite des Schalters 15 erstrecken, sind von drei unterschiedlichen Längen, wie mit deren nummerischer Darstellung angezeigt ist. Z. B. ist die Leitung E16B 16 Zellen lang und transportiert Signale in die Ostrichtung, die Leitung E4B ist vier Zellen lang in der Ostrichtung, und die Leitung EB ist eine Zelle lang in der Ostrichtung. Die Leitung WB ist eine Zelle lang nach Westen gehend.
  • Eine derartige Hierarchie von Leitungslängen ist in 3B gezeigt, wobei die Leitung 34 16 Zellen lang (nur teilweise gezeigt) nach Osten gehend ist, die Leitung 26 vier Zellen lang nach Osten gehend ist, die Leitung 22 eine Zelle lang nach Osten gehend ist und die Leitung 24 eine Zelle lang nach Westen gehend ist. Die Schalter 19 und 20 in dem inneren Kern der Benutzerlogik, die in 3B gezeigt ist, umfassen eine Vielzahl von Multiplexem, die jeweils durch Bits in dem Konfigurationsspeicher 25 (siehe 1) programmierbar sind, um ihre Eingangs- und Ausgangssignale zu verbinden, wie von einem Benutzer gewünscht. Dies wird mit näheren Einzelheiten in der PCT Patentanmeldung mit der Veröffentlichungsnummer WO 94/10754 diskutiert, die voranstehend erwähnt wurde.
  • 4 zeigt den internen Aufbau des Anschlussflecken-Treibers 80 und des diesbezüglichen Schalters der 3A. Wie in 4 gezeigt umfasst der Schalter 15 acht Multiplexer 41 bis 48, die jeweils eines der Ausgangssignale WB, W4B, W 16B, WA, W4A, W16A, EN und OUT bereitstellen. Eingangssignale zu diesen acht Multiplexern werden aus den nach Osten gehenden Eingangssignalen E16B, E4B, EB, E16A, E4A, EA und dem Anschlussflecken-Signal PADIN, das von dem Anschlussflecken-Treiber 18 bereitgestellt wird, gewählt.
  • In 4 ist auch gezeigt, dass der Anschlussflecken-Treiber 18 einen Tristate-Ausgangspuffer 78 (einen Ausgangspuffer mit drei Zuständen) zum Bereitstellen eines Ausgangssignals OUT an dem Anschlussflecken 16 unter der Steuerung eines Aktivierungssignals EN einschließt. Die Anstiegsrate (Schaltgeschwindigkeit; Slew-Rate) des Ausgangspuffers 78 ist ebenfalls durch den Benutzer über die Speicherzelle SLEW wählbar. Wenn der Anschlussflecken-Treiber 18 konfiguriert ist, um als ein Eingangs-Treiber zu dienen, wird EN gesetzt, um den Puffer 78 inaktiv zu machen. Für den Fall, dass der Chip in ein Paket eingebracht wird, bei dem kein Anschlussstift 17 verbunden ist, wird ein pullup-(hochzieh)-Steuertransistor TPUP durch die Speicherzelle PUP eingeschaltet, um den pullup-Widerstand RPUP mit dem Eingangsanschluss des Eingangspuffers 79 zu verbinden, so dass die Eingangsspannung nicht auf einen Zwischenzustand schweben und eine Energie ableiten wird.
  • In 4 werden gestrichelte Linien verwendet, um Konfigurationsspeicherzellen anzuzeigen, die Multiplexer und Transistoren in dem Schalter und dem Anschlussflecken-Treiber steuern. Die gestrichelten Linien legen nahe, dass die Konfigurationsspeicherzellen in dem Bild nicht sichtbar sind. Man kann sich die Speicherzellen als auf einer unteren Ebene liegend vorstellen, wie in Verbindung mit 1 voranstehend diskutiert. In einigen Fällen ist die Speicherzelle nicht direkt mit dem Multiplexer oder Transistor, wie gezeigt, verbunden, sondern ist z. B. über ein UND Gatter, welches typischerweise einen globalen Aktivierungseingang empfängt, verschaltet. Signale von den Speicherzellen, die den pullup-Transistor und die Anstiegsrate auf dem Ausgangspuffer steuern, sind typischerweise verschaltet und der Aktivierungs-Multiplexer 47 ist typischerweise steuerbar, um ein Abschalt-Ausgangssignal bereitzustellen, und zwar unabhängig von den Werten in seinen Konfigurationsspeicherzellen. Derartige Verschaltungsstrukturen sind nicht gezeigt, sind aber altbekannt.
  • Wie in 1 dargestellt, wird die gleiche Anschlussflecken-Treiberschaltung 18, die in 4 gezeigt ist, für Adressen- und Daten-Anschlussflecken verwendet, die auf dem Konfigurationsspeicher 25 zugreifen. Für Adressen-Anschlussflecken, da die Adressenleitungen nur eingegeben werden, wird die Aktivierungsleitung EN auf Masse gezogen und die OUT Leitung wird auf entweder ein Energiepotenzial oder Masse gezogen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung erlaubt, dass der gleiche Anschlussflecken für sowohl eine Konfiguration als auch eine Benutzer-Schnittstelle verwendet wird, macht eine teilweise dynamische Rekonfiguration besonders zweckdienlich, und bietet dem Benutzer leistungsfähige neue Wahlmöglichkeiten zum Steuern von Logikfunktionen von innerhalb des FPGA und neue Wahlmöglichkeiten zur Kopplung mit Strukturen außerhalb des FPGA. Sie erlaubt auch, dass der FPGA Chip mit Konfigurationsinformation entweder von parallelen Adressen- und Daten-Anschlussstiften oder von einem seriellen Daten-Anschlussstift geladen wird.
  • In Übereinstimmung mit der vorliegenden Erfindung ist in einem FPGA integrierten Schaltungschip ein programmierbarer Schalter zwischen den Anschlussstiften oder den Anschlussflecken des Chips und der internen Schaltungsanordnung des Chips angeordnet. Die interne Schaltungsanordnung umfasst eine Logik, auf die von einem Benutzer während eines Betriebs des FPGA zugegriffen wird, und einen Konfigurationsspeicher, der die Funktionen steuert, die von dem FPGA Chip ausgeführt werden. In der vorliegenden Erfindung nimmt der programmierbare Schalter auf das Hochfahren der Energie einen anfänglichen Zustand ein, um gewählte externe Anschlussstifte mit dem Konfigurationsspeicher so zu verbinden, dass der Konfigurationsspeicher geladen werden kann. Jedoch programmiert der Konfigurationsspeicher nicht nur die interne Schaltungsanordnung, auf die von dem Benutzer zugegriffen wird, sondern auch den programmierbaren Schalter selbst. Wenn die Konfiguration fortschreitet oder nachdem eine Konfiguration beendet ist, kann somit der programmierbare Schalter rekonfiguriert werden, um Signalleitungen der FPGA Benutzerlogik mit Leitungen zum Adressieren oder Steuern des Konfigurationsspeichers zu verbinden, die zu Anfang von externen Anschlussstiften geladen wurden.
  • Insbesondere kann ein programmierbarer Schalter, der zu Anfang konfiguriert wird, um seinen diesbezüglichen Anschlussflecken oder Anschlussflecken mit Konfigurations-Steuerleitungen, beispielsweise einer Chip-Aktivierungsleitung oder einer seriellen Dateneingabeleitung, zu verbinden, später konfiguriert werden, um ein intern erzeugtes Signal oder Signale mit der Leitung oder Leitungen zu verbinden und somit irgendein externes Signal außer Kraft zu setzen, welches mit dieser Leitung oder diesen Leitungen verbunden worden wäre.
  • Um sowohl eine parallele als auch eine serielle Konfiguration zu ermöglichen werden zusätzlich zu den Adressen- und Daten-Anschlussflecken, die über programmierbare Schalter mit internen Adressen- und Datenleitungen verbunden werden können, zusätzliche Anschlussstifte konstruiert, um zwischen einer seriellen und parallelen Ladung zu wählen und die serielle Ladung zu steuern. Intern in dem FPGA Chip ist eine seriell-zu-parallel Schnittstellenstruktur vorgesehen, die einen seriellen Bitstrom, der sowohl Konfigurationsdaten als auch eine Adresse für die Daten umfasst, empfangen und die Daten an die adressierte Stelle anlegen kann, genauso wie wenn die Daten an externe Daten-Anschlussstifte angelegt worden wären. Der programmierbare Schalter kann durch den seriellen Bitstrom konfiguriert werden, um die Quelle oder die Zielstelle von diesen seriellen Bitstrom-Steuersignalen zu ändern. Z. B. kann einer der zusätzlichen Anschlussstifte, der zum Steuern einer seriellen Ladung ausgelegt ist, ein "Warte" Anschlussstift sein, der zu Anfang konfiguriert wird, um ein externes Wartesignal zu empfangen, und später konfiguriert wird, um das Wartesignal mit dem intern erzeugten Signal außer Kraft zu setzen, wenn der serielle Bitstrom abgeschlossen ist.
  • Als ein Beispiel davon, was mit der vorliegenden Erfindung eneicht werden kann, könnte ein Benutzer in der Benutzerlogik, die während einer anfänglichen Konfiguration geladen wird, einen Adressendekoder einschließen, der Mikroprozessor-Lese/Schreib-Zyklen dekodiert und diesbezügliche Signale zum Wählen des bestimmten integrierten Schaltungschips dekodiert, wodurch die Notwendigkeit für getrennte Chips, um Adressen zu dekodieren, entfernt wird. Dieses Beispiel einer Anwendung wird nachstehend mit Einzelheiten diskutiert.
  • Wenn, als ein anderes Beispiel, Steuersignale an bestimmten Anschlussstiften nicht immer benötigt werden, können dann diese Anschlussstifte verwendet werden, um andere Benutzersignale in das Feld (Array) zu leiten. Wenn Anschlussstifte in dieser Weise verwendet werden, werden geeignete konstante Werte auf die Leitungen gelegt, die diese Steuersignale führen.
  • In der vorliegenden Erfindung stellt eine einfache Programmierlogik-Struktur eine Allzweck-Programmierschnittstelle bereit. Wenn eine komplexe Programmierlogik von dem Benutzer benötigt wird, kann die einfache Programmierlogik-Struktur durch eine Benutzerlogik in dem Kern der Einrichtung ergänzt werden, auf die durch eine Rekonfigurierung des programmierbaren Schalters zugegriffen wird.
  • Um diese neue Flexibilität zu erreichen werden ein Satz von Schaltern hergestellt, um die Anschlussstifte des Chips mit der Programmierlogik des Chips und auch mit der Kernlogik des Chips, wie von dem Benutzer gewählt, zu verbinden. In einer Ausführungsform werden sämtliche externen Anschlussstifte außer drei mit programmierbaren Schaltern verbunden, um diese Option bereitzustellen. Beim Einschalten (Hochfahren der Energie) des Chips erscheint eine logische Null in jeder Zelle des Konfigurationsspeichers, was jeden programmierbaren Schalter veranlasst seinen Anschlussflecken mit der Programmierlogik zu verbinden, die den Konfigurationsspeicher programmiert, so dass die Programmierlogik Anweisungen von einer externen Quelle empfangen und eine Programmierung der Kernlogik des Chips steuern kann. Da unter den Funktionen, die in das FPGA hinein programmiert werden können, Verbindungen zu und eine Konfiguration von diesen programmierbaren Schalter sind-, kann die Konfiguration dieser programmierbaren Schalter von ihren anfänglichen Konfigurationen geändert werden. Somit werden leistungsfähige neue Optionen den Benutzer durch diese relativ einfache Änderung in der FPGA Chip-Architektur zur Verfügung gestellt.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • In den Zeichnungen zeigen:
  • 1 ein FPGA Chip und die Beziehungen zwischen externen Anschlussflecken, den FPGA Benutzerlogik-Strukturen und dem Konfigurationsspeicher, der die Benutzerlogik konfiguriert;
  • 2 die Zeilen- und Spalten-Adressenstruktur der Schaltung der 1;
  • 3A die Beziehung zwischen den Teilen der FPGA Benutzerlogik der 1, nämlich einen Anschlussflecken, den diesbezüglichen Anschlussflecken-Treiber, und einen Schalter in der Benutzerlogik;
  • 3B einen Abschnitt einer Benutzerlogik, die mit der Erfindung verwendet werden kann, wobei eine hierarchische Zwischenverbindungs-Struktur dargestellt ist;
  • 4 die intere Struktur des Anschlussflecken-Treibers und den diesbezüglichen Schalter der 3A;
  • 5 eine strukturelle Beziehung zwischen einem Anschlussflecken, einem Anschlussflecken-Treiber, einem Abschnitt der FPGA Kernlogik, und dem FPGA Konfigurationsspeicher in Übereinstimmung mit der Erfindung, wobei dargestellt ist, dass der zugrunde liegende Konfigurationsspeicher die Anschlussflecken-Treiber, den programmierbaren Schalter und die Benutzerlogik steuert;
  • 6A die Beziehung zwischen Teilen der FPGA Benutzerlogik der Erfindung, nämlich einem Anschlussflecken an der Nordkante des FPGA, dem diesbezüglichen Anschlussflecken-Treiben, einem programmierbaren Schalter in der Benutzerlogik, und Signale, auf die von dem programmierbaren Schalter zugegriffen werden;
  • 6B die Beziehung zwischen einem Anschlussflecken an der Ostkante des FPGA, dem diesbezüglichen Anschlussflecken-Treiben, einem programmierbaren Schalter in der Benutzerlogik, und Signalen, auf die von dem programmierbaren Schalter zugegriffen wird;
  • 6C die Beziehung zwischen Signalen, die von den programmierbaren Schaltern der 6A und 6B erzeugt werden, und den Signalleitungen in der Speicher-Steuerstruktur die diese Signale führen;
  • 7 eine erste Ausführungsform des Anschlussflecken-Treibers und Schalters der vorliegenden Erfindung;
  • 8 eine zweite Ausführungsform des programmierbaren Schalters und Anschlussflecken-Treibers der vorliegenden Erfindung;
  • 9A eine Logikzelle des Typs, der in 3B verwendet werden kann und der mit dem Schalter der vorliegenden Erfindung verwendet werden kann;
  • 9B einen vier-mal-vier-Zellenblock mit dem Muster von Verzweigungsleitungen, die die M Ausgangsleitungen von dem Multiplexer 57 der 9A mit Schaltern verbinden, die den vier-mal-vier-Zellenblock umgeben;
  • 9C die Anordnung von ME Signalen, die an den Schaltern 734 an der Ostkante des Chips bereitgestellt werden;
  • 10 eine neuartige Funktionseinheit, die in der Logikzelle der 9A arbeiten kann;
  • 11 einen Anschlussflecken-freien Schalter und dessen Verbindungen mit einem diesbezüglichen Schalter und einem Anschlussflecken des Typs, der in 7 gezeigt ist;
  • 12 einen Aufbau, der ein globales Taktsignal von einem externen Anschlussflecken an einem programmierbaren Schalter bereitstellt und ferner das globale Taktsignal an einer Durchschalteiwichtung (Gatting-Einrichtung) bereitstellt;
  • 13A bis 13D Schalter, die in einer Ausführungsform an Stellen (Orten) überall in dem Benutzerlogik-Aufbau bereitgestellt werden;
  • 14 eine Zustandsmaschinen-Darstellung des Betriebs der seriellen Schnittstellen-Struktur, mit der die Erfindung verwendet werden kann;
  • 15 ein Timing-Diagramm (ein Zeitablaufdiagramm), wobei das globale Taktsignal GClk, das SEClk Signal bei der Hälfte der globalen Frequenz, und das SEData Signal für die serielle Schnittstelle der 14 dargestellt ist;
  • 16 mehrere FPGAs, die mit einer gedruckten Schaltungsplatine verbunden sind, so dass sie aus einem einzelnen seriellen PROM konfiguriert werden können;
  • 17 eine Anwendung des programmierbaren Schalters der Erfindung, um ein Chip-Aktivierungssignal zu modifizieren; und
  • 18A und 18B zwei Aufbauten zum Validieren von Konfigurationsdaten.
  • AUSFÜHRLICHE BESCHREIBUNG VON EINIGEN AUSFÜHRUNGSFORMEN DER ERFINDUNG
  • 5 zeigt eine strukturelle Beziehung zwischen Anschlussflecken, einem programmierbaren Schalter, der FPGA Benutzerlogik, und dem Konfigurationsspeicher in Übereinstimmung mit der Erfindung. Der programmierbare Schalter 34 kann sowohl auf den Konfigurationsspeicher 38 als auch auf die Benutzerlogik 39 zugreifen. Der programmierbare Schalter 34 kann Daten an die und von der Benutzerlogik 39 senden und empfangen, wie mit dem bidirektionalen Bus 35 angedeutet, und kann auch Daten an den und von dem Konfigurationsspeicher 38 senden und empfangen, wie mit dem bidirektionalen Bus 36 angedeutet. 5 zeigt, dass der zugrunde liegende Konfigurationsspeicher 38 die Anschlussflecken-Treiber 33, den programmierbaren Schalter 34 und die Benutzerlogik 39 steuert. Die Anschlussflecken 31 wird die Anschlussflecken-Treiber 33 sind mit dem programmieren Schalter 34 verbunden. Verbindungen, die der programmierbare Schalter 34 herstellen kann, schließen ein:
    • 1. Die Anlegung eines Eingangssignals von einem Anschlussflecken 31 an eine Leitung des Busses 35 zu der FPGA Benutzerlogik 39, wodurch einem Benutzer erlaubt wird, ein Eingangssignal an die FPGA Benutzerlogik anzulegen;
    • 2. Die Anlegung eines Eingangssignals von einem Anschlussflecken 31 an eine Leitung des Busses 36 als eine Steuerleitung (Adressen, Daten, Chip-Aktivierung, Lesen/Schreiben, Takt, etc., in Abhängigkeit davon, welcher Anschlussflecken verwendet wird) zu dem Konfigurationsspeicher 38, wodurch externen Signalen erlaubt wird die Konfiguration der Benutzerlogik 39 zu ändern;
    • 3. Anlegen eines Eingangssignals von einem Anschlussflecken 31 an eine Leitung des Busses 36 als eine Steuerleitung (Adressen, Daten, Chip-Aktivierung, Lesen/Schreiben, etc.) zu dem Konfigurationsspeicher 38, wodurch externen Signalen erlaubt wird, die Konfiguration des programmierbaren Schalters selbst zu ändern;
    • 4. Aufnahme eines Benutzerlogik-Ausgangssignals, das an eine Leitung des Busses 35 angelegt wird, und Anlegen davon über einen der Anschlussflecken-Treiber 33 an einen Anschlussflecken 31, wodurch ein Chip-Ausgabesignal bereitgestellt wird;
    • 5. Lesen eines Werts in dem Konfigurationsspeicher 38 auf eine Leitung des Busses 36 und dann Anlegen davon an einen Eingangsanschluss in der FPGA Benutzerlogik 39 über den Bus 35;
    • 6. Lesen eines Werts in dem Konfigurationsspeicher 38 auf eine Leitung des Busses 36 und Anlegen davon auf eine Leitung 32 zu einem Anschlussflecken 31;
    • 7. Verbinden von internen Signalleitungen (Wort, Bit) 40, die den Konfigurationsspeicher 38 steuern, über den Bus 35 zu der Benutzerlogik 39;
    • 8. Aufnehmen eines Benutzerlogik-Ausgangssignals, das an eine Leitung des Busses 35 angelegt wird, und Anlegen davon als eines von mehreren Steuersignalen zum Schreiben an eine Speicherstelle in dem Konfigurationsspeicher 38, wodurch eine Benutzerlogik 39 die FPGA Konfiguration ändert;
    • 9. Ausführen eines zweistufigen Prozesses einer Anlegung eines externen Signals über den Bus 35 an die Benutzerlogik 39, die eine Logikfunktion dieses Signals an eine andere Leitung des Busses 35 anlegt, und Verwenden des Ausgangs von dieser Logikfunktion, um den Konfigurationsspeicher 38 zu steuern; und
    • 10. Anlegen eines Ausgangssignals von dem Konfigurationsspeicher 38 über den Bus 36 an die Benutzerlogik 39, die das Signal modifiziert, und dann Anlegen des modifizierten Signals, welches von dem Bus 36 genommen wird, über einen Anschlussflecken-Treiber 33 an einen Ausgangs-Anschlussflecken 31.
  • Die obige Liste ist nicht erschöpfend. Viele andere Optionen werden einem FPGA Benutzer durch den neuartigen Schalter 34 angeboten.
  • 6A zeigt mit näheren Einzelheiten die Beziehung, die durch die Erfindung zwischen Teilen des FPGA bereitgestellt wird, nämlich einem Anschlussflecken an der Nordkante des FPGA, dem diesbezüglichen Anschlussflecken-Treiber 33, einem programmierbaren Schalter 634-N in der Benutzerlogik, und Signalen, auf die von dem programmierbaren Schalter 634-N zugegriffen wird. In der Ausführungsform der 6A ist der Schalter 634-N einer von vielen Schaltern, die den Schalter 34 der 5 bilden. Jeder stellt eine Verbindung zu einem getrennten Anschlussflecken 16 her. Der Anschlussflecken-Treiber 33 wird von drei Steuersignalen Pulldown (Herunterziehen), Pullup (Heraufziehen), und SLEW (Ansteigen), die von drei Konfigurationsspeicherzellen abgeleitet werden, in einer Weise ähnlich zu dem Aufbau der 4 gesteuert. Der Schalter 634-N an der Nordkante des Chips empfängt drei Eingangssignale, die von drei Leitungen abgeleitet werden, die den Konfigurationsspeicher steuern. Die Signale ENB in einer Ausführungsform können verwendet werden, um ein Datensignal auf einer Datenleitung bereitzustellen, die an den Konfigurationsspeicher schreibt, und das Signal OUTB kann von dieser gleichen Datenleitung abgeleitet werden. Das ENB Signal (welches den Schalter 634-N aktiviert (anschaltet), um das Signal OUTB weiterzuleiten, wie nachstehend in Verbindung mit 6C gezeigt werden wird), wird von einer Steuereinheit zum Steuern des Konfigurationsspeichers im Ansprechen auf altbekannte Signale wie Takt-, Lese/Schreib-, und Chip-Aktivierungs-Signalen, abgeleitet. Das WORD (WORT) Signal wird von einer Wortleitung in dem Konfigurationsspeicher abgeleitet. In dieser Ausführungsform wird auf Wortleitungen, die sich vertikal durch den Chip erstrecken, durch Schalter an den Nord- und Südkanten des Chips zugegriffen. Signalleitungen, die sich von dem Schalter 634-N nach unten erstrecken, stellen eine Verbindung zu einem Benutzerlogikfeld (Benutzer-Logikarray) her, wie in 3B gezeigt. Die Ausführungsform der 6A unterscheidet sich von derjenigen der 3B dahingegehend, dass sie eine vierte Hierarchieebene mit Verzweigungsleitungen N64 und S64 einschließt, die 64 Zellen lang sind. Zusätzlich weist eine Leitung MM eine Länge zwischen ein und vier Zellen auf, und stellt eine Verbindung zu einem gewählten Punkt in einem Block mit vier Zellen (vier Zellen-Block) her, wie in Verbindung mit den 9A und 9B diskutiert werden wird.
  • 6B zeigt die Beziehung zwischen einem Anschlussflecken an der Ostkante des FPGA, dem diesbezüglichen Anschlussflecken-Treiber, einem programmierbaren Schalter in der Benutzerlogik, und Signalen, auf die von dem programmierbaren Schalter zugegriffen wird. In dem Schalter 634-E der 6B schließen Signale von der Programmierstruktur eine Bitleitung anstelle einer Wortleitung ein.
  • 6C zeigt Verbindungen zu der Programmierstruktur der Signale INB, ENB, OUTB, WORD, und BIT, die in den 6A und 6B dargestellt wurden. Viele Signale müssen zusammenarbeiten. Der Konfigurationsspeicher 38 der 6C umfasst Wörter mit 32 Bit, wobei auf jedes Wort durch eine Zeilen- und Spaltenadresse zugegriffen wird. Die Adressenleitungen A0 bis A5 adressieren Zeilen und die Adressenleitungen A6 bis A10 adressieren Spalten. Jede Kombination von Zeilen- und Spaltenadressen wählt ein 32-Bit Wort. Wenn ein Wort gewählt wird, dann werden die 32 Bits von diesem Wort aus den oder an die Datenleitungen D0 bis D31 gelesen oder geschrieben. Jedes Bit des adressierten Worts wird von einer anderen Leitung OUTB durch einen anderen Schalter 634 gelesen oder an eine entsprechende Leitung INB durch den entsprechenden Schalter 634 geschrieben.
  • Obwohl die 6A bis 6C Ausführungsformen zeigen, bei denen ein Schalter 634 einem Anschlussflecken 16 entspricht, schließen andere Ausführungsformen des Schalters 34 Leitungen ein, die Verbindungen von internen Signalen zu mehr als einem Anschlussflecken herstellen. Mehrere Schalter 634 in 6C empfangen das gleiche ENB Eingangssignal, und leiten entsprechende EN Signale, für jeden Anschlussflecken, zum Aktivieren von Anschlussflecken-Treiber-Ausgangssignalen OUT ab.
  • ERSTE AUFÜHRUNGSFORM, 7
  • 7 zeigt eine Ausführungsform des Anschlussflecken-Treibers und einen Schalter der vorliegenden Erfindung. In dieser Ausführungsform sind eine Vielzahl von Schaltern 634 als Teil des programmierbaren Schalters 34 der 5B vorgesehen, und zwar ein Schalter 634 für jede Zeile oder Spalte von Zellen der Benutzerlogik (für Zellen, siehe 3B, Zellen 12). Jeder Schalter 634 weist die Fähigkeit auf ein Benutzerlogiksignal oder ein Steuerlogiksignal an oder von einem Anschlussflecken 16 zu verzweigen. Die Steuerlogiksignale schließen eine Chip-Aktivierung, Lesen/Schreiben, Adressen, und Daten ein. Dies bedeutet, dass die Anschlussstifte und Anschlussflecken, die diese Steuersignale während einer Konfiguration nach dem Hochfahren der Energie bereitstellen, nicht notwendigerweise für eine Adressierung und Ladung von Konfigurationsdaten verwendet werden, sondern auch verwendet werden können, um eine Kopplung mit der Benutzerlogik herzustellen. Genauso kann ein Signal, das von der Benutzerlogik erzeugt wird, an einen der Steuereingänge des Konfigurationsspeichers angelegt werden.
  • Wenn man 7 betrachtet stellen Signalleitungen auf der linken Seite eine Verbindung des programmierbaren Schalters 634 zu der Benutzerlogik her und bilden somit einen Teil des Busses 35 (siehe 5). Die Signalleitungen an dem oberen Teil der Figur stellen eine Verbindung der Steuerleitungen für eine Adressierung, ein Lesen, und Schreiben von dem und an den Konfigurationsspeicher bereit und bilden somit einen Teil des Busses 36 in 5. In den Schalter 634 erstreckt sich von dem Bus 36 ein Aktivierungssignal ENB, welches von der Steuerlogik zum Laden des Konfigurationsspeichers 38 (siehe 6C) erzeugt wird, und dieses modifiziert ein Benutzerausgangssignal GUTEN über ein NAND Gatter 101, um das Aktivierungssignal EN zu erzeugen, das den Ausgangspuffer 78 steuert. Da das GUTEN Signal durch die Benutzerlogik erzeugt wird, beeinflusst sowohl die Konfigurationssteuerlogik als auch die Logik des Benutzers den Wert des EN Signal.
  • Wie in 7 gezeigt, wird ein Ausgangsdatensignal OUTB auf dem Bus 36 an den Multiplexer 98 angelegt. Ein Benutzerlogik-Ausgangssignal UOUT wird ebenfalls an den Multiplexer 98 angelegt. Wenn das Ausgangs-Aktivierungssignal GUTEN, wie optional durch den Multiplexer 97 invertiert, logisch Null ist, wird das Benutzer-Ausgangssignal UOUT durch den Multiplexer 98 als ein Signal OUT über den Puffer 78 an den Anschlussflecken 16 angelegt. Somit führt der Anschlussflecken 16 ein Signal, das von der Benutzerlogik 39 erzeugt wird. Wenn das optional invertierte GUTEN Signal von dem Multiplexer 97 logisch Eins ist, falls das Steuerlogik-Aktivierungssignal (Steuerlogik-Enable-Signal) ENB niedrig ist (wodurch das NAND Gatter 101 veranlasst wird ein EN Signal mit einer logischen Eins zu erzeugen), dann wird das Konfigurationsdaten-Ausgangssignal OUTB an den Anschlussflecken 16 angelegt. Wenn das Steuerlogik-Aktivierungssignal ENB hoch ist, empfängt der Anschlussflecken 16 eine hohe Impedanz, falls PUP und PDN beide Null sind und empfängt eine Konstante, wenn PUP oder PDN hoch ist.
  • Die Eingangsleitung IN von dem Anschlussflecken-Treiber 633 kann sowohl an die Benutzerlogik über die Multiplexer 73 und 99 als auch an die Konfigurationsspeicher-Steuerstruktur über den Multiplexer 74 angelegt werden. Diese drei Multiplexer 73, 74, und 99 werden von Bits in dem Konfigurationsspeicher gesteuert (wie mit den gestrichelten Linien um die Speicherzellen 82, 83, und 84 herum vorgeschlagen). Der Multiplexer 99 kann entweder eine verzögerte Version des Signals oder eine durchgelassene Version des Signals an die Leitung DELIN anlegen, wie von der Konfigurationsspeicherzelle 84 gewählt. Der Multiplexer 73 wählt zwischen einem Signal DELIN und einem Benutzerlogik-erzeugten Signal USID von dem Bus 35 und sendet das gewählte Signal UIN auf den Bus 35 an die Benutzerlogik. Der Schalter 634 kann das extern abgeleitete Signal IN auch an den Bus 36 zur Verwendung als ein Konfigurationsspeicher-Steuersignal anlegen, wenn die Konfigurationsspeicherzelle 83 programmiert worden ist, um dieses IN Signal weiterzuleiten. Alternativ kann die Speicherzelle 83 eines der Benutzerlogiksignale E16 veranlassen ein Steuersignal für den Konfigurationsspeicher zu sein.
  • ZWEITE AUSFÜHRUNGSFORM, 810
  • Die Ausführungsform der 8 weist die Fähigkeit auf mit mehreren Signalen zum Zugreifen auf den Konfigurationsspeicher über die Busse 36 und 40, sowie zum Zugreifen auf mehrere Verzweigungsleitungen (Routing-Leitungen) in der Benutzerlogik über den Bus 35 in Wechselwirkung zu treten. Die Ausführungsform der 8 sitzt an der Ostkante einer FPGA Logikstruktur, die vier Ebenen einer Zwischenverbindungshierarchie aufweist. Multiplexer 39 bis 96 steuern nach Westen gehende Leitungen W, W4, W16 und W64 an, die Längen aufweisen, die mit ihren Suffixen angedeutet werden, und führen Funktionen ähnlich wie der Multiplexer 73 der 7 aus. Die nach Osten gehenden Leitungen E, E4, E16 und E64 stellen nach Osten gehende Signale auf den Leitungen mit den angegebenen Längen bereit. Das nach Osten gehende Signal ME weist eine andere Länge auf, und zwar in einer Ausführungsform ein bis vier Zellen langes (was nachstehend unter Bezugnahme auf die 9A und 9B diskutiert werden wird). Die Multiplexer der 8, die die gleiche Kennzeichnung wie die Multiplexer der 7 aufweisen, führen die gleiche Funktion aus.
  • Der Bus 40 erlaubt ferner eine Wechselwirkung zwischen der Konfigurationsspeicher-Steuerstruktur und der Benutzerlogik. Der Bus 40 lässt sich am besten unter Bezugnahme auf die 9A und 10 verstehen. Wie für Speicherstrukturen alt bekannt ist erstrecken sich eine Vielzahl von Bitleitungen senkrecht zu einer Vielzahl von Wortleitungen zum Adressieren, Lesen und Schreiben eines Felds von Speicherzellen. In 10 erstecken sich die Wortleitungen vertikal, wobei eine davon, die Leitung WORD, gezeigt ist. Die Bitleitungen erstrecken sich horizontal, wobei vier von diesen BIT0, BIT0, BIT1 und BIT2 gezeigt sind. Die Bit- und Wortleitungen adressieren nicht nur Konfigurationsspeicherzellen, wie die Multiplexersteuerungs-Speicherzellen, die mit gestrichelten Linien angedeutet werden, sondern diese Bit- und Wortleitungen werden in der Struktur der 10 auch verwendet, um eine alternative Einrichtung zum Lesen und Schreiben von den und an die Flip-Flops 111 bereitzustellen, die ein Teil der Funktionseinheit FU in der bevorzugten Zelle der 9A sind.
  • 9A zeigt eine der Zellen 12, die in 3B dargestellt sind. Drei Eingangsmultiplexer 58, 60 und 62 stellen ein gewähltes Eingangssignal X1, X2 und X3 an der Funktionseinheit FU bereit. Vier Ausgangsmultiplexer 50, 52, 54 und 56 stellen Ausgangssignale bereit, die jeweils nach Norden, Süden, Osten und Westen gehen. Diese Ausgangssignale werden von Eingangssignalen von Norden, Süden, Osten und Westen abgeleitet, wie in 9A gezeigt, und auch von dem Signal F, das das Ausgangssignal von der Funktionseinheit FU ist. Der Multiplexer 57 stellt als ein Ausgangssignal das X2 und X3 Signal bereit und erlaubt somit einem Signal, welches auf einer der Länge-Eins oder Länge-Vier Leitungen hereinkommt, als ein Ausgangssignal M bereitgestellt zu werden.
  • 9B zeigt einen vier-mal-vier Zellenblock und zeigt das Muster von Verzweigungsleitungen, die die M Ausgangssignale von dem Multiplexer 57 in einer einzelnen Zelle der 9A mit Schaltern verbinden, die den vier-mal-vier Zellenblock umgeben. Die Zielstelle des M Ausgangssignals der 9A hängt davon ab, wo die Zelle 12 innerhalb des vier-mal-vier Zellenblocks positioniert ist. Wie in 9B gezeigt wird das M Ausgangssignal von der Zelle 12-12 an der oberen linken Ecke der vier-mal-vier Zellengruppe an Schaltern im Osten und Westen der vier-mal-vier Zellengruppe bereitgestellt. Das M Ausgangssignal von der Zelle 12-12 wird an Schaltern im Norden und Westen der vier-mal-vier Zellengruppe bereitgestellt. Das M Ausgangssignal 12-13 wird an Schaltern im Norden und Osten der vier- mal-vier Zellengruppe bereitgestellt. Das M Ausgangssignal von der Zelle 12-14 wird an den Schaltern im Norden und Süden der vier-mal-vier Zellengruppe bereitgestellt. In der zweiten Zeile wird das M Ausgangssignal von der Zelle 12-21 an Schaltern im Norden und Westen; von der Zelle 12-12 im Osten und Westen; von der Zelle 12-23 im Norden und Süden; und von der Zelle 12-24 im Norden und Osten bereitgestellt. Ähnliche Sätze von Verbindungen werden für die dritten und vierten Zeilen bereitgestellt, wie gezeigt. Somit werden in dem Kern des Chips vier M Signale an jedem Schalter bereitgestellt. Diese sind zusätzlich zu den Signalen, die in 3B dargestellt sind.
  • Die Anordnung von Verbindungsleitungen erlaubt einem Bus, eine Ecke von vertikalen oder horizontalen Drähten zu drehen oder diesen zu erlauben umgeordnet oder aufgesplittet zu werden und zwar unter Verwendung der M Signale von den Multiplexern 97 der 9A. Wie sich der 9A entnehmen lässt empfängt der Multiplexer 57 die X2 und X3 Eingangssignale, die jeweils von Länge-Eins oder Länge-Vier Signalen von irgendeiner der vier Richtungen sein können. Z. B. könnten in 9B die Zellen 12-11, 12-22, 12-33, und 12-44 Signale aus dem Süden ableiten und diese Signale an den Osten oder Westen richten. Genauso könnten Zellen 12-41, 12-32, 12-23, und 12-14 Signale von Schaltern im Westen ableiten und diese Signale nach Norden oder Süden richten. Zellen, die nicht auf der Diagonalen des vier-mal-vier Blocks sind, können Signale in zwei rechtwinklige Richtungen herausführen. Diese Drehungen können ohne Verbrauchen der Länge-Eins Drähte durchgeführt werden. Diese Kombination von Verbindungen fügt nur zwei horizontale Metallleitungen pro Zeile von Zellen und zwei vertikale Metallleitungen pro Spalte von Zellen hinzu, so dass sehr wenig Metallfläche aufgebraucht wird. Ferner benötigt die in 9B gezeigte Struktur nur einen zwei-auf-eins Multiplexer in jeder Zelle und verbraucht somit sehr wenig Fläche. Die Verzweigungsflexibilität von einer Hinzufügung des Multiplexers 57 und dessen diesbezüglichen Ausgangsleitungen erfordert nur eine zusätzliche Speicherzelle in dem Konfigurationsspeicher. Der Multiplexer 57 verwendet Signale X2 und X3, die von den Multiplexer 60 und 62 erzeugt werden, erneut. Viele Zellenfunktionen benötigen nicht sowohl den X2 als auch den X3 Multiplexer, einige Zellen weisen nicht verwendete Funktionseinheiten auf, und eine Funktionseinheit könnte bereits die gewünschte Eingangsleitung zum Ansteuern von X2 oder X3 gewählt haben. Somit besteht eine gute Möglichkeit, dass ein X2 oder X3 Multiplexer-Ausgangssignal, welches von dem Multiplexer 57 verwendet werden kann, mit keiner Beeinträchtigung von anderen Teilen der Konstruktion des Benutzers bereitgestellt wird. Die Verzweigungs-Flexibilität aus einer Hinzufügung des Multiplexers 57 und seiner diesbezüglichen Ausgangsleitungen trägt auch zu der Verzweigungsfähigkeit von Konstruktionen mit einer Zufallslogik (Random Logic) bei.
  • An der Kante des Chips würden nur zwei Signale an dem Schalter 734 bereitgestellt werden, da keine Logikzellen zwischen dem Schalter 734 und den Anschlussflecken existieren. Jedoch wird in der Ausführungsform der 812 nur ein M Signal an dem Schalter 734 bereitgestellt.
  • Die 9C zeigt die Anordnung von ME Signalen, die an Schaltern 734 an der Ostkante des Chips bereitgestellt werden. Sie sind in 8 (Ostkante des Chips) als Signale ME dargestellt. Viele andere Kombinationen sind natürlich in anderen Ausführungsformen möglich.
  • REGISTER-SCHUTZSTRUKTUR
  • Zurückkehrend zur 10 erzielt ein anderes Merkmal der Funktionseinheit FU einen wichtigen Vorteil. Wie voranstehend diskutiert werden Eingangssignale X1, X2 und X3 durch eine Benutzerlogik erzeugt. Die Leitungen WORD, BIT0, BIT0, BIT1 und BIT2 sind Teil der Konfigurationsspeicher-Programmierstruktur zum Lesen und Schreiben der Speicherzellen in dem Konfigurationsspeicher und diese Leitungen können auch verwendet werden, um Register 111 zu lesen und zu beschreiben, die ein Teil der Benutzerlogik sind. Ein Register-Schutzmultiplexer 104 kann programmiert werden, um zu wählen, ob ein Signal von der Benutzerlogik oder ein Signal von der Struktur, die den Konfigurationsspeicher steuert, zum Schreiben an das Register 111 zugelassen wird. Wenn ein Register-Schutzbit RP in dem Konfigurationsspeicher logisch Null ist, wird der Kombinationsausgang von dem Multiplexer 103 an den Multiplexer 105 weitergeleitet und kann in das Register 111 im Ansprechen auf ein Taktsignal CLK geladen werden. Wenn das Register-Schutzbit RP eine logische Eins ist, dann wird das Q Ausgangssignal von dem Register 111 als Eingang zu dem Multiplexer 105 vorgesehen, der den D Eingang an dem Register 111 bereitgestellt. Somit kann die Benutzerlogik, die das Ausgangssignal von dem Multiplexer 103 erzeugt, den Wert in dem Register 111 nicht ändern. Sogar das Lösch-Signal (Clear Signal) CLR wird diejenigen Register, die ihr Register-Schutzbit RP gesetzt haben, nicht löschen. In diesem Modus können Konfigurationsspeicher-Zugriffssignale auf den Leitungen WORD, BIT0, BIT0, BIT1 und BIT2 sowohl zum Lesen an das als auch zum Schreiben von dem Register 111 verwendet werden. Somit kann eine externe CPU einen Zugriff auf diese Register aufweisen, während andere Abschnitte des FPGA andere Funktionen ausführen und Register gerade mit einem globalen Löschsignal gelöscht werden. Der Multiplexer 109, der sowohl die kombinatorischen als auch sequenziellen Ausgänge von der Funktionseinheit FU empfängt, erlaubt einer externen CPU oder einer anderen Einrichtung auf den kombinatorischen Ausgang des Multiplexers 103 sowie den Ausgang des Registers 111 zuzugreifen.
  • Eine Verbindung der WORD, BIT0, BIT0, BIT1 und BIT2 Leitungen, um Signale durch die programmierbaren Schalter an der Benutzerlogik bereitzustellen, erlaubt der Benutzerlogik Registerzugriffe zu erfassen, die durch die Konfigurationsspeicher-Adressierungsstruktur gemacht werden, und daraufhin zu reagieren.
  • REGISTERSCHUTZ MIT EINER SCHNAPPSCHUSS-FUNKTION
  • In einigen Anwendungen ist es wünschenswert einen Schnappschuss des Zustands eines FPGA zu nehmen, der sowohl eine Konfigurationsinformation als auch den Zustand von Registern umfasst, diesen Schnappschuss in einem externen Speicher zu speichern, das FPGA zum Ausführen einer Aufgabe neu zu konfigurieren, und dann diesen Schnappschuss des Zustands des FPGAs von dem externen Speicher wieder herzustellen, so dass die FPGA Logik von dort starten kann, wo sie aufgehört hat. Dies ist analog zu einer 'Einlagerung' ('swapping in') und einer 'Auslagerung' ('swapping out'), einem Prozess auf einem herkömmlichen Computer, der ein Multiprozess-Betriebssystem aufweist. Somit kann der Ausdruck 'Auslagerung' zum Speichern des Schnappschusses verwendet werden, und 'Einlagern' für eine Wiederherstellung davon. Um diese Schnappschuss-Funktion ermöglichen zu können, wenn ein Register-Schutzmultiplexer 104 in jeder Zelle vorhanden ist, ist es erforderlich das globale Taktsignal (GClk) an der Benutzerlogik stoppen zu können, ohne den Takt für die Prozessorschnittstelle zu stoppen. Zusätzlich müssen sämtliche Register in der Benutzerlogik von GClk getaktet werden und es dürfen keine Register oder Haltespeicher, die aus Gattern gebaut sind, in der Benutzerlogik vorhanden sein. Es ist erforderlich GClk an der Benutzerlogik abzuschalten, weil viele Prozessorzyklen benötigt werden, um den gesamten Einrichtungszustand zu lesen. Falls GClk nicht abgeschaltet werden würde, würde sich eine gewisse Zustandsinformation während des Leseprozesses ändern und die gespeicherten Werte würden einen Einzeltaktzyklus-'Schnappschuss' der Benutzerregisterzustände nicht reflektieren. Lesevorgänge auf Register und Konfigurationsspeicherstellen können mit dem Benutzerlogik-Takt abgeschaltet stattfinden.
  • Somit wird eine durchgeschaltete Version des globalen Takts UGClk zum Ansteuern der Benutzerlogik vorgesehen. Ein Starten und Stoppen von UGClk an dem Feld (Array) muss sauber durchgeführt werden, so dass keine unechten (spurious) kurzen Impulse erzeugt werden. Schaltungen, um dies zu tun, sind in dem technischen Gebiet altbekannt und werden hier nicht beschrieben. In 12 ist ein globales Taktsignal GClk an einer Durchschaltstruktur 129 vorgesehen, die ein globales Benutzertaktsignal UGClk erzeugt, wenn das STOP Signal nicht bereitgestellt wird. Dieses Signal UGClk ist in den 13A und 13C als eine wählbare Quelle für das Taktsignal CLK gezeigt, das Benutzerregister ansteuert, die in 10 gezeigt sind. Die folgenden Schritte verwirklichen die Schnappschuss-Funktion:
  • AUSLAGERUNG
    • 1. Abschalten von UGClk an dem Feld.
    • 2. Lesen von Konfigurations- und Zustandsinformation über die Konfigurationsspeicher-Schnittstellenstruktur. Der Abschnitt der Konfigurationsspeicherschnittstelle zum Lesen von Zustandsinformation an die Benutzerlogikzelle oder von dieser ist in 10 gezeigt.
  • EINLAGERUNG
    • 1. Alle RP = TRUE setzen (konfigurieren des Speichers, um sämtliche Register zu schützen). Ein Setzen von sämtlichen RP = TRUE kann mit einem Schreibzyklus für den gesamten Chip oder mit einer kleinen Anzahl von Schreibzyklen für ein gegebenes Untergebiet des Chips durch Verwenden der Wild Card-Adressierungsfunktion, die in der PCT Anmeldung WO 94/15754 beschrieben ist, durchgeführt werden. UGClk kann aktiviert (eingeschaltet) oder deaktiviert (abgeschaltet) werden, weil die Werte in den Registern überschrieben werden sollen.
    • 2. Einschalten von UGClk. UGClk muss gerade laufen, um Schreibvorgänge an die Register zu ermöglichen, da Werte in Register bei der ansteigenden Flanke von CLK, die von UGClk angeleitet wird, eingetaktet werden.
    • 3. Laden des Registerzustands über die Konfigurations-Speicherschnittstelle. Obwohl UGClk gerade läuft, wird der Registerzustand durch Benutzerlogiksignale nicht überschrieben werden, weil der Registerschutz gesetzt ist. Obwohl zahlreiche Taktzyklen benötigt werden können, um die Register zu laden, werden die Register somit schließlich die richtigen Werte für die ausgelagerten (swappt out) Zustände halten.
    • 4. Abschalten von UGClk. Schreibvorgänge an dem Konfigurationsspeicher erfordern nicht, dass UGClk an dem Feld gerade läuft. Ein Abschalten von UGClk stellt sicher, dass Registerzustände nicht verändert werden, obwohl dann, wenn die richtige Konfiguration geladen wird, viele Register einen Registerschutz aufweisen werden, der abgeschaltet ist.
    • 5. Programmieren des Konfigurationsspeichers.
    • 6. Einschalten von UGClk.
  • Die Logik in dem FPGA startet mit der voranstehend ausgelagerten Konfiguration und dem ausgelagerten Zustand.
  • SCHALTER OHNE ANSCHLUSSFLECKEN
  • 11 zeigt zwei programmierbare Schalter, die Signale von einem einzelnen Anschlussflecken 16 richten. In 11 ist ein Anschlussflecken-loser Schalter 634-N an der Nordkante des Chips und ein programmierbarer Schalter 634-E mit einem Anschlussflecken 16 ist an der Ostkante. Der Chip ist so angeordnet, dass die Leitungen INB, OUTB, und ENB des Schalters 634-E mit den Leitungen IN, OUT, und EN des Schalters 634-N verbunden sind. Somit kann der Schalter 634-E verwendet werden, um Signale entweder an seine eigenen Leitungen der Benutzerlogik oder an den Schalter 634-N zu richten, der Signale wiederum entweder an seine eigenen Leitungen der Benutzerlogik oder an jeweilige Leitungen INB, OUTB und ENB richtet.
  • Um einen Verzweigungsstau zu vermeiden, muss Vorsicht walten gelassen werden, um Anschlussflecken-lose Schalter um den Chip herum zu verteilen und die Programmieradressen- und Daten-Signale um den Chip herum zu verteilen. Bei einer Implementierung gibt es 64 programmierbare Schalter auf jeder Kante des Chips, 64 Anschlussflecken auf den nördlichen und südlichen Kanten, und 57 Anschlussflecken an den östlichen und westlichen Kanten des Chips. Es gibt einen 32-Bit Datenbus und einen 16-Bit Adressenbus. Zusätzlich empfängt oder erzeugt der Chip 14 Steuersignale wie folgt:
    Lesen/Schreiben (read/write)
    Chip-Aktivierung (chip enable)
    Rücksetzung (reset)
    Laden im seriellen Modus (serial mode load)
    Warten (wait)
    Globaler Takt (global clock)
    Globales Löschen (global clear)
    Erstes globales Signal (first global signal)
    Zweites globales Signal (second global signal)
    Ausgangs-Aktivierung (output enable)
    Serieller Takt (serial clock)
    Serielles Löschen (serial clear)
    Serielle Daten (serial data)
    Serielle Aktivierung (serial enable)
  • An der Westkante des Chips empfängt jeder zweite Schalter ein Datenbussignal. An der Ostkante des Chips empfangen sechzehn Schalter, die vorzugsweise nicht benachtbart sind, Adressensignale. An der Südkante empfangen vierzehn der Schalter Steuersignale. Die sieben Schalter auf der Ostkante und die sieben Schalter auf der Westkante, die keine zugehörigen Anschlussflecken aufweisen, sind mit den sekundären Toren der Schalter auf der Südkante, deren jeweilige sekundäre Tore frei sind, verbunden. In dieser Ausführungsform weisen sämtliche Nordschalter, 32 Westschalter, 48 Ostschalter, und 36 Südschalter sekundäre Tore auf, die nicht verwendet werden.
  • Die seriellen und wartemäßigen Steuersignale, die voranstehend angegeben wurden, unterstützen einen Modus zum Laden von Konfigurationsdaten von einem seriellen Bitstrom und machen den Speicheradressierbaren Chip, der voranstehend beschrieben wurde, kompatibel mit einem Bitstrom-Verfahren einer Ladung, wie von der XC17000 Familie von PROMs mit serieller Konfiguration, erhältlich von Xilinx, Inc., unterstützt wird. Derartige Ladeverfahren werden auf den Seiten 2–231 bis 2–238 des Xilinx Data Book, 1994, erhältlich von Xilinx, Inc., 2100 Logic Drive, San Jose, CA 95124 diskutiert.
  • ANSCHLUSSFLECKEN, DIE NUR EINE EINGABE VORNEHMEN
  • Die Adressen-Anschlussflecken, d. h. diejenigen Anschlussflecken, die zu Anfang als Adressen-Anschlussflecken konfiguriert werden, empfangen Ausgangssignale von der Programmierstruktur auf dem Bus 36 (8 oder 5) nicht, da Adressen nur eingegeben werden. Es kann einfacher sein sämtliche programmierbaren Schalter identisch auszulegen, beispielsweise hinsichtlich der Bereitstellung von OUTB und ENB Leitungen mit bidirektionalen Anschlussflecken, wie Daten-Anschlussflecken. Wenn die Leitungen in dem Bus 36 nur eingegeben werden, werden die OUTB und ENB Leitungen des Schalters 734 mit einer Energie oder Masse verbunden und nichtschwebend gelassen, so dass dann, wenn der Anschlussflecken programmiert wird, um eine Adresse oder ein anderer Eingabe-Eingangsflecken zu sein, der Ausgangspuffer 78 immer abgeschaltet wird.
  • KRITISCHE SIGNALE WIE EINE RÜCKSETZUNG UND EINE PROGRAMMIERUNG EINES TAKTS
  • Bestimmte Signale, auf die ein Zugriff von außen für eine Wiederherstellung aus unerwünschten Zuständen möglich sein muss, können unter Umständen nicht von der Programmierlogik trennbar sein. Das Rücksetzsignal ist ein Beispiel eines derartigen Signals. Für derartige Signale wird der programmierbare Schalter noch in einer programmierbaren Weise das Signal von dem Anschlussflecken an die Benutzerlogik verbunden. Wenn Anschlussflecken-Treiber für derartige Signale vorgesehen sind und die gleiche Konstruktion wie Anschlussflecken-Treiber aufweisen, die voranstehend beschrieben wurden, können die EN und OUT Anschlüsse von diesen Anschlussflecken-Treibern mit Masse (oder mit einer Energie, wenn geeignet) verbunden werden, so dass die Ausgangs-Treiber permanent abgeschaltet sind.
  • Diese Struktur entfernt eine gewisse Flexibilität des programierbaren Schalters, stellt aber sicher, dass auf die Funktion, wie beispielsweise Rücksetzung (reset) oder Takt (clock), immer von der externen Steuerung zugegriffen werden kann.
  • 12 zeigt eine Struktur, die ein globales Taktsignal GClk von einem externen Anschlussflecken an dem programmierbaren Schalter 34 bereitgestellt und ferner das globale Taktsignal GClk an einer Durchschalt-Einrichtung 129 bereitstellt, die wie von einem STOP Signal gesteuert, das von der Konfigurationsspeicher-Steuerstruktur bereitgestellt wird, entweder das globale Taktsignal UGClk des Benutzers kippt oder dieses Taktsignal stoppt, während das externe globale Taktsignal GClk eine Kippung fortsetzt. Die Durchschalt-Einrichtung 129 empfängt vorzugsweise zusätzliche Signale, um sicherzustellen, dass keine unechten (spurious) Impulse auf das globale Benutzer-Taktsignal UGClk angewendet werden.
  • Derartige Schaltungen sind bekannt und werden hier nicht beschrieben. 12 zeigt eine Ausführungsform, die das Rücksetzsignal RST direkt an den Konfigurationsspeicher bereitstellt, ohne die Option von dem programmierbaren Schalter 34 anderswohin gerichtet zu werden. 12 zeigt auch eine Ausführungsform, bei der ein externes Ausgabeaktivierungs-Steuersignal OE Anschlussflecken-Treiber 33 direkt steuert, ohne über den programmierbaren Schalter 34 programmierbar zu sein.
  • BENUTZERLOGIK-SCHALTER KÖNNEN CLK UND CLR ERZEUGEN
  • Die 13A bis 13D zeigen Schalter, die in einer Ausführungsform an Orten (Stellen) überall in der Benutzerlogik-Struktur vorgesehen sind. 13A zeigt einen Nord-Süd-Schalter 118NS auf einer Nord-Süd-Grenze zwischen 4 × 4 Gruppen von Logikzellen. Der Schalter 118NS ist ähnlich zu dem Schalter 19 in 3B. Schalter 118NS bilden horizontale Grenzen zwischen 4 × 4 Gruppen von Zellen. Die 13B zeigt einen Ost/West-Schalter 118EW. Die Schalter 118EW bilden Ost/West-Grenzen zwischen 4 × 4 Gruppen von Zellen und verzweigen Signale mit unterschiedlichen Längen, wie gezeigt. In 13 ist ein Nord/Süd-Schalter 120NS dargestellt. Die Schalter 120NS bilden horizontale Grenzen zwischen 16 × 16 Blöcken von Zellen. In ähnlicher Weise bilden Schalter 120EB, wobei einer davon in 13D dargestellt ist, vertikale Grenzen zwischen 16 × 16 Blöcken von Zellen.
  • In einer bevorzugten Ausführungsform sind diejenigen Abschnitte der Schalter der 13A bis 13D, so dargestellt, dass sie Ausgangssignale mit gestrichelten Linien aufweisen, tatsächlich als Teil der benachbarten Logikzellen implementiert, wie in 9A gezeigt, und ersetzen geeignete Multiplexer in diesen benachbarten Zellen.
  • Zusätzlich zu der Verzweigung von Signalen mit unterschiedlichen Längen erzeugen diese Schalter bestimmte Steuersignale. In 13A erzeugt der Schalter 118NS ein Taktsignal CLK, das den Takteingang CLK von Benutzerregistern ansteuert, wie in 10 gezeigt, und entweder von dem globalen Löschsignal GCLR oder von dem durchgeschalteten globalen Benutzer-Taktsignal UGClk, das in 12 dargestellt ist, abgeleitet werden kann. Das Taktsignal CLK von einem Schalter wird auch als das Signal ClkIn an dem nächsten Schalter direkt im Norden bereitgestellt. Vom Benutzer erzeugte Signale können als Taktsignale über den NOut Eingang zu dem CLK Multiplexer verwendet werden, und ein Taktsignal, das in einem 4 × 4 Block von Zellen erzeugt wird, kann verwendet werden, um einen Takteingang in einer Zelle an dem Norden des 4 × 4 Blocks anzusteuern.
  • 13C zeigt einen Schalter 120NS an einer horizontalen Grenze eines 16 × 16 Blocks von Zellen. Zusätzlich zu der Verzweigung von Multiplexern und des CLK Multiplexers, wie voranstehend diskutiert, umfasst der Schalter 120NS einen Löschungs-Multiplexer, der das Löschsignal CRL erzeugt. Dieses Signal ist in 10 so dargestellt, dass es mit dem Register-Schutzsignal in dem AND Gatter 107 verschaltet (verknüpft) wird, um den Rücksetzeingang A des Registers 111 in einer Zelle der Benutzerlogik anzusteuern. Wie in 13C gezeigt, kann das Löschsignal CRL von einem globalen Löschsignal GClr, von dem Löschsignal, das in dem Block über ClrIn erzeugt wird, von verschiedenen Verzweigungssignalen, und von dem globalen Taktsignal UGClk abgeleitet werden.
  • Einige Multiplexer in den 13A bis 13D sind so dargestellt, dass sie ein zweites optionales Ausgangssignal bereitstellen. Z. B stellt in 13A der SOut Multiplexer auch ein optinales SCOut Signal bereit und der NOut Multiplexer stellt ein optionales NCOut Signal bereit. Die 13B, 13C und 13D zeigen auch Multiplexer mit einem optionalen zweiten Ausgangssignal, das eine "C" Kennzeichnung trägt. Dieser C Ausgang entspricht dem Ausgang, der von dem Nachbarmultiplexer der Zelle in 9A kommt. Z. B. wird in 13A das NCOut Signal von den vier Signalen F, N, E und W gewählt. Von diesen drei Wählbits zum Steuern des NOut Multiplexers mit acht Eingängen, steuern die zwei niedrigstwertigsten Bits auch den NCout Multiplexer mit vier Eingängen. Somit wird NOut nicht identisch zu NCout sein, wenn der NOut Multiplexer gesetzt ist, um einen von F, N, E oder W zu wählen. Die gleiche Anordnung existiert für die anderen Multiplexer, die in den 13A bis 13D so dargestellt sind, dass sie einen zweiten Ausgang aufweisen. Der PS4 Eingang zu dem NOut Multiplexer wird von dem S4 Signal zu der Zelle nördlich von der Zelle, in der der NOut Multiplexer gebildet wird (nicht dem S4 Out Signal von dem dargestellten Schalter) genommen. In jedem Fall zeigt die Voranstellung (Präfix) "P" an, dass das Eingangssignal von einer vorangehenden Zelle (von der Richtung des Signalflusses stromaufwärts) kommt.
  • Die 13A bis 13D zeigen nur eine Ausführungsform der Erfindung. Natürlich können viele alternative Variationen für diese Schalter bereitgestellt werden.
  • SERIELLE SCHNITTSTELLEN-STRUKTUR
  • In der Ausführungsform der 812 kann der FPGA Chip durch eine serielle Schnittstelle sowie durch eine Adressierungsstruktur geladen werden. Die Struktur mit der seriellen Schnittstelle macht den FPGA mit einem adressierbaren Konfigurationsspeicher kompatibel mit seriellen PROMs, die von Xilinx, Inc. erhältlich sind. Der Aufbau mit der seriellen Schnittstelle erlaubt dem FPGA auch die meisten Anschlussstifte für eine Benutzer-Eingabe/Ausgabe zu verwenden, während ein Abschnitt (Teil) des FPGA gerade durch wenige Anschlussstifte konfiguriert wird.
  • Der Aufbau (die Struktur) der seriellen Schnittstelle stellt ein Verfahren zum Konfigurieren des Konfigurationsspeichers bereit, das unabhängig von dem CE, Lese/Schreib-, Adressen-, und Daten-Anschlussstiften ist und deshalb in zweckdienlicher Weise verwendet werden kann, um Programmierinformation von einer Schaltungsanordnung zu laden, die diese Anschlussstifte beeinflusst.
  • Sechs Signale auf sechs Anschlussstiften erlauben die Verwendung der seriellen Schnittstelle. Die sechs Signale sind:
    Serial (seriell) wählt zwischen seriellen und parallelen (adressierbaren Moden der Schnittstelle (0 = seriell, 1 = parallel).
    Wait (Warten) steuert Übergänge zwischen Zuständen in dem seriellen Modus (0 = Ladung fortsetzen, 1 = Pause). Das FPGA kann auch einen Ausgangs-Anschlussstift verwenden, der von einer Benutzerlogik gesteuert wird, um ein Wait (Warten) Ausgangssignal zum Steuern von Slave-FPGAs bereitzustellen.
    SEReset Ausgangssignal setzt den seriellen PROM Adressenzähler zurück.
    SECE verwendet von dem Master FPGA, um einen seriellen PROM Ausgang zu aktivieren.
    SEClk Ausgang von dem FPGA taktet das serielle PROM und Slave-FPGAs, soweit vorhanden.
    SEData serielle Konfigurationsdaten zum Konfigurieren des FPGA.
  • Das erste Signal Serial wählt zwischen dem Laden der Konfigurationsdaten über Adressen- und Datenleitungen, wie voranstehend diskutiert, und dem Laden eines Bitstroms durch einen einzelnen Anschlussstift.
  • ZUSTANDSMASCHINEN-DARSTELLUNG DER SERIELLEN SCHNITTSTELLE
  • 14 zeigt eine Zustandsmaschinen-Darstellung des Betriebs der seriellen Schnittstellen-Struktur. Der Zustand 0 tritt nach einem globalen FPGA Rücksetzsignal oder auf ein Hochfahren der Energie des Chips auf.
  • Wenn Serial auf 1 gesetzt worden ist, ist der Betrieb in dem parallelen Modus (Zustand 1), bei dem Adressen- und Daten-Anschlussstifte verwendet werden, um Konfigurationsdaten zu laden, wie nachstehend in Verbindung mit 17 und anderen Figuren diskutiert werden wird.
  • Wenn Serial auf 0 gesetzt worden ist, ist der Betrieb in dem seriellen Modus und Daten werden als ein serieller Bitstrom geladen. In einer Ausführungsform umfasst der Bitstrom sowohl Adressen- als auch Daten-Information, so dass Daten in irgendeiner Reihefolge geladen werden können, so dass eine Teilrekonfiguration erreicht werden kann, und so dass Wild Card- und Masken-Register, die ermöglichen, dass mehr als eine Adresse mit den gleichen Daten geladen werden, oder ermöglichen, dass weniger als ein vollständiges Wort geladen wird (in der PCT Patentanmeldung WO 94/10754 diskutiert, die voranstehend erwähnt wurde), ebenfalls verwendet werden können.
  • Wenn Serial 0 ist und der Wait Anschlussstift eine 0 führt, bereitet sich das FPGA vor, um mit seriellen Daten geladen zu werden. Im Ansprechen auf Serial = 0 und Wait = 0, werden sämtliche Ausgangspuffer 78 (8) in einen Hochimpledanz-Zustand gebracht und Anschlussflecken, die für einen Benutzer für eine parallele Adresse, parallele Daten und Benutzerlogiksignale verfügbar sind, werden auf einen hohen Zustand gezogen (in 8 wird der Transistor TUP eingeschaltet). Dies wird durch ein globales Signal erreicht, das die Speicherzellen-Signale außer Kraft setzt und bereitgestellt bleibt, bis die Einrichtung konfiguriert ist, was mit einem dekodierten Bitmuster in einem Register von Konfigurations-Speicherzellen angedeutet wird, wie nachstehend weiter beschrieben. Im Ansprechen auf Serial = 0 und Wait = 0, steuert das FPGA SEReset auf einen hohen Zustand, dann SECE auf einen niedrigen Zustand, und beginnt dann SEClk zu kippen.
  • Eine Ansteuerung von SEReset auf einen hohen Zustand wird von einem Zustand 2 in 14 dargestellt. SEReset bleibt für eine ausreichende Anzahl von Zyklen des FPGA globalen Takts auf einem hohen Zustand, um das serielle PROM zurückzusetzen. SEReset wird dann abgeschaltet.
  • Das Ansteuern von SECE auf niedrig wird durch einen Zustand 5 dargestellt. SECE bleibt niedrig, wobei SEClk noch nicht für wenigstens eine Anzahl von Taktzyklen gekippt worden ist, die ausreichen, um die Ausbreitungsverzögerung zwischen dem Zeitpunkt, zu dem das FPGA das SECE Signal bereitstellt, und dem Zeitpunkt, zu dem sich die gültigen Daten von dem seriellen PROM zurück an das FPGA ausbreiten, in einer Ausführungsform 11 Zyklen des globalen FPGA Takts. Die Anzahl hängt von der schnellsten erwarteten globalen Taktfrequenz ab.
  • Im Zustand 6 beginnt SEClk zu kippen. SEClk kann irgendein Teil der globalen FPGA Taktfrequenz sein, z. B. 1/16 oder 1/2 der globalen Taktfrequenz, und kann einstellbar sein. Das FPGA beobachtet die seriellen Daten hinsichtlich eines Synchronisationsmusters, z. B. fünf Nullen gefolgt von einer Eins, oder mehreren Einsen gefolgt von einer Null. Um eine Synchronisation sicherzustellen kann der Datenstrom z. B. sieben Einsen gefolgt von einer Null einschließen, wohingegen das FPGA drei Einsen gefolgt von einer Null überwacht.
  • Wenn dieses Synchronisationsmuster empfangen worden ist geht die Einrichtung in den Zustand 3 und beginnt serielle Daten SEData zu laden. Serielle Daten werden in Adressen/Daten-Paaren geladen. Nachdem ein Adressen/Daten-Paar in das FPGA hinein verschoben worden ist, wird die Adresse in dem FPGA gewählt, und die Daten werden in diese Adresse hinein geladen. Dies ist der gleiche Betrieb, der auftritt, wenn ein paralleler Schreibvorgang in einem parallelen Modus auftritt. Die Bits können an der ansteigenden Flanke von SEClk herein verschoben werden.
  • SERIELLES TIMING
  • 15 zeigt ein Timing-Diagramm (Zeitablauf-Diagramm), das das globale Taktsignal GClk, das SECIk Signal bei der halben globalen Frequenz, und das SEData Signal für die serielle Schnittstelle von 14 dargestellt. Das Synchronisations-Bit tritt am Beginn von SEData auf, und ihm folgt ein erstes Datenwort mit acht Bits und einer Adresse von 16 Bits. Die serielle Schnittstellen-Struktur ermöglicht, dass serielle Daten an irgendeine Konfigurations-Speicherzelle innerhalb des FPGA geschrieben werden. Dies bedeutet, dass ein Wort geladen werden kann, welches die Datenwortgröße oder die SEClk Rate für nachfolgende Daten ändert. In der Ausführungsform der 15 ist die Datenwortgröße zu Anfang 8 Bits und die SEClk Rate wird zu Anfang auf 1/16 der globalen Taktrate GClk gesetzt.
  • Das erste 8-Bit Wort, das geladen wird, kann an den Konfigurationsspeicher adressiert werden, der die SEClk Rate steuert, und kann diesen modifizieren, um eine schnellere Rate zu sein. In einer Ausführungsform beginnt die SEClk Rate bei 1/16 der GClk Rate und kann auf beispielsweise 1/2 der globalen Taktrate erhöht werden. Nachfolgende Worte werden bei dieser Rate geladen. Das nächste Datenwort kann an die Konfigurationsspeicherzellen adressiert werden, die die Datenwortlänge steuern und die Datenwortlänge auf 32 Bits modifizieren. Nachfolgende Wörter in dem Datenstrom werden dann intern als 32-Bit Wörter geladen und geschrieben. Dies führt zum Laden von seriellen Daten bei der schnellsten möglichen Rate. In einer Ausführungsform, die in 15 dargestellt ist, ist die anfängliche SEClk Rate 1/2 der GClk Rate und beginnt bei dieser Rate. Jedoch wird die Länge des Datenworts von 8 Bits nach dem ersten Wort auf 32 Bits umgeschaltet, und dies ist die Länge des zweiten Datenworts, wie gezeigt.
  • Wenn Daten geladen worden sind, geht das Wait Signal auf einen hohen Zustand. Dies kann in zweierlei Weisen auftreten. Als erstes kann das externe Wait Signal auf einen hohen Zustand gebracht werden und kann somit das entsprechende interne Wait Signal veranlassen, auf einen hohen Zustand zu gehen. Zweitens kann ein Daten-geladenes Bit an oder in der Nähe von dem Ende des Adressen/Daten-Paars den programmierbaren Schalter zwischen dem Wait Anschlussflecken und dem Wait internen Signal so konfigurieren, dass das Wait interne Signal auf einen hohen Zustand geht.
  • Wenn alternativ Serial auf einen hohen Zustand geht, dann bewegt sich die Einrichtung auf den Zustand 1 und arbeitet weiter in einem parallelen Modus. Wenn Wait auf einen hohen Zustand geht, dann bewegt sie das FPGA auf den Zustand 4 und bleibt dort, bis das Wait Signal abgeschaltet wird, oder das FPGA in einen parallelen Modus verschoben wird. Wegen dieses Wait Zustands, kann die Struktur teilweise geladen werden, irgendeinen Betrieb ausführen, der von dem Benutzer gewünscht wird, dann weiter mit verschiedenen Konfigurationsdaten geladen werden, einen anderen Betrieb ausführen, und so weiter. SECE bleibt auf einem niedrigen Zustand (bereitgestellt) und SEClk kippt (toggelt) in die Zustände 3, 4 und 6.
  • RÜCKSETZUNG UND INITIALISIERUNG
  • In einer Ausführungsform, wenn das FPGA hochgefahren wird (die Energie eingeschaltet wird) oder zurückgesetzt wird, wird der gesamte Konfigurationsspeicher gelöscht (und deshalb wird die Register-Schutzfunktion abgeschaltet), und die Register 111 innerhalb jeder Logikzelle werden gelöscht. Sämtliche I/O (Eingangs/Ausgangs) Anschlussflecken werden abgeschaltet (Ausgangspuffer 78 werden abgeschaltet und Pull Up-(Heraufzieh) und Pull Down-(Herunterziehungs) Transistoren PUP und PDN werden abgeschaltet).
  • Beim Hochfahren der Energie oder nach einem Rücksetzimpuls muss der Steuerspeicher auf einen bekannten Wert eingestellt werden, der einen niedrigen Energieverbrauch sicherstellt und den programmierbaren Schalter so einstellt, dass externe Anschlussflecken mit der Konfigurationsspeicher-Adressierungsstruktur gekoppelt werden, um die anfängliche Einrichtungskonfiguration zu ermöglichen. Vorzugsweise werden die Zellenmultiplexer-Dekodierungsverfahren so gewählt, dass eine Kopplung mit dem Konfigurationsspeicher-Adressierungsaufbau durch Schreiben von 0 an sämtliche Konfigurations-Speicherzellen erreicht wird. Um die Möglichkeit eines hohen Energieverbrauchs, verursacht durch Zufallswerte in dem Konfigurationsspeicher, die für einige Zeit bestehen, zu vermeiden, ist es wünschenswert, dass dieser anfängliche Löschbetrieb asynchron arbeitet und nicht von einem externen Takt abhängt. Eine Löschung von sämtlichen Konfigurations-Speicherzellen kann durch Halten von sämtlichen Bitleitungen auf 0, sämtlichen Bitstab-Leitungen auf 1 und sämtlichen Wortleitungen auf 1 erreicht werden, so dass 0 in sämtliche Konfigurations-Speicherzellen gleichzeitig eingeschrieben wird. Diese Technik hat ein Hauptproblem: In der bevorzugten Ausführungsform der Erfindung gibt es mehr als 200 Konfigurations-Speicherzellen pro Bitleitung. Theoretisch könnten all diese Konfigurations-Speicherzellen '1' beim Hochfahren der Energie oder dann, wenn Reset (Rücksetzung) angewendet wird, halten. In diesem Fall müssten die Bitleitungspuffer jedoch 200 Konfigurations-Speicherzellen parallel überwinden. Dies würde unpraktisch große Bitleitungs-Puffer erfordern. Um dieses Problem zu vermeiden können die Wild Card-Register, die in der WO 94/10754 beschrieben sind, verwendet werden, und zwar in Kombination mit festen Verzögerungselementen, um die Wortleitungen über eine Zeitperiode einzuschalten. Zu Anfang wird ein Wild Card-Bit gesetzt und zwei Konfigurations-Speicherzellen werden beschrieben. Nach einer Zeitperiode (z. B. 50 ns) wird das zweite Wild Card-Bit gesetzt: Vier Konfigurations-Speicherzellen werden nun gewählt, wobei von zwei bekannt ist, dass sie als 0 sind, da sie vorher beschrieben wurden. Dies bedeutet, dass Bitleitungs-Puffer eine sehr geringe Last aufweisen – in dem schlechtesten Fall zwei Konfigurations-Speicherzellen heraufgezogen und zwei heruntergezogen – die Puffer müssen nur die Balance 'antippen'. Nach 50 ns wird das nächste Wild Card-Bit gesetzt und nun werden acht Konfigurations-Speicherzellen gewählt wobei von vier bekannt ist, dass sie 0 sind. Wiederum muss der Bitleitungs-Treiber nur die Balance antippen – er muss nicht acht Konfigurations-Speicherzellen gleichzeitig für den entgegengesetzten Zustand ansteuern. Nach 50 ns wird ein anderes Spalten-Wild Card-Bit gesetzt, bis sämtliche Wortleitungen auf einem hohen Zustand sind und der Chip gelöscht ist. Zu keiner Stufe müssen die Bitleitungs-Puffer mehr als zwei Konfigurations-Speicherzellen gleichzeitig umschalten (bzw. flippen).
  • Nachdem die Rücksetzung abgeschlossen ist, tritt dann eine Initialisierungssequenz auf:
    • 1) Sämtliche Steuerregister werden gelöscht, um sämtliche Zeilen- und Spalten-Wild Card Funktionen abzuschalten (für nähere Einzelheiten sei auf die WO 94/10754 verwiesen). Das globale Taktsignal CLK, das die Register 111 (10) in den Zellen taktet, wird abgeschaltet. Eingangspuffer 79 (8) werden gesetzt, um TTL Logik Schwellwerte zu akzeptieren. Die Datenbus-Breite (2), WORD N wird auf acht Bits gesetzt und die acht Datenbus-Bits werden an sämtliche acht adressierten Register angelegt. Der serielle Konfigurationstakt SEClk wird auf 1/16 der FPGA globalen Taktfrequenz gesetzt.
    • 2) Funktionseinheiten FU innerhalb der Zellen 12 (9A) werden von Multiplexern 109 konfiguriert (10), um den Q Ausgang von Registern 11 bereitzustellen. Da sämtliche Konfigurationsspeicherwerte Null sind, ist das Register-Schutzmerkmal (die Register-Schutzfunktion) abgeschaltet. Da der Takt abgeschaltet ist, geben sämtliche Funktionseinheiten eine konstante Null aus.
    • 3) Sämtliche Multiplexer 50, 52, 54, 56 in den Zellen 12 (9a) stellen die Ausgabe der Funktionseinheit FU bereit und geben deshalb alle eine konstante Null aus.
    • 4) Mit Ausnahme der oberen Zeile von Zellen wählen sämtliche Multiplexer X1, X2, X3 in den Zellen 12 den N Eingang, der eine konstante Null ist.
    • 5) Multiplexer 57 wählen den X3 Ausgang, der eine konstante Null ist.
    • 6) Schalter innerhalb des Felds (Array) wählen jeweils einen Eingang, der eine konstante Null ist.
    • 7) Ein globales Löschen wird von der Initialisierungslogik bereitgestellt.
  • BEISPIELANWENDUNG DER SERIELLEN SCHNITTSTELLE, 16
  • In der in 16 gezeigten Anordnung sind mehrere FPGAs mit einer gedruckten Schaltungsplatine so verbunden, dass sie von einem einzelnen seriellen PROM konfiguriert werden können. Wenn die Energie an der Platine hochgefahren wird oder die FPGA Chips zurückgesetzt werden, tritt die obige Initialisierungssequenz auf. Nachdem diese Initialisierungssequenz abgeschlossen ist, kann die folgende Sequenz von Schritten ausgeführt werden, um den Chip zu konfigurieren.
    • 1) Der Master-FPGA Chip geht in den Zustand 2 über, da Wait = 0 und Serial = 0 ist.
    • 2) Die Slave-FPGA-Chips gehen in den Zustand 4 über, da Serial = 0 und Wait = 1 ist.
    • 3) Der Master geht in den Zustand 2 über und setzt das serielle PROM zurück. Die Slaves warten in dem Zustand 4.
    • 4) Der Master geht in den Zustand 5 über und aktiviert das serielle PROM.
    • 5) Der Master geht in den Zustand 6 über und wartet auf ein Synchronisationsmuster.
    • 6) Der Master geht in den Zustand 3 über und beginnt das Laden von Daten.
    • 7) Das vorletzte Datenwort, welches geladen werden soll modifiziert den Konfigurationsspeicher, der den programmierbaren Schalter 34 des Wait Anschlussstifts auf dem Master FPGA steuert, so dass der interne Wert des Wait Signals auf einen hohen Zustand geht. Ein weiteres Wort wird nach diesem Schreibvorgang an den Konfigurationsspeicher geladen. Dieses letzte Wort, das in den Master FPGA geladen wird, steuert den Benutzer-I/O-Anschlussstift auf einen hohen Zustand an, der wiederum den Wait Eingang des Slave-FPGA 1 auf einen niedrigen Zustand bringt, was das Slave-FPGA 1 veranlasst, auf einen Zustand 6 überzugehen.
    • 8) Der Master geht in den Zustand 4 über, steuert aber SEClk und SECE so an, dass die Slaves geladen werden. Im Zustand 6 wartet das Slave-FPGA 1 auf ein Synchronisationsmuster.
    • 9) Wenn das Slave-FPGA 1 ein Synchronisationsmuster empfängt geht es auf einen Zustand 3 und beginnt das Laden von Daten.
    • 10) Wie zuvor veranlasst das vorletzte Datenwort, dass der Wert des Wait Signals auf einen hohen Zustand geht. Wie zuvor wird ein weiteres Wort nach diesem Schreibvorgang an den Konfigurationsspeicher geladen. Das letzte Wort, das in das Master-FPGA geladen wird, steuert den Benutzer-UO-Anschlussstift auf einen hohen Zustand, der wiederrum den Wait Eingang des Slave-FPGA 2 auf einen niedrigen Zustand ansteuert, was das Slave-FPGA 2 veranlasst in einen Zustand 6 überzugehen.
    • 11) Die Schritte 8–10 werden wiederholt, bis das letzte Slave-FPGA in der Kette erreicht wird.
    • 12) Das letzte Slave-FPGA kann einfach auf einen parallelen Modus (Zustand 1) zurückkehren und den Master in dem Zustand 4 belassen. Wenn der Master ebenfalls auf den parallelen Modus zurückgeführt werden soll, muss der letzte Slave den programmierbaren Schalter, der die Serial Eingangsleitung des Masters ansteuert, veranlassen in einen hohen Zustand zu gehen. Es gibt mehrere Vorgehensweisen, um dies durchzuführen. Eine Vorgehensweise ist, dass ein I/O Anschlussstift des letzten Slave-FPGA mit einem Anschlussstift des Master-FPGA verbunden wird, und der programmierbare Schalter, der mit diesem Anschlussstift verbunden ist, das Signal anweist die Serial Eingangsleitung des Masters auf einen hohen Zustand anzusteuern.
    • 13) Wenn schließlich die Serial Eingangsleitung auf einem hohen Zustand ist, dann geht schließlich der Master-FPGA in einen Zustand 1 über, stoppt SEClk und schaltet SECE ab.
  • BEISPIELANWENDUNG DES PROGRAMMIERBAREN SCHALTERS, 17
  • 17 zeigt eine Beispielanwendung, bei der der Benutzer die programmierbaren Schalter der Erfindung verwenden kann. In diesem Beispiel wünscht der Benutzer ein Typ-Aktivierungssignal CE (Chip Enable-Signal) so zu modifizieren, dass der FPGA Chip auf das Chip-Aktivierungssignal CE nur dann reagiert, wenn die Adressenleitungen A16 bis A19 in einem hohen Zustand sind. Diese Beispielanwendung könnte durch die FPGA Strukturen des Standes der Technik nicht so leicht erreicht werden. Tatsächlich würde dies typischerweise erfordern, dass ein PAL Chip auf der Platine mit dem FPGA bereitgestellt wird, um das Chip-Aktivierungssignal zu dekodieren, bevor es an dem FPGA Chip bereitgestellt wird. Mit der vorliegenden Erfindung könnte diese Funktion innerhalb des FPGA Chips erreicht werden.
  • Diese Anwendung wird nun unter Verwendung sowohl der 17 als auch 8 erläutert. Wenn man 17 betrachtet, lädt der Benutzer Bits in den Konfigurationsspeicher 38, um die Benutzerlogik 39 des FPGA zu veranlassen AND Gatter 14 zu bilden. Der Benutzer lädt auch Konfigurationsbits, um zu bewirken, dass das CE Signal an das AND Gatter 1 verzweigt wird und die A16 bis A19 Signale an AND Gatter 3 und 4 verzweigt werden, wie dargestellt, und zwar vorzugsweise durch die serielle Schnittstelle. Hier erlaubt die serielle Schnittstelle dem Benutzer in zweckdienlicher Weise diejenigen Schalter 734, die mit den CE und Adressen-Anschlussflecken verbunden sind, zu rekonfigurieren, ohne die CE und Adressen-Anschlussflecken verwenden zu müssen, um auf die Speicherbits zuzugreifen, die ihre eigenen Schalter steuern. Der Benutzer programmiert den Konfigurationsspeicher 38, um AND Gatter 1 bis 4 zusammen zu verbinden, wie gezeigt, und um das Ausgangssignal von dem AND Gatter 1 an die CE Leitung zu verzweigen, die den Konfigurationsspeicher 38 steuert.
  • Die Verzweigung der Signale in dieser Weise verwendet den programmierbaren Schalter 34, der eine Vielzahl von Schaltern 734 umfasst. Der programmierbare Schalter 34 wird programmiert, um das CE Signal von dem externen Anschlussflecken zu empfangen und dieses an den Bus 35 an einer geeigneten Leitung, die in die FPGA Benutzerlogik 39 hineinführt, anzulegen. Wie in 17 gezeigt ist der Anschlussflecken, der dafür vorgesehen ist, um das CE Signal zu empfangen, an der West-Kante des Chips. Um die Einzelheiten eines Schalters zu sehen, sei jedoch die 8 betrachtet und es sei angenommen, dass der CE Flecken an der Ost-Kante des Chips ist. Für diesen CE Anschlussflecken (und andere Anschlussflecken an der Ost-Kante des Chips) können irgendwelche der Leitungen W, W16 oder W64 gewählt werden, um das externe CE Signal durch geeignetes Laden von Konfigurations-Speicherzellen, die Multiplexer 93, 95 und 96 konfigurieren, zu verzweigen. In ähnlicher Weise werden Anschlussflecken, die Adressensignale A16 bis A19 empfangen, gesetzt, um das Signal an die Benutzerlogik 39 auf dem Bus 35 zu richten, und zwar wiederum durch einen der Multiplexer 93, 95 und 96. Der programmierbare Schalter, der das CE Signal an die FPGA Benutzerlogik 39 richtet, wird auch programmiert, um den Multiplexer 74 so zu setzen, dass das Signal auf der Leitung E16 an die Leitung INB gerichtet wird. Somit führt der Bus 35 das ursprüngliche CE Signal an die FPGA Benutzerlogik 39 und führt dann das modifizierte CE Signal zurück an den Schalter 35, wo es von dem Multiplexer 74 als das INB Signal an die interne Chip-Aktivierungsleitung CE gerichtet wird, die den Konfigurationsspeicher 38 steuert.
  • Auf den Gegensatz zur 1 verwiesen, bei der das Chipaktivierungssignal CE direkt an die Speichersteuereinheit 24 angelegt wird. Wenn in 1 ein Benutzer ein Chip-Aktivierungssignal modifizieren möchte, ist es erforderlich ein modifiziertes Chip-Aktivierungssignal zu erzeugen, bevor es an den CE Anschlussflecken der 1 angelegt wird, oder den nichteffizienten Schritt einer Verzweigung des CE Signals auf den Chip auszuführen, ein modifiziertes Signal zu erzeugen, das modifizierte Signal von dem Chip weg und zurück an den CE Eingangsanschlussflecken des Chips zu verzweigen, eine viel langsamere Sequenz, die zusätzliche I/O Anschlussstifte verwendet.
  • Eine noch andere Beispielanwendung besteht darin, das Lese/Schreib-Signal an die Benutzerlogik zu richten und dieses mit Adressensignalen zu kombinieren, bevor das interne Lese/Schreib-Signal erzeugt wird, so dass irgendeine gewählte Adresse nach der anfänglichen Konfiguration neu beschrieben werden kann.
  • Noch ein anderes Beispiel ist den Lesezugriff so zu deaktivieren (abzuschalten), dass eine Konstruktion eines Benutzers von einem anderen Benutzer der Konstruktion nicht dekompiliert werden kann. Diese Funktion ist ähnlich wie die "Sicherheits-Sicherung" ("Security fuse") auf einem PAL.
  • Ein weiteres Beispiel besteht darin einen Daten-Anschlussflecken mit sowohl der Benutzerlogik als auch mit der Programmier-Schaltungsanordnung, die normalerweise mit diesem Daten-Anschlussflecken verbunden ist, zu verbinden. Wenn dann eine bestimmte Sequenz von Datensignalen zwischen dem externen Anschlussflecken und bestimmten Datenleitungen übergeben wird, kann die Benutzerlogik einen Vorgang initiieren. Durch Kopieren eines Gebiets des Konfigurationsspeichers an ein Anderes kann die Benutzerlogik z. B. die Einrichtung rekonfigurieren. Oder die Benutzerlogik kann einfach Änderungen an der Konfiguration durchführen, beispielsweise eine erneute Anweisung eines Multiplexers, um ein anderes Signal zu empfangen, oder das Kopieren eines externen Datenstroms in einen Teil des Konfigurationsspeichers hinein.
  • VALIDIERUNG VON KONFIGURATIONSDATEN
  • Für FPGAs, die sowohl über eine serielle Schnittstelle als auch eine parallele Adressierungsstruktur programmiert werden können, ist es schwierig eine Prüfsumme (Checksum) oder eine CRC Überprüfung zu verwenden, um zu verifizieren, dass Konfigurationsdaten richtig geladen worden sind. Es ist zweckdienlich einen anderen Mechanismus bereitzustellen, über den die Einrichtung erkennen kann, dass die Konfiguration abgeschlossen ist und wahrscheinlich gültig ist. Das einfachste Verfahren besteht darin ein einzelnes Bit des Konfigurationsspeichers speziell dazu zu verwenden, um eine gute Konfiguration zu markieren. Der Benutzer könnte an dieses Bit auf einen Abschluss hin schreiben. Jedoch weist dieses Verfahren den Nachteil auf, dass ein Hardware-Fehler oder eine Software-Unstimmigkeit zu einem Schreiben des erforderlichen Bit-Werts führen könnte, wenn die Konfiguration nicht richtig ist.
  • Um eine größere Zuverlässigkeit sicherzustellen, und um insbesondere sicherzustellen, dass der Bitstrom für einen anderen Einrichtungstyp nicht geladen wird, ist ein größeres Register vorgesehen, welches Zeichen empfangen muss, die den Namen des Einrichtungs-Herstellers und die Teilefamilie plus einen Identifizierer für die Revision der bestimmten Charge darstellen. In einer Ausführungsform umfasst dieses Register 128 Bits. Nur wenn die richtigen Werte in sämtlichen 128 Bits vorhanden sind, werden die Ausgangspuffer und bestimmte andere Elemente aktiviert werden. In einer anderen Ausführungsform bestimmt ein Host-Computer durch Lesen von diesem oder einem anderen Register den Typ des FPGAs und stellt sein eigenes Verhalten entsprechend ein, z. B. durch Wählen von einer von mehreren FPGA Konfigurationen zum Laden.
  • In einigen Fällen kann das FPGA in der Lage sein anders zu arbeiten, wenn eine von mehreren unterschiedlichen Ketten von Konfigurationsdaten in dieses Register hinein geladen werden. Wenn z. B. ein Bitstrom für eine vorher weniger leistungsfähige Einrichtung oder ein kleineres Familienelement geladen wird, kann das FPGA z. B. die einfachere Einrichtung emulieren.
  • Die 18A und 18B zeigen zwei Strukturen zum Validieren von Konfigurationsdaten.
  • In 18A werden ein Satz von 128 Konfigurationsbits mit einem breiten AND Gatter ANDO verbunden. Einige der Zellen haben ihren Q Ausgang mit dem AND Gatter ANDO verbunden und einige haben ihren Q Ausgang verbunden. Wenn das erwartete Muster eine logische Null in der Bitposition einschließt, dann wird der Q Ausgang verbunden. Wenn das erwartete Muster eine logische Eins in der Bitposition einschließt, wird der Q Ausgang verbunden. Z. B. wird in 18A der Q Ausgang von CELL1 (Zelle 1) mit dem AND Gatter ANDO verbunden und der Q Ausgang von CELL2 (Zelle 2) wird verbunden. Ein Ausgangssignal MATCH (Übereinstimmung) einer logischen Eins zeigt eine gute Konfiguration an. Eine logische Null zeigt eine fehlgeschlagene Konfiguration an.
  • In 18B wird ein Satz von 128 Konfigurationsbits wieder dekodiert. Dieses Mal sind zwei AND Gatter AND1 und AND2 vorgesehen und jedes dekodiert eine andere Kombination von logischen Null-en und logischen Eins-en. Z. B. wird der Q Ausgang von CELL1 mit dem AND Gatter AND1 verbunden und der Q Ausgang von CELL1 wird mit einem AND Gatter AND2 verbunden. Der Q Ausgang von CELL2 wird sowohl mit AND1 als auch AND2 verbunden. Deshalb stellt das AND Gatter AND1 ein logisches Eins MATCH3 (Übereinstimmung 3) Signal in Reaktion auf ein anderes Bitmuster als das AND Gatter AND2 bereit. Da zwei akzeptable Bitmuster erfasst werden können, kann die Einrichtung programmiert werden, um unterschiedlich auf die zwei Bitmuster zu reagieren. Natürlich können andere Einrichtungen als AND Gatter verwendet werden, um Bitmuster zu dekodieren, andere Anzahlen von Bits können verwendet werden, andere Dekoder können den Ausgang von anderen Registern als dem gleichen Register, das in 18B gezeigt ist, dekodieren, und andere Dekoder können andere Anzahlen von Bits dekodieren.
  • Obwohl nur spezifische Ausführungsformen der vorliegenden Erfindung hier ausführlich beschrieben worden sind, werden Durchschnittsfachleuten in dem technischen Gebiet im Hinblick auf die obige Beschreibung andere Ausführungsformen einfallen, und es ist beabsichtigt, dass diese in den Umfang der vorliegenden Erfindung fallen.

Claims (8)

  1. Programmierbarer Schalter in einem FPGA integrierten Schaltungschip, umfassend: wenigstens einen externen Anschlussflecken (16); eine programmierbare Benutzerlogikstruktur (39); einen Konfigurationsspeicher (38), der die Benutzerlogikstruktur programmiert und eine Adressierungsstruktur einschließt; und eine Schalteinrichtung (34), wobei die Schalteinrichtung konfigurierbar ist, um den externen Anschlussflecken mit der Benutzerlogikstruktur zu verbinden; den externen Anschlussflecken (16) mit der Adressierungsstruktur des Konfigurationsspeichers zu verbinden; und die Benutzerlogikstruktur (39) mit der Adressierungsstruktur des Konfigurationsspeichers (38) zu verbinden.
  2. Programmierbarer Schalter nach Anspruch 1, wobei der Konfigurationsspeicher (38) ferner den programmierbaren Schalter programmiert.
  3. Programmierbare Logikeinrichtung, umfassend: eine Benutzerlogikstruktur (39); einen Konfigurationsspeicher (38) zum Steuern der Benutzerlogikstruktur (39); eine Struktur zum Zugreifen auf den Konfigurationsspeicher; eine Vielzahl von Anschlussflecken (16) zum Verbinden von externen Signalen mit der programmierbaren Logikeinrichtung; einen programmierbaren Schalter (34), wobei der programmierbare Schalter programmierbar ist, um Signale zwischen den Anschlussflecken (16) der Benutzerlogikstruktur (39), und der Struktur zum Zugreifen auf den Konfigurationsspeicher zu verbinden, wobei der programmierbare Schalter durch den Konfigurationsspeicher (38) programmierbar ist.
  4. Programmierbare Logikeinrichtung nach Anspruch 3, bei der der programmierbare Schalter einen Multiplexer (74) einschließt, der als Eingangssignale ein Signal von einem der Anschlussflecken und ein Signal von der Benutzerlogikstruktur empfängt und als Ausgang ein Signal an der Struktur zum Zugreifen auf den Konfigurationsspeicher bereitstellt.
  5. Programmierbare Logikeinrichtung nach Anspruch 3, bei der der programmierbare Schalter einen Multiplexer (98) umfasst, der als Eingangssignale ein Signal von der Benutzerlogikstruktur und ein Signal von der Struktur zum Zugreifen auf den Konfigurationsspeicher empfängt und als einen Ausgang ein Signal an einem der Anschlussflecken bereitstellt.
  6. Programmierbare Logikeinrichtung nach Anspruch 5, bei der das Signal an einem der Anschlussflecken programmierbar an dem Anschlussflecken im Ansprechen auf ein Aktivierungssignal, das durch ein NAND-Gatter (101) von der Benutzerlogikstruktur und der Struktur zum Zugreifen auf den Konfigurationsspeicher abgeleitet wird, bereitgestellt wird.
  7. Programmierbare Logikeinrichtung nach Anspruch 5, bei der das Signal an einem der Anschlussflecken programmierbar an dem Anschlussflecken im Ansprechen auf ein Aktivierungssignal, das durch den Multiplexer (98) von der Benutzerlogikstruktur abgeleitet wird, bereitgestellt wird.
  8. Programmierbare Logikeinrichtung nach Anspruch 3, bei der der programmierbare Schalter einen Multiplexer (73) einschließt, der als Eingangssignale ein Signal von der Benutzerlogikstruktur und ein Signal von einem der Anschlussflecken empfängt und als Ausgang ein Signal an der Benutzerlogikstruktur bereitstellt.
DE69630352T 1995-05-02 1996-05-01 Programmierbarer schalter für eingangs-/ausgangssignale eines anwenderprogrammierbaren gatterfeldes Expired - Lifetime DE69630352T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB9508931 1995-05-02
GBGB9508931.4A GB9508931D0 (en) 1995-05-02 1995-05-02 Programmable switch for FPGA input/output signals
US08/465,134 US5705938A (en) 1995-05-02 1995-09-05 Programmable switch for FPGA input/output signals
US465134 1995-09-05
PCT/US1996/006165 WO1996035263A1 (en) 1995-05-02 1996-05-01 Programmable switch for fpga input/output signals

Publications (2)

Publication Number Publication Date
DE69630352D1 DE69630352D1 (de) 2003-11-20
DE69630352T2 true DE69630352T2 (de) 2004-08-05

Family

ID=26306969

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69630352T Expired - Lifetime DE69630352T2 (de) 1995-05-02 1996-05-01 Programmierbarer schalter für eingangs-/ausgangssignale eines anwenderprogrammierbaren gatterfeldes

Country Status (3)

Country Link
EP (1) EP0769223B1 (de)
DE (1) DE69630352T2 (de)
WO (1) WO1996035263A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7356620B2 (en) 2003-06-10 2008-04-08 Altera Corporation Apparatus and methods for communicating with programmable logic devices
US5821776A (en) * 1997-01-31 1998-10-13 Actel Corporation Field programmable gate array with mask programmed analog function circuits
US6172519B1 (en) * 1997-12-18 2001-01-09 Xilinx, Inc. Bus-hold circuit having a defined state during set-up of an in-system programmable device
CN103699031A (zh) * 2013-12-06 2014-04-02 杭州电子科技大学 用于触摸显示工业控制器的io处理动态重构系统及方法
CN114860028B (zh) * 2022-03-29 2024-06-11 上海航天电子有限公司 用于fpga的可编程晶振实时配置及监控方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4791603A (en) * 1986-07-18 1988-12-13 Honeywell Inc. Dynamically reconfigurable array logic
US5237218A (en) * 1991-05-03 1993-08-17 Lattice Semiconductor Corporation Structure and method for multiplexing pins for in-system programming
ATE184728T1 (de) * 1992-07-02 1999-10-15 Atmel Corp Unterbrechungsfreies, wahlfreies zugriffspeichersystem.
GB9223226D0 (en) * 1992-11-05 1992-12-16 Algotronix Ltd Improved configurable cellular array (cal ii)

Also Published As

Publication number Publication date
EP0769223B1 (de) 2003-10-15
DE69630352D1 (de) 2003-11-20
WO1996035263A1 (en) 1996-11-07
EP0769223A1 (de) 1997-04-23

Similar Documents

Publication Publication Date Title
DE69721343T2 (de) FPGA mit Setz-/Rücksetzleitungen
DE69031525T2 (de) Konfigurierbare Logikanordnung und zugehöriges Verfahren
DE69534812T2 (de) Programmierbare logische Vorrichtung, die mehr als eine Konfiguration speichert, und Mittel zum Umschalten der Konfiguration
DE69822796T2 (de) Nutzerprogrammierbarer prozessor
US5705938A (en) Programmable switch for FPGA input/output signals
DE4417575C2 (de) Verbesserte Array-Architektur für programmierbare logische Zellen
US5737235A (en) FPGA with parallel and serial user interfaces
DE68923541T2 (de) Programmierbare Logikeinrichtung mit einer Vielzahl von programmierbaren Logikarrays, die sich in mosaikförmiger Anordnung zusammen mit einer Vielzahl von vermischt angeordneten Interface-Blöcken befinden.
DE69838462T2 (de) Verbesserte feldprogrammierbare Gatteranordnung
DE69834011T2 (de) Statische Direktzugriffspeicherschaltungen
DE69028395T2 (de) Konfigurierbare zellenanordnung
DE3630835C2 (de) Integrierte Halbleiterkreisanordnungen und Systeme
EP0499695B1 (de) Speicherprogrammierbare Steuerung
US6396303B1 (en) Expandable interconnect structure for FPGAS
EP1303913B1 (de) Architektur und verfahren zur teilrekonfiguration eines nutzerprogrammierbaren gatterfelds
EP0202456B1 (de) In integrierter Technik hergestellter Logik-Array-Baustein
DE102004045527B4 (de) Konfigurierbare Logikschaltungsanordnung
DE69012355T2 (de) Architektur einer programmierten Logik mit mehreren Seiten.
DE4416881A1 (de) Datenverarbeitungseinrichtung
DE69534659T2 (de) Architektur und Verbindungsmodel für programmierbare logische Schaltungen
DE3588156T2 (de) Halbleiterspeicher mit Serienzugriff
DE2825190C3 (de) Programmierbare logische Anordnung
DE60129269T2 (de) Speicherschaltung für eine programmierbare logische integrierte Schaltungsanordnung
DE10238040A1 (de) Integrierte Halbleiterschaltungseinrichtung
DE10231956A1 (de) Verfahren und Vorrichtung zur systeminternen Programmierung durch einen gemeinsamen Verbindungspunkt von programmierbaren logischen Bauelementen auf mehreren Schaltungsplatinen eines Systems

Legal Events

Date Code Title Description
8364 No opposition during term of opposition