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