Speziell oder Universell?

Wozu diese Seite - Programmiergeräte für jede Art von programmierbaren Bausteinen kann man kaufen oder selbst bauen. Hobbybastler bauen sich Programmiergeräte für Microcontroller verschiedener Hersteller selber, und in der Industrie geht die Tendenz zu ISP -in system programmable- Lösungen. Dennoch gibt es eine Vielzahl von Anwendungen, in denen man mit einer Bandbreite von Bauteiltypen konfrontiert wird, für die eine schnelle Selbstbaulösung nicht in Frage kommt. Gerade ältere Speicher und Controller stellen teilweise sehr unterschiedliche und auch komplexe Anforderungen an ein Programmiergerät, das, wenn es wirklich universell einsetzbar sein soll, einen grossen Teil der im Einsatz befindlichen Bausteine beherrschen muss. Hierzu gibt es verschiedene Ansätze, die ich im Folgenden, teilweise anhand von Beispielen, kurz darstellen möchte.


Intel UPP 103 Universal PROM Programmer

Interessant an diesem Peripheriegerät für das Intellec Entwicklungssystem sind die sogenannten Personality Cards, durch die bestimmt wird, welcher Chip im jeweiligen Sockel programmiert werden kann. Nachteilig ist allerdings, dass das Grundgerät, basierend auf einer i4040-CPU, nur die notwendigsten Funktionen zur Verfügung stellt und die Personality Cards demnach noch sehr aufwändig ausfallen, obwohl sie nur sehr wenige Bausteintypen beherrschen, z.B. nur EPROMs mit praktisch identischer Anschlussbelegung. Bemerkenswerter erscheint mir jedoch der Ansatz, die für die jeweiligen Typen relevante Software in ROMs auf den Steckmodulen unterzubringen.


Data I/O System 29B mit Sockeladapter Unipak 2B

Wesentlich umfangreicher fällt die Grundausstattung dieses Systems aus. Es bietet eine Tastatur und ein Display zur Bearbeitung der Inhalte des integrierten, 256kBytes umfassenden RAM-Speichers, ein Netzteil zur Bereitstellung verschiedener -auch negativer- Spannungen zur Programmierung, eine serielle Schnittstelle zum Anschluss an verschiedene Host-Systeme sowie die notwendigste Software zur Ansteuerung dieser Komponenten. Die Funktionalität wird durch steckbare Sockeladapter, im Bild ein Adapter vom Typ Unipak 2B, bestimmt. Diese enthalten die für die jeweils programmierbaren Bausteine die nötige Software und sind mit der entsprechenden Logik sowie mit D/A-Umsetzern ausgestattet, die es erlauben, Betriebsspannungen und Strombegrenzungen per Software durch das Grundgerät festzulegen. Weitere Flexibiltät kann durch Austausch eines Sockelmoduls erreicht werden, so dass der zunächst für EPROMs bis 64kBytes ausgelegte Sockeladapter nach Softwareupdate durch Auswechseln einer einfach aufgebauten Platine mit dem entsprechenden Nullkraft-Sockel Typen mit bis zu 512kBytes verarbeiten kann.

Moderne Multifunktionsgeräte arbeiten nach dem Prinzip des Universal Pin Drivers, d.h. man hat die aufwändige Lösung mit mehreren Sockeln für grundverschiedene Typen durch einen schaltungstechnischen Mehraufwand letztlich vereinfacht, indem man Schaltungen entwickelt hat, die es ermöglichen, jeden einzelnen Pin eines zu programmierenden Bauteils mit Masse, Versorgungs- oder Programmierspannung oder einem schnellen Logik-Signal zu beaufschlagen. Diese Lösung bringt aber auch Probleme mit sich, denn eine Symbiose aus schnell schaltenden Bauelementen für Signale mit mehreren MHz (z.B. der Takt beim Programmieren von Microcontrollern), einem Schalter mit niedriger Impedanz für die Masseversorgung und spannungsfesten Schaltern für die Zuschaltung von Versorgungs- und Programmierspannung ist bislang praktisch nur mit Kompromissen gelungen. So verwenden einige Geräte einen zuschaltbaren Taktgenerator an einigen wenigen Pins um auf die komplexen schnellen Treiberschaltungen zu verzichten, was die Anzahl der programmierbaren Typen natürlich erheblich einschränkt. Andere Hersteller verzichten auf weitere Spannungen und bieten lediglich eine in kleinen Grenzen variierbare Versorgungs- sowie eine Programmierspannung an, was die Verwendung für die Sicherung und Programmierung älterer Bausteine, die teilweise mehr als eine Betriebsspannung erfordern, gänzlich ausschliesst. Dies ist einer der entscheidenden Punkte, den ein Programmiergerät für mich erfüllen muss, da ich es intensiv zur Sicherung von ROM-Inhalten historischer Mess- und Datenverarbeitungsgeräte einsetzen möchte, wo zeitweilig sogar negative Spannungen zum Betrieb von EPROMs benötigt werden - ein Feature, das kein gängiges Programmiergerät bieten kann, da aus Kosten- und Platzgründen praktisch ausschliesslich mit Halbleitern geschaltet wird und somit die Kombination aus Geschwindigkeit, niedrigem Innenwiderstand, biploraren Spannungen und nicht zuletzt Betriebssicherheit fast unmöglich erscheint.


Erster Prototyp einer Pin-Driver-Platine

Aus diesen Erkenntnissen entstand ein Entwurf für einen anderen Universal Pin Driver, bei dem entscheidende Schaltvorgänge mit Relais vorgenommen wurden. Der Aufwand ist erheblich, bietet aber einige Vorzüge. Die hier ohne "daughther board" dargestellte Platine steuert 8 Pins an, wovon jeder unabhängig auf Masse, eine von vier Programmier- oder Versorgungsspannungen oder einen CMOS-/TTL-Ausgang geschaltet werden kann. Der TTL-Ausgang beherrscht die Modi push-pull und open collector (theoretisch auch open emitter, was mir bisher in der Praxis jedoch nicht begegnet ist), wobei unabhängig davon pull-up-Widerstände zugeschaltet werden können. Der Ausgangstreiber wird über einen Multiplexer entweder mit log.0, log.1 oder einem von zwei möglichen Takt- oder Steuersignalen beaufschlagt. Die TTL-Leitungen verfügen über schnelle Schottky-Dioden als Überspannungsschutz gegen Masse und die Versorgungsspannung der Treiber, die im Übrigen zwischen 2.5 und 6V gewählt werden kann. Neben dieser Platine vom Herbst 1998 existiert noch ein Versuchsaufbau eines Netzteils, das die interne Logik sowie die Treiberschaltkreise versorgen und letztere auch überwachen kann, es sollten programmierbare Schaltschwellen für maximalen Ausgangsstrom sowie eine Erkennung von aussen eingespeister Ströme, z.B. durch einen defekten Baustein im Programmiersockel, realisiert werden. Die Planung ging dahin, 8 dieser Baugruppen mit dem bereits fast fertig gestellten Netzteil, zwei PLL-basierten programmierbaren Taktgeneratoren und vier programmierbaren geregelten Netzteilen in zwei 19"-Baugruppenträgern zu montieren. Das bereits an diesem Punkt anspruchsvolle Pflichtenheft wurde weiter ergänzt durch besondere Wünsche die Taktgeneratoren betreffend, so sollten z.B zwei gegenphasige Signale generiert werden können; ferner sollten die vier Netzteil-Module im Bereich von 0 bis 30 Volt bei umkehrbarer Polarität programmierbar sein, über eine einstellbare Strombegrenzung verfügen sowie bei Erreichen einer vorher festzulegenden Überspannungsschwelle sofort abschalten, um ein eventuell nicht ersetzbares Bauteil vor Beschädigung zu schützen. Ferner sollten Anstiegs- und Abfallzeiten programmierbar sein, was für die reproduzierbare Verarbeitung bestimmter PROM-Typen unumgänglich ist. Um schliesslich weitergehende Messungen am zu programmierenden Baustein durchzuführen, verfügt die Pin-Driver-Karte über einen kaskadierbaren Analog-Multiplexer.
Aufgrund des erheblichen Aufwands habe ich diese Konzept seit einiger Zeit nicht weiter verfolgt. Neben der umfangreichen Hardware wäre zur Inbetriebnahme auch eine komplexe Software nötig gewesen.