Migrarea către filtre digitale

by donpedro

Funcţia unui filtru este de a elimina componentele nedorite ale semnalului (precum zgomotul aleator) sau de a extrage componentele utile ale semnalului (precum componentele semnalului cu domenii clare de frecvenţă). Să luăm de exemplu proiectarea, simularea şi dezvoltarea unui filtru trece jos. Singurul lucru cunoscut încă de la început este răspunsul aproximativ de frecvenţă cerut filtrului trece jos. Care este următorul pas?

Acest articol descrie o posibilă abordare a proiectării şi simulării filtrelor în numai câteva minute, cu ajutorul a două pachete software cu interfaţă grafică, menite pentru proiectare, simulare şi eventual implementare a filtrului: programul dsPIC® DSC Filter Design şi programul dsPICworks™ data analysis and design.

Pasul 1 – Identificarea cerinţelor

Figura 1

Se presupune că un convertor analog/digital este utilizat pentru eşantionarea unui semnal de intrare la 12 kHz şi că este necesară filtrarea pe semnalul de intrare a frecvenţelor peste 3300 Hz. Pentru realizarea acestui obiectiv este utilizat programul dsPIC DSC Filter Design.
Bara de instrumente a programului oferă câteva modalităţi de începere a procesului de proiectare a filtrului. Dacă, de exemplu, a fost ales un filtru IIR (Infinite Impulse Response), se va selecta cu un click de mouse icon-ul IIR şi se va completa caseta de dialog ce apare (Figura 1).

În caseta de dialog cu intrarea specificaţiilor filtrului, ce apare ulterior, trebuie specificat ce filtru se doreşte a fi proiectat. Frecvenţele de bandă de trecere şi de bandă blocată definesc o bandă de trecere. Există de asemenea o unealtă, care apelată deschide o caseta de dialog ce ajută la specificarea acestor frecvenţe cu respectarea criteriului lui Nyquist.

Pasul 2 – Evaluarea opţiunilor de filtrare

Figura 2

Odată ce caseta de dialog din figura 1 a fost completată, software-ul de proiectare a filtrului evaluează cerinţele de filtrare ale circuitului şi oferă o estimare a ordinului de filtrare pentru un filtru analogic echivalent IIR. Deoarece pot exista cinci tipuri de filtre IIR, bazate pe caracteristicile sale de oscilaţie în banda de trecere şi în banda oprită, software-ul afişează ordinele de filtrare estimate pentru toate cele cinci tipuri de filtre IIR (Figura 2). Unealta selectează automat implementarea optimă a filtrului digital pentru cerinţele specificate în Pasul 1. Filtrul optim este uzual acela de ordinul cel mai mic, deoarece ordinul filtrului este direct proporţional cu timpul de executare al filtrului în implementare DSP. În câteva scenarii, precum un sistem de control în buclă închisă, trecerea peste selecţia automată permite alegerea unui filtru Butterworth, în vederea obţinerii unui răspuns neted (de ex. fără oscilaţii) atât în banda de trecere cât şi în cea blocată. În exemplul prezentat este utilizată selecţia implicită oferită de unealtă, un filtru eliptic.

Pasul 3 – Examinarea filtrului proiectat

Figura 3

După efectuarea unui click de mouse pe butonul Next din figura 2, software-ul afişează o varietate de grafice (figura 3). Acestea pot fi utilizate pentru verificarea faptului că software-ul a generat un filtru potrivit cerinţelor. Graficele sunt în mod special utile mai ales când sunt modificaţi parametrii impliciţi din figura 2. În continuare este necesară crearea unui fişier de coeficienţi ai filtrului (*.flt) în vederea simulării filtrului. Figura 3 prezintă şi meniul de opţiuni apelat pentru salvarea acestui fişier. Fişierul coeficienţilor de filtrare conţine 16 coeficienţi necesari pentru implementarea filtrului eliptic IIR de ordinul 8. Coeficienţii sunt proiectaţi astfel încât filtrul de ordinul 8 este implementat ca 4 etaje în cascadă de filtre de ordin 2.

Pasul 4 – Simularea filtrului

Figura 4

În acest moment, coeficienţii filtrului sunt salvaţi, iar pasul următor este trecerea unor date prin filtru şi examinarea corectitudinii operării de către acesta. Operaţia se efectuează cu ajutorul programului dsPICworks data analysis and design. Programul are abilitatea de a genera sau importa forme de undă, de a efectua diferite operaţii aritmetice sau DSP precum filtrarea sau FFT a formelor de undă şi de a exporta formele de undă în fişiere Windows WAV sau text ASCII. În exemplul de faţă se utilizează un semnal cu două componente sinusoidale la frecvenţe de 100 Hz şi 4300 Hz. Variaţia semnalului în timp este prezentată în regiunea stânga sus a figurii 4. Regiunea din stânga jos a figurii 4 prezintă componentele de frecvenţă ale semnalului. Semnalul de intrare este trecut prin filtrul proiectat în paşii 1,2 şi 3. Caseta de dialog din figura 4 permite utilizatorului să furnizeze fişierul cu forma de undă de intrare, fişierul cu coeficienţii filtrului şi numele fişierului de ieşire ce conţine forma de undă de ieşire din filtru. Semnalul de ieşire filtrat este prezentat în zona din dreapta sus a figurii 4. Zona din dreapta jos din figura 4 prezintă componentele de frecvenţă ale semnalului de ieşire filtrat. Cu siguranţă filtrul va efectua operaţiile identic precum pe procesoarele embedded pe 16 biţi, deoarece programul dsPICworks realizează toate calculele pe 16 biţi, în virgulă fixă.

Pasul 5 – Reglaje dimensionale
Dacă filtrul proiectat nu funcţionează satisfăcător, paşii de la 1 la 4 pot fi reluaţi cu diferite alte selecţii privind filtrarea, inclusiv filtre FIR în locul IIR din pasul 1. Uzual, filtrele IIR oferă un răspuns clar, fără a fi necesară multă memorie. Pentru implementarea unui filtru de ordinul 8 este nevoie de o memorie de aproximativ 64 byte. Filtrele FIR au alte cerinţe de memorie, dar sunt esenţiale în aplicaţii care necesită un răspuns liniar în fază. Un filtru FIR care oferă acelaşi răspuns ca şi filtrul IIR proiectat în acest exemplu poate consuma până la 350 byte de memorie de date. Aceasta însă poate fi redusă la jumătate dacă coeficienţii de filtrare sunt plasaţi în memoria program.

Pasul 6 – Rularea filtrului într-un sistem embedded
Programul dsPIC Filter Design este caracterizat de un meniu generator de cod, care creează un fişier sursă conţinând coeficienţii de filtrare. Suplimentar el oferă funcţii de filtrare FIR şi IIR apelabile în C ce pot fi utilizate într-un mediu de dezvoltare.
Suplimentar acestor funcţii pentru rularea filtrului on-chip proiectat sunt necesare: un compilator C, un depanator in-circuit şi o placă de dezvoltare. Migrarea către filtrele digitale a fost simplificată în timp. Există unelte de dezvoltare pentru PC gratuite sau economice, care permit inginerilor să simuleze şi proiecteze filtre, şi apoi să genereze cod în numai câteva minute. Mai mult, aceste unelte imită operaţiile pe 16 biţi efectuate de microprocesoare.

de Rishi Vasuki – Senior Applications Engineer,
Digital Signal Controller Division / Microchip Technology Inc.

Adaugă un comentariu