Fondamenti dei filtri FIR
1.1 Cosa sono i filtri FIR?”
I filtri FIR sono uno dei due principali tipi di filtri digitali usati nelle applicazioni DSP (Digital Signal Processing), l’altro tipo è IIR.
1.2 Cosa significa “FIR”?
“FIR” significa “Finite Impulse Response”. Se si inserisce un impulso, cioè un singolo campione “1” seguito da molti campioni “0”, usciranno degli zeri dopo che il campione “1” si è fatto strada attraverso la linea di ritardo del filtro.
1.3 Perché la risposta all’impulso è “finita?”
Nel caso comune, la risposta all’impulso è finita perché non c’è feedback nel FIR. La mancanza di feedback garantisce che la risposta all’impulso sia finita. Pertanto, il termine “risposta all’impulso finita” è quasi sinonimo di “nessuna retroazione”.
Tuttavia, se la retroazione è impiegata e la risposta all’impulso è finita, il filtro è ancora un FIR. Un esempio è il filtro a media mobile, in cui l’ennesimo campione precedente viene sottratto (feed back) ogni volta che arriva un nuovo campione. Questo filtro ha una risposta all’impulso finita anche se usa il feedback: dopo N campioni di un impulso, l’uscita sarà sempre zero.
1.4 Come si pronuncia “FIR?”
Alcune persone dicono le lettere F-I-R; altre persone pronunciano come se fosse un tipo di albero. Noi preferiamo l’albero. (La differenza è se si parla di un filtro F-I-R o di un filtro FIR.)
1.5 Qual è l’alternativa ai filtri FIR?
I filtri dsp possono anche essere “Infinite Impulse Response” (IIR). (Vedi dspGuru’s IIR FAQ.) I filtri IIR usano il feedback, quindi quando si inserisce un impulso l’uscita teoricamente suona all’infinito.
1.6 Come si confrontano i filtri FIR con i filtri IIR?
Ognuno ha vantaggi e svantaggi. Nel complesso, però, i vantaggi dei filtri FIR superano gli svantaggi, quindi sono usati molto più degli IIR.
1.6.1 Quali sono i vantaggi dei filtri FIR (rispetto ai filtri IIR)?
Rispetto ai filtri IIR, i filtri FIR offrono i seguenti vantaggi:
- Possono essere facilmente progettati per essere “a fase lineare” (e di solito lo sono). Detto semplicemente, i filtri a fase lineare ritardano il segnale d’ingresso ma non ne distorcono la fase.
- Sono semplici da implementare. Sulla maggior parte dei microprocessori DSP, il calcolo FIR può essere fatto con un loop di una singola istruzione.
- Sono adatti ad applicazioni multi-rate. Per multi-rate, intendiamo o la “decimazione” (riduzione della frequenza di campionamento), “l’interpolazione” (aumento della frequenza di campionamento), o entrambi. Che si tratti di decimazione o interpolazione, l’uso di filtri FIR permette di omettere alcuni calcoli, fornendo così un’importante efficienza computazionale. Al contrario, se si usano filtri IIR, ogni uscita deve essere calcolata individualmente, anche se quell’uscita sarà scartata (quindi il feedback sarà incorporato nel filtro).
- Hanno proprietà numeriche desiderabili. In pratica, tutti i filtri DSP devono essere implementati utilizzando l’aritmetica a precisione finita, cioè un numero limitato di bit. L’uso dell’aritmetica a precisione finita nei filtri IIR può causare problemi significativi dovuti all’uso della retroazione, ma i filtri FIR senza retroazione possono solitamente essere implementati usando meno bit, e il progettista ha meno problemi pratici da risolvere relativi all’aritmetica non ideale.
- Possono essere implementati usando l’aritmetica frazionaria. A differenza dei filtri IIR, è sempre possibile implementare un filtro FIR usando coefficienti con magnitudine inferiore a 1,0. (Il guadagno complessivo del filtro FIR può essere regolato alla sua uscita, se lo si desidera). Questa è una considerazione importante quando si usano i DSP a virgola fissa, perché rende l’implementazione molto più semplice.
1.6.2 Quali sono gli svantaggi dei filtri FIR (rispetto ai filtri IIR)?
Rispetto ai filtri IIR, i filtri FIR hanno talvolta lo svantaggio di richiedere più memoria e/o calcolo per ottenere una data caratteristica di risposta del filtro. Inoltre, certe risposte non sono pratiche da implementare con i filtri FIR.
1.7 Quali termini sono usati per descrivere i filtri FIR?
- Risposta all’impulso – La “risposta all’impulso” di un filtro FIR è in realtà solo l’insieme dei coefficienti FIR. (Se metti un “impulso” in un filtro FIR che consiste in un campione “1” seguito da molti campioni “0”, l’uscita del filtro sarà l’insieme dei coefficienti, dato che il campione 1 si muove oltre ogni coefficiente a turno per formare l’uscita.)
- Tap – Un “tap” FIR è semplicemente una coppia coefficiente/ritardo. Il numero di tap FIR, (spesso designato come “N”) è un’indicazione di 1) la quantità di memoria richiesta per implementare il filtro, 2) il numero di calcoli richiesti, e 3) la quantità di “filtraggio” che il filtro può fare; in effetti, più tap significa più attenuazione della banda di stop, meno ripple, filtri più stretti, ecc.
- Moltiplicare-Accumulare (MAC) – In un contesto FIR, un “MAC” è l’operazione di moltiplicare un coefficiente per il corrispondente campione di dati ritardato e accumulare il risultato. I FIR di solito richiedono un MAC per rubinetto. La maggior parte dei microprocessori DSP implementa l’operazione MAC in un singolo ciclo di istruzioni.
- Banda di transizione – La banda di frequenze tra i bordi della banda passante e della banda di arresto. Più stretta è la banda di transizione, più rubinetti sono necessari per implementare il filtro. (Una banda di transizione “piccola” risulta in un filtro “tagliente”.)
- Linea di ritardo – L’insieme degli elementi di memoria che implementano gli elementi di ritardo “Z^-1” del calcolo FIR.
- Buffer circolare – Un buffer speciale che è “circolare” perché l’incremento alla fine lo fa avvolgere all’inizio, o perché la diminuzione dall’inizio lo fa avvolgere alla fine. I buffer circolari sono spesso forniti dai microprocessori DSP per implementare il “movimento” dei campioni attraverso la linea di ritardo FIR senza dover letteralmente spostare i dati in memoria. Quando un nuovo campione viene aggiunto al buffer, sostituisce automaticamente il più vecchio.