mikrocontroller.net

Forum: FPGA, VHDL & Co. Microblaze-Design geeignet??


Autor: Lukas S. (stoney)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ich möchte einen Audio-Algorithmus implementieren den ich vor einiger 
Zeit entwickelt habe, und hoffe auf Feedback ob mein HW-Entwurf dafür 
geeignet ist.
Der algorithmus benötigt zwingend 32-bit floats (fixed point fällt wegen 
des Dynamikbereichs einiger berechnungne komplett weg), und ist ca. 50 
Rechenoperationen lang (darunter unter anderem auch eine tanh berechnung 
sowie einige höhere Hochzahlen).

Immoment habe ich folgendes vorgestellt: Ein Nexys2-1200-Board, darauf 
zwei Microblaze (mit FPU und 5x-Pipelining). Beide kommunizieren über 
einen(zwei) FSL-Bus. Der erste fungiert als Master und holt die 
l/r-Samples über PLB (A/D IP) rein. Der linke Kanal wird dann ebenfalls 
auf dem Master berechnet, der rechte Kanal wird auf den Slave 
ausgelagert. Danach werden die Kanäle wieder im Master zusammengefasst 
und über den PLB an einen D/A geschickt. Ich würde gerne mit 96khz 
fahren...Daten bekomme ich mit 24bit. Beide Microblaze laufen mit 90Mhz, 
genauso wie der PLB, etc.

Meint ihr, das könnte klappen, oder sollte ich lieber doch auf eine 
(teure) DSP-Platform umschwenken??

Grüße,
Stoney

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Meint ihr, das könnte klappen, oder sollte ich lieber doch auf eine
> (teure) DSP-Platform umschwenken??
Du meinst, mit einem FPGA wärst du billiger dran?
Wie kommst du darauf?

Autor: Lukas S. (stoney)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lukas Steinert schrieb:
> Ein Nexys2-1200-Board

Naja das Board gibts für um die 100€, und hat eigentlich alles was man 
braucht...DSP-Boards sind da ja ungleich teurer...

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der ARM auf dem Beagleboard ist schneller als das was du vor hast, 
außerdem billiger und einfacher zu programmieren.

Autor: Lukas S. (stoney)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hatte ich als alternative auch schon im Auge, habe mich aber noch 
nicht wirklich damit auseinandergesetzt...wenn das aber, auch in 
verbindung mit externen A/D-D/A's zu empfehlen ist, werde ich mich da 
mal einarbeiten...

Autor: Rene B. (themason) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Lukas

Warum kommst du denn nicht um floating Point herum ?
Was machst du genau ? Gehts darum Koeffizienten für einen Biquad 
auszurechnen ?

Also Floatingpoint auf einem FPGA würd ich mir nicht antun wollen. Vor 
allem bringts gegenüber einem DSP recht wenig (zumal wenn der dann auch 
noch FP beherrscht).

Autor: Lukas S. (stoney)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rene:

Ich müsste jetzt zwar etwas weiter ausholen, aber kurz gesagt: Der 
Algorithmus simuliert Trioden-Röhren, und ist so gut (eigenlob stinkt), 
das er zu 90-95% an die echten Röhren kankommt. D.h.: Röhren-Sound ohne 
Röhren. Das ganze mündet dann in einem Verstärker....wenn dieser Teil 
läuft, kommt noch ein 5 oder 10 Band parametrischer Eq.

Gibt es denn bei den BeagleBoard eine Möglichkeit um Linux 
herumzukommen? Das brauche ich eigentlich nicht...wäre mir lieber das 
einfach nur in einem IDE zu programmieren...

Autor: Lukas S. (stoney)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch ein kleiner nachtrag zum Alrogithmus: Es kommen Prinzipbedingt (auf 
echten Bauteilwerten basierend) wegen der berechnung der phys. Größen zu 
sehr großen (10^12-10^15) als auch zu sehr kleinen Werten. Um dann noch 
eine ausreichende Genauigkeit zu bekommen, ist FP leider die einzige 
möglichkeit.

Hab mich gerade nochmal umgesehen was es für möglichkeiten gäbe...aber 
jetzt bin ich nur noch mehr verwirrt...

Autor: Rene B. (themason) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Lukas

Das hört sich sehr interessant an. Und ist wahrscheinlich zugleich auch 
ne herausforderung. Ich meine Röhrensimulation ist ja immer 
vieldiskutiert. Ich gehöre zwar auch zu den Anhängern 
"Es-geht-nix-über-ne-echte-Röhre" :-)), aber Simulationen gegenüber bin 
ich auch nicht abgeneigt.
Aber du weißt schon das FP nicht alles ist, das du bei FP auch nur so 
und soviel Genauigkeit hast (je nachdem ob single oder double), sprich 
wenn es bei großen Werten auf die letzte Nachkommastelle (z.b. 0.1 bei 
10^12) ankommt das dir FP da auch nicht weiterhilft.
Ich würde mal sagen das man denke ich alles auch in Fixpoint rechnen 
kann, nur wirds dann eben exponentiell häßlich :-)
Ansonsten würd ich dir Blackfin/TI DSP irgendwie sowas empfehlen. Mit 
einem FPGA wirst du denke ich bei deinem Vorhaben nicht glücklich 
werden. Es sei denn du machst alles in Fixed Point. Aber dann hast du 
auch nur ca 80-100MHz je nach komplexität ...

Autor: Lukas S. (stoney)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rene

Ahhh, ein Röhrenfreund =) Die ganze Anwendung an sich habe ich bei 
TubeTown ausgiebig diskutiert, finde aber gerade den Link nichtmehr.....


Was FixPoint angeht...ich habe 2 Wochen lang vergeblich versucht den 
Algorithmus zu portieren in Matlab (da habe ich ihn auch entwickelt). 
Hier mal exemplarisch eine der Konstanten die in die Hauptberechung der 
Ausgangsspannung (Ausgangsignal) eingeht:
a3 =  mufix ^ 3 * rp * ( (2 * rp - rb)* strp^2 - rp*(rp+rb) * ktrp ) / (6 * (rp+rb) ^ 5 );

die r*-werte liegen so bei 62000-70000, mufix bei 100 und die anderen 
konstanten sind kleiner 1. In Matlab funktioniert es auch mit 
single-werten, aber wenn double-werte machbar sind, ist das sicherlich 
keine schlechte sache.

Ich hatte mir ganz zu Anfang an die SHARC's angesehen, bevor ich hier 
den Audio-DSP mit Spartan 3-FPGA gesehen habe. Jetzt wirds wohl doch ein 
DSP g. Welche Serien würden denn Grundsätzlich in Frage kommen? SHARC 
wäre eigentlich so meine Wahl, weil ich auch noch VisualDSP hier 
habe...das ADSP-21369 EZ-KIT Lite wäre sehr fein, ist aber leider auch 
sündteuer :-(

Autor: lol (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Etwas was nur zu 2^-16 zum Klang beiträgt, kann auch weggelassen werden.
(Die 16 ist exemplarisch und kann zwischen 8 bis 32 schwanken.)

Wer Audio mit Festkomma nicht hinkriegt, macht was falsch.
Das haben schone Generationen von Audiogeräten bewiesen die
ohne Gleitkomma ausgekommen sind.

Autor: floGzmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stoney aus memmingen?

Autor: Lukas S. (stoney)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ne der bin ich nicht ^^ ...

Das Problem das ich in Festkomma für diese Anwendung sehe, ist eben der 
Dynamikbereich...da ich physikalische Größen berechne (im Grunde 
basieren die Formeln auf den vereinfachten Elektronenströmen zwischen 
den Blechen in der Röhre. Da die Funktion nur linear ist, fitte ich dann 
noch tanh-funktionen um die Nichtlinearität zu modellieren. Das klappt 
sehr gut...allerdings habe ich eben intern sehr stark schwankende 
Größen, und muss das Ausgangssignal auch erst wieder Normalisieren weil 
mein Modell wirklich ~80Vss wie eine echte Röhre (je nach beschaltung) 
erzeugt. Damit bräuchte man wahrscheinlich sehr viele Vorkommastellen, 
was die Genauigkeit kaputt macht...

Autor: Thomas Reinemann (Firma: abaxor engineering) (abaxor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hast du dir mal Gedanken darum gemacht, welchen Dynamik-Umfang deine 
Röhre bzw. die gesamte Elektronik eines Röhrenverstärkers hat.

Tom

Autor: Rene B. (themason) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Lukas

Ich hatte dir eine PN geschrieben ...

Also ich denke es muß auch in Integer machbar sein. Zur Not rechnet man 
halt mit 128x128Bit (seriell, also in mehreren Schritten).
In einem FPGA könnte man dann diese serielle Riesenmultiplikation dann 
auch mehrfach laufen lassen um die Anzahl der Berechnungen zu minimieren 
bzw unabhängige Teile parallel berechnen zu lassen.

Aber sehr interessantes Projekt. Muß ich schon sagen.

Gruß
Rene

Autor: Lukas S. (stoney)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rene

Hab dir schon geantwortet.

@Tom

Ne noch nicht, ich meinte das auch bezogen auf den Algorithmus und die 
Funktionen der einzelnen Bleche etc.

Autor: Rene B. (themason) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Lukas

hast Antwort ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.