W65C02S-Einplatinencomputer

Es gibt 295 Antworten in diesem Thema, welches 49.568 mal aufgerufen wurde. Der letzte Beitrag (25. Dezember 2012 um 19:58) ist von norbi40.

  • Noch eine gute Nachricht: Der 16C550 in DIP-40 ist abgekündigt. Bei Mouser ist er schon nicht mehr zu bekommen.
    Wobei ein 16C550 in DIP den Vorteil hätte, dass er weniger Platz für das Routen der Leiterbahnen braucht.
    Jetzt gibt es verschiedene Möglichkeiten:
    1) Wir nehmen stur den 16C550 in DIP.
    2) Wir benutzen eine Adapterplatine PLCC -> DIP für 16C550 und AM29F010 (in PDIP ist selbiger auch abgekündigt).
    3) Wir nehmen eine größere Platine.
    4) Wir bauen ein Modularsystem.

    Vom Preis sähe es etwa so aus:
    1 und 2 wären etwa gleich, allerdings billiger als 3 und 4.
    Weil für 3 und 4 braucht man für ein Grundsystem mindestens 3 Platinen.

    Ich persönlich bin für Möglichkeit 2 wobei man die Adapter zur Not auch selber ätzen könnte. Das wäre wohl am billigsten. (1 Layer mit SMD-PLCC-Sockel)

    MfG.
    crasbe

  • Noch eine gute Nachricht: Der 16C550 in DIP-40 ist abgekündigt. Bei Mouser ist er schon nicht mehr zu bekommen.

    Ärgerlich... Wobei in diversen Bastelkisten sicher eine Menge 16x50 in PDIP rumliegen dürften und zumindest der Monitor wird den FIFO des '550 nicht brauchen. Aus der Sicht des Recyclings wäre als PDIP auf der Platine besser.


    Zitat


    Wobei ein 16C550 in DIP den Vorteil hätte, dass er weniger Platz für das Routen der Leiterbahnen braucht.
    Jetzt gibt es verschiedene Möglichkeiten:
    1) Wir nehmen stur den 16C550 in DIP.
    2) Wir benutzen eine Adapterplatine PLCC -> DIP für 16C550 und AM29F010 (in PDIP ist selbiger auch abgekündigt).

    Sowas hab ich damals für den 16C650 (32Byte FIFO) von Startech gebaut damit der auf eine normale I/O-Karte mit DIP-Sockel passt. Handgelötet auf einem Stück Lochraster. Macht keinen Spass, geht aber.

    Zitat


    3) Wir nehmen eine größere Platine.
    4) Wir bauen ein Modularsystem.

    Oder 5) es wird eine Platine mit einem Busstecker auf dem alle Signale zu finden sind. Dort kann man den AVR anschliessen, oder eine Backplane mit Slots anschliessen wenn die I/O auf der Hauptplatine nicht reicht. Die RS232 würde ich dann auch auf diesen Stecker führen (wegen AVR) und auf einem Pfostenstecker (6pol, GND, TxD, RxD, RTS, CTS und +5V) so daß man einen MAX232 schmerzlos nachrüsten kann. Man kann sich auch überlegen ob man die Handshake-Signale braucht oder ob 4 pol (GND, TxD, RxD, +5V) und Handshake per Software (Xon/Xoff) ausreicht. So ein Stecker braucht fast keinen Platz.

  • Bitte melde dich an, um diesen Anhang zu sehen.

    Das ist mal eine 3D-Ansicht von der Platine.
    Viel Platz ist nicht mehr und es müssen noch ein paar Logikchips raus.
    Der Port unten wäre dann für die Backplane.

    MfG.
    crasbe

  • Die Packungsdichte würde ich als "historisch authentisch" bezeichnen. Ansonsten kann man noch wesentlich enger packen.

  • So wie das (für mich) aussieht, wird das so nie und nimmer drauf passen ? - Ich würde es mir mal ansehen, bin mit KiCad aber eher ungeübt.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Also deutlich enger bekomme ich es nicht mit 2 Layern hin.
    Ich könnte die Leiterbahndicke verringern, sodass ich 2 Leitungen zwischen einem Pin durchbekomme, aber ob das Sinn der Sache ist?
    Gibt wieder mehrere Möglichkeiten:
    1) Ein W65C22S VIA wird runtergeworfen. Sozusagen "outgesourct".
    2) Wir benutzen eine Platine mit mehr Layern (4 Layer).
    3) Der Speicher (sowohl Flash-EEPROM als auch SRAM) kommen auf eine externe Platine.
    4) Ich fange mit dem Layout nochmal von vorne an.

    Ich tendiere zu Möglichkeit 2 und 4. Ich muss das Layout sowieso nochmal überarbeiten.

    MfG.
    crasbe

  • Wenn man CPU, RAM, ROM und VIAs so anordnet wie beim C64 auf den alten Platinen kann man ziemlich platzsparend routen, zumindest wenn alles DIP-Gehäuse sind.

  • Also deutlich enger bekomme ich es nicht mit 2 Layern hin.
    Ich könnte die Leiterbahndicke verringern, sodass ich 2 Leitungen zwischen einem Pin durchbekomme, aber ob das Sinn der Sache ist?

    Layouten ist auch nicht mal "eben" so gemacht. Alleine das plazieren der Bauteile ist schon eine Kunst für sich, aber das ist das allerwichtigste daran.
    Duchkontaktierungen kann man auch gerne viel verwenden denn sie kosten in der Fertigung kaum was, ausser man möchte dringend sich was beweisen ;)

    Für das EasyFlash Layout habe ich deutlich mehr als 2 Wochen daran gesessen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Oder die Profis können auch schöne 2-Lagen sachen machen:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Also lass dir mehr Zeit dafür.

  • Dein Layout vom Easy-Flash sieht wirklich super aus !

    Tja, was die Platine zum 65c02 betrifft. Wenn man sich mal die Bauteile anschaut, die auf dem Bild neben der Platine liegen, kann man sich sehr schnell zusammenreimen, dass das rein physikalisch gar nicht drauf passen kann. Die Zweifel an der Realisierbarkeit der vorliegenden Version hatte ich schon mehrfach im Verlauf dieses Themas beschrieben.
    Ich hatte auch schon angeregt, nur noch einen VIA zu verwenden und PLCC besser auszulassen. Wenn man so eine klassische Schaltung aufbaut, sind alle Teile mehr oder weniger "abgekündigt".

    Ich würde die Grundplatine wie folgt bestücken: CPU, Dekodierung, ROM, RAM und zwei oder drei ? Erweiterungs-Slots. Wenn dann noch etwas geht, kann man das immer noch aufnehmen. Ein VIA mit Slot wäre dann mein Favorit.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Also es müssen nicht alle Chips noch drauf. Ich wollte nur nicht die Netzliste nochmal neu machen.

  • Huhu,

    es geht hier noch etwas weiter. Ich habe mit einige Gedanken zum Projekt gemacht, und bin zu der Erkenntnis gekommen, dass es sinnvoller ist, wenn man das ganze modular auslegt. Also kein W65C02S-Einplatinencomputer, sondern ein Mehrplatinencomputer.
    Der Gedanke ist, dass man eine einfache Schnittstelle bietet, um Erweiterungen zu bauen, die dann Baumkuchenartig aufeinander gestapelt werden können.
    Die einzelnen Platinen werden dann kleiner gehalten und in Funktionsgruppen zusammengefasst (im Prinzip sind die Funktionsgruppen die verschiedenen Schaltpläne, die ich schonmal gezeichnet habe).
    Eine Funktionsgruppe wäre dann z.B. eine Platine mit der CPU, Takt- und Reseterzeugung. Also soweit alleine funktionsfähig.

    Die Idee kann man natürlich beliebig weiterspinnen und dann verschiedene andere Platinen erstellen, wie z.B. eine Platine mit zwei (Swin-)SIDs drauf inkl. Step-Up-Wandler, für 9 bzw 12V. Ich werde die Schaltpläne für das Design noch fertig zeichnen und einige erste Platinenlayouts erstellen, sodass ich dann einige Prototypenplatinen in Auftrag geben kann.

    Vielleicht erklärt sich Donald bereit, ein paar Platinen in seinen Shop aufzunehmen, wo man diese dann exklusiv kaufen kann. Der Gedanke ist eben, dass man die einzelnen Funktionsgruppen so günstig wie möglich hält, damit auch das Gesamtbild nicht zu teuer wird.

    EVENTUELL kann man später noch eine Grafikkarte mit dem V9990-Chip von Yamaha, den Bogogil in seinem Kiwi verwendet hat, bauen. Dann hat man ein komplettes 6502-Desktopsystem.

    Das Projekt ist nicht tot!

    Gruß,
    crasbe

  • Bei mehreren Platinen brauchst du eine Art Backplane und sehr wahrscheinlich auch Bustreiber weil sonst die Leitungen zu lang werden.


    Eine Backplane hatte ich nicht vorgesehen, weil ich die Platinen wie bei einem Baumkuchen stapeln möchte. Also die Platinen werden direkt übereinander gesteckt. (Sieht dann mit den Steckerbindern entfernt so aus wie ein Baumkuchen :D)
    Bustreiber wären sicherlich keine schlechte Idee, wobei ich mir noch nicht sicher bin, ob es sinnvoller wäre, jeder Platine Bustreiber zu spendieren, oder eine eigene Treiberplatine zu bauen.

  • Also Bustreiber auf jeder Platine. Der 74HCT245 scheint mir ganz geeignet zu sein. Die 245er wurden auch im VC-20 verwendet, um den Bus zu treiben. (Später im C64 wurden diese dann wegoptimiert.)

    Ich werde mal Kontakt mit dem PCB-Menschen aufnehmen, und fragen, was er für einen Satz Prototypenplatinen haben möchte.

    Gruß,
    crasbe

  • Äh, nein, im VC-20 hatten die 74LS245 einen anderen Job. Der 6502 kennt kein AEC-Signal, kann also seine Adress- und Steuerleitungen nicht vom Bus nehmen wenn der Videochip dran ist. Der 6510 im C64 hingegen kann das, also brauchte man dort keine tristate-fähigen Bustreiber zwischen CPU und VIC um beide trennen zu können.

    Interessant wird die Ansteuerung der Bustreiber korrekt zu implementieren, damit die Richtung immer stimmt vor allem wenn DMA geplant ist.

  • Meinst du, dass es sinnvoll ist, wenn man jetzt schon an einen DMA-Controller denkt?
    Ich werde bei dem Bus-Connector einen oder zwei Pins für DMA vorsehen, sodass die Module abgeschaltet werden, sobald ein DMA "passiert".
    Zu einem späteren Zeitpunkt kann man die Bankinglogik sowie einen DMAC in einem CPLD zusammenfassen.

    Gruß,
    crasbe

  • Nun, es war an einen Speicherzugriff via eines AVR gedacht... Selbst wenn du dafür die CPU anhältst musst du die Buspuffer korrekt steuern können.

  • Zu einem späteren Zeitpunkt kann man die Bankinglogik sowie einen DMAC in einem CPLD zusammenfassen.


    Wäre ganz in meinem Sinne. Aber wieso "später"?

    Ich würde alle Chip Select, alle Adressleitungen und Datenleitungen zu einem CPLD legen. Jetzt schon. Den füttert man mit einem ganz einfachen Schema, dass mal alles läuft. Später kann man sich über ein ausgefeiltes CPLD Design Gedanken machen (Banking, DMA, ...).

    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Ich würde alle Chip Select, alle Adressleitungen und Datenleitungen zu einem CPLD legen. Jetzt schon. Den füttert man mit einem ganz einfachen Schema, dass mal alles läuft. Später kann man sich über ein ausgefeiltes CPLD Design Gedanken machen (Banking, DMA, ...).


    Und an welchen CPLD denkst du da? Er muss mindestens 8 Pins für den Datenbus, 16 Pins für den Adressbus, 4 Pins für den erweiterten Adressbus, 8 Pins für Chip Select und sagen wir mal 16 Pins für den ganzen anderen Steuerungskram ala. IRQ, NMI, Reset, DMA, PHI0/2, ...
    Also insgesamt rund 52 Pins.

    Wer hat Lust was in VHDL/Verilog zu stricken? Ich hab noch recht wenig Ahnung davon.