10.3. Proiectarea filtrelor IIR

Ați văzut că filtrele IIR sunt filtre digitale al căror răspunsuri la impuls sunt infinit de lungi. În practică, răspunsul la impuls scade la o valoare foarte mică într-o perioadă finită de timp. Ieșirea unui filtru IIR depinde atât de intrările anterioare și trecute, cât și de ieșirile trecute. Pentru a calcula ieșirea curentă a filtrului IIR, luați (Ny - 1) numărul de ieșiri trecute și luați (Nx - 1) numărul de intrări din trecut. Numind intrările la filtru ca x[.] și ieșirile ca y[.], ecuația pentru ieșirea unui filtru IIR poate fi scrisă ca:

În ecuația de mai sus, b[k] sunt cunoscuți drept coeficienții direcți și a[j] sunt cunoscuți drept coeficienții inverși. Eșantionul de ieșire la indicele i al eșantionului actual este sumă de intrări scalate actuale și trecute (x[i] și x[i-k] atunci când k 0) și ieșiri trecute scalate (y[i-j]). De obicei, Nx este egal cu Ny, iar această valoare este cunoscută ca ordinul filtrului.

Implementarea filtrelor IIR

Filtrele IIR implementate în forma dată de ecuația (1) sunt cunoscute ca filtre IIR de formă directă. Implementările de formă directă sunt, de obicei, sensibile la erori datorită numărului de biți folosiți pentru a reprezenta valorile coeficienților (eroare de cuantificare) și a preciziei utilizate în efectuarea calculelor. În plus, un filtru proiectat pentru a fi stabil poate deveni instabil atunci când numărul de coeficienți (adică, ordinul filtrului) este crescut.

O implementare mai puțin sensibilă se obține prin ruperea implementării formei directe de ordin superior într-o implementare care are mai multe etaje de filtrare în cascadă, dar în care fiecare filtru în cascadă este de un ordin inferior, după cum se arată în figura de mai jos:

(a) Forma directă (de ordin superior)

(b) Etajele filtrului de formă directă în cascadă (fiecare filtru este de ordin mai mic decât filtrul din (a))

În mod obișnuit, fiecare etaj de filtru de ordin inferior din cascadă este un etaj de ordin doi. Fiecare etaj de ordin doi poate fi implementat sub forma directă, unde trebuie să păstrați două intrări anterioare (x[i-1] și x[i-2]) și două ieșiri trecute (y[i-1] și y[i-2]). Ieșirea filtrului se calculează folosind ecuația

y[i] = b0 x[i] + b1 x[i-1] + b2 x[i-2] - a1 y[i-1] - a2 y[i-2] (2)

Implementarea se poate face și în forma directă II mai eficientă, în care mențineți două stări interne (s[i-1] și s[i-2]). Ieșirea filtrului se calculează după cum urmează:

s[i] = x[i] - a1 s[i-1] - a2 s[i-2] (3)

y[i] = b0 s[i] + b1 s[i-1] + b2 s[i-2]

Forma directă II este o structură mai eficientă deoarece utilizează mai puțină memorie. Ea trebuie să stocheze doar două stări interne anterioare (s[i-1] și s [i-2]), în timp ce structura formei directe trebuie să stocheze patru valori anterioare (x[i-1], x[i-2], y[i-1] și y[i-2]).

Modele de filtre IIR

În funcție de ripple-ul din răspunsul în frecvență al filtrului ce se află în banda de trecere și/sau banda de oprire, filtrele IIR sunt clasificate după cum urmează:

• Butterworth: nu are ripple nici în banda de trecere, nici în banda de oprire.

• Chebyshev: ripple numai în banda de trecere

• Invers Chebyshev: ripple numai în banda de oprire.

• Eliptic: ripple atât în ​​banda de trecere, cât și în banda de oprire.

Avantajul utilizării filtrelor Butterworth este pentru aplicații în care doriți un răspuns neted al filtrului și fără ripple. Dar, un filtru Butterworth de ordin mai înalt (în comparație cu Chebyshev, Inverse Chebyshev sau Elliptic) este în general necesar pentru aceleași specificații ale filtrului. Aceasta crește timpul de procesare pentru filtrele Butterworth.

Avantajul filtrelor Chebyshev și Inverse Chebyshev asupra filtrelor Butterworth este banda lor de tranziție mai ascuțită pentru același ordin de filtru. Pentru a decide care din aceste două tipuri de filtre să utilizeze, avantajul filtrelor Inverse Chebyshev asupra filtrelor Chebyshev este acela că distribuie ripple în banda de oprire în locul benzii de trecere.

Deoarece filtrele eliptice distribuie ripple atât în ​​banda de trecere cât și în banda de oprire, acestea pot fi implementate de obicei cu cel mai mic ordin pentru aceleași specificații ale filtrului. Prin urmare, au viteze de execuție mai rapide decât oricare dintre celelalte filtre.

Aplicații ale filtrelor IIR

Avantajul filtrelor IIR asupra filtrelor FIR este că filtrele IIR necesită de obicei mai puțini coeficienți de filtru pentru a efectua operații de filtrare similare. Astfel, ele se execută mult mai repede și nu necesită memorie suplimentară, deoarece se execută pe loc.

Dezavantajul filtrelor IIR este acela că au caracteristici de fază neliniare. Prin urmare, dacă aplicația dvs. necesită un răspuns de fază liniar, atunci ar trebui să utilizați un filtru FIR în schimb. Dar, pentru aplicațiile în care nu este necesară informația de fază, ca monitorizarea simplă a semnalului, pot fi utilizate filtre IIR. Astfel, filtrele band-pass în analizoare de octavă în timp real sunt în mod obișnuit filtre IIR, din cauza vitezei lor mai mari și, de asemenea, pentru că este necesar să se determine distribuția puterii de sunet pe mai multe benzi de frecvență, dar nu este nevoie să se determine faza semnalului. Aplicațiile unor astfel de analizoare de octavă, în care informațiile despre fază nu sunt importante, sunt testele de vibrație ale aeronavelor și submarinelor, testarea aparatelor, etc.

Exercițiul 10-1

Obiectiv: Proiectarea unui filtru IIR band-pass pentru a fi utilizat într-un analizor de octavă.

1. Lansați aplicația Digital Filter Design Toolkit. Panoul Meniu principal se deschide după cum se arată.

2. În Main Menu, selectați Classical IIR Design și faceți clic pe butonul Open. Panoul de proiectare al Classical IIR Design se deschide după cum se arată.

În stânga, un grafic prezintă caracteristica răspunsului Magnitude vs. Frequency a filtrului pe care îl proiectați. Specificațiile pentru filtrul dvs. pot fi introduse în partea de introducere de text din partea dreaptă sus a panoului de proiectare.

passband response este câștigul minim permis în banda de trecere. Acesta este reprezentat de linia de cursor albastru orizontală din graficul Magnitude vs. Frequency. Cu referința la 0 dB, este de asemenea la fel ca ripple de passband.

passband frequencies determină marginile de frecvență ale benzii de trecere. Pentru filtrele lowpass și highpass, aveți doar o margine de frecvență. Pentru filtrele bandpass și bandstop, veți avea două. Aceste frecvențe sunt reprezentate de liniile albastre verticale din graficul Magnitude vs. Frequency.

stopband attenuation este atenuarea minimă în banda de oprire. Linia de cursor roșie orizontală reprezintă această atenuare în graficul Magnitude vs. Frequency.

stopband frequencies determină marginile de frecvență ale benzii de oprire. Pentru filtrele lowpass și highpass, aveți doar o margine de frecvență. Pentru filtrele bandpass și bandstop, veți avea două. Aceste frecvențe sunt reprezentate de liniile roșii verticale din graficul Magnitude vs. Frequency.

Controlul sampling rate specifică rata de eșantionare în eșantioane pe secundă (Hz).

Controlul type specifică unul dintre cele patru tipuri de filtre clasice:

Lowpass
• Highpass
• Bandpass
• Bandstop

Controlul design specifică unul dintre cei patru algoritmi clasici de proiectare a filtrelor :

* Butterworth
* Chebyshev
* Invers Chebyshev
* Eliptic

Sub porțiunea de introducere a textului este un indicator care arată ordinul filtrului IIR.

Aplicația DFD estimează automat ordinul filtrului ca fiind cel mai mic ordin posibil care îndeplinește sau depășește specificațiile de filtru dorit.

În partea stângă jos a panoului Classical IIR Design este fereastra messaje în care sunt afișate mesajele de eroare.

Veți folosi panoul Classical IIR Design pentru a proiecta un filtru bandpass IIR care poate fi utilizat într-un analizor de octavă. Analizoarele de octavă (vezi lecția din Setul de instrumente pentru Analizor de terță-Octavă) sunt utilizate în aplicații unde trebuie să determinați modul în care puterea semnalului este distribuită pe un anumit interval de frecvențe. Aceste aplicații includ domeniile de acustică arhitecturală, teste de zgomot și vibrații în aeronave și submarine, testarea aparatelor de uz casnic etc.

Un analizator de octavă folosește filtre bandpass pentru a separa puterea semnalului în mai multe benzi de frecvență. Institutul Național American de Standarde impune ca aceste filtre să respecte anumite specificații. Niște specificații pentru unul dintre aceste filtre sunt:

fp1 = 890,90 Hz
fp2 = 1122,46 Hz
ripplu maxim în bandpass < 50 milibeli
fs1 = 120,48
fs2 = 8300
atenuareą în bandstop > 65 dB

Deoarece scopul filtrului bandpass este de a determina nivelul de putere acustică într-o anumită bandă de frecvență, iar informația de fază a semnalului nu este utilizată, nu este necesar ca filtrul să fie cu fază liniară. Prin urmare, puteți alege un filtru IIR pentru această aplicație. Veți folosi setul de instrumente DFD pentru a proiecta filtrul IIR pentru a îndeplini aceste specificații.

3. Schimbați controlul type în caseta de introducere a textului în bandpass.

Explicația comenzilor din caseta de introducere a textului este aceeași ca înainte, cu excepția faptului că pentru că ați selectat un filtru bandpass, există două controale pentru frecvențele passband și frecvențele bandstop. Acestea sunt notate cu fp1, fp2, fs1 și fs2, după cum se arată în figura următoare și au următoarea relație:

fs1 < fp1 < fp2 < fs2

Frecvențele benzii de trecere și frecvențele benzii de oprire pentru un filtru bandpass

4. Privind la specificațiile din pasul 2, introduceți următoarele valori în controalele din caseta de introducere a textului

passband response - 0,5
passband frequencies 890,90 and 1122,46
stopband attenuation -65
stopband frequencies 120,48 and 8300
sampling rate 25600
type bandpass
design elliptic

Rețineți că 50 milibeli = 50/1000 Beli = 50/100 decibeli = 0,5 dB. Acesta este motivul pentru care ați introdus răspunsul benzii de trecere ca - 0,5 dB.

5. Pe graficul Magnitude Vs. Frequency este un cursor pătrat de urmărire pe care îl puteți deplasa. Frecvența și mărimea corespunzătoare a punctului în care este plasat cursorul sunt afișate pe indicatoarele de frecvență și magnitudine sub grafic. Mutați cursorul pătrat în regiunea benzii de trecere și verificați dacă atenuarea în banda de trecere nu este niciodată sub - 0,5 dB, așa cum a fost specificat în controlul passband response.

6. Design implicit al filtrului este Elliptic. Modificați designul filtrului unul câte unul la Butterworth, Chebyshev și Inverse Chebyshev. Observați ordinul filtrului. Pentru același ordin de filtru, care din cele patru modele de filtre are cea mai ascuțită regiune de tranziție?

7. Puteți salva specificațiile filtrului într-un fișier pentru o utilizare ulterioară.

Din meniul DFD, selectați Save Spec ... Când vi se solicită numele fișierului în care doriți să salvați specificațiile filtrului, introduceți bandpass.iir. În exercițiul 10-3, veți încărca acest fișier și veți analiza caracteristicile filtrului pe care tocmai l-ați proiectat.

8. De asemenea, puteți salva coeficienții filtrului proiectat într-un fișier pentru utilizare ulterioară cu setul de instrumente DFD sau cu alte programe. Din meniul DFD, selectați Save Coeff.... Când vi se solicită numele fișierului în care doriți a salva coeficienții filtrului, tipăriți bpiir.txt. Salvați fișierul ca fișier text. Apendicele oferă formatul fișierului text în care sunt stocați coeficienții.

9. Acum că ați salvat specificațiile filtrului și coeficienții, puteți închide aplicația. Selectați File » Close pentru a închide panoul Classical IIR Design. Apoi, selectați Quit în meniul principal pentru a ieși din DFD Toolkit.

Sfârșitul exercițiului 10-1

10.4. Proiectarea filtrelor FIR