-
Hintergrund der Erfindung
-
1. Gebiet der Erfindung
-
Diese
Erfindung bezieht sich auf programmierbare, integrierte Schaltungen
und insbesondere bezieht sich die vorliegende Erfindung auf Techniken zur
gleichzeitigen Programmierung mehrerer programmierbarer Einrichtungen.
-
2. Diskussion
der verwandten Technik
-
Electronique
Radioplan, Nr. 569, April 1995, Seiten 23 bis 27, „La programmation 'Daisy Chain' des composants isp
Lattice" offenbart
eine Vielzahl von In-System
programmierbaren, integrierten Schaltungen (isp Einrichtungen, isp
Devices), die unter Verwendung einer Prioritäts- bzw. Rangkettenkonfiguration
(Daisy Chain Configuration) mit einem Computer verbunden sind. Dieses
Dokument liefert eine bloße
Beschreibung der Anordnung und der Voraussetzungen, die nötig sind
um die Programmierung aller Einrichtungen zur gleichen Zeit durchzuführen.
-
Programmierbare
Einrichtungen, die programmiert und umprogrammiert werden können, ohne
von ihrer Anwendungsumgebung entfernt zu werden, werden weitgehend
bevorzugt, weil die Programmierung und Umprogrammierung solcher
Einrichtungen mit Leichtigkeit durchgeführt werden kann. Eine Bauart
solcher Einrichtungen sind die „In-System programmierbaren
logischen Einrichtungen (in-system programmable logic devices)" oder „ISP PLDs", die von Lattice
Semicondutor Corporation erhältlich
sind. (Um die Bezugnahme zu vereinfachen, werden in der folgenden
Beschreibung solche und ähnliche
Einrichtungen alle als „ISP
PLDs" bezeichnet.
Es ist klar, dass die Lehren in der folgenden Beschreibung auf alle
Arten von feldprogrammierbaren Einrichtungen anwendbar sind, einschließlich programmierbarer
Logikeinrichtungen, programmierbarer Speicher und programmierbarer
Analogschaltungen.) Die Ausgestaltung und Verwendung von ISP PLDs
sind im Stand der Technik offenbart, beispielsweise (i) U.S. Patent
5,329,179 mit dem Titel „Arrangement For
Parallel Programming Of In-system Programmable IC Logical Devices" von Tang et al.
eingereicht am 5. Oktober 1992 und erteilt am 12. Juli 1994. (ii)
U.S. Patent 5,237,218 mit dem Titel „Structure and Method for
Multiplexing Pins for In-system Programming" von G. Josephson et al. eingereicht am
3. Mai 1991 und erteilt am 13. August 1993. (iii) U.S. Patent 4,879,688
mit dem Titel „In-system
Programmable Logical Devices" von
Turner et al. eingereicht am 13. Mai 1986 erteilt am 7. November
1989 und (iv) U.S. Patent 4,855,954 mit dem Titel „In-System
Programmable Logic Device with Four Dedicated Terminals" von Turner et al.
eingereicht am 25. Oktober 1988 und erteilt am 8. August 1989.
-
Im
Stand der Technik wird jede ISP PLD in einer Systembaugruppe, die
mehrere ISP PLDs enthält,
individuell und sequentiell programmiert. Um mehrere ISP PLDs gleichzeitig
zu programmieren, werden sowohl zusätzliche Hardware als auch spezielle
Konfigurationen der ISP PLDs benötigt.
Beispielsweise werden, wo gleichzeitige Programmierung von mehreren
ISP PLDs möglich
ist, typischerweise zusätzliche
Schaltkreise zum Signalmultiplexen bzw. zur Signalbündelung
benötigt.
Wenn Einrichtungen in einer Anwendung individuell und sequentiell
programmiert werden, werden die zu programmierenden Einrichtungen
seriell verkettet und deshalb ist die gesamte Programmierzeit der
seriellen Verkettung der Einrichtungen die Summe der Zeiten, die
benötigt
werden, um jede Einrichtung individuell zu programmieren.
-
Ein
ISP PLD enthält
eine große
Anzahl programmierbarer Logikkomponenten, beispielsweise die „min-Ausdrücke (min-terms)" einer programmierbaren
Gatteranordnung (gate array). Bei einigen ISP PLDs ist ein linearer
Adressraum vorgesehen und die programmierbaren Logikkomponenten
einer ISP PLD werden in aufsteigender Adressreihenfolge programmiert,
bis alle der programmierbaren Logikkomponenten der gesamten ISP
PLD programmiert sind. Also selbst wenn gleichzeitige Programmierung
vorgesehen ist, ist somit die gesamte Programmierzeit einer Systembaugruppe
oft bestimmt durch die Summe der benötigten Zeiten, um diejenige
ISP PLD auf der Systembaugruppe zu programmieren, die die größte Anzahl
von programmierbaren Kompo nenten besitzt, und der benötigten Zeit,
um Daten zu allen der ISP PLDs der seriellen Verkettung zu senden.
-
Im
Stand der Technik wird einem „Programmierkommandogenerator" eine Datendatei übergeben,
die nur die zur Programmierung der ISP PLDs auf einer vorgegebenen
Systembaugruppe benötigten
Muster enthält.
Der Programmierkommandogenerator erlangt von der Datendatei alle
der einrichtungsabhängigen
Parameter und liefert die Kommandos für die eintretende Programmierung.
-
Zusammenfassung
der Erfindung
-
Gemäß der vorliegenden
Erfindung wird ein Verfahren gemäß Anspruch
1 vorgesehen.
-
Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung weist solch ein Verfahren die folgenden
Schritte auf: (i) Serielles Verbinden feldprogrammierbarer Einrichtungen
in einer Kettenkonfiguration; (ii) Konstruieren einer Datenstromdatei,
die einen zusammengesetzten Datenstrom zum gleichzeitigen bzw. simultanen
Programmieren der feldprogrammierbaren Einrichtungen beinhaltet,
so dass die programmierbaren Einrichtungen gleichzeitig unter dem
Datenstrom eingeplant werden, um (a) Instruktionen zu empfangen,
(b) Programmierungsdaten in die feldprogrammierbaren Einrichtungen
zu schieben, (c) Instruktionen auszuführen und (d) Daten aus den
feldprogrammierbaren Einrichtungen zu schieben; (iii) Abrufen eines
individuellen Programmierdatenstroms für jede der feldprogrammierbaren
Einrichtungen aus jeder von einer Anzahl von Programmdatendateien;
(iv) Füllen
der Datenstromdatei mit Programmierdaten aus jedem der auf diese
Weise abgerufenen individuellen Programmierdatenströmen; und
(v) gleichzeitiges Programmieren der feldprogrammierbaren Einrichtungen
unter Verwendung der auf diese Weise zusammengesetzten Datenstromdatei.
-
Gemäß einem
weiteren Ausführungsbeispiel der
vorliegenden Erfindung beinhaltet der individuelle Programmierdatenstrom
Programmierinstruktionen bzw. Programmieranweisungen und Programmierdaten.
Bei diesem weiteren Ausführungsbeispiel
werden Programmierdaten so sortiert, dass Zeilen, die ein vorbestimmtes
Datenmuster (beispielsweise alle „1") hinter Zeilen angeordnet sind, die
das vorbestimmte Datenmuster nicht besitzen. In einem Ausführungsbeispiel
entspricht das vorbestimmte Datenmuster einem Grund- bzw. Standarddatenmuster
der feldprogrammierbaren Einrichtung, und zwar wenn diese nicht
programmiert ist. Gemäß der vorliegenden
Erfindung kann die Programmierung für solche Zeilen weggelassen
werden.
-
Die
vorliegende Erfindung erreicht den Vorteil der gleichzeitigen Programmierung
der Einrichtungen in einer seriell verbundenen Verkettung von feldprogrammierbaren
Einrichtungen und minimiert dadurch die gesamte Programmierzeit.
Die vorliegende Erfindung erreicht einen derartigen Vorteil durch
die Verwendung konventioneller Programmierhardware ohne zusätzliche
Schaltkreise zu benötigen.
-
Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung werden die mit dem Verfahren der vorliegenden
Erfindung programmierten Einrichtungen nicht notwendigerweise in
aufsteigender oder absteigender Adressreihenfolge programmiert. Durch
Gruppierung von Programmierdateneinheiten (beispielsweise Zeilen)
dementsprechend ob ein vorbestimmtes Muster in den Programmierdaten
in einer vorgegebenen Programmiereinheit existiert, um es zu erlauben
so eine Programmiereinheit wegzulassen, kann eine minimale Programmierzeit
realisiert werden. Bei der vorliegenden Erfindung können erhebliche
Einsparungen bezüglich
der Programmierzeit erreicht werden, und zwar durch das Weglassen der
Programmierung bei einer Programmiereinheit, die so ein vorbestimmtes
Datenmuster besitzt.
-
Die
vorliegende Erfindung reduziert ferner die Programmierzeit durch
das Aufreihen der Adressen von Zeilen, die keine Programmierung
benötigen.
-
Diese
Erfindung vereinfacht den Softwareprogrammteil eines Programmierkommandogenerators
durch die Verwendung einer zusammengesetzten Datei (ispSTREAM Datei),
die den ID Datenstrom, den Adressdatenstrom, den Befehlsdatenstrom
und den Programmierdatenstrom beinhaltet. Wenn diese Datenströme auf mehrere
ISP PLDs gleichzeitig angewendet werden sind die Setupzeiten der
seriell verbundenen ISP PLDs gemeinsam, dadurch wird eine beträchtliche
Einsparung bezüglich der
Programmierzeit erreicht.
-
Gemäß noch einem
weiteren Ausführungsbeispiel
der vorliegenden Erfindung wird eine Datendatei vorbereitet, die
einen Datenstrom einschließlich Programmierdatenbitmustern,
Programmieradressen und Programmieranweisungen repräsentiert.
Die Vorbereitung solch einer Datendatei vereinfacht die Aufgabe
für den
Programmierkommandogenerator bzw. Programmierbefehlsgenerator.
-
Die
vorliegende Erfindung wird besser verstanden nach der Betrachtung
der nachstehenden detaillierten Beschreibung und der begleitenden Zeichnungen.
-
Kurze Beschreibung
der Zeichnungen
-
1 zeigt eine Feldabbildung
bzw. Matrixanordnung einer ispGAL22V10 Einrichtung bzw. Baugruppe.
-
2 zeigt eine Feldabbildung
einer ispLSI 1016 Baugruppe.
-
3 zeigt eine Feldabbildung
einer ispLSI 1032 Baugruppe.
-
4 zeigt ein Ausführungsbeispiel
der vorliegenden Erfindung in dem drei ISP PLDs 401, 402 und 403 mit
einem Programmierkommandogenerator 404 verbunden sind.
-
5 zeigt eine Konfigurationsbeschreibungsdatei 500 zur
Festlegung bzw. Spezifizierung der Programmierung der ISP PLDs 401, 402 und 403 der 4.
-
6 ist eine JEDEC Datei,
die die „22V10.jed" Datei auf die in 5 für ISP PLD 401 verwiesen
wurde veranschaulicht.
-
7 ist eine JEDEC Datei,
die die „1016.jed" Datei auf die in 5 für ISP PLD 402 verwiesen
wurde veranschaulicht.
-
8 ist eine JEDEC Datei,
die die „1032.jed" Datei auf die in 5 für ISP PLD 403 verwiesen
wurde veranschaulicht.
-
9 veranschaulicht die zusammengesetzte
Feldabbildung für
die seriell verbundene Verkettung bzw. Kette 400 der 4.
-
10a zeigt tatsächliche
Instruktionen und Programmdatenbits, die aus den JEDEC Dateien der 6 bis 8 erhalten wurden, geliefert an ispSTREAM Datei 1000 der
untenfolgenden 10b.
-
10b zeigt das Format einer
ispSTREAM Datei 1000 für
die seriell verbundene Verkettung 400 der 4; die seriell verbundene Verkettung 400 umfasst
die PLD ISPs 401, 402 und 403.
-
10c zeigt den ausführbaren
Befehlssatz der Programmierzustandsmaschine einer Baugruppe des
Typs ispGAL22V10.
-
10d zeigt den ausführbaren
Befehlssatz der Programmierzustandsmaschine einer Baugruppe des
Typs ispLSI.
-
11 ist eine Signalprotokolldarstellung, die
die Übergänge der
Signale ispEN, MODE, SCLK und SDI zeigt, wenn eine ISP PLD in einen „Schiebe"-Zustand oder einen „Ausführ"-Zustand platziert wird.
-
12 ist eine schematische
Darstellung, die Adressbits zeigt, die in Schiebeadressregister 202 und 302 geschoben
werden.
-
13 zeigt die Inhalte, der
Datenregister 103, 203a und 303 nach
dem Ausführen
des in 15c dargestellten
Schritts 1516.
-
14 ist ein Flussdiagramm 1400,
das die Kreation bzw. Erzeugung einer ispSTREAM Datei gemäß der vorliegenden
Erfindung veranschaulicht.
-
15a zeigt einen Teil 1500a eines
Flussdiagramms 1500, welches ein Verfahren zur Verarbeitung
und zum Herunterladen von Daten der ispSTREAM Datei 1000 zu
Zieleinrichtungen bzw. Zielbaugruppen seriell verbundener Verkettungen 400 der 4 zeigt.
-
15b zeigt einen Teil 1500b eines
Flussdiagramms 1500, der ein Verfahren zur Verarbeitung und
zum Herunterladen von Daten der ispSTREAM Datei 1000 zu
Zieleinrichtungen der seriell verbundenen Verkettung der 4 zeigt.
-
15c zeigt einen Teil 1500c eines
Flussdiagramms 1500, der ein Verfahren zur Verarbeitung und
zum Herunterladen von Daten der ispSTREAM Datei 1000 zu
Zieleinrichtungen der seriell verbundenen Verkettung 400 der 4 zeigt.
-
15d zeigt einen Teil 1500d eines
Flussdiagramms 1500, der ein Verfahren zur Verarbeitung und
zum Herunterladen von Daten der ispSTREAM Datei 1000 zu
Zieleinrichtungen der seriell verbundenen Verkettung 400 der 4 zeigt.
-
15e zeigt einen Teil 1500e eines
Flussdiagramms 1500, der ein Verfahren zur Verarbeitung und
zum Herunterladen von Daten der ispSTREAM Datei 1000 zu
Zieleinrichtungen der seriell verbundenen Verkettung der 4 zeigt.
-
16a ist ein Teil 1600a eines
Flussdiagramms 1600, der die Zuweisung der in 10a und 10b gezeigten ispSTREAM Datei 1000 veranschaulicht.
-
16b ist ein Teil 1600b eines
Flussdiagramms 1600, der die Zuweisung der in 10a und 10b gezeigten ispSTREAM Datei 1000 veranschaulicht.
-
17a zeigt als ein Teil 1700a eines
Flussdiagramms 1700 auf der linken Seite unternommene Schritte 1701 bis 1714 zum
Füllen
von Programmdaten in die ispSTREAM Datei 1000 und auf der
rechten Seite tatsächliche
Programmdaten, die in die Datenstrukturen 1001 bis 1014 der
in 10b gezeigten ispSTREAM
Datei 1000 gefüllt
werden.
-
17b zeigt als ein Teil 1700b eines
Flussdiagramms 1700 auf der linken Seite unternommene Schritte 1701 bis 1714 zum
Füllen
von Programmdaten in die ispSTREAM Datei 1000 und auf der
rechten Seite tatsächliche
Programmdaten, die in Datenstrukturen 1001 bis 1014 der
in 10b gezeigten ispSTREAM
Datei 1000 gefüllt
werden.
-
18a zeigt die Zustände der
drei ID Register 104, 204 und 304 in
den ISP PLDs 401, 402 und 403 der seriell
verbundenen Verkettung 400.
-
18b zeigt die Inhalte der
5-Bit Befehlsregister 105, 205 bzw. 305 der
ISP PLDs 401 bis 403 nachdem die Schiebeadressbefehle
im Schritt 1510 heruntergeladen wurden.
-
18c zeigt die Inhalte der
5-Bit Befehlsregister 105, 205 bzw. 305 der
ISP PLDs 401 bis 403 nachdem die Programmierbefehle
im Schritt 1519 heruntergeladen wurden.
-
Detaillierte
Beschreibung der bevorzugten Ausführungsbeisgiele
-
Ein
Ausführungsbeispiel
der vorliegenden Erfindung, welches unten im Detail beschrieben
ist, ist durch ein in der bekannten „C" Programmiersprache geschriebenes Softwareprogramm
bereitgestellt. Dieses Softwareprogramm, dass einem Copyright unterliegt,
ist als Quellcode in dem begleitenden Anhang A geliefert. Während der
Copyright-Inhaber jedem erlaubt Facsimile Kopien dieses Quellcodes
anzufertigen, wie dieser in den Akten des U.S. Patent- und Markenamtes
in Verbindung mit diesem Patentdokument oder Patentoffenbarung auftaucht,
behält sich
der Copyright-Inhaber explizit alle anderen Rechte bezüglich dieses
Softwareprogramms vor.
-
Die
vorliegende Erfindung ist hierin beschrieben mit Bezug auf zwei
Arten von ISP PLDs, die beide von Lattice Semiconductor Corporation
dem Rechtsnachfolger dieser Patentanmeldung erhältlich sind. Der erste ISP
PLD Typ ist dargestellt durch das ispGAL22V10, welches vier Programmieranschlüsse bzw.
-pins aufweist: Mode, SCLK (serieller Takt, Serial Clock), SDI (serieller
Dateneingang, Serial Data In) und SDO (serieller Datenausgang, Serial
Data Out). Der Betrieb der dieser Programmieranschlüsse ist
in dem „ISP
Manual 1994" beschrieben,
welches von Lattice Semiconductor Corporation erhältlich ist.
Die ispGAL22V10 Baugruppe bzw. Einrichtung wird in den Programmiermodus
versetzt, wenn das Mode Signal angesteuert wird, während das
Signal auf dem SCLK Anschluss gepulst bzw. getaktet ist. Einmal
in dem Programmiermode werden die Programmierarbeiten durch den
Programmierer über
Signale auf den Mode und SDI Anschlüssen gesteuert.
-
Der
zweite ISP PLD Typ ist die Lattice ispLSI Baugruppe. In den ispLSI
Baugruppen ist eine ISP PLD unter Verwendung von fünf Anschlüssen programmiert,
die wie folgt bezeichnet sind: ispEN („in-system programming Enable", In-System Programmierfreigabe),
Mode, SCLK, SDI und SDO. Im Gegensatz zu einer ispGAL22V10 Typ Baugruppe, wird
eine ispLSI Baugruppe in den Programmiermodus versetzt, wenn der
ispEN Anschluss angesteuert wird.
-
Einmal
im Programmiermodus wird die Programmierung durch die Mode, SDI
und SCLK Anschlüsse
gesteuert. Die Strukturen und Operationen der ispLSI Einrichtungen
sind auch vollständig
beschrieben in dem oben erwähnten
ISP Handbuch 1994.
-
4 zeigt ein Ausführungsbeispiel
der vorliegenden Erfindung in dem drei ISP PLDs 401, 402 und 403 mit
einem Programmierkommandogenerator bzw. Programmierbefehlsgenerator 404 verbunden sind.
Wie in 4 gezeigt haben
die ISP PLD 401, 402 und 403 Ihre SDI
und SDO Anschlüsse
in einer seriellen Art und Weise (serielle Verkettung, „Serial Chain" 400) verbunden,
so dass serielle Programmierdaten vom Programmierkommandogenerator 404 an
die ISP PLD 403 über
die SDI und SDO Anschlüsse
der ISP PLDs 401 und 402 geliefert werden können. Ebenso
können
serielle Programmierdaten in ISP PLD 402 durch die SDI
und SDO Anschlüsse der
ISP PLD 401 geschoben werden. Diese serielle Verbindung
ist als eine „serielle
Verkettung" bekannt. In
diesem Ausführungsbeispiel
ist die ISP PLD 401 eine ispGAL22V10 Einrichtung bzw. Gerät bzw. Baugruppe,
ISP PLD 402 ist eine ispLSI Typ Einrichtung (speziell eine
ispLSI 1016) und eine ISP PLD 403 ist auch eine ispLSI
Typ Einrichtung (eine ispLSI 1032). Die Mode und SCLK Anschlüsse der
ISP PLDs 401, 402 und 403 sind gemeinsam
verbunden. Zusätzlich sind
die ispEn Anschlüsse
der ISP PLDs 402 und 403 gemeinsam verbunden.
-
1 zeigt eine Feldabbildung
bzw. Matrixanordnung der ispGAL22V10 Einrichtung. Wie in 1 gezeigt, wird eine ispGAL22V10
Einrichtung programmiert durch Festlegen programmierbarer Sicherungen
für eine
44 × 132-bit
UND Anordung bzw. Matrix und eine 64-bit „elektronische Nutzersignatur" (User electronic
signature, UES). Die Programmierung wird zeilenweise durchgeführt durch
serielles Schieben einer 6-Bit Zeilenadresse und 132 Bits der Programmdatenbits
in das Adress/Datenschieberegister 102 durch den SDI Anschluss.
Die 6-Bit Zeilenadresse spezifiziert welche der 44 Zeilen der UND Matrix
oder der 64-Bit UES zu programmieren ist. Die 132 Bits der Programmierbits
werden dann geliefert zum Implementieren der gewünschten Konfiguration der UND
Matrix in der spezifizierten Zeile oder der UES. Ein 8-Bit ID- Schieberegister bzw.
ein 20-Bit architektonisches Schieberegister 104 sind vorgesehen
zum Speichern eines Identifikationsmusters und zur Spezifizierung
von Konfigurationsinformation der ispGAL22V10 Baugruppe.
-
2 zeigt die Feldabbildung
einer ispLSI 1016 Baugruppe. Wie in 2 gezeigt,
beinhaltet eine ispLSI 1016 Baugruppe eine 96 × 160-Bit E2CMOS
(Electrically erasable Complementary Metal-Oxide Semicoductor) Zellenmatrix 201.
Wie in der ispGAL22V10 Baugruppe wird die Zellmatrix der ispLSI
1016 Baugruppe zeilenweise programmiert. Jedoch ist anstelle der
Spezifizierung einer Mehrbitadresse ein 96-Bit Adressschieberegister 202 vorgesehen.
Jedes Bit im Adressschieberegister 202 entspricht einer
160-Bit Zeile in der Zellenmatrix 201. Ein 160-Bit Datenregister 203,
das in ein 80-Bit (halbzeiliges) höherwertiges Register 203a und
ein 80-Bit niederwertiges Schieberegister 203b unterteilt
ist, ist vorgesehen zum Halten bzw. Speichern der Programmdatenbits.
Da getrennte Befehle zum Laden oder Lesen jeder Halbzeile im Datenregister 203 (d. h.
ein getrenntes Kommando wird benötigt
zum Laden jedes der Datenregister 203a und 203b)
benötigt werden,
kann für
den Zweck der verbleibenden Diskussion die Dateneingabe- und -ausgabeeinheit
der ispLSI 1016 Baugruppe betrachtet werden als sei es die 80-Bit
Halbzeile. Zum Programmieren der ispLSI 1016 Baugruppe wird ein
einzelnes '1' Bit in das Adressschieberegister 202 geschoben.
Die Position des einzelnen '1' Bits im Adressschieberegister 202 zeigt
die zu programmierende Zeile an. Die Programmierung wird mittels
zwei Programmierbefehlen, „PRGMH" (program high half-row,
programmiere höhere
Halbzeile) oder „PRGML" (program low halfrow, programmiere
untere bzw. niedere Halbzeile) durchgeführt, wobei jeder Befehl eine
Halbzeile von Programmdatenbits in das entsprechende eine der Datenregister 203a und 203b schreibt,
und zwar in die entsprechende Halbzeile bei der Adresse, die durch das
einzelne '1' Bit im Adressregister 202 angezeigt bzw.
angegeben wird. Ein 8-Bit ID Schieberegister 204 ist vorgesehen
zum Halten bzw. Speichern eines 8-Bit Identifikationscodes.
-
Die
Programmierung einer ispLSI 1032 Baugruppe ist ähnlich der oben mit Bezug zu 2 beschriebenen Programmierung
der ispLSI 1016. 3 zeigt die
Feldabbildung einer ispLSI 1032. Eine ispLSI 1032 Baugruppe beinhaltet
eine 108 mal 320-Bit E2CMOS Matrix 301.
Somit beinhaltet die ispLSI 1032 Baugruppe ein 108-Bit Adressschieberegister 302 und
ein 320-Bit Datenregister 303, das in höherwertige halbzeilige Datenregister 303a und
niederwertige halbzeilige Datenregister 303b unterteilt ist.
Wiederum, da getrennt Befehle zum Laden oder Lesen jedes der halbzeiligen
Datenregister 303a und 303b benötigt werden,
ist die Eingabe- und Ausgabeeinheit zum Datentransfer in eine solche
ispLSI 1032 Baugruppe 160 Bits.
-
Das
Verfahren der vorliegenden Erfindung erzeugt zuerst im Speicher
eine „ispSTREAM" Datei, die eine
Datei ist, die sowohl Programmieranweisungen als auch Daten beinhaltet,
in der Reihenfolge werden die Programmieranweisungen und die Daten anschließend zur
gleichzeitigen Programmierung der ISP PLDs verwendet. Die Schritte
zur Erzeugung einer solchen Datei sind durch die 14 veranschaulicht. Schritt 1401,
der eine Unterroutine „pack_jedec_file" in dem in Anhang
A gelieferten Quellcode darstellt, beginnt die Erstellung der ispSTREAM
Datei durch Aufrufen einer Unterroutine „dl_read_dldfile". In 14 ist die Ausführung der Unterroutine „dl_read_dldfile" dargestellt durch Schritt 1402.
Beim Schritt 1402 wird eine Konfigurationsbeschreibungsdatei
(gekennzeichnet durch die „.dld" Dateiendung) gelesen.
Ein Beispiel so einer Konfigurationsbeschreibungsdatei ist in 5 gezeigt. Wie in 5 gezeigt beinhaltet die
Konfigurationsbeschreibungsdatei 500 drei Textzeilen, wobei jede
Zeile entsprechend einem Baustein bzw. einer Einrichtung in der
seriellen Verkettung 400 der 4 zu
programmieren ist. Auf jeder Zeile der Konfigurationsbeschreibungsdatei 500 sind
drei Felder vorgesehen, die einem (i) Einrichtungsfeld, (ii) einem
Programmieranweisungsfeld und (iii) einem Programmierbitmusterfeld
(d. h. der Name einer „JEDEC
Datei") entsprechen.
JEDEC ist ein dem Fachmann bekanntes Industriestandardformat zur
Spezifizierung von Testvektoren. Das Einrichtungsfeld kennzeichnet den
Typ bzw. die Art der zu programmierenden Einrichtung, so dass einrichtungsspezifische
Befehle und Parameter durch den Programmierkommandogenerator 404 richtig
gehandhabt werden können.
In 5 spezifiziert die
Konfigurationsbeschreibungsdatei 500 22V10 (d. h. die ispGAL22v10
Einrichtung), 1016 (eine ispLSI Einrichtung mit 16 generischen Logikblöcken) und
1032 (eine ispLSI Einrichtung mit 32 generischen Logikblöcken). Zur
Zeit werden vier Arten von Programmieranweisungen verwendet: (i) „PV", die anzeigt, dass
sowohl Programmierung als auch Verifizierung durchzuführen sind;
(ii) „NOP", die die Nulloperation
bzw. keine Operation anzeigt; (iii) „V", die anzeigt, dass nur die Verifizierung
durchzuführen
ist und (iv) „E", die anzeigt, dass
nur die Funktion „Löschen" (erase) durchzuführen ist.
Die Verifikation umfasst das Lesen der Programmierdaten aus einer
programmierten Logikeinrichtung und Vergleichen der so ausgelesenen
Daten mit den erwarteten Bitmustern. Die Funktion „Lösche" („erase") löscht alle
Programmierung von einem ISP PLD.
-
Das „JEDEC
Datei" Feld der
Konfigurationsbeschreibungsdatei 500 liefert den Namen
der JEDEC Datei, die ein Programmierbitmuster enthält zur Verwendung
durch den Programmierkommandogenerator 404 bei der Durchführung der
spezifizierten Programmieranweisung. Zusätzlich zeigt Schritt 1402 14) für jede in der Konfigurationsbeschreibungsdatei 500 aufgelistete
Einrichtung die Anzahl der Zeilen und die Größe in Bitanzahlen jeder Zeile an.
Schritt 1402 legt auch fest, welche der Einrichtungen in
der seriell verbundenen Verkettung 400 die größte Anzahl
von Programmiereinheiten besitzt und zwar definiert als die größte Anzahl
von Zeilen in den ispGAL22V10 Typeinrichtungen oder als die größte Anzahl
von Halbzeilen in den ispLSI Typ Einrichtungen, welche auch immer
größer ist.
-
Bis
zur Vollendung des oben beschriebenen Schritts 1402, wird
Schritt 1403 aufgerufen zur Berechnung einer „zusammengesetzten
Feldabbildung".
Die vorliegende Erfindung betrachtet die seriell verbundene Verkettung 400 als
ob es eine Einrichtung wäre,
die eine Anzahl von Zeilen besitzt, die gleich der größten Anzahl
von Programmiereinheiten ist, wie im Schritt 1402 oben
festgelegt ist.
-
Beispielsweise
wird die seriell verbundene Verkettung der 4 als eine Einrichtung betrachtet, die
Folgendes besitzt (i) 45 Zeilen (Zeilen 0 bis 44) mit 378 Bits;
(ii) eine Zeile (Zeile 45) mit 260 Bits; (iii) 146 (Zeilen 46 bis
191) mit 240 Bits und (iv) 24 Zeilen (Zeilen 192 bis 215) mit 160
Bits. 9 veranschaulicht
diese zusammengesetzte Feldabbildung für die seriell verbundene Verkettung 400 der 4. Wie in 9 gezeigt ist, können in den Zeilen 0 bis 44
eine Zeile vom ISP PLD 401 und zwei Halbzeilen von jedem
der ISP PLDs 402 und 403 gleichzeitig programmiert
werden. Somit wäre
die Gesamtzahl der programmierten Bits in jeder der Zeilen 0 bis
44 die Summe von 138 Bits, 80 Bits und 160 Bits, d. h. 378 Bits. Zeile
45 repräsentiert
die Programmierung der 20 Architekturbits und eine Halbzeile jeder
ISP PLDs 402 und 403. Somit ist die Anzahl der
zu programmierenden Bits in Zeile 45 die Summe von 20, 80 und 160, d.
h. 260 Bits. Für
die Zeilen 46 bis 191 ist die Anzahl der zu programmierenden Bits
die Summe der zwei Halbzeilen der ISP PLDs 402 und 403,
da die ISP PLD 401 diese Zeilen nicht besitzt. Somit ist
die Anzahl der zu programmierenden Bits in den Zeilen 46 bis 191
die Summe von 80 und 160, d. h. 240 Bits. Schlussendlich muss in
den Zeilen 192 bis 215 nur ISP PLD 403 programmiert werden.
Also ist die zu programmierende Anzahl von Bits in den Zeilen 192 bis
215 eine Halbzeile der ISP PLD 403, d. h. 160 Bits.
-
Gemäß dieser
zusammengesetzten Feldabbildung wird eine Bitstromdatei („ispSTREAM
Datei") im Speicher
erzeugt. Die ispSTREAM Datei beinhaltet die Bitstromdaten, die nötig sind
zum Schieben von Daten und Instruktionen in die seriell verbundene Verkettung
der zu programmierenden ISP PLDs (beispielsweise seriell verbundene
Verkettung 400 der 4). 10b zeigt das Format einer
ispSTREAM Datei 1000 für
die seriell verbundene Verkettung 400 der ISP PLDs 401 bis 403 der 4.
-
Zum
Aufbau der ispSTREAM Datei 1000 werden die für die ispSTREAM
Datei benötigten Speicherzellen
zugewiesen (allocate). Um diese Zuweisung durchzuführen, wird
die im Flussdiagramm 1600 skizzierte Prozedur, die in zwei
Teilen 1600a und 1600b in 16a und 16b gezeigt
ist, verwendet. In 16a weist
Schritt 1602 24 Bits zu. Diese 24 Bits sind vorgesehen
die drei 8-Bit ID Codes für jede
der ISP PLDs 401, 402 und 403 zu beinhalten. Im
Schritt 1603 werden 15 Bits zugewiesen zum Bereithalten
einer 5-Bit Anweisung je der der ISP PLDs 401, 402 und 403 für eine Massenlöschanweisung (bulk
erase instruction). Die Befehlssätze,
die ausführbar
sind von den Zustandsmaschinen der ispGAL22V10 Typ Einrichtungen
(beispielsweise ISP PLD 401) und der ispLSI Typ Einrichtungen
(beispielsweise ISP PLDs 402 und 403) sind in
den 10c bzw. 10d gezeigt. 10c und 10d liefern für jede Anweisung
bzw. Befehl den Befehlscode für den
Befehl, ein Kürzel
(mnemonic) des Befehls und eine kurze Beschreibung der Funktion
des Befehls bzw. der Instruktion. Wie in 10b gezeigt ist, besitzt beispielsweise
der Massenlöschbefehl
in einer ispLSI Typ Einrichtung einen Befehlscode '00091' (binär) und ein
Kürzel „UBE". Der UBE Befehl
löscht
die Programmierung in der gesamten Einrichtung durch Setzen aller
programmierbaren Bits auf eine binäre '1'.
-
Im
Schritt 1604 werden dann 15 Bits (Bits 1003) zugewiesen
zum Schieben des 5-Bit „ADDSHIFT" Befehls (10c) in die ISP PLDs 402 und 403 und
zum Schieben des 5-Bit „FLOWTHRU" (oder „PASS") Befehls in die
ISP PLD 401. Der FLOWTHRU Befehl wird an die ISP PLD 401 geliefert,
da eine Einrichtung des ispGAL22V10 Typs kein Adressregister besitzt,
wird die Adresse als die ersten sechs Bits des Datenregisters 103 spezifiziert.
Im Schritt 1605 werden dann 204 Bits (Bits 1004) zugewiesen
für die
tatsächlichen
Adressbits, um in die Adressregister 202 und 302 der
ISP PLDs 402 bzw. 403 geschoben zu werden. Da
die ISP PLDs 402 und 403 96 bzw. 108 Zeilen besitzen,
ist die gesamte Anzahl von Bits, die in Bits 1004 für die tatsächlichen Adressbits
der ISP PLDs 402 und 403 zugewiesenen werden 204.
Im Schritt 1606 werden 15 Bits (Bits 1005) für die Datenschiebebefehle
zugewiesen („DATASHIFT" oder „SHIFT_DATA" in den 10c und 10d) zum Schieben von Datenbits in Datenregister 102a, 203a und 303a.
Im Schritt 1607 wird dann eine Anzahl von Bits (Bits 1006)
für Daten
zugewiesen, die in die erste Zeile (d. h. Zeile 0) der oben erzeugten
bzw. konstruierten zusammengesetzten Matrix 900 (9) geschoben zu werden.
Wie oben beschrieben, umfasst die Zeile 0 im Ausführungsbeispiel
der 4 378 Datenbits
einschließlich
6 Adressbits und 132 Datenbits für
ISP PLD 401, 80 Datenbits für ISP PLD 402 und
160 Datenbits für
ISP PLD 403. In den nächsten
2 Schritten, d. h. Schritten 1608 und 1609 werden
30 Bits (Bits 1007 und 1008) zugewiesen für die Programmbefehle („PROGRAM" und „PRGMH") und die Verifizierbefehle
(„VER/LDH" oder „VERIFY"), die beim Programmieren
der ISP PLDs 401 bis 403 verwendet werden. PRGMH
und VER/LDH sind Befehle, die Programmieren bzw. Verifizieren unter
Verwendung von Daten in dem höherwertigen
halbzeiligen Teil des Datenregisters der ispLSI Einrichtungen (beispielsweise
halbzeilige Datenregister 203a und 303a). Schritt 1610 weist
15 Bits (Bits 1010) zu zum Halten der „DATASHIFT" und „SHIFT_DATA" Befehle zum Herausschieben
von Daten aus Datenregistern der PLD ISPs 402 und 403 bzw.
ISP PLD 401. Schritte 1611 bis 1615 (Schritte 1612 bis 1615 wie
in 16b gezeigt) sind
Schritte, die den oben beschriebenen Schritten 1606 bis 1610 entsprechen.
Schritte 1611 bis 1615 sind vorgesehen zur Verarbeitung
der nächsten
Zeile der ISP PLD 401 und der niederwertigen 160 Bit und
360 Bit Halbzeilen der ISP PLDs 402 und 403, bei
der durch die Adressregister 202 bzw. 302 spezifizierten
bzw. angegebenen Adresse. Schritte 1611 bis 1615 weisen in
der ispSTREAM Datei Strukturen 1010 bis 1014 zu.
Schritte 1604 bis 1615 werden für die Zeilen
2 bis 215 der zusammengesetzten Feldabbildung (composite arry map) 900 wiederholt,
bis Zeile 215 (siehe 9)
abgearbeitet ist. Diese wiederholbare Schleife und der End- bzw.
Abbruchentscheidungspunkt werden durch Entscheidungspunkt 1616 repräsentiert. Für Zeile
45 sind die für
Schritt 1612 zugewiesenen Datenbits 260, wie oben erläutert. In
gleicher Weise sind für
die Zeilen 46 bis 191 die für
Schritte 1607 und 1612 zugewiesenen Datenbits
240 Bits. Für
Zeilen 92 bis 215 sind die für
Schritte 1607 und 1612 zugewiesenen Datenbits
160 Bits. Für
Zeilen 192 bis 195 ist, da alle Zeilen in ISP PLD 402 programmiert
sind, die Anzahl der Bits, die für
die Adressbits des Schritts 1605 zugewiesen werden 108,
was die Anzahl der Zeilen für
ISP PLD 403 ist.
-
Bezugnehmend
zurück
auf 14, ist nach der
Zuweisung der ispSTREAM Datei 1000 Schritt 1403 vollendet.
Der nächste
Schritt, d. h. Schritt 1404 (Ausführung der Unterroutine „pack_jedec_files" geht weiter) ruft
dann eine Unterroutine „read_jedec_files" auf. Schritt 1404 liest
die JEDEC Dateien auf die in der Konfigurationsbeschreibungsdatei 500 einzeln verwiesen
wird und konvertiert die Information in jeder JEDEC Datei (in ASCII
Zeichen geliefert) in eine gepackte binäre Abbildung im Speicher, die
zeilenweise organisiert ist. Während
jede JEDEC Datei gelesen wird, wird jede Zeile (für eine Einrichtung
des ispGAL22V10 Typs) oder Halbzeile (für eine Einrichtung des ispLSI
Typs) die nur '1'en hat (d. h. alle
Programmbits in der Zeile sind binäre '1'en)
markiert. In einem bevorzugten Ausführungsbeispiel werden nachdem
alle Programmbits in der JEDEC Datei in die gepackte binäre Abbildung
im Speicher eingelesen sind, die Zeilen oder Halbzeilen in der gepackten binären Abbildung
sortiert. Bei ispGAL22V10 Einrichtungen werden die Zeilen so sortiert,
dass die Zeilen, bei denen nicht alle binären '1'en
sind in ansteigender bzw. aufsteigender Adressreihenfolge angeordnet werden,
gefolgt von den alle '1'en in ansteigender bzw.
aufsteigender Adressreihenfolge. Bei ispLSI Einrichtungen werden
die Zeilen in der Datenstruktur in der folgenden Reihenfolge sortiert:
1) in aufsteigender Adressreihenfolge, alle Zeilen, bei denen nicht
alle '1'en sowohl in den
höherwertigen
als auch niederwertigen Halbzeilen einer Adresse sind; (ii) in aufsteigender
Adressreihenfolge, alle Zeilen, die alle '1'en
in einer der Halbzeilen und nicht alle '1'en
in der anderen Halbzeile besitzen; und (iii) in aufsteigender Adressreihenfolge,
alle Zeilen, die nur '1'en in beiden Halbwörtern haben.
-
6, 7 und 8 sind
JEDEC Dateien, die die JEDEC Dateien veranschaulichen auf die in 5 für IPS PLDs 401, 402 bzw. 403 verwiesen
wurde. Wie in 6 gezeigt
ist, liest eine JEDEC Datei für
eine ispGAL22V10 Einrichtung Programmbits aus einer 44 × 132-Bit
Matrix 601. Jede Spalte der Bitmatrix 601 entspricht
den 132 Programmierbits für
eine Zeile in der UND Matrix (AND array) 101 der 1. In Kombination mit einer
vom Programmierkommandogeneraton 404 (4) erzeugten 6-Bit Adresse werden diese
132 Bits Programmierbits in das Adress/Datenschieberegister 102 geschoben,
um eine Zeile der UND Matrix 101 zu programmieren. Die
verbleibenden Teile der JEDEC Datei liefern Information, wie beispielsweise
die 20 Architekturbits und die 64-Bit UES. Das Format für eine JEDEC
Datei, die mit einer ispGAL22V10 Einrichtung verwendet wird, ist
dem Fachmann bekannt.
-
7 zeigt eine JEDEC Datei
für eine
ispLSI 1016 Einrichtung, die die „1016.jed" Datei veranschaulicht, auf die in 5 für die ISP PLD 402 der 4 verwiesen wurde. Wie in 7 gezeigt, werden Programmierbits
vom Programmierkommandogenerator 404 aus einer 192 × 80-Bit
Matrix 701 gelesen. Im Gegensatz zur Matrix 601,
d. h. die Programmierbitmatrix einer JEDEC Datei für einen ispGAL22V10
Einrichtung, in dem jede Spalte einen Zeile programmierbarer Komponenten
in der Einrichtung repräsentiert,
repräsentieren
jeweils zwei Zeilen der Matrix 701 die Programmierbits
für entweder
die höherwertige
Halbzeile oder die niederwertige Halbzeile einer entsprechende Zeile,
in der E2CMOS Matrix der ispLSI Einrichtung.
Die Programmierung ist erreicht, wenn die Programmbits durch Ausführen des
entsprechenden Programmierkommandos auf die Ziel ispPLD von den
Datenregistern 203a und 203b herunter geladen
sind. 8, die eine JEDEC Datei
zeigt, die die JEDEC Datei „1016.jed" veranschaulicht,
auf die in 5 für ISP PLD 402 verwiesen
wurde, enthält
eine 108 × 160-Bit
Matrix 801, die in der gleichen Weise wie die Matrix 701 der 7 interpretiert wird. Natürlich besitzen
jeweils zwei Zeilen in der Matrix 801 160 Bits, die entweder
der 160-Bit höherwertigen
Halbzeile oder der 160-Bit niederwertigen Halbzeile entsprechen,
und zwar für
eine 320-Bit Zeile der E2CMOS Matrix 201 einer
ispLSI 1032 Einrichtung. Als ein Beispiel zeigt 7, dass die höherwertige Halbzeile der Programmierbits
bei Adresse 7 alle '1'en sind. Genauso
zeigt 8, dass beide
Halbzeilen der Programmierbits bei der Adresse 64 alle '1'en sind. Der nächste Schritt in Schritt 1404 ist
die tatsächlichen
Programm- und Befehlsdaten in die ispSTREAM Datei 1000 zu
füllen.
Die Prozedur zum Füllen
der ispSTREAM Datei 1000 ist vorgesehen als Prozedur 1700 in
den 17a und 17b.
-
17a und 17b sind Teile 1700a bzw. 1700b der
Prozedur 1700. 17a zeigt
auf der linken Seite Schritte 1701 bis 1710, die
unternommen werden um Programmdaten in die ispSTREAM Datei 1000 zu
füllen
und auf der rechten Seite die tatsächlichen Programmbits, die
in die Datenstrukturen 1011 (10011) bis 1019 der
in 10b gezeigten ispSTREAM
Datei 1000 gefüllt
werden. 17b zeigt auf
der linken Seite Schritte 1711 bis 1717, die unter nommen
werden, um Programmdaten in die ispSTREAM Datei 1000 zu
füllen,
und auf der rechten Seite die tatsächlichen Programmbits, die
in die Datenstrukturen 1011 bis 1014 der in 10b gezeigten ispSTREAM
Datei 1000 gefüllt
werden. Anfangs werden, wie in 17a gezeigt,
Programmbits, die mit der letzten Einrichtung der seriell verbundenen
Verkettung 400 in Bezug stehen als erste verarbeitet. Somit
füllt im
Schritt 1701 der 8-Bit ID Code die letzten 8 Bits der Datenstruktur 1001 der
ispSTREAM Datei 1000. Dann wird im Schritt 1702 der „UBE" Befehl (user bulk
erase, Nutzerkomplettlöschung
bzw. Nutzergesamtlöschung)
in die entsprechenden 5 Bits (d. h. die letzten 5 Bits) der Datenstruktur 1002 eingegeben.
Der Befehlscode, der dem „ADDSHIFT" (Adresseschieben)
Befehl entspricht, wird dann im Schritt 1703 in die letzten
5 Bits der Datenstruktur 1003 eingegeben. Die Adressbits,
die in das Adressregister 302 zu schieben sind, werden
in den letzten 108 Bits der Datenstruktur 1004 geliefert.
Der Befehlscode der dem „DATASHIFT" (Datenschieben) Befehl
entspricht, wird dann im Schritt 1705 an die letzten 5
Bits der Datenstruktur 1005 geliefert. Dann werden im Schritt 1706 160
Programmdatenbits, die der höherwertigen
Halbzeile der ersten Zeile in der gepackten binären Abbildung für die ISP
PLD 403 entsprechen an die letzten 160 Bits der Datenstruktur 1006 geliefert.
In den Schritten 1707 und 1708 werden die Befehlscodes
für „PRGMH" (Programmiere höherwertige
Halbzeile) und „VER/LDH" (Verifiziere oder
Lade höherwertige
Halbzeile) in die entsprechenden Bits der Datenstrukturen 1007 und 1008 geliefert.
Im Schritt 1709 wird der Befehlscode für den „DATASHIFT" Befehl in die entsprechenden Bits der Datenstruktur 1009 geliefert.
Dieser „DATASHIFT" Befehl wird verwendet,
um das höherwertige
Halbwort der ISP PLD 403 herauszuschieben, und zwar an
der im Adressregister 303 spezifizierten Adresse zur Verifikation.
Die Schritte 1710 bis 1714 liefern für die niederwertige
Halbzeile einer ispLSI Einrichtung Schritte zum Füllen der
Instruktionsbefehlscodes und Programmdatenbits in Datenstrukturen 1010 bis 1014.
Schritt 1715 testet ob die Befehls- und Programmdatenbits
für alle
Zeilen der ISP PLD 403 an die ispSTREAM Datei 1000 geliefert
wurden. Falls nicht alle Befehle und Programmdatenbits der ISP PLD 403 an
die ispSTREAM Datei 1000 geliefert wurden, wiederholt der
Prozess 1700 die Schritte 1703 bis 1714 bis
er fertig ist. Wenn alle Befehle und Programmdatenbits dieser letzten
Einrichtung der seriell verbundenen Verkettung 400 an die
ispSTREAM Datei 1000 geliefert wurden, wird die nächste JEDEC Datei
der Konfigurationsbeschreibung 500 gelesen. Schritt 1701 bis 1715 werden
dann wiederholt zum Füllen
der tatsächlichen
Befehls- und Programmdatenbits der ispSTREAM Datei 1000,
die der nächsten Einrichtung
in der seriell verbundenen Verkettung 400 der 4 entsprechen. Prozess 1700 geht
weiter bis Befehl- und Programmdatenbits für alle Einrichtungen der seriell
verbundenen Verkettung 400 in die ispSTREAM Datei 1000 geliefert
werden. Das Ergebnis des Prozesses 1700 auf der seriell
verbundenen Verkettung 400 unter Verwendung der Programmdatenbits
der 6 bis 8 ist in 10b gezeigt. An diesem Punkt ist die
Unterroutine „pack_jedec_files" vollendet.
-
Gleichzeitiges
Programmieren der seriell verbundenen Verkettung 400 kann
dann von der so aufgefüllten
ispSTREAM Datei 1000 (100) weitergehen. In diesem Ausführungsbeispiel
ist eine „ispstream_pump" Prozedur vorgesehen
zum Ausführen
der Programmierung und Verifizierung der ispSTREAM Datei. Die ispstream_pump
Prozedur ist in Quellcodeform im Anhang A geliefert. Ein Hardware-
und Softwaresystem, das fähig
ist die Ausgangsdaten der ispstream_pump Prozedur herunterzuladen
zum Programmieren und zur Verifizierung in den Einrichtungen der
seriell verbundenen Verkettung ist in dem oben referenzierten ISP
Handbuch 1994 beschrieben. Im besonderen sind das Hardware- und
Softwaresystem und die operativen Prozeduren zum Betreiben eines
solchen Systems beschrieben im Kapitel 3 des ISP Handbuchs 1994,
mit dem Titel „In-System
Programming on a PC or Sun Workstation". Die Lehren des ISP Handbuchs 1994 werden
hiermit durch Verweis in Ihrer Gesamtheit einbezogen.
-
Speziell
ist eine Prozedur bzw. Verfahren zum Verarbeiten und Herunterladen
der Daten der ispSTREAM Datei 1000 zu Zieleinrichtungen
in der seriell verbundenen Verkettung 400 der 4 in dem Flussdiagramm 1500,
illustriert, dass in fünf
Teilen 1500a–1500e in
den 15a–e gezeigt ist. 15a zeigt einen Teil 1500a die
Schritte 1501–1507 des Prozesses 1500 umfas send.
Wie in 15a, im Schritt 1501 gezeigt,
wird die Unterroutine „ispstream_pump" aufgerufen um den
Prozess des Verarbeitens und Herunterladens der Daten der ispSTREAM
Datei 1000 zu den Zieleinrichtungen der seriell verbundenen
Verkettung 400 der 4 zu
beginnen. Die Unterroutine "ispstream_pump" ruft im Schritt 1502 eine
Unterroutine „move_to_id_state" auf, die alle Einrichtungen
der seriell verbundenen Verkettung 400 veranlasst in den
Ruhezustand (idle state) zu gehen. Der Ruhezustand wird eingenommen,
wenn der Programmierkommandogenerator 404 (4) das folgende Signalprotokoll liefert:
(i) Festlegen der ispEN, SDI, SCLK und MODE Signale jeweils auf
logisch niedrig (logic low); (ii) folgend auf (i), Festlegen des
MODE Signals auf logisch hoch (logic high); (iii) folgend auf (ii),
pulsieren bzw. takten des Signals SCLK; und (iv) folgend auf (iii),
zurücksetzen
des MODE Signals auf logisch niedrig.
-
18a zeigt die Zustände der
drei ID Register 104, 204 und 304 in
den ISP PLDs 401, 402 und 403 der seriell
verbundenen Verkettung 400. Im Schritt 1503 wird
der Befehlsprogrammgenerator bzw. Kommandoprogrammgenerator 404 veranlasst, das
SCLK Signal 24 mal zu pulsieren bzw. takten, um die Signalwerte
SDO entsprechend den ID Codes der ISP PLDs 401, 402 und 403 auszugeben.
Diese ID Codes werden dann mit den ID Codewerten in der Datenstruktur 1001 der
ispSTREAM Datei 1000 verglichen. Im Schritt 1504,
rufen die ispstream_pump Unterroutinen die Unterroutine „execute()" zum Setzen der Einrichtungen
der seriell verbunden Verkettung 400 in den „Schiebe" („shift") Zustand. Der Schiebezustand
wird eingenommen durch Veranlassen des Befehlsprogrammgenerators 404 das
folgende Protokoll auszuführen:
(i) festlegen bzw. setzen der ispEN, SDI, SCLK, MODE Signale auf
logisch niedrig; (ii) danach festlegen der MODE und der SDI Signale
auf logisch hoch; (iii) einmaliges pulsieren des SCLK Signals und
(iv) führen
der MODE und der SDI Signale auf logisch niedrig. In dem „Schiebe" Zustand ist eine
In-System programmierbare Einrichtung bereit Instruktionen zum Ausführen eines
Befehls in einem Befehlsregister der In-System programmierbaren
Einrichtung zu empfangen.
-
Im
Schritt 1505 werden die Instruktionen für Gesamtlöschung (BULK_ERASE), d. h. „BULK_ERASE" für eine ispGAL22V10
Typeinrichtung und „UBE" für eine ispLSI
Typeinrichtung aus der Datenstruktur 1002 der ispSTREAM
Datei 1000 genommen und durch das Signal SDI in ISP PLDs 401, 402 und 403 hinuntergeladen
und zwar durch 15maliges pulsieren des SCLK Signals. Als nächstes werden
im Schritt 1506 die Einrichtungen der seriell verbundenen
Verkettung 400 in den „execute" Zustand versetzt und zwar durch programmieren
des Befehlsgenerators 404, der das in 11 illustrierte Signalprotokoll ausführt. Die
Gesamtlöschfunktion wird
dann im Schritt 1507 ausgeführt durch das Festlegen der
ispEN, SDI, SCLK und MODE Signale auf logisch niedrig und dann pulsieren
des Signals SCLK.
-
5b zeigt Teil 1500b des
Flussdiagramms 1500, der die Schritte 1508–1515 abdeckt.
Schritt 1508 ist ein Warteschritt um auf die Vollendung
der Gesamtlöschinstruktion
zu warten. Da die ISP PLDs Einrichtungen 401, 402 und 403 gleichzeitig
gesamtgelöscht
werden, ist der Warteschritt 1508 vollendet, wenn die Gesamtlöschung in
der Einrichtung, die die meiste Zeit benötigt, vollendet ist. Im Schritt 1509 werden
die ISP PLDs 401, 402 und 403 wieder
in der oben beschriebenen Art und Weise in den „Schiebe" Zustand platziert zum Empfang weiterer
Instruktionen. Im Schritt 1510 werden dann die Schiebeadressinstruktionen,
d. h. (die „ADDSHFT" Instruktion für jede ISP
PLD 402 und 403 und für die „FLOWTHRU" Instruktion für die ISP PLD 401,
wie oben diskutiert) aus der Datenstruktur 1003 der ispSTREAM Datei 1000 abgerufen
und in die ISP PLDs 401, 402 und 403 hinuntergeladen. 18b zeigt die Inhalte der
5-Bit Instruktionsregister 105, 205 bzw. 305 der ISP
PLDs 401–403,
nachdem die Schiebeadressinstruktionen heruntergeladen sind. Im
Schritt 1511 werden die ISP PLDs 401, 402 und 403 in
den „execute" Zustand in der oben
beschriebenen Art und Weise platziert. Die Adressbits (204) werden
dann in Schritt 1512 aus der Datenstruktur 1004 der
ispSTREAM Datei 1000 abgerufen und in die ISP PLDs 402 und 403 geschoben
und zwar durch 204maliges pulsieren des SCLK Signals. 12 ist ein schematisches Diagramm,
dass das Schieben von Adressbits ins Schiebeadressregister 202 und 302 zeigt.
-
In
Schritten 1514–1516 (15c) werden die Schiebedateninstruktionen
und Programmierdatenbits aus Datenstrukturen 1005 und 1006 abgerufen
und in Datenregister 103, 203a und 303a der
ISP PLDs 401, 402 und 403 geschoben.
Schritte 1514–1516 führen jeweils
die folgenden Funktionen aus: (i) platzieren der ISP PLDs 401–403 in
den „Schiebe" Zustand, (ii) einschieben
der Datenschiebeinstruktionen der Datenstruktur 1005, (iii)
platzieren der ISP PLDs 401–403 in den „execute" Zustand, (iv) schieben
der Programmdatenbits der Datenstruktur 1006 in Datenregister 103, 203a und 203b. 13 zeigt die Inhalte der
Datenregister 103, 203a und 303a nach
dem Schritt 1516. ISP PLDs 401–403 werden dann wieder
in den „Schiebe" Modus platziert um
die Programminstruktionen zu empfangen. Falls die in die Datenregister 103, 203a und 303a geschobenen
Daten, alle „1"en sind, kann die
Programmierung übersprungen
werden. Somit ist im Schritt 1518, falls die Daten in den
Datenregistern 103, 203a und 303a alle „1"en sind, der nächste Schritt 1524 (15c); andernfalls ruft Schritt 1519 aus
der Datenstruktur 1007 der ispSTREAM Datei 1000 die
Programminstruktionen für
die ISP PLDs 401–403 ab.
Im Schritt 1520 werden dann die ISP PLDs 401–403 in den „execute" Zustand platziert
und zwar in der oben erläuterten
Art und Weise. Die Programmierung wird im Schritt 1521 initiiert
bzw. begonnen und zwar durch das Festlegen der ispEN, MODE, SDI
und SCLK Signale auf logisch niedrig und dann pulsieren des SCLK
Signals. Zustand 1522 ist ein Zeitsteuerungszustand in
dem der Kommandogenerator 404 eine vorbestimmte, benötigte Zeitdauer
bzw. Zeitabschnitt wartet um erfolgreiche Programmierung sicherzustellen.
Somit wird eine gleichzeitige Programmierung erreicht. ISP PLDs 401–403 werden
dann in den Schiebezustand zurückgeführt zum
Empfangen weiterer Instruktionen. 18c zeigt
die Inhalte der 5-Bit Instruktionsregister 105, 205 bzw. 305 der
ISP PLDs 401–403,
nachdem die Schiebeadressinstruktionen im Schritt 1519 hinuntergeladen
sind. 18c zeigt auch,
dass wenn die Programmbits im Datenregister 203a alle „1"en sind, aber weder
Datenregister 103 noch Datenregister 303a alle „1"en sind, die Programmierung
fortfährt
mit dem ISP PLD 402 Instruktionsregister 205 auf
eine NOP (no operation, kein Befehl) Instruktion gesetzt. Man stellt
fest, dass mit der Sortierung im Schritt 1404 der Programmdatenbits
in die zwei Gruppen für
eine ispGAL22V10 Typ einrichtung und drei Gruppen für eine ispLSI
Einrichtung erhebliche Programmierzeit gespart werden kann,
weil die Programmierschritte 1519–1523 dann übersprungen
werden können.
-
Verifizier-
bzw. Überprüfungsbefehle
werden dann aus der Datenstruktur 1008 der ispSTREAM Datei 1000 (100)
abgerufen und an ISP PLDs 401–403 im Schritt 1524 geliefert.
Im Schritt 1525 werden die ISP PLDs 401–403 in
den „ausführen" (execute) Zustand
gesetzt. Im Schritt 1526 werden Datenüberprüfungsarbeiten (data verify
operations) durch das Protokoll initiiert: (i) Setzen der ispEN,
SDI, SCK und MODE Signale auf logisch niedrig und (ii) danach wird
das SCLK Taktsignal gepulst. Schritt 1527 wartet dann für eine ausreichende
Dauer auf jede ISP PLD Einrichtung zum Lesen des Speichers für programmierte
Datenbits, die in den Schritten 1519–1523, gespeichert
wurden. Die zu überprüfenden Daten
werden dann aus den Datenregistern 103, 203a und 203b geschoben
durch (i) setzen der ISP PLDs 401–403 im Schritt 1528 in
den „Schiebe" Zustand; (ii) im
Schritt 1529 Abrufen der Datenschiebebefehle aus der Datenstruktur 1014 der
ispSTREAM Datei 1000 und schieben solcher Befehle in ISP PLDS 401–403;
(iii) im Schritt 1530 setzen der ISP PLDs 401–403 in
den „ausführen" Zustand und (iv)
im Schritt 1531 pulsieren des Signals SCLK 378mal zur Ausgabe
am Signal SDO der Datenbits der Datenregister 103, 203a und 303a.
Falls die aus den ISP PLDs 401–403 herausgeschobenen
Daten identisch mit den Daten in der Datenstruktur 1006 der ispSTREAM
Datei 1000 sind, sind ISP PLDs 401–403 richtig
programmiert.
-
Im
Schritt 1532 (15e)
werden die ISP PLDs 401–403 in den „Schiebe" Zustand gesetzt
und zwar zum Fortsetzen der Programmierung der ISP PLDs 401–403.
Schritte 1514–1532 werden
wiederholt zum Programmieren der nächsten Zeile im ISP PLD 401 und
der nächsten
Halbzeile bei jeder der ISP PLDs 402–403. Danach wird
beim Entscheidungspunkt 1534 die ispSTREAM Datei 1000 überprüft zum Bestimmen,
ob alle Daten in der ispSTREAM Datei 1000 in die Einrichtungen
in der seriell verbundenen Verkettung 400 heruntergeladen wurden.
Falls noch weitere Daten zum Herunterladen in die ISP PLDs 401–403 vorhanden
sind, kehrt die Prozedur 1500 zum Schritt 1514 zurück; andernfalls ist
die Prozedur 1500 vollendet.
-
Die
obige detaillierte Beschreibung ist vorgesehen zum Beschreiben spezieller
Ausführungsbeispiele
der vorliegenden Erfindung und ist nicht als beschränkend gedacht.
Zahlreiche Variationen und Modifikationen sind innerhalb des Rahmens
der vorliegenden Erfindung möglich.
Beispielsweise wie oben erwähnt,
ist die vorliegende Erfindung anwendbar auf alle Arten feldprogrammierbarer
Einrichtungen, einschließlich
programmierbarer Logikeinrichtungen, programmierbarer Speicher und
programmierbarer Analogschaltungen 21263. Die vorliegende Erfindung
ist in den unten angefügten
Ansprüchen
dargelegt.