|
Programmierbare
Logik - von PLDs und GALs
Der Begriff PLD (= Programmable
Logic Device) ist ein sehr weit gefaßter Begriff. Er
umfaßt Bausteine von einfachen TTL-PROMs bis hin zu
Gate Arrays, in die ganze Prozessoren programmiert
werden können.
Der Begriff GAL ist ein
geschütztes Warenzeichen der Firma Lattice. Es
handelt sich um einfache PLDs, teilweise auch als
SPLD abgekürzt. Bausteine mit mehr Funktionalität
werden als komplexe PLDs, abgekürzt CPLD,
bezeichnet.
hed.chip programmiert eine Auswahl beliebter und
leistungsfähiger Bausteine dieser Logikfamilien.
Hier eine Auswahl der bei Drucklegung dieser
Anleitung programmierbaren Bausteine:
| |
ATF16V8 |
ATF20V8 |
ATF22V10 |
|
| |
GAL16V8 |
GAL20V8 |
GAL18V10 |
GAL22V10 |
| |
GAL6001 |
GAL6001B |
GAL6002B |
GAL20RA10 |
| |
PALCE16V8 |
PALCE20V8 |
PALCE22V10 |
|
Die komplexen PLDs von Atmel
(ATV750, ATV2500, ATF1500) stellen besondere
Anforderungen an die Programmierhardware. Für diese
Typen sind die Adapter DIP750, PLCC750, DIP2500,
PLCC2500 bzw. PLCC1500 erforderlich.
Um eine Anwendung für einen PLD zu
entwickeln, muß zunächst eine JEDEC-Datei erstellt
werden. Das PLD-Entwicklungssystem, z.B. CUPL, Gal
Development System GDS 3.5 oder easyABEL Version 4.3,
setzt die logischen Gleichungen in eine solche
JEDEC-Datei um. Es kann außerdem das zu erwartende
Verhalten des PLD simulieren.
Prüfsummen und Testvektoren in der
JEDEC-Datei werden ignoriert. Dies gestattet es, die
JEDEC-Datei bei Bedarf mit einem normalen Texteditor
zu verändern.
Wenn die logischen Gleichungen in
der Datei MYAPP.PLD stehen, erzeugt CUPL daraus die
Datei MYAPP.JED. Diese kann dann mit hed.chip
in den Baustein programmiert werden. Im Falle einer
Anwendung für einen ATF22V10 müßte dazu folgende
Befehlszeile verwendet werden:
- hedchip /ga22v10 /p
myapp.jed
-
Die zusätzliche Angabe des
Parameters /v veranlaßt den Programmer, die
Programmierung anschließend zu verifizieren. Bei
Angabe von /e wird der Baustein gelöscht, wenn der
vor der Programmierung automatisch durchgeführte
Leertest ergibt, daß dies nötig ist.
hedchip /ga22v10 /p /v /e
myapp.jed
Securityfuse
Wenn der Baustein gegen Auslesen
und Kopieren geschützt werden soll, kann die
Securityfuse programmiert werden. Bei dem
Entwicklungssystem CUPL kann die Anweisung dazu
bereits bei der Erstellung der JEDEC-Datei gegeben
werden.
CUPL fügt dann eine Anweisung *G1
in die JEDEC-Datei ein und veranlaßt dadurch hed.chip,
die Securityfuse des Bausteins zu programmieren.
Falls das nicht erwünscht ist, kann entweder diese
Anweisung wieder aus der JEDEC-Datei entfernt werden
oder in der Kommandozeile zusätzlich der Parameter
/s0 angegeben werden. Der Parameter /s1 in der
Kommandozeile hingegen veranlaßt hed.chip,
die Securityfuse auch dann zu programmieren, wenn die
JEDEC-Datei die Anweisung *G0 enthält.
Kommandozeilenparameter, ob die Securityfuse
programmiert werden soll oder nicht, haben Vorrang
vor Anweisungen in der JEDEC-Datei.
hed.chip kann bei einigen PLDs die Securityfuse
testen und wird bei dem Versuch, einen solchen
Baustein auszulesen, eine Fehlermeldung erzeugen.
Andere geschützte PLDs werden als
leer verkannt. Solche Bausteine können auch nicht
durch die zusätzliche Angabe von /e bei der
Programmierung gelöscht werden. In einem solchen
Fall muß der Baustein in einem seperaten
Arbeitsschritt gelöscht werden:
hedchip /gl22v10 /e ; Beispiel
für ein GAL22V10
Bausteine
kopieren
Mit hed.chip können
PLDs auch ausgelesen und kopiert werden. Beim
Auslesen erzeugt hed.chip bei den einfachen PLDs 16V8, 20V8, 18V10,
22V10 und 20RA10 eine JEDEC-Datei mit den gleichen
Anweisungen wie es auch CUPL macht. Zum Auslesen
dieser Bausteine muß ein Dateiname mit der
Extension .JED angegeben werden. Komplexe PLDs
(GAL6001/2, Atmel ATV-Serie, ATF1500) werden in ein
binäres Datenformat ausgelesen. Für diese Bausteine
darf kein Dateiname mit der Extension .JED
verwendet werden. hed.chip kann diese Binärdateien in andere
Bausteine gleichen Typs programmieren. Beispiel:
- hedchip /gatv750 /r
myapp.bin ;Atmel ATV750 in Datei
MYAPP.BIN auslesen
- hedchip /gatv750 /p/v
myapp.bin ; anderen Baustein gleichen
Typs programmieren
ATF16V8,
ATF20V8, ATF22V10, ATF1500
Atmel schreibt für diese
PLD-Bausteine auf FLASH-Speicherbasis vor, daß sie
vor der ersten Programmierung (ATF1500: vor jeder
Programmierung) konditioniert werden. Das heißt, der
ganze Baustein wird zweimal vollständig mit 0
programmiert und anschließend wieder gelöscht.
Während der Konditionierung können Verify-Fehler
ignoriert werden. Dem hed.chip ist eine
JEDEC-Datei beigefügt, die zur Konditionierung aller
Atmel-PLD benutzt werden kann. Für einen ATF20V8
geht das so:
- hedchip /ga20v8 /p/e
conditio.jed ; 1. Mal programmieren
- hedchip /ga20v8 /p/e
conditio.jed ; 2. Mal programmieren
- hedchip /ga20v8 /e/v ;
Löschen, Leertest
-
Die Befehle zur Konditionierung
können auch in die ohnehin empfohlene Batchdatei
aufgenommen werden.
ATF1500
Für die zur Zeit verfügbaren
Exemplare schreibt Atmel vor, daß weder die User-ID
noch die Securityfuse programmiert werden dürfen.
Daher konnte dieser Teil der Software noch nicht
getestet werden. Es wird der Adapter PLCC1500
benötigt.
ATV750(B) und
ATV2500(B):
Für die PLDs ATV750(B) und
ATV2500(B) werden spezielle Adapter DIP750, DIP2500,
PLCC750 bzw. PLCC2500 benötigt. Auf diesen Adaptern
befinden sich je zwei Jumper. Zur Programmierung des
ATV750 und ATV2500 müssen beide Jumper gesteckt und
zur Programmierung des ATV750B und ATV2500B beide
entfernt werden.
Der Adapter DIP750 wird auch für
die Bausteine Atmel AT22V10/L und AT22V10B/L
verwendet. Dabei handelt es sich um eine ältere
Version des 22V10 auf EPROM-Speicherbasis.
AMD PALCE-Serie
hed.chip unterstützt aus dieser PLD-Serie die Typen
PALCE16V8H/Q, PALCE20V8H/Q. Der Typ PALCE22V10H/Q
wird in der Revision 4 und 5 unterstützt. Diese
werden in Katalogen z.B. als PALCE22V10H-25PC4
angeboten. Alle PALCE-Bausteine, auch neue und leere
Bausteine, müssen vor der Programmierung gelöscht
werden. Eine Programmierung mit der Datei
CONDITIO.JED, wie z.B. für Atmel ATF-PLD vorgesehen,
ist nicht erforderlich.
Die Bausteine AMD PALCE16V8 und
PALCE20V8 sind vollständig funktionskompatibel zu
den entsprechenden Bausteinen von Atmel und Lattice.
Zwischen diesen Bausteinen gibt es lediglich einen
kleinen Unterschied bei der Rückführung der
Registerausgänge in die UND-Matrix. In den meisten
Fällen können für GAL16V8 und GAL20V8 erstellte
Quelldateien ohne Änderung in einen PALCE-Baustein
programmiert werden.
Um Inkompatibilitäten vollkommen
auszuschließen, sollte bei der Erstellung der
JEDEC-Datei der richtige Zielbaustein, also entweder
GAL16V8, GAL20V8 oder PALCE16V8, PALCE20V8 angegeben
werden. Die Unterschiede zwischen diesen Bausteinen
wurden in der Ausgabe 1/94, Seite 52ff der
Zeitschrift Elektor ausführlich beschrieben.
Der Typ PALCE22V10 kann direkt mit
für GAL22V10 entwickelten und compilierten
JEDEC-Dateien programmiert werden.
|