logo

Digital Signal Processing

Kursteil 2: Abtasten und digitale Filtertechnik
Digital Signal Processing Kursteil 2: Abtasten und digitale Filtertechnik Nachdem wir in der letzten Folge das Abtasten von Signalen erklärt hatten, kommen wir diesmal darauf zurück, um die damit verbunde- nen Effekte kennenzulernen. Danach steigen wir dann in die digitale Filtertechnik ein. Kennt man von einem abgetasteten Signal nur die Werte zu den Abtastzei- 1 ten, gibt das Abtasttheorem Auskunft, x7 x8 ob alle Signalinformationen in den x1 x6 abgetasteten Werten enthalten sind x2 x5 x9 oder nicht: u x3 x4 t Enthält ein Signal nur Signalanteile mit x 10 Frequenzen kleiner als fmax, so reichen die 4 8 0 1 2 3 5 6 7 9 11 12 Abtastwerte zur Rekonstruktion des Sig- nals aus, sofern sie mit einer Abtastrate 10 Downsampling größer als 2·fmax gewonnen wurden. Faktor 4 x y Ein Beispiel soll eine Verletzung dieses x 11 x 12 Theorems demonstrieren, wenn ein Signal zu hohe Frequenzen für eine y2 gegebene Abtastrate enthält. MUSICG1 erzeugt eine Tonleiter ab 40 u y1 Hz. Es werden 60 Töne erzeugt, die t jeweils einen Halbton ansteigen, so daß ein Bereich von fünf Oktaven überstrichen wird. Der höchste Ton hat 0 1 2 3 eine Frequenz von etwa 14 kHz. Die Töne werden in MUSIC1.WAV mit einer Abtastrate von 44,1 kHz gespeichert, das Abtasttheorem ist also erfüllt, was Bild 1. Beim Down- sich problemlos durch Anhören verifi- sampling eines Signal y3 980015 - 2 - 11 zieren läßt. wird nur jedes xte Sample genommen. DOWNSAMPLING als 11025 Hz/2 = abgetastet, so entstehen Nun tasten wir das gerade generierte 5512,5 Hz vor- bestimmte Abtastwerte. Jedes Signal erneut ab, allerdings mit nur handen. Die darüberliegenden Töne Signal mit den Frequenzen m·fs - f0 11025 kHz, also mit einem Viertel der werden nach dem Abtasttheorem oder m·fs + f0 (m = 1, 2, 3, ursprünglichen Abtastfrequenz. Dieser nicht korrekt rekonstruiert und des- 4...) erzeugt bis auf das Vorzeichen Vorgang wird Downsampling genannt halb in völlig falsche Frequenzen die gleichen Abtastwerte, die zu f0 und vom Programm DWNSMPL1.EXE umgesetzt. Dies bezeichnet man als gehörenden Alias-Frequenzen (Bild 2). durchgeführt. Es verwandelt dazu Aliasing. Nach dem Abtasten kann man Signale MUSIC1.WAV in die Datei MUSIC2.WAV. dieser Frequenzen nicht unterschei- Den Downsampling-Faktor gibt man ALIAS-FREQUENZEN den. Sie alle treten infolge der abgeta- im Aufruf Der Vorgang des Aliasing ist übrigens steten Werte mit Frequenz f0 auf. Um DWNSMPL1 \inp=MUSIC1.WAV keineswegs willkürlich, sondern ziem- das zu vermeiden, schaltet man vor \out=MUSIC2.WAV \factor=4 lich einfach nachzuvollziehen. Wird einem A/D-Wandler ein Tiefpaßfilter, ein sinusförmiges Signal mit der Fre- das die Alias-Frequenzen unterdrückt. an. Nun sind lediglich niedrigere Töne quenz f0 < fs/2 mit der Frequenz fs Und damit wären wir beim Thema Elektor 2/98 66 T I E F PA S S F I LT E R U N G Dies muß nicht mit einem “gewöhnli- 2 Alias-Frequenzen chen” Filter geschehen, sondern läßt sich auch in einem digitalen Verfahren erledigen. Wir betrachten zuerst das analoge Tiefpaßfilter (Bild 3 und Bild 4) und versuchen, sein Verhalten digi- tal nachzuvollziehen. Ein bißchen Mathematik läßt sich nicht vermeiden, fs - f 0 fs + f 0 2fs - 2f 0 2fs + 2f 0 obwohl es der Einfachheit halber nicht sehr ”sauber” zugeht. Während eines Abtastintervalls mit f0 fs fs 2fs der Dauer ∆T = tk+1-tk ändert sich 2 die Eingangsspannung u nur wenig, sondern behält während der Zeit den Anfangswert uk . Auch die Ausgangs- 980015 - 2 - 12 spannung wird sich nur wenig ändern, so daß durch den Widerstand Aliasing R der fast konstante Strom i = (uk- Bild 2. Die äquivalen- vk)/R fließt. Am Beginn des Abtastin- unterscheidet sich beim Hörtest deut- ten Frequenzen ent- tervalls weist der Kondensator die lich vom Ursprung. Mit diesem Filter stehen durch den Spannung vk auf. Er wird ∆t lang mit kann man nun etwas experimentieren, Aliasing-Effekt. diesem Strom geladen und hat dem- indem man zum Beispiel verschiedene nach die Spannung Werte von r probiert. Größer als 1 darf vk+1 = vk + i ∆t/C man r allerdings nicht wählen, da das Bild 3. Ein RC-Glied = vk + (vk-uk)/RC · ∆t Filter sonst instabil wird. als analoger Tiefpaß. Wir lösen nach uk+1 auf und erhalten Durch bloßes Zuhören kann man ein vk+1 = r·vk + (1-r)uk mit Filter natürlich nicht sehr präzise cha- 3 r = 1 -(∆t/RC) rakterisieren. Dazu benötigen wir ein R Das ist die Berechnungsvorschrift für paar Testsignale, um beispielsweise das unser erstes digitales Filter. Das Pro- Filterverhalten im Zeit- und Fre- gramm ist auf der CD-ROM unter quenzbereich zu analysieren. Dies dem Namen LP1.EXE zu finden, den kann am einfachsten durch die C Quellkode LP1.PAS kann man Bild 5 u (t) v (t) entnehmen. PULSGENERATOREN Die Zeilen 1 bis 5 bilden den Pro- geschehen, die zum Werkzeugkasten grammkopf und vereinbaren, daß die auf der CD-ROM gehören. Der erste Programmbibliothek SIGLIB.PAS ver- und einfachste mit der Bezeichnung wendet werden soll. Die Zeilen 6 und PULSE1.EXE erzeugt einen sehr kur- 980015 - 2 - 13 7 vereinbaren die notwendigen Varia- zen Impuls, der nur aus einem einzi- blen, während Zeile 10 die Initialisie- gen Abtastwert ungleich Null besteht, 6 dargestellt. rung von SIGLIB.PAS aufruft. Die während alle anderen Abtastwerte Oben wird die Reaktion des Filters Zeilen 11 bis 14 besetzen die Parame- Null sind. Die Position und Höhe des tmp1.wav auf den Impuls pulse1.wav ter vor und gegebenenfalls (durch Pro- Pulses kann man über Parameter ein- dargestellt, unten tmp.wav, die lang- zeduren aus SIGLIB.PAS) mit aktuel- stellen. Dieses elementare Signal ist sam ansteigende Antwort auf den len Parametern des Programmaufrufs. sehr wichtig und wird bei späteren Sprung step1.wav. In den Zeilen 16 und 17 wird die Ein- Experimenten oft benötigt, wie wir Dieses Experiment kann man wieder und Ausgabe der WAV-Dateien akti- noch sehen werden. mit verschiedenen r-Werten viert. Zeile 19 initialisiert den Filter- Ein weiterer Impulsgenerator ist das durchführen. Was passiert zum Bei- wert. Die Schleife der Zeilen 20 bis 25 Programm STEP1.EXE, das eine ein- spiel für r = -0.9? führt den eigentlichen Filtervorgang fache Stufe mit vorgegebener Höhe Mit diesen Kurvenverläufen kann man aus. In Zeile 22 wird der aktuelle Fil- und Position erzeugt. Als Beispiel das Verhalten eines Tiefpaßfilters aber terausgangswert in die Ausgabedatei führen wir den Aufruf DO XLP1.SPP nur ungenau charakterisieren. Eine geschrieben. Der eigentliche Filteral- aus. Die damit erzeug- weitere Möglichkeit ist gorithmus ist in Zeile 23 enthalten. Die ten Signale sind in Bild Bild 4. Sprungantwort ein Sweep-Generator, Anweisung in Zeile 26 schließt mit der des Tiefpasses. bekannten Prozedur alle Dateien und damit das Programm. 4 uk u (t) Das Beispiel zeigt, daß Programme zur digitalen Signalverarbeitung nicht immer lang und undurchschaubar v (t) sein müssen. Den sonst vorhandenen vk vk+1 Ballast nimmt uns in diesem Kurs die Programbibliothek SIGLIB.PAS ab. Zum Test des Filters bearbeiten wir die Datei MUS1.WAV (zunächst anhören !) von der CD-ROM. Dies geschieht durch den Aufruf lp1 \r=0.995 \scale=10 \inp=mus1.wav \out=tmp.wav t Das entstehende Signal tmp.wav 980015 - 2 - 14 Elektor 2/98 67 001 program lp1 ; S P E K T R U M S - A N A LY S E R 5 002 uses dos,crt,graph ; 003 Was wäre ein Kurs über digitale Sig- 004 {$I SIGLIB.PAS } nalverarbeitung wert ohne die Mög- 005 lichkeit, auch Spektren von Signalen 006 var k:int ; anschauen zu können. Zu diesem 007 y,scale,r:float ; Zweck gibt es auf der CD-ROM das 008 Programm SPEC1.EXE, (Quellkode 009 begin SPEC1.PAS), das Spektren von WAV- 010 start(’simple lowpass’) ; Dateien berechnen und anzeigen 011 scale:=1.0 ; set_par_real(‘\scale=’,scale) ; kann. 012 r:=0.95 ; set_par_real(‘\r=’,r) ; Zur Berechnung eines Spektrums 013 inp_fn:=’pulse1.wav’ ; set_par_string(‘\inp=’,inp fn) ; benutzt SPEC1.EXE die sogenannte 014 out_fn:=’tmp.wav’ ; set_par_string(‘\out=’,out fn) ; 015 Diskrete Fouriertransformation (DFT), 016 open_inp(inp_fn) ; die aus N Werten N/2 Amplituden- 017 open_out(out_fn) ; werte ableitet, die zu den Frequenzen 018 0 bis fs/2 gehören. In unserem Pro- 019 y:=0 ; gramm ist N = 4096. Diese Amplitu- 020 for k:=1 to nsamples do denwerte werden anschließend loga- 021 begin rithmisch dargestellt, um einen großen 022 output(scale*y) ; Amplitudenbereich zu erhalten. 023 y:=r*y+(1-r)*input ; Das Experiment XSPEC1.SPP erzeugt 024 if (k mod 2000)=0 then write(‘.’) ; zwei Signale mit den Frequenzen 025 end ; 193,7988 Hz (tmp1.wav) und 196,4905 026 stop ; Hz (tmp2.wav) mit jeweils 4096 Sam- 026 end. Bild 5. Pascal-Quell- ples bei der Abtastrate von 44.100 Sam- kode des digitalen Fil- ples/s. Führt man die DFT an diesen ters LP1. Sinussignalen durch, erhält man die ebenfalls auf der CD-ROM vorhan- beiden in Bild 8 dargestellten Spek- den. Mit dem Aufruf von tren. DO XLP2.SPP anzusehen. Dazu muß man aber erst Wie man sieht, scheint in dem ersten wird ein Sweep-Signal von 1...1000 Hz einmal die Möglichkeit kennenlernen, Signal (tmp1.wav, links oben) nur erzeugt (oben in Bild 7) und auf das Spektren von Signalen zu berechnen eine Frequenz vorhanden zu sein. Tiefpaßfilter gelegt. Die Amplitude des und zu betrachten. Das Spektrum ist wie erwartet schön Ausgangssignals (unten) wird mit stei- linienförmig. Dagegen zeigt die Aus- gender Frequenz kleiner. Eine weitere wertung des zweiten Signals Möglichkeit ist es, Weißes Rauschen Bild 6. Impuls- und (tmp2.wav rechts oben) nur einen auf das Tiefpaßfilter zu geben und sich Sprungantwort des Peak von etwa 20 dB, das Spektrum das Spektrum des Ausgangssignals Tiefpasses. fällt links und rechts von der Spitze 6 980015 - 2 - 16 68 Elektor 2/98 7 Bild 7. Ein Sweep-Sig- nal wird durch den aber nicht stark ab. wenn es zur DFT herangezogen wer- Tiefpaß geleitet. Wie kommt die DFT zu diesem Ergeb- den. Auf das Signal tmp2.wav trifft das nis, daß alle Frequenzen im Signal ein nicht zu. Der Wert des Signals am lin- wenig vorkommen? Bild 9 zeigt, daß ken Ende ist Null, am rechten Ende Bild 8. Spektren von beim Signal tmp1.wav eine Anzahl aber nicht, da 18,5 Perioden in den Sinussignalen, oben vollständiger Perioden genau in den Ausschnitt von 4096 Punkten passen. ohne und unten mit Ausschnitt von 4096 Punkten paßt, Aus diesem Grund werden zur Dar- Fensterung. 8 980015 - 2 - 18 Elektor 2/98 69 9 980015 - 2 - 19 Bild 9. Die Signale passen mehr oder sind unten die Spektren der Signale weniger gut in das mit Fensterung wiedergegeben. Wie Fenster des Spek- versprochen, ist das Spektrum von trumanalysers. tmp2.wav nun deutlich linienförmiger, die scharfe Linie bei tmp1.wav aller- dings etwas breiter geworden, der stellung des Signals alle möglichen Preis, den man bei der Fensterung Schwingungen benötigt und entspre- bezahlen muß. Der Spektrumanalyser chend von der DFT angezeigt. auf der CD-ROM läßt die Wahl, mit oder ohne Fensterung zu arbeiten. Das Thema Fensterung wird uns übrigens FENSTERLN noch einmal begegnen, wenn es um Natürlich ist dies kein befriedigender Filtersynthese geht. Zustand, denn die DFT soll auch beim (980015-2)rg Signal tmp2.wav ein annähernd lini- enförmiges Spektrum erzeugen. Das erreicht man durch eine Multiplikation In der nächsten Folge werden wir dann des Eingangssignals (oben in Bild 10) ein paar echte Signale mit dem Spek- mit einer Fensterfunktion (in der trumanalyser analysieren und mit dem Mitte). Es entsteht das unten abgebil- Thema Filterung fortfahren. dete Signal, das nun einer DFT unter- zogen wird. Diese Fensterfunktion erzwingt sozusagen, daß das Signal für die DFT an den Rändern “harmloser”, glatter und das resultierende Spek- Bild 10. Fensterung trum linienförmiger wird. In Bild 8 heißt Multiplikation des Signals mit einer Fensterfunktion. 10 980015 - 2 - 20 70 Elektor 2/98
DMCA.com Protection Status Copyright by webtailieu.net