Lauter kleine CPU Write Impulse !


Lauter kleine CPU Write Impulse !

von nichtsnutz » Fr 25. Jun 2010, 19:36
Hallo allerseits,

nach meiner kleinen Speichererweiterungsbastelei wollte ich dieses Wochenende ein bischen mit dem Cartridge Port basteln.Ich habe hier so ein
Pollin CPLD Board liegen und dachte mir,ich verbinde es mal mit dem Cartridge Port.Bevor ich es mache habe ich erstmal das genaue CPU timing
herausfinden wollen für read und write und war ein bischen erstaunt! Die CPU macht "alle Nase lang" einen 30-45ns langen Write Impuls,obwohl es
sich nicht um einen Schreibzugriff handelt.Das hängt irgendwie mit dem HALT Signal vom Antic zusammen.Fast immer wenn der Antic die Kontrolle wieder der CPU überlässt,erscheint so ein kleiner Write Impuls.Die genaue Ursache kenne ich natürlich nicht.Für die Funktion des Rechners ist es ohne Bedeutung,da das R/W Signal viel Später über den 74LS375 gelatcht wird wenn es stabil ist.Will man aber moderne schnelle SRAMs da anschliessen und legt CS auf Masse und steuert nur über WE und OE dann ist die Katastrophe glaube ich vorprogrammiert!?
Auf der CPU steht die Nummer CO14806-03 und die ist,ich glaube,von Signetics.Ich habe noch eine CPU vom 7800 ausgelötet,aber noch nicht
ausprobiert.
Gut, nach der langen Vorrede:

- Ich diese CPU Verhalten bekannt? Kann es sein das diese BSI RAM chipps die in einem anderen Thread erwähnt werden deswegen nicht funktionieren,weil sie zu "empfindlich" sind?
- Ist meine CPU "Defekt" ?

Ich habe die Bilder dort http://www.flickr.com/photos/atari600xl/sets unter CPU R/W abgelegt,ich weiss nicht wie man hier Bilder hochlädt :?
Falls erwünscht kann ich auch die *.LPF Datein zur Verfügung stellen,dann kann man in den Daten rummessen,muss allerdings die SW dazu installieren.

EDIT: Ich habe auch die CPU aus einem A7800 ausprobiert und sie macht den gleichen Effekt.Das ist eine UM6502I von UMC und trägt keine Atari nummer.

Viele Grüsse,
Vassilis

Re: Lauter kleine CPU Write Impulse !

von mega-hz » Fr 25. Jun 2010, 20:20
Hi,

am Besten RW mit PHI0 verknüpfen und das Ergebnis als /WE für die RAMs nehmen!
und /RW mit PHI2 verknüpfen und an /OE ranhängen!
/CE = PHI2 sorgt für ein timinggerechtes Einschalten des Chips.
Und damit OE etwas später kommt als CE (speziell für BSI RAMs)
sollte das OE nicht direkt mit RW und PHI2 sondern etwas verzögert (GAL/TTL Laufzeit)
mittels /OE = RW und /CE verknüpft werden.

Logikglechung beim GAL:

/WE = /RW * PHI0;
/CE = PHI2;
/OE = RW * /CE;

HIAS, TFHH: War doch richtig so, oder?

Gruß,
Wolfram.

Re: Lauter kleine CPU Write Impulse !

von nichtsnutz » Fr 25. Jun 2010, 21:43
Hallo mega-hz,

danke für die Antwort,ich werde es probieren und auch die anderen Threads dazu suchen und vollständig lesen.
Ich bin recht überrascht über dieses Verhalten der CPU R/W Leitung.Das muss irgend eine Art von Glitch sein...
Was soll's,muss man drum herum bauen!

Grüsse,
Vassilis

Re: Lauter kleine CPU Write Impulse !

von tfhh » Fr 25. Jun 2010, 21:43
Moin,
mega-hz hat geschrieben:am Besten RW mit PHI0 verknüpfen und das Ergebnis als /WE für die RAMs nehmen!
und /RW mit PHI2 verknüpfen und an /OE ranhängen!
/CE = PHI2 sorgt für ein timinggerechtes Einschalten des Chips.
Und damit OE etwas später kommt als CE (speziell für BSI RAMs)
sollte das OE nicht direkt mit RW und PHI2 sondern etwas verzögert (GAL/TTL Laufzeit)
mittels /OE = RW und /CE verknüpft werden.

Logikglechung beim GAL:

/WE = /RW * PHI0;
/CE = PHI2;
/OE = RW * /CE;

HIAS, TFHH: War doch richtig so, oder?

Also bei /WE muss natürlich auch noch PHI2 mit rein. Also komplett: /WE = /RW * PHI2 * PHI0;

Bei /CE hat sich eine Oder-Bedingungen als praktikabel erwiesen: /CE = PHI2 + PHI0; (Natürlich das auslösende Signal mit in die Terme, klaro)

/OE wiederum nur mit PHI2 verbinden und den passenden Term (/CE in Deinem Beispiel) dazu - dadurch werden die Ausgänge eines ROM/RAMs rechtzeitig in den hochohmigen Modus versetzt; andernfalls kann es zu Fehlern im Antic-Zugriff (Grafik z.B.) kommen.

Jedenfalls habe ich so nach gefühlten 200-300 Stunden Tests die SRAM-Gleichungen von Hias (mit seiner Hilfe!) erfolgreich mit 5 verschiedenen BSI-SRAMs (die zuvor alle "fehlerhaft" waren) getestet, alle jeweils mindestens 36 Stunden und mit MEMDRV.COM (Refresh-Tests, eigentlich über bei SRAMs, aber der Vollständigkeit halber), modifzierte Version von PAGEFIND.BAS (macht Dauerloops und zeigt Zähler an) sowie XRAM021.COM und RD2TEST.COM (Copy-Shop Prüfprogramm).

Gruß, Jürgen

PS: Netter Logic-Analyzer, sowas fehlt mir noch *japs*

Re: Lauter kleine CPU Write Impulse !

von nichtsnutz » Fr 25. Jun 2010, 22:20
Hallo tfhh,

danke für die weiteren Erklärungen.Ich habe merke ich,doch noch eine Frage: Ist mit PHI0 der Eingangstakt der CPU vom ANTIC gemeint? Nach meinen Messungen ist PHI2 ein um ca. 20ns verzögertes PHI0.Also würde (PHI0 and PHI2) ca. 20ns vor der fallenden PHI2 Flanke '0' werden.

Das mit dem ANTIC Zugriff und dem HALT Signal ist auch so eine kleine Forschung für sich.Wird HALT mit der fallenden Flanke von PHI1 oder 2 gelatcht und macht die Adressleitungen und R/W dann hochohmig!? ANTIC gibt direkt mach der fallenden PHI2 Flanke seine Adressen aus...

Und die CPU gibt tatsächlich auch ein SYNC Signal aus,welches wenn gerade der ANTIC dran will auch mal drei Takte high bleibt.(ANTIC,REFR,CPU_OPCODE).Benutzt ihr das beim Freezer?

Aber ok,nicht alles auf einmal,ich will Euch auch nicht so viele "Löcher im Bauch fragen" :roll:

Grüsse,
Vassilis

P.S: @tfhh : Da ich ein bischen "Taktzyklenfetischist" bin,musste ich sowas (Logicport) kaufen auch wenn es recht Teuer war,ca.550 EUR.Aber bei diesen asynchronen Sachen bin ich dann nicht "blind".Das längerfristige Ziel ist die ganzen ANTIC Zyklen zu dokumentieren,Zeile für Zeile,aber zuerst muss ich es schaffen ein bischen quasi dual ported ram in den Modulbereich einzublenden...

Re: Lauter kleine CPU Write Impulse !

von HiassofT » Fr 25. Jun 2010, 23:04
Hi!

nichtsnutz hat geschrieben:Die CPU macht "alle Nase lang" einen 30-45ns langen Write Impuls,obwohl es sich nicht um einen Schreibzugriff handelt.

Das ist mir bisher noch garnicht aufgefallen, aber - keine Sorge - ist alles im Rahmen der Specs.

Am 3. Bild sieht man, daß RW immer etwas nach der fallenden Flanke von PHI2 auf Low geht. Das macht nix, laut Spec sind die Leitungen erst ca. 100ns nach der fallenden Flanke wieder gültig.

Wegen PHI0/PHI2: ja, PHI0 "eilt" ca. 20 ns PHI2 voraus. Durch PHI0 AND PHI2 AND /RW ergibt sich dann ein geringfügig verkürzter Schreib-Impuls.

HALT habe ich bei meinen RAM Erweiterungen mit einem Register (D-FlipFlop), das durch die fallende Flanke von PHI2 geclockt wird gespeichert. Das originale HALT Signal ist noch etwas darüber hinaus gültig, und das Registered Halt liegt damit praktischerweise schon im richtigen Zyklus. Im 130XE wurde es mit dem ominösen LS95 übrigens genauso gemacht.

so long,

Hias

Re: Lauter kleine CPU Write Impulse !

von nichtsnutz » Sa 26. Jun 2010, 12:34
Hallo HiassofT,

danke für die weiteren Informationen.Da ich das erstmal für den Cartridge Port brauche,werde ich wohl ein HCT221 Monoflop an der PHI2 Leitung benutzen um diese Impulse zu überspringen.Ich werde mir auch den Schaltplan zum Freezer angucken und diesen Monoflop Teil mal nachbauen.Ich warte schon spannend auf die Neuauflage!
Ich wollte nochmal fragen ob es ein offizielles Datenblatt zur Atari CPU gibt welches auch die genaue Funktion/Timing des HALT Einganges beschreibt? Die "normalen" 6502 CPUs haben ja kein HALT.

Falls ich mich nicht in all diesen Details verfilze und was rauskommt,werde ich mich wieder melden.(Muss auch noch einen RS232 Empfänger hinbekommen,aber dazu gibt es im Web und in Büchern so viel.)

OK, ich will mich nochmal bei euch für eure Geduld bedanken.

Grüsse,
Vassilis

Re: Lauter kleine CPU Write Impulse !

von Bernd » Sa 26. Jun 2010, 15:24
Hi Vassilis,
vor einiger Zeit habe ich mal eine Speichererweiterung mit und ohne seperaten Antic Zugriff erstellt.
Die Beschreibung, Logik und Schaltung findest du hier: KLICK.

Bye,
Bernd

Re: Lauter kleine CPU Write Impulse !

von HiassofT » Sa 26. Jun 2010, 15:43
Hallo Vassilis!
nichtsnutz hat geschrieben:Da ich das erstmal für den Cartridge Port brauche,werde ich wohl ein HCT221 Monoflop an der PHI2 Leitung benutzen um diese Impulse zu überspringen. Ich werde mir auch den Schaltplan zum Freezer angucken und diesen Monoflop Teil mal nachbauen.

Was genau möchtest Du denn machen?

Wenn Du von der Cart was lesen willst, mach einfach /OE = RW * PHI2 und setz CE = <adressdekoderlogik>.

Für Schreibzugriffe oder wenn Du was in einem Register speichern willst (zB Cart ein/aus oder Bank umschalten), ist ein verkürztes PHI2 recht wichtig. Beim Freezer hab' ich da den HCT123 genommen, Datenblätter vom HCT221 hab' ich auch auf meinem Rechner drauf, weiss aber nicht mehr genau wieso ich mich damals für den '123 entschieden habe. Vergleiche sicherheitshalber mal die Datenblätter und AppNotes der beiden Chips.

Bei dem verkürzten PHI2 aus dem Monoflop sollte die fallende Flanke ca. 50ns vor der fallenden Flanke von PHI2 sein, zu dem Zeitpunkt sind alle Leitungen von der Atari CPU (noch) gültig und Schreibzugriffe bzw. State Transitions funktionieren einwandfrei.

Du kannst nun einfach /WE = /RW * PHI2_kurz bzw. RegClk = PHI2_kurz * <register-adress-logik> machen. Bei diesen Zugriffen zählt ja im Prinzip nur der Zustand der Leitungen zum Zeitpunkt der abschliessenden Flanke.

Der Zustand der Leitungen bei PHI2=low bzw. PHI2_kurz=low ist damit völlig egal - die kurzen RW Spikes bei Dir machen also nichts aus.

Ich wollte nochmal fragen ob es ein offizielles Datenblatt zur Atari CPU gibt welches auch die genaue Funktion/Timing des HALT Einganges beschreibt? Die "normalen" 6502 CPUs haben ja kein HALT.

Sowas hätte ich auch gerne, ist mir bisher aber leider noch nicht untergekommen. Bei den 400/800ern hat Atari eine standard 6502 CPU genommen und die HALT Logik mit TTLs implementiert. Diese Logik haben sie dann bei der XL Serie mit in die Custom "Sally" 6502C CPU integrieren lassen - so liest man es zumindest immer.

Du kannst also den 400/800er Schaltplan mal als Basis hernehmen um die HALT Logik zu analysieren. Vom ANTIC her ist es so, daß er HALT im Zyklus davor setzt (verschoben um ca. 150-200ns im Vergleich zu PHI2) um anzuzeigen "hey, den nächsten Zyklus krieg ich".

so long,

Hias

Re: Lauter kleine CPU Write Impulse !

von nichtsnutz » Sa 26. Jun 2010, 16:50
Hallo allerseits,

Danke Bernd für den Tipp,ich hatte mir Deine Seite schon angeguckt,besonders die ausführliche Beschreibung der banking Methoden finde ich sehr gut! Mir ging es hier mehr um dieses komische Verhalten der R/W Leitung und wie man damit umgeht.

Was genau möchtest Du denn machen?

Ich habe so ein CPLD Board von Pollin.(Leider habe ich es auf deren Seite nicht mehr gefunden).Das hat ein XC95144XL, 128KB SRAM, RS232, 4 Taster, 8 Leds, 2 Oszillatoren und ca.35 freie I/Os.Ich will das nun als eine Art Cartridge Emulator benutzen.Über RS232 den Modulcode in das SRAM schreiben und danach den Atari resetten und das Modul starten.Erstmal nur 8KB an $8000..$9FFF über die S4 Leitung,danach mal gucken.Wenn das läuft bin ich schon erstmal zufrieden,dann kann ich schon Centipede spielen!
Ich muss dafür so einige Probleme lösen mit dem doppelzugriff auf das SRAM und dem Modulport und deswegen hatte ich die Timings aufgenommen.Ich will das auch dazu nutzen kleine hardware nahe ASM Programme auf dem PC zu schreiben und auf dem Atari starten zu können.

Deine Infos sind genau das,was ich brauche!

Danke auch für den Tipp mit der CPU im 400/800.Da hatte ich garnicht drauf geachtet! Dabei habe ich die "Technical Reference Notes" im Original.Dort wird ein 74LS74, ein 74LS02 und zwei 74LS244 benutzt.Noch was zum verstehen und nachbauen!


Vielen Dank nochmal,das ist nun mehr als dieses Wochenende Zeit hat zum basteln! Muss alles nochmal durchlesen,notieren,selber nachvollziehen...

Vassilis