Hello World,
es vergeht kein Monat, da nicht die Diskussion über das Cloning von CSG Custom Chips in den einschlägigen Foren auftaucht. Grund genug, einmal an dieser Stelle über das Machbare und Unmögliche zu reden.
Chipcloning - was ist das überhaupt?
Unter Chipcloning versteht man das Nachempfinden bzw. den tatsächlichen Nachbau eines integrierten Schaltkreises. Während im ersten Fall lediglich das Verhalten hinreichend genau emuliert wird, verwendet man in letzterem Fall tatsächlich die Originalschaltung.
Doch welche Bausteine verwendet man für Chipcloning? Kaum einer wird Zugriff auf eine Chip-Fabrik, eine sogenannte Foundry, haben. Auch die Fertigung von kundenspezifischen Bausteinen (Application Specific Integrated Circuit, ASIC) ist für Kleinserien zu teuer und rentiert sich erst ab mindestens 1000 gefertigten Einheiten. Doch es geht auch anders:
Seit etwa 20 Jahren existieren sogenannte programmierbare Logikbausteine (PLD, von engl. Programmable Logic Device). Auch im C64 steckt ein solcher, die PLA. Der Name kommt nicht von ungefähr, denn PLA steht für Programmable Logic Array. Mittlerweile gibt es eine Vielzahl von programmierbaren Logikbausteinen - von einfachen (simple PLDs) über komplexere (complex PLDs) bis hin zu den hochflexiblen FPGAs (Field Programmable Gate Arrays). Gerade letztere warten mit ausreichend Ressourcen auf, so daß es im Bereich des Möglichen liegt, auch komplexere C64-Bausteine mittels solcher CPLDs und FPGAs nachzuempfinden.
Und wie geht das?
Wie eingangs erwähnt existieren zwei Möglichkeiten: Emulation und Nachbau. In aller Regel wird man sich der Emulation bedienen, denn von den Chips sind üblicherweise keine Daten über den inneren Aufbau verfügbar. Hier muß man zunächst ein Verhaltensmodell erstellen, welches diesen Chip bei geringstem Modellierungsaufwand so genau wie möglich beschreibt. Das so erhaltene Modell stimmt dann meist erstaunlich genau mit dem tatsächlichen Chip überein. Ein Beispiel für diese Vorgehensweise ist die von Andreas Boose und Marko Mäkelä durchgeführte Analyse des VIC-II Bausteins. Die so gewonnenen Erkenntnisse flossen direkt in die Entwicklung des VICE, einem C64-Emulator für verschiedene Computerplattformen, ein.
In seltenen Fällen hat man jedoch direkten Zugang zu den Interndaten. Bekanntestes Beispiel ist sicherlich die PLA. Dieser Baustein kann mittels eines modifizierten EPROMmers bzw. einem speziellen Gerät ausgelesen werden. Bei Verwendung eines EPROMmers muß man aus dem so erhaltenen Image zunächst noch die eingespeicherten Logikgleichungen extrahieren, das Resultat ist jedoch in beiden Fällen identisch. Mit den so gewonnenen Daten lassen sich Ersatz-PLAs programmieren bzw. das identische Verhalten auf andere Logikbausteine übertragen.
Nicht ganz so einfach geht's beim Logic Array der 1541. Durch genauen Vergleich der Schaltpläne von 1540 und 1541 erhält man ein Schaltbild des Internaufbaus dieses Bausteins. Dieses Schaltbild muß mittels einer entsprechenden Software oder aber von Hand in Logikgleichungen überführt werden und kann anschließend ebenfalls in handelsübliche Logikbausteine einprogrammiert werden.
Der Pferdefuß
Wer nun glaubt, das alles sei ja gar zu einfach, und sich schon auf neue SIDs, VICs und CIAs freut, muß jedoch enttäuscht werden. Diese Bausteine sind sehr komplex. Weiterhin enthalten sie gewisse designtechnische Unsauberkeiten (design flaws), welche zumeist gerade den besonderen Reiz ausmachen und - z.B. im Falle des VIC - die beliebten Programmierkniffe erst ermöglicht haben. Hier muß sehr gewissenhaft bei der Erstellung des Modells vorgegangen werden, um eine genaue und fehlerfreie Beschreibung des Bausteins zu erhalten.
Nun mag man argumentieren, daß diese Beschreibungen ja schon vorliegen. Jeder kann sich den C-Source des VICE besorgen und somit diese Beschreibungen einsehen. Das ist zwar richtig, jedoch liegen zwischen einer Programmbeschreibung in C und einer Hardwarebeschreibung gewisse Unterschiede. Der wohl gravierendste Unterschied ist der, daß bei Computerprogrammen eine inhärente Sequentialität vorliegt. Man kann stets davon ausgehen, daß die Codezeilen sequentiell abgearbeitet werden. Dies ist bei Hardwarebeschreibungen genau umgekehrt: Die Codezeilen werden parallel abgearbeitet, Sequentialität muß über bestimmte Konstrukte erzwungen werden. Ein C-Source ist somit zwar als Arbeitsgrundlage sicherlich hilfreich, der Weg zur Hardwarebeschreibung ist jedoch lang und beschwerlich.
Schließlich verfügt man über eine Hardwarebeschreibung. Diese gilt es dann zu simulieren. Die Erstellung einer solchen Simulation (Testbench) ist jedoch mindestens so aufwendig wie die der Hardwarebeschreibung, gilt es doch hier eine realistische Simulation durchzuführen. Zu leicht verfällt man hier dem typischen Programmiererfehler, nur die Situationen zu überprüfen, die sinnvoll und prägnant sind.
Ist die Beschreibung überprüft und gegebenenfalls korrigiert worden, muß diese synthetisiert werden. Aus der Beschreibung werden Logikgleichungen erzeugt, welche anschließend in einen Baustein eingepaßt (gefittet) werden müssen. Gerade an dieser Stelle rächt sich dann der Einsatz von hochsprachlichen Konstrukten: Als Faustregel gilt nämlich, daß je abstrakter eine Beschreibung ist, umso aufwendiger werden die Logikgleichungen, d.h. umso leistungsfähiger muß der Logikbaustein sein. Aus Kostengründen will man natürlich mit einem kleinstmöglichen Baustein auskommen, so daß an dieser Stelle oftmals die Beschreibung geändert werden muß.
Insgesamt ist der Prozeß ein sehr langwieriger. Die Zeit für die Erstellung eines komplexeren Chips wird in aller Regel in Mannjahren gemessen und beschäftigt in entsprechenden Firmen ganze Entwicklerteams.
Wann gibt's denn nun neue VICs und SIDs?
Diese Frage ist sehr beliebt. Genauso beliebt ist die Antwort "gar nicht" mit der Begründung, VIC und SID enthielten analoge Komponenten. Als Begründung ist dies jedoch falsch. Die analogen Komponenten verhindern lediglich, daß man einen solchen Nachbau in nur einem Baustein unterbringen kann. Auch lassen sich analoge Baugruppen digital nachempfinden, Digital Signal Processing (DSP) heißt hier das Schlagwort. Dies ist jedoch ebenfalls eine Kostenfrage, so daß man z.B. im Falle des SID Filter und final VCA sicherlich als externe, analoge Komponenten aufbauen und nicht mit in die Logik integrieren wird.
Soweit zur Theorie. Warum es jedoch bis heute noch keine neuen CSG Bausteine gibt, ist eine simple Kostenfrage. Selbst bei einem primitiven Baustein wie der PLA, bei der man alle Unterlagen in Händen hält, ist der Fertigungsaufwand noch viel zu hoch. Man benötigt einen passenden Logikbaustein sowie eine Adapterplatine, um diesen für den PLA-Sockel passend zu machen. Ich habe dies am Beispiel des M4-32/32 von Lattice/Vantis exemplarisch durchgerechnet und entsprechende Angebote für Baustein, Adapterplatine nebst Fertigung derselben eingeholt. Das Resultat: Allein die Materialien liegen im Bereich von ca. DM15-20 und sind somit viermal teurer als ein Originalersatzteil. Wollte ein potentieller Hersteller an einem PLA-Clone noch etwas verdienen, so hätte sie einen absoluten Mindestpreis von DM29.
Bereits die für VIC, SID und CIA benötigten Logikbausteine liegen im Bereich von ca. DM50 bis DM100, nicht eingerechnet die analogen Zusatzschaltungen und der dickste Brocken, die Arbeitszeit. Und, mal ehrlich, wer würde sich einen VIC-Clone für DM399 kaufen?
Die Lösung: OpenHardware
Linux hat es uns vorgemacht und auch das FreeCPU-Projekt bedient sich dieses Ansatzes: Zusammenarbeit.
Viele Leute haben eine enorme Zeit in die Erstellung von Verhaltensmodellen gesteckt. Ein Teil dieser Erkenntnisse wurden in entsprechenden Texten (z.B. der VIC-II Artikel von Christian Bauer) niedergeschrieben und in Emulator-Sourcen verewigt. Ersterer reicht jedoch nicht aus als komplette Hardwarebeschreibung und die Emulator-Sourcen sind nur bedingt geeignet.
Darum der Aufruf: Arbeitet zusammen! Stellt nicht nur in ein VICE-Komplettsystem integrierte Sourcen zur Verfügung sondern auch detaillierte Darstellungen der Bausteininterna in Form von Zyklusdiagrammen und entsprechender Detailmodellierungen. Dann können sich die Hardwarebastler zusammensetzen, um eine entsprechende Bausteinbeschreibung zu erstellen. Auch hier ist Zusammenarbeit gefragt, denn die Modellerstellung ist extrem zeitaufwendig. Alle mir bekannten Nachbauprojekte scheiterten letztendlich daran, daß die jeweiligen Einzelkämpfer schließlich nicht mehr über die Zeit und Motivation verfügten, das Projekt auch zu beenden.
Des Teufels Advokat
Die Frage zum Schluß bleibt jedoch, was so ein Hardware-Nachbau bringt. Der Ersatzteilmarkt ist sicherlich noch auf einige Jahre hin durch Flohmarktverkäufe gedeckt - und bereits heute legen sich wahre Enthusiasten einen ganzen Park potentieller Organspender für ihren Haupt-C64/C128 zu.
Mittels Chipcloning könnte der Baustein-Nachschub auf unbegrenzte Zeit gesichert werden, denn eine Bausteinbeschreibung ist universell. Gibt es den einen Logikbaustein nicht mehr, verwendet man eben einen anderen.
Ein weiterer attraktiver Gedanke ist die Integration eines kompletten C64/128 in einige, wenige Bausteine - für den lang ersehnten Nachbau unseres Brotkastens wäre Chipcloning die absolute Voraussetzung. Auch könnte man entsprechende, kompatible Verbesserungen einführen, wie uns dies z.B. das ZX-Team am Beispiel der ZX81-Nachfolger ZX97 und ZX2000 vorgemacht hat.
Die Frage ist jedoch, was dies bringt. Einen 50MHz-C64 mit VGA-Ausgang gibt's schließlich schon heute - und er ist darüberhinaus quasi kostenlos, denn der hierfür benötigte PC ist fast schon Basisausstattung in jedem Haushalt.
Ob sich der Aufwand der Hardwareentwicklung lohnt, bleibt abzuwarten.
Wer sich nun inspiriert fühlt und gerne mal mit Logikbausteinen arbeiten möchte, der findet hier entsprechende Unterlagen und Software:
www.xilinx.com
Xilinx ist ein Hersteller von FPGAs und CPLDs. Für die CPLD-Entwicklung
bieten Xilinx derzeit den m.W. einzigartigen Service, eigene Entwicklungen
direkt über ein Web-Interface synthetisieren und fitten zu lassen, so daß
man lediglich einen Textexitor zur Erstellung der Bausteinbeschreibungen
auf dem heimischen Rechner benötigt. Für die Benutzung muß man sich jedoch
(kostenfrei) registrieren, erhält bei Beteiligung an entsprechenden Umfragen
jedoch ein T-Shirt als Dankeschön.
Besonders interessant für Cloningprojekte ist sicherlich die Spartan-Familie der FPGAs. Leider ist die hierfür benötigte Software nicht kostenlos: Man benötigt entsprechende Entwicklungsumgebungen, deren Kosten sich im Bereich von wenigen hundert bis hin zu mehreren hunderttausend DM bewegen können.
www.latticesemi.com
Lattice/Vantis ist der Hersteller schlechthin für SPLDs und CPLDs. Die
benötigte Entwicklungssoftware gibt's kostenlos zum Download, schlägt aber
bei insgesamt etwa 50MB mit etwas erhöhten Surfkosten zu Buche. Auch diese
Software muß man (kostenfrei) registrieren und erhält jeweils eine
6Monats-Lizenz, welche nach Ablauf der Frist kostenlos verlängert werden
kann.