Z80 Versionen

    • Offizieller Beitrag

    Du kannst ohne Probleme eine 6MHz CPU mit 4 MHz laufen lassen.


    Bei den NMOS Typen gab's meines Wissens noch eine Mindestfrequenz. Bei den CMOS Typen ist die weggefallen.
    Hab gerade im Datasheet nachgeschaut:
    CMOS:
    Clock Cycle Time: 250 - DC ns (bei der 4 MHz CPU)
    NMOS:
    Clock Cycle Time: 250 ns
    Clock Pulse Width: 110 - 2000 ns


    Das entspricht also min. 250 kHz. Rise und Fall Time hab ich mal vernachlaessigt.


    Was willste noch wissen. Z80 ist meine erste und Lieblings-CPU.

  • Wobei schon ein paar Dinge überprüft werden sollten, die womöglich von der Prozessorfrequenz abgeleitet werden - z.B. die DRAM-Refresh-Zykluszeit - wenn die per Software mittels eines Teilers festgelegt werden kann (was ich eigentlich vermute), wird Software für einen 4MHz-Prozessor diese Zykluszeit auch auf einem 6MHz-Prozessor passend einstellen, wenn der mit 4MHz betrieben wird, falls die aber fix aus den 6MHz abegeleitet wird, wird bei einem Betrieb mit 4MHz die Refresh-Zykluszeit entsprechend höher und fällt dann u.U. aus den Specs der DRAMs. Ähnlich wäre denkbar, das die 6MHz-Version für bestimmte Dinge fix ein vielfaches von 3Zyklen verwendet, wo bei der 4MHz-Version ein vielfaches von 2 Zyklen zum Einsatz kommen - unwahrscheinlich aber denkbar. Enfach mal das Datenblatt dahingehend durchsehen.


    Beispiel, wo es diesbezüglich Probleme gab, war der ISA-Bus, dessen Timing zunächst direkt von den 4,77MHz abegeleitet wurde. Das führte dazu, dass mit schnelleren Prozessoren (6MHz, 8MHz) der ISA-Bus entsprechend schneller wurde und die eine oder ander Zusatzkarte überforderte. Lösung war zunächst, andere, feste Teiler zum generieren des ISA-Timings zu verwenden, was dann natürlich zum einem langsameren ISA-Bus-Timing führte, wenn man so einen Prozessor mit einem niedrigeren Takt betrieb. Erst später wurden dann die Timings komplett programmierbar gemacht.

    • Offizieller Beitrag

    Der Z80 macht nach jedem M1-Zyklus (Opcode Fetch) einen Refresh Zyklus. D.h. nach 256 Befehlen ist dein DRAM wieder frisch.
    Sowas war damals fest im Z80 verdrahtet, da gibt es keine Register fuer Settings, die per Software parametrisierbar sind.


    Ich hab allerdings mal gehoert, das der Refresh Counter im Z80 nur 7 bit breit ist. Das wuerde bei 64kbit DRAMs Probleme machen.


    Beim PC war der Refresh ganz anders aufgebaut. Hier wurde zusaetzliche Hardware verbaut, weil die Intels nie etwas mit DRAMs und Refresh zu tun hatten.


    Auch die Anzahl der Zyklen oder Takte sind bei allen Z80 gleich. Nur das bei 6 MHz die Periodendauer kuerzer ist.


    Ich red jetzt von der eigentlichen Z80 CPU. Was heutzutage noch in Chips eingebaut ist oder der alte Z80 Kern fuer moderne Bausteine veraendert wurde, weiss ich nicht.

    • Offizieller Beitrag

    Ich hab's gerade gefunden:


    /RFSH: /RFSH together with /MREQindicates that the lower 7 bits of the system's address bus can be used as a refresh address to the system's dynamic memories.
    (Z80 CPU Product Specification)

  • > Der Z80 macht nach jedem M1-Zyklus (Opcode Fetch) einen Refresh Zyklus. D.h. nach 256 Befehlen ist dein DRAM wieder frisch.


    Das würde mich wundern - wenn ich es recht im Kopf habe, wird so ein Refresh-Zyklus ca. alle 10us-15us benötigt, um sämtliche ROWs rechtzeitig zu refreshen - das nach jedem Fetsh zu machen, wäre wohl unnötiges Verschleudern von Busbandbreite.


    > Ich hab allerdings mal gehoert, das der Refresh Counter im Z80 nur 7 bit breit ist. Das wuerde bei 64kbit DRAMs Probleme machen.


    Ich bin bei Problemen mit dem RefreshCounter (ein Layouter hatte mal, wie von SRAMs gewohnt, die RAS-/oberen und CAS-(unteren Adressen lustig durcheinander gewürfelt), immer auf CAS-before-RAS-Refresh ausgewichen. Weiß allerdings nicht, ob die ersten DRAMs diesen Refresh-Typ auch schon unterstützten.

    • Offizieller Beitrag

    Das würde mich wundern - wenn ich es recht im Kopf habe, wird so ein Refresh-Zyklus ca. alle 10us-15us benötigt, um sämtliche ROWs rechtzeitig zu refreshen - das nach jedem Fetsh zu machen, wäre wohl unnötiges Verschleudern von Busbandbreite.


    Die 15us sind der Standard bei DRAMs. Stimmt.


    Aber trotzdem macht die Z80 CPU nach jedem Opcaode Fetch einen Refresh.
    Ist so. Basta. :)


    Aber keine Angst, die Speicherbandbreite ist nicht vergeben. Nach dem Opcode Fetch muss die CPU den Befehl dekodieren. Und in diese Zeit passt der Refresh gut rein.
    Ein so optimiertes Pipelining hatte die Z80 noch nicht. Wobei das Execute schon mit dem naechsten Opcode Fetch ueberlappte.



    ein Layouter hatte mal, wie von SRAMs gewohnt, die RAS-/oberen und CAS-(unteren Adressen lustig durcheinander gewürfelt


    Ja sowas macht richtig Spass!! So einen Fehler musst du erstmal finden.So ein Refresh ist dann ja auch noch Programmabhaengig.


    In den Anfangsjahren der DRAMs gab's noch kein CAS before RAS. Das kam spaeter als die Prozessoren schneller als die DRAMs wurden und die Speicherbandbreite besser genutzt wurde.
    Zu den Z80 Zeiten waren Speicher schneller als Prozessoren.

    • Offizieller Beitrag

    Kannste machen.


    Wenn du ein reines Z80 System hast, kannst du auch umgekehrt den Rechner schneller machen. Probleme machen dann meist Videointerfaces, da die oft aus dem Prozessortakt abgeleitet werden.