neues Projekt: FPGASID

  • neues Projekt: FPGASID

    Hallo Leute!

    hier wird ja nun wirklich konstant über die diversen Ansätze diskutiert den SID zu emulieren oder gar nachzubauen. Einige Lösungen sind schon recht weit gediehen, andere mehr so naja. Jedenfalls hat mich das Thema zunehmend fasziniert und ich habe vor ca einem Jahr beschlossen, selbst einen Versuch zu wagen. Ich nenne mein Projekt FPGASID und das sagt eigentlich schon alles. Es ist der Nachbau eines kompletten SID in einem FPGA. Ich konnte Anfang Oktober meinen Stand auf der Classic Computing präsentieren und habe viel Lob geerntet und gute Anregungen bekommen.

    Damit auch diejenigen, die nicht auf der CC15 waren, sich ein Bild davon machen können, habe ich nun eine Projekt-Homepage ins Leben gerufen:
    The FPGASID's Home
    (Leider nur auf englisch, aber Google kann das sicher auch übersetzen, wenn es einem schwerfällt das zu lesen.)

    Die Homepage wird von mir entsprechend dem Projektfortschritt weiter gepflegt. Momentan sind noch nicht so viele Inhalte online. Trotzdem freue ich mich aber natürlich über eure Kommentare, Anregungen etc.

    Viel Spaß beim Stöbern!
  • gh0st schrieb:

    Wie willst Du denn den Analog-Teil mit einen FPGA abbilden?

    Ich habe mir angesehen, wie es die resid library mit den Filtern macht (z.B. in den sourcen von VICE bzw jsidplay2). Dort wird in einem recht auswändigen Model eine spice-ähnliche Simulation berechnet. 1:1 kann man das nicht ins FPGA gießen, da viele Berechnunen per lookup table abgekürzt werden und im FPGA hiefür kein Platz ist. Ich habe schon viel damit gekämpft. Mein aktueller Ansatz besteht in einer linearen approximation der entsprechenden Tabellen. Vermutlich immer noch zu groß, da ich dafür jetzt zu viele Multiplizierer brauche, aber da kann man noch viel resource-sharing machen. Die weiteren analogen Effekte wie z.b. nichtlineare R-2R DACs habe ich mit (deutlich kleineren) lookup-tabellen abgebildet. Mixed waveforms werden ebenfalls über (frei programmierbare) Wavetables realisiert.

    Und ja, ich plane den Verilog Code zu veröffentlichen. Mir erscheint das aber erst sinnvoll, wenn die entsprechende Hardwareplatform vorhanden ist, so dass auch andere sinnvoll beitragen können. Bis dahin dauert es noch ein bisschen. Aber wie heißt es so schön: Gut Ding braucht Weile. :sleeping:
  • andi6510 schrieb:

    Hallo Leute!

    hier wird ja nun wirklich konstant über die diversen Ansätze diskutiert den SID zu emulieren oder gar nachzubauen. Einige Lösungen sind schon recht weit gediehen, andere mehr so naja. Jedenfalls hat mich das Thema zunehmend fasziniert und ich habe vor ca einem Jahr beschlossen, selbst einen Versuch zu wagen. Ich nenne mein Projekt FPGASID und das sagt eigentlich schon alles. Es ist der Nachbau eines kompletten SID in einem FPGA. Ich konnte Anfang Oktober meinen Stand auf der Classic Computing präsentieren und habe viel Lob geerntet und gute Anregungen bekommen.

    Damit auch diejenigen, die nicht auf der CC15 waren, sich ein Bild davon machen können, habe ich nun eine Projekt-Homepage ins Leben gerufen:
    The FPGASID's Home
    (Leider nur auf englisch, aber Google kann das sicher auch übersetzen, wenn es einem schwerfällt das zu lesen.)

    Die Homepage wird von mir entsprechend dem Projektfortschritt weiter gepflegt. Momentan sind noch nicht so viele Inhalte online. Trotzdem freue ich mich aber natürlich über eure Kommentare, Anregungen etc.

    Viel Spaß beim Stöbern!


    Sehr schön!

    Für eine Implementierung würde ich ein GoDIL Modul empfehlen: trenz-electronic.de/de/produkt…oards/oho-elektronik.html
    Damit kannst du dann direkt in den Sockel des SID... den VDD pin darfst du natürlich nicht mit anschließen ;)
    Preislich sind die auch nicht schlecht.

    EDIT: Hier gibt es übrigens ein Projekt, dass einen SID mit Filtern implementiert (auf basis eines GoDIL Moduls)
    github.com/hoglet67/AtomGodilVideo/tree/master/src/SID

    -Jonas
  • Also das Last-V8-Soundbeispiel klingt schonmal echt gut :thumbup:
    Finde es immer wieder cool dass es solche Projekte gibt und dass die alte Hardware in Form von Sourcecode der Nachwelt erhalten bleiben wird! Auch wenn das mit den analogen Filtern vielleicht nicht so einfach ist, aber dennoch, sehr coole Sache :thumbsup:
    SHOTGUN - 4-Player Death Match - Website / CSDb / X-Mas
    FROGS - 4-Player Frog Pond - Website / CSDb
  • andi6510 schrieb:

    Mixed waveforms werden ebenfalls über (frei programmierbare) Wavetables realisiert.

    Ist das als "werden in der Zukunft" oder "werden derzeit" gemeint? Frage deswegen, weil das beim Chameleon ja noch nicht implementiert wurde und es da wohl das Problem gibt, dass scheinbar noch keine gute "Näherungslösung" gefunden wurde. Auch hier macht reSID wohl viel mit Lookup-Tabellen, die viel Platz verbrauchen würden.
    siehe: wiki.icomp.de/wiki/Chameleon_Core_Bugs#SID_.28Emulated.29
  • spider-j schrieb:

    Ist das als "werden in der Zukunft" oder "werden derzeit" gemeint?

    Wird derzeit so gemacht. Ich verwende dazu fast das gesamte Blockram im FPGA. Dafuer gibts quasi gratis ein nettes feature naemlich frei programmierbare Wellenformen. Ich verwende die Tabellen aus der resid library wie sie im Vice Source code vorhanden sind - diese wurden laut der Kommentare aus dem wave-register von OSC3 ausgelesen. In den aktuellen jsidplay2 sourcen findet sich auch ein mathematisches Modell - inwiefern dieses mit der Realitaet uebereinstimmt wage ich derzeit nicht zu beurteilen. Zumindest ist der Einfluss der pulsewidth dort besser modeliert.

    Danke auch fuer die weiteren Infos. Einige kenne ich schon, andere waren mir noch neu. Ich werde bei Gelegenheit auf der Homepage mal eine Linksammlng anlegen.

    Den FPGA-Code mit Filtern kenne ich. Dort werden recht wenige analoge Dinge mit abgedeckt. Der Filter entspricht funktional in etwa dem, was ich momentan auch implementiert habe. Die Loesung die ich aber derzeit in der Mache habe ist deutlich naeher an der resid Implementierung. Ich hoffe nur, mir gelingt es sie ausreichend einzudampfen, damit sie auch vernuenftig ins FPGA passt.
  • spider-j schrieb:

    Ist das als "werden in der Den FPGA-Code mit Filtern kenne ich. Dort werden recht wenige analoge Dinge mit abgedeckt. Der Filter entspricht funktional in etwa dem, was ich momentan auch implementiert habe. Die Loesung die ich aber derzeit in der Mache habe ist deutlich naeher an der resid Implementierung. Ich hoffe nur, mir gelingt es sie ausreichend einzudampfen, damit sie auch vernuenftig ins FPGA passt.

    Fetteren FPGA nehmen? Oder einfach ein externes SRAM mit ein paar MB anschließen?
    So Long, and Thanks for All the Fish!
  • d020 schrieb:

    Warum eigentlich die Filter nicht analog nachbauen?

    wollte ich auch schon mal ausprobieren. Allerdings hat man dann das Problem, dass man 1 x DAC und 3 x ADC fuer die Uebergaenge zwischen der digitalen und der analogen Domain benoetigt. Das ganze soll ja auch noch halbwegs bezahlbar werden.

    gartenzwerg schrieb:

    Fetteren FPGA nehmen? Oder einfach ein externes SRAM mit ein paar MB anschließen?

    Klar mit mehr Wums im FPGA bekommt man sowas auch hin. Externes RAM wollte ich eigentlich vermeiden, weil dann der footprint auf der Platine zu gross wird - soll ja alles spaeter mal klein und kompakt werden.

    Die Wahl auf dieses doch relativ kleine FPGA ist vor allem wegen der Kosten gefallen. Fuer ein einzelnes FPGA der groesseren Vertreter zahlt man auch schnell mal $300. Das von mir verwendete 10M08 liegt derzeit bei ca $25. Immer noch recht heftig, wenn man bedenkt, dass ja auch noch einiges drumherum dazu muss, damit das Teil auch auf den C64 hoehren kann.

    Wenn ich keine Hoffnung haette, die Filter unterzubringen, wuerde ich meinen Ansatz nicht weiter verfolgen. Momentan ist der Code was den Platzbedarf angeht noch vollkommen unoptimiert. Aber ich habe auch abgeschaetzt, dass es mit Resource sharing eigentlich klappen muesste.
  • andi6510 schrieb:

    d020 schrieb:

    Warum eigentlich die Filter nicht analog nachbauen?

    wollte ich auch schon mal ausprobieren. Allerdings hat man dann das Problem, dass man 1 x DAC und 3 x ADC fuer die Uebergaenge zwischen der digitalen und der analogen Domain benoetigt. Das ganze soll ja auch noch halbwegs bezahlbar werden.


    Die D/A-Wandler im SID haben einen entscheidenden Fehler: Das R-2R netzwerk ist am untersten Bit nicht richtig terminiert.
    (Und sind beim 6581 wohl eher R-1,8R-Netzwerke). Daher würde ein echter D/A-Wandler mit seiner - im Vergleich - perfekten
    Linearität schonmal anders klingen.

    Warum also nicht auch die D/A-Wandler als R-2R Netzwerk extern - mit den gleichen Fehlern - implementieren?


    Ansonsten: YASE - Yet another SID emulation:

    fpgaarcade.com/punbb/viewtopic.php?id=256


    Hier noch die Sammlung von Dag und Zero-X:

    oms.wmhost.com/misc/

  • androSID schrieb:

    Warum also nicht auch die D/A-Wandler als R-2R Netzwerk extern - mit den gleichen Fehlern - implementieren?

    Das würde sicher gehen. Es müsste eigentlich der komplette analoge Teil extern in analoger Hardware aufgebaut werden. Also die komplette Schaltmatrix inkl Filtern und Volume control etc. Da sehe ich vor allem die Varaktoren in den Filtern als Problem. Also die per Spannung veränderlichen Widerstände welche im SID mit N-Kanal Mosfets realisiert werden. Die haben eine extrem nichtlineare Kennlinie und müssten möglichst genau nachgebaut werden. Da die Werte der FETs im SID nicht genau bekannt sind, dürfte das schwierig werden.
    Ich sage nicht, das das nicht machbar wäre, aber das ist einfach ein anderes Projekt als das, was ich mit FPGASID erreichen will.
  • andi6510 schrieb:

    androSID schrieb:

    Warum also nicht auch die D/A-Wandler als R-2R Netzwerk extern - mit den gleichen Fehlern - implementieren?
    Da die Werte der FETs im SID nicht genau bekannt sind, dürfte das schwierig werden.


    Genau an diesem Punkt würde ich ansetzen:

    Eine ausreichende Finanzierung vorausgesetzt (Kickstarter o.ä.) würde ich einen spezialisierten Dienstleister beauftragen, der einige SIDs decapped
    und das DIE mit probes im Analog-Teil ausstattet, sodaß diese Kennlinien ein für allemal rausgemessen werden können.

    Wenn man das noch mit einer ausreichenden Menge SIDs macht, um die Herkunft der Streuung beim Filter zu analysieren, wäre das
    Thema "Perfekte SID Emulation" endlich mal abschliessend beendet.

    Ich habe das vor einiger Zeit mal mit Dag L. angesprochen... letztendlich dürfte es ein teurer Spaß werden und nur "aus Spaß an der Freude"
    wird keiner von uns so viel Geld (alleine) investieren.

  • androSID schrieb:

    letztendlich dürfte es ein teurer Spaß werden und nur "aus Spaß an der Freude" wird keiner von uns so viel Geld (alleine) investieren.

    Mal ganz doof als interessierter, aber ABSOLUTER Laie naivst gefragt: Ist ansatzweise zu beziffern, von welcher Größenordnung hier auszugehen ist?
    Those who surrender freedom for security will not have, nor do they deserve, either one.
  • stoerte schrieb:

    androSID schrieb:

    letztendlich dürfte es ein teurer Spaß werden und nur "aus Spaß an der Freude" wird keiner von uns so viel Geld (alleine) investieren.

    Mal ganz doof als interessierter, aber ABSOLUTER Laie naivst gefragt: Ist ansatzweise zu beziffern, von welcher Größenordnung hier auszugehen ist?


    Bisher wissen wir es nicht, da wir keine "offiziellen" Angebote eingeholt haben.

    Aber: Ich habe gerade eben nochmal mit einem Kollegen gesprochen, der im Januar den Arbeitsplatz wechseln wird.

    Der Clou daran: Er wird Ende Dezember zu seiner "alten" Firma wechseln - und die fertigt und bonded Chips z.T. selber! :thumbsup: ;)

    Wir haben vereinbart im Januar nochmal miteinander zu sprechen - und er wird mir dann Kontakte geben,
    die mir/uns weiterhelfen könnten. Er wird dann direkt denjenigen fragen, der dort die Fähigkeiten dafür hat und auch Firmen
    mit den Kenntnissen an der Hand hat.

    Vieleicht lässt sich ja auch was auf dem "kleinen Dienstweg" erreichen. Wobei das wohl wegen des aufwendigen Equipments
    wohl nicht ganz einfach sein soll bzw. durch den Arbeitgeber u.U. nicht erlaubt wird.

    Abwarten.... ich bleibe dran; möchte aber gleich betonen das ich nichts versprechen kann!

    Zum Preis:
    Seine erste Schätzung war eine Größenordnung von $5k-$10k. Ich selbst bin bisher von $15-$20k ausgegangen
    für ~10 SIDs mit Messprobes. Sollte eine Instrumentierung mit Probes "unter der Hand" machbar sein, wäre es bestimmt billiger!

    Dann würde nur noch jemand fehlen, der das Equipment zum messen und die Zeit dafür hat. Ob Dag da nochmal aktiv werden
    kann/will weiß ich nicht. Das Thema reSID ist ja etwas eingeschlafen. Aber ich werde Ihn natürlich Fragen, sobald ich mehr
    als nur vage Infos habe.