Sonntag, 16. März 2014

Alles eine Frage des Timings

Nachdem ich bald einen Schreck bekommen hatte, dass dieser Z80, im Gegensatz zum Original-Z80, den externen Takt nicht etwa durch vier teilt, sondern tatsächlich mit der vollen Taktfrequenz laufen kann, schaute ich nochmals in die Timing-Diagramme im Z8S180-Handbuch. Natürlich will ich, wenn ich denn schon einen 33 MHz Prozessor habe, diesen auch mit der vollen Geschwindigkeit und ohne Wait-States betreiben.
Nach den Timing-Diagrammen ergab sich hieraus eine maximale Antwortzeit des externen Speichers von 1,5 Taktzyklen. Bei 33 MHz ist ein Zyklus 30ns lang. Die maximale Antwortzeit liegt demnach bei 45ns. Nicht viel Zeit.
Nachdem ich in einigen Foren herum fragte, welche Möglichkeiten es zu schnellen Signal-Auswertung es denn gäbe, kam ich auf die folgende Idee: Es gibt keine komplizierte Auswertung, und auch nur zwei schnelle Speicherbausteine á 512 kB RAM. Das wurde dadurch möglich, dass ich komplett auf das EPROM verzichtete.
Meine ersten Ideen gingen davon aus, dass ich ein EPROM, sagen wir mal 32 kB, im untersten Adressbereich liegen habe. Ein Flip-Flop, das bei einem Reset zurück gesetzt wird, entscheidet darüber, ob Lesezugriffe auf die unteren 32 kB auf das EPROM oder das RAM geleitet werden. Nach dem Reset kopiert die CPU das EPROM in das RAM und setzt das Flip-Flop um. Nachfolgende Operationen finden dann komplett im RAM statt.
Das alles hätte aber eine Logik erforderlich gemacht, die viel zu langsam für die geforderten 45ns wäre. Statt dessen sitzt an der Stelle des EPROMs ein ATmega32. Dieser übernimmt nach einem Reset die Kontrolle über den Bus und hält den hält den Z8S180 im Dauer-Reset. Sodann kopiert der ATmega seine Nutzfracht aus seinem Flash in das RAM. Danach macht er seine Leitungen hochohmig (zieht sie quasi aus dem Sockel) und gibt dem Z8S180 den Reset frei. Dieser findet dann direkt im Speicher sein Betriebsystem vor.
Ein weiterer Vorteil dieser Methode ist, dass ich den Inhalt des "EPROM"s quasi beliebig oft in-system umprogrammieren kann. Ich brauche keinen UV-Löscher, keinen EPROMmer, sodern nur einen ATmel-ISP Adapter. Vorhanden!

Keine Kommentare:

Kommentar veröffentlichen