W65C02S-Einplatinencomputer

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

  • "Baumkuchen"? Nicht übel, also das Arduino-Prizip 8)

  • "Baumkuchen"? Nicht übel, also das Arduino-Prizip 8)


    Ertappt.
    Aber beim Arduino ist das eher ein Baumkuchen für Anfänger, weil nur zweischichtig :P

  • Und an welchen CPLD denkst du da?


    Ich kenne nur die Atmels und die Altera (MAX) Typen. Die Atmel habe ich beim Bitte melde dich an, um diesen Link zu sehen. eingesetzt, die gehen aber nur bis 128 macrocells. Die Altera sind da wesentlich flexibler.

    Das Problem sind die 5V, deshalb sind wohl nur Bitte melde dich an, um diesen Link zu sehen. oder MAX-7000 einsetzbar. Die gibt es bis 512 MC und 208 IO.

    Eventuell sind im 5V Bereich die Xilinx besser einsetzbar, aber davon habe ich keinen blassen Schimmer.


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


    Das würde man schon schaffen, solange Zeit keine grosse Rolle spielt ...

    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.

  • 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.


    Das EasyFlash 3 verwendet beispielsweise einen XC95144XL, der hat je nach Gehäuse zwischen 81 und 117 I/O-Leitungen. Der Chip braucht zwar eine 3.3V-Versorgung, aber die I/O-Pins sind 5V-tolerant.

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    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 nutze bei Kiwi einen XC95108 von Xilinx mit 84 Pins. Es gibt auch noch einen pinkompatiblen XC9572. Die beiden haben 108 respektive 72 Makrozellen. Aber soweit mir bekannt ist, sind beide obsolet.

    Bogo

    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.

  • Um erstmal eine Hardwarebasis zu haben, werden zwei Pins für DMA benutzt: einmal _DMAREQ (DMA Request) und _DMAACC (DMA Accepted).
    Im CPLD wird es später so aussehen: wenn _DMAREQ auf low gezogen wurde, wird abgewartet, bis die CPU zuende gerechnet hat und den nächsten Opcode fetchen möchte (SYNC geht auf high), und unterbricht dann das Taktsignal und zieht _DMAACC auf low.
    Dann ist der AVR/whatever an der Reihe, bis _DMAREQ wieder auf high geht.

    Den Schaltplan für das AVR-Interface hab ich so gut wie fertig, ich werde auf einen ATMega 2650-A setzen. TQFP 100.

    Gruß,
    crasbe

  • Habe heute mal in W65C02S-Rev.0.7b geguckt -- ist das der letzte Stand?

    Mir ist aufgefallen, dass ihr zwar das RAM mit einer Batterie puffert, aber bei der Reset-Erzeugung für die CPU kein Spannungswächter enthalten ist. Das kann dazu führen, dass die CPU Mist baut, wenn der Strom abgeschaltet wird, und RAM versehentlich überschrieben wird. Den Aufbau mit 555 etc. finde ich auch unnötig kompliziert und überholt.
    Ein TL7705 beispielsweise hätte den Spannungswächter integriert und die Zeitkonstanten (deswegen vermutlich den 555) ebenso. Es gibt ihn auch bei Reichelt und mit 30 Cent ist er auch kein Kostenfaktor.

    Was das WDC-IRQ-nicht-mehr-open-drain-Problem betrifft, wieso habt ihr euch für diese Lösung mit den vielen Gattern entschieden? Was spricht gegen je eine Diode am 65xx, wie im Datenblatt und z.B. Bitte melde dich an, um diesen Link zu sehen. beschrieben? Wäre das nicht viel einfacher?

    edit: Frage beantwortet, danke. Wenn ich schon einen Link poste, sollte ich vielleicht auch mal direkt selber lesen, was da eigentlich steht :D

    edit 2: Nö, Frage doch nicht beantwortet. Bei 75xx05 hat man ja wieder open-drain und ist somit wieder langsam. Also doch Diode oder Gatter mit TP?

  • Der letzte Stand von dem Einplatinencomputer ist 0.7p, ja.

    Der TL7705 ist eine gute Option, stimmt. Mit dem Schaltplan vom Core bin ich noch nicht fertig (ich hab grad angefangen).
    Den Schaltplan für das AVR-Interface sowie für den Speicher (RAM, ROM) hab ich soweit fertig. Ich render den Schaltplan noch eben und lad ihn dann hoch.

    Wenn du bei Google angemeldet bist, kann ich dich zu den Leuten hinzufügen, die darauf zugreifen können.

    Wegen dem IRQ: Ich werde nochmal drüber nachdenken, schon, weil ich UART und VIAs trennen möchte. UART bekommt ne eigene Platine, 2 VIAs auch, und dann gibts noch welche mit 2 PIAs und 2 CIAs. (Letztere nicht vom WDC)
    Das mit der Diode scheint mir eine gute Möglichkeit zu sein. Ich denke allerdings, dass man als Dioden einen schnellen Typ verwenden sollte. Vielleicht wird es auch einfach ein OR-Gatter mit OC-Ausgängen. Wäre zwar teurer, aber eleganter.

    Die Signale von der Platine werden zu den Steckverbindern hin sowieso gepuffert, (74HCT245) von daher müssten die Dioden und Eingänge nicht viel "einstecken".

    Gruß,
    crasbe

    Edit:


    Ertappt.
    Aber beim Arduino ist das eher ein Baumkuchen für Anfänger, weil nur zweischichtig :P


    Eigentlich hab ich es von Tim Pritlove aus CRE067 Thema Mikrocontroller mit dem Gast fd0. Er hat das fnordlicht als Platinenbaumkuchen bezeichnet ;)

  • Sorry für den Doppelpost.

    Ich hab dich mit Leserechten hinzugefügt for(;;). Du kannst auf die alten und auf die neuen Daten zugreifen. Du solltest aber auch eine E-Mail bekommen haben, in der das drin steht.

    Den Schaltplan für den Speicher und für das AVR-Interface habe ich soweit fertig. Ich habe mich für 74HCxxx-Logikchips entschieden, da diese unterm Schnitt die besten Eigenschaften für das Projekt haben.
    Mit dem Layouten der Boards habe ich noch nicht angefangen, ich denke aber an 10x10cm Platinen.

    Aktuell arbeite ich an dem Schaltplan, wo die CPU drauf ist.

    for(;;);: ich hab den TL7705 gleich für 3,3V- und 5V-Power-Supply verwurstet. Als Zeitkonstante hab ich rund 130mS gewählt. Das sollte reichen, bis alle Elkos aufgeladen sind und eventuelle Step-Ups (SID braucht nunmal 9/12V) hochgefahren sind.

    Gruß,
    crasbe

    Edit: Ihr dürft euern Senf auch zum Projekt abgeben, selbst wenn ihr nicht an der technischen Diskussion teilnehmt (/teilnehmen wollt). Dann muss ich nicht mit mir selber reden. Das ist langweilig ;)

  • Im Datenblatt steht, dass man _RES mindestens zwei _PHI2-Takte unten halten soll. Das wären bei 8MHz 250ns. Bei 1MHz sind das immerhin noch 2µs.
    100µF für Ct wären 1,3s. Passt etwas besser als 76,92µF für 1s. :D

    Wie lange wird beim C64 _RES unten gehalten?

    Gruß,
    crasbe

  • Der C64 benutzt je nach Platine verschiedene Reset-Schaltungen, aber das mit 1 sec kommt so ca. hin. Nimm in deinem Falle 47 µF sind problemlos zu beschaffen und sollten reichen.

  • 47µF wären 0,611s.
    Die Formel ist t = 0.013c bzw c = t/0.013. Das spukt dir direkt µF aus.

  • Wichtig ist, daß ALLE Spannungen bei der Freigabe von _RES garantiert stabil sind. Speziell per DC-DC-Wandler erzeugte Spannungen brauchen etwas länger. Manche ICs brauchen ab 'Spannung stabil' noch ein paar Zyklen bis man _RES freigeben darf. Alles in allem sollten die 600msec dafür reichen.

  • einplatinen pcs sind was dolles
    bastel grad an einen "holz computer "
    ne kleine selbstgemachte holzkiste :hammer: wo
    ne 80gb hdd ein altes 48x dvd laufwerk und ne 3zoll floppy
    reinkommt das alles mit einen pentium 3 und ein wenig
    RAM (was halt so rumliegt )
    das holtz wird mit den homeworld logo verziert und ab da mein
    nebenbei pc für hw und inet

    1x VIC-20,2x C16,1x P4 3x C64,1x C128D, 2x A500,1x A2000,1x CPC464,1x 520/1040ST,Mega ST2,1x PC10-III,1x /|\ PC-1,Acorn BBC MICRO 64k,1x Acorn electron :done:

  • Also wenn es nur um einen konkreten Widerstands- oder Kondensatorwert geht, um die genaue Resetdauer einzustellen, würd ich mir da jetzt nicht bis ins Detail Gedanken machen. Dimensioniere ruhig großzügig. Wenn das System später läuft, kannst du noch immer ausprobieren, ob es auch mit einer kürzeren Resetdauer funktioniert, indem du den R und/oder C tauschst.

    Edith wollte noch etwas. :D  Killerchicken: Hast du Bilder von deinem Gehäuse? Würd mich interessieren... :)

    Bogo

    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 hab dich mit Leserechten hinzugefügt for(;;).

    Danke, hab' die Mail heute aus dem Spam-Ordner gefischt.

    Mit dem Layouten der Boards habe ich noch nicht angefangen, ich denke aber an 10x10cm Platinen.

    Layouten solltest Du auch erst, wenn sich am Schaltplan voraussichtlich nichts mehr ändert -- sonst machst Du Dir mehr als doppelte Arbeit. 10x10 kommt mir für DIL-Bestückung sehr klein vor. Bedenke auch, dass ggfs. jedesmal pro Platine Einricht-Kosten ("tooling costs") fällig werden, da kann es günstiger sein, die Schaltung auf mehrere größere Platinen zu verteilen.

    ich hab den TL7705 gleich für 3,3V- und 5V-Power-Supply verwurstet.

    Mit dem TL7705 kannst Du keine 3,3V überwachen. Die 3,3V sind unterhalb der Schaltgrenze (von etwa 4,55V), da würde der TL7705 die Schaltung im Reset-Zustand festhalten. Wenn Du möchtest, kannst Du den fast identischen TL7702 verwenden, der braucht allerdings noch extern zwei weitere Widerstände, um die Schaltgrenze festzulegen -- siehe Datenblatt.

  • Killerchicken: Hast du Bilder von deinem Gehäuse? Würd mich interessieren... :)

    komm noch beim ersten versuch is das gehäuse vergammelt in der garage weil da wasser rangekommen ist mach es mal wenn ich zeit hab neu

    Mit fotos

    1x VIC-20,2x C16,1x P4 3x C64,1x C128D, 2x A500,1x A2000,1x CPC464,1x 520/1040ST,Mega ST2,1x PC10-III,1x /|\ PC-1,Acorn BBC MICRO 64k,1x Acorn electron :done:

  • Danke, hab' die Mail heute aus dem Spam-Ordner gefischt.


    ^^

    Zitat

    Layouten solltest Du auch erst, wenn sich am Schaltplan voraussichtlich nichts mehr ändert -- sonst machst Du Dir mehr als doppelte Arbeit. 10x10 kommt mir für DIL-Bestückung sehr klein vor. Bedenke auch, dass ggfs. jedesmal pro Platine Einricht-Kosten ("tooling costs") fällig werden, da kann es günstiger sein, die Schaltung auf mehrere größere Platinen zu verteilen.


    Es werden SMD-Bauteile verwendet. Bei SMD hast du eine viel größere Auswahl an verschiedenen Bauteilen, die du verwenden kannst.

    Zitat

    Mit dem TL7705 kannst Du keine 3,3V überwachen. Die 3,3V sind unterhalb der Schaltgrenze (von etwa 4,55V), da würde der TL7705 die Schaltung im Reset-Zustand festhalten. Wenn Du möchtest, kannst Du den fast identischen TL7702 verwenden, der braucht allerdings noch extern zwei weitere Widerstände, um die Schaltgrenze festzulegen -- siehe Datenblatt.


    Gut, dass du das jetzt sagst. Aber ich denke, wenn die 5V überwacht werden, und der Reset noch 1,3s gehalten wird, kann man davon ausgehen, dass die 3,3V auch stabil sind.

    Ich habe gestern heute ein User-Interface gezeichnet; ähnlich wie das der MOS KIM-1. 4x4 Taster mit 0-9 A-F und 8 7-Segment Displays.
    Das ganze wird angesteuert von 2 PIAs. Ein PIA für das Display und ein PIA für die Taster.
    Jetzt ist die Frage: was mach ich mit den übrigen 8 Leitungen bei PIA_2?

  • Bist Du Dir wirklich sicher, dass Du jede Ziffer Deines LED-Displays statisch ansteuern möchtest? Da hast Du ja eine ungeheure Materialschlacht... wenn schon statisch, dann lieber ein DL1414 oder gleich ein LCD-Display.
    Oder doch lieber gemultiplext?