Filtri numerici IIR e FIR
In questa pagina 6
Uno degli usi più frequenti di µC e DSP è l'elaborazione numerica dei segnali e il controllo di processi (Microcontrollori e DSP - definizioni e scelta del dispositivoUn microcontrollore (µC) è un microprocessore con memoria e periferiche (ADC, timer, PWM, porte seriali) sullo stesso chip, pensato per il controllo; un DSP è un processore ottimizzato per l'elaborazione numerica del segnale in tempo reale (moltiplicatore e istruzione MAC, accessi multipli alla memoria, indirizzamento circolare, DMA). Oggi le due famiglie si sovrappongono (DSC). La scelta del dispositivo si fa su costo, prestazioni, periferiche e tempo di sviluppo (time to market), non sulla sola frequenza di clock.Microcontrollori e DSP - definizioni e scelta del dispositivo →). La differenza di fondo è la retroazione: assente nel filtraggio, indispensabile nel controllo (Regolatori PI e PID digitaliIl PI digitale è $y(k)=k_p,e(k)+y_I(k)$ con $y_I(k)=k_I',e(k)+y_I(k-1)$ e $k_I'=k_iT_c$ (con una MAC bastano 3 cicli). Nel PID la derivata si calcola come $\frac{k_d}{T_c}[e(k)-e(k-1)]$ ed è sensibile al rumore: si usa la versione filtrata $y_d(k)=\frac{k_d}{T_c+\tau_L}[e(k)-e(k-1)]+\frac{\tau_L}{T_c+\tau_L}y_d(k-1)$ o una media su più campioni. Con la saturazione dell'attuatore serve l'anti-wind-up: $|y_I|\le L(k)=Y_{max}-|k_pe(k)|$. Il controllo dead-beatcontrollo che porta l'errore a zero in un numero finito di passi (predittivo) azzera l'errore in un numero finito di passi ma è poco usato in industria.Regolatori PI e PID digitali →).
Struttura di un filtro digitale
Il segnale analogico di una sorgente passa per un circuito di condizionamentoadattamento di livello e filtraggio del segnale prima dell'ADC (adattamento di livello, filtro anti-aliasing: Quantizzazione, fattori di scala e cicli limiteUn algoritmo di filtro o regolatore pensato per un processore ideale va adattato alla realtà: temporizzazionedistribuzione nel tempo delle operazioni di un algoritmo (l'algoritmo nella ISR dell'ADC, durata minore di $T_c$), acquisizione (condizionamento del segnale per sfruttare tutto il fondo scala dell'ADC), fattori di scala (normalizzazione intera o 1.15; evitare overflow), quantizzazione di ingresso, uscita, coefficienti e prodotti (sposta i poli, genera errori a regime e cicli limite). Una frequenza di campionamento troppo alta rende più critica la quantizzazione dei coefficienti: va scelta coerente con la lunghezza di parola.Quantizzazione, fattori di scala e cicli limite →) e per il convertitore A/D, che produce due effetti: campionamento () e quantizzazione (da analogico a numerico). Il DSP elabora la sequenza dei campioni e produce la sequenza . Come i filtri analogici, quelli digitali possono essere passa-basso, passa-altofiltro che lascia passare le alte frequenze e attenua le basse, passa-banda, elimina-banda. Ogni filtro analogico può essere riprodotto (più o meno fedelmente) per via digitale; non vale il contrario: esistono filtri digitali (FIRFinite Impulse Response: filtro a risposta impulsiva finita, non ricorsivo) senza equivalente analogico.
Un filtro numerico è descritto da una equazione alle differenze
- Se almeno un il filtro è IIR (a risposta impulsiva infinita): è ricorsivoin cui l'uscita dipende anche da campioni di uscita precedenti, perché dipende da , e il transitorio non si estingue mai del tutto.
- Se tutti gli è FIR (a risposta impulsiva finita): combinazione lineare di campioni dell'ingresso.
Passa-basso IIR del primo ordine
Risposta al gradino (, con ): , da cui Per , si ha : sembra la versione campionata di un passa-basso analogico del primo ordine; la velocità cresce con (purché ).
Grafico interattivo: Risposta al gradino del filtro y(k) = 0,1 x(k) + 0,9 y(k-1): y(k) = 1 - 0,9^(k+1), tende a 1 senza raggiungerlo mai (a regime entro il 10% dopo 22 campioni)
Regole pratiche per i coefficienti:
- se il guadagno in continuarapporto tra uscita e ingresso a regime per ingresso costante è 1 (in generale , la somma dei divisa per );
- se il filtro è stabile (); per esempio è numericamente instabile ().
Limite di precisione. Una risposta molto veloce richiede vicino a 1, cioè vicino a 0: in un processore a 8 bit con formato 1.7 il minimo numero non nullo è , quindi per il coefficiente non è più rappresentabile e diventa 0.
Tempo di salita e di assestamento. Il numero di campioni per arrivare a una frazione del valore finale è il minimo tale che , cioè . Per e (si dice "tempo di salitatempo per arrivare a una frazione fissata (qui 90% o 99%) del valore finale al 90%"): , quindi 22 campioni. Per e il 99%: , quindi 34 campioni; con s sono ms.
Filtro analogico equivalente (Eulero). Sostituendo (Discretizzazione di Eulero e TustinPer realizzare numericamente un filtro o regolatore $F(s)$ si approssima $\frac1s$ con un integratore a tempo discreto. Eulero: $\boxed{s=\dfrac{1-z^{-1}}{T_c}}$ (da $\mathrm{Int}(nT)=\mathrm{Int}((n-1)T)+T,x(n)$). Così $\dfrac{1+s\tau_z}{1+s\tau_p}$ diventa $y(k)=\dfrac{\tau_p}{T_c+\tau_p}y(k-1)+\dfrac{T_c+\tau_z}{T_c+\tau_p}x(k)-\dfrac{\tau_z}{T_c+\tau_p}x(k-1)$. Il passaggio inverso (da algoritmo a $F(s)$) usa $z^{-1}\approx1-sT_c$. L'approssimazione è affidabile solo fino a circa $f_c/10$ (distorsione, warping); Tustin $s=\frac2{T_c}\frac{1-z^{-1}}{1+z^{-1}}$ è più fedele.Discretizzazione di Eulero e Tustin →) il filtro con corrisponde a con Esempio: a kHz (s): s, frequenza di tagliofrequenza a cui il modulo scende di 3 dB rispetto alla banda passante Hz kHz. Valore finale della risposta a un gradino unitario: . Il rapporto : nel campo in cui l'approssimazione di Eulero vale (sotto ).
Il polo del filtro analogico equivalente è posto a : in relazione alla frequenza di campionamento .
Dalla risposta al gradino ai coefficienti. Se la risposta a un gradino unitario è i primi due zeri indicano un ritardo di 2 campioni: il filtro è . Il primo valore non nullo è ; poi dà ; si verifica ✓ e (guadagno 1, valore finale 1). Il polo è in ().
Passa-alto IIR
con (meglio ): con risposta al gradinoandamento dell'uscita quando l'ingresso passa da 0 a 1 e vi resta come quella di un passa-alto del primo ordine; minori danno risposte più veloci. Per si hanno risposte oscillatorie smorzate o instabili. Più in generale, nei filtri il polo è e lo zero è in (con la trasformazione di Eulero: Discretizzazione di Eulero e TustinPer realizzare numericamente un filtro o regolatore $F(s)$ si approssima $\frac1s$ con un integratore a tempo discreto. Eulero: $\boxed{s=\dfrac{1-z^{-1}}{T_c}}$ (da $\mathrm{Int}(nT)=\mathrm{Int}((n-1)T)+T,x(n)$). Così $\dfrac{1+s\tau_z}{1+s\tau_p}$ diventa $y(k)=\dfrac{\tau_p}{T_c+\tau_p}y(k-1)+\dfrac{T_c+\tau_z}{T_c+\tau_p}x(k)-\dfrac{\tau_z}{T_c+\tau_p}x(k-1)$. Il passaggio inverso (da algoritmo a $F(s)$) usa $z^{-1}\approx1-sT_c$. L'approssimazione è affidabile solo fino a circa $f_c/10$ (distorsione, warping); Tustin $s=\frac2{T_c}\frac{1-z^{-1}}{1+z^{-1}}$ è più fedele.Discretizzazione di Eulero e Tustin →).
FIR: la media mobile
è un filtro passa-basso a media mobile di ordine : si assesta in periodi di campionamento e, come tutti i FIR, non ha problemi di stabilità numerica anche con coefficienti sbagliati. Per la risposta al gradino è : transitorio finito in 4 passi, impossibile per un filtro analogico. Per avere una risposta simile a quella di un IIRInfinite Impulse Response: filtro a risposta impulsiva infinita, ricorsivo serve un ordine molto maggiore: un FIR con imita un IIR con (circa ...), ma richiede 22 termini invece di 2: è un risultato di valore generale (a parità di prestazioni un FIR richiede più calcoli di un IIR). La risposta in frequenza del FIR ha zeri di trasmissionefrequenze a cui il filtro annulla il segnale (alcune frequenze sono annullate per la periodicità della struttura: per a multipli di ) e un inviluppo vicino a quello del passa-basso analogico equivalente. Un esempio di laboratorio: media mobilemedia degli ultimi N campioni, aggiornata a ogni nuovo campione di 16 campioni dell'ADC a 12 bit; la somma si aggiorna togliendo il campione più vecchio e sommando il nuovo (yma -= xma[k]; yma += x; xma[k] = x).
Passa-alto FIR: (o forme analoghe): risposta al gradino che si esaurisce in passi, con per ottenere una risposta confrontabile con il passa-alto IIR.
Quando si usa quale
- IIR: pochi calcoli, ottima corrispondenza con un prototipo analogico (si ottiene per discretizzazione); può avere problemi di stabilità numerica per la precisione finita (Quantizzazione, fattori di scala e cicli limiteUn algoritmo di filtro o regolatore pensato per un processore ideale va adattato alla realtà: temporizzazionedistribuzione nel tempo delle operazioni di un algoritmo (l'algoritmo nella ISR dell'ADC, durata minore di $T_c$), acquisizione (condizionamento del segnale per sfruttare tutto il fondo scala dell'ADC), fattori di scala (normalizzazione intera o 1.15; evitare overflow), quantizzazione di ingresso, uscita, coefficienti e prodotti (sposta i poli, genera errori a regime e cicli limite). Una frequenza di campionamento troppo alta rende più critica la quantizzazione dei coefficienti: va scelta coerente con la lunghezza di parola.Quantizzazione, fattori di scala e cicli limite →) e fase non lineare.
- FIR: sempre stabilecon transitorio che si estingue: l'uscita non cresce senza limite, può avere fase lineareritardo uguale per tutte le frequenze, quindi nessuna distorsione di forma (da considerare se ci sono specifiche sulla fase), ma richiede molti più calcoli e memoria.
Nei compiti si chiede spesso: tempo di salita al 99% (in campioni e in ms), valore finale, frequenza di taglio, rappresentazione esadecimale dei coefficienti (Rappresentare un valore reale in virgola fissa - formato ottimo ed errorePer rappresentare un reale $x$ su $W$ bit a virgola fissa si sceglie il formato che minimizza l'erroresceglie la rappresentazione per cui la differenza tra il valore rappresentato e quello vero è la più piccola possibile: il maggior numero di bit frazionari $m$ compatibile con l'intervallo ($n=W-m$ bit interi, con U se $x\ge0$, con S se $x<0$). Poi $C=\mathrm{round}(x\cdot2^m)$, scritto in esadecimale (per un negativo, in complemento a 2), e l'errore $\varepsilon=\frac{C}{2^m}-x$, positivo se in eccesso, ha modulo $\le2^{-(m+1)}$. Se invece è dato l'errore massimo, i bit minimi si ricavano da $2^{-(m+1)}\le\varepsilon_{max}$.Rappresentare un valore reale in virgola fissa - formato ottimo ed errore →) e tempo massimo di calcolo (deve essere minore di : Sistemi di interruzioni - latenza, nesting e sostenibilitàCon $N$ sorgenti, ciascuna ISR $i$ ha durata $T_{d,i}$ (spesso già comprensiva della latenza intrinseca $T_{LI}$ e dell'istruzione in corso) e periodo minimo $T_{p,i}$. Condizione necessaria: $\sum_iT_{d,i}/T_{p,i}<1$ (la percentuale di impegno della CPU è la somma). Condizione di intervallo per ogni $i$ (priorità 1 = massima): $T_{d,i}+\sum_{k<i}n_k,T_{d,k};[+\max(T_{RC},\max_{j>i}T_{d,j})\text{ senza nesting}]\le T_{p,i}$, con $n_k=\lceil T_{p,i}/T_{p,k}\rceil$. Latenza massima della priorità $n$: con nesting $T_{LI}+\sum_{i<n}T_{ex,i}$; senza nesting si aggiunge $\max_{j>n}T_{ex,j}$.Sistemi di interruzioni - latenza, nesting e sostenibilità →).
Errori comuni
- Sbagliare il valore finale: è e non .
- Dire che l'IIR è "instabile perché ricorsivo": lo è solo se .
- Usare (manca il fattore ): .
- Calcolare il tempo di assestamento in campioni senza arrotondare per eccesso.
- Credere che aumentare migliori sempre il filtro: i coefficienti si avvicinano a 1 (e 0) e la quantizzazione pesa di più.
Versione ripasso
- Equazione alle differenze: ; IIR (qualche , ricorsivo) e FIR (, sempre stabile, fase lineare possibile, più termini).
- PB IIR: ; gradino ; guadagno in continua (=1 se ); stabile se ( instabile); :
- Campioni a regime: (90%, : 22; 99%, : 34).
- Equivalente di Eulero: , (, 50 kHz: s, 1,19 kHz).
- PA IIR: . Media mobile : assestamento in passi (: ), zeri di trasmissione.
- Errori: valore finale ; IIR ricorsivo=instabile; senza ; arrotondamento per difetto; sempre migliore (Discretizzazione di Eulero e TustinPer realizzare numericamente un filtro o regolatore $F(s)$ si approssima $\frac1s$ con un integratore a tempo discreto. Eulero: $\boxed{s=\dfrac{1-z^{-1}}{T_c}}$ (da $\mathrm{Int}(nT)=\mathrm{Int}((n-1)T)+T,x(n)$). Così $\dfrac{1+s\tau_z}{1+s\tau_p}$ diventa $y(k)=\dfrac{\tau_p}{T_c+\tau_p}y(k-1)+\dfrac{T_c+\tau_z}{T_c+\tau_p}x(k)-\dfrac{\tau_z}{T_c+\tau_p}x(k-1)$. Il passaggio inverso (da algoritmo a $F(s)$) usa $z^{-1}\approx1-sT_c$. L'approssimazione è affidabile solo fino a circa $f_c/10$ (distorsione, warping); Tustin $s=\frac2{T_c}\frac{1-z^{-1}}{1+z^{-1}}$ è più fedele.Discretizzazione di Eulero e Tustin →).
Esercizi su questo argomento
- Esercizio 16 · filtro IIR del primo ordine, coefficienti, tempo di salita, taglio e risposta al gradino (temi d'esame gennaio 2025, febbraio 2025, settembre 2026 e 2004)
- Esercizio 17 · dall'algoritmo al filtro analogico equivalente con la discretizzazione di Eulero (temi d'esame febbraio 2026 e luglio 2020)
- Esercizio 22 · filtro numerico a 8 bit, coefficienti, prodotti parziali ed errore di troncamento (esercizi del 4 dicembre 2020)