Je mehr ich über CPLDs und FPGAs nachdenke, desto mehr bin ich davon überzeugt, dass hierin tatsächlich die Zukunft des Selbstbaus liegt. Zum einen deshalb, weil es oberhalb einer bestimmten MHz-Grenze einfach nicht mehr möglich ist, daheim im stillen Kämmerchen einen Rechner zusammen zu stecken. Beispielsweise einfach aufgrund der simplen Tatsache, dass man CPUs oberhalb 20 MHz, aber unterhalb der Gigahertz-Grenze gar nicht mehr bekommt. Ausnahmen bestätigen die Regel. Dasselbe gilt für den Speicher: Während man unterhalb von einem MB noch alles nachgeschmissen bekommt, existiert darüber nur noch ein schwarzes Loch, das erst bei den Speicherriegeln für PCs endet. Zum anderen bekommt man das Timing gar nicht mehr in den Griff. Einerseits weil die dazwischenliegenden Logikschaltkreise im Nanosekundenbereich arbeiten müssen, andererseits weil das Layout der Platine einen immer höheren Einfluss auf die Laufzeiten bekommt. Baut man jedoch einen Rechner komplett in einem FPGA, so scheinen diese Probleme alle zu verschwinden. Tatsächlich hat man dann einen 250 MHz Oszillator, ein FPGA, einen Flash-Speicher für das FPGA Programm, einige Schnittstellen (z. B. PS/2 Tastatur, Videoausgang, Audioausgang, Netzwerk-Anschluss) und einen Programmieradapter auf der Platine. Mehr nicht. Des gesamte Rechner befindet sich dann innerhalb des FPGA. Und das nicht einmal virtuell oder simuliert, sondern real per Software verdrahtet.
Aber noch einmal zurück zum Timing: Im Falle meiner Z8S180 CPU heißt das, dass ich hier einen Prozessor habe, der mit 33 MHz vor sich hin werkelt und der - ohne die Waitstates - seiner Peripherie Antwortzeiten unterhalb von 45ns abverlangt. Das klingt noch handelbar, aber das täuscht. Exemplarisch sei hier der gute alte 8255 Port-Expander aufgeführt. 24 I/O Leitungen mit denen der Prozessor mit der Außenwelt kommunizieren kann. Ein Blick in das Datenblatt des 8255 offenbart das Problem in seiner vollen Hässlichkeit: Der 8255 braucht einen Schreib-/Leseimpuls von einer Mindestlänge von 300ns. Er ist rechnerisch also um den Faktor 7 zu langsam für diese CPU. Dasselbe gilt für die serielle Schnittstelle.
Moment: Wieso brauche ich eine externe serielle Schnittstelle, wenn die CPU doch zwei eingebaute UARTs hat? Auch das ist wieder so eine kleine Hässlichkeit, die sich daraus ergibt, dass ich die CPU unbedingt mit ihren vollen 33 MHz laufen lassen will. Zum Verständnis: Die Taktfrequenz für den UART muss um den Faktor 16 größer sein, als die eigentliche Baudrate. Für 38.400 Bit/s wären das also 614400 Hz. CPU-intern gibt es einen programmierbaren Frequenzteiler, der den Prozessortakt Phi (hier also 33 MHz) zunächst vorteilt (durch 2, 4, 8, 16, ... 256) und dann durch einen einstellbaren Wert von 1 bis 255 dividiert. Damit also überhaupt rechnerisch eine Taktfrequenz von 614400 Hz (20 Hz mehr oder weniger spielen da keine Rolle) erreicht werden kann, muss die CPU mit einer Frequenz von 24 MHz laufen. Oder 36 MHz, was nicht funktioniert.
Meine Idee ist daher, sowohl den Portexpander, als auch die serielle Schnittstelle in einen CPLD zu programmieren. CPLDs gibt es im Laufzeitbereich von 20ns bis hinunter zu 5ns. Der XC9572 ist auch tatsächlich für wenige Euro z. B. bei Reichelt zu bekommen. Interessanterweise gibt es ihn dort als auflötbares kleines Quadrat mit 44 oder 100 Pins zu fast identischem Preis von derzeit €2,15 oder € 2,60. Will man den Chip jedoch als sockelbaren 44 Pin PLCC haben (so einen Sockel kann man noch gut selbst fädeln und löten), dann kostet er gleich € 7,10.
Da auch die Speicherbausteine, die ich verwenden muss, lediglich als SMD-Bausteine zu bekommen sind, werde ich wohl nicht umhin kommen, mir auch noch einen SMD-Arbeitsplatz zuzulegen. Glücklicherweise hat Pollin justamente eine SMD-Heißluft Lötstation im Katalog. Außerdem einen SMD-Bausatz für SMD-Einsteiger, usw.
Was ein Aufwand. Ich glaube, meinen nächsten Rechner baue ich komplett in einen FPGA. Vielleicht sogar den SC/MP II, inclusive Speicher, EPROM und Ansteuerung für Tastatur, 8x7-Segment Displays und Kassetteninterface. Ach ja, ich weiß jetzt gar nicht mehr, wer das fragte, aber ja: Den SC/MP II gibt es immer noch zu kaufen. Und ja, er heißt wirklich INS-8060.
Keine Kommentare:
Kommentar veröffentlichen