Hallo, ich bin dabei mir einen Audio-Prozessor in meinem Spartan3-FPGA zu implementieren. Im ersten Schuß hab ich mal eine State-Machine gebaut die einen Oszillator und einen IIR-Biquad enthält (quasi Grundgerüst für einen Synthesizer). Mit der Simulation bin ich soweit zufrieden, Oszi funtz, Biquad funzt). Allerdings weiß ich nicht wie ich das dingen schneller bekomme. Laut ISE liegt die maximale Geschwindigkeit bei 98Mhz. Und das finde ich doch etwas lahm (zumal es ja nur der erste Schuß ist, und im zweiten Schuß ein Programm per Block-Ram abgearbeitet werden soll, also keine feste State-Machine). Mir ist aufgefallen das sobald ich einen 32x32Bit multiplizierer verwende das teil sofort elend langsam wird. Wenn ich nur den Oszillator verwende komme ich laut ISE weit über 500MHz, bei verwendung eines einzelnen 32x32 Bit Multiplizierers sackt die geschwindigkeit direkt auf unter 150MHz. Ich muß dazu sagen das ich von den Timing-Constraints die Finger bisher von gelassen habe, weil ich an die Timings keine exakten Anforderungen stelle. Ich überlasse es dem ISE-Tool die geschwindigkeit rauszuholen die maximal drin ist. Die eigentliche Frage ist für mich nun, wie bekomme ich die Multiplikation schneller ? Ich hab mal gehört das wenn man eine geclockte Multiplikation (Komponente ?!) verwendet diese deutlich schneller wird. Ich möchte im moment noch auf pipelining-techniken verzichten, da ich mit der ganzen DSP'erei noch nicht soweit bin. Falls es eine Komponente gäbe, wie wäre diese anzusprechen wenn ich eine 32x32Bit Signed (!) Multiplikation realisieren möchte ? Schonmal vielen Dank vorab und Gruß Rene PS. Das Design ist etwas "konservativ" aber dafür recht einfach zu verstehen denke ich. Für Kritik und Verbesserungsvorschläge am Design bin ich immer offen (ich weiß aber schon das ich 2 Multiplikationen gleichzeitig machen kann *gg)
Hallo TheMason Hast du deinen Code mit Tabulatoren geschrieben? Als ich ihn mit ConTEXT geöffnet habe, sieht er sehr unübersichtlich aus. Ich schreibe lieber mit Leerzeichen, denn die können besser von verschiedenen Editoren interpretiert werden. MfG Holger
Hallo Holger, ich habs mir angewöhnt mit tabs zu arbeiten. wenn man Tabsize = 2 nimmt siehts recht schick und übersichtlich aus :-)) Ich weiß geht auch anders, aber hat sich bei mir so eingbürgert (und trotzdem fluche ich jedesmal von vorne wenn ich modelsim aufmache *gg) hast du denn evtl. schon eine idee ? gruß rene
Hmm, ohne dein Design jetzt ausführlich zu studieren und als Schnellschuss... ;-) Versuche doch mal, die Xilinx Makros zu nutzen. Das sind 18bit Hardware-Multiplizierer und man kann sie mit dem Coregen einfach zu breiteren Multiplizierern verbinden uns sich Wrapper erstellen lassen. Die Makros sind um längen schneller, als komplett in Logik erstellte Multiplizierer!
Hallo Christian, wie kann man denn diese Makros nutzen ? (vor allem 32 bit signed, ohne jetzt 4 Makros mit logik zu einem 32x32 Bit signed-Multiplizierer zu verdröseln) Der Coregen sagt mir ich kann nur die DCMs nutzen. (hab nur die ISE Version die bei meinem Spartan3 Starter-Kit dabei war,und die unterstützt wohl anscheinend nicht alles) Weiterhin ist mir aufgefallen das der ISE mir schon auflistet das er doch für eine 32x32Bit Multiplikation 4 18x18Bit Multiplizierer braucht. Deswegen bin ich ja auch so stutzig geworden das das design so lahm ist. Gruß Rene
@The Mason Dein Code muss zwangsläufig langsam sein. Habe 5 Multiplikationen gesehen, deren Ergebnisse alle in <siTMP_Var64> abgelegt werden. Das produziert 2 riesige Multiplexer vor dem Multiplizierer, jeweils max. 5x32-zu-1x32. Dazu kommt noch die Statemachine mit den vielen States, die auch noch ausdekodiert werden und da mit reinkommen. Also zu viel Kombinatorik, zu wenig Pipelining. Ideal wäre: Je 1 32bit-Register vor den Eingängen des Multipliers, 1 Register am Ausgang. Das könnte aber zur Folge haben, dass Du mehr Takte brauchst, um zum Ergebnis zu kommen oder dass es beim IIR-Filter im Rückkoppelzweig gar nicht geht, wenn man pro Takt 1 Sample haben möchte. Ein 32bit Multiplier, signed mit 2 variablen Faktoren ist eben kein Addierer. Wenn 1 Faktor konstant wäre, könnte man besser optimieren. Brauchst Du bei dem Audio-Prozessor mehr als 100 MHz für das Filter?
@TheMason im ersten Schritt würde ich versuchen, mal die ganzen Zeilen siTMP_Var64 <= (siOscOutput * siBQ1CofB1); ... zu ersetzen durch (Bsp.) : faktor_1 <= siOscOutput; -- faktor_1 = 32 bit Register faktor_2 <= siBQ1CofB1; -- faktor_1 = 32 bit Register Und den Multiplier dann außerhalb der FSM machen: result <= faktor_1 * faktor 2; Überblicke jetzt nicht so schnell, ob das so geht, aber das wäre ein erster Ansatz für mehr "Durchsatz"
hallo fpga user, habe deinen beitrag nur kurz überflogen, werde gleich noch kurz was dazu schreiben, bin aber eben erst noch unterwegs. danke schonmal für den hinweis. gruß rene
hallo rene, hab nochmal genauer geschaut, das Problem ist natürlich, dass die Ergebnisse des Multis wieder für andere Additionen o.ä. benötigt werden, also Du wirst nicht drumrum kommen, die einzelnen Schritte und Zwischenergebnisse mal sauber nacheinander aufzuschreiben. Dann müsste man prüfen, wann welches Ergebnis frühestens gebraucht wird. Könnte auf einen Kompromiss hinauslaufen: höhere Taktfrequenz aber dafür mehr Takte bis zum Ergebnis oder umgedreht.
Hallo FPGA User, erstmal danke für die Infos. Das mit der Multiplikation ausserhalb der FSM werd ich mal ausprobieren. Dadurch das ich die ganzen States ja eh nur sequentiell abarbeite dürfte es gehen. Zu deiner Frage wegen den 100MHz. Mir geht es darum das ich im 2. Schuß einen programmierbaren Audio-Prozessor implementieren will. Das Grundgerüst ist schon fertig (kann ich gerne mal reinstellen). Dort wird statt fester Register Block-Ram verwendet. Der ganze Prozessor ist so organisiert (oder soll so organisiert sein) das man mit jedem 32 Bit Programm-Wort (Block-Ram) ein Modul aufruft (ein Modul besteht dann aus x-States innerhalb einer großen State-Machine). Sprich 5 Programmwörter ergeben das was ich momentan mit der festen Statemachine mache (Oszillator rechnen, Audio-Wert im Block-Ram verschieben , Biquad durchrechnen, Wert Ausgeben, Ende). Mir ist es im Prinzip egal wieviele Takt-Zyklen pro "Modul" benötigt werden (ich brauche eh schon 2-3 Zyklen nur um ein Datenwort aus dem Block-Ram zu holen oder zu speichern). Es geht sich mir einzig und allein um die Geschwindigkeit mit der die ganze Geschichte laufen kann. Wenn ich 500 MHz erreiche (ok, ist etwas utopisch ...) habe ich ca. 10000 Takte pro Sample (bei 48KHz) und dann interessiert es mich nicht mehr viel wieviel ich für ein Modul benötige (wer braucht schon 100 Biquads *gg). Wie gesagt das ist der 2. Schuß. Ich möchte nicht einen reinen DSP implementieren, da mir dann das implementieren der einzelnen Module (Oszillator, Biquad, Clipping, usw.) zu aufwendig ist bzw. mein Block-Ram zu schnell verbraucht ist, und ich noch andere Sachen in den FPGA drücken wollte (z.B. VGA-Text Interface). Zu dem was du zu dem Biquad gesagt hast : Ich glaube es lässt sich nicht wesentlich anders realisieren, da es eh auf 5 multiplikationen, 5 additionen und 4 verschiebe operationen hinausläuft (wobei erst die rechnerei und dann die schieberei kommen muß) mir ist klar das man da noch parallelisieren kann (2 multiplikationen gleichzeitig), aber es braucht auch mehr multiplizierer, und ich wollte nicht alle ressourcen dafür verballern. vielen dank für die infos und für anregung und weitere infos danke ich schonmal im voraus schönen gruß rene
hallo fpga-user, ich habs mal probiert die multiplikation ausserhalb der fsm, aber noch innherhalb des prozesses zu legen. es brachte zumindest einen teilerfolg. statt 98 mhz habe ich jetzt 123 mhz. aber der weisheit letzter schluß ist es wohl nicht. mir ist noch was aufgefallen : in dem beispiel-code ist mal ein einfacher oszillator implementiert. synthetisiere ich den mit multiplikation komme ich auf 270 mhz. ohne schafft der dann 520 mhz. kann es sein das die multiplizierer nicht mehr als 270 mhz machen ? wäre das evtl der grund warum es nicht schneller geht (vor allem wenn man 32x32 bit macht bei denen ja 4 stück gebraucht werden) ? schönen gruß rene
hallo rene, klar sind die Multiplizierer das langsamste Teil in Deinem Design, logisch, es ist ja auch die komplizierteste Rechen- operation von denen die Du verwendest. Wenn 4 Multis 18x18 zusammengebaut werden, um 32x32 zu erhalten, wirds natürlich noch langsamer. Wenn Du für die 2 Faktoren und für das Ergebnis jeweils 1 Register spendierst, dann wird die max. Taktfrequenz nur noch von der Geschwindigkeit des Multiplizierers abhängen. Die kannst Du dann nur noch steigern, wenn Du ein schnelleres Device nimmst oder die Bitbreiten noch optimieren kannst. Es wäre auch einen Versuch wert, ein Timing-Constraint speziell für den Multiplizierer zu setzen. Dann siehst Du recht schnell, was die Synthese noch machen kann. Der einzige Ausweg ist dann noch, mehrere Multis parallel laufen zu lassen, auf Kosten des Stromverbrauchs und der Ressourcen.
Hallo fpga-user, erstmal danke für die infos. hab schon fast sowas befürchtet. na ja. da werd ich wohl mit 123 mhz auskommen müssen. sind immerhin 2700 takte pro sample. hoffe mal das die große state-machine für den 2. schuß mir dabei keinen strich durch die rechnung macht und das dingen noch langsamer wird. werde aber wohl 2 32x32 bit multis verwenden um die biquads schneller zu machen. die restlichen multis werden wohl für andere aufgaben herhalten müssen (wenn denn am schluß überhaupt noch was in den fpga reinpasst *gg) jedenfalls bin ich mit dem biquad echt sehr zufrieden. die simulation sieht super aus (richtig schön mit runden ecken und überschwingen, falls gewollt *gg). dann dürfte mein audio-prozessor ja doch noch was geben. und falls es nicht reicht werd ich wohl nen virtex nehmen müssen (immer dieses mit "spatzen auf kanonen schießen" *ggg) jedenfalls erstmal vielen dank und einen schönen gruß rene (der sicher noch öfter fragen haben wird *gg) ps. falls jemand mit biquads, oszillatoren und synthesizern was machen möchte, fühlt euch frei meinen code zu verwenden wenn ihr ihn den brauchen könnt. :-)
Ich finde sehr interessant, was du da machst! Wie kommen bei Dir die audiodaten rein? Welche Wandler nimmst Du? Oder digital? Ich würde da auch sehr gerne mal experementieren. Habe auch schon mal fünfband Equalizer mal gemacht, hat gut funktioniert. Das ganze Ding lief bei 33 MHz (Virtex irgendwas, systembedingt) Erst wollte ich alles paralell machen, dann machte ich doch seriell... Na ja. egal. Auf jeden Fall, werde ich Dein Projekt weiterverfolgen :-) Ich denke, Spartan 3 sind sehr leistungsfähig, Virtex's sind Overkill total. Ich denke, Du solltest alles genau definieren, wie alles ablaufen soll. Erzähl mal bitte genauer über die Anbindung, Spartan 3- Starterkit habe ich hier, und auch andere Altera sachen, aber ohne Audiocodec :-( Vielleicht kann ich irgendwie helfen, oder was beitragen. Gruß Kest
Hallo Kest, erstmal danke für die Blumen :-)) Ich hab im moment noch keine echten wandler dran. ich mache das über einen vhdl-selbstgebauten 8bit-d/a-pwm mit einfachem nachgeschalteten filter *gg (man ist ja faul). audio-eingänge hab ich noch nicht. wenn ich mal soweit bin (ich hoffe doch bald *gg) werde ich codecs nehmen. sehr wahrscheinlich den TAS3004 (war es glaube ich) von ti. der hat nen ad/da wandler, nen dsp mit drin, recht wenig beschaltung und es gibt die dinger als samples. mein ziel ist es einen audio-porozessor zu bauen der quasi aus modulen besteht (oszillatoren, biquads, addierer, multiplizierer (für verstärker/abschwächung), switches, evtl rms, envelope usw.). jeder opcode im programmspeicher soll dabei ein modul-aufruf darstellen. es gibt dabei einen audio-speicher, einen daten speicher, und einen eigenen speicher für biquad-daten (damit das block-ram nicht so schnell auf ist, und evtl für spätere geschwindigkeitsoptimierungen). angesteuert wird das ganze über spi. (hab da auch schon ein paar brauchbare komponenten für). man ist dabei unabhängig vom prozessor und wenn man dann noch auf die idee kommen sollte eine sd/mmc karte zu nehmen hat man ein flexibles audio-system (sprich synthie/effektgerät/mischer/vocoder ....) das ist mein erklärtes ziel. habe auch schon wie gesagt ein grundgerüst, allerdings noch nicht simuliert und bei weitem noch nicht fertig. im moment bin ich dabei (wie oben schon erwähnt *gg) einen synthesizer zusammenzubasteln. mittlerweile hat das teil 2 oszillatoren und 2 biquads die auch soweit laufen (zumindest in der simulation). das ganze braucht 68% des spartans. muß das ganze jetzt nur noch mit meinem msp verheiraten und dann dürfte da der erste 8 bit sägezahn mit resonanz rauskommen *ggg ich weiß nicht was du im audio-bereich schon gemacht hast, aber tipps und tricks kann ich immer brauchen. können uns ja gerne mal per email unterhalten. alleine wirds wahrscheinlich noch ein weilchen dauern bis das erklärte ziel vollbracht ist *gg zum thema virtex : virtex ist zwar overkill, aber ich weiß nicht wo man günstig an größere eval-boards mit spartan3 drankommt. so ein 400'er oder 1000'er spartan3 hätte wahrscheinlich ressourcen satt (incl. vga interface und ähnlichem schnick-schnack) aber es sollte auch noch in dem rahmen von 100-150 euronen liegen. schließlich müsste man sich ja irgendwann mal eine zusatz-platine mit audio-codecs und sonstiger hardware ätzen lassen und das kostet ja auch wieder gut geld ... schönen gruß rene
Hallo! Endlich mal ein Mensch, der genau das machen möchte, was ich immer schon vor hatte! :-) Als erstes zum FPGA. Ich würde an Deiner Stelle etwas warten, bis der neuer Spartan 3E Kit von xilinx rauskommt. Der hat dann 500K, 32 MB SDRAM, Flasch, VGA, USB, Ethernet. Das reicht für viele Sachen ;-) Und soll lächerliche 149 $ kosten :-o Das gute ist, die teile sind gut erweiterbar. Man könnte eine Art Expansion-Board bauen, mit dem audio-Codec und alles andere. So ein Teil wollte ich schon immer bauen, aber mir fehlt leider die Zeit :-/ Als ich "Cameleon" gesehen hatte (kennst Du es?), da wollte ich sowas (aber besser ;-)) nachbauen. Und das ist auch mein erklärtes Ziel. Ich möchte ja nicht mit der Tür ins Haus fallen, aber lass uns doch so ein Projekt starten. Wiki einrichten (habe leider keine Ahnung, wie das geht ;-)) und so weiter. Per Mail können wir auch kommunizieren, kein Problem. Aber schön wäre, wenn jeder daran teil nehmen kann. Viel mit Audio habe ich nicht gemacht, halt einfache Sachen. Was ich noch gerne hätte, wäre ein analog synth mit digitalen elementen (oder umgekehrt). Mit VHDL beschäftige ich mich aber schon länger. Vielleicht bin ich kein Crack, aber hab' schon ein Paar (relativ) Große Projekte gemacht, und es funktioniert auch ;-) Ich schreib' mal, was ich gerne hätte: - AD/DA (egal wie Breit und kHz ... hauptsache brummt ;-)) - MIDI - CF Man könnte auch AVR oder wie auch immer für MIDI und Controlling nehmen. Oder auch alles im FPGA. Wie ich schon sagte, ein Expansion Board wäre cool: einfach zu bauen (oder herzustellen), alles drauf, was man braucht, jeder kann so ein Teil benutzen. so, was meinst Du, wollen wir es starten? :-) Vielleicht gesinnt sich der einer oder anderer mit dazu? Ach so, noch was, ein 1000er Spartan gibt es bei www.xess.com für 200$. Aber ich weis nicht, ob das sich lohnt. Balt kommt ja was von Xilinx ;-) Und die 500 kGatter unterschied machen nciht sehr viel aus. Übrigens die 500 Mhz sind wirklich sehr utopisch! Es wird schon hart sein auf 150 zu kommen. Wobei... Gruß Kest
Hallo Kest. Starke Sache :-) Mit einem Projekt können wir gerne was machen. Die Idee gefällt mir gut. Muß dir allerdings sagen das ich auch nicht immer Zeit dafür habe. Aber das interesse ist da. Also mit Wiki und solchen sachen kenn ich mich auch nicht aus. Da müsste dann noch ein dritter dazu. Die Idee mit dem Expansion Board finde ich gut. Bin auch schon am überlegen wie man das am besten hinbekommt. Vor allem kostengünstig. Das ist ja meistens der Knackpunkt. Was mir an so einem Board wichtig wäre, das man es für unterschiedliche Evaluation Kits verwenden kann. Sprich das man einen eigenen connector nimmt und über ein kurzes adapter-kabel an jedes mögliche kit (altera/xilinx...) dranstecken kann. Dann kann man es auch für spätere Kits mit anderer Belegung verwenden. Also AD/DA Wandler sollten drauf sein (mir würden 2-3 codecs reichen, also 2-3 Stereo rein/raus). Wie gesagt interessant fände ich die TAS3004 weil sich da noch einiges konfigurieren lässt. Und man hätte auch die Möglichkeit das Expansion Board standalone nutzen zu können (die DSPs von dem TAS). MIDI sollte ebenfalls nicht fehlen *gg. Allerdings sollte man vielleicht besser SD/MMC nehmen (jedenfalls bin ich ein Fan dieser kleinen schnuckeligen Karten, obwohl ich deren ansteuerung noch nicht erfolgreich hinbekommen habe, aber das ist nur ne frage der zeit). Dann braucht man nicht mit sovielen ports rumhampeln, und von der Geschwindigkeit her sollte auch noch einiges machbar sein. Aber das kann man ja noch schauen. Muß mal eben was zum Cameleon fragen : Das war doch ein effektgerät, oder ? Hab schonmal was davon gehört, weiß aber nicht mehr so genau was das kann. Also bei dem Prozessor (der dann sinnigerweise auch auf dem Expansion board drauf sein sollte) wäre ich eher für einen ARM. (z.b. LPC2106) Eigentlich aus dem Grunde weil wenn es um Koeffizientenberechnung für Filter geht kommt man ohne vertretbaren aufwand nicht um Floating-Point drumherum (speziell bei Synthesizern, wo ja alle paar ms ein oder mehrere neue koeffzientensätze berechnet werden müssen, nebst noch einigen anderen aufgaben wie controlling, sequencing, hüllkurvenberechnung, lfos, display, potis, menüs usw. usw. zu tun sind). Vor allem hat man da noch etwas reserven. Weiß allerdings nicht so recht wo man günstig an die Dinger drankommt. Im Audio-Bereich hab ich schon etwas an erfahrung gesammelt (jetzt auch nicht übermässig). Hab ein modulares Audio-System auf meinem PC als Cubase Plugin programmiert (funzt aber nicht 100% :-((). Aber da konnte ich doch schon einiges an Erfahrung sammeln. (deswegen lief der Biquad auch schon fast auf anhieb *gg) Also mit dem FPGA werd ich eh noch warten, weil ich erstmal versuchen möchte soviel wie möglich aus dem Spartan3 rauszuholen (und da steckt mit sicherheit noch ne menge drin), aber danke schonmal für die Info. Hab auch gesehen das es bei Segor einen Spartan3 400'er in lötbarem TQ144'er für ca 35 Euro gibt. Also mit dem Projekt können wir gerne machen. Wäre auch echt klasse wenn noch ein oder 2 leute dabei sind die ebenfalls etwas erfahrung haben und auch so sachen wie wiki machen könnten. schönen gruß rene
Hallo Rene, dass Du nicht immer Zeit hast, verstehe ich vollkommen. Mir geht es da auch nicht anderes. Ich hoffe, dass es mehr Leute sich dazu gesinnen und zusammen mit uns irgendwas "großes" entwickeln ;-) Tja, jetzt die "Kosten". Mir ist schon klar, dass es nicht preiswert ist. Denn, egal wie man es dreht, und dann noch FPGA selber lötet, dazu noch ARM und andere SAchen, kommt man mit 2 Lagen nicht aus. Vier Lagen sind aber auch nicht sehr viel teuerer. ...aber erstmal ist das egal. CF/SD Karenfrage ist eigentlich klar, ich meinte auch SD. CF kam mir einfach zuerst in den Sinn. Zum Cameleon: das ist quasi ein Board mit einem DSP drauf (100 MHz, glaube ich), plus MIDI und schönes Gehäuse und weiterem Schnickschnack. Dazu gibt es ganze Entwicklungsumgebung, ob AMP-Simulator oder Synth, man kann die Programme einfach laden und man hat es. Die einzige Sache war, was mich so gestört hat, dass das Ding so 600-700 Euro kostet. Ich finde das etwas übertrieben. Mit etwas intelligenz ;-) kriegt man alles in einen FPGA drauf. Was viel Arbeit macht, sind halt die ganzen Algorithmen für Effekte und so. Mit einem ARM bin ich einverstanden, obwohl ich damit noch nie was gemacht habe, aber die Teile sind doch alle gleich ;-) So, nun weiter, wie ich mir alles vorstelle: Im FPGA ist quasi ein "Prozessor", der Befehle einfach abarbeitet, so wie bei modernen Grafikkarten. Dazu gibt es dann einen Befehlsatz, und den kann man halt ändern/laden. Alles total simpel. Das Programm steht im Blockram, Koeffiziente und Co vielleicht auch. Per i2c/spi oder wie auch immer, hat man den vollen Zugriff auf alles. That's it! Im Endeffekt läuft alles darauf hinaus, was man als einen "Befehl" deklariert. Üblich ist multacc oder wie auch immer. Und mit mind. 1000 Takte pro Sample ist man sehr gut unterwegs. Und wenn man auch mehrere Einheiten hat (Skalierbar), dann kotzt da jede DSP dagegen ab :-o :-) Noch mal zu mir. Ich arbeite in diesem Bereich, also mit FPGAs allgemein. Habe auch Erfahrung mit Layout und anderen Kleinigkeiten, die so anfallen. So einen design könnte ich (theoretisch) an ein/zwei Tagen aus dem Boden stampfen, dass da die ersten Sachen simulierbar sind. Dafür müsste ich aber wissen, was gemacht werden soll. DEnn nichts ist blöder, als wenn man zwischendurch die Spezifikationen ändert. Überhaupt, wundere mich, wieso nicht viele damit was machen :-o Für die Zukunft (also weite weite Zukunft ;-)) würde ich gerne schon ein einzelnes Board haben wollen, mit SDRAM, SRAM, MIDI, SD, VGA, mind. 8 AD/DA, digitale Ein/Ausgänge. DAs Problem ist nur, dass man allein da nicht sehr weit kommt :-/ Gruß Konstantin
Hallo TheMason! Als AnalogSynthesizer kann ich Dir den MonterSID empfehlen. s.h. http://c64upgra.de/c-one/ . mfg KennyOswald
Hallo KennyOswald. "Als AnalogSynthesizer kann ich Dir den MonterSID empfehlen. s.h. http://c64upgra.de/c-one/ " Das wäre mir neu, daß es den da gibt. Hast Du genauere Infos? Viele Grüße TobiFlex
Hallo KennyOswald, mir geht es ja gerade darum einen Synthesizer bzw. Audioprozessor in VHDL zu implementieren (siehe Thread "Leute für Audio-Projekt gesucht") :-)) Leute werden dafür immer noch gesucht :-) Das man mit dem SID aus dem C64 schon einiges machen kann ist mir klar. Aber es muß ja nicht gerade ein rein analoger Synth sein. Aber danke für die Info. Werd mir mal das Dingen genauer angucken Gruß Rene PS. Woher kann man denn funktionierende SID 6581-Chips eigentlich noch bekommen ?
Hallo TheMason! Der MonsterSID ist ein in ein FPGA (Altera) integrierter 16 Kanal SID. Der ist so weit ich das richtig verstanden habe, Digital. Habe ich im Forum gelesen. Der code ist aber nicht veröffentlicht worden. mfg KennyOswald
Ah - Danke - Alles klar. Alles andere hätte mich auch sehr gewundert. Für den C-One gibt es bisher kein Design mit einem SID im FPGA. Es muß ein original SID-Chip für den Sound auf das Board gesteckt werden. Aber vieleicht läßt sich hiermit was anfangen: (SID in VHDL für einen Altera Cyclone/Stratix) http://www.fpga.nl/jester.html Viele Grüße TobiFlex
Da fehlt nur noch der Yamaha FM und ein MOOG-Filter und wir haben fast alle analog sythies damit abgedeckt. mfg KennyOswald
Hallo, @kenny also FM sollte (abgesehen von einem schlanken Sinus-Osillator) kein Thema sein. FM soll ja nachher auch mit meinem Audio-Prozessor möglich sein, wenn er denn mal fertig ist. Einen waschechten MOOG-Filter dürfte insofern schwierig sein als das man da schon quasi auf Physical Modeling zurückgreifen müsste (wegen der Bauteil-Toleranzen und leicht unterschiedlichen Kennlinien), aber ein entsprechender IIR-Filter klingt auch schon gut. Habe selbst mal was Richtung Software-Synths gemacht, und mit den Ergebnissen bin ich recht zufrieden. Mein Ziel ist es nun das ganze in Hardware zu packen. :-) Mal schauen was draus wird. Hoffe das ich noch einige Leute "mobilisieren" kann für das Audio-Projekt :-) Erstmal Danke für die Infos vom C-One (wieder lecker Quellcode-Futter zum durchstöbern :-))) @tobiflex Danke für den Link zum jester. Versuche noch zu verstehen wie der Filter funktioniert, wobei mir noch nicht klar ist wo die Koeffizienten herkommen und welcher Filter implementiert worden ist. Hab aber gerade auch erst reingeschaut. Gruß Rene
"Erstmal Danke für die Infos vom C-One (wieder lecker Quellcode-Futter zum durchstöbern :-)))" Wenn Du dazu Fragen hast... Vieles davon ist von mir. Viele Grüße Tobias Gubener
Hier gibst infos zum SID: http://de.wikipedia.org/wiki/MOS_Technologies_SID Hier gibst ein Blockdiagram mit dem Aufbau vom SID: http://stud4.tuwien.ac.at/~e9426444/sidtech3.html Wegen AD-DA kannst Du Dich vielleicht mit dem hier kurzschliessen: http://beis.de/ mfg KennyOswald
"Hast Du daran mitgearbeitet?" Ja. Bis ich im Mai 2004 eingestiegen bin ging praktisch nichts mit dem C-One. Als erstes habe ich einen neuen Startupprozessor bzw. Startupsystem entwickelt. Dann habe ich meine eigenen CPC-Cores beigesteuert und den VC20 angepaßt. Als letztes habe ich den FPGA64 ( http://syntiac.com/fpga64.html ) im C-One zum Laufen gebracht. Viele Grüße TobiFlex
@TobiFlex Cool. Hatte ich gar nicht gesehen das du auf der C-One Seite vertreten bist (hatte nur mal eben kurz drüber geschaut). Klasse was du da so machst :-). Ich selbst bin in VHDL bei weitem noch nicht soweit. Schaffe es ja gerade mal einen Ansatz für einen Synthesizer zu implementieren :-)) (aber immerhin) Werde mich bei Fragen bzgl der Quellcodes an dich wenden. Ich denke der Lerneffekt durch die Quellcodes (Prozessor, Bus-Logik usw) dürfte enorm sein. @Kenny Danke für die Links (speziell den von Wikipedia, hab da einige lustige Links gefunden und lad mir gerade eine SID-Emulation und ein paar lieder dazu runter :-)) Die restlichen Sachen waren mir auch schon bekannt bzw. geläufig. Was ich noch zum Thema AD/DA suche ist ein Codec der quasi nichts an beschaltung benötigt. Habe mir da auch schon was ausgesucht (TAS3004, wie in dem "Leute für Audio-Projekt gesucht"-Thread schon dargelegt :-)), aber vielleicht gibts ja noch etwas kleineres, um zumindest mal von meinem 8-BIt-PWM D/A Wandler loszukommen *gg (vor allem weils ja nur ein Ausgang ist, und einen Audio-Eingang hab ich ja noch nicht) @all Muß noch mal eben Werbung für das Audio-Projekt machen : Suche noch Leute die Interesse an der Audio-Technik haben. Speziell Synthesizer, Mischer, Effekt-Geräte und HD-Recording. Würde mir gerne mit mehreren Leuten einen FPGA programmieren und eine kleine Hardware bauen mit der man ein flexibles Audio-System aufziehen kann. Konkrete Ideen bzw. Umsetzungen sind schon vorhanden (abgesehen von der kleinen Hardware). Mir geht es dabei um Erfahungsaustausch und den Spaß am Basteln mit Audio. Hoffe das sich da noch einige Leute finden lassen. Schönen Gruß Rene
Hihi "Ich selbst bin in VHDL bei weitem noch nicht soweit." Frag mich nicht nach VHDL. Damit habe ich auch erst vor einem halben Jahr angefangen. Vorher habe ich nur mit AHDL und Schaltungseditor gearbeitet. Aber ich glaube auch nicht, daß die Beschreibungssprache so wichtig ist. Viel wichtiger ist das grundsätzliche Verständnis für Digitaltechnik. "Suche noch Leute die Interesse an der Audio-Technik haben. Speziell Synthesizer, Mischer, Effekt-Geräte und HD-Recording." Ich könnte den AY 3-8912 Soundchip beisteuern falls der was nutzt. Ich finde Dein Projekt sehr interessant muß aber leider aus Zeitgründen zurückhaltend sein. :-( Schaffe jetzt schon nicht alles was ich gern möchte. Viele Grüße TobiFlex
Habe Interesse, nur wenig Zeit und zu wenig erfahrung. Bin aber bereit, dafür hart zu arbeiten. Schau Dir auch mal das hier an: www.ucapps.de PS: Eigentlich sollten hier genug Resourcen zu finden sein. Das Forum enthält ja alle wichtigen Bereiche (DSP, FPGA, µC). mfg KennyOswald
Hi TobiFlex, aber mit FPGAs und CPLDs machst doch sicherlich schon länger oder ? *ggg Mit dem ganzen Gebiet hab ich erst vor einem halben Jahr richtig angefangen. Das es egal ist ob Verilog, AHDL oder VHDL ist mir schon klar, und ich denke ein gewisses Grundverständnis von Digitaltechnik habe ich schon. Ist halt nur die Erfahrung die fehlt (ja ich habe immer noch Angst eine IO-Leitung bidirektional zu nutzen weil ich Antgst hab mir das Board zu schießen *ggg) Aber zu dem Audio-Projekt mal : Zeit spielt nicht so die Rolle. Kest hat auch wenig Zeit, und ich werde auch nicht jeden Tag daran sitzen. Mir geht es erstmal darum Leute zusammen zu bekommen die Interesse an so einem Projekt haben um dann Ideen zu sammeln und sich zu überlegen wie man sowas am besten aufziehen kann. Wie gesagt Vorschläge, Andregungen und Ideen habe ich schon eine ganze Weile, bin aber auch immer offen für neue Sachen. Und das ganze Projekt hat eigentlich keinen zeitlichen Rahmen. Der AY 3-8912, war das nicht ein FM-Chip (ähnlich der Adlib-Soundkarten) oder war der im Atari drin ? Bei dem Projekt hatte ich vor Codecs (16/24 Bit 48/96 kHz) zu verwenden, die über einen FPGA zum dudeln gebracht werden. In dem FPGA soll eine Engine laufen (die für den Grob-Entwurf schon recht weit ist) mit der sich Mixer, EQ's, Synthesizer, Effektgeräte und später vielleicht auch HD-Recording realisieren lässt. Wie gesagt Zeit spielt keine Rolle. :-)) Schönen Gruß Rene
Hi Kenny, die Seite ucApps kenn ich. Finds stark was der Typ an MIDI-Tools so alles bastelt. Habe mir auch mal nen kleinen MIDI-Controller gebastelt, der aber mittlerweile eingeschlafen ist. MIDI sollte bei dem Audio-Projekt auch dabei sein, damit die möglichkeit eines Synthesizers auf jedenfall gegeben ist (da braucht man erstmal nur Audio-Ausgänge *gg) Wie ich dem Tobi auch schon gerade geschrieben hab : Zeit ist kein Thema. Es geht sich mir erstmal darum das sich Leute zusammen finden und man gemeinsam an so einem Projekt sitzt. Das die meisten Leute berufstätig sind (wie ich selbst ja auch) ist klar, und von daher ist es kein Thema wenn mal ein paar Wochen nicht viel passiert. Hauptsache das Interesse an so einem Projekt ist da und die Leute machen sich ein paar Gedanken dazu. Und Erfahrung ist ja eh immer von Person zu Person unterschiedlich. Ich selbst habe vor nem halben Jahr mit FPGAs angefangen und freu mich mittlerweile wie ein Schneekönig zumindest schonmal Oszillatoren und Filter halbwegs am laufen zu haben, was andere an einem Nachmittag fabrizieren ... Also von daher. Es kommt auf das Interesse und die Gedanken an die man in so einem Projekt mit einfließen lässt. Schönen Gruß Rene PS. Wegen der Ressourcen und kompetenten Leute hier find ich dieses Forum so Klasse *ggg
"Der AY 3-8912, war das nicht ein FM-Chip (ähnlich der Adlib-Soundkarten) oder war der im Atari drin ?" Der war im AtariST und CPC464/6128 drin. Ist recht einfach gehalten. Keine Filter - nur programmierbare Teiler. Viele Grüße TobiFlex
Hallo zusammen ich bin durch Zufall beim stöbern über dieses Forum und Topic gestolpert und hab mich aus Begeisterung gleich mal angemeldet: Bei einem Projekt wie hier angesprochen wäre ich gerne dabei! Kurz zu mir: ich arbeite bei ARRI (Filmtechnik http://www.arri.de) an einem Filmscanner, dessen Innenleben fast ausschliesslich FPGA basierend ist. Momentan entwickle ich hier AD Wandlung + optisches Übertragungssystem für Rohbilddaten (ca. 18Gbit/s). Übertragung läuft über 2 parallele synchronisierte 10GB-Ethernet Kanäle mit INTEL optischen Transceivern, die Datenverarbeitung / Steuerung realisiere ich auf Virtex2Pro FPGAs. Mit FPGAs und VHDL kenne ich mich also einigermassen aus. Ich hatte schon lange geplant, eine Art "Digital"-Synthesizer zu bauen, d.h. der nicht analoge Klangerzeugung simuliert sondern die möglichkeiten der Digitaltechnik ausreizt. In jüngster Zeit dachte ich an eine Kombination von FPGA mit analogen Oszillatoren und einigen ADDA Wandlern und Multiplexern, also einer Art analoger Matrix, in der das FPGA drinhängt und die Klangbearbeitung macht. Habe bei meiner früheren Firma Motorola was in der Richtung gemacht, bei einer Telematik-Unit für Audi. Zusätzlich bräuchte man halt ein MIDI IF, digitale Bedieneinheit und z.B. eine analoge Bedieneinheit mit 16 Drehregler die über adcs am FPGA hängen. Leider fehlt mir einfach die Zeit, allzu intensiv was zu machen, weshalb ich es faszinierend fände, wenn man sich da zusammentun könnte. Hobbymässig spiele ich schon seit zig jahren mit elektronischer Musik / Synthesizern und hab da auch schon einen kleinen Fuhrpark zu hause. Also, wenn Ihr Lust habt so ein Projekt aufzuziehen und jemand dabeihaben wollt der sonst noch nicht in diesem Forum aufgetreten ist, dann bin ich dabei! Viele grüsse David
Hallo David finde ich cool das du mitmachen möchtest. Dann wären wir schon zu dritt (jedenfalls mit "offiziellem" Statement : "bin dabei" :-))) Wie auch schon oben beschrieben ist Zeit nicht das Problem. Hauptsache die Leute haben Interesse und man hört/liest ab und zu voneinenander. Wie man halt gerade Zeit hat. Ich denke eh das das ganze "Projekt" über einen langen Zeitraum laufen wird, aber es soll ja auch was werden und es besteht ja auch kein Zwang :-) Also in VHDL bin ich nicht so fit (jedenfalls nicht so wie du oder der Kest (Konstantin)) aber ich denke für meine kleinen Zwecke sollte es reichen. Mit meiner programmierbaren Audio-Engine bin ich schon recht weit. Werde die Tage mal den VHDL-Code sowie C-Code reinstellen, damit man zum einen damit spielen kann, und zum anderen sich über meinen VHDL-Code aufregen kann :-)), bzw. Verbesserungsvorschläge machen kann wie man bestimmte Sachen besser umsetzen kann. Ich würde sagen das wir für dieses Projekt einen neuen Thread aufmachen und uns zuerst mit dem Expansion-Board beschäftigen damit man wenigstens mal Audio In und Out hat und das ganze an ein FPGA-Board seiner Wahl korken kann. Ich halte das für sinnvoll, damit Leute die vielleicht später zustossen wollen auch die Möglichkeit eines einfachen Einstiegs haben, bzw. das man eine gemeinsam nutzbare "Plattform" hat, auf die man aufsetzen kann (zumal ich selbst noch nicht einen einzigen AD/DA Wandler angeschlossen habe :-)). Und wenn man dann ein IO-Board hat kann man sich mit der Programmierung des FPGAs und des uCs beschäftigen. Freue mich das du dabei bist. Schönen Gruß Rene PS. Habe in dem Thread "Leute für Audio-Projekt gesucht" noch ein paar Anregungen und Vorschläge zum Thema IO-Board gemacht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.