Signalprozessoren Digital Signal Processors VO [2h] 182.082, LU 2 [2h] 182.084 http://ti.tuwien.ac.at/rts/teaching/courses/sigproz Herbert Grünbacher Institut für Technische Informatik (E182) Herbert.Gruenbacher@tuwien.ac.at SigProc-1-Einführung 1
Organisatorisches Vorlesungen an Freitagen 12:15-15:00 Uhr Hörsaal EI8 Interesse an der SigProz LU? SigProc-1-Einführung 2
TU-Campuslizenz für Win/Linux/Mac im LMZ: MATLAB 2009a mit 14 ausgewählten TOOLBOXEN zusammen mit SIMULINK auf DVD zu 18.- Weitere Toolboxen können direkt von MathWorks bezogen werden. Einen Überblick über alle Matlab-Toolboxen finden Sie unter: http://www.mathworks.com/academia/student_version/companion.html Alternative PD http://www.scilab.org SigProc-1-Einführung 3
(Digital) Signal (Processors) Analoge Signalprozessoren haben heute keine technische Bedeutung (Der Hybridrechner EAI SIMSTAR - eine Kombination aus Analog- und Digitalrechner - der TU Wien wurde Ende 1991 außer Betrieb genommen.) Signal In der Regel kontinuierliche, sich verändernde physikalische Größe SigProc-1-Einführung 4
Kontinuierlich digital Darstellung durch Zahlen, d.h. numerische Darstellung einer Größe. Digital: Quantisierung im Amplitudenbereich Abtastung: Quantisierung im Zeitbereich SigProc-1-Einführung 5
F(t) F(t) f(t) f(t) Quantisierungsfehler 1 1 0 0-1 0 20 40 60 Zeit t -1 0 20 40 60 Zeit t 1 1 0 0-1 0 20 40 60 Zeit t Fehler: = f (t) - F(t) 0.5 0-0.5 0 20 40 60 Zeit t -1 0 20 40 60 Zeit t 5 x 10-10 Fehler: = f (t) - F(t) -5 0 20 40 60 Zeit t Quantisierungs- 0 rauschen SigProc-1-Einführung 6
Abtastung (1) SigProc-1-Einführung 7
konstant Interpolation im Zeitbereich (1) linear interpoliert SigProc-1-Einführung 8
Darstellung der Interpolation Überlagerung gewichteter, zeitversetzter Rechteck- bzw. Dreiecksimpulse SigProc-1-Einführung 9
1 x 4 x SigProc-1-Einführung 10
Abtastung (2) SigProc-1-Einführung 11
Interpolation (2) Im Zeitbereich können wir das digitale Signal nur durch ein»kurvenlineal«kontinuierlich machen. Wir finden im Zeitbereich keine Antwort, wie das»kurvenlineal«aussehen muss. SigProc-1-Einführung 12
Das Spektrum des Orginalsignals f(t) ist im Spektrum des abgetasteten Signals f s (t) enthalten und kann aus F s (ω) durch "Herausschneiden" mit einem idealen Tiefpassfilter fehlerfrei wieder hergestellt werden. SigProc-1-Einführung 13
Abstand der Spektren hängt von der Abtastfrequenz ab. SigProc-1-Einführung 14
Shannon Sampling Theorem Ein kontinuierliches Zeitsignal x(t) mit Frequenzen f max kann exakt aus den Abtastwerten x[n] = x(nts) rekonstruiert werden, wenn die Abtastrate f s = 1/T s größer als 2 f max ist. SigProc-1-Einführung 15
Interpolation im Zeitbereich»Kurvenlineal«Ideales Filter Impulsantwort SigProc-1-Einführung 16
Ideales Filter Das ideale Filter muss ein ideales kontinuierliches Filter sein, da nur das Spektrum des Basissignals herausgeschnitten werden darf. Ein ideales diskretes Filter hat ein periodisches Spektrum! SigProc-1-Einführung 17
h(t) H(ω) Impulsantwort ideales Filter 1 ω < 2πB H ( ω) = 0 ω 2πB 1 2π B jωt h( t) = e dω 2 BT sinc 2 Bt 2π = 2π B T ( π ) 0-2 πb 0 ω 2πB 1 0-4/2B -3/2B -2/2B -1/2B 0 Zeit t 1/2B 2/2B 3/2B 4/2B SigProc-1-Einführung 18
Das Ausgangssignal ist die Überlagerung der zeitversetzten, gewichteten Impulsantworten. f () t f ( kt ) h( t kt ) f ( kt )sinc 2π Bt kπ = = k k ( ) SigProc-1-Einführung 19
Während die Rekonstruktion des Signals durch Rechteck- und Dreiecksimpulse nur eine ungenaue Wiedergewinnung ermöglicht, stellt die Rekonstruktion durch überlagerte und gewichtete sinc-pulse das Signal fehlerfrei her. Wie wir sehen, ist die Impulsantwort eines idealen Filters nicht-kausal, da das Filter bereits vor dem Anlegen des Impulses antwortet. Nichtkausale Filter sind nicht realisierbar! SigProc-1-Einführung 20
Interpolationsfilter (1) Ideale (analoge) Tiefpass-Filter sind nicht-kausal und daher nicht realisierbar. Eine praktische Lösung dieses Problems wird dadurch gefunden, dass das Signal mit Abtastfrequenzen größer als der Nyquist-Frequenz abgetastet wird. Damit entstehen Lücken im periodisch fortgesetzten Spektrum und die Anforderungen an die Flankensteilheit des Filters werden geringer. SigProc-1-Einführung 21
Interpolationsfilter (2) Man kann zwar steilflankige analoge Filter mit hoher Dämpfung im Sperrbereich bauen, es ist aber nicht möglich Filter zu realisieren, die die Signale im gesamten Sperrbereich vollständig unterdrücken. Man erreicht eine praktisch ausreichende Unterdrückung, aber nie die theoretische geforderte vollständige Ausblendung des Sperrbereichs. SigProc-1-Einführung 22
Bandbegrenzung Jedes praktische Signal ist von endlicher Länge. Wie wir von der Fourier-Transformation wissen, hat ein Signal endlicher Länge ein unendlich breites Spektrum. SigProc-1-Einführung 23
Kein Signal kann gleichzeitig zeitbegrenzt und bandbegrenzt sein! Ist das Signal zeitbegrenzt (hat es also eine endliche Dauer ), dann erstreckt sich das Spektrum von bis (ist also nicht bandbegrenzt). Ist das Signal bandbegrenzt, dann muss sich das Signal über eine unendliche Dauer im Zeitbereich erstrecken, ist also nicht zeitbegrenzt. SigProc-1-Einführung 24
Überlappende Spektren SigProc-1-Einführung 25
Antialiasing-Filter Um das Überlappen von Spektren zu vermeiden wird die Bandbreite von Signalen mit Antialiasing- Filtern begrenzt. SigProc-1-Einführung 26
Abtastung im Frequenzbereich Abtastung im Zeitbereich: bandbegrenzte Signale Abtastung im Frequenzbereich: zeitbegrenzte Signale SigProc-1-Einführung 27
SigProc-1-Einführung 28
Diskrete Fourier-Transformation (DFT) Für die Berechnung der DFT gehen wir von zeitbegrenzten Signalen f(t) der Länge τ aus (a). Zeitbegrenzte Signale haben ein Spektrum F(ω) das nicht bandbegrenzt ist (b). Aus dem zeitbegrenzten Signal gewinnen wir das diskrete Signal f s (t) durch Abtastung von f(t) im Abstand T=1/F s (c). Durch die Abtastung wird das Spektrum periodisch mit der Periodendauer F s =1/T, wir erhalten das Spektrum F s (ω) (d). Die Abtastung des Spektrum im Abstand F 0 =1/T 0 (f) führt zur periodischen Fortsetzung des abgetasteten Zeitsignals, mit der Periode T 0 (e). SigProc-1-Einführung 29
Diskrete Fourier-Transformation 0 0 1 n= 0 N 1 1 0 f[ n] = Fke [ ] N N k = 0 Fk [ ] = f[ ne ] jkω 0 jkω n 0 n idft DFT SigProc-1-Einführung 30
DFT Die DFT kennt nur periodische Signale: periodisch im Zeitbereich und periodisch im Frequenzbereich. Es gibt keine DFT für zeitbegrenzte Signale. SigProc-1-Einführung 31
Filterung im Zeitbereich N l 1 IIR-Filter y[ n] a [ ] l yn l bk x[ n k] M k 0 Die wichtigste mathematische Operation in DSPs ist die Summenbildung von Produkten. SigProc-1-Einführung 32
Zeitkritische Operationen A/D- und D/A-Wandlung Multiplikation von Signalproben mit Filterkoeffizienten Summenbildung im Accumulator Circular buffering Schnelle MultAcc Operation Höhere Genauigkeit im Acc Register Holen von zwei Operanden Schnelles Abarbeiten der Schleife SigProc-1-Einführung 33
Circular buffering Bufferdefinition: Anfang : Ende : Schritt im Adressraum : Pointer neuer Wert SigProc-1-Einführung 34
µp DSP Datenmanipulation: Betriebsystem, Datenbanken, Office Anwendungen Verschieben A B Testen If A = B, then Math. Berechnungen Signalverarbeitung, Regelungstechnik, technische Simulationen Addition C = A + B Multiplikation C = A x B Ausführungszeit nicht kritisch, keine Echtzeitforderungen Ausführungszeit kritisch, Echtzeitanwendungen SigProc-1-Einführung 35
Was braucht es? Laden Koeffizient (Prog.Mem), Sample (Data Mem) und Instruktion (Prog.Mem) Instruktionen ändern sich nicht so häufig Instruction Cache I/O Kontroller der Daten direkt ins Data Mem schreiben kann (DMA!) Aktualisierung Circular Buffers ohne CPU Hardwareunterstützung der DFT SigProc-1-Einführung 36
DSP-Aufgaben 1. Sample von ADC, Interrupt 2. Interrupt handling 3. Sample input signal circular buffer 4. Update pointer input signal circular buffer 5. Accu Null setzen 6. Loop control für Koeffizienten 7. Holen Koeffizienten aus Koeff circular buffer 8. Update pointer Koeff circular buffer 9. Holen Sample aus input signal circular buffer 10. Update input signal circular buffer 11. Multiplizieren Sample x Koeffizient 12. Addieren in den Accu 13. Verschieben Output Sample (Accu) in Haltebuffer 14. Haltebuffer DAC SigProc-1-Einführung 37
Adressierung circular buffer Koeffizienten Samples 7. Holen Koeffizienten aus Koeff circular buffer 8. Update pointer Koeff circular buffer 9. Holen Sample aus input signal circular buffer 10. Update input signal circular buffer 11. Multiplizieren Sample x Koeffizient 12. Addieren in den Accu in einem Taktzyklus SigProc-1-Einführung 38