ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Ing. Radek Sedláček, Ph.D., katedra měření K13138 Číslicová filtrace FIR filtry IIR filtry Tyto materiály vznikly za podpory Fondu rozvoje vysokých škol v roce 2013 (projekt č. 1256/2013)
Obsah Číslicové filtry typu FIR a IIR Pojem filtrace základní rozdělení FIR, IIR základní vlastnosti, používané struktury filtrů návrhové prostředky v prostředí MATLAB SPTOOL, FDATOOL problém kvantování koeficientů Snímek 2 z 24
Co je to filtrace signálů 1D, 2D? Odstranění jedné nebo více frekvenčních částí (složek) ze spektra zpracovávaného signálu (např. odstranění rušivých nežádoucích složek). Filtr lze aplikovat jak na zpracování jednodimenzionálního signálu, tak dvoudimenzionálního (např. obrazu) Typy filtrů analogové popsány pomocí modelů spojitých soustav - vyjádření přenosu pomocí Laplaceovy transformace (LT), výpočet spektra pomocí Fourierovy transformace (FT) digitální popsány pomocí modelů diskrétních soustav vyjádření přenosu popis pomocí Z-transformace, výpočet spektra pomocí diskrétní Fourierovy transformace (DFT) Snímek 3 z 24
Souvislost mezi filtrací a konvolucí Spojité soustavy Příklad - vstupní signál X(jobsahující dvě složky f R, f S a filtr s přenosem H(j- typ dolní propust s mezním kmitočtem f 0 x(t) X H y(t) Y Konvoluce v časové oblasti odpovídá prostému násobení ve frekvenční oblasti Snímek 4 z 24
Souvislost mezi filtrací a konvolucí Diskrétní soustavy Uvažujme stejný příklad jako v předchozím případě analogické jako pro spojité signály, jen místo FT se používá Z-transformace diskrétní konvoluce Snímek 5 z 24
Souvislost mezi filtrací a konvolucí Nechť H(z) má přenos b i jsou přímo koeficienty filtru (FIR) Pak v časové oblasti platí: x(n) až x(n-n) jsou vzorky signálu Snímek 6 z 24
Definice číslicových filtrů Z hlediska teorie systémů - ČF = LTI čili Linear Time-Invariable system Velice významná část v oblasti DSP vykazují vynikající vlastnosti ve srovnání s analogovými filtry Slouží pro separaci nebo pro rekonstrukci signálů Základní stavební prvky : zpožďovací člen (paměť) sčítačka násobička Z -1 Snímek 7 z 24
Obecný přenos filtru Každý ČF lze popsat např. přenosovou funkcí, vyjádřenou v z-transformaci (diferenční rovnice) Obecný přenos filtru vyjádřený z-transformaci 0 1. 1 2. 2. 1 1. 1 2. 2. Je-li polynom A(z)=1 (a i =0) pak se jedná o FIR filter Je-li polynom A(z)1 (a i =0) pak se jedná o IIR filter Obecně polynom A(z) definuje zpětnou vazbu mezi výstupem a vstupem z toho důvodu IIR nemusí být vždy stabilní Snímek 8 z 24
Základní rozdělení číslicových filtrů ČF typu FIR ČF typy IIR Finite Impulze Response Vždy stabilní dáno n-násobným polem v nule (n-tý řád filtru) Pro dosažení veliké strmosti nutno zvolit vysoký řád filtru Mají lineární fázi Nevýhodou je nárůst zpoždění Infinite Impulze Responce Nemusí být vždy stabilní Analogie k analogovým filtrům Požadovanou strmost charakteristiky lze dosáhnout při nižším řádu než-li u FIR Nelineární fáze 9
Struktura číslicových filtrů typu FIR Přímá forma (DIRECT FORM I) Transponovaná forma* (DIRECT FORM II TRANSPOSED) duální struktura * k přímé formě I Podstata transpozice: změnit tok dat, zaměnit vstup a výstup, uzly nahradit sčítačkami, sčítačky nahradit za uzly Snímek 10 z 24
Kaskádní řazení FIR Výsledný přenos Při paralelním řazení bloků výsledný přenos dán součtem dílčích přenosů Snímek 11 z 24
Paralelní řazení bloků Při paralelním řazení bloků výsledný přenos dán součtem dílčích přenosů x(n) Z -1 Z -1 Výsledný přenos b 0 b 1 b 2 y(n) H 0 Z -1 Z -1 b 0 b 1 b2 H 1 Snímek 12 z 24
Struktura číslicových filtrů typu IIR Snímek 13 z 24
Struktura číslicových filtrů typu IIR Tato realizace využívá minimální počet zpožďovacích členů Jedná se o tzv. kanonický tvar Snímek 14 z 24
Problém s kvantováním koeficientů Pracujeme-li s konečným rozlišením čísel, nutně tento problém musí nastat V MATLABu jsi spočítám koeficienty filtrů s daleko větší přesností než jsme schopni implementovat na DSP či FPGA Dochází tedy ke kvantování těchto koeficientů S tím souvisí změna frekvenční charakteristiky filtru Nutno kontrolovat může vybočit mimo rámec zadání, v případě IIR filtrů může být nestabilní! Snímek 15 z 24
Návrhové prostředky v prostředí MATLAB Nejdostupnější a nejrychlejší způsob využití prostředí MATLAB Definovány funkce pro návrh FIR i IIR filtrů (v základní knihovně): FIR1 FIR2 : b=fir1(n,wn), B = FIR1(N,Wn,'high') : B = FIR2(N,F,A) Butter : [B,A] = BUTTER(N,Wn), [B,A] = BUTTER(N,Wn,'low') Cheby1 : [B,A] = CHEBY1(N,R,Wp), CHEBY1(N,R,Wp,'stop') Cheby2 : [B,A] = CHEBY2(N,R,Wst), Ellip : [B,A] = ELLIP(N,Rp,Rs,Wp) Snímek 16 z 24
Návrhové prostředky v prostředí MATLAB Vykreslení frekvenční charakteristiky navrženého filtru - funkce freqz [H,W] = FREQZ(B,A,N) Existuje speciální grafický toolbox pro návrh ČF - Filter Design and Analysis Tool (FDATOOL) Je-li řád filtru M, filter má M+1 koeficientů!!! Snímek 17 z 24
FDATOOL grafický nástroj pro design ČF Snímek 18 z 24
FDAtool co dokáže Intuitivní ovládání Design FIR, IIR (Butterworth, Chebysev I, II, Eliptický) Volitelné typy frekvenční charakteristiky DP,HP,PP, PZ Výběr fyzické realizace (přímá, transpovaná, atd.) Vykreslení průběhu frekvenční a fázové charakteristiky Zobrazení rozložení pólů a nul filtru v komplexní rovině Koeficienty navrženého filtru lze exportovat do textového souboru nutno definovat též formát dat (např. double-float, unsigned-16 a další) Snímek 19 z 24
Vliv kvantování koeficientů na frek. char. Příklad : FIR, N=100, Fm =0,3*f s (f s =) Snímek 20 z 24
Detail frek. char okolo f m Snímek 21 z 24
Vliv kvantování koeficientů - shrnutí Při kvantování koeficientů obecně dochází ke změně ve frekvenční charakteristice Při implementaci na DSP nutno ověřit, zda-li filtr splňuje veškeré požadavky U IIR filtrů nutno zkontrolovat polohu pólů (ověřit stabilitu filtru) Snímek 22 z 24
Návod na implementaci digitálního filtru typu FIR Je potřeba vytvořit dvě proměnné typu pole (na DSP formou kruhového bufferu) a jeden pointer Jedná proměnná slouží pro ukládání koeficientů FIR b i Do druhé proměnné se průběžně (v reálném čase) se ukládají vzorky signálu x(n) Pointer p slouží jako ukazatel na buffer s daty Nyní stačí implementovat výpočet diferenční rovnice popisující FIR filter N-tého řádu, např. pomocí for cyklu. 0 0 1 1 Fragment kódu v jazyce C: p++; // p je ukazatel na poslední ( nejnovější) vzorek nutno ošetřit meze!!! y = 0; // nulování výstupní proměnné for (i = 0 ; i < N; i++) { y = y + b(i) * x( [p - i + N] % N ) // adresace pole dat s využitím operátoru modulo } DAC =y //výstup filtrů dej na výstup DA převodníku Snímek 23 z 24
Návod na implementaci digitálního filtru typu FIR V přerušovací rutině se inkrementuje ukazatel p o jedničku, nový vzorek dat získaný např. z A/D převodníku se uloží na adresu danou ukazatelem p, provede se výpočet diskrétní konvoluce, na DSP je hw podpora adresace kruhových bufferů, rozhodně není výpočetně efektivní datový buffer posouvat o jednu pozici zpět. Pole koeficientů FIRu vzorky signálu vzorky signálu vzorky signálu b 0 x(n-6) x(n-7) x(n-8) b 1 x(n-5) x(n-6) x(n-7) b 2 x(n-4) x(n-5) x(n-6) b 3 x(n-3) x(n-4) x(n-5) b 4 b 5 b 6 b 7 b 8 Kruhový buffer Aktuální pointer p x(n-2) x(n-1) x(n) x(n-10) x(n-9) Kruhový buffer Aktuální pointer p x(n-3) x(n-2) x(n-1) x(n) x(n-10) Kruhový buffer Aktuální pointer p x(n-4) x(n-3) x(n-2) x(n-1) x(n) Kruhový buffer b 9 x(n-8) x(n-9) x(n-10) b 10 x(n-7) x(n-8) x(n-9) čas n čas n+1 čas n+2 Snímek 24 z 24