33.6 Proiectarea filtrului Chebyshev-Butterworth

O metodă obișnuită de proiectare a filtrelor digitale recursive este prezentată de programul Chebyshev-Butterworth prezentat în Capitolul 20. Se începe cu o diagramă pol-zero a unui filtru analogic în planul-s și îl convertește în filtrul digital dorit prin câteva transformate matematice. Pentru a reduce complexitatea algebrei, filtrul este proiectat ca o cascadă de mai multe etaje, fiecare etaj implementând câte o pereche de poli. Coeficienții recursivi pentru fiecare etaj sunt apoi combinați în coeficienții recursivi pentru întregul filtru. Acesta este un algoritm foarte sofisticat și complicat; o modalitate potrivită de a încheia această lucrare. Iată cum funcționează.

Controlul buclelor

Figura 33-7 prezintă programul și schema de flux pentru metodă, duplicate din capitolul 20. După inițializare și intrare de parametri, porțiunea principală a programului este o buclă care parcurge fiecare pereche de poli din filtru. Această buclă este controlată de blocul 11 ​​din diagramă de flux, și bucla FOR-NEXT în liniile 320 și 460 ale programului. De exemplu, bucla va fi executată de trei ori pentru un filtru cu 6 poli, cu indicele buclei, P%, luând valorile 1,2,3. Adică, un filtru de 6 poli este implementat în trei etaje, cu doi poli pe etaj.

Combinarea coeficienților

Pe durata fiecărei bucle, subrutina 1000 (listată în Fig. 33-8) calculează coeficienții recursivi pentru acel etaj. Aceștia sunt returnați din subrutină în cele cinci variabile: A0, A1, A2, B1, B2. În pasul 10 a organigramei (liniile 360-440), acești coeficienți sunt combinați cu coeficienții tuturor etajelor anterioare, ținute în șirurile: A[ ] și B[ ]. La terminarea primei bucle, A[ ] și B[ ] mențin coeficienții pentru primul etaj. La sfârșitul celei de-a doua bucle, A[ ] și B[ ] rețin coeficienții cascadei din primele două etaje. Când toate buclele au fost finalizate, A[ ] și B[ ] rețin coeficienții necesari pentru implementarea întregului filtru.

Coeficienții sunt combinați așa cum s-a evidențiat anterior în tabelul 33-1, cu câteva modificări pentru a face codul mai compact. În primul rând, indexul șirurilor, A[ ] și B[ ], este deplasat cu doi pe durata buclei. De exemplu, ao este ținut în A[2], a1 & b1 sunt ținuți în A[3] & B[3], etc. Aceasta se face pentru a împiedica programul să încerce să acceseze valori în afara șirurilor definite. Această deplasare este eliminată în blocul 12 (liniile 480-520), astfel încât coeficienții finali recursivi se află în A[ ] și B[ ] fără un offset al indexului.

În al doilea rând, A[ ] și B[ ] trebuie inițializați cu coeficienți corespunzători sistemului identitate, nu toți zerouri. Acest lucru se face în liniile 180 la 240. Pe durata primei bucle, coeficienții pentru primul etaj sunt combinați cu informațiile prezente inițial în aceste șiruri. Dacă toate zerourile ar fi fost inițial prezente, șirurile ar rămâne întotdeauna zero. În al treilea rând, sunt utilizate două șiruri temporare, TA[ ] și TB[ ]. Acestea păstrează vechile valori ale lui A[ ] și B[ ] pe durata convoluției, eliberând A[ ] și B[ ] pentru a reține noile valori.

Pentru a termina programul, blocul 13 (liniile 540-670) ajustează filtrul pentru a avea un câștig unitate în banda de trecere. Acesta operează așa cum s-a descris anterior: calculează câștigul existent cu Ec. 33-7 sau 33-8 și împarte toți coeficienții „a” pentru a normaliza. Variabilele intermediare, SA și SB, sunt sumele coeficienților „a” și respectiv „b”.

Calculați locațiile polului în planul s

Indiferent de tipul de filtru proiectat, acest program începe cu un filtru de trecere scăzut al lui Butterworth în planul s, cu o frecvență cutoff de ω = 1. După cum este descris în ultimul capitol, filtrele Butterworth au poli care sunt la distanță egală în jurul un cerc în planul-s. Având în vedere că filtrul este low-pass, nu se utilizează zerouri. Raza cercului este unu, corespunzătoare frecvenței cutoff ω = 1. Blocul 3 al organigramei (liniile 1080 și 1090) calculează locația fiecărei perechi de poli în coordonate dreptunghiulare. Variabilele de program, RP și IP, sunt părțile reală și imaginară ale locației polului, respectiv. Aceste variabile de program corespund lui σ și ω, unde perechea pol este situată la σ ± jω. Această locație a polului este calculată din numărul de poli din filtru și etajul de lucru, variabilele de program: NP și, respectiv, P%.

Schimbare de la Cerc la Elipsă

Pentru a implementa un filtru Chebyshev, acest model circular al polilor trebuie transformat într-un model eliptic. Planeitatea relativă a elipsei determină cât de multă ondulare (ripplu) va fi prezentă în banda de trecere a filtrului. Dacă locația polului pe cerc este dată de: σ și ω, locația corespunzătoare pe elipsă, σ' și ω', este dată de:

ECUAȚIA 33-9 Transformare circulară la eliptică.
Aceste ecuațiile schimbă locația polului pe un cerc la o locație corespunzătoare pe o elipsă. Variabilele NP și PR sunt numărul de poli din filtru și procentul de ondulare în banda de trecere, respectiv.
Locația pe cerc este dată de σ și ω, iar locația pe elipsă de σ' și ω . Variabilele ε, v și k sunt utilizate numai pentru a crea ecuații mai scurte.

FIGURA 33-7 Proiectarea filtrului Chebyshev-Butterworth.
Acest program a fost prezentat anterior ca tabelul 20-4 și tabelul 20-5 din Capitolul 20.

Figura 33-8 prezintă programul și organigrama pentru subrutina 1000, apelată de la linia 340 a acestui program principal.

FIGURA 33-8 Subrutină apelată din Figura 33-7.

Aceste ecuații folosesc funcțiile sinus și cosinus hiperbolice pentru a defini elipsa, la fel cum funcțiile obișnuite sinus și cosinus operează pe un cerc. Planeitatea elipsei este controlată de variabila PR care este numeric egal cu procentul de ondulație în banda de trecere a filtrului. Variabilele: ε, v și k sunt folosite pentru a reduce complexitatea ecuațiilor și sunt reprezentate în program prin: ES, VX, respectiv KX. Pe lângă conversia de la cerc la elipsă, aceste ecuații corectează locațiile polului pentru a menține o frecvență cutoff unitate. Deoarece multe limbaje de programare nu acceptă funcții hiperbolice, se folosesc următoarele identități:

Aceste ecuații produc operațiuni ilegale pentru PR ≥ 30 și PR = 0. Pentru a utiliza acest program pentru a calcula filtrele Butterworth (adică, zero ripplu, PR = 0), liniile de program care implementează aceste ecuații trebuie să fie ocolite (linia 1120).

Conversie continuu la discret

Cea mai obișnuită metodă de conversie a unui model pol-zero din domeniul-s în domeniul-z este transformata biliniară. Aceasta este o tehnică matematică de mapare conformală, în care un plan complex este distorsionat algebric sau deformat în alt plan complex. Transformata biliniară modifică H(s), în H(z), prin substituția:

ECUAȚIA 33-10 Transformata biliniară.
Această substituție mapează fiecare punct din planul-s într-un punct corespunzător din planul-z.

Adică, scriem o ecuație pentru H(s) și apoi înlocuim fiecare s cu expresia de mai sus. Uzual, se folosește T = 2tan (1/2) = 1,093. Acest lucru face ca gama de frecvență a domeniului-s de la 0 la π radiani/secundă să fie mapată la gama de frecvență a domeniului-z de la 0 până la infinit radiani. Fără a intra în mai multe detalii, transformata biliniară are proprietățile dorite de a converti de la planul-s în planul-z, cum ar fi liniile verticale mapate în cercuri. Iată un exemplu de cum lucrează. Pentru un sistem continuu cu o singură pereche de poli situată la p1 = σ + jω și p2 = σ - jω, funcția de transfer din domeniul-s este dată de:

Transformarea bilineară convertește aceasta într-un sistem discret prin înlocuirea fiecărui s cu expresia dată în ec. 33-10. Se creează o funcție de transfer din domeniul-z care conține, de asemenea, doi poli. Problema este că substituția lasă funcția de transfer într-o formă foarte neprietenoasă:

Lucrând prin algebra lungă și obositoare, această expresie poate fi plasată în forma standard a Ec. 33-3, și coeficienții recursivi identificați ca:

ECUAȚIA 33-11 Transformata biliniară pentru doi poli.

Perechea pol este situată la σ ± jω în planul-s, și ao, a1, a2, b1, b2 sunt coeficienții recursivi pentru sistemul discret.

Variabilele M, T și D nu au o semnificație fizică; ele sunt folosite pur și simplu pentru a face ecuațiile mai scurte.

Liniile 1200-1290 folosesc aceste ecuații pentru a converti locația perechii de poli din domeniul-s, deținută în variabilele RP și IP, direct în coeficienții recursivi, menținuți în variabile, X0, X1, X2, Y1, Y2. Cu alte cuvinte, am calculat un rezultat intermediar: coeficienții recursivi pentru un etaj al unui filtru low-pass cu o frecvență cutoff de unu.

Schimbarea frecvenței low-pass în low-pass

Schimbarea frecvenței filtrului recursiv se realizează, de asemenea, printr-o tehnică de mapare conformă. Să presupunem că știm funcția de transfer a unui filtru recursiv low-pass cu o frecvență cutoff unitate. Funcția de transfer a unui filtru low-pass similar cu o nouă frecvență cutoff, W, este obținută folosind o transformată low-pass la low-pass. Aceasta se realizează, de asemenea, prin substituirea variabilelor, la fel ca în cazul transformatei biliniare. Începem prin scrierea funcției de transfer a filtrului cu cutoff unitate, apoi înlocuim fiecare z-1 cu următoarele:

ECUAȚIA 33-12 Transformata low-pass la low-pass.
Aceasta este o metodă de schimbare a frecvenței cutoff la filtrele low-pass. Filtrul original are o frecvență cutoff unitate, în timp ce noul filtru are o frecvență cutoff W, în intervalul 0 la π.

Aceasta oferă funcția de transfer a filtrului cu noua frecvență cutoff. Următoarele ecuații de proiectare rezultă din aplicarea acestei substituții pe biquad, adică, nu mai mult de doi poli și doi zerouri:

ECUAȚIA 33-13 Conversie low-pass la low-pass.

Coeficienții recursivi ai filtrului cu cutoff unitate sunt prezentați în italic.
Coeficienții filtrului
low-pass cu o frecvență cutoff W sunt în roman.

unde

Schimbarea frecvenței low-pass la high-pass

Transformata de mai sus poate fi modificată pentru a schimba răspunsul sistemului de la low-pass la high-pass, schimbând simultan frecvența cutoff. Acest lucru se realizează folosind o transformată low-pass la high-pass, prin substituția:

ECUAȚIA 33-14 Transformata low-pass la high-pass.
Această substituție schimbă un filtru low-pass într-un filtru high-pass.
Frecvența cutoff a filtrului low-pass este unu, în timp ce frecvența cutoff a filtrul high-pass este W.

Ca mai înainte, acest lucru poate fi redus la ecuațiile de proiectare pentru modificarea coeficienților unui etaj biquad. După cum se dovedește, ecuațiile sunt identice cu cele ale ec. 33-13, cu doar două modificări minore. Valoarea lui k este diferită (așa cum este dată în Ec. 33-14) și doi coeficienți, a1 și b1 sunt negate ca valoare. Aceste ecuații sunt efectuate în liniile 1330 - 1410 din program, oferind frecvența cutoff dorită și alegerea unui răspuns high-pass sau low-pass.