Anfängerfrage(n) zum Thema FPGA usw.

  • Anfängerfrage(n) zum Thema FPGA usw.

    Nein, eigentlich ist das gelogen, ich bin noch nicht mal Anfänger. Eher Dummie.

    Nur kurz als Vorabinfo:
    Ich habe eine einschlägige Elektronikausbildung aus dem letzten Jahrtausend :) , habe u. a. Kenntnisse in C64 Hard- und Software 8o sowie Microcontrollertechnik (Atmel, Microchip). Hochsprachen kann ich mehr oder weniger auch ein paar (Pascal, C, VisualBasic, diverse Scriptsprachen). Zum Thema "FPGA" habe ich maximal etwas zusammengelesenes Halbwissen (Was sind FPGAs/CPLDs, was ist Verilog/VHDL, ... ?) aus ein paar Zeitschriftenartikeln und Wikipedia.

    Mit dieser Hypothek diesen Voraussetzungen würde mich folgende Frage interessieren, die sich für die Experten wahrscheinlich lächerlich anhört. Vielleicht erbarmt sich mir trotzdem jemand :D ...

    Für das FPGA64-Projekt sind ja (zumindest die älteren) Sourcen verfügbar. Unter anderem sind da die VHDL-Sourcen für eine 6502-CPU inkl. 6510-Erweiterungen (i. W. der I/O-Port) frei verfügbar. Ich habe keine Ahnung, was für FPGA64 für Hardware verwendet wird. Wie realistisch ist es, diese VHDL-Sourcen zu verwenden um auf "irgendeiner" Hardware einen 6502/6510-pinkompatiblen Drop-in-Ersatz zu bauen. Ist VHDL "plattformübergreifend", d. h. ich muss da nur ein paar Pins, I/Os etc. anpassen, jage die VHDL-Sourcen durch den "Compiler" (oder wie immer das bei VHDL heißen mag) und kann mir das Kompilat in ein IC von $HERSTELLER laden, welches dann einen 6502/6510 darstellt? Und gibt's da Bausteine mit internem Flash oder muss ich immer ein externes anflanschen? Gibt's da überhaupt sinnvolle Bausteine dafür, oder muss man für ein IC bereits 100e Euro kalkulieren, sodass man besser vergilbte 64er en-gros einkauft und die CPUs rausreißt? ;)

    Über ein paar Zeilen Aufklärung würde ich mich freuen.

    Danke schon vorab und schönen Gruß
    kinzi
    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten."
    (Quelle unbekannt)
  • kinzi schrieb:

    Wie realistisch ist es, diese VHDL-Sourcen zu verwenden um auf "irgendeiner" Hardware einen 6502/6510-pinkompatiblen Drop-in-Ersatz zu bauen.
    Es geht, aber es liegt mehr Arbeit vor Dir als der bisherige Code gebraucht hat.

    kinzi schrieb:

    Ist VHDL "plattformübergreifend", d. h. ich muss da nur ein paar Pins, I/Os etc. anpassen, jage die VHDL-Sourcen durch den "Compiler" (oder wie immer das bei VHDL heißen mag)
    Im Prinzip ja, aber moderne FPGA haben neben dem generischen Gatter-und-Verbindungsleitungen-Geflecht noch diverse Spezialschaltelemenet an Bord. Wenn Dein Design beispielsweise zwei Block-RAM-Bereiche von 8K braucht udn Dein Chip hat nur einen von 16K, mußt Du einen Umschaltmechanismus einfügen. Und wenn Dein Design die PLL-Funktionen von Altera benutzt, wird eine Portierung auf einen Chip, der das nicht kann, ziemlich mühsam.

    kinzi schrieb:

    kann mir das Kompilat in ein IC von $HERSTELLER laden, welches dann einen 6502/6510 darstellt?
    Nein, ganz sicher nicht. Zunächst mal passen die Logikpegel nicht. Da muß also schonmal Anpaßelektronik her. Und der FPGA-interne Bus ist völlig anders aufgebaut (was Signale und Timing angeht) als der echte 6502-Bus. Beim Chameleon gibt es dafür logischerweise eine Anpassung, aber ich glaube nicht daß die im frei zugänglichen FPGA64 enthalten ist. (und natürlich braucht man eine Platine, die in den Sockel paßt)

    kinzi schrieb:

    Und gibt's da Bausteine mit internem Flash oder muss ich immer ein externes anflanschen?
    Gibt (gab) es von Actel, hat sich aber nicht durchgesetzt. Nimm einfach ein Config-Flash und gut- das ist noch die geringste Problematik bei dem Vorhaben.

    kinzi schrieb:

    Gibt's da überhaupt sinnvolle Bausteine dafür, oder muss man für ein IC bereits 100e Euro kalkulieren,
    FPGA-Prototyp-Platinen beginnen bei 20 Euro, 'generische' Platinen für Chip-Ersatz-Zwecke (aber nicht zwingend den 6502!) kommen um 50 Euro, spezielle C64-Modulplatinen mit dickem FPGA und allem Zubehör gibts fertig für über 150 Euro bis Ende offen.

    Und, um es zum wiederholten Male zu sagen: Wenn man erstmal mit dem Spielchen anfängt, ist man schnell an eienm Punkt, wo es einfacher ist den ganzen Rechner in das FPGA zu ziehen, als einen einzelnen Chip an die 'reale Außenwelt' anzutüddeln.
  • mc71 schrieb:

    kinzi schrieb:

    Und gibt's da Bausteine mit internem Flash oder muss ich immer ein externes anflanschen?
    Gibt (gab) es von Actel, hat sich aber nicht durchgesetzt.
    Oder von Xilinx (Spartan 3AN, veraltet), Altera (MAX10, aktuell) und Lattice (MachXO/2/3, aktuell). Ist aber im Prinzip auch nur ein Flash-Chip im gleichen Gehäuse und bedient sich nicht gross anders als ein externer - wobei die Hersteller dabei teilweise garantieren, dass der Chip innerhalb einer Millisekunde oder so nach Einschalten konfiguriert ist. Die MachXO2 von Lattice sind ganz praktisch, wenn man was mit begrenzter Platinenfläche designen will, da einige Modelle davon neben dem Configflash auch noch einen internen 3.3V-zu-1.xV Spannungsregler für die Core-Versorgung mitbringen.

    Quellcode

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

    sd2iec Homepage
  • mc71 schrieb:

    Und, um es zum wiederholten Male zu sagen: Wenn man erstmal mit dem Spielchen anfängt, ist man schnell an eienm Punkt, wo es einfacher ist den ganzen Rechner in das FPGA zu ziehen, als einen einzelnen Chip an die 'reale Außenwelt' anzutüddeln.
    Danke schonmal für deine ausführliche Antwort. Hört sich eher nicht an, als ob das was für mich wäre. Und nein, einen ganzen Rechner will ich mir nicht bauen, es ginge mir definitiv um einen CPU-Ersatz.

    mc71 schrieb:

    Nein, ganz sicher nicht. Zunächst mal passen die Logikpegel nicht. Da muß also schonmal Anpaßelektronik her. Und der FPGA-interne Bus ist völlig anders aufgebaut (was Signale und Timing angeht) als der echte 6502-Bus.
    Gut, ich hab da diverses mit "5 V-tolerant" usw. im Hinterkopf (ja, abgekündigt) und mit einfachen Levelshiftern. Beim FPGASID gibt's dieses Problem wohl auch und wurde auch gelöst.

    Das mit dem Bus leuchtet mir allerdings ein, da sich ja die ganze 64er-Hardware im FPGA selbst abspielt. D. h., es würde wohl sehr viel Anpassungsarbeit für die Schnittstelle zur Außenwelt erfordern, auch wenn das Core an sich schon zur Verfügung steht.

    @Unseen - dir auch danke für deinen Input.

    Ich sehe schon, das Thema kann glaube ich schneller zu als ich es aufgemacht habe :D ...
    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten."
    (Quelle unbekannt)
  • Zum Rumprobieren musst Du eigentlich gar nix kaufen. Kannst Altera Quartus oder Xilinx ISE runterladen und loscoden. Das IC kannst dann im Simulator testen.

    Das ist wohl eines der bekanntesten Billig-Boards:

    ebay.com/itm/ALTERA-FPGA-Cyslo…m:m-tMy5MOZfxAvfiGVkWVMGg

    Hat aber schon 4600 Logik-Zellchen!

    Hier sind 6502 Kerne:

    forum.6502.org/viewtopic.php?t=1673

    Recht neu ist dieses Board:

    shop.trenz-electronic.de/de/TE…1000-IoT-Maker-Board?c=11

    Brauchst nur USB Anschluss. Da weiss ich aber noch nicht, wie es mit dem Software-Support aussieht.

    Generell bildet die Beschäftigung mit FPGAs weiter und sollte daher nicht unterlassen werden! :zeig:

    :thumbsup:
    Hier könnte ihre Signatur stehen!
  • Normalerweise nimmst Du einen FPGA, wenn Du die Funktion, die Du haben möchtest nicht auf einfachem Weg fertig bekommen kannst oder Du verschiedenen Sachen integrieren möchtest. Wenn Du einen Prozessor 6502 oder 6510 brauchst, dürfte es sicherlich zur Zeit einfacher sein, Du nimmst den fertig. Bei größerer Stückzahl würde man heute auf einen anderen, noch einfacher zu beschaffenden Prozessor ausweichen.

    Wie schon geschrieben wurde: 6510 in den FPGA stecken, dann aber auch gleich noch mehr.

    Ansonsten gilt natürlich ganz allgemein: Wenn Du die Besonderheiten der FPGAs ausnutzt, wie integrierten Speicher, Speziallogik, ... bist Du von diesen FPGA-Typen abhängig und kannst Dein Design nicht einfach portieren. Wenn es portabel sein soll, must Du auf die Nutzung von Spezialfeatures verzichten. Dann kannst Du aber Dein Design auch theoretisch in einen ASIC portieren.
    Das Übersetzen des VHDL- oder Verilog-Code nennt man synthetisieren. Bei dieser Synthese übersetzt Dir eine Software Deine Funktionsbeschreibung in Hardware-Logik. Wie die aufgebaut wird entscheidet die Synthese auf Grund Deiner Vorgaben für Fläche und Timingparameter (die sogenannten Constraints). Für die Übersetzung greift die Synthese dabei auf die Bibliothekselemente des FPGA-Lieferanten oder des verwendeten Prozesses beim ASIC zu.
    Je nach Software kannst Du das bis in die letzten Signalpfade constrainen und der Hardware so gezielte Zeitvorgaben oder Freiräume erlauben. Das hierbei mächtigeste Programm ist im wesentlichen der Design-Compiler von Synopsys. Der ist aber nicht ganz billig, daher bieten die FPGA-Hersteller auch vereinfachte Programme an, damit die ihre ICs besser verkaufen können.
    Eine mehr oder weniger gute Simulationsumgebung ist auch oft dabei.

    Es gibt aber auch die Möglichkeit, VHDL-Code auf grafischer Ebene zu kreieren. Dazu kannst Du Schaltungsblöcke zeichnen, verdrahten und Statemachines in einzelnen Zuständen malen, mit Bedingungen, wann die Zustände wechseln. Das geht zum Beipiel mit dem Programm Visual HDL. Das erzeugt Dir dann quasi per Knopfdruck VHDL-Code. Man muss also nicht zwingend den Code direkt schreiben, was aber oft auch Vorteile hat. Das aber nur als Randbemerkung.
  • Schmitti schrieb:

    Wenn Du die Besonderheiten der FPGAs ausnutzt, wie integrierten Speicher, Speziallogik, ... bist Du von diesen FPGA-Typen abhängig und kannst Dein Design nicht einfach portieren. Wenn es portabel sein soll, must Du auf die Nutzung von Spezialfeatures verzichten.
    Da muss ich doch gleich widersprechen - gerade der integrierte Speicher lässt sich prima mit generischem VHDL beschreiben, ebenso manche Spezialfeatures wie Hardware-Multiplizierer. Bei anderen Features wie zB PLLs geht das nicht, die Nutzung davon muss man dann halt in ein Modul kapseln und dieses eine Modul anpassen - das ist ja teilweise schon beim Wechsel zwischen Chipfamilien des gleichen Herstellers nötig.

    kinzi schrieb:

    Gut, ich hab da diverses mit "5 V-tolerant" usw. im Hinterkopf (ja, abgekündigt)
    Seit ziemlich vielen Jahren abgekündigt und ungefähr genauso lange nicht mehr in den Hersteller-Synthesetools unterstützt. Levelshifter sind aber keine schwarze Magie.

    Quellcode

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

    sd2iec Homepage
  • Schmitti schrieb:

    Normalerweise nimmst Du einen FPGA, wenn Du die Funktion, die Du haben möchtest nicht auf einfachem Weg fertig bekommen kannst oder Du verschiedenen Sachen integrieren möchtest. Wenn Du einen Prozessor 6502 oder 6510 brauchst, dürfte es sicherlich zur Zeit einfacher sein, Du nimmst den fertig. Bei größerer Stückzahl würde man heute auf einen anderen, noch einfacher zu beschaffenden Prozessor ausweichen.
    Das war mir soweit schon klar :) ... mir geht es wirklich darum, einen 6502/6510/wasauchimmer-Ersatz erzeugen zu können, wenn es keine CPUs mehr in ausreichender Menge zu vernünftigen Preisen gibt. Da ich zufällig über den 6502/6510-Core gestolpert bin, hat sich mir diese Idee aufgetan.

    Danke jedenfalls für deine ausführlichen Erklärungen zum Thema! :thumbup:
    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten."
    (Quelle unbekannt)
  • kinzi schrieb:

    mir geht es wirklich darum, einen 6502/6510/wasauchimmer-Ersatz erzeugen zu können, wenn es keine CPUs mehr in ausreichender Menge zu vernünftigen Preisen gibt.
    Das Problem wird wohl oder Übel eher sein, dass die C64/etc.-Board früher oder
    später nicht mehr funktionieren. Von daher sehe ich langfristig FPGAs nicht als
    Bausteinersatz, sondern als Rahmen für das komplette System. Man findet dazu
    fast alles im Netz, wie z.B. CPU, SID, VIC I+II, CIA.

    Nur so als Motivation: Ich benutze ein C64-Light-System seit zig Jahren, bestehend
    aus CPU, ROMs/RAMs, CIA und einer selbstgeschriebenen Textausgabe (40x25).
    Ohne grossen Aufwand kann ich eigene Devices einbinden und per BASIC ansteuern
    und ggf auf ein vollfunktionierenden C64 aufrüsten. Einziges Problem sehe ich zZ
    im Analogteil des SIDs, ist aber nur noch eine Frage der Zeit. Für mich also kein
    Grund mehr, einen C64 bzw C128 zu besitzen (vor 3 Jahren verkauft).
  • Jotta schrieb:

    Das Problem wird wohl oder Übel eher sein, dass die C64/etc.-Board früher oder später nicht mehr funktionieren.
    Nein, das sehe ich ganz und gar nicht. Das Board geht nicht kaputt; falls doch kann man die beidseitige Platine prima reparieren. Die restliche Elektronik auf dem Board ist nicht das Problem, lässt sich alles reparieren / ersetzen. Nur die "Custom-Chips" sind wirklich "systemkritisch".

    Jotta schrieb:

    Nur so als Motivation: Ich benutze ein C64-Light-System seit zig Jahren, bestehend
    aus CPU, ROMs/RAMs, CIA und einer selbstgeschriebenen Textausgabe (40x25).
    Ja, das ist sicher spannend. Mir geht es aber um "echte" Hardware. Ich bin da eher wie ein Oldtimer-Liebhaber: Wenn der Vergaser kaputt ist und nicht mehr zu bekommen ist, flansche ich halt irgendwie einen anderen an. Aber aus Pappmaschee ein Mockup auf ein anderes Chassis bauen oder den Oldtimer am PC-Simulator fahren, das ersetzt das Original für mich nicht.

    Trotzdem natürlich danke für deinen Input. :thumbup:
    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten."
    (Quelle unbekannt)
  • So, danke allseits für den Input und das Auffüllen meiner Wissenslücken, insbesondere jenen, den ich noch nicht geantwortet habe!
    So wie es aussieht lohnt sich eine Umsetzung (für mich) derzeit nicht, weder vom Preis noch vom Einarbeitungs-/Entwicklungsaufwand.

    Gruß
    kinzi
    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten."
    (Quelle unbekannt)
  • Neu

    Bin hier gerade drüber gestolpert und finde das Thema sehr interressant. Ich könnte mir den VIC-II als FPGA-Variante ohne diese lustigen Streifen natürlich gut vorstellen (ähnlich dem FPGA-SID Projekt). Im Groben verstehe ich zumindest einbisschen, was im Vorhinein geschrieben steht, aber selbst werde ich soetwas wohl nicht auf die Beine stellen können. Da bin ich zu weit weg von. Da es ja nun bereits den SID als FPGA gibt, wagt sich vielleicht irgendwann mal jemand wissendes an den VIC (II).

    Cheers
  • Neu

    Längst geschehen; das lief so gut, daß CPU, PLA und die beiden CIA mit auf den FPGA gelandet sind; Platz war da nämlich schon vor 15 Jahren mehr als genug.

    Und gerade den VIC mit seinem pfriemeligen CAS-Timing, je nach Platine noch mit zusätzlichen Timing-Kondensator 'zurechtgebogen', möchte ich nicht als einzelnen Chip-Ersatz verantworten wollen...
  • Neu

    mc71 schrieb:

    Und gerade den VIC mit seinem pfriemeligen CAS-Timing, je nach Platine noch mit zusätzlichen Timing-Kondensator 'zurechtgebogen', möchte ich nicht als einzelnen Chip-Ersatz verantworten wollen...
    Ich hab ja leider keine Ahnung von der Materie, aber ist das echt so viel komplizierter als eine reine Softwareemulation des VIC wie z.Bsp. in VICE oder anderen Emus? Mir gefällt die Idee original Customchips mit modernen Techniken nachzubilden ziemlich gut. Ich verstehe es (als FPGA-Leie) so, dass die Chiplogic im FPGA auf Softwarebasis nachgebildet wird. Also auch "nur" eine Software die auf deinem FPGA läuft. Oder verstehe ich das falsch? Das FPGASID-Projekt, Super-Kernal ect. finden ja offensichtlich großes Interresse.
  • Benutzer online 1

    1 Besucher