wieso geht /WR nicht low waehrend eines memory refresh?

Für alle Bastler
zilog
Beiträge: 12
Registriert: 6. Feb 2020, 22:57

Re: wieso geht /WR nicht low waehrend eines memory refresh?

Beitrag von zilog » 25. Feb 2020, 03:29

Du sagt /MREQ ginge nur bei Schreib- und Lesezugriffen runter, aber nicht waehrend eines M1 cycle refresh.

ich bilde mir ein gelesen zu haben, dass /MREQ waehrend eines refresh immer runter geht.

siehe das folgende Diagramm, da geht /MREQ waehrend eines M1 cycle refresh runter
Z80 M1 cycle.gif
Z80 M1 cycle.gif (5.11 KiB) 409 mal betrachtet
Das heisst, dass bei meiner Schaltung /CAS immer waehrend eines M1 refresh mit zweifacher Verzoegerung runtergeht, nachdem zuerst /RAS runtergegangen ist.

Demnach waere das weder ein /RAS only, noch ein /CAS vor einem /RAS...

mtx500
Beiträge: 6
Registriert: 15. Jun 2019, 18:38

Re: wieso geht /WR nicht low waehrend eines memory refresh?

Beitrag von mtx500 » 8. Mär 2020, 12:39

Ja Du hast Recht. Das ist seltsam. Das bedeutet ja, diese Schaltung löst bei einem Refresh-Zyklus aus Sicht des RAM-Bausteins immer einen kompletten Lesezugriff aus, bei dem dann die Daten verworfen werden. Dem Datenbus tut das nicht weh, weil die CPU während des Refreshs den Bus nicht treibt.
Damit das funktionieren kann, muss aber der Address Multiplexer sozusagen "andersrum" funktionieren, als man erwartet.
Zunächst (während /MREQ noch verzögert wird), muss er die niederwertigsten Adressbits anlegen für /RAS. Das ist wichtig, damit bei einem Refresh die Bits des R-Registers ankommen und nicht die des üblicherweise konstanten I-Registers. Wenn dann nach der Verzögerung das /MREQ low an den Multiplexer kommt, müssen dann die höchstwertigsten Adressen angelegt werden. Das bedeutet, Zugriffe der CPU auf aufeinanderfolgende Adressen landen in aufeinanderfolgende Reihen, und nicht in aufeinanderfolgende Spalten derselben Reihe.

Nebenbei: Mit dieser Adressierung kann man den Page Mode nicht ausnutzen. DRAMs bieten diesen schon sehr lange (aber nicht von Anfang an) an. Beim ersten Zugriff wird mit /RAS die Reihe adressiert, danach mit /CAS die Spalte. /RAS bleibt nun jedoch dauerhaft auf Low, und mit dem Pulsen von /CAS gibt man immer wieder nur eine neue Spalten-Adresse mit und Liest bzw. schreibt. D.h. man spart sich die Zeit für die Übertragung der Reihen-Adresse und den damit verbundenen internen Refresh. Das ist hier aber wiederum nicht schlimm, weil man mit dem Z80 den Page Mode sowieso nicht ausnutzen kann.

Antworten