-
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, 8–10
-
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 8–12 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 8–12 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 1–4 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.