-
Die vorliegende Erfindung betrifft
die Konfigurierung eines programmierbaren logischen Speicherbauelements.
Insbesondere betrifft die vorliegende Erfindung die Konfigurierung
einer speicherbasierien, anwenderprogrammierbaren Gatteranordnung
(FPGA).
-
HINTERGRUNDINFORMATION
-
Eine anwenderprogrammierbare Gatteranordnung
(FPGA) ist ein programmierbares Allzweckbauelement, das von einem
Endanwender für
dessen Zwecke konfiguriert werden kann, um eine gewünschte anwenderspezifische
Schaltung zu realisieren. Die Grundbauelementarchitektur umfaßt eine Anordnung
von konfigurierbaren Logikblöcken (CLBs),
die in eine konfigurierbare Verbindungsstruktur eingebettet sind
und die von konfigurierbaren E/A-Blöcken (IOBs) umgeben sind. Jeder
IOB ist als Ausgangspuffer, Eingangspuffer oder bidirektionaler Puffer
konfigurierbar. Ein IOB ist so konfigurierbar, daß ankommende
Daten registriert, abgehende Daten registriert und/oder ein Dreizustandsausgang
bereitgestellt werden können.
Ein CLB ist so konfigurierbar, daß eine von vielen logischen
Funktionen durchgeführi
werden kann. Beispielsweise kann ein CLB so konfiguriert werden,
daß logische
Verknüpfungselemente,
sequentielle logische Elemente, Nachschlagtabellen und/oder Steuerungsmultiplexierer
realisiert werden können.
Um eine gewünschte anwenderspezifische
Schaltung zu realisieren, konfiguriert der Endanwender die konfigurierbare
Verbindungsstruktur, um die Schaltungsanordnung mehrerer konfigurierter
CLBs und mehrerer konfigurierter IOBs miteinander zu verbinden,
so daß die
resultierende Schaltung die gewünschte
anwenderspezifische Schaltung ist.
-
Bei einem Typ von FPGA, der als speicherbasierte
FPGA bezeichnet wird, werden die IOBs, die CLBs und die programmierbare
Verbindungsstruktur der FPGA konfiguriert, indem Konfigurationsdaten
in zugeordnete Konfigurationsspeicherzellen geladen werden. Jeder
IOB und CLB hat zugeordnete Konfigurationsspeicherzellen, deren
Inhalt bestimmt, wie der IOB oder CLB konfiguriert wird. Ebenso
weist die programmierbare Verbindungsstruktur Konfigurationsspeicherzellen
auf. Die programmierbare Verbindungsstruktur weist programmierbare
Punkte auf, die die Verbindung von Verdrahtungssegmenten in der programmierbaren
Verbindungsstruktur steuern. Jeder programmierbare Punkt kann ein
Schalttransistor sein, der von einer zugeordneten Konfigurationsspeicherzelle
gesteuert wird. Verdrahtungssegmente auf jeder Seite des Schalttransistors
sind in Abhängigkeit davon,
ob der Transistor von der zugeordneten Konfigurationsspeicherzelle
eingeschaltet wird, entweder verbunden oder nicht verbunden. Weitere
Information über
FPGAs findet man in "The
Programmable Logic Data Book 1999", Copyright 1999 bei Xilinx, Inc. und
vertrieben von Xilinx, Inc. in 2100 Logic Drive, San Jose, Kalifornien
95124.
-
Konfiguration ist der Prozeß des Ladens
von Konfigurationsdaten in die Konfigurationsspeicherzellen, die
die programmierbare Verbindungsstruktur, die IOBs und die CLBs steuern.
Eine FPGA, die von Xilinx, Inc. vertrieben wird, unterstützt im allgemeinen mehr
als einen Konfigurationsmodus bzw. -zustand. In einem ersten Konfigurationsmodus,
der als "serieller
Hauptmodus" bezeichnet
wird, sind Konfigurationsdaten normalerweise in einem externen Speicher, z.
B. in einem externen ROM, gespeichert. Die FPGA verwendet einen
auf dem Chip befindlichen Oszillator, um ein Taktsignal zu emittieren,
das bewirkt, daß aufeinanderfolgende
Bits der Konfigurationsdaten in einem Datenanschluß des externen
Speichers ausgelesen werden. Der Datenanschluß des externen Speichers ist
mit dem Eingangsanschluß der
FPGA (ein IOB, der als Eingangsanschluß konfiguriert ist) verbunden,
so daß die
aufeinanderfolgenden Bits der Konfigurationsdaten seriell in die
FPGA eingelesen werden, nämlich
jeweils Bit für
Bit. Die Konfigurationsspeicherzelle, in die jeweils ein entsprechendes Konfigurationsdatenbit
geschrieben wird, wird durch die Lage des Konfigurationsdatenbits
im seriellen Strom der Konfigurationsdatenbits bestimmt. In einem
Modus sind die Konfigurationsdaten in Datenpakete, genannt Rahmen,
unterteilt. Immer wenn ein Rahmen empfangen wird, wird er in ein
Rahmenregister geschoben, bis das Rahmenregister gefüllt ist. Die
Konfigurationsdaten im Rahmenregister werden dann parallel in eine
Zeile von Konfigurationsspeicherzellen geladen. Die Konfigurationsspeicherzellen
sind in diesem Fall für
Ladezwecke als eine zweidimensionale Matrix organisiert. Nach dem
Laden des ersten Rahmens wird ein nachfolgender Rahmen von Konfigurationsdaten
in die FPGA geschoben, und eine weitere Zeile von Konfigurationsspeicherzellen
wird geladen. Auf diese Weise werden Konfigurationsdaten seriell
in die FPGA geladen, nämlich Bit
für Bit,
aber die zweidimensionale Matrix von Konfigurationsspeicherzellen
wird parallel geladen, nämlich
Rahmen für
Rahmen.
-
Das serielle Laden der Konfigurationsdaten in
die FPGA kann unerwünscht
zeitaufwendig sein. Eine Xilinx-FPGA unterstützt daher normalerweise einen
zweiten Konfigurationsmodus, der als "paralleler Hauptmodus" bezeichnet wird.
In diesem zweiten Modus werden Konfigurationsdaten aus einem externen
Speicher (z. B. einem ROM) parallel in die FPGA geladen, nämlich jeweils
acht Bit. Die FPGA gibt eine Adresse von zweiundzwanzig Bit an zweiundzwanzig Adreßanschlüssen der
FPGA aus (zweiundzwanzig IOBs, die als Ausgangsanschlüsse verwendet
werden). Diese zweiundzwanzig Adreßanschlüsse der FPGA sind mit entsprechenden
zweiundzwanzig Adreßanschlüssen des
externen ROM gekoppelt. Die FPGA inkrementiert die Adresse, um zu
bewirken, daß aufeinanderfolgende
Acht-Bit-Konfigurationsdatenwerte aus dem externen ROM in die FPGA an
acht Dateneingangsanschlüssen
gelesen werden (acht IOBs, die als Eingangsanschlüsse verwendet werden).
Mehrere solche Acht-Bit-Werte von Konfigurationsdatenbits werden
zusammengesetzt, um einen Rahmen von Konfigurationsdaten zu bilden.
Die Konfigurationsdatenbits dieses Rahmens werden dann parallel
in eine Zeile der zweidimensionalen Matrix von Konfigurationsspeicherzellen
geschrieben. Ein zweiter Rahmen von Konfigurationsbits wird dann
in die FPGA gelesen und parallel in eine zweite Zeile der zweidimensionalen
Matrix von Konfigurationsspeicherzellen geschrieben. Auf diese Weise werden
Konfigurationsdatenbits in die FPGA als eine Serie von Acht-Bit-Werten
geladen, und die zweidimensionale Matrix von Konfigurationsspeicherzellen wird
Rahmen für
Rahmen geladen.
-
Zu Rückwärtskompatibilitätszwecken
ist es im allgemeinen erwünscht,
daß jede
aufeinanderfolgende FPGA-Familie die Konfigurationsmodi (als "ältere Konfigurationsmodi" bezeichnet), die
von bisherigen Familien unterstützt
werden, unterstützt.
Ein neuer Konfigurationsmodus kann neuen FPGA-Familien von Zeit
zu Zeit hinzugefügt
werden. Demzufolge ist bisher im allgemeinen immer mehr Hardware erforderlich
gewesen, um eine immer größere Anzahl von "älteren Konfigurationsmodi" zu unterstützen. Eine
Lösung
ist erwünscht,
die den Umfang der notwendigen Hardware zur Unterstützung mehrerer Konfigurationsmodi
reduziert.
-
ZUSAMMENFASSUNG
-
Anstatt anwendungsspezifische festverdrahtete
Logik zu verwenden, um mehrere Konfigurationsmodi zu unterstützen, ist
ein Prozessor in der FPGA für
diesen Zweck vorgesehen. Nach dem Einschalten liest der Prozessor
einen Konfigurationsmoduscode, der an vorbestimmten Anschlüssen der FPGA
anliegt. Der Konfigurationsmoduscode, der von diesen Anschlüssen gelesen
wird, bestimmt den Konfigurationsmodus, der verwendet wird, um Konfigurationsdaten
in die FPGA zu laden.
-
Wenn der Konfigurationsmoduscode
einen ersten Wert hat, dann führt
der Prozessor ein erstes Programm aus. Die Ausführung des ersten Programms
bewirkt, daß der
Prozessor IOBs und andere Hardware in der FPGA steuert, um Konfigurationsdaten
in die FPGA und in die Konfigurationsspeicherzellen entsprechend
einem ersten Konfigurationsmodus zu laden. Wenn dagegen der Konfigurationsmoduscode
einen zweiten Wert hat, dann führt
der Prozessor ein zweites Programm aus. Die Ausführung des zweiten Programms
bewirkt, daß der
Prozessor IOBs und andere Hardware in der FPGA steuert, um Konfigurationsdaten
in die FPGA und in die Konfigurationsspeicherzellen entsprechend
einem zweiten Konfigurationsmodus zu laden. Das erste und das zweite Programm,
die vom Prozessor ausgeführt
werden, können
in einem auf dem Chip befindlichen Metallmasken-Festwertspeicher
(ROM) gespeichert sein, so daß ein
Programm geändert
werden kann, ohne daß der
Rest der FPGA neu entworfen werden muß und ohne daß beträchtliche
Kosten entstehen. Durch Bereitstellung mehrerer Konfigurationsprogramme, die
auf dem gleichen Prozessor ausführbar
sind, kann die FPGA mehrere Konfigurationsmodi unter Verwendung
der gleichen Prozessorhardware unterstützen.
-
In einer Ausführungsform wird ein neuer, vom
Anwender bereitgestellter Konfigurationsmodus unterstützt. Wenn
der Konfigurationsmoduscode, der nach dem Einschalten gelesen wird,
einen bestimmten Wert hat, führt
der Prozessor ein Ladeprogramm aus. Die Ausführung des Ladeprogramms bewirkt, daß der Prozessor
IOBs auf der FPGA steuert, so daß ein vom Anwender bereitgestelltes
Konfigurationsprogramm in die FPGA gelesen wird und in den Programmspeicher
geladen wird, der vom Prozessor verwendet wird. Ein solches vom
Anwender bereitgestelltes Konfigurationsprogramm kann beispielsweise
Acht-Bit-Byte für
Acht-Bit-Byte in die FPGA gelesen werden. Nachdem das vom Anwender
bereitgestellte Konfigurationsprogramm in die FPGA gelesen worden
ist, wird das Ladeprogramm beendet, und der Prozessor führt das
neu geladene Konfigurationsprogramm aus. Die Ausführung des
neu geladenen Konfigurationsprogramms bewirkt, daß Konfigurationsdaten
in die FPGA geladen werden und in die Konfigurationsspeicherzellen
entsprechend einem vom Anwender definierten Konfigurationsmodus
geladen werden. Auf diese Weise wird die FPGA so programmiert, daß ein anwenderdefinierter
Konfigurationsmodus unterstützt
wird.
-
Weitere Strukturen und Verfahren
sind in der ausführlichen
Beschreibung nachstehend beschrieben. Diese Zusammenfassung beinhaltet
nicht die Definition der Erfindung. Die Erfindung ist in den Ansprüchen definiert.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
l ist
eine vereinfachte Darstellung einer anwenderprogrammierbaren Gatteranordnung
(FPGA) entsprechend einer Ausführungsform
der vorliegenden Erfindung.
-
2 ist
ein Flußdiagramm
eines Verfahrens entsprechend einer Ausführungsform der vorliegenden
Erfindung.
-
3, 4A und 4B sind
vereinfachte Schaltbilder möglicher
Implementationen des Prozessors und der Schnittstellenanordnung
in 1.
-
5 ist
ein Flußdiagramm
eines Verfahrens entsprechend einer weiteren Ausführungsform der
vorliegenden Erfindung, wobei der Prozessor ein Konfigurationsprogramm
von einer externen Quelle in die FPGA lädt und das Konfigurationsprogramm dann
ausführt.
-
AUSFÜHRLICHE
BESCHREIBUNG
-
1 ist
eine vereinfachte Darstellung (von oben nach unten) einer integrierten
Schaltung 1 mit einer anwenderprogrammierbaren Gatteranordnung (FPGA)
entsprechend einer Ausführungsform
der vorliegenden Erfindung. Die FPGA 1 weist einen Ring
von E/A-Blöcken
(IOBs) 2, vier Eckblöcke
(CBs) 3–6,
eine innere zweidimensionale Matrix von konfigurierbaren Logikblöcken (CLBs) 7 und
eine programmierbare Verbindungsstruktur 8 auf. Die IOBs, CLBs
und die programmierbare Verbindungsstruktur enthalten Konfigurationsspeicherzellen,
deren Inhalt bestimmt, wie die IOBs, CLBs und die programmierbare
Verbindungsstruktur konfiguriert werden. Diese Konfigurationsspeicherzellen
sind für
konzeptionelle und Ladezwecke in einer zweidimensionalen Matrix organisiert.
-
Jeder IOB weist einen Anschluß in dem
Sinne auf, daß der
IOB eine Stelle bereitstellt, an der eine Verbindung mit der integrierten
FPGA-Schaltung 1 hergestellt wird. Die Stelle ist normalerweise ein
Anschlußfeld
des IOB und die Verbindung zum Anschlußfeld ist normalerweise ein
Verbindungsdraht, der eine elektrische Verbindung vom Anschlußfeld zu
einem integrierten Schaltungsgehäuse bildet,
das die integrierte FPGA-Schaltung 1 enthält. Weitere
Information über
die Struktur der FPGA 1 im allgemeinen, einschließlich der
Struktur und des Betriebs der IOBs 2, der CLBs 7 und
der programmierbaren Verbindungsstruktur 8 findet man unter: "XC4000E and XC4000X
Series Field Programmable Gate Arrays", Seite 6–5 bis 6–68, "The Programmable Logic Data Book 1999", Copyright 1999
bei Xilinx, Inc. und vertrieben von Xilinx, Inc. 2100 Logic Drive, San
Jose, Kalifornien 95124.
-
Wie in dem vergrößerten Abschnitt im unteren
Teil von 1 dargestellt,
weist der Eckblock 5 auf: einen Prozessor 9, einen
auf dem Chip befindlichen Oszillator 10, einen Umfang an
nicht-flüchtigem Speicher 11 (z.
B. ROM oder FLASH-Speicher), einen Umfang an Direktzugriffsspeicher
(RAM) 12, eine Decodierungsschaltungsanordnung 13,
eine Schnittstellenlogik 14, um eine Verbindung mit gewählten IOB-Anschlüssen während der
Konfiguration herzustellen, und eine Schnittstellenlogik 15,
um in die Konfigurationsspeicherzellen der verbleibenden IOBs 2,
der CLBs 7 und der programmierbaren Verbindungsstruktur 8 zu
schreiben und aus diesen zu lesen.
-
2 ist
ein Flußdiagramm
eines Verfahrens gemäß einer
Ausführungsform
der vorliegenden Endung. Nach dem Einschalten werden Programme, die
im nichtflüchtigen
Speicher 11 gespeichert sind, in den RAM 12 geladen.
Der Prozessor 9 wird mit einem Signaltakt von dem auf dem
Chip befindlichen Oszillator 10 getaktet, so daß der Prozessor 9 eine erste
Anweisung von einer vorbestimmten Speicherstelle im RAM 12 holt
und mit der Ausführung
eines dort gespeicherten Programms beginnt. Die Ausführung dieses
Programms bewirkt, daß der
Prozessor 9 die Logik 14 verwendet, um einen aus
drei Bit bestehenden "Konfigurationsmoduscode" in die Anschlüsse der
IOBs 16–18 zu
lesen (Schritt 200). Diese Anschlüsse sind mit MO, M1 bzw. M2
bezeichnet. Der Konfigurationsmoduscode wird vom Anwender durch
Mittel, die sich außerhalb
der FPGA 1 befinden, auf die Anschlüsse MO, M1 und M2 gelegt.
-
Wenn der Konfigurationsmoduscode
ein erster Wert ist, dann beginnt der Prozessor 9, ein
erstes Konfigurationsmodusprogramm im RAM 12 auszuführen (Schritt 201).
Dieses Konfigurationsmodusprogramm steuert mehrere IOBs, so daß diese entsprechend
zur Unterstützung
eines ersten Konfigurationsmodus konfiguriert werden. Diese bestimmten
IOBs werden auf diese Weise vom Prozessor 9 unter Verwendung
einer Schnittstellenlogik 14 programmiert, wie nachstehend
beschrieben.
-
In einem Beispiel ist der erste Konfigurationsmoduscode
für <M2 : M1 : M0> folgender: <0 : 0 : 0>, und der erste Konfigurationsmodus
ist der "serielle
Hauptmodus", der
auf Seite 6–61
von "The Programmable
Logic Data Book 1999" von
Xilinx ausgeführt
ist. Der IOB 19 wird deshalb als Eingangsanschluß DIN für die ankommenden
seriellen Daten verwendet, und der IOB 20 wird als Ausgangsanschluß zum Ausgeben
eines Taktsignals CCLK von der FPGA 1 verwendet. Das Taktsignal
CCLK wird von dem auf dem Chip befindlichen Oszillator 10 erzeugt
und wird über
den Anschluß CCLK
des IOB 20 an einen Takteingangsanschluß eines seriellen externen
PROM (nicht dargestellt) geliefert. Jeder nachfolgende Taktimpuls
des CCLK-Signals, der von der FPGA 1 ausgegeben wird, bewirkt,
daß ein
weiteres Konfigurationsdatenbit aus einem Datenausgangsanschluß des externen
PROM gelesen wird. Dieser Datenausgangsanschluß ist mit dem DIN-Anschluß des IOB 19 durch
eine Verbindung außerhalb
der FPGA verbunden, so daß aufeinanderfolgende
Konfigurationsdatenbits am Anschluß DIN seriell empfangen werden.
Der Prozessor 9 liest diesen ankommenden seriellen Bitstrom
von Konfigurationsdaten vom Anschluß DIN und verwendet die Schnittstellenlogik 15,
um die Konfigurationsdaten in die Konfigurationsspeicherzellen zu
schreiben.
-
Als Alternative werden die Konfigurationsdatenbits
parallel an 8 Anschlußstifte übergeben
und parallel in 8 aufeinanderfolgende Bits eines Rahmens
geladen. Als weitere Alternative werden die Konfigurationsdatenbits
seriell an einen Anschlußstift übergeben,
aber intern in eine parallele Folge von acht Bits zum Laden in ein
Rahmenregister umgesetzt.
-
In jedem Fall bewirkt das erste Programm, daß der Prozessor 9 die
verschiedenen Konfigurationsdatenbits im ankommenden Bitstrom zu
einem Rahmen aus Konfigurationsbits zusammenfügt. Das erste Programm bewirkt
dann, daß die
Bits des Rahmens parallel in eine erste Zeile der Konfigurationsspeicherzellen
der FPGA 1 geschrieben werden. Der Prozessor 9 liest
dann die nächsten
Konfigurationsdatenbits vom Anschluß DIN, fügt diese Konfigurationsdatenbits
zu einem weiteren Rahmen zusammen und schreibt diesen nächsten Rahmen
dann in eine zweite Zeile der Konfigurationsspeicherzellen der FPGA 1.
Auf diese Weise werden Konfigurationsdatenbits seriell vom Eingangsanschluß DIN unter
Softwaresteuerung in die FPGA 1 geladen und parallel Rahmen
für Rahmen
entsprechend dem ersten Konfigurationsmodus in die Konfigurationsspeicherzellen der
FPGA geschrieben.
-
Wenn dagegen der Konfigurationsmoduscode
ein zweiter Wert ist, beginnt der Prozessor 9, ein zweites
Konfigurationsmodusprogramm im RAM 12 auszuführen (Schritt 202).
Dieses Konfigurationsmodusprogramm steuert mehrere IOBs, so daß diese
einen zweiten Konfigurationsmodus unterstützen. In einem Beispiel ist
der zweite Konfigurationsmoduscode für <M2 : M1 : M0> folgender: <1 : 0 : 0>, und der zweite Konfigurationsmodus ist
der "Parallel-aufwärts-Hauptmodus", wie ausgeführt auf
der Seite 6–62
in "The Programmable
Logic Data Book 1999".
Acht IOBs (IOB 19 und sieben weitere IOBs) werden als Dateneingangsanschlüsse DI0–DI7 zum Empfangen
von Acht-Bit-Bytes von Konfigurationsdaten verwendet. Der IOB 21 wird
als Ausgangsanschluß RCLK
zum Ausgeben eines Taktsignals RCLK aus der FPGA verwendet. Zweiundzwanzig weitere
IOBs (nicht dargestellt) werden verwendet, um eine Zweiundzwanzig-Bit-Adresse
A0–A21
auszugeben.
-
Die Ausführung des zweiten Programms
bewirkt, daß der
Prozessor 9 eine Zweiundzwanzig-Bit-Adresse von den zweiundzwanzig Bitadreßausgangsanschlüssen A0–A21 ausgibt.
Diese Adresse ist gültig
bei einer steigenden Flanke des Taktsignals RCLK, die vom RCLK-Anschluß der FPGA
geliefert wird. Die Zweiundzwanzig-Bit-Adresse und das Taktsignal
RCLK werden an Adreß-
und Freigabeanschlüsse
eines externen PROM (nicht dargestellt) übergeben, so daß ein erstes
Acht-Bit-Byte von Konfigurationsdaten an acht Datenausgangsanschlüsse des
externen PROM ausgegeben wird. Diese acht Datenausgangsanschlüsse sind
mit den acht Dateneingangsanschlüssen
DI0–DI7
der FPGA 1 gekoppelt. Der Prozessor 9 verwendet
eine Schnittstellenlogik 14, um dieses Byte der Konfigurationsdaten
von den Dateneingangsanschlüssen
DI0–DI7
zu lesen. Der Prozessor 9 inkrementiert dann die Zweiundzwanzig-Bit-Adresse,
um das nächste
Byte der Konfigurationsdaten im externen PROM zu adressieren, läßt das Taktsignal
RCLK entsprechend pulsen und liest das nächste Byte der Konfigurationsdaten
von den Dateneingangsanschlüssen
DI0–DI7
der FPGA 1. Auf diese Weise liest der Prozessor 9 nacheinander
Acht-Bit-Bytes der Konfigurationsdaten aus dem externen PROM, indem
die Zweiundzwanzig-Bit-Adresse inkrementiert wird. Der Prozessor 9 setzt
diese Bytes der Konfigurationsdaten zusammen, um einen Rahmen von
Konfigurationsdaten zu bilden und schreibt die Bits des Rahmens
dann parallel in eine erste Zeile der Konfigurationsspeicherzellen
der FPGA 1. Der Prozessor 9 inkrementiert dann
die Zweiundzwanzig-Bit-Adresse, empfängt die nächsten Konfigurationsdatenbytes,
fügt diese
Konfigurationsdaten in einen zweiten Rahmen ein und schreibt diesen
zweiten Rahmen in eine zweite Zeile der Konfigurationsspeicherzellen
der FPGA 1. Auf diese Weise werden Konfigurationsdatenbits
in die FPGA 1 Byte für
Byte unter Softwaresteuerung geladen und in die Konfigurationsspeicherzellen
der FPGA parallel Rahmen für
Rahmen entsprechend dem zweiten Konfigurationsmodus geschrieben.
In diesem Beispiel des ersten und zweiten Konfigurationsmodus werden
die Konfigurationsdaten auf die gleiche Weise in die Konfigurationsspeicherzellen geschrieben.
In diesem Beispiel enthält
der Konfigurationsdatenbitstrom keine Prozessoranweisungen.
-
Nachdem die Konfigurationsspeicherzellen geladen
worden sind, bewirkt das auszuführende Konfigurationsprogramm,
daß eine
sogenannte "Start"-Folge erscheint,
wobei der FPGA-Betrieb vom Konfigurationsprozeß zu dem beabsichtigten Anwenderbetrieb übergeht.
Alle IOBs, die zum Laden von Konfigurationsdaten verwendet wurden,
sind zur Verwendung in der anwenderspezifischen Schaltung verfügbar und
können
am Ende des Konfigurationsprozesses für diese Verwendung konfiguriert
werden, wenn alle Konfigurationsdaten über diese IOBs geladen worden
sind. Ein Signal an einem Anschluß DONE des IOB 22 geht
dann vom Tiefpegel zum Hochpegel über, was die Beendigung des
Konfigurationsprozesses und der Start-Folge anzeigt. Weitere Information über ein
Beispiel einer Start-Folge
findet man auf den Seiten 6–51
bis 6–54
von "The Programmable
Logic Data Book 1999".
-
3 und 4 sind vereinfachte Schaltbilder, die zusätzliche
Einzelheiten einer möglichen
Implementierung des Prozessors 9 und seiner zugehörigen Schnittstellenschaltungsanordnung 14 und 15 zeigen.
Das gestrichelte Rechteck 100 stellt eine Konfigurationsspeicherzelle
dar. In diesem Fall ist die Konfigurationsspeicherzelle eine Konfigurationsspeicherzelle
der programmierbaren Verbindungsstruktur B. Wenn ein kreuzgekoppelter
Signalspeicher 101 so geladen wird, daß eine digitale Eins am Gate
des Schalttransistors 102 anliegt, dann wird die Konfigurationsspeicherzelle
so konfiguriert, daß Verdrahtungssegmente 103 und 104 verbunden
sind. Wenn der Signalspeicher 101 so geladen wird, daß eine digitale
Null am Gate des Schalttransistors 102 anliegt, dann wird
die Konfigurationsspeicherzelle so konfiguriert, daß die Verdrahtungssegmente 103 und 104 nicht
verbunden sind.
-
Obwohl nur eine derartige Konfigurationsspeicherzelle 100 in 3 dargestellt ist, sind
jeweils Y Zeilen von X Konfigurationsspeicherzellen vorhanden, die
die zweidimensionale Matrix von Konfigurationsspeicherzellen bilden,
die oben beschrieben ist. Einige der Konfigurationsspeicherzellen
sind für IOBs,
einige sind für
CLBs und einige sind für
die programmierbare Verbindungsstruktur.
-
Jede Zeile der Konfigurationsspeicherzellen hat
eine zugeordnete Y-Adreßleitung.
Die Leitung 105 in 3 ist
die Y-Adreßleitung,
die der Zeile der Konfigurationsspeicherzelle 100 zugeordnet
ist. Jede Spalte hat eine zugeordnete X-Adreßleitung. Die Leitung 106 in 3 ist die X-Adreßleitung,
die der Spalte der Konfigurationsspeicherzelle 100 zugeordnet
ist. Wenn ein digitaler Hochpegel in der X-Adreßleitung einer Konfigurationsspeicherzelle
vorhanden ist und ein digitaler Hochpegel in der Y-Adreßleitung der
Konfigurationsspeicherzelle vorhanden ist und eine globale Freigabeleitung 107 mit
einem Hochpegelimpuls versehen ist, dann gibt ein UND-Gatter 108 der
Konfigurationsspeicherzelle einen digitalen Hochpegelimpuls aus,
wobei ein Zugangstransistor 109 freigegeben wird. Wenn
ein Rahmenpuffer 110 einen digitalen Wert auf eine Datenleitung 111 der Konfigurationsspeicherzelle
legt, dann wird dieser digitale Wert in die Konfigurationsspeicherzelle
geladen und im Signalspeicher gespeichert. Wenn der Rahmenpuffer 110 nicht
für die
Ausgabe freigegeben wird, dann legt der Signalspeicher 101 die
gespeicherten Konfigurationsdaten über den freigegebenen Zugangstransistor 109 und
auf die Datenleitung 111. Diese Daten können dann vom Prozessor 9 über einen
Rücklesepuffer 112 gelesen
werden.
-
Die Speicherzelle 100 ist
in 3 als Fünf-Transistor-Speicherzelle
mit einem einzigen Zugangstransistor 109 dargestellt. In
anderen Ausführungsformen
verwendet ein Äquivalent
der Speicherzelle 100 sechs Transistoren: einen Zugangstransistor,
der eine Verbindung von einer Bit-Leitung zu einem Anschluß des Signalspeichers 101 herstellt,
und einen weiteren Zugangstransistor, der eine Verbindung von einer
Bit-Strich-Leitung zu dem komplementären Anschluß des Signalspeichers 101 herstellt.
Da solche Sechs-Bit-Transistorspeicherzellen bekannt sind, werden
sie hier nicht beschrieben.
-
Der Prozessor 9 adressiert
eine bestimmte Zeile der Konfigurationsspeicherzellen, indem er
einen Wert in das Y-Register 113 schreibt. Dieser Wert wird
vom Decodierer 114 zu einem Mehrfach-Bit-Wert decodiert,
der auf die Y-Adreßleitungen gelegt
wird. In einer Ausführungsform
schreibt der Prozessor einen Wert in das Y-Register, so daß immer
nur eine Zeile zur gleichen Zeit addressiert wird.
-
Der Prozessor 9 kann eine
bestimmte Spalte, alle Spalten oder irgendeine Kombination daraus adressieren,
indem er einen entsprechenden Wert in das X-Register 115 schreibt.
Der Wert im X-Register 115 wird im Decodierer 116 decodiert,
um den Mehrbitwert zu erzeugen, der auf die X-Adreßleitungen gelegt
wird. Wenn ein ganzer Rahmen (eine Zeile) von Konfigurationsspeicherzellen
zu schreiben ist, dann wird ein Wert in das X-Register 115 geschrieben,
der so decodiert wird, daß alle
X-Adreßleitungen mit
digitalen Einsen angesteuert werden. Demzufolge werden alle Speicherzellen
einer Zeile adressiert. (Der "Rahmenpuffer" kann tatsächlich mehrere Acht-Bit-DIN-Register
aufweisen, eines, das jeweils acht aufeinanderfolgenden Spalten
zugeordnet ist. Ebenso kann der "Rücklesepuffer" tatsächlich mehrere
Acht-Bit-DOUT-Puffer
aufweisen, wobei einer jeweils acht aufeinanderfolgenden Spalten
zugeordnet ist.) Das Y-Register 113, das X-Register 115,
der Rahmenpuffer 110 und der Rücklesepuffer 112 werden
vom Prozessor 9 angesprochen, indem er aus den entsprechenden
Adressen liest oder in diese schreibt. DORDB ist der Datenausgabe-(Rücklese-)Pufferlese-Strobe-Bar
(bei Tiefpegel aktiv). DIWRB ist der Dateneingabe-(Rahmenpuffer-)Pufferschreib-Strobe-Bar
(bei Tiefpegel aktiv). XWRB ist der X-Registerschreib-Strobe-Bar (bei Tiefpegel
aktiv). YWRB ist die Y-Registerschreib-Strobe-Bar (bei Tiefpegel
aktiv). GE ist der globale Freigabestrobe, der an alle Konfigurationsspeicherzellen
geliefert wird. Der Prozessor 9 spricht den RAM 12 unter
Verwendung eines Speicherlese-Strobe-Bars MRDB (bei Tiefpegel aktiv)
und eines Speicherschreib-Strobe-Bars MWRB (tiefpegelaktiv) an.
Der Adreßdecodierer 13 erzeugt
diese Strobe-Signale unter Verwendung von Adreß- und der Steuersignalen,
einschließlich
der Adresse auf den Adreßbusleitungen
A0–A15, des
Schreibstrobes WRB, der vom Prozessor 9 ausgegeben wird,
des Lesestrobes RDB, der vom Prozessor 9 ausgegeben wird,
und des Programmspeicherlese-Strobes PSENB, der vom Prozessor 9 ausgegeben
wird. Ein Adreßzwischenspeicher 118 ist vorgesehen,
um die niederwertige Adresse von den Adreß/Datenleitungen AD0–AD7 zwischenzuspeichern.
-
4A ist
ein vereinfachtes Schaltbild einer Schnittstellenlogik 14, über die
der Prozessor 9 während
des Konfigurationsprozesses aus den IOBs liest und/oder in diese
schreibt. Der Prozessor 9 liest den Konfigurationsmoduscode
von den Anschlüssen
M0, M1 und M2 über
einen Eingabepuffer 119 und ein Lesestrobe-Signal MPRDB
(bei Tiefpegel aktiv). Der Prozessor 9 bestimmt mit Hilfe
des Registers 120 und eines Strobe-Signal CLKCB (bei Tiefpegel
aktiv), ob der Anschluß CCLK
ein Taktsignal ausgibt oder ein Taktsignal empfängt und ob der interne Oszillator 10 freigegeben
wird. Der Prozessor 9 gibt die Zweiundzwanzig-Bit-Adresse
mit Hilfe von Ausgangspuffern 122–124 und Adreßausgangsschreib-Strobes AOWRB,
A1WRB und A2WRB (bei Tiefpegelsignalen aktiv) an die Anschlüsse A0–A21 aus.
Der Prozessor 9 liest die Dateneingangsanschlüsse D0–D7 mit
Hilfe eines Eingabepuffers 121 und eines Datenlesepuffer-Strobes
DRDB (bei Tiefpegel aktiv).
-
Eine Schnittstellenlogik 14 kann
entweder unter Verwendung anwendungsspezifischer Hardware (klein
und schnell, aber weniger flexibel) oder unter Verwendung von anwenderprogrammierbarer Hardware
(flexibel, aber langsamer) implementiert werden. In der anwendungsspezifischen
Hardwareausführungsform
sind Schaltungen wie diejenigen, die in 4A und 4B gezeigt sind, als anwendungsspezifische
Hardware in der FPGA vorgesehen.
-
In der programmierbaren Ausführungsform werden
die Schaltungen in 4A und 4B implementiert, indem die Speicherzellen
in den entsprechenden IOBs der dargestellten Anschlußfelder
geladen werden, um diese IOBs für
eine Konfigurationsverwaltung für
den Rest der FPGA zu konfigurieren. Wenn der Modus komplexere Merkmale
verwendet, z. B. das Schieberegister 44 in 4B,
kann es notwendig sein, auch die Zwischenverbindungen und die CLBs
zu programmieren.
-
Bei einer Serielleingabe/Seriellausgabe-Schnittstelle
(entweder mit fester Hardware oder bei Strukturen, die in der FPGA
konfiguriert sind), wie in 4B gezeigt,
empfängt
die Schaltung 41 einen seriellen Bitstrom vom Dateneingangsanschlußstift DIN
und liefert ein serielles Ausgangssignal auf der Leitung DO. Bei
einer Serielleingabe/Parallelausgabe-Schnittstelle empfängt eine
zweite Schaltung 42 einen seriellen Bitstrom, der durch
ein Schieberegister 44 läuft und periodisch als acht
parallele Ausgangssignale auf den Leitungen D0 bis D7 ausgegeben
wird. Bei einer Schnittstelle für
bytebreiten Durchgang empfängt
eine dritte Schaltung 43 acht parallele Eingangssignale
auf den Leitungen DIN0 bis DIN7 und liefert acht parallele Ausgangssignale an
die Leitungen D0 bis D7.
-
Die Schaltung in 4A ermöglicht es,
daß eine
externe Vorrichtung Daten zurückliest,
die in der FPGA gespeichert sind. In der zweiten Ausführungsform,
die in 4A gezeigt ist, werden die
IOBs der Anschlüsse
M0–M2,
CCLK, D0–D7
und A0–A21
entsprechend initialisiert. In der zweiten Ausführungsform wird diese Initialisierung
unter Softwaresteuerung durchgeführt,
indem ihre entsprechenden Konfigurationsspeicherzellendaten während des
Konfigurationsvorgangs in einen temporären Speicher in der FPGA geladen
werden, und wenn alle Konfigurationsdaten über diese IOBs geladen worden
sind, werden die IOBs zu einer Verwendung während des Betriebs der FPGA
konfiguriert, indem die Daten aus dem temporären Speicher in die IOB-Konfigurationsspeicherzellen
geladen werden.
-
Die Eingangs- und Ausgangsregister
und Puffer 119–124 und
die Verbindungen von diesen Registern und Puffern zu dem Datenbus
des Prozessors 9 und dem Decodierer 13 werden
realisiert, indem zu Beginn des Konfigurationsprogramms bestimmte Konfigurationsspeicherzellen
der programmierbaren Verbindungsstruktur programmiert werden. Während das
X-Register 115, das Y-Register 113, die Decodierer 114 und 116,
der Rahmenpuffer (Rahmenregister) 110 und der Rücklesepuffer 112 in 3 unter Verwendung anwendungsspezifischer
festverdrahteter Logik realisiert werden, werden die Register und
Puffer 119–124 in 4A in dieser Ausführungsform unter Verwendung
einer konfigurierbaren Schaltungsanordnung von entsprechend konfigurierter
CLBs realisiert. Um die Überschreibung
von Konfigurationsbits zu vermeiden, die für IOB-Verbindungen benötigt werden,
müssen
entweder alle Konfigurationsbits, die für IOB-Verbindungen zum Prozessor 9 verwendet
werden, im letzten konfigurierten Rahmen sein, oder die Konfigurationsbits
für die
IOB-Verbindungen müssen
in einem internen FPGA-Speicher gespeichert sein, bis alle Konfigurationsdaten über diese IOBs
geladen worden sind.
-
5 ist
ein Flußdiagramm
eines Verfahrens gemäß einer
weiteren Ausführungsform.
Nach dem Einschalten liest der Prozessor 9 einen Konfigurationsmoduscode
(Schritt 300) von den Anschlüssen M0, M1 und M2. Wenn der
Konfigurationsmoduscode einen bestimmten Wert hat, dann führt der
Prozessor 9 ein Ladeprogramm im RAM 12 aus (Schritt 301).
Die Ausführung
dieses Ladeprogramms bewirkt, daß der Prozessor 9 IOBs
konfiguriert, so daß ein
Konfigurationsprogramm in die FPGA 1 gelesen und in den
RAM 12 geladen wird. Das Konfigurationsprogramm kann auf
vielerlei Weise in die FPGA geladen werden. Eine Möglichkeit
besteht darin, das Konfigurationsprogramm Byte für Byte von einem externen PROM
zu lesen, wie es im "parallelen
Hauptmodus" erfolgt,
der oben beschrieben ist.
-
Nachdem das Ladeprogramm das Konfigurationsprogramm
in den RAM 12 geladen hat, führt der Prozessor 9 das
neu geladene Konfigurationsprogramm aus (Schritt 302).
Die Ausführung
dieses Konfigurationsprogramms bewirkt, daß der Prozessor 9 Konfigurationsdaten
in die FPGA liest und diese Konfigurationsdaten in die Konfigurationsspeicherzellen
der FPGA lädt,
so daß die
FPGA zur Verwendung als die gewünschte
anwenderspezifische Schaltung konfiguriert wird. Ein Anwender ist
somit in der Lage, einen kundenspezifischen Konfigurationsmodus
bereitzustellen, indem er ein kundenspezifisches Konfigurationsprogramm
in die FPGA lädt
und dann bewirkt, daß der
Prozessor 9 dieses kundenspezifische Konfigurationsprogramm
ausführt.
-
Obwohl die vorliegende Erfindung
zum Zecke der Information in Verbindung mit bestimmten spezifischen
Ausführungsformen
beschrieben ist, ist die vorliegende Erfindung nicht auf diese beschränkt. Die
Architektur der Schnittstellenlogik 14 und 15,
die den Prozessor mit den IOBs und den Konfigurationsspeicherzellen
verbindet, ist nur eine mögliche
Implementierung. Andere Typen von Schnittstellenlogik können unter
Verwendung von Standardprozessorausführungstechniken bereitgestellt
werden, um den Prozessor mit anderen IOB-, CLB- und programmierbaren
Verbindungsstrukturarchitekturen zu verbinden. In einer Ausführungsform
schließt
eine solche Schnittstellenschaltungsanordnung einen Zeilenzeiger
ein, wie er von Trimberger im US-Patent 5892961 mit dem Titel "A Field Programmable
Gate Array Having Programming Instructions in the Configuration Bitstream" vorgeschlagen wird.
Dieser Zeilenzeiger zeigt auf eine Zeile von Konfigurationsspeicherzellen.
Der Zeilenzeiger ist unter Steuerung des Prozessors 9 inkrementierbar.
Ein solcher Zeilenzeiger ist in einer Ausführungsform als ein Schieberegister
implementiert, wobei ein Bit des Schieberegisters eine digitale
Eins enthält,
um eine Zeile der Konfigurationsspeicherzellen zu kennzeichnen.
Der Zeilenzeiger wird inkrementiert, indem das Schieberegister das eine
Bit verschiebt.
-
Obwohl der auf dem Chip befindliche
Prozessor, der Konfigurationsdaten in die programmierbare Logikbauelementschaltung
liest, in Verbindung mit einer SRAM-basierten FPGA-Architektur beschrieben
ist, ist der auf dem Chip befindliche Prozessor auch in anderen
programmierbaren logischen Speicherbauelementen verwendbar, einschließlich in FLASH-PDLs
und FPGAs.
-
Der Prozessor kann für den Konfigurationsprozeß anwendungsspezifisch
sein, wie oben beschrieben, oder der Prozessor kann als Alternative
in der anwenderspezifischen Schaltung verwendbar sein, die in der
FPGA konfiguriert ist. Anweisungen können im ankommenden Konfigurationsdatenbitstrom
enthalten sein. Diese Anweisungen können Anweisungen für den Prozessor 9 sein,
oder sie können
als Alternative Anweisungen einer höheren Programmiersprache sein,
die selbst keine tatsächlichen Prozessoranweisungen
sind, sondern höhere
Funktionen anzeigen, die vom Prozessor 9 als eine Serie von
Prozessoranweisungen ausgeführt
werden. Demzufolge können
verschiedene Modifikationen, Adaptionen und Kombinationen verschiedener
Merkmale der beschriebenen Ausführungsformen
in die Praxis umgesetzt werden, ohne den Schutzbereich der Endung,
wie er in den Ansprüchen
ausgeführt
ist, zu verlassen.