Hello, Guest the thread was called1.9k times and contains 106 replays

last post from RexRetro at the

Arduino (FPGA/ARM) als Basis für einen Retro-Computer [aus: Neuer Retro-Computer ...]

  • Aber diese Lösung ist halt nicht zu dem angedachten Preis (150 € für alles zusammen) zu haben. Also weitersuchen bzw. -hoffen, dass es irgendwann sowas wie den Mister für unter 50 € gibt (der "Rest" kostet ja auch was).

    Für einen einfachen Fantasie-8-Bit Rechner würde sicher schon das DE10-nano alleine mehr als ausreichend sein. Kostet aber auch schon gut 150€ ohne Gehäuse/Tastatur.

    Evtl. könnte der Arduino MKR Vidor 4000 auch reichen. Der hat einen Altera Cyclone 10 FPGA mit AFAIR 16000 LEs (deutlich mehr als M.J. kleiner Cyclone 2) und kostet um 60-70€.

    Er hat schon vieles an Board: ARM Cortex-M0 48MHz 32-Bit-Microcontroller, Micro-HDMI, Micro-USB, 8MB SDRAM, 2MB Flash, WiFi+Blutooth... etc.

    Und natürlich GPIOs für Seriell, I2C, SPI etc. und sogar fancy Zeugs wie Camera-Connector und Mini-PCIe.

    Links:

    https://docs.arduino.cc/hardware/mkr-vidor-4000

    https://www.arduino.cc/en/Guide/MKRVidor4000


    Mir würde da nur eine MicroSD-Card als Massenspeicher fehlen. Könnte sicher jeder begabtere E-Maker über die GPIOs günstig dranbasteln.

  • Ich denke, eine möglichst günstige Hardware zu suchen, sollte vielleicht nicht der erste Schritt sein. Zunächst mal bräuchte man zumindest ein grobes Systemdesign. Und zumindest für den Anfang wäre sowas wie MiSTer eine ideale Umgebung, weil man sich um das ganze Drumherum keine Sorgen machen muß. Alle Ein- und Ausgänge sind vorhanden und es gibt genügend Cores als Beispiele, wie man darauf zugreift. Im Prinzip sollte es damit recht einfach sein, sich ein einfaches System zusammenzustöpseln und damit rumzuspielen.

  • Ich denke, eine möglichst günstige Hardware zu suchen, sollte vielleicht nicht der erste Schritt sein. Zunächst mal bräuchte man zumindest ein grobes Systemdesign. Und zumindest für den Anfang wäre sowas wie MiSTer eine ideale Umgebung, weil man sich um das ganze Drumherum keine Sorgen machen muß. Alle Ein- und Ausgänge sind vorhanden und es gibt genügend Cores als Beispiele, wie man darauf zugreift. Im Prinzip sollte es damit recht einfach sein, sich ein einfaches System zusammenzustöpseln und damit rumzuspielen.

    Stimmt natürlich. Ich wollte nur darauf hinaus, dass es günstigere FPGA-HW gibt als DE10-nano/Mister. Mit modernem IO. Wahrscheinlich gibt es noch viel mehr, aber der Arduino kam mir zuerst in den Sinn.

  • Ein limitierter Rechner, weil er halt auf meinem mini dev Cyclone 2 Board für 15,- laufen soll. Hier wurde ein Shield von Maik benutzt, der 512 kb Ram, VGA out, ps2 Tastatur, SD Karte und Audio Ausgang hinzufügt.

    Evtl. könnte der Arduino MKR Vidor 4000 auch reichen. Der hat einen Altera Cyclone 10 FPGA mit AFAIR 16000 LEs (deutlich mehr als M.J. kleiner Cyclone 2) und kostet um 60-70€.

    Er hat schon vieles an Board: ARM Cortex-M0 48MHz 32-Bit-Microcontroller, Micro-HDMI, Micro-USB, 8MB SDRAM, 2MB Flash, WiFi+Blutooth... etc.

    Und natürlich GPIOs für Seriell, I2C, SPI etc. und sogar fancy Zeugs wie Camera-Connector und Mini-PCIe.

    Für mich klingt der Vidor 4000 gar nicht schlecht. M. J. ist nach meiner schwachen Erinnerung doch der einzige unter denen, den sich hier im Thread tummelten und die nötigen technischen Kenntnisse haben, der überhaupt mal was gemacht hat. Sollte ich mich da irren bzw. schlecht erinnern, bitte ich um Entschuldigung – ist alles auch schon recht lange her. Für mich stellt sich also die Frage, was jemand wie z.B. M. J. mit so einem Vidor 4000 alles anstellen könnte. Den Preis finde ich auf jeden Fall attraktiv – und die nötigen modernen Schnittstellen (die auf meiner Wunschliste standen) hat das Ding auch drauf.


    Sich permanent wiederholender Disclaimer: So ein Board wäre (sollte man es nutzen) NICHT der Retro-Homecomputer. Letzterer müsste trotzdem noch entwickelt werden und würde dann AUF dem FPGA des Boards laufen. Das ist ein wichtiger Unterschied. Der ARM wäre dann vorwiegend als IO-Zentrale anzusehen. Um so ein günstiges Board (inkl. vorinstallierter Software) könnte man dann z.B. ein hübsches Gehäuse und einen ebenso hübschen Karton packen und das Ganze in einen Laden stellen. (Nicht, das ich das (jetzt noch) tun will – aber das war eigentlich das gedankliche Ziel des Threads)

  • Der besagte Arduino ist wohl auch eher so gedacht, dass der "Arduino Sketch" im ARM läuft und der FPGA macht Grafik (DVI over MicroHDMI) und ist "user defined special function unit".

    Im einfachsten Fall bräuchte man also gar keine SoftCore "Retro" CPU, sondern nimmt den ARM als Haupt-CPU und der FPGA macht Grafik/Sound, aber etwas fetziger als die vorgefertigte Arduino-GFX-Lib.

  • Cortex M0(+) ist allerdings ziemlich "low-end". Hat keine Hardware-Division und einen sehr eingeschränkten Befehlssatz. Ok, immer noch viel besser als ein 6502, aber ich persönlich fände die Größenordnung Cortex M3/M4 oder Risc V mit ein paar der Erweiterungen besser. Aus meiner Sicht würde eine FPU auch nicht schaden.

  • Für mich klingt der Vidor 4000 gar nicht schlecht. M. J. ist nach meiner schwachen Erinnerung doch der einzige unter denen, den sich hier im Thread tummelten und die nötigen technischen Kenntnisse haben, der überhaupt mal was gemacht hat. Sollte ich mich da irren bzw. schlecht erinnern, bitte ich um Entschuldigung – ist alles auch schon recht lange her. Für mich stellt sich also die Frage, was jemand wie z.B. M. J. mit so einem Vidor 4000 alles anstellen könnte.

    Meine HDL Fähigkeiten sind definitiv zu bescheiden, um was Brauchbares in endlicher Zeit zu machen. Über die ersten MiST Tutorials aus der c't bin ich nie hinausgekommen.

    Wir sollten einfach zusammenlegen und M.J. (und evtl. daybyter) solche MKR Arduinos schenken. Dann kann M.J. seine GPU und evtl. auch CPU darauf portieren und man hätte mal was, was nicht nur auf dem 15€ Bastel-Ding (sorry) läuft, sondern auf einem Board, das sich jeder leicht beschaffen kann.

    Ich würde da mal 20-30€ in den Topf werfen. Hab ja auch die Plastik-Kiste für den Mega65 gesponsort, obwohl der C65 nie mein Traum war (hatte eh keinen C64/128 aber ab 1988 einen Amiga) und mir beim Mega65 schon absehbar war, dass mir das Teil zu speziell und teuer wird.

  • Wir sollten einfach zusammenlegen und M.J. (und evtl. daybyter) solche MKR Arduinos schenken. Dann kann M.J. seine GPU und evtl. auch CPU darauf portieren und man hätte mal was

    Also, ich wäre dabei. Wir sollten ihn/sie aber erstmal fragen, ob er/sie überhaupt daran Interesse hat/haben und ob das aus seiner/ihrer Sicht eine geeignete Plattform ist (und wie man z.B. die "Intelligenz" auf FPGA und ARM aufteilen würde).

  • M.J. hat doch fast alles schon implementiert...

    In welcher Sprache wurden die Demos implementiert? Gibt es auch Codeschnipsel dazu?

    Das ist Assembler seiner eigenen CPU.

    Und das zeigt natürlich auch das Problem mit custom homebrew CPU: man muss from Scratch das ganze Software-Ökosystem hochziehen.


    Cortex M0(+) ist allerdings ziemlich "low-end". Hat keine Hardware-Division und einen sehr eingeschränkten Befehlssatz. Ok, immer noch viel besser als ein 6502, aber ich persönlich fände die Größenordnung Cortex M3/M4 oder Risc V mit ein paar der Erweiterungen besser. Aus meiner Sicht würde eine FPU auch nicht schaden.

    Und für mein Empfinden ist ein ARM einfach nicht retro genug ;-)


    Die 16000 4-Bit LUTs des Cyclone 10 (sieht für mich von der Architektur eh aus wie ein relabelter Cyclone III) gibt aber genug her für eine ordentliche SoftCore CPU (evtl. auch mit einfacher float32 FPU).

    Als ich mir vor Jahren den MiST kaufte, hatte ich mal alle möglichen Cores mit Quartus selbst gebaut, um zu sehen wie komplex die sind (auf Cyclone3).

    Wenn ich mich recht erinnere war der TG68 mit ca. 6000 LEs noch unter den größeren SoftCore CPUs. Es gibt auch deutlich kompaktere 68000er Implementierungen mit Microcode im BlockRAM.

    Ein kompletter MinimigAGA hatte damals ca. 20K von den 25K LEs belegt (also schon zu viel für den Arduino MKR V4000) - heute mit mehr Bugfixes und RTG ist er wohl schon hahe daran, den MiST und SiDi nahezu komplett zu nutzen.


    680x0 ISA hätte den Vorteil, dass es "richtig retro" ist (von 1978 und im Grunde seit Jahren kommerziell tot), aber immer noch Support ohne Ende gibt. Die Amiga Community hat dafür gesorgt, dass sowohl GCC als auch llvm unterstützte 68K Backends haben. Und Open Source Assembler und Compiler gibt es ohne Ende. Sonstigen Code und Literatur sowieso.


    Aber auch RISC-V hätte was. Da gibt es ja auch alle Varianten von winzig bis Linux-fähig OoO superskalar super-pipelined-schlagmichtot. Und Software auch.


    Wahrscheinlich wäre ein 68K aber immer noch schöner, um mal selbst was in Assembler zu coden, als die ganzen RISCs (oder historische 8-Bit CPUs).

  • So, ich konnte dem Amazon 1-Click Kaufbutton nicht wiederstehen, als ich sah, dass ich als Prime Kunde das Teil morgen für 67€ haben kann.

    Es gäbe ihn aber auch für 67,20€ versandkostenfrei bei BerryBase auf Lager (7 St.) und Reichelt hat ihn auch auf Lager für 67,95€+Versand (DPD 5,95).


    Jetzt müssen wir nur noch M.J. überzeugen, seine FPGA Askese zu beenden ;-)


    Es gibt übrigends auch schon fertige Shields mit MicroSD (und opt. mehr Flash):

    https://store.arduino.cc/products/mkr-sd-proto-shield

    https://store.arduino.cc/products/arduino-mkr-mem-shield


    Also könnte auch ein Elektronik-DAU wie ich da loslegen.


    Und es gibt bei FPGA Arcade einige Retro-Game Portierungen, die als Experimentiergrundlage dienen könnten:

    https://www.fpgaarcade.com/ard…r-4000-springs-into-life/

    https://github.com/FPGAArcade/replay_mkrvidor4000

    https://build.fpgaarcade.com/releases/cores/V4/


    Neben einzelnen Spielen gibt es schon Systeme wie ColecoVision, NES, Gameboy, VC-20, Spectrum. Nicht dass ich ein allround Retro-FPGA-System wie MiST(er) will, aber es ist immer gut, wenn schon mal jemand gezeigt hat, das man mit dem Teil was anstellen kann (und wie).

  • Und für mein Empfinden ist ein ARM einfach nicht retro genug

    Da kommen wir halt nicht zusammen. Ich will nicht um jeden Preis einen völlig veralteten Prozessor benutzen. Zumindest die originalen 68000er haben absurd viele Zyklen für einfache Anweisungen gebraucht (32 Zyklen oder so für das Laden eines 32bit-Worts mit relativer Adressierung). Bin außerdem kein Fan von Big Endian und Motorolas beknackter Art, Bits falsch herum zu benennen.

    Wenn ich sowas aufziehen würde, würde ich vermutlich einen Risc-V-Kern benutzen. Sowas hier:

    https://github.com/stnolting/neorv32

    Ist skalierbar, hat eine Debugschnittstelle und eine FPU, wenn man will. Und an Tools für Risc-V (Compiler, Debugger etc.) sollte kein Mangel herrschen.

  • Und für mein Empfinden ist ein ARM einfach nicht retro genug

    Da kommen wir halt nicht zusammen. Ich will nicht um jeden Preis einen völlig veralteten Prozessor benutzen. Zumindest die originalen 68000er haben absurd viele Zyklen für einfache Anweisungen gebraucht (32 Zyklen oder so für das Laden eines 32bit-Worts mit relativer Adressierung). Bin außerdem kein Fan von Big Endian und Motorolas beknackter Art, Bits falsch herum zu benennen.

    Wenn ich sowas aufziehen würde, würde ich vermutlich einen Risc-V-Kern benutzen. Sowas hier:

    https://github.com/stnolting/neorv32

    Ist skalierbar, hat eine Debugschnittstelle und eine FPU, wenn man will. Und an Tools für Risc-V (Compiler, Debugger etc.) sollte kein Mangel herrschen.

    Auch ein RISC-V Homecomputer kann natürlich spannend sein. Ein Ziel von RetroFan war aber, dass man auf der Kiste entwickeln (im Idealfall eine Hochsprache wie Pascal/C kompilieren) kann.

    Und hier frage ich mich, wie weit man mit maximal 8.5 MB kommt. GCC und llvm sind heutzutage Monster.

    Gibt es kompakte, speichersparende RISC-V Compiler?


    BTW: was die vielen Zyklen des original 68K angeht: klar verliert der gegen eine moderne RISC pipeline haushoch, aber der TG68 im Minimig ist schonmal deutlich fixer. Läuft AFAIK im MiST mit knapp 100 MHz und kommt in Amiga Benchmarks an die Performance von 40-50 MHz 68030. Das sollte für flotte 2D Retro-Games in einer (halbwegs compilierten) Hochsprache locker reichen.

    FPU? Nice to have aber bis zum A4000 kam ich auch ohne aus - und hab trotzdem Raytracing gemacht (ok, ich war jung und hatte die Zeit).

  • Das verstehe ich nicht. Ich entwickle seit zwanzig Jahren oder so mit GCC für Mikrocontroller, die nur ein paar Kilobyte RAM haben. Warum sollte das ein Problem sein?

    Aber GCC läuft dann ja auf deinem fetten Entwicklungsrechner und nicht auf dem Mikrocontroller mit den paar KB.

    Ich kenn jetzt nur modernen GCC/gpp und clang/llvm unter Windows und Linux mit x64 (und PTX) Targets. Aber die sind fett und brauchen zum optimieren ordentlich RAM.

    Der absolute RAM-Bloat-Preis bei C/C++ Compilern geht aber an die Open64 Variante, mit der Nvidia früher CUDA übersetzte (bis CUDA 5). Der brauchte unter Linux mal satte 72GB RAM, um einen etwas komplexeren Kernel für GT200 zu wuppen. Und mit virtuellem Speicher gab er sich dabei auch nicht zufrieden.