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

  • JLCPCB ist OK. In den meisten Fällen der preisgünstigste mir bekannte Fertiger, und bei der Platinenfertigung habe ich da noch nie Probleme gehabt. (Beim Bestückungsservice hat es mal gehakt, aber auch da ist das Angebot kaum zu schlagen, solange man mit den von JLCPCB angebotenen Bauteilen auskommt.)


    DHL ist ein ganz guter Kompromiss für den Versand. Es dürfte aber noch eine "Servicepauschale" für die Abwicklung der Einfuhrumsatzsteuer anfallen, die DHL dann direkt bei Dir kassiert -- in DE sind das 6 Euro, meine ich. Die Freigrenze, unter der keine Steuer kassiert wird, ist ja zum 1. Juli gerade so weit gesenkt worden, dass man (incl. Versandkosten) in der Regel darüber liegen wird. Ich habe zuletzt meist "EuroPacket" als Versandmethode gewählt. Da werden mehrere Sendungen gebündelt, per Express nach Europa geschickt und verzollt,; ein Dienstleister vor Ort schickt sie dann als Einzelsendungen weiter. Steuer und Bearbeitungsgebühr sind hier schon in den JLCPCB-Versandkosten enthalten.


    Noch kurz zum SMD-Löten: Das Geheimnis ist "mehr Flussmittel!". :) Ich "hefte" SOICs und QFPs zunächst an zwei gegenüberliegenden Ecken mit Einzel-Lötstellen an, gebe dann Flussmittel an die Pin-/Pad-Reihen, und ziehe einfach mit dem Lötkolben (mit etwas Lötzinn an der Spitze) über jeweils eine kompletten Pin-Reihe. Es gibt dazu spezielle Lötspitzen mit Hohlkehle, die die Dosierung des Zinns vereinfachen, aber mit der konventionellen Meißelform geht es auch.


    Es gibt diverse Videos auf Youtube, bei denen man sich das abschauen kann, z.B. hier:

    Drag soldering SMD parts with a flux pen - YouTube

    Professional Hand Soldering Training - SMT, The Art of Drag Soldering and Fine-Pitch QFP - YouTube

  • Der JLCPCB Production-Progress ist eben auf "finished" gegangen! :D


    Bin gespannt wie lange der Versand dauern wird.




    Bei der Gelegenheit möchte ich mich recht herzlich bedanken bei allen, die mir hier geholfen haben, insbesondere deleted_07_23 und deleted_07_21 !!




    Inzwischen habe ich bereits mit der zweiten Cartridge angefangen ...


  • Meine Nichte hat erzählt, einmal ausgehen und 150 Mücken sind weg.

    Und die Jugend macht das mindestens 8 mal im Monat.


    das ... glaub ich nicht ...


    (also das Erste vielleicht, aber nicht das Zweite multipliziert mit dem Ersten; hier sitzen die Art Leute eher im Park und haben sich vorher ein Wegbier geholt, üblicherweise ist das ein sogenanntes "Sterni" (max. cheap) und die was Älteren sitzen dann in DD-Neustadt am AssiEck (einfach mal googeln) mit ner Schorle oder einem Radler oder so).


    Jugend ist natürlich wahrscheinlich relativ - ich würde darunter aber so ungefähr 16 bis 20 verstehen.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • (also das Erste vielleicht, aber nicht das Zweite multipliziert mit dem Ersten


    Klingt eher schräg, ich weiß.


    Aber ich kann mir das schon vorstellen.

    Wohnen mit 30 noch im Hotel Mama und müssen fast nichts ausgeben für ihren Unterhalt.


    Die tragen ihren halben Gehalt in die Bars und die andere Hälfte in die Boutique oder Schuhgeschäft ...

  • War da nicht etwas mit "Wer zu früh kommt, den bestraft das Leben"... :tüdeldü:



    ach nee es war ja "Wer zu spät kommt, den bestraft das Leben". :fp:

    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::

  • =O wie jetzt? Ich hab schon 27C010 und GAL 16V8 eingekauft... :cry2:

    Das ist schon okay ...

    Es gibt absichtlich ZWEI (UC1 und UC2).



    Die UC1 soll eine simple Cartridge sein, für jedermann leicht nachbaubar und preisgünstig.

    Sie soll alle Arten von Module (8KB, 16KB, UltiMax und PGM) können bis zu 128KB.



    Die UC2 ist einfach nur größer:

    • 512KB Flash Speicher (programmierbar vom C64 aus)
    • 512KB SRAM Speicher

    Der Nachteil an der UC2 ist, den ATF1504 kann nicht jeder so leicht programmieren.

  • Der Nachteil an der UC2 ist, den ATF1504 kann nicht jeder so leicht programmieren.


    Wobei das lässt sich inzwischen auch einfach lösen: :)

    hackup/ATF2FT232HQ: ATF1504-FT232HQ Shield (github.com)




    Jemand hat einen Billig JTAG Programmer gemacht.

    • Über ISP Stecker kann man 1504 auf Platinen direkt beschreiben
    • über den Sockel kann man die Chips direkt beschreiben
    • es werden sogar die 12V erzeugt, die man braucht wenn der JTAG deaktiviert ist - genial




  • Nochmal zum Thema Preisgestaltung: einen Vorteil hat Aisler: es sind auch größere Boards billig.

    Ihr kennt evtl. das Open MVS Projekt, ein paar Breakoutboards im Sinne einer modularen Jamma-Supergun, um MVS-1C zu konsolidieren. Das Breakoutboard (162*22mm) würde bei PCBway mit dem billigsten Versand ohne Zoll und StrafServicegebühr 30 Dollar kosten. Bei Aisler 22. Euro. Moment - Aisler erkennt "HD Design rules"? Bei einem 0815 2 Layer Board? Kurz das Board gecheckt, ein grausam sloppy gezeichnetes hingekliertes KiCad-Projekt vorgefunden, welches den Design Rule Checker zum Schreien bringt. 30 OCD-geplagte Minuten später sind die verantwortlichen Flood Fills sauber und ordentlich und Aisler erkennt nur noch Simple Design Rules -> Für 12 Euro inkl Versand zu haben. Kurz noch das Rear AV Board kontrolliert: aha, ovale Durchkontaktierungen für die Gehäusebeinchen einer Mini Din Buchse. Schnell in Kreislöcher (2.3mm vorne, 2.1mm seitlich) gewandelt, wie es durchaus nicht unüblich ist (meine "Minigun" Supergun nutzt das von Haus aus) - auch hier sind jetzt Simple Rules erkannt und die Boards kosten 8 Euro. Also zusammen 20Eu statt 30Dollar + Zoll + 6 Euro nur fürs Breakout.

  • Na, da musst Du Dir Aisler aber etwas schönrechnen. ;) Gerade bei größeren Boards wird Aisler deutlich teurer als die chinesische Konkurrenz.


    162*22 mm² finde ich noch nicht unbedingt "groß". Mein aktuelles Projekt hat 314*182 mm², und da kosten drei Stück bei Aisler 152 Euro, fünf Stück bei JLCPCB weniger als ein Drittel (incl. Versand und Einfuhrumsatzsteuer/Zoll). Beides in der "Luxus-Version" chemisch vergoldet, damit der Vergleich fair ist. Bei JLCPCB kann ich die Boards aber auch bleifrei verzinnt bestellen, dann kosten sie nur ein Viertel des Aisler-Tarifs.


    Schon die 162*22 mm² kosten übrigens bei JLCPCB incl. Versand und Zoll (Europacket, 6-9 Arbeitstage) ziemlich genau die gleichen 12 Euro wie bei Aisler. Und dafür bekommst Du dann 5 Boards statt 3, kannst Dir die Farbe aussuchen, und bekommst "richtige" durchkontaktierte Schlitze, statt die in übergroße Bohrungen umwandeln zu müssen.


    Dass Aisler bei durchkontaktierten Schlitzen zwangsweise den HD-Premiumpreis aufruft, ist eins meiner Lieblings-Ärgernisse dort... Solche Schlitze sind bei den chinesischen Lieferanten problemlos im Basispreis möglich.

  • Ich bin begeistert.

    Scheint alles perfekt zu sein.

    Zumindest laut Ohmmeter.


    Der Connector passt auch perfekt.

    Die Print könnte eine Spur breiter sein.

    Aber egal wie, der Kontakt ist immer korrekt.


    Kann es gar nicht erwarten dass endlich WE ist ... :)




  • So langsam wird es ...



    Am Anfang steht eine CSV Datei:

    Code
    program; typ; filename
    ExAss ; 8K; exass.bin
    Help!; 8K ; "help.bin"
    "ExBasic II"; 16K ; exbasic.bin
    8K Modul; 8K ; 8K.crt
    16K Modul; 16K ; 16K.crt
    UltiMax; UltiMax ; ultimax.crt
    BASIC Prog; PRG; "hello world.prg"



    Mit Hilfe eines PC Programm wird daraud ein UC1 Image File:






    Am Ende sieht das dann so aus am C64: :)


  • Kurze Schrecksekunde ...


    Beim GAL 16v8 sind die PIN 1-9 Eingänge.

    Die PIN 11 und 1 sind "speziell" - wusste ich.

    Die PIN 12 bis 19 sind I/O ...


    Leider bedeutet das NICHT, dass sie wahlfrei Input oder Output sein können!!


    WinCupl lässt die PIN Belegung so nicht zu, wie ich es bei dem Layout vorgesehen habe.

    In Gedanken habe ich mich schon beim löten mit Fadeldraht gesehen ...



    Zum Glück kann man den GAL in verschiedenen Betriebsarten betreiben.

    Für dieses Layout eignet sich der "complex" Modus, jetzt hat er brav ein Jedec gebildet.


    Glück gehabt! :)

  • Es ist ein harter Weg ... aber ich bin dran und nun schaut es gut aus mit der UC1 Hardware.



    Ich hatte Probleme mit den D- Flip Flops.

    Total seltsames Verhalten, ich war der Verzweiflung nahe, weil ich das Problem nicht verstehen konnte.


    Die D-Flip Flop haben sich setzen lassen mit einem POKE Befehl, aber genau EINES der FF nicht, das FF-7 war immer aus.

    Noch dazu hat der Zugriff ab und zu generell fehl geschlagen, so jeder 20ste Zugriff etwa.

    Dabei funktioniert der gefädelte Prorotyp tadellos!!


    Natürlich habe ich die IC durch getauscht mit dem Prototypen, aber alles ist fehl geschlagen.


    Ich hab natürlich die Leitungen auf der PCB hundert Mal geprüft.

    Genau das Siebener FF hatte 0,26 Ohm und die anderen viel weniger (0,09 Ohm).

    Hab einen Draht eingelötet, -- leider völlig ergebnislos.


    Dachte okay, vielleicht ein kapazitives Problem, Leiterbahnen zu eng oder zu verschlungen, was weiß ich ...

    PCB aufgekratzt und Verdrahtet ... selbes Ergebnis: FF7 geht nicht und die anderen sporadisch nicht.



    Ich war beinahe am Ende, doch dann kam die zündende Idee: ich hab die GAL Gleichungen nochmals genau angesehen.

    Nachdem ich die CE Logik für den EEPROM geändert habe, klappt es auch mit den FF tadellos, auch ganz ohne PCB Modifikation!


    Anscheinend hat der EEPROM einen ganz kurzen Konflikt am Datenbus ausgelöst, und das hat die Probleme mit dem FF Register ausgelöst.

    Das Timing ist da anscheinend echt voll kritisch.


    Aber nun klappt es endlich so wie es sein soll. :)

  • Zwischenbericht ...



    Es funktioniert jetzt alles wie es soll.



    Leider sind zwei Design Fehler vorhanden, die ein Problem mit dem RAM bewirken:

    • am GAL benötige ich noch A14
    • das RAM R/W muss zum GAL (was eh hier schon jemand vorgeschlagen hat)


    Das mit dem A14 ließe sich noch verschmerzen.

    Ich wollte das Schreibfenster des RAM in den oberen 32K einblenden.

    Leider liegt das UC Register auch da, daher kann ich nicht ins Register schreiben ohne das RAM zu verändern ...

    Die IO Selektion kommt etwas später als PHI1 und R/W, daher kann ich das IO Fenster nicht ausnehmen.

    Zur Zeit verwende ich das untere 32K Fenster, aber schöner geht es wenn ich A14 am GAL habe.



    Leider ist es mit dem aktuellen Layout Design so, dass immer wieder ungewollt ins RAM geschrieben wird.

    Auch dann, wenn ich nur die Signale HIROM und LOROM zur Selektion des RAM verwende.

    Ich hab alles versucht, Verknüpfung mit R/W und PHI2, aber es ist leider nicht in Griff zu kriegen.

    Jetzt erzeuge ich das R/W Signal für das RAM mit dem GAL und alles läuft wie es soll. :)



    Die Software ist jetzt auch in einer gut funktionierenden Beta Phase.

    Man kann verschiedene Arten von Software mixen und auf einfache Weise über ein Menü starten.

    • PRG (also beliebige One-Filer) werden in den RAM geladen und gestartet (die UC wird dabei abgeschaltet)
    • 8K Module werden in den RAM der UC geladen und im 8K Modus gestartet
    • 16K Module werden in den RAM der UC geladen und im 16K Modus gestartet
    • UltiMax Module werden in den RAM der UC geladen und im UltiMax Modus gestartet


    Jetzt werde ich mal das Layout anpassen und nochmals Platinen bestellen ...


  • Das ist nach meiner Erfahrung eigentlich der Normalfall. Dass Version 1.0 einer Platine gleich die finale ist, ist (zumindest bei mir) eher die Ausnahme...


    Du hast ja noch Eingänge frei am GAL, also kein grundsätzliches Problem. Hast Du schon Patch-Drähte draufgelötet und Dich davon überzeugt, dass es mit A14 und R/W (und entsprechend angepasster GAL-Programmierung) funktioniert?


    Tut mir ja leid im Nachinein, dass ich Dich überredet hatte, die unbenutzten Eingänge auf Masse zu legen. In der Situation ist es wohl am einfachsten, die beiden IC-Beine für die zusätzlichen Eingänge hochzubiegen und die Patchdrähte direkt da anzulöten. Das sieht zwar nicht elegant aus, aber funktioniert und schafft Sicherheit, bevor Du das revidierte Layout orderst.

  • Du hast ja noch Eingänge frei am GAL, also kein grundsätzliches Problem. Hast Du schon Patch-Drähte draufgelötet und Dich davon überzeugt, dass es mit A14 und R/W (und entsprechend angepasster GAL-Programmierung) funktioniert?

    Ja, der gelbe Draht am Foto :)


    Seeehr provisorisch, aber es geht.


    Der gelbe Draht ist das R/W für den RAM vom GAL kommend.



    Die LED sind auch provisorisch.

    So sieht man den Inhalt von dem Register ...

    War für die Software Entwicklung sehr praktisch.




    Tut mir ja leid im Nachinein, dass ich Dich überredet hatte, die unbenutzten Eingänge auf Masse zu legen.

    Nee braucht dir nicht leid zu tun.

    Das ist schon korrekt.


    Aber ich hab mir auch gedacht, beim nächsten Prototypen lass ich sie mal frei bis zur ersten Version.

    Dann geht es leichter mit Änderungen ...

  • die beiden IC-Beine für die zusätzlichen Eingänge hochzubiegen und die Patchdrähte direkt da anzulöten.

    Ja so hab ich es gemacht, aber ohne löten, weil ich das GAL womöglich noch ein paarmal anpassen muss.

  • Ich hab jetzt 4 Platinen aufgebaut.




    Eine Platine funktioniert nicht richtig.

    Spiele starten nicht oder stürzten nach ein paar Minuten ab.


    Durch quer tauschen der Bauteile habe ich entdeckt, es liegt nicht an der Platine.

    Es liegt an dem GAL16v8A.


    Ich besitze leider nur den einen GAL16v8A.

    Daher kann ich leider nicht sagen ob der Fehler "A" spezifisch ist, oder ob nur der GAL einen Hau hat..


    Mit meinen anderen GAL, - GAL16v8B, GAL16v8D und ATF16b8B, - läuft es aber wunderbar, auf allen vier Platinen.




    Laut Datenblatt sehe ich keinen Grund, warum die A Typen nicht funktionieren sollten??


    Auf der anderen Seite sind die "D" von Lattice und die ATF Typen von Atmel die stromsparendsten, insofern empfehle ich die zwei ...

  • Das Projekt ist abgeschlossen. :)



    Doku, Gerber, Programmfiles, Beispiel Images:

    https://oe7twj.at/index.php?title=Universal_Cartridge_1



    Es gibt zwei Spiele die nicht korrekt laufen wollen.

    Das eine läuft zumindest, wenn man nach dem laden einen Hard Reset macht.

    Das andere, "Stix", das läuft so halb, die Gegner frieren ein mit der Zeit.


    An dem Problem feile ich noch herum.

    Ggf. gibt es daher noch Updates bei der Firmware ...

  • Ich hab nun einen zweiten GAL 16v8A ...



    Der funktioniert gar nicht im UC1 Modul.

    Obwohl die Verify Funktion im Programmer klar sagt, dass alles in Ordnung ist.



    Als Konsequenz muss ich also konkret abraten von der Verwendung dieser GAL 16v8A im UC1 Modul.

    • Offizieller Beitrag

    Durch quer tauschen der Bauteile habe ich entdeckt, es liegt nicht an der Platine.

    Es liegt an dem GAL16v8A.


    Ich besitze leider nur den einen GAL16v8A.

    Daher kann ich leider nicht sagen ob der Fehler "A" spezifisch ist, oder ob nur der GAL einen Hau hat..

    Ich weiss es nicht mehr genau, war waehrend meiner Studienzeit, also > 25 Jahre her.


    An der 16V8A gab es einen kleinen Unterschied gegen den 16V8.

    Du musst deinem GAL-Assembler sagen, das es ein A ist. Versuch mal.

    Unterscheidet dein GAL-Prommer nach ohne/mit 'A'?


    Vielleicht finde ich noch was.


    Nachtrag:


    http://www.sh-elektronik.de/service/demo/handbuch-gds35.pdf, S. 21:


    Und in dem Databook werden 16V8A und 16V8 komplett unabhanegig beschrieben.

    Einen Unterschied hab ich noch nicht gefunden.

    http://www.bitsavers.org/compo…Lattice_GAL_Data_Book.pdf


    Nachtrag2:

    Hier ist noch was:

    http://www.armory.com/~rstevew/Public/Pgmrs/GAL/algo.htm

    Unter Programmers Electronic Signature, Fusemap



    Viel Erfolg