Entwicklung Platine mit Sprint-Layout -- C64 Cartridge RAM-ROM

  • Hier wird Schritt für Schritt eine Platine entwickelt (für eine C64 Cartridge) mit der Software SPRINT Layout.

    Vielen Dank an deleted_07_23 , er hat mir den Einstieg sehr erleichtert und mich in die richtige Richtung geführt. :)


    In meinem Vorhaben geht es um eine relativ einfache Platine:

    • 4 * IC
    • 4 * Stütz Kondensatoren
    • Connector


    Es handelt sich um eine C64 Cartridge mit RAM und EPROM.

    Das hat später auch einen Nutzen, jeder soll das nachbauen können, einfach und preisgünstig.




    Die Memory Map eines C64:





    Blockschaltbild und Schematic:


     

  • Erster Schritt:

    • Größe der Platine eingeben (weißer Rand)
    • Bauteile auswählen und anordnen
    • Cartridge Connector (vielen Dank an deleted_07_23 - das hat mir viel Arbeit erspart)






    Nächstes Wochenende geht es wohl weiter ...

  • Okay ich konnte es nicht erwarten weiter zu machen ...

    ... und es geht (bis jetzt) erstaunlich einfach.



    Habe die Autoroute Funktion getestet.

    Und mal den Adress- und Datenbus zwischen RAM und EPROM verbunden.


    Ich dachte alle waagrechten oben und senkrechte unten ...



    Und es sieht mal ganz gut aus finde ich:


  • Wenn man die Chips 30 (?) Grad schief stellt, kann man das gerade durchverbinden.


    Das sieht dann aber schräg aus. ;)


    Wurde tatsächlich gelegentlich so gemacht, aber eher in der Zeit, als man Layouts noch auf Folie geklebt hat. Da war es tatsächlich lästig, die Knicks in den Leiterbahnen zu verlegen. (Zum Beispiel bei dem DTACK Grounded 68000-Board unten.)


    Beim heutigen Layout-Entwurf am PC "kostet" es ja nix, einen Knick in die Leiterbahn zu zeichnen. Ich würde die ICs also sicher nicht schräg stellen. Persönlich würde ich sogar den senkrechten Versatz um 50 mil zwischen RAM und ROM vermeiden, und lieber alle ICs im 0.1" Raster positionieren. In diesem Fall also RAM und ROM unten bündig. Das ist funktionell natürlich völlig wurscht, aber die fertige Platine sieht nachher ordentlicher aus. Ist aber reine Geschmackssache!


    Diddl -- hast Du Dir das weitere Routing schon in groben Zügen überlegt? Ein Vorteil der größeren CAD-Lösungen, bei denen man erst den Schaltplan eingibt, ist ja, dass man bei der Positionierung der Bauteile die fälligen Verbindungen schon als "Luftlinien" angezeigt bekommt. Das hilft dabei, eine sinnvolle Platzierung zu finden. Bei reinen Layout-Malprogrammen muss man das halt im Kopf oder mit einer Bleistiftskizze machen.


    Die Positionierung von RAM und ROM zueinander sieht auf jeden Fall sinnvoll aus, aber evtl. willst Du die Gruppe später noch drehen oder relativ zum Exapansion-Port oder den kleineren ICs verschieben. (Ich würde denken, dass das Register am besten auch parallel zu RAM und ROM liegt, so dass Du den Datenbus weiter durchverdrahten kannst? RAM und ROM vielleicht auch lieber parallel zum Port-Stecker orientieren?) Da zeigt sich dann, wie gut Sprint Layout auch solche Umbauaktionen unterstützt.


    Viel Erfolg mit dem weiteren Layout!


    Einmal editiert, zuletzt von deleted_07_21 () aus folgendem Grund: Typos...

  • Ach so, noch ein Nachtrag: Die +5V und Masse-Leitungen solltest Du frühzeitig verlegen oder wengstens planen!


    Diese Leiterbahnen zuletzt noch irgendwo dazwischen zu pfriemeln, ist Mist. Das sieht dann nicht nur schlecht aus, sondern kann schlimmstenfalls tatsächlich zu Funktionsproblemen führen. (Bei so einer kleinen Platine und überschaubaren Taktraten ist es aber wahrscheinlich nicht so kritisch.)


    Unterstützt Sprint Layout eigentlich Masseflächen, kann also die frei bleibenden Teile der Platinenfläche automatisch mit Flächen füllen, die an Masse (oder 5V) angeschlossen sind?


    Edit: Die +5V und Masseleitungen bitte dicker ausführen als die Signalleitungen. Bei den Kondensatoren hast Du die 5V-Leiterbahnen ja schon gezeichnet, die sind unnötig dünn. Man möchte hier kleine Widerstände und Impedanzen, um Stromspitzen effektiv abfangen zu können.

  • Danke für die vielen Tipps! :)



    Das Handling des Sprint ist ein Genuss und man braucht wirklich fast keine Einarbeitungszeit.


    Aber das Routen selbst, das habe ich ziemlich unterschätzt.

    Es macht Spaß aber es geht irre viel Zeit drauf.

    Gestern um Mitternacht, "ich mach dann noch dies und geh dann schlafen", um 2 Uhr: "was??? 2 Uhr?? gibts doch gar nicht!".


    Und es wird immer enger ...


    Ich habe jetzt:

    • den ganzen Adressbus
    • den ganzen Datenbus
    • die Stromversorgung


    Aber es fehlt die Verdrahtung des GAL und es ist schon ziemlich eng ...

    Hab wohl ein grundsätzliches Design Problem.

    Möglicherweise muss ich nochmals beginnen mit einer anderen Konstellation der Bauteile ...



      

  • Das sieht doch schon mal nicht verkehrt aus! Der Grundansatz "alle horizontalen Leiterbahnen auf die eine Seite, alle vertikalen auf die andere" ist auf jeden Fall gut. Damit braucht man vielleicht die eine oder andere Durchkontaktierung mehr, aber die kosten beim freundlichen Platinenfertiger ja nicht extra. Und man kommt "im Prinzip" auf jeden Fall durch mit dem Layout.


    Eng wird es dann entweder, wenn man diverse Leiterbahnen parallel verlegen muss (insbesondere Busse) und dafür einfach kein Platz mehr auf der Platine ist. Dann kann man entweder die Leiterbahnen noch dünner und enger benachbart legen, innerhalb der Grenzen, die die Design-Regeln des Platinenfertigers setzen -- oder man muss halt die ICs weiter auseinander platzieren und die Platine größer machen. Aber ich denke, dieses Problem hast Du hier gar nicht.


    Andererseits kann es mit den Durchführungen zwischen IC-Beinen knapp werden -- das könnte Dich beim GAL treffen, wenn Du die obere Pin-Reihe anschließen willst. Auch hier geht es einerseits "mit Gewalt": Design-Rules, die es erlauben, zwei Leitungen zwischen benachbarten DIP-Pins durchzuführen, dürften alle Fertiger unterstützen. Wenn Du aber den sportlichen Ehrgeiz hast, das zu vermeiden und mit konservativen Layout-Parametern auszukommen, sollte das auch machbar sein. Du hast ja gerade beim GAL noch einige Freiheiten, wie Du die Pinbelegung wählst.


    Evtl. kann es sinnvoll sein, das GAL um 180° zu drehen, wenn das die Verdrahtung der oberen Pin-Reihe entspannt? Habe ich aber in keiner Weise durchdacht... Falls Du das GAL drehst, bitte wenn irgend möglich auch den '273 drehen -- ICs in wechselnden Orientierungen auf der Platine zu platzieren ist "hässlich". ;)

  • Das sieht dann aber schräg aus. ;)

    Ähm, finde ich auch.


    Ich hab schon ungern den RAM höher gesetzt.

    Aber dadurch wird es gleich viel einfacher geroutet.



    Diddl -- hast Du Dir das weitere Routing schon in groben Zügen überlegt?

    Naja, momentan stehe ich ein bisschen an.

    Ich hab das unterschätzt.

    Dachte es wäre viel einfacher ...


    Bin schon gespannt, ob ich es noch hin kriege oder ob ich nochmal von vorne starten darf :D



    Ein Vorteil der größeren CAD-Lösungen, bei denen man erst den Schaltplan eingibt, ist ja, dass man bei der Positionierung der Bauteile die fälligen Verbindungen schon als "Luftlinien" angezeigt bekommt.

    Ja das ist mir klar.

    Aber ich habs probiert mit KiCAD.

    Dafür bin ich wahrscheinlich nicht klug genug.

    Es ist für mich sehr schwierig das zu beherrschen.

    Und für eine Platine im Jahr, da muss einfach das Tool super einfach sein.



    willst Du die Gruppe später noch drehen oder relativ zum Exapansion-Port oder den kleineren ICs verschieben.

    Ja ich grüble auch schon, was ich an der Positionierung besser machen kann.

    Da fehlt es mir halt vollkommen an der Erfahrung.





    Da zeigt sich dann, wie gut Sprint Layout auch solche Umbauaktionen unterstützt.

    Gar nicht.

    Oder ich verstehe die Feinheiten noch nicht wirklich.

    So wie ich das sehe, wenn ich ein Bauteil verschiebe, dann muss ich dieses neu verdrahten.


    Es gibt zwar diese "Luftverdrahtung", wo noch nichts geroutet ist.

    Wahrscheinlich habe ich das falsch gemacht.

    Ich hätte zuerst ALLES Luftverdrahten müssen.

    Dann kann man schon drehen und schieben.


    Aber aus Fehlern lernt man eh am besten ... :D

    Viel Erfolg mit dem weiteren Layout!

    Danke sehr! :)



    Ach so, noch ein Nachtrag: Die +5V und Masse-Leitungen solltest Du frühzeitig verlegen oder wengstens planen!

    Oh ja, das wäre intelligent gewesen ...


    Das nächste Mal bin ich klüger.

    Wenn ich es nicht vergesse bis zum nächsten Mal. :D


    Unterstützt Sprint Layout eigentlich Masseflächen, kann also die frei bleibenden Teile der Platinenfläche automatisch mit Flächen füllen, die an Masse (oder 5V) angeschlossen sind?

    Ja das geht.

    Wird auch empfohlen im Handbuch.


    Muss ich aber erst probieren und lernen wie das genau geht ...



    Edit: Die +5V und Masseleitungen bitte dicker ausführen als die Signalleitungen. Bei den Kondensatoren hast Du die 5V-Leiterbahnen ja schon gezeichnet, die sind unnötig dünn. Man möchte hier kleine Widerstände und Impedanzen, um Stromspitzen effektiv abfangen zu können.

    Ja das habe ich mir gedacht.

    Leider habe ich keine Ahnung wie groß Löcher sein sollen, wie dick Leitungen sein sollen, wie nah Leitungen zueinander sein dürfen.


    Es zeigt zwar den Strom an, der maximal fließen darf, aber nicht ob das überhaupt noch produzierbar ist.



    Auch die Durchkontaktierungen hab ich nur nach Gefühl gemacht: 0,1mm Loch und 0,4mm Cu Ring.

    Ich hab gegoogelt aber konnte keine "Empfehlungen" finden.


  • Was in der Fertigung maximal möglich ist, sagen einem die Platinenhersteller. Zum Beispiel JLCPCB hier: https://jlcpcb.com/capabilities/Capabilities. Da sind die minimalen Leiterbahnbreiten, Abstände, Bohrduchmesser etc. angegeben. Die "richtigen" PCB-CAD-Programme können diese Regeln automatisch berücksichtigen und die Platinenfertiger bieten oft "Design Rule"-Dateien an, die man direkt in die Programme übernehmen kann. Aber man kann natürlich auch von Hand sinnvolle Parameter in seinem CAD-Programm einstellen.


    In den JLCPCB-Specs kann man direkt sehen, dass Dein Bohrdurchmesser für die Vias deutlich zu klein ist. 0,3mm müsssen es für zweilagige Layouts mindestens sein. EDIT: Und mindestens 0.6 mm Cu-Durchmesser.


    Die übrigen Specs sollte man auf keinen Fall ausreizen, nur "weil's geht". Wenn Du ein Layout planst, bei dem jeweils nur eine Leiterbahn zwischen benachbarten DIP-Pins durchgeführt werden muss, dann muss die Leiterbahn auch nicht 5 mil breit sein. 10 mil sind meine persönliche "Standardbreite" für unkritische Layouts, da kommt man zwischen benachbarten SMD (SOIC) Pins durch. Für reine DIP-Layouts darf es auch noch etwas breiter sein.


    EDIT: Wenn Du ein Raster von 25 mil für die Position der Leiterbahnen wählst, dann bieten sich 12 mil für die Breite an. Dann halten sich Breite und Abstand der Leiterbahnen schön die Waage und die Platine ist maximal unkritisch in der Fertigung.


    Leiterbahnen für Stromversorgung und Masse dimensioniere ich in meistens auch "nach Gefühl". 50 mil sind in aller Regel reichlich; wenn Platz ist, nehme ich (insbsondere für lange Leitungen, die diverse ICs versorgen) auch 100 mil. Man kann mit diversen Online-Rechnern aber auch ausrechnen lassen, welche Erwärmung und welcher Spannungsabfall sich bei welchen Leiterbahnmaßen ergeben. Dazu braucht man die Dicke der Kupferlage; 35 µm scheint der Standard zu sein, den man bei den üblichen Low-Cost-Fertigern aufpreisfrei bekommt.


    Disclaimer: Ich bin auch nur Amateur! Vielleicht haben die Profis hier noch andere Hinweise.

    2 Mal editiert, zuletzt von deleted_07_21 () aus folgendem Grund: Tippfehler, und zwei Ergänzungen zur Dimensionierung

  • Die Edgeconnector Flächen würde ich nicht abgerundet machen... sondern hier nehme ich immer rechteckige SMD Pads, die Du in Sprint in der Größe bzw. dessen Abmessungen vorher einstellen kannst. Dann zeichnest Du ein Pad und kopierst das so oft und mit dem passenden Abstand wie benötigt.

    Gruß Torsten

    BFZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, MSX VG8010, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500 & 1200, Atari Portfolio, HP200LX, IBM PC5155, TP755c, TP755cx, T20, T41, T61, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e, Sharp PC1401 & PC1403H, TI59 m. PC-100c, HP48SX & HP48GX


    An die Person, die meine Schuhe versteckt hat, während ich auf der Hüpfburg war: Werd' erwachsen! :motz:


    ::matrix::

  • Das ist ein Guter Einwurf mit den Pads am Edge Connector - daran habe ich nicht gedacht. Pads sollen als Pad definiert sein für den Flying-Probe-Test. Ansonsten werden diese nicht als Pad erkannt. Aber mich würde eher interessieren, ob der EdgeConn von den Pad-Dimensionen so richtig angelegt worden ist.

  • Da würde ich einfach eine originale Cartridge nehmen und das einfach ausmessen... was die Zwischenräume zwischen den Pads als auch deren Größe und mittigen Abstände angeht. Für den C64 habe ich das selber noch nicht gemacht... aber das ist ja kein Hexenwerk.


    Im 64er Forum gibt es unter dem folgenden Link einige Commodore typische Makros für Abacom SPRINT


    https://www.forum64.de/index.p…highlight=Sprint%20Layout


    hier für den Edge Connector


    https://www.forum64.de/wcf/ind…erport-c64-card-edge-jpg/

    Gruß Torsten

    BFZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, MSX VG8010, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500 & 1200, Atari Portfolio, HP200LX, IBM PC5155, TP755c, TP755cx, T20, T41, T61, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e, Sharp PC1401 & PC1403H, TI59 m. PC-100c, HP48SX & HP48GX


    An die Person, die meine Schuhe versteckt hat, während ich auf der Hüpfburg war: Werd' erwachsen! :motz:


    ::matrix::

    Einmal editiert, zuletzt von tokabln ()

  • Das GAL Design ist okay und geprüft. :)


    Auch die Pin Belegung scheint bei dem GAL absolut flexibel zu sein.

    Im Gegensatz zu seinem großen Bruder dem ATF1504.



    Ist zwar nur ein minimalistischer Prototyp, aber SRAM und EEPROM sollten eigentlich tun ...


    C64-GAL-Test.jpg


    IMG_20210727_225144_autoscaled.jpg

  • Da ist irgendetwas mit dem Upload falsch gelaufen... auch ich als Vereinsmitglied komme nicht dran.

    Gruß Torsten

    BFZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, MSX VG8010, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500 & 1200, Atari Portfolio, HP200LX, IBM PC5155, TP755c, TP755cx, T20, T41, T61, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e, Sharp PC1401 & PC1403H, TI59 m. PC-100c, HP48SX & HP48GX


    An die Person, die meine Schuhe versteckt hat, während ich auf der Hüpfburg war: Werd' erwachsen! :motz:


    ::matrix::

  • Ja, jetzt sind die Bilder sichtbar, danke!


    Dein Projekt nimmt ja schnell Formen an, sehr schön. Bei der Protoptypkarte fällt mir auf, dass die Pads des Edge Connectors abgerundet sind. ;) Ich denke, das ist auch problemlos möglich, vielleicht sogar besser, weil die Pads sich nicht an den Ecken abheben können. (Auch wenn mir das nur bei sehr alten, vermutlich oft gesteckten Karten mal begegnet ist.)

  • Puuuuh, das ist eine Sauarbeit!

    In der Zeit fädelt man 5 Prototypen ...


    Nun finde ich keinen Fehler mehr.

    Vielleicht werde ich morgen mal Platinen bestellen.

    Meine erste eigene ... :)



     


     

  • Nein, warte lieber noch bis übermorgen mit dem Bestellen! Man findet immer noch was, wenn man nochmal draufstarrt; entweder eine Macke oder ein nettes Zusatzfeature. Und dann noch was. Und meistens noch was... Und dann natürlich immer noch was, wenn man den Auftrag rausgeschickt hat und er nicht mehr storniert werden kann. ;)


    Ich schau morgen auch noch mal drauf, wenn ich wieder richtig wach bin. So auf die Schnelle (und ohne vergleichenden Blick auf den Schaltplan) nur eine kleine Nörgelei an den Kondensatoren: Bei zweien muss, wenn man die kleine Variante im 2.5 mm Raster bestückt, eins der Beine ins quadratische Pad -- beim dritten muss aber genau dieses Pad frei bleiben, wenn ich das richtig sehe. Und dem vierten C hast Du gar nicht die Option für die größere Bauform spendiert; das würde schon noch passen mit den Leiterbahnen. (Die passen ja auch zwischen den C-Pads durch.)


    Die Beschriftung (Bestückungsaufdruck) hast Du nicht gezeigt. Dabei kann man auch Sachen vergessen oder unglücklich anordnen, über die man sich später ärgert. Es lohnt sich nach meiner Erfahrung auch da, das nochmal einen Tag liegen zu lassen.


    Erstmal gute Nacht! Morgen früh unter der Dusche fällt Dir bestimmt auch noch 'ne Änderung ein... ;)

  • Guten Morgen! Ein paar Kommentare hätte ich noch...


    Elektrisches/Mechanisches:

    • Die Puffer-Cs sind mit den ICs, denen sie zugeordnet sind, teilweise auf sehr langen Umwegen verbunden. Die Idee dieser Cs ist ja, Lastspitzen des ICs direkt vor Ort zu bedienen -- dazu brauchen sie niederohmige, kurze Zuleitungen, so direkt wie möglich. Beim RAM und beim GAL sind die Wege sehr weit, beim C des '273 geht die Masseleitung erst noch zum GAL.
    • Die Masseleitung des RAMs ist arg dünn.
    • Am GAL gibt es einen offenen Eingang (Pin 6); würde ich lieber auf GND legen.
    • Die Masse-Leiterbahn oben rechts beim '273 läuft sehr nah am Platinenrand. (Kann bei der Fertigung beschädigt werden.) Den Mindestabstand zum Rand geben die Fertiger explizit vor; bei JLCPCB 0.2 mm. Ich würde lieber noch etwas weiter wegbleiben; das Konturenfräsen ist nicht super-genau bei den Low-Cost-Fertigern.
      Wenn Du die Platine nicht breiter machen willst, mach sie evtl. etwas höher und setze die beiden Cs oberhalb des GALs und des '273. Dann kann der '273 um 0,1" nach links und lässt am rechten Rand mehr Platz für die Massebahn.

    Logisches:

    • Beim EPROM würde ich den NC-Pin (31) tatsächlich offen lassen, wie der Name sagt.
    • Zur GAL-Logik kann ich nichts sage, da ich mich mit dem C64 und seinem Expansions-Bus nicht auskenne. Aufgefallen ist mir aber, dass das GAL ein "SRAM write enable" aus dem '273 bekommt, aber das SRAM selbst direkt durch das R/W-Signal vom C64 zum Schreiben freigeschaltet wird. Ist das so beabsichtigt?

    Kosmetisches:
    (Tut der Funktion keinen Abbruch, aber "sieht nicht aus". Ich oute mich hier mal als Zwangsneurotiker.) ;)

    • Im Bereich des GAL und des '273 laufen ein paar Leiterbahnen "schief", außerhalb des 45°-Rasters.
    • Den Leiterbahnen zu Q3 und Q4 des '273 würde ich auch noch einen 45°-Knick spendieren statt der 90°.
    • Die Leitung zu Q1 des '273 wechselt kurz vor dem Pin unnötigerweise nochmal auf die Oberseite; die kann auch unten direkt an den Pin angeschlossen werden.

    Falls Du nochmal "umgraben" willst: Ich denke, Du könntest noch nachträglich klarer strukturierte Masse- und Versorgungsleitungen unterbringen, ohne allzu viel umzuräumen. Weitgehend hast Du das schon so gemacht:

    • Dicke senkrechte Leitungen für +5V und GND ganz am Rand. Ausnahmsweise darf da auch eine senkrechte Leitung auf der oberen Lage laufen, wegen der Randlage. GND brauchst Du eigentlich nicht auf beiden Seiten, eine reicht. Ganz bis oben durchziehen.
    • Dicke horizontale Leiterbahnen rüber zu den ICs, quer über die ganze Platine, um jeweils zwei ICs anzuschließen. Hast Du weitgehend so drin, wenn auch manchmal mit Umwegen. Zwischen den großen ICs und dem Bus-Connector bräuchtest Du aber wohl etwas mehr Platz für eine Masseleitung.
    • Für die Cs des GALs und des '273 ergeben sich dann ganz "natürliche" Anschlüsse zwischen den quer laufenden Leiterbahnen. Die Cs für RAM und ROM würde ich an die quer laufende 5V-Leitung anschließen, die auch die ICs versorgt, und ihnen dann jeweils eigene senkrechte Leiterbahnen zum GND-Pin des jeweiligen ICs spendieren (innerhalb des IC-Footprints auf der Unterseite).

    Sorry, das ist 'ne lange Liste. Das meiste ist aber nicht "Pflicht". ;)
    Viel Erfolg im Endspurt!

  • Ach so, noch was, falls Du nochmal etwas umräumen willst -- und als Empfehlung für zukünftige Layouts:


    Bei Layouts mit DIP-Packages würde ich konsequent alle Bauteile ins 1/10" Raster setzen. Bei den um ein halbes Rastermaß in der Senkrechten versetzten RAM und ROM-ICs ist es nur ein kosmetisches Thema. Aber beim GAL holt es Dich ein, dass Du es um 0.05" in der Horizontalen versetzt hast: Nach rechts verschwendest Du den Platz, und links fehlt er Dir für den Kondensator. (Der hat sowohl zum IC als auch zum Rand sehr knapp Platz, und passt seinerseits nicht mehr ins Raster.)


    Auch die Cs würde ich immer ins 1/10" Raster platzieren. Außerdem würde ich sie (aber das gehört jetzt wieder in den Bereich "Zwangsneurose" ;)) in der gleichen Weise relativ zum IC positionieren. Die Platzierung, die Du für den C beim RAM gewählt hast, finde ich am "saubersten", und es gibt keinen Grund, die anderen Cs nicht genau so anzuordnen.


    EDIT: Gerade sehe ich, dass Pin 11 des GALs auch unbeschaltet ist (Input 9 oder /OE, je nachdem, welchen GAL-Modus Du verwendest.) Der sollte auch auf GND, denke ich. -- So viel zum Thema "es fällt einem immer noch was ein..." :tüdeldü:

  • Vielen Dank für die vielen Tipps ich werde versuchen sie umzusetzen. :)

    Beim EPROM würde ich den NC-Pin (31) tatsächlich offen lassen, wie der Name sagt.

    Naja, es hat seinen Grund.

    So kann man auch kleinere EPROM verwenden, die da +5V brauchen ...




    Zur GAL-Logik kann ich nichts sage, da ich mich mit dem C64 und seinem Expansions-Bus nicht auskenne. Aufgefallen ist mir aber, dass das GAL ein "SRAM write enable" aus dem '273 bekommt, aber das SRAM selbst direkt durch das R/W-Signal vom C64 zum Schreiben freigeschaltet wird. Ist das so beabsichtigt?

    Ja das soll so sein.


    Über das D-Latch selektiert man RAM oder ROM.

    Und das GAL steuert die Chip Select.

    Insofern muss man dem GAL quasi mitteilen was eingestellt ist.


    Ich weiß, ich hab auch schon rum experimentiert mit Register im GAL

    Aber letztlich erschien mir diese Lösung als die Beste.


    Aber ich hab auch schon Version 2 im Kopf.

    Die hat dann größere SRAM, größeres EEPROM und statt den zwei (GAL und TTL) nur ein CPLD (ATF1504).


    Aber zum anfangen wollte ich es einfach machen ...

  • So kann man auch kleinere EPROM verwenden, die da +5V brauchen ...

    Ah -- stimmt, war mir gar nicht aufgefallen, dass die nächstkleineren 512er EPROMS ja gleich zwei Pins kürzer sind. Dann ist der NC-Pin der großen 1024er EPROMS vermutlich genau dafür gedacht, und man darf sich darauf verlassen, dass da chip-intern nichts angeschlossen ist.


    Zitat

    Ja das soll so sein.


    Über das D-Latch selektiert man RAM oder ROM.

    Und das GAL steuert die Chip Select.

    Insofern muss man dem GAL quasi mitteilen was eingestellt ist.

    Das war schon klar soweit. Dazu hast Du ja das "SRAM Select"-Bit aus dem Register. Aber wozu ist das zusätzliche "SRAM write enable"?


    Statt das vom C64 kommende R/W direkt ans SRAM zu legen, könntest Du im GAL ein Signal erzeugen, das R/W mit dem "SRAM write enable" verknüpft, und dieses Signal als /WE ans RAM führen. Ausgänge sind im GAL ja noch frei.

  • Das war schon klar soweit. Dazu hast Du ja das "SRAM Select"-Bit aus dem Register. Aber wozu ist das zusätzliche "SRAM write enable"?

    Es gibt schon RAM Module für den C64.

    Aber es gibt keines, wo man das RAM als ROM ausgeben kann.


    Ich hätte gerne ein Modul, das man einfach von Disk laden kann.

    • auf RAM umschalten
    • Modul Software ins RAM laden
    • RAM schreibschützen
    • Modul ausführen


    Viele Module schreiben auf sich selbst, damit es nur im ROM läuft.


    Das UC1 kann sogar das IO Register verstecken.

    Dadurch ist es nicht unterscheidbar von normalen 8 oder 16kb Module.

  • Statt das vom C64 kommende R/W direkt ans SRAM zu legen, könntest Du im GAL ein Signal erzeugen, das R/W mit dem "SRAM write enable" verknüpft, und dieses Signal als /WE ans RAM führen. Ausgänge sind im GAL ja noch frei.

    Naja das könnte man so machen.

    Das habe ich auch angedacht.


    Aber es ist letztlich ein Draht mehr, der nicht nötig ist.

    Schreiben ins RAM zu unterbinden ist leicht, einfach das CS High lassen ...

  • Gerade sehe ich, dass Pin 11 des GALs auch unbeschaltet ist

    Im Datenblatt des GAL steht, dass man I und IO Pins unbeschaltet lassen darf, auch CLk und OE, wenn man sie im Jedec nicht verwendet.


    Es ist aber genauso ok sie gegen GND oder VCC zu legen.




    Es funktioniert auch auf der Prototyp Lochraster so.

    Also scheint das Datenblatt richtig zu liegen.


    Aber ich versuche es auf GND zu legen.

  • Ah, OK. Du würdest also das /CE für das RAM setzen, aber nur bei Lesezyklen (wenn der Schreibschutz gesetzt ist). Passt das vom Timing her? Nicht dass man /CE schon gesetzt hat, dann kommt das /Write-Signal vom C64, und das GAL versucht hektisch, das /CE wieder wegzunehmen?