von HiassofT » Do 5. Jun 2008, 14:41
Mathy hat geschrieben:Schuster hat geschrieben:Hat einer von euch schon mal ein PBI Device entwickelt welches 100% konform zum Atari-Design ist?
Mir fallen da spontan Hias, Guus Assmann und Roland Scholz ein.
Ich hab leider noch kein PBI Gerät entwickelt (der Freezer hängt zwar am PBI, aber meldet sich nicht beim OS als PBI Gerät an, so wie zB die BlackBox oder das KMK/JZ Interface).
Anfang/Mitte der 90er hatte ich angefangen ein "richtiges" PBI IDE Interface zu entwickeln, hatte dann aber letztlich etliche Timing-Probleme und hab' wieder aufgegeben. Damals hatte ich die Logik aus standard TTL ICs aufgebaut, inzwischen ist mir auch klar wieso das nicht so gut gelaufen ist :-)
Hier mal ein paar Tips, damit Du nicht durch die gleichen Fehler stolperst wie ich damals bzw. bei der Freezer Entwicklung:
Gehe davon aus, daß kurz vor Ende von PHI2 Adress- und Datenbus schon ungültig sind. Beim Freezer verwenden wir folgende Techniken um das zu umgehen:
- Im CPLD latchen wir alle Eingangs-Signale vom Atari (R/W, Adressbus) sobald PHI2 auf High geht. Danach darf sich sowieso nichts mehr ändern und die Logik braucht sich nicht weiters drum zu kümmern. Aktuelle CPLDs unterstützen solche Latches an den Eingängen von Haus aus und man muss sie nur noch aktivieren.
- Für Schreibzugriffe (ins Flash oder RAM) haben wir eine kleine Hilfsschaltung mit dem HCT123 gebastelt, das einen etwas kürzeren Impuls erzeugt (startet mit der steigenden Flanke von PHI2, endet ein Stückchen bevor PHI2 auf Low geht, alle Signale vom Atari sind während dieser Zeit gültig). Dieses Signal verwenden wir zur Erzeugung des /WE Signals.
Wenn Du einen CPLD nimmst (was ich grundsätzlich nur empfehlen kann, in einen etwas grösseren CPLD passt locker die gesamte Logik eines PBI Devices rein - nur die I/O Pins sind bei den kleineren CPLDs etwas knapp) ist es sehr ratsam die Flankensteilheit der Ausgänge zu reduzieren. Das kann man auch bei ziemlich allen CPLDs konfigurieren und ist absolut notwendig wenn Du die Schaltung auf einer einfachen Platine aufbaust und mit dem Atari verbinden willst. Die CPLDs sind für Taktfrequenzen bis 200MHz und mehr ausgelegt und müssen dementsprechend steilflankige Signale ausgeben können. Das führt dann aber dazu, daß es zu Reflektionen, Übersprechen und anderen unangenehmen Sachen kommt, falls das Platinenlayout dafür nicht ausgelegt ist (und das Layout vom Atari ist definitv nicht dafür ausgelegt :-). Also einfach Flanken etwas moderater einstellen und gut ists :-)
Durch die hohe Geschwindigkeit der CPLDs muss man auch bei asynchronen Sachen (wie zB dem asynchronen Reset) aufpassen: ein kurzer Spike von ein paar nS Länge ist für den CPLD schon ein gültiges Signal. Beim Freezer haben wir deshalb zwischen Reset-Ausgang am PBI und Eingang am CPLD ein kleines RC-Glied gehängt das als Tiefpass funktioniert und kurze Spikes ausfiltert.
Wenn Du diese paar Dinge beachtest, ist es aber wirklich ziemlich einfach einen aktuellen CPLD an den Atari zu hängen. Dann einfach noch ein paar Adress/Datenleitungen zu RAM, Flash (und den anderen Bauteilen Deines Geräts) und Du bist fertig. Die Logik kannst Du dann einfach am PC entwerfen und per JTAG Interface in den CPLD programmieren. Ist deutlich einfacher als stundenlang neue Logik-ICs rein- oder rauszulöten :-)
so long,
Hias