Forum: Digitale Signalverarbeitung / DSP / Machine Learning MMACS berechnen FIR Filter


von Chris (Gast)



Lesenswert?

Hallo,

ich arbeite an einem ADSP-21469 von Analog Devices und will auf diesem 
einige FIR filter laufen lassen, die ein Eingangssignal filtern und dann 
wird das ganze auf 16 Kanälen wieder ausgegeben. Ich habe einen 
Beispielkode von Analog Devices genommen, benutze ein Audio EZ-extender, 
der mir die nötigen Kanäle gibt und wenn ich ADC->DAC ohne dazwischen zu 
filtern einstelle läuft das alles.
Jetzt will ich meine Filter berechnen und die Performance vom DSP ist 
mit 900MMACS angegeben. Ich benötige 8 Filter (4 rechts, vier links) und 
meine Samplerate ist 48kHz. Das bedeutet, wenn ich alles richtig 
verstanden habe, dass ich 48000 samples die Sekunde habe, X Filtertaps 
und 900 millionen Operationen die Sekunde zur verfügung. Die maximale 
Anzahl Filtertaps wäre demnach:

48000 * X = 900*10^6 <==> X = 18750

Ich kann also maximal 18750 Filterkoeffizienten verwenden. Wenn ich das 
Ganze jetzt allerdings teste, indem ich das Signal filtere und in 
variabeln abspeichere, dann verlangsamt das Filtern meinen Prozessor so 
sehr, dass auch das ungefiltert durchgelassene Signal statt einem 
schönen Sinus, wie ich ihn in den Audio Codec des Kittes einspeise, mir 
zwar ein Sinusförmiges Signal auch wieder rausgibt, allerdings sehr 
verzerrt, scheinbar Quantisierungsrauschen weil der Prozessor es nicht 
mehr schafft, die Samples rechtzeitig auszuspucken. Ca. bei 5000 
Filterkoeffizienten ist schon Schluss, bis dahin sieht das Signal normal 
aus, danach Rauschen. Hab ich mich verrechnet? Oder läuft was ganz 
anderes Schief?

Vielen Dank schonmal für die Hilfe!

Im Anhang ist der aktuelle Code.

von Karl (Gast)


Lesenswert?

Datenblatt-Traumangabe vermutlich. Der DSP muss auch noch was anderes 
machen als MACs berechnen, den Ringspeicher z.B.

von Chris (Gast)


Lesenswert?

Okay aber sind 5000 koeffizienten für diesen DSP nicht etwas arg wenig? 
Zumal ich mit dem gleichen code bei 192kHz Samplerate noch 4000 
Koeffizienten problemlos verwenden kann, das sind nur 1000 weniger als 
bei 48kHz, eigentlich müsste da der unterschied doch viel größer sein?

48000 * X = 900*10^6 <==> X = 18750
192000 * X = 900*10^6 <==> X = 4688

von jens (Gast)


Lesenswert?

Möglicherweise gibt es einen Überlauf bei der Berechnung.

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
Noch kein Account? Hier anmelden.