ATF150x
Inhaltsverzeichnis
Der CPLD ATF-1504
Ein CPLD ist ein programmierbarer Baustein, der die Funktion einer komplexen logischen Schaltung nachbilden kann. Eine Schaltung bestehend aus zig Logik IC findet Platz ein einem einzigen CPLD.
- Der CPLD ATF-1504 von Microchip bietet
- 5V Technologie (AS Type) oder 3,3V mit 5V toleranten IO
- 64 Makrozellen
- die Bauform PLCC-44 ist einfach lötbar
- Programmierung über JTAG
Es gibt einige Anbieter von CPLDs. Aber es gibt kaum noch lieferbare CPLD die mit 5V Technik kompatibel sind. Da ist der ATF-1504 eine große Ausnahme, und diese Eigenschaft macht ihn besonders wertvoll für kleine Retro Projekte.
Programmierung des ATF-1504
JEDEC Datei
Der CPLD wird 'leer' geliefert und kann von Natur aus gar nichts tun. Die Logik, für die der CPLD verwendet wird, kommt in Form einer Jedec Datei. Diese Datei wird über eine JTAG Schnittstelle in den CPLD programmiert. Danach ist der CPLD bereit für seinen Einsatz ...
JTAG Schnittstelle
Die JTAG Schnittstelle funktioniert über 4 Signale (TCK,TDO,TMS,TDI). Dabei können mehrere CPLD in einer 'JTAG Chain' (JTAG Kette) verbunden sein. So können mehrere CPLD mit einem einzigen Programmiergerät beschrieben werden. Die JTAG Schnittstelle von Microchip besteht gewöhnlich aus einem 10 poligen Wannenstecker. Die Verbindung zum Programmiergerät erfolgt über ein Flachbandkabel. Die Nase beim Wannenstecker verhindert, dass der Stecker verkehrt herum eingesetzt wird.
Einer der Vorteile von JTAG ist, dass der CPLD direkt in seiner Schaltung (direkt auf dem Board) programmiert werden kann. Der CPLD muss dazu nicht von seinem Board entfernt werden. Durch die JTAG Chain können auf einem Board auch mehrere CPLD mit derselben JTAG Schnittstelle angesprochen werden.
Die JTAG Schnittstelle benötigt 4 Signale am CPLD. Das bedeutet, es gehen 4 PIN am CPLD quasi 'verloren' und stehen nicht für die Schaltung zur Verfügung. Man kann aber den CPLD so programmieren, dass diese 4 JTAG Pins als normale IO verwendet werden. Das hat aber den Nachteil, dass man den CPLD ab sofort nicht mehr über JTAG erreichen kann. Eine Umprogrammierung ist damit nicht mehr so einfach möglich.
ATMISP
Dieses Tool von Microchip benötigt man für die Programmierung des CPLD. Das ATMISP kann direkt mit dem Microchip Programmer ATDH1150USB kommunizieren, wenn er über die USB Schnittstelle angeschlossen ist. Für die Programmierung des CPLD mit dem Tool ATMISP benötigt man nur das JEDEC File.
Wenn man nicht den originalen Programmer von Microchip zur Verfügung hat, dann muss man auf einen kleinen 'Trick' zurückgreifen. Man benötigt in jedem Fall eine Hardware, einen JTAG Adapter zur Kommunikation mit dem CPLD. JTAG ist an sich normiert, daher kann es prinzipiell mit jedem JTAG Adapter funktionieren. Das Problem ist, jeder JTAG Adapter benötigt eine Software. Und diese Software versteht wahrscheinlich das JEDEC File des ATF-1504 nicht direkt.
Nun hat man den ATMISP der nicht mit jedem JTAG Programmer arbeiten kann. Und zum anderen hat man eine Software zu dem JTAG Adapter die nicht mit dem JEDEC kann. Die Lösung ist ein Zwischenfile (SVF). Ein SVF File beschreibt die Kommunikation über ein JTAG Interface.
Man braucht einen JTAG Adapter, der von einem 'JTAG Player' unterstützt wird. Der JTAG Player ist eine Software, die SVF Dateien liest und zum JTAG Adapter senden kann. Man muss nun folgende Schritte durchführen:
- wir verbinden den JTAG Adapter mit dem CPLD
- mit dem ATMISP laden wir das JEDEC File
- mit dem ATMISP exportieren wir eine SVF Datei
- (optional konvertieren wir SVF nach XSVF)
- mit dem JTAG Player laden wir das SVF (oder XSVF File)
- mit dem JTAG Player senden wir das File zum JTAG Adapter
Wenn alles fehlerfrei läuft, sollte der CPLD nun programmiert sein. Solange man nichts über JTAG verändert, hält der Inhalt des CPLD für Jahrzehnte (ähnlich wie bei einem Flash Speicher).
Der Zwischenschritt der Konvertierung von SVF zu XSVF ist nur dann notwendig, wenn der verwendete JTAG Player nur mit XSVF arbeiten kann. Sonst kann man auf diesen Schritt verzichten und direkt mit dem SVF File arbeiten.
JTAG Programmer
Der JTAG Programmer hat die Aufgabe das JEDEC File in den CPLD zu schreiben. Dazu nutzt der Programmer die JTAG Schnittstelle.
Microchip ATDH1150USB
Dies ist der Standard Programmer für die CPLD von Microchip. Es ist die einfachste und bequemste Methode, den ATF-1504 zu programmieren. Die Programmier Software ATMISP kann den ATDH1150USB direkt ansprechen, deswegen kann man die JEDEC Datei direkt in den CPLD schreiben.
JTAG Adapter auf Basis eines FT232H
Der FT232H ist eine preisgünstige Methode einen JTAG Adapter selbst zu bauen. Das FT232H Board ist standardisiert und kann günstig fast überall erworben werden, selbst Amazon bietet dieses Board um ein paar Euros an. Im Zusammenspiel mit Open-OCD hat man mit dem FT232H Board bereits einen JTAG Adapter der als SVF PLayer funktioniert. Man muss sich nur noch ein Kabel basteln.
ATF1504-FT232HQ Shield
Nun ist ja das preisgünstige FT232H Board bereits ein JTAG Adapter. Aber es geht noch viel besser, jemand hat ein kleines Board entwickelt, das direkt auf dem FT232HQ Board aufgesteckt werden kann. Quasi ein 'Shield' für das FT232H Board, wie man es von den Arduino Boards kennt.
- Auf dem Shield befinden sich
- PLCC-44 Sockel
- JTAG Port
- ein DC-DC Wandler
- ein Schalter
- ein Jumper für die Spannung
- ein paar SMD Teile
- Der PLCC-44 Sockel
- nimmt bei Bedarf einen ATF-1504 auf, den man so direkt auf dem Shield programmieren kann.
- Der JTAG Port
- ermöglicht den Anschluss eines Flachband Kabel, so kann ein CPLD direkt in der Schaltung programmiert werden.
- Der DC-DC Wandler
- produziert 12V aus den 5V vom FT232H Adapter. Die 12V sind notwendig, wenn ein CPLD nicht mehr erreichbar ist über JTAG. Der CPLD ist nicht mehr über JTAG programmierbar, wenn man die JTAG Pins als IO verwendet hat.
- Der Schalter
- schaltet die 12V auf einen PIN des CPLD um die JTAG PINs zu reaktivieren.
- Der Jumper
- schaltet die Versorgungsspannung des CPLD zwischen 5V und 3,3V. So können sowohl 5V CPLD als auch die 3,3V CPLD direkt im PLCC Sockel programmiert werden.
Entwicklung der Logik
Für die Entwicklung der Logik im CPLD (JEDEC File) existieren verschiedene Tools. Unter anderem funktionieren auch die Tools von Altera, weil die CPLD Chips von Microchip und die Chips von Altera nahezu identisch sind. Der Microchip ATF-1504 entspricht dem Altera EPM-7064, das Ausgabe File des Altera Tool muss allerdings für den ATF-1504 konvertiert werden.
Das Tool von Microchip ist WinCUPL, es kann von der Homepage von Microchip herunter geladen werden. WinCUPL wirkt etwas veraltet, aber es läuft tadellos auf meinem Windows 10 PC. Man liest oft negative Kritik zu WinCUPL, aber ich kann diese Meinungen nicht teilen. Bis jetzt hat WinCUPL für all meine Projekte tadellos funktioniert. Es kompiliert schnell und gibt klare Fehlermeldungen aus, wenn im Quelltext etwas falsch ist. Der Simulator erlaubt die Vorgabe von Situationen und zeigt den Status der IO grafisch über die Zeit an. Aus meiner Sicht lässt es sich sehr gut mit dem WinCUPL entwickeln.
Es gibt noch weitere Tools, die teilweise nur unter DOS oder älteren Windows Versionen laufen. Mit diesen Tools habe ich mich nie länger beschäftigt.
Das WinCUPL gibt mehrere Dateien aus. Für den produktiven Einsatz im CPLD selbst ist jedoch nur das JEDEC File relevant. Das JEDEC File wird direkt mit einem JTAG Programmer in den CPLD geladen.
DEV Board
Die CPLD Logik wird wahrscheinlich nicht beim ersten Versuch sofort richtig funktionieren. Man benötigt daher eine Möglichkeit, die Logik zu testen.
Microchip DK3
Das DK3 ist ein sehr komfortables DEV Board von Microchip, auf dem Board sind:
- 44-Pin TQFP Adapter
- JTAG Port
- Erweiterungs Ports
- ein 2 MHz Oszillator
- vier 7-segment LED Anzeigen
- acht LEDs
- Spanungsversorgung: 1.8V, 3.3V und 5.0V
- einfacher Zugang zuallen I/O Pins
Über optional erhältlicher Adapter Boards kann man weitere Bauformen des CPLD komfortabel am DK3 testen.
DEV Board selbst gebaut
Bei der Firma PCBWAY gibt es ein ATF-1504 DEV Board als 'Shared Project' von dem Benutzer Yellperil.
Ich möchte mich an der Stelle bei Yellperil bedanken, das DEV Board hat mir sehr gute Dienste geleistet bei der Entwicklung meines UC2 Modul.
Das DEV Board von Yellperil ist schlicht und einfach gehalten. Es sind keinerlei Eingabe oder Anzeige Elemente vorhanden. Aber das ist auch nicht nötig, wenn man eine Testschaltung oder einen Prototypen aufbaut auf einem Steckbrett. Das Steckbrett wird dann über Steckdrähte mit den IO des DEV-Board verbunden.
- Auf dem DEV Board befinden sich die nötigsten Bestandteile
- PLCC-44 Sockel (für den CPLD)
- JTAG Port
- alle IO PINs sind auf Steckleisten
- die Sonder PINs sind auf einer eigenen Steckleiste
- Stromversorgung über Hohlraumstecker (J2)
- alternativ kann die Stromversorgung über die Steckleiste erfolgen
Achtung: die Stromversorgung ist nicht geregelt und auch nicht gegen Verpolung geschützt.
Auf dem Board befinden sich noch ein 10µF als Siebung, die 4 obligatorischen Stützkondensatoren je 100nF für den CPLD und Widerstände für die JTAG Schnittstelle.
Downloads