1 / 53

DSP Programmierung

DSP Programmierung. Praktikumsarbeit von S.Gary und C.Brungräber am 21161N EZ-Kit Lite von Analog Devices. Entwicklungsplattform. 21161N EZ-Kit LITE mit einem SHARC DSP ADSP-21161NKCA-100 von Analog Devices 100 Mhz DSP Analog Devices Visual DSP++ CrossCore Developement Tools. Specs DSP.

hilaire
Download Presentation

DSP Programmierung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DSP Programmierung Praktikumsarbeit von S.Gary und C.Brungräber am 21161N EZ-Kit Lite von Analog Devices

  2. Entwicklungsplattform • 21161N EZ-Kit LITE mit einem SHARC DSP ADSP-21161NKCA-100 von Analog Devices • 100 Mhz DSP • Analog Devices Visual DSP++ CrossCore Developement Tools

  3. Specs DSP • ADSP 21161 SHARC • RISC Prozessor • Harvard Architektur • 80kb Programm Memory • 128kb Data Memory • 100Mhz • 600 MFLOPS • 2 ALUs • 96 universal register • Alle Artihmetikbefehle sind Singlecycle

  4. Specs DSP • SIMD support • MAC beschleunigt • Unterstützt bis zu 32 Ringpuffer in Hardware • Unterstützt das 32bit floating point Format in Hardware • Multiprozessorsupport -> bis zu 32 EZ-Kits sind zu einem DSP-Cluster koppelbar

  5. Specs EZ KIT • USB Debugging Interface • Stellt Verbindung zum EntwicklungsPC her • AD1836 AudioCodec mit 96khz • 6 DA-Wandler • 4 AD-Wandler • 2 Stereo-Chincheingänge und 3,5 mm Mic/Lineeingang • 4 Stereo-Chinchausgänge und 3,5 mm Lineausgang • Zusätzlich SPDIF-Ausgang

  6. Specs EZ KIT • 6 MB SDRAM onboard (1M x 48 bit) • LinkPorts 0 und 1 mit bis zu 400MB/s • 14-pin JTAGinterface • External-Port über den die Verbindung mit dem EmbeddedPC hergestellt wurde • 7 Miniaturtaster • 4 FlagTaster • 3 Interrupttaster • 6 LEDs • Breadboard Area für eigene Erweiterungen

  7. www.analog.com

  8. Effekt Algorithmen • Grundlagen • Filter • Grundsätzlicher Ansatz • Faltung • IIR - Filter • FIR – Filter • Anwendungsgebiete

  9. Effekt Algorithmen • Reverb • Reverbalgorithmen • Impulsfaltung • Schröder-Algorithmus • Implementierung • Flanger • Flanger-Algorithmus • Besonderheiten der Implementierung

  10. Effekt Algorithmen • Dynamikeffekte • Compressor • Anwendungsgebiet • Algorithmus • Besonderheiten der Implementierung • MultibandCompressor • Expander (Noise-Gate)

  11. Filter • Grundsätzlicher Ansatz • Der gleitende Mittelwert • Symetrisch-akausales Filter y = (x(-1) + x(0) +x(+1))/3 • Asymetrisch-kausales Filter y = (x(0) + x(-1) + (x-2))/3

  12. Filter • Sendet man einen Diracimpuls durch den Filter erhält man seine Impulsantwort. Impulsantwort des Filters : [0.3333(0)],[0.3333(-1)],[0.3333(-2)] Koeffizientenvektor für

  13. Filter • Faltung • Eine Multiplikation im Frequenzbereich entspricht einer Faltung im Zeitbereich. • FIR – Filter • Finite Impulse Response

  14. Filter • Ermittlung des Koeffizientenvektors über eine inverse FFT des Referenzspektrums iFFT Spektrum Impulsantwort

  15. Filter • FIR – Filter Implementierung • float FIR_filter(float pm *signal, float pm *koeffs, int lenght){ • int i=0; float tmp=0; • #pragma SIMD_for for(i=0;i<lenght;i++){ • tmp = tmp+(signal[i]*koeffs[i]); } return tmp; • }

  16. Filter • Faltung • IIR – Filter • Infinite Impulse Response (rekursiv) • 2 Arten von Koeffizienten • Nominator & Denominator

  17. IIR Filter PRO: Steile Flanken mit wenigen (meist unter 10) Koeffizienten CONTRA: Extrem aufwendige Ermittlung der Koeffizienten über bilineare Transformation eines analogen Filters Mögliche Instabilität FIR Filter PRO: Einfache Ermittlung des Koeffizientenvektors durch eine inverse DFT oder FFT Stets Stabil CONTRA: N-fache Anzahl von Koeffizienten nötig um dem Referenzspektrum zu entsprechen. Hoher Rechenaufand. Filter

  18. Filter • Anwendungsgebiete • Verarbeitung von Signalen jeglicher Art • Börsenwerte • Audiosignale • Vorverarbeitung bei Mustererkennung

  19. Reverb • Reverbalgorithmen • Impulsfaltung • Ein lineares System (in diesem Fall der Hallraum) ist durch seine Impulsantwort charakterisiert • Ein Signal, welches mit der Impulsantwort eines Systems gefaltet wird, besitzt nach der Faltung dieselben Merkmale, wie ein Signal welches das lineare System durchlaufen hat.

  20. Reverb • Der Schröder-Algorithmus • Simulation eines vereinfachten Hallraumes mittels • 4 Combfilter • Diverse Allpassfilter

  21. Reverb • Combfilter a.k.a DelayLine • Erzeugt ein „Echo“ im Signal • Es gibt 2 Arten eines Combfilters • Feedforward • Feedback

  22. Reverb • Feedforward Combfilter Center for Computer Research in Music and Acoustics (CCRMA)

  23. Reverb • Feedforwardcombfilter Impulsantwort

  24. Reverb • Feedback Combfilter Center for Computer Research in Music and Acoustics (CCRMA)

  25. Reverb • Feedbackcombfilter Impulsantwort

  26. Reverb • Allpassfilter • Ein Feedforward- und Feedbackcombfilter gekoppelt ergeben einen Allpassfilter, wenn der Koeffizient des Feedforwardcombfilters gleich den negierten Koeffizienten des Feedbackcombfilters ist.

  27. Reverb • Allpassfilter erster Ordnung - Systemgraph Center for Computer Research in Music and Acoustics (CCRMA)

  28. Reverb • Allpassfilter zweiter Ordnung - Systemgraph Center for Computer Research in Music and Acoustics (CCRMA)

  29. Reverb • Allpassfilter – Eigenschaften • Beeinflusst das Frequenzspektrums des Signals nicht. Es entsteht jedoch ein hörbarer Unterschied zum ursprünglichen Signal. • Führt zu einer Phasenverschiebung (Timeshifting) einzelner Frequenzanteile des Signals.

  30. Reverb • Allpassfilter Impulsantwort

  31. Reverb • Allpassfilter erster Ordnung Implementierung float allpass_1st_order::AP_filter(float sample){ // a= delayoutput*acoeff +input float a = (sample+(a0_1*delayline[index])); delayline[index]= a; index++; if(index>=delay)index=0; float b = ((b0_1*a)+ delayline[index]); return b; }

  32. Reverb • Der Schröder-Algorithmus • Simulation eines Hallraumes durch vier getrennte Feedbackcombfilter deren Summe durch mehrere Allpassfilter geleitet wird.

  33. Reverb • Der Schröder-Algorithmus • Systemgraph

  34. Reverb • Der Schröder-Algorithmus • Vorteile : • Einfache Implementierung (Teile und Herrsche) • Der Rechenaufwand zur Laufzeit hält sich in Grenzen • Nachteile: • Klingt bei geringer simulierter Raumgrösse „metallisch“.

  35. Reverb • Abgewandelter Schröder-Algorithmus • Schleift in jedem Combfilter einen Allpassfilter erster oder zweiter Ordnung ein.

  36. Reverb • Impulsantwort

  37. Flanger • Grundlegende Idee • Delayeffekt der seit den 60er Jahren bekannt ist • Begriff „flange“ stammt aus den ersten Implementierungen mittels zweier gekoppelter (flanged == angeflanscht ) Bandmaschinen • Wird die Kopplung aufgehoben und eine der Maschinen leicht abgebremst setzt der Flangingeffekt ein. • Wird das „Flanging“ stark genug durchgeführt, setzt ein hörbarer Dopplereffekt ein.

  38. Flanger • Grundlegende Idee x = Inputsignal y(n) = Output zur Zeit n g = „Depth“ Stärke des Effekts M(n) = Länge der Delayline zum Zeitpunkt n

  39. Flanger • Systemgraph www.harmony-central.com Die Grösse des Delays liegt im Bereich weniger ms, da sonst ein hörbares Echo entstehen würde.

  40. Flanger • „Aufgebohrter“ Flanger www.harmony-central.com

  41. Flanger • Implementierung des „aufgebohrten“ Flangers float TFlanger::sendThrough(float src) { static float sample; if(inverted) { pdelayline[index1] = src * .5 + pdelayline[index2] * feedback; delayline_length = fabs(((sin(lfo_index) + 1.1) * mod_amount)); sample = pdelayline[index1] + pdelayline[index2] * mix; } else { pdelayline[index1] = src * .5 + pdelayline[index2] * feedback;

  42. Flanger • Implementierung des „aufgebohrten“ Flangers delayline_length = fabs(((sin(lfo_index) + 1.1) * mod_amount)); sample = pdelayline[index1] - pdelayline[index2] * mix; } index2 = (index1 + delayline_length) % delayline_maxlength; index1 = (index1 + 1) % delayline_maxlength; lfo_index = fmod(float(lfo_index + lfo_inc), float(2 * PI)); return sample; }

  43. Dynamikeffekte • Compressor • Anwendungsgebiet • Audiosignale jeglicher Art deren „gefühlte“ Lautstärke erhöht werden soll • Funktionsprinzip • „Laute“ Stellen eines Signals werden um einen gewissen Betrag „leiser“ gemacht. Danach kann der Gesamtpegel des Signals wieder bis zur maximalen Aussteuerung angehoben werden.

  44. Dynamikeffekte • Compressor • Der Integralwert des Signals vergössert sich. • Der Schalldruck des Signals wird erhöht.

  45. Dynamikeffekte • Compressor Systemgraph www.harmony-central.com

  46. Dynamikeffekte • Compressor – Leveldetector • Bildet über die Attackzeit das Integral der absoluten Beträge der einzelnen Samples. • Wird ein voreingestellter Wert, Treshold genannt, vom Integral überschritten meldet der Leveldetector dies an den • Compressor - Gaincontroller • Dieser regelt das Signal um einen Faktor (Gain) über die Releasezeit ab.

  47. Dynamikeffekte www.harmony-central.com

  48. Dynamikeffekte • Compressor Implementierung float compressor::sendtrough(float source){ static float tmp; tmp = attackline[counter]; attackline[counter] = (source*source); sum = attackline[counter] + sum - tmp; counter++; if(counter >= attacktime)counter = 0; if((sum/attacktime) >= (treshold*treshold)){ tmp = source * gain * sinf(acount); acount += (1.570796/attacktime); if(acount > 3.1415927){ acount = 3.1415927; }

  49. Dynamikeffekte • Compressor Implementierung rcount = 0; } if((sum/attacktime) < (treshold*treshold)){ acount = 1.570797; tmp = source * (gain + ((1-gain)*sinf(rcount))); rcount += (1.570797/releasetime); if(rcount > 1.570797){ rcount = 1.570797; } } return tmp; }

  50. Dynamikeffekte • Multibandcompressor • Drei oder mehr Compressoren die jeweils getrennte Frequenzbänder (Höhen, Mitten, Bässe) des Signals bearbeiten. • Das „Pumpen“ eines normalen Compressors kann damit unterdrückt werden.

More Related