Rob's web

CPLDs in der Hobbyelektronik

Grundwissen fur Praktiker

CPLD bedeutet Complex Programmable Logic Device, also komplexe programmierbare Logikeinheit. Diese Chips sind seit vielen Jahren aus der kommerziellen Entwicklung nicht mehr wegzudenken, haben jedoch auch im Amateurbereich ihren Reiz. Dieser dreiteilige Beitrag beschreibt die Anwendung und liefert Einsatzideen.

Bei CPLDs handelt es sich um eine sehr große Anzahl frei programmierbarer Logikzellen mit etlichen Gattern auf einem Chip. Das reicht von einigen Hundert bis zu 20.000 und mehr, ein Ende ist zurzeit nicht absehbar. Vorganger der CPLD waren übrigens die ASICs.

Die Physik und der Aufbau dieser Bauteile sind sehr komplex. Hier geht es lediglich um die Anwendung im Hobby- und Amateurbereich. Man kann diese ICs so benutzen wie andere digitale oder analoge ICs. Wie es innen aussieht, muss man nicht wissen. Man braucht nur zu wissen, was man damit machen kann und wie man das Bauelement beschalten muss, damit er das tut, was man möchte.

Bei den Herstellem findet jeder, der es mochte, exakte Daten über diese Chips. Zwei Projekte werden als Anregung vorgestellt:

Das zweite Projekt ist ideal zur Verwendung in alteren KW-Transceivern geeignet, um diese zu "digitalisieren".

Einleitung

Die immer besser werdende und einfacher zu bedienende Software und der anhaltende Preisverfall inspirierten, die Verwendbarkeit von CPLDs im Hobbybereich näher zu untersuchen. Sie erschienen geradezu prädestiniert far diesen Bereich. Ihr Sinn besteht darin, großen Verdrahtungsaufwand zu minimieren, was sich auf GerategröBe und Funktionssicherheit auswirkt. Mehrstufige Zahler und Teiler oder komplette Steuerungen werden auch von Amateuren gebaut. Für Projekte dieser Art bieten sich CPLDs an.

Man stelle sich nur einmal vor, man hat vergessen, in einer Schaltung ein Signal zu invertieren. Schon ist die entwickelte und gefertigte Platine hinfallig Bei einem CPLD ist das eine Arbeit von wenigen Minuten, ohne dass man an der Platine irgend etwas andem muss. Das hat doch was für sich, oder?

Selbst der komplexeste Prozessor besteht letztendlich aus einen Riesenanzahl logisch verknupfter Gaffer. So gibt es z. B. komplette Mikroprozessoren bis 32 Bit als Kern für ein CPLD.

Dieser Beitrag soil sich mit den CPLDs beschaftigen, da sie trotz ihrer Komplexitat auch noch für den Amateurentwickler einsetzbar sind.

Es gibt diverse Hersteller dieser Chips, und alle sind bemüht, untereinander nicht kompatibel zu werden. Es ist also nicht ohne Weiteres moglich, z. B. einen Chip von Microchip durch einen von Xilinx zu ersetzen, obwohl sie beide das Gleiche kOnnen und sogar mit der gleichen Sprache programmiert wurden. Die Programmiersprache far Bausteine dieser Art schlechthin dürfte wohl VHDL (Very High Density Language) sein.

Beispielgebend für alle Hersteller geht es hier um die CPLDs der Fa. Altera mit Gehäusen des Typs PLCC 44 bis 84. Diese passen ins übliche Raster der Hobbyisten von 2,54 mm und können in Fassungen und auf Lochrasterplatten verwendet werden.

Die einzige Begrenzung besteht in der Anzahl der verfügbaren Gatter und/oder I/O-Leitungen.

Der Grund, Altera-ICs zu verwenden, liegt lediglich in den Erfahrungen mit der Entwicklungssoftware. Wahrscheinlich hat kein anderer Hersteller eine derart große TTL-Datenbank, die frei zuganglich mit der freien Software geliefert wird. Der großte Vorteil dieser Entwicklungssoftware: Viele altere Hobbyisten kennen die TTL-ICs. Sie waren einst das Nonplusultra der Elektronikentwicklung. Erinnert sei an endlose Schaltungen für Uhren, Frequenzzahler etc. Mit der Zeit wurden diese ICs durch CMOS-ICs mit den gleichen Funktionen ersetzt.

Mit der Software ist es nun moglich, einfach ein Schaltbild mit Logikschaltkreisen zu erstellen und dann, wenn alles richtig "verdrahtet" ist, diese Schaltung zu kompilieren und in das komplexe IC zu übertragen. Sollten Fehler in der Schaltung vorhanden sein, werden sie automatisch erkannt und angezeigt. Sobald die Fehler beseitigt wurden, kann neu kompiliert werden. Schon hat man z. B. eine Digitaluhr in einem einzigen IC. Anderungen sind mit einigen Einschränkungen jederzeit moglich.

Die Software

Es gibt zwei frei erhältliche Entwicklungspakete bei Altera. Das einfachste ist MaxPlus+, das andere QuartusDesign II. Diese Version wird hier genutzt. Diese Software kann kostenlos aus dem Internet geladen werden.

Man sollte wissen, dass die Große der Datei bei QuartusDesign ca. 200 MB ist. Das braucht natürlich seine Zeit mit einem 56k-Modem.

Der gravierendste Unterschied ist, (lass bei MaxPlus+ in der freien Version keine möglichkeit besteht, Programmteile in VHDL einzufügen. Dieser Nachteil wird sich im weiteren Verlauf noch bemerkbar machen.

Alle von mir verwendeten ICs werden von den Programmpaketen unterstützt.

Die Programme setzen auf der Windowsumgebung auf, unterstützte Versionen sind WIN98, WIN NT4, WIN 2000 und WIN XP. Die freien Versionen sind nicht netzwerkfähig.

Die Software arbeitet sehr gut und sicher. In über zwei Nutzungsjahren gab es keine Systemabstürze. Jeder Fehler im Schaltbild oder Programm wird angezeigt. Erst wenn alle Fehler beseitigt sind, wird das Programm assembliert und ein Programmfile erstellt.

Nach der Installation ...

... der Programme wird der Lizenzcode erfragt. Dieser steht in einer Datei mit dem Namen license.dat, die per E-Mail an den Benutzer übermittelt wird. Darin ist die NIC-Adresse (Network Interface Card) enthalten. Jede Netzwerkkarte hat eine eigene Adresse, die vom Hersteller festgelegt wird. Diese ist in der Datei license.dat eingetragen, darf aber nicht mit einem Editor verandert werden, denn danach wird sie nicht mehr erkannt. Deshalb muss bei Anderung der NIC auch eine neue Lizenz (Freischaltcode) angefordert werden. Die NIC-Adresse kann sehr einfach unter Windows ermittelt werden. Man geht in die Eingabeaufforderung, gibt ipconfig/all ein und bestatigt. Dann Offnet sich ein Fenster, und dort werden alle Netzwerkeinheiten mit ihren zugehOrigen NIC-Adressen angezeigt. Diese sollte man also vor der Erlangung einer Lizenzkennen. Daher ist ein Internetzugang unbedingt erforderlich.

Hat das Programm die Lizenzdatei richtig erkannt, kann man mit der Software arbeiten. Die Lizenzierung ist nur einmal nötig, beim nächsten Start der Software kann man sofort loslegen. Man sollte immer darauf achten, dass die Netzwerkkarte nicht geändert wird. Es ist wirklich kein Problem, eine neue Lizenz zu erhalten, aber lastig. Man kann ubrigens auch fur mehrere Computer Lizenzen bekommen.

Ein kleiner Wermutstropfen für deutsche Benutzer: Die Software ist nur in Englisch erhältlich. Dafür funktioniert sie ganz hervorragend, und durch Servicepacks ist ein Update moglich - wiederum kostenlos. Viele Dinge lassen sich intuitiv bedienen.

Fehlermüglichkeiten

Jeder, der sich mit dieser Technik befassen will, sollte in der Lage sein, Fehler erst bei sich selbst bzw. seiner Arbeit zu suchen. Das Programm macht keine logischen Fehler und lässt auch keine solchen Fehler zu. Bei allen Fehlermeldungen bitte also die eigene Arbeit, sprich das Programm oder Schaltbild, genau prufen!

"Logischer Fehler" bedeutet als Beispiel die unzulassige Verbindung von Ausgangen oder den Anschluss von Ausgangen an festes Potential. Das sind Fehler, die mit Sicherheit wahrend der Logikanalyse zum Abbruch führen. Anders sieht es aus, wenn etwa die Ausgänge eines Zahlers ABCD mit den Eingangen eines Decoders in falscher Reihenfolge, wie BDCA, verbunden werden. Das ist logisch kein Fehler und wird daher nicht zum Abbruch des Kompiliervorganges führen. Das Programm weiß ja nicht, was "sein Mensch" sich dabei gedacht hat. Eine zeitweilig unangenehme Eigenschaft des Kompilers gibt es noch: Wird z. B. der Eingang einer Zahlerkette auf Masse gelegt oder offengelassen oder werden Reset-Eingange so verdrahtet, dass ein dauender Reset erfolgt, erscheint keine direkte Fehlermeldung, sondem nur ein Warnhinweis. Daher findet auch kein Programmabbruch statt. Man kann am Ende des Kompiliervorganges nur feststellen, dass plotzlich nur sehr wenige Logikzellen benotigt werden. Der Grund: Die gesamte Zahlerkette wurde als unnötig deklariert und auch nicht erstellt. Also Vorsicht, wenn das Ergebnis in keinem Verhaltnis zum eigentlichen Aufwand steht!

Zur Programmerstellung...

...gibt es mehrere Möglichkeiten. Hier sind nur zwei von Interesse. Die erste und wohl einfachste ist die über den Schaltplaneditor. Die zweite ist die mit VHDL (Very High Density Language).

Nun darf man jedoch bei der ersten Möglichkeit nicht glauben, es handele sich um ein übliches Schaltplanprogramm. Der Altera Schaltplaneditor lasst nur eigene Symbole aus seiner Bibliothek zu. Es gibt keine passiven Bauelemente, wie Widerstande, Kondensatoren, Spulen und ahnliches. Das CPLD "kann" nur digitale Logikschaltungen, da es nur aus Gattern und Logikzellen besteht. Deshalb sucht man auch vergeblich nach Monoflops. Nur durch externe Beschaltung sind solche Zeitglieder moglich. Es geht darum, die eigene Digitalschaltung zu konstruieren und diese dann als komplettes Bauteil in die eigene Bibliothek zu integrieren. So sind schließlich auch die Bauteile der Bibliothek entstanden. Alle digitalen Bauteile lassen sich jedoch auch softwaremaßig realisieren. Dafür gibt es die Programmiersprache VHDL. Sie ist in ihrer Syntax so aufgebaut, dass sich alles logisch erklären lasst.

Beim Autor verwendet wird lediglich ein VHDL-Modul, das die Steuerung für eine gemultiplexte vier- bis achtstellige LED-Anzeige darstellt. Durch einfaches Andern einiger weniger Parameter lassen sich so Anzeigen mit gemeinsamer Anode oder gemeinsamer Kathode und unterschiedlicher Stellenzahl verwenden. Das ist nicht unwichtig.

Zum Schluss muss nur noch der Programmieradapter softwareseitig installiert werden. Nach der Installation der Software befindet sich im Verzeichnis Quartus ein Ordner mit Namen Driver. In diesem befinden sich die entsprechenden Dateien far WIN 2000, WIN NT4 und WIN XP. Jeder sollte die Installationsroutinen fur sein Betriebssystem kennen und wissen, wie neue Hardware installiert wird. Dabei muss der Adapter nicht installiert sein.

Die verwendeten ICs

Die Auswahl der hier benutzten ICs basierte auf zwei Kriterien: populares Raster (und damit maximal 68 I/O-Ports beim Gehause PLCC 84) und implementiertes JTAG-Interface. Die hier angegebenen Daten dienen nur zur Ubersicht. Es gibt zwei CPLD-Familien, die in Frage kommen:

Serie MAX 3000A

Im gewünschten PLCC-Gehause kommen nur die Typen EPM 3032 und EPM 3064 mit je maximal 34 I/O-Leitungen. Darin sind bereits die vier JTAG-Anschlüsse TDO, TDI, TMS und TCLK enthalten. Diese könne aber, unter Verlust der ISP, auch als I/O-Anschlüsse programmiert werden.

Serie MAX 7000S

Ab der Gehausegröße PLCC84 ist eine Trennung der Versorgungsspannung moglich: Der Kern (VCCINT) arbeitet mit 5 V, aber die 1/0-Leitungen kennen mit der Spannung VCCIO auf 3,3 V gezogen werden. Im Gehause PLCC 44 sind die Typen EPM 7032S, und EPM 7064S mit maximal 36 I/O-Leitungen erhältlich. Im Gehause PLCC 84 gibt es die Typen EPM 7064S und EPM 7128S mit maximal 68 UO-Leitungen. Es sei darauf hingewiesen, dass alle anderen MAX 7000 kein implementiertes JTAG-Interface haben und spezielle Programmiergerate brauchen.

Der Programmieradapter...

...kommt zuerst, denn irgendwie muss das fertige Programm bzw. Schaltbild ja in die IC kommen. Der Adapter ermoglicht das Beschreiben der IC als auch das Auslesen. Dabei sollte man sich jedoch keinen falschen Hoffnungen hingeben. Es wird nur der reine Programmiercode ausgelesen, ein Rekompilieren ist nicht moglich. Die entstehende Datei kann lediglich zum Kopieren verwendet werden, da sie für den "normalen" Menschen nichts über die Funktionen der IC aussagt. Die ICs werden über eine JTAG-Schnittstelle programmiert. Darauf wird nicht naher eingegangen.

Die Programmierung erfolgt fiber vier Leitungen in seriellem Format:

  1. TDI (Daten werden eingeschrieben)
  2. TDO (Daten werden ausgelesen)
  3. TMS (Mode Select zur Richtungssteuerung)
  4. TCLK (Taktleitung)

Wie man leicht erkennen kann, ähnelt das Handling vielen seriell programmierbaren Bausteinen. Werden diese Leitungen bei allen Chips angeschlossen, so ist nicht nur eine Programmierung in der Schaltung (ISP) moglich, sondern sogar die Fernprogrammierung, wie sie heute von vielen Firmen für Updates genutzt wird. Durch Reihenschaltung der TDI/TDO-Leitungen ist die Moglichkeit gegeben, mehrere ICs in einem Arbeitsgang zu programmieren oder auszulesen.

Das Programmiermodul besteht aus einem TTL-Treiber 74HC244 und einigen Widerstanden. Es muss zwingend ein HC-Typ sein, da mit unterschiedlichen Spannungen (3,3 und 5 V) gearbeitet wird. Der Adapter wird an die Parallelschnittstelle LPT über eine 25-polige Buchse angeschlossen und von der Entwicklungssoftware als ByteBlaster erkannt. Es werden lediglich die vier Datenleitungen gepuffert und über Widerstande auf definiertem Pegel gehalten. Die restlichen Anschlüsse an der Buchse dienen der Spannungserkennung, als Masseverbindung sowie der Softwareerkennung des Adapters.

Wegen der geringen Anzahl an Bauelementen kann der Adapter in ein kleines Gehause eingebaut werden. Es wurde eine 50x60 mm messende Platine entwickelt, auf die sich die Buchse liken lieB, so dass man sie direkt auf den LPT-Port aufstecken kann. Mit SMDs kOnnte der Adapter auch in einer DB-25-Kappe Platz fmden. Die Stromversorgung 3,3 oder 5 V erfolgt aus der zu programmierenden Schaltung oder dem Programmieradapter und wird automatisch erkannt.

Einzeldaten EPM 3032A
nutzbare Gatter600
Macrozellen32
nutzbare I/O-Leitungen34
max. Zählfrequenz Pin zu Pin222,2 MHz
Geschwindigkeit4, 7, 10 ns
GehausePLCC 44
Einzeldaten EPM 3064A
nutzbare Gatter1.250
Macrozellen64
nutzbare I/O-Leitungen34
max. Zählfrequenz Pin zu Pin222,2 MHz
Geschwindigkeit4, 7, 10 ns
GehausePLCC 44
Einzeldaten EPM 70325
nutzbare Gatter600
Macrozellen32
nutzbare I/O-Leitungen36
max. Zählfrequenz Pin zu Pin175,4 MHz
Geschwindigkeit5, 6, 7, 10 ns
GehausePLCC 44
Einzeldaten EPM 7064S
nutzbare Gatter1.250
Macrozellen64
nutzbare I/O-Leitungen36/68
max. Zählfrequenz Pin zu Pin175,4 MHz
Geschwindigkeit5, 6, 7, 10 ns
GehausePLCC 44/84
Einzeldaten EPM 71285
nutzbare Gaffer2500
Macrozellen128
nutzbare I/O-Leitungen68
max. Zählfrequenz Pin zu Pin141,1 MHz
Versorgungsspannung3,3 oder 5 V
Geschwindigkeit6, 7, 10 ns

Peter Arlt, DG4EAY