SID nachbauen

Es gibt 233 Antworten in diesem Thema, welches 54.700 mal aufgerufen wurde. Der letzte Beitrag (10. Juli 2017 um 13:55) ist von MGR3SA.

  • Ich habe mir mal ein paar Posts durch gelesen (nicht alle) und wollte nur mal anmerken, dass die PSoC 5LP Serie von Cypress einige sehr nützliche Eigenschaften für Audio-Zeug mit bringt:


    Toller Chip! Damit alleine könnte man wohl ein C64-Cartridge bauen (könnte man ziemlich kurz bauen, würde kaum aus dem Expansionsport herausschauen), mit USB-Anbindung an den PC, Sampler, 6850 kompatiblem MIDI-in/out, eingebautem SD2IEC und kann nebenbei wohl noch ein oder zwei SIDs emulieren :)

  • In der Bitte melde dich an, um diesen Link zu sehen." ist der SID drin.
    Weiß von Euch jemand worauf dieser basiert, bzw. ob die Filter da auch gehen?


    Filter sind nicht drin, es wird nur der "digitale" Teil des SID implementiert.

    Ich hatte aus verschiedenen Quellen (z.B. ReSID) den "analogen" bzw. Filterteil
    in eine Skizze übertragen. Stimmt der so?


  • Filter sind nicht drin, es wird nur der "digitale" Teil des SID implementiert.

    Ich hatte aus verschiedenen Quellen (z.B. ReSID) den "analogen" bzw. Filterteil
    in eine Skizze übertragen. Stimmt der so?

    Das sieht ziemlich ähnlich aus zu dem, was auf Bitte melde dich an, um diesen Link zu sehen. steht (Abschnitt "Distortion theory and practice").

    edit: Was natürlich nicht überraschend wäre, wenn das auch zu Deinen Quellen gehört ;)


  • Toller Chip! Damit alleine könnte man wohl ein C64-Cartridge bauen (könnte man ziemlich kurz bauen, würde kaum aus dem Expansionsport herausschauen), mit USB-Anbindung an den PC, Sampler, 6850 kompatiblem MIDI-in/out, eingebautem SD2IEC und kann nebenbei wohl noch ein oder zwei SIDs emulieren :)

    Viele Komponenten werden direkt mit der Entwicklungsumgebung mitgeliefert. MIDI wird zB. über USB und direkt per Komponente eingebunden. Der Vorteil ist, dass man kaum bis keine CPU-Zeit verbraucht um die Komponenten zu steuern. Dazu kommen dann auch noch Speicher-interface Komponenten usw. Alles schon tolles Zeug ABER... man muss doch schon recht tief in die Materie einsteigen, wenn man alles auf einmal haben will. Die Ressourcen werden leider sehr schnell knapp. Die ersten Gehversuche bringen schnelle Ergebnisse aber sobald man dann die EMIF-Komponente (Ram Anbindung) + EMFILE-Komponente (SD-Karte mit FAT32) + DDS + Midi eingebunden hat stößt man an Grenzen, wenn man nicht optimiert.

    Da ich derzeit wieder ein neues Spielzeug für meinen Apple II habe (Carte Blanche 2.0) komme ich in nächster Zeit eher nicht dazu weitere Experimente mit dem PSOC zu machen. Die analogen Komponenten machen aber schon Spass und einen 2-pole VCF hat man mit 2 externen Kondensatoren auch schnell gebaut. Ich könnte mir vorstellen, dass der SID Filter sogar analog in dem PSOC abbildbar ist. Mit den Analogen programmierbaren Blöcken habe ich mich aber noch nicht wirklich beschäftigt. Ich weiss soweit nur, dass man komplexe Verstärkerschaltungen mit Widerständen und Kondensatoren ohne externe Komponenten realisieren kann. Man muss aber letztlich dann doch recht tief in die Hardwarearchitektur einsteigen und das ist nichts für mal zwischendurch. Wie schon gesagt: man bekommt sehr schnell coole Basteleien hin, die sonst Löterei erfordern. Für $10 (ca. 10€+Versand in Europa) ist das PSOC 5LP Kit sicherlich schon eine tolle Sache.

    -Jonas

  • Mit dem Vorgängerchip PSoC 5 habe ich Bitte melde dich an, um diesen Link zu sehen.. Kam damit sogar in die Bitte melde dich an, um diesen Link zu sehen., habe aber nicht gewonnen, wohl weil es aussieht wie Hund, bin kein Mechaniker, und auch noch einiges fehlt, aber daher kenne ich mich schon etwas mit den Chips und der Umgebung aus. Den konnte man aber noch nicht in Verilog programmieren, war noch etwas eingeschränkter.

  • Ich habe mal den Filter in einen Bitte melde dich an, um diesen Link zu sehen.
    eingegeben, einfach den Text importieren. Die Werte für Widerstände und
    Kondensatoren sind willkürlich, können aber beliebig editiert werden. Man
    sieht aber schonmal die grobe Filterfunktion.

    Weiss hier jemand, wie der Filter-Resonator aufgebaut ist?

  • ich denke am schwierigsten ist die filter distortion zu erzeugen, resid-fp war da schon ziemlich gut drauf, viel fehlt da nicht. und am monitor speaker klingt sowieso nochmal alles ein wenig anders, es schliesst ja nicht jeder seinen sid an die stereo an... ich würde einfach die (gut funktionierenden) swinsid oszillatoren mit einem analogen multibandfilter kombinieren, das man soweit frisiert das es die meisten 6581 eigenheiten reproduziert, evtl sogar mit einstellbarer response kurve (so kann jeder seinen persönlichen sound den er vom 6581 kennt einstellen) . sowas wie der 6581 filter laut datenblatt idealerweise sein sollte kombiniert mit allen "gut" klingenden bugs die das teil so hat. am 8580 wäre das ganze sogar noch etwas einfacher hinsichtlich der featurebugs. es muss doch möglich sein den filter diskret aufzubauen, schätzungsweise wurden beim moog ladder filter anleihen genommen? wie sieht es denn mit FPAA chips aus (ist einer von den bereits gennanten gar so ein teil?), mir wurde gesagt die technologie sollte die zukunft des analogitalen sounds sein, leider hat selten ein hersteller den mut die plattform mal vernünftig zu nutzen.

  • Wie ist eigentlich der im Chameleon emulierte SID gemacht? Soweit ich weiss hat der C64-DTV-SID keine Filter, sind im Chameleon Filter enthalten? Wenn ja, sind diese einfach digital nachgebildet?

    - neue Spiele für den C64 -
    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.Bitte melde dich an, um diesen Link zu sehen.

  • Die Filter werden emuliert. Oder wie das Wiki sagt:

    Zitat

    SID emulation with filters (Two SIDs are emulated with selectable filter characteristics and base address of 2nd SID).


    Fertig ist die SID emu allerdings noch nicht.

    Der alleinige Zweck dieses Beitrags ist es meinen Counter zu inkrementieren. Jeglicher Sachbezug dient ausschließlich der Dekoration.

    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 habe das CY8CKIT-059 PSoC 5LP Prototyping Kit jetzt hier und mal ausprobiert. Man kann tatsächlich Verilog verwenden, aber z.B. folgender Code:

    also zwei 8 Bit Eingänge addiert und auf einen 9 Bit Ausgang rausgegeben, braucht schon 17.71% Macrocells. Außerdem habe ich keine Möglichkeit gefunden, das RAM des ARM-Prozessors von Verilog aus anzusprechen, wie man es z.B. vom Zynq-Chip gewohnt ist (der allerdings auch ein mehrfaches kostet). Für einfache Dinge, wie einen UART oder zusätzlichen PWM-Ausgang, reicht das wohl aus, aber damit kann man eine einfache Implementierung eines C64-Flash-Cartridges vergessen.

    Ggf. ist der ARM-Core schnell genug, um die Signale am Expansionsport auszuwerten und Werte zurückzugeben, aber das ist immer so eine Sache mit solchen komplexen CPUs. Wenn gerade der Cache leer ist oder ein DMA-Zugriff wo läuft und dann die Interrupt-Latenz zu hoch wird, kann das leicht daneben gehen bei den 1 MHz mit noch höherer Auflösung. Das ist der Vorteil von kleineren AVRs, die sind berechenbarer vom IO-Timing.

    Ich denke für eine 100% SID-Emulation braucht man daher auch einen größeren FPGA. Wenn man es teilweise in Software implementiert, dann gibt es Probleme mit der Synchronisierung, da der simulierte Takt nicht mit dem externen Takt übereinstimmt und bei bestimmten Aktionen die Software wahrscheinlich eine höherere Latenz hat, als bei einer FPGA-Implementierung.

    Das Cypress Kit ist aber immer noch für andere Dinge interessant. Ich habe eben mal das CapSense-Modul ausprobiert, mit zwei Generic-Kanälen. Da kann man mit nur zwei Drähten ein Theremin mit implementieren. Auflösung und Empfindlichkeit (geht nur sehr nahe am Draht) sind allerdings nicht so gut. Da sollte man dann doch noch ein paar externe Bauteile spendieren, um einen vernünftigen Oszillator zu bauen. Aber vielleicht geht das mit den internen OpAmps usw. ja auch nur mit ein paar passiven externen Bauteilen?

  • Ich habe heute mal ein wenig selbst herum gespielt.

    Ich konnte 4 von den 8b+8b->9b Komponenten und zusätzlich 2 9b+9b->10b Komponenten in einem Projekt kompilieren, ohne dass es Fehler gab oder die UDB ausgereizt wären.
    Die Komponenten sind miteinander verschaltet und liegen sowohl auf externen Ein- als auch Ausgängen. (24 input -> 20 output)

    Ich bin mir nun nicht ganz sicher, wie die Optimierung von statten läuft. Durch entsprechendes verschalten der ein und Ausgänge sollte es kaum möglich sein die Therme zu reduzieren, wodurch sich ergibt, dass eine extrapolation (17,71% für eine der Komponenten = weniger als 6 Komponenten insgesamt) nicht korrekt ist.

    Es wurden insges. 29,17% Macrocells und 17,91% der Pterms verwendet... das bedeutet, dass ich noch sehr viele dieser Komponenten implementieren kann.
    ----

    Wenn man nun eine Multiplikation realisiert, dann ergibt sich für eine 8b*8b->16b Komponente:
    75% Macrocells und 50,26% Pterms
    und für zwei dieser Komponenten:
    116,67% Macrocells und 74,74 Pterms (nicht realisierbar ... aber bei weitem nicht das doppelte!)
    und für drei;
    158,33% Macrocells und 91,41% Pterms

    Du musst zudem bedenken, dass man neben den UDB auch die Datapath und DMA Komponenten hat. Dies ermöglichen zum Teil sehr beeindruckende Konstruktionen.
    Ich konnte selbst fest stellen, dass eine Komponente für sich genommen oftmals scheinbar große Teile der verfügbaren Ressourcen verbraucht. Jedoch war es möglich noch sehr viele weitere Komponenten einbauen, bevor ich an die Grenze des Chips gekommen bin. Das liegt wohl daran, dass die Cypress Implementierung der CPLD Logik auf einer komplexeren Architektur basiert als die von Xilinx oder Altera und eine 'Mehrfachnutzung' der Macrocells und Pterms erlaubt. Besonders Altera versucht möglichst viele aber dafür einfache Logikblöcke in seinen Produkten zu realisieren. Dies führt vor allem zu einer besseren Berechenbarkeit der nötigen Ressourcen.

    -Jonas

  • Das liegt wohl daran, dass die Cypress Implementierung der CPLD Logik auf einer komplexeren Architektur basiert als die von Xilinx oder Altera und eine 'Mehrfachnutzung' der Macrocells und Pterms erlaubt. Besonders Altera versucht möglichst viele aber dafür einfache Logikblöcke in seinen Produkten zu realisieren. Dies führt vor allem zu einer besseren Berechenbarkeit der nötigen Ressourcen.


    Ich bin zwar noch nicht dazu gekommen, mal irgendwelchen Code für einen PSoC zu bauen, aber ich glaube man sollte auf jeden Fall mal den Abschnitt zu den UDBs in der Anleitung genauer lesen - die Dinger sind schon sehr anders als ein typischer FPGA-Slice bei Xilinx/Altera/Lattice.

    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 bin zwar noch nicht dazu gekommen, mal irgendwelchen Code für einen PSoC zu bauen, aber ich glaube man sollte auf jeden Fall mal den Abschnitt zu den UDBs in der Anleitung genauer lesen - die Dinger sind schon sehr anders als ein typischer FPGA-Slice bei Xilinx/Altera/Lattice.


    Leider, wie ich finde. Aber ich schätze, dass Cypress sich dabei etwas gedacht hat oder es wegen der Implementierung von DMA/Datapath nicht anders ging. Mir wäre es auch lieber wenn ich ein wenig besser vorher sehen könnte, wann mir die Makrozellen ausgehen. Bisher habe ich auch bei komplexeren Projekten aber kaum mehr als 50% der UDB Ressourcen verbraucht.

    -Jonas

  • Datapath sieht interessant aus. Wird in AN82156 auf nur 115 Seiten beschrieben, teilweise mit Beispielen über einige Seiten, die in 50 einfach nachzuvollziehenden Schritten demonstriert werden :drunk:

    Mag sein, daß man damit interessante Dinge hinbekommt, aber warum hat Cypress es so umständlich gemacht? Altera, Lattice und Xilinx demonstrieren doch, daß eine einfache Struktur recht leistungsfähige Chips erlaubt. Gib mir 5000 "normale" LEs, z.B. ein Lattice MachXO3 FPGA für 5 Euro, der auch noch 92 kbit internes SRAM hat, pack noch eine Wald-und-Wiesen CPU für 2 Euro mit USB dazu (z.B. C8051F327 von Silicon Labs), damit ich das nicht in VHDL selber programmieren muß, und schon kann kann man ein Cartridge bauen, womit man Anwendungen vom PC aus über USB zum C64 schicken kann (wie ich mit meinem CrazyCartridge-Prototyp mit ähnlichen Bauteilen demonstriert habe) und was zusätzlich noch einen zweiten SID in einem IO-Bereich zur Verfügung stellt. Geht mit dem 10 Euro teuren Cypress PSoC 5 Chip nicht so einfach (die machen bestimmt Verlust beim Verkauf des Kits für den Preis, da der Microcontroller alleine schon teurer ist bei Digikey als Einzelstück). Außerdem mag ich Verilog nicht. Bei allen anderen CPLD/FPGA-Herstellern die ich kenne, konnte ich bisher zwischen Verilog und VHDL selber wählen.

    So, genug gemeckert :) Denn davon unabhängig sind die PSoC 5 Chips sehr interessant für Anwendungen, die die analogen Elemente brauchen können, und die CapSense-Eingänge, damit lassen sich dann sehr kompakte und kostengünstige Schaltungen bauen, auch weil die Entwicklung einfach ist. Denn die IDE ist eine der am einfachsten zu bedienende, verglichen mit ähnlichen komplexen SoC-Systemen, wie z.B. die Altera NIOS-IDE, die ziemlich umständlich und fehleranfällig ist und natürlich auch keine analogen Bausteine bietet. Ist eben nur für die SID-Anwendung ungeeignet, wenn das Ziel eine 100% Emulation ist.


  • Ich bin mir nun nicht ganz sicher, wie die Optimierung von statten läuft. Durch entsprechendes verschalten der ein und Ausgänge sollte es kaum möglich sein die Therme zu reduzieren, wodurch sich ergibt, dass eine extrapolation (17,71% für eine der Komponenten = weniger als 6 Komponenten insgesamt) nicht korrekt ist.

    Es wurden insges. 29,17% Macrocells und 17,91% der Pterms verwendet... das bedeutet, dass ich noch sehr viele dieser Komponenten implementieren kann.

    Ok, das ist schonmal gut. Einen SID bekommt man da zwar noch nicht rein, aber vielleicht kann man den ReSID ja ausreichend gut mit dem C64-Takt synchronisieren.

    Um ein EPROM zu simulieren könnte man vielleicht eine Kombination aus PLD und CPU verwenden. Ich hatte mal Bitte melde dich an, um diesen Link zu sehen. bei eingestecktem Kerberos Cartridge gemacht und denke es reicht aus, wenn man bei Interrupt auf ROML nach maximal 150 ns ein Datenwort für die Adresse rausgeben kann, was auch die Geschwindigkeit von alten EPROMs ist, vielleicht hat man auch noch etwas mehr Zeit. Sehr wichtig ist nur, wenn der Takt auf Low geht, dann die Adressausgabe möglichst schnell zu deaktivieren, damit man nicht dem VIC-Zugriff in die Quere kommt. Man kann die CPU mit 80 MHz laufen lassen, hätte dann also 12 Zyklen Zeit. Bei dem verwendeten Cortex M3 ist die Interrupt-Latenz ebenfalls 12 Zyklen. Das könnte also sogar knapp hinkommen. Das automatische Deaktivieren der Ausgabetreiber bei fallender Taktflanke könnte man dann in Verilog implementieren, oder mit den schon vorhanden Logikelementen, sodaß das blitzschnell geht.

    Wenn der C64 schreiben will, ist das wesentlich unkritischer. Kann auch per Verilog-Komponente cachen und dann einen Interrupt auslösen, und die CPU hat dann ewig Zeit, sich das abzuholen.

    Habe aktuell keine Zeit das auszuprobieren, aber das PSoC-Kit passt in ein normales Cartridge Gehäuse (mit abgeschnittenem Programmieradapter). Dann braucht man nur noch eine Trägerplatine und hätte dann für weniger als 20 Euro insgesamt ein C64-Cartridge mit Gehäuse, mit dem man Programme vom PC per USB an den C64 übertragen kann und was auch noch die ganzen PSoC-Features wie ADC/DAC usw. bietet.

  • dumme Frage: wieso kann man den SID ganz einfach nicht so nachbauen, wie ihn commodore damals gebaut hat ? sind die datenblätter und konstruktionspläne nicht irgendwo erhältlich ?? bzw. wurden die nie offengelegt ?? das ding wurde doch mal in serie gefertigt und war doch nicht eine einzelanfertigung ?!

  • Auch wenn man alle Originalunterlagen noch hätte, kostet es schon etwas, einen Chip herstellen zu lassen. Du kannst mit so ca. 1 Millionen Dollar rechnen, wenn es ein einfacher Chip ist: Bitte melde dich an, um diesen Link zu sehen.. Kommen dann noch die Produktionskosten pro Chip hinzu. Wenn du nur wenige Chips produzieren lässt (weniger als 10.000), dann kann alleine das bonden (verdrahten) 50 Dollar pro Chip kosten. Also falls du 1 Millionen Leute findest, die einen SID haben möchten, könnte man es bestimmt wirtschaflich herstellen (weniger teuer als was man für einen original SID bei eBay zahlt).

  • Zitat

    dumme Frage: wieso kann man den SID ganz einfach nicht so nachbauen, wie ihn commodore damals gebaut hat ? sind die datenblätter und konstruktionspläne nicht irgendwo erhältlich ?? bzw. wurden die nie offengelegt ?? das ding wurde doch mal in serie gefertigt und war doch nicht eine einzelanfertigung ?!

    Das Hauptproblem ist, dass es für die damals verwendeten HMOS- und NMOS-Prozesse keine Fertigungsanlagen mehr gibt, da in diesen Prozessen so nichts mehr gefertigt wird. In CMOS kann man den SID aber nicht mal eben so produzieren, dafür müsste man ihn neu entwickeln und er würde auch wieder anders klingen, da der analoge Teil stark material- und prozessabhängige Eigenschaften hat.

    Um einen SID fertigen zu können muss man also neben den alten Unterlagen als erstes mal eine Fertigungsstraße für den alten Prozess bauen, dann braucht man die entsprechenden Masken, dann muss die Produktionsstraße eingefahren werden, was erstmal einige tausend Chips Ausschuß bedeutet und zu guter Letzt braucht man Abnehmer. Wir reden von einem Bedarf von max. ein paar tausend Stück, wenn überhaupt. Wenn Du das hochrechnest, kommt am Ende mindestens ein satter vierstelliger Betrag pro produziertem SID raus. Dafür find dann mal Käufer...

  • danke euch allen für die antworten. ich glaub ich habs kapiert . es ist völlig unmöglich ihn nachzubauen. gut glück bei euerer mission und hoffe dass ihr bald eine richtig guten nachfolger entwickelt habt