Hello, Guest the thread was called9.6k times and contains 136 replays

last post from ZeHa at the

Unterschiede zwischen Emulator (Software) und FPGA (Hardware) bei Nachbildung von Systemen --> Vor- und Nachteile

  • SID ist das schlechteste Beispiel, dass ist der einzige Chip, den man mit FPGA nicht nachbilden kann, da Analog-Anteile

    Dafür gibts FPAAs =)


    Bei einem FGPA hats Du im Gegensatz z.B. zu einem PC o.ä. nur einenn minimalen Stromverbrauch und so gut wie keine Wärmeentwicklung

    Das ist eine eher naive Annahme. Gerade im Bereich des Stromverbrauchs haben FPGAs eher den Ruf, deutlich mehr Strom als ein ASIC mit gleicher Funktion zu benötigen. Für den ao486-Core auf dem MiSTer wird zB dringend ein Kühlkörper und Lüfter empfohlen.


    Die Software die auf einem FPGA läuft ist schon sehr spezifisch und ich glaube nicht dass man die leicht auf einen anderen FPGA portieren kann, oder liege ich da falsch?

    Du liegst falsch. Man kann natürlich Code schreiben, der sich schlecht auf andere FPGA-Familien/-Hersteller portieren lässt, wenn man viel spezialisierten Code einbindet, aber bei C/C++-Programmierung kann man sich genauso ins Knie schiessen. Der Hauptaufwand bei Portierung auf ein anderes Board ist die Anpassung an ggfs. andere Peripherie aussen herum (anderes externes RAM oder andere Anbindung von Eingabegeräten) und bei Wechsel des Herstellers (manchmal auch der Chipfamilie) muss man zB die Takterzeugung umstellen, aber der eigentliche Kern des Codes braucht typischerweise keine Anpassungen. Ein bekanntes Beispiel dürfte zB der Minimig sein, das Original-Board verwendet einen Xilinx-FPGA und der Core wurde auch auf MIST und Chameleon portiert, die beide einen Altera-FPGA verwenden.

  • Postscript 'beschreibt' die Seite (das Aussehen etc.) ist aber nicht den Inhalt der Seite.

    Und welche Sprache würde dann den Inhalt einer Seite eines Dokuments (sagen wir mal eine Seite aus "Moby Dick") beschreiben?


    (Postscript ist übrigens ein schlechtes Beispiel, weil das eine ausgewachsene Turing-komplette Programmiersprache ist, ähnlich wie HTML+CSS, auch wenn das glücklicherweise selten so benutzt wird. Für Deine Zwecke ist vermutlich reines HTML das, was Du meinst)

    Kann ich als einen "alten" FPGA nehmen und das drauf anwenden? Dachte das wäre stark an die Hardware gebunden.

    VHDL ist schon relativ portabel. Man kann halt nicht erwarten, VHDL-Sourcen (oder gar die Binaries) von Projekt A einfach in einem anderen Projekt (mit anderem FPGA und anderer Anbindung des FPGA etc.) ungeändert benutzen zu können. Schau' Dir die MiSTer-Sourcen einfach mal an. Z.B. ein Großteil des C64-Cores ist schon ziemlich alt und wurde ursprünglich für andere FPGA-Varianten entwickelt.

  • Quote from Zeha

    Ein FPGA ist keine Software-Emulation, das ist eine falsche Aussage. Sie ist in Software beschrieben, aber das gilt ja heute für alles.

    Ich meinte das anders :-)


    Natürlich läuft auf einem FPGA kein Code, sonst wäre ein FPGA kein FPGA, und wie ich anmerkte: "... die anschließend in Gatter umgewandelt wird".


    Aber das war auch nicht der springende Punkt. Worauf ich hindeutet war etwas ganz anderes, denn mit FPGA assoziieren die meisten, dass das dann ein 1:1 Nachbau ist, also Chip-Identisch. Das trifft jedoch weder auf den von bwack entwickelten 6526 Nachbau, noch auf den FPGA-SID, und auch nicht auf Gideos Ultimate 64 zu. Sie bilden keine "Die" Gatter 1:1 Stück für Stück nach, sondern denken sich VHLD Code (oder in eine höheren Programmiersprache mit VHDL Konverter) aus, der dann möglichst einen C64 und die Chips emulieren soll. Wenn man dann noch einen C++ -> VHDL Konverter benutzt, ist das kein Chip-Design, sondern pure Software-Emulation, die anschließend nur noch in Gatter gegossen wird ;-)


    Deshalb ist es am Ende doch eine Software-Emulation, anstatt ein 1:1 Gatter-Nachbau. Warum FPGA aktuell bevorzugt wird ist hauptsächlich die Zeit. Da man viele Sachen so präziser und gleichzeitig abarbeiten kann.

  • Dass DU das anders meintest war mir wie gesagt klar ;) mir geht es drum, dass hier generell oft die Meinung vorherrscht, auf dem FPGA "liefe" irgendeine Software. Aber das ist eben falsch.


    Was Deinen weiteren Text angeht, es ist richtig dass hier die meisten FPGA-Entwickler die Chips nicht 1:1 nachbauen, vor allem weil sie den Originalschaltplan gar nicht kennen. Sondern es wird ein Schaltkreis selbst entworfen, der aber moeglichst im Ergebnis das gleiche tut, also BlackBox-maessig. Das kann man auch Emulation nennen, aber keine Software-Emulation, sondern eine Hardware-Emulation. Es waere vergleichbar mit dem fertigen realer Chips, die das gleiche machen, ohne dass sie 1:1 anhand eines Schaltplans nachgebaut wurden. Eine Software-Emulation ist aber immer noch ein Programm, das ausgefuehrt wird. Hier sehe ich den grossen Unterschied.

  • Sie bilden keine "Die" Gatter 1:1 Stück für Stück nach, sondern denken sich VHLD Code (oder in eine höheren Programmiersprache mit VHDL Konverter) aus, der dann möglichst einen C64 und die Chips emulieren soll.

    Selbst im Original wurden allerdings nicht immer 1:1-Chip-Nachbauten verwendet, zB gibts mindestens zwei (wahrscheinlich drei) CIAs mit unterschiedlichem Verhalten welches von mancher Software berücksichtigt werden muss.


    Wenn man dann noch einen C++ -> VHDL Konverter benutzt, ist das kein Chip-Design, sondern pure Software-Emulation, die anschließend nur noch in Gatter gegossen wird

    Die mythischen High-Level-Synthese-Tools, die einen Emulator in ein FPGA compilieren können werden gerne bei solchen Diskussionen in den Ring geworfen, aber meines Wissens existiert auf dem Markt kein einziges Tool, welches Code in der Komplexität eines typischen Emulators wirklich zu Hardware umsetzen kann.

  • Wenn man dann noch einen C++ -> VHDL Konverter benutzt, ist das kein Chip-Design, sondern pure Software-Emulation, die anschließend nur noch in Gatter gegossen wird

    Die mythischen High-Level-Synthese-Tools, die einen Emulator in ein FPGA compilieren können werden gerne bei solchen Diskussionen in den Ring geworfen, aber meines Wissens existiert auf dem Markt kein einziges Tool, welches Code in der Komplexität eines typischen Emulators wirklich zu Hardware umsetzen kann.

    Das kann ich mir ehrlich gesagt auch nicht vorstellen...

  • Die mythischen High-Level-Synthese-Tools, die einen Emulator in ein FPGA compilieren können werden gerne bei solchen Diskussionen in den Ring geworfen, aber meines Wissens existiert auf dem Markt kein einziges Tool, welches Code in der Komplexität eines typischen Emulators wirklich zu Hardware umsetzen kann.

    Kann mir auch nicht vorstellen das es so ein Tool gibt. Ein Emulator der für ein OS geschrieben wird, hat eine andere Umgebung als ein FPGA darstellt. Was ich mir allerdings vorstellen könnte ist, dass man vielleicht den FPGA Code in Form eines C++ Programms formulieren könnte und DIESES dann übersetzt werden könnte.

  • Quote from ZeHa

    Das kann man auch Emulation nennen, aber keine Software-Emulation, sondern eine Hardware-Emulation.

    Genau genommen nicht, wenn man ohne WHILE/FOR/LOOP arbeitet, aber es diente primär und überspitzt auch nur dazu, um aufzuzeigen das FPGA nicht gleichbedeutend mit 1:1 ist.


    Wobei wenn man sich Teile der VDHL-Sprache ansieht:

    wüsste ich jetzt nicht was das mit Gatter-Nachbildung zu tun hat, und errinnert eher an die übliche Software-Entwicklung ala C, Pascal oder ähnliches.

  • Naja irgendwie musst Du ja Deinen Schaltkreis in Textform beschreiben. Wie will man das sonst machen, wenn nicht in einer dafuer angefertigten Sprache? Und da ja ein Schaltkreis letztendlich auch einen gewissen Logik-Ablauf darstellt, mit dem man IF/THEN usw realisieren kann (ist ja im Prinzip nix anderes als ein Schalter), dann werden dort natuerlich aehnliche Keywords verwendet. Es aendert aber nichts daran, dass man hinterher einen Schaltkreis hat, durch den Strom fliesst, und kein Software-Programm, das auf einem Prozessor laeuft.

  • Quote from ZeHa

    Es aendert aber nichts daran, dass man hinterher einen Schaltkreis hat, durch den Strom fliesst, und kein Software-Programm, das auf einem Prozessor laeuft.


    :-)

    Quote from Matthias

    Natürlich läuft auf einem FPGA kein Code, sonst wäre ein FPGA kein FPGA, und wie ich anmerkte: "... die anschließend in Gatter umgewandelt wird".

  • wüsste ich jetzt nicht was das mit Gatter-Nachbildung zu tun hat, und errinnert eher an die übliche Software-Entwicklung ala C, Pascal oder ähnliches.

    VHDL wurde ja auch für die Simulation von Schaltkreisen entworfen, Synthese kam erst später. Nicht jedes in VHDL formulierbare Konstrukt ist synthetisierbar, beispielsweise müssen Schleifengrenzen Konstanten sein.

  • Eine Software-Emulation ist aber immer noch ein Programm, das ausgefuehrt wird. Hier sehe ich den grossen Unterschied.

    Schon, aber wenn man es eine Spur abstrakter sieht, dann schalten bei beiden Transistoren. Beim einen quasi hartverdrahtet, beim anderen durch explizite Steueranweisungen (eben das Programm). Solange ich das als Blackbox betrachte, ist das doch eigentlich egal. Vielleicht ist es mal hilfreich, nicht die ganze Kiste zu betrachten, sondern nur ein Element. Nehmen wir mal den SID. Da kann ich das Orginal nehmen oder den FPGASID, der (fast) klingt wie ein echter, aber eben eine FPGA-Implementierung ist...ich kann aber auch den ARMSID nehmen. Und der ist dann eine Softwareemulation, die auf einem 100Mhz ARM läuft, die ebenfalls meistens klingt wie ein echter. Beide stecken ganz normal im Sockel, beide sind updatefähig, beide machen Lala. Ich kann da nicht einmal dann einen Unterschied fühlen, wenn ich es versuche. Beides ist für mich "echte Hardware", die Funktionsweise ist völlig transparent für mich.

  • In der Praxis kann es durchaus gefuehlt identisch sein, das will ich gar nicht bestreiten. Doch wenn die Frage ist, was ist eigentlich der wesentliche Unterschied zwischen FPGA und Software-Emulation, dann ist genau das fuer mich der wesentliche Unterschied. Im einen Falle baue ich den Schaltkreis (bestenfalls 1:1, aber zumindest in aequivalenter Form) mithilfe einer Hardware-Loesung nach (auch wenn diese beim FPGA halt rekonfigurierbar ist), im anderen Falle schreibe ich ein Programm, das auf einer fremden Prozessor-Architektur laeuft (die i.d.R. auch deutlich leistungsfaehriger sein muss), welches das, was im Schaltkreis passiert, simuliert/nachahmt.

  • Spätestens wenn der FPGA die Bildsignale on-the-fly ausgibt (am besten sogar auf VGA) wird es ein großer Unterschied. Ein Emulator kann nur ein Bild rendern, dass dann komplett nach dem Rendering auf deiner Grafikkarte dargestellt wird. Alleine dadurch gibt es schon ein Lag von durchschnittlich 1/2 Frame, wenn nicht sogar mehr (Stichwort Grafik-Treiber). Für Hardcore-Gamer könnte das schon ein Todes-Kriterium sein.

  • "Das ist eine eher naive Annahme. Gerade im Bereich des Stromverbrauchs haben FPGAs eher den Ruf, deutlich mehr Strom als ein ASIC mit gleicher Funktion zu benötigen. Für den ao486-Core auf dem MiSTer wird zB dringend ein Kühlkörper und Lüfter empfohlen."


    Ich denke, da liegst Du falsch. Der MISTer hat noch zusätzlich einen ARM-Prozessor, dieser wird wirklich sehr warm und braucht einen Lüfter. Der MIST, welcher nur den FGPA-Chip hat verbraucht tatsächlich kaum Strom; es reicht ein 5 Volt Netzteil mit max. 1 A.

    Zudem wird das ganze auch nich warm; dies zeigt schon, daß der Stromverbrauch bei einem FGPA sehr gering ist. Darum hat der MIST, auf den ich mich ausdrücklich bezog, ja auch nicht mal einen Lüfter.