Zilog Z86C93 statt U883
Tiny goes Zilog - Ersatz des U883 im Tiny bzw. Comp-Ju+Te-r von Uwe Nickel
Umbauüberlegung, Anleitung und Erfahrungen
Der U883 ist immer schlechter zu bekommen. Zwar tauchen immer noch Exemplare unter den Freaks auf, aber die Anzahl wird wohl kaum größer. Und sind wir doch mal ehrlich: Ein wenig mehr Tempo mit 'nem flotteren Prozessor wäre doch auch nicht verkehrt. So entstand bei mir die Überlegung das DDR-IC mit möglichst wenig Hardwareaufwand in bereits bestehenden Systemen zu ersetzen, auch ohne große Softwareanpassungen an einen anderer EMR-Typ. Immer wieder hört man dabei die Aussage „Es geht nicht“, „es gibt keinen Austauschtyp….“
Wie sich herausstellte, ist das nur teilweise richtig! Richtig formuliert muss man wohl sagen, dass es keinen 1:1 - Austauschtyp von Zilog gab bzw. gibt, so á la DL000 = 74LS00 , also keinen Typ der gleichzeitig Pin-, Signal-, Befehls-, Register- und Rominhaltskompatibel ist. Gerade Letzteres, der ROM-Inhalt muss dabei wohl als die eigentliche Eigenentwicklung angesehen werden.
Nimmt man aber die oben erwähnten Kompatibilitäten mal auseinander, betrachtet sie Einzeln und sucht dann aus dem Produktchart aus, dann stellt man fest:
- Befehlskompatible IC (im Sinne von abwärtskompatibel) kein Problem, ist ja auch klar, ist eben der Z8-Core!
- Signalkompatibel, was Signalspiel und -spannungen anbelangt, auch kein wirkliches Problem, wenn man 5Volt-Typen ins Auge fasst, soll ja in unsere alte Schaltung passen,
- Registerkompatibel ist nicht das wirkliche Problem, der Registersatz, wie im U883 ist wohl der kleinste gemeinsame Nenner aller Typen
- Pinkompatibel auch machbar! Einige Typen gab's/gibts, die die gleiche Pinbelegung wie die 88xx Serie haben, im DIP-Gehäuse,
- Da sich der ROM mit Sicherheit so nicht als interner ROM finden wird, bleibt: ROMLESS-TYP.
Und genau so landet man u.a. beim Z86C93 im Dip-Gehäuse!! Zwar ist das auch nicht gerade mehr das neueste Modell, aber ich konnte ihn problemlos beziehen.
http://www.zilog.com/docs/z8/dc2508.pdf oder auch http://www.datasheetcatalog.org/datasheet/zilog/Z86C93.pdf
Er „passt“ an Stelle des U883 in die Schaltung, hat abwärtskompatiblen inneren Aufbau und tut das, was man von 'ner Version ohne ROM erwarten darf: Auch Adressen kleiner 800H sind „außen“ verfügbar, d.h. /AS, /DS werden aktiv. Und die Ansprungadresse nach Reset ist 0CH, genauso wie im internen ROM des U883.
Damit ist eigentlich der „Umbau“ nun schon erklärt!
- Den Inhalt des internen ROM des U883 in einen externen ROM brennen, auf gleiche Adressen, also 0H - 7FFH.
- Sicherstellen, dass dieser Adressbereich auch dekodiert wird, was je nach Ausbaustufe des Tiny, den verwendeten Schaltkreisen zur Dekodierung etc. individuell variieren kann.
- Prozessortausch und Los!!
In meinem System werkelte z.B. schon bisher ein 32 k-Eprom, dessen erste 2k eben durch den U883 nicht dekodiert wurden (wegen /DS=High im Adressbereich interner ROM) und einfach bisher FFh waren, und da habe ich nun ganz einfach der Inhalt des internen ROM des ´883 hineingebrannt.
Hinweis: Beim UB8830 ist nun eben im Bereich des internen ROM keine Unterscheidung Datamemory und Programmemory. Bei Unterscheidung dieser Speicherbereiche (Signal /DM) muss der interne ROM-Code in beide Speicher kopiert werden!
Ich verwende einen Z86C9320PSC, also einen mit 20 MHz Takt maximal.
Sieht übrigens recht lustig aus, wenn man dann bei doppelter Taktfrequenz, ohne Änderung der Bildschirm-ISR, den Bildschirminhalt gleich 4 mal sieht.
Was kann/hat der Z86C93 noch (siehe Datenblatt)?
- Die beiden Timer T0, T1 können auch als 16 bit-Timer arbeiten,
- Es gibt einen 3. Timer T2,
- Für die Timersteuerung zusätzliche Register, aber nach Reset Verhalten, wie bei U883,
- Die Registerbank ist durchgängig vorhanden, also auch Register ab 80H, (da werde ich wohl viele meiner Routinen noch mal umschreiben und anstelle von Hilfszellen im RAM bzw. des ewigen Pushen und Poppens einfach ein paar der Register verwenden!)
- Die Taktfrequenz kann >8 MHz sein, Typen gibt's bis 33 MHz.
Troubleshooting
In meinem System musste ich das RC-Glied am Ausgang des '030 bzw. R/S Eingang des '074 leicht verändern. Der Widerstand nach 5 Volt wurde auf 1,5 kOhm verkleinert.
Alles so durchgeführt und getestet am 14.08.2008