DE60100476T2 - Unterstützung mehrerer konfigurationszustände eines fpga mittels eines auf dem integrierten schaltkreis dafür vorgesehenen prozessors - Google Patents

Unterstützung mehrerer konfigurationszustände eines fpga mittels eines auf dem integrierten schaltkreis dafür vorgesehenen prozessors Download PDF

Info

Publication number
DE60100476T2
DE60100476T2 DE60100476T DE60100476T DE60100476T2 DE 60100476 T2 DE60100476 T2 DE 60100476T2 DE 60100476 T DE60100476 T DE 60100476T DE 60100476 T DE60100476 T DE 60100476T DE 60100476 T2 DE60100476 T2 DE 60100476T2
Authority
DE
Germany
Prior art keywords
configuration
integrated circuit
processor
read
programmable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60100476T
Other languages
English (en)
Other versions
DE60100476D1 (de
Inventor
H. Austin LESEA
M. Stephen TRIMBERGER
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xilinx Inc filed Critical Xilinx Inc
Application granted granted Critical
Publication of DE60100476D1 publication Critical patent/DE60100476D1/de
Publication of DE60100476T2 publication Critical patent/DE60100476T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Stored Programmes (AREA)

Description

  • 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) 36, 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 1618 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 122124 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 119124 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 119124 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.

Claims (9)

  1. Verfahren zum Konfigurieren einer anwenderprogrammierbaren Logikstruktur eines programmierbaren integrierten Schaltkreises, wobei der programmierbare integrierte Schaltkreis eine programmierbare Logikstruktur, eine Vielzahl von Anschlüssen, einen Prozessor und eine Vielzahl von Konfigurationsprogrammen umfaßt, wobei das Verfahren folgende Schritte umfaßt, die im Prozessor erfolgen: (a) Lesen eines aus der Vielzahl von Konfigurationsmoduscodes von der Vielzahl von Anschlüssen, wobei der Konfigurationsmoduscode einen aus der Vielzahl von Konfigurationsprogrammen anzeigt; und (b) Ausführen des einen aus der Vielzahl von Konfigurationsprogrammen, das vom Konfigurationsmoduscode bestimmt wird, der vom Prozessor gelesen wird, wobei die Ausführung des einen aus der Vielzahl von Konfigurationsprogrammen bewirkt, daß Konfigurationsdaten in den programmierbaren integrierten Schaltkreis gelesen werden und die anwenderprogrammierbare Logikstruktur konfiguriert wird.
  2. Verfahren nach Anspruch 1, wobei das eine aus der Vielzahl von Konfigurationsprogrammen und der Prozessor zusammen eine Einrichtung sind, die bewirken soll, daß Konfigurationsdaten in einem ersten Format in den programierbaren integrierten Schaltkreis gelesen werden, und wobei ein anderes aus der Vielzahl von Konfigurationsprogrammen und der Prozessor zusammen eine Einrichtung sind, die bewirken soll, daß Konfigurationsdaten in einem zweiten Format in den programmierbaren integrierten Schaltkreis gelesen werden.
  3. Verfahren nach Anspruch 1, wobei das eine aus der Vielzahl von Konfigurationsprogrammen und der Prozessor zusammen eine Einrichtung sind, die bewirken soll, daß Konfigurationsdaten in den programmieren integrierten Schaltkreis seriell über einen einzelnen Anschluß des programmierbaren integrierten Schaltkreises gelesen werden, und wobei ein anderes aus der Vielzahl von Konfigurationsprogrammen und der Prozessor zusammen eine Einrichtung sind, die bewirken soll, daß Konfigurationsdaten in den programmierbaren integrierten Schaltkreis parallel über eine Vielzahl von Anschlüssen des programmierbaren integrierten Schaltkreises gelesen werden.
  4. Verfahren nach Anspruch 1, wobei das eine aus der Vielzahl von Konfigurationsprogrammen und der Prozessor zusammen eine Einrichtung sind, die bewirken soll, daß Konfigurationsdaten in den programmierbaren integrierten Schaltkreis seriell über einen einzelnen Anschluß des programmierbaren integrierten Schaltkreises gelesen werden und in einen parallelen Datenstrom zum Anlegen an Konfigurationsspeicherzellen umgesetzt werden.
  5. Verfahren nach Anspruch 4, wobei das eine aus der Vielzahl von Konfigurationsprogrammen und der Prozessor zusammen bewirken, daß Konfigurationsdaten an einen seriellen Eingangsanschluß eines Schieberegisters angelegt werden und an parallelen Ausgangsanschlüssen des Schieberegisters ausgelesen werden.
  6. Verfahren nach Anspruch 1, wobei während der Ausführung des einen aus der Vielzahl von Konfigurationsprogrammen der Prozessor bestimmt, ob ein Anschluß des programmierbaren integrierten Schaltkreises als Eingangsanschluß oder als Ausgangsanschluß konfiguriert wird.
  7. Verfahren nach Anspruch 1, wobei das Lesen des Konfigurationsmoduscodes durch den Prozessor automatisch nach dem Einschalten des programmierbaren integrierten Schaltkreises erfolgt.
  8. Programmierbarer integrierter Schaltkreis mit: einer anwenderprogrammierbaren Logikstruktur; mindestens einem Codeanschluß; einem Speicher, der ein erstes Konfigurationsprogramm und ein zweiten Konfigurationsprogramm speichert; und einem Prozessor, wobei der Prozessor den mindestens einen Codeanschluß liest und auf der Grundlage eines Konfigurationsmoduscodes an dem Codeanschluß bestimmt, ob das erste Konfigurationsprogramm oder das zweite Konfigurationsprogramm ausgeführt werden soll, wobei die Ausführung des ersten Konfigurationsprogramms bewirken würde, daß erste Konfigurationsdaten in den programmierbaren integrierten Schaltkreis gelesen werden und die anwenderprogranmierbare Logikstruktur konfiguriert wird, und wobei die Ausführung des zweiten Konfigurationsprogramms bewirken würde, daß zweite Konfigurationsdaten in den programmierbaren integrierten Schaltkreis gelesen werden und die anwenderprogrammierbare Logikstruktur konfiguriert wird.
  9. Programmierbarer integrierter Schaltkreis nach Anspruch 8, wobei die Konfigurationsdaten, die in die programmierbare integrierte Schaltung unter Verwendung des ersten Konfigurationsprogramms gelesen werden, in der programmierbaren integrierten Schaltung seriell über einen einzelnen Anschluß des programmierbaren integrierten Schaltkreises empfangen würden und wobei die Konfigurationsdaten, die in den programmierbaren integrierten Schaltkreis unter Verwendung des zweiten Konfigurationsprogramms gelesen werden, im programmierbaren integrierten Schaltkreis parallel über eine Vielzahl von Anschlüssen des programmierbaren integrierten Schaltkreises empfangen würden.
DE60100476T 2000-02-07 2001-01-05 Unterstützung mehrerer konfigurationszustände eines fpga mittels eines auf dem integrierten schaltkreis dafür vorgesehenen prozessors Expired - Lifetime DE60100476T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US499499 2000-02-07
US09/499,499 US6496971B1 (en) 2000-02-07 2000-02-07 Supporting multiple FPGA configuration modes using dedicated on-chip processor
PCT/US2001/000367 WO2001059629A1 (en) 2000-02-07 2001-01-05 Supporting multiple fpga configuration modes using dedicated on-chip processor

Publications (2)

Publication Number Publication Date
DE60100476D1 DE60100476D1 (de) 2003-08-21
DE60100476T2 true DE60100476T2 (de) 2004-04-15

Family

ID=23985488

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60100476T Expired - Lifetime DE60100476T2 (de) 2000-02-07 2001-01-05 Unterstützung mehrerer konfigurationszustände eines fpga mittels eines auf dem integrierten schaltkreis dafür vorgesehenen prozessors

Country Status (6)

Country Link
US (1) US6496971B1 (de)
EP (1) EP1256075B1 (de)
JP (1) JP5183845B2 (de)
CA (1) CA2399384C (de)
DE (1) DE60100476T2 (de)
WO (1) WO2001059629A1 (de)

Families Citing this family (115)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
EP1329816B1 (de) 1996-12-27 2011-06-22 Richter, Thomas Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US7003593B2 (en) * 1997-12-17 2006-02-21 Src Computers, Inc. Computer system architecture and memory controller for close-coupling within a hybrid processing system utilizing an adaptive processor interface port
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US7146441B1 (en) * 1998-03-16 2006-12-05 Actel Corporation SRAM bus architecture and interconnect to an FPGA
CN1378665A (zh) 1999-06-10 2002-11-06 Pact信息技术有限公司 编程概念
US6675306B1 (en) * 2000-03-10 2004-01-06 Ricoh Company Ltd. Method and apparatus for phase-lock in a field programmable gate array (FPGA)
EP1342158B1 (de) 2000-06-13 2010-08-04 Richter, Thomas Pipeline ct-protokolle und -kommunikation
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US8160864B1 (en) 2000-10-26 2012-04-17 Cypress Semiconductor Corporation In-circuit emulator and pod synchronized boot
ITRM20010298A1 (it) * 2001-05-31 2002-12-02 Micron Technology Inc Interfaccia di comando di utilizzatore con decodificatore programmabile.
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
WO2002103532A2 (de) * 2001-06-20 2002-12-27 Pact Xpp Technologies Ag Verfahren zur bearbeitung von daten
US6912706B1 (en) * 2001-08-15 2005-06-28 Xilinx, Inc. Instruction processor and programmable logic device cooperative computing arrangement and method
US7996827B2 (en) * 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US7406674B1 (en) 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
US8078970B1 (en) 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US6971004B1 (en) 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US7844437B1 (en) 2001-11-19 2010-11-30 Cypress Semiconductor Corporation System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
GB2382175A (en) * 2001-11-20 2003-05-21 Hewlett Packard Co Reconfigurable processor
DE10392560D2 (de) 2002-01-19 2005-05-12 Pact Xpp Technologies Ag Reconfigurierbarer Prozessor
WO2003071432A2 (de) 2002-02-18 2003-08-28 Pact Xpp Technologies Ag Bussysteme und rekonfigurationsverfahren
US6976160B1 (en) * 2002-02-22 2005-12-13 Xilinx, Inc. Method and system for controlling default values of flip-flops in PGA/ASIC-based designs
US7047465B1 (en) 2002-02-28 2006-05-16 Xilinx, Inc. Methods for using defective programmable logic devices by customizing designs based on recorded defects
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US8103497B1 (en) 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
US20030212853A1 (en) * 2002-05-09 2003-11-13 Huppenthal Jon M. Adaptive processor architecture incorporating a field programmable gate array control element having at least one embedded microprocessor core
US7406573B2 (en) * 2002-05-09 2008-07-29 Src Computers, Inc. Reconfigurable processor element utilizing both coarse and fine grained reconfigurable elements
FI20021379A (fi) * 2002-07-12 2004-01-13 Plustech Oy Sahalaitteisto ja sen turvajärjestelmä katkeavan sahaketjun varalle
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
EP1537486A1 (de) 2002-09-06 2005-06-08 PACT XPP Technologies AG Rekonfigurierbare sequenzerstruktur
US6891753B2 (en) * 2002-09-24 2005-05-10 Sandisk Corporation Highly compact non-volatile memory and method therefor with internal serial buses
US6983428B2 (en) * 2002-09-24 2006-01-03 Sandisk Corporation Highly compact non-volatile memory and method thereof
FI115256B (fi) * 2002-11-08 2005-03-31 Nokia Corp Suljetun järjestelmän toimintotietojen määrittäminen
US7283591B2 (en) * 2003-03-28 2007-10-16 Tarari, Inc. Parallelized dynamic Huffman decoder
US7237106B1 (en) * 2003-07-18 2007-06-26 Altera Corporation System for loading configuration data into a configuration word register by independently loading a plurality of configuration blocks through a plurality of configuration inputs
US7170315B2 (en) 2003-07-31 2007-01-30 Actel Corporation Programmable system on a chip
JP4700611B2 (ja) 2003-08-28 2011-06-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理装置およびデータ処理方法
US7086025B1 (en) * 2003-10-23 2006-08-01 Adaptec, Inc. Programmable logic device partitioning method for application specific integrated circuit prototyping
US7653820B1 (en) * 2003-10-31 2010-01-26 Xilinx, Inc. System and method for securing using decryption keys during FPGA configuration using a microcontroller
US7219325B1 (en) * 2003-11-21 2007-05-15 Xilinx, Inc. Exploiting unused configuration memory cells
US7295049B1 (en) 2004-03-25 2007-11-13 Cypress Semiconductor Corporation Method and circuit for rapid alignment of signals
US8183881B1 (en) 2004-03-29 2012-05-22 Xilinx, Inc. Configuration memory as buffer memory for an integrated circuit
US7975094B2 (en) * 2004-04-15 2011-07-05 Marvell International Technology Ltd. Programmable I/O interface
US7353374B1 (en) * 2004-06-22 2008-04-01 Xilinx, Inc. Integrated circuit with supervisory control circuit
US7853799B1 (en) * 2004-06-24 2010-12-14 Xilinx, Inc. Microcontroller-configurable programmable device with downloadable decryption
US7623660B1 (en) 2004-07-20 2009-11-24 Xilinx, Inc. Method and system for pipelined decryption
US7284229B1 (en) 2004-10-01 2007-10-16 Xilinx, Inc. Multiple bitstreams enabling the use of partially defective programmable integrated circuits while avoiding localized defects therein
US7424655B1 (en) 2004-10-01 2008-09-09 Xilinx, Inc. Utilizing multiple test bitstreams to avoid localized defects in partially defective programmable integrated circuits
US7412635B1 (en) 2004-10-01 2008-08-12 Xilinx, Inc. Utilizing multiple bitstreams to avoid localized defects in partially defective programmable integrated circuits
US7328335B1 (en) * 2004-10-01 2008-02-05 Xilinx, Inc. Bootable programmable logic device for internal decoding of encoded configuration data
US7251804B1 (en) 2004-10-01 2007-07-31 Xilinx, Inc. Structures and methods of overcoming localized defects in programmable integrated circuits by routing during the programming thereof
US7689726B1 (en) 2004-10-01 2010-03-30 Xilinx, Inc. Bootable integrated circuit device for readback encoding of configuration data
US7149997B1 (en) * 2004-10-15 2006-12-12 Xilinx, Inc. Routing with frame awareness to minimize device programming time and test cost
US7314174B1 (en) * 2004-10-22 2008-01-01 Xilinx, Inc. Method and system for configuring an integrated circuit
US7332976B1 (en) * 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
US7400183B1 (en) 2005-05-05 2008-07-15 Cypress Semiconductor Corporation Voltage controlled oscillator delay cell and method
JP4940464B2 (ja) * 2005-09-16 2012-05-30 独立行政法人産業技術総合研究所 ネットワーク機器試験装置
US7282949B2 (en) * 2005-09-30 2007-10-16 International Business Machines Corporation FPGA powerup to known functional state
US7304493B2 (en) * 2005-09-30 2007-12-04 International Business Machines Corporation FPGA powerup to known functional state
FR2895106A1 (fr) 2005-12-20 2007-06-22 Thomson Licensing Sas Procede de telechargement d'un fichier de configuration dans un circuit programmable, et appareil comportant ledit composant.
JP2009524134A (ja) 2006-01-18 2009-06-25 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト ハードウェア定義方法
US8067948B2 (en) 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
US8407658B2 (en) 2007-02-01 2013-03-26 International Business Machines Corporation Methods, systems, and computer program products for using direct memory access to initialize a programmable logic device
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US9564902B2 (en) * 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US8130025B2 (en) 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US8040266B2 (en) 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US7737724B2 (en) 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
US7619438B1 (en) 2007-10-11 2009-11-17 Xilinx, Inc. Methods of enabling the use of a defective programmable device
US7853916B1 (en) 2007-10-11 2010-12-14 Xilinx, Inc. Methods of using one of a plurality of configuration bitstreams for an integrated circuit
US7810059B1 (en) 2007-10-11 2010-10-05 Xilinx, Inc. Methods of enabling the validation of an integrated circuit adapted to receive one of a plurality of configuration bitstreams
US7974124B2 (en) 2009-06-24 2011-07-05 Sandisk Corporation Pointer based column selection techniques in non-volatile memories
US20110082994A1 (en) * 2009-10-06 2011-04-07 Utah State University Accelerated relocation circuit
CN102622044B (zh) * 2011-01-28 2014-04-02 微盟电子(昆山)有限公司 主机板及其pcie端口动态配置方法
JP2013030906A (ja) * 2011-07-27 2013-02-07 Fujitsu Ltd プログラマブルロジックデバイス
US8842473B2 (en) 2012-03-15 2014-09-23 Sandisk Technologies Inc. Techniques for accessing column selecting shift register with skipped entries in non-volatile memories
CN102662780B (zh) * 2012-03-22 2015-06-10 中兴通讯股份有限公司 多可编程器件系统中电源保护方法及装置
JP5890733B2 (ja) * 2012-04-09 2016-03-22 太陽誘電株式会社 再構成可能な半導体装置の配置配線方法、そのプログラム、及び配置配線装置
JP5927012B2 (ja) * 2012-04-11 2016-05-25 太陽誘電株式会社 再構成可能な半導体装置
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
US9754133B2 (en) * 2013-03-14 2017-09-05 Microchip Technology Incorporated Programmable device personalization
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
US9582295B2 (en) * 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US10296392B2 (en) 2015-04-17 2019-05-21 Microsoft Technology Licensing, Llc Implementing a multi-component service using plural hardware acceleration components
US10198294B2 (en) 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
US10511478B2 (en) 2015-04-17 2019-12-17 Microsoft Technology Licensing, Llc Changing between different roles at acceleration components
US9819542B2 (en) 2015-06-26 2017-11-14 Microsoft Technology Licensing, Llc Configuring acceleration components over a network
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
US11119835B2 (en) 2017-08-30 2021-09-14 Intel Corporation Technologies for providing efficient reprovisioning in an accelerator device
CN108536455B (zh) * 2018-03-06 2021-08-27 湖南汉拓物联科技有限公司 芯片控制方法及终端设备
CN109783434B (zh) * 2018-10-25 2023-05-09 西安空间无线电技术研究所 低代价高可靠的星载单机多片sram型fpga在轨重构系统及方法
KR20200053886A (ko) 2018-11-09 2020-05-19 삼성전자주식회사 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템
CN112532207B (zh) * 2020-11-19 2024-01-26 浙江集速合芯科技有限公司 一种片上可变滤波器快速调谐的方法
EP4198750A1 (de) * 2021-12-17 2023-06-21 dSPACE GmbH Verfahren zur datenkommunikation zwischen teilbereichen eines fpgas

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321840A (en) * 1988-05-05 1994-06-14 Transaction Technology, Inc. Distributed-intelligence computer system including remotely reconfigurable, telephone-type user terminal
US5109503A (en) 1989-05-22 1992-04-28 Ge Fanuc Automation North America, Inc. Apparatus with reconfigurable counter includes memory for storing plurality of counter configuration files which respectively define plurality of predetermined counters
US5438672A (en) 1990-12-18 1995-08-01 National Semiconductor Corporation Microcontroller emulator for plural device architecture configured by mode control data and operated under control code transmitted via same switching bus
US5263168A (en) * 1991-06-03 1993-11-16 Motorola, Inc. Circuitry for automatically entering and terminating an initialization mode in a data processing system in response to a control signal
US5479618A (en) * 1991-07-24 1995-12-26 Allen-Bradley Company, Inc. I/O module with reduced isolation circuitry
JPH07154241A (ja) * 1993-11-29 1995-06-16 Olympus Optical Co Ltd プログラマブル集積回路を用いた電子回路
US5892961A (en) 1995-02-17 1999-04-06 Xilinx, Inc. Field programmable gate array having programming instructions in the configuration bitstream
WO1996034346A1 (en) * 1995-04-28 1996-10-31 Xilinx, Inc. Microprocessor with distributed registers accessible by programmable logic device
US5646545A (en) 1995-08-18 1997-07-08 Xilinx, Inc. Time multiplexed programmable logic device
US5794033A (en) * 1995-10-24 1998-08-11 International Business Machines Corporation Method and system for in-site and on-line reprogramming of hardware logics with remote loading in a network device
US5956518A (en) * 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US6178494B1 (en) * 1996-09-23 2001-01-23 Virtual Computer Corporation Modular, hybrid processor and method for producing a modular, hybrid processor
US6134707A (en) * 1996-11-14 2000-10-17 Altera Corporation Apparatus and method for in-system programming of integrated circuits containing programmable elements
JPH10240561A (ja) * 1997-02-27 1998-09-11 Kokusai Electric Co Ltd Fpgaブート用エミュレータ及びfpgaブート方法
JPH118547A (ja) * 1997-06-17 1999-01-12 Fuji Xerox Co Ltd 再構成可能演算装置
JPH1174360A (ja) * 1997-08-27 1999-03-16 Nec Kansai Ltd 半導体論理回路装置
US6078736A (en) * 1997-08-28 2000-06-20 Xilinx, Inc. Method of designing FPGAs for dynamically reconfigurable computing
JP3571886B2 (ja) * 1997-10-09 2004-09-29 株式会社ルネサステクノロジ データ処理装置
JPH11214520A (ja) * 1998-01-22 1999-08-06 Advantest Corp 半導体集積回路
US6141756A (en) * 1998-04-27 2000-10-31 Motorola, Inc. Apparatus and method of reading a program into a processor
US6255849B1 (en) * 2000-02-04 2001-07-03 Xilinx, Inc. On-chip self-modification for PLDs

Also Published As

Publication number Publication date
EP1256075A1 (de) 2002-11-13
DE60100476D1 (de) 2003-08-21
CA2399384C (en) 2008-03-04
JP5183845B2 (ja) 2013-04-17
EP1256075B1 (de) 2003-07-16
CA2399384A1 (en) 2001-08-16
US6496971B1 (en) 2002-12-17
JP2003523077A (ja) 2003-07-29
WO2001059629A1 (en) 2001-08-16

Similar Documents

Publication Publication Date Title
DE60100476T2 (de) Unterstützung mehrerer konfigurationszustände eines fpga mittels eines auf dem integrierten schaltkreis dafür vorgesehenen prozessors
DE4417575C2 (de) Verbesserte Array-Architektur für programmierbare logische Zellen
DE2755273C2 (de)
DE69914864T2 (de) Steuerung der konfiguration in einer programmierbaren logik-einheit mittels nichtflüchtiger bauelemente
DE69827589T2 (de) Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
DE60118622T2 (de) Benutzer-konfigurierbares on-chip speichersystem
DE69534812T2 (de) Programmierbare logische Vorrichtung, die mehr als eine Konfiguration speichert, und Mittel zum Umschalten der Konfiguration
DE4416881C2 (de) Verfahren zum Betrieb einer Datenverarbeitungseinrichtung
DE102005005073B4 (de) Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen
DE19510902A1 (de) Emulation eines Mehrtor-Speichers unter Verwendung von Markierregistern
DE102004045527B4 (de) Konfigurierbare Logikschaltungsanordnung
DE2723821A1 (de) Programmierbare logische anordnung
DE3508640A1 (de) Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus
DE102011053359A1 (de) Latch-basierte Speichervorrichtung
DE69432512T2 (de) Für fensterumgebungsoperationen entworfenes rasterpuffersystem
DE60128598T2 (de) Verfahren und system zur sicheren rekonfigurierung eines gerätes
DE2951040C2 (de)
EP1116129B1 (de) Konfigurierbarer hardware-block
DE2245284A1 (de) Datenverarbeitungsanlage
EP0347970B1 (de) Verfahren zum Prüfen eines Festwertspeichers und Anordnung zur Durchführung des Verfahrens
EP1789889B1 (de) Rechnereinrichtung mit rekonfigurierbarer architektur zur aufnahme eines globalen zellularen automaten
DE102004006769B3 (de) Auslesevorrichtung
DE112019007386T5 (de) Verbesserte jtag-register mit gleichzeitigen eingängen
DE2747304A1 (de) Einrichtung zur mikrobefehlssteuerung
DE60104549T2 (de) Datenverarbeitungsanordnung zur behandlung von verschiedenen datenarten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition