Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

12
voti

Guida introduttiva ai filtri digitali (2)

Indice

Strutture non-ricorsive

Riprendendo l'argomento del precedente articolo, è opportuno approfondire la struttura di calcolo che il metodo della convoluzione comporta.

Si è detto che i coefficienti ricavati dall'antitrasformazione della risposta in frequenza del filtro devono essere moltiplicati per i singoli campionamenti del segnale entrante nel filtro stesso, il che conduce ad una struttura di questo tipo:

Cioè gli M coefficienti h ricavati moltiplicano ciascuno un dato campionamento x precedente, in corrispondenza all'istante nΔT (i rettangoli della figura esprimono ciascuno appunto un ritardo ΔT, mentre i cerchietti rappresentano moltiplicazioni), ed infine sommati per ricavare il singolo valore di y all'istante n-simo.


Si noti che h è in realtà il coefficiente ricavato dall'antitrasformazione diviso per la somma di tutti i coefficienti stessi (per ottenere la "media pesata" si era diviso per S nell'esempio dato di convoluzione).

Come si vede, la struttura è piuttosto semplice e, poiché utilizza solo campionamenti del segnale di ingresso, viene chiamata non-ricorsiva (parleremo più avanti di altri tipi di strutture che utilizzano anche valori d'uscita, e sono chiamate "ricorsive").

I filtri basati su questa vengono anche definiti FIR (Finite Impulse Response, per la loro proprietà di terminare a zero il transitorio se eccitati con un singolo impulso).

La semplicità della struttura non deve però far credere che non comporti difficoltà realizzative : perché funzioni in "tempo reale" bisogna infatti svolgere M moltiplicazioni (il numero dei coefficienti), più la somma totale, nel tempo massimo ΔT.

Anche disponendo di integrati costruiti appositamente per questo scopo, non è facile svolgere un gran numero di operazioni in tempi strettissimi.

Limitazione dei coefficienti

Si pone allora il problema: che succede se si utilizza solo una parte dei coefficienti ricavati dall'antitrasformazione?

Come al solito, cercherò di illustrarlo con un esempio.

Supponiamo di avere un segnale con banda di frequenza da 100 a 1000Hz e di voler realizzare un filtro passa-banda da 100Hz in corrispondenza di 500Hz (cioè che lasci passare solo frequenze da 450 a 550Hz).

Abbiamo già visto che occorre imporre al filtro, che chiameremo HBP, questi limiti .

Scegliamo per prima cosa un numero di frequenze (K) di 128, con un Δf di 10Hz, il che ci assicura una banda di frequenze da 0 a 1280Hz (mentre il segnale va da 100 a 1000) e potremo perciò imporre una forma quasi-ideale del filtro : invece della forma ideale rettangolare avremo una forma trapezia con lati obliqui fra 440Hz (guadagno 0) e 450Hz (guadagno 1) e viceversa fra 550Hz e 560Hz.

L'antitrasformazione dell'andamento del filtro comporta un numero di campionamenti doppio del numero di frequenze utilizzate (N=2K), cioè in pratica otterremo 256 coefficienti !

E' evidente che se li adoperassimo tutti otterremmo esattamente le prestazioni del filtro quasi ideale che abbiamo impostato, ma evidentemente il loro numero è eccessivo. Vediamone comunque la distribuzione (con un cambiamento di indici per "centrare" la parte significativa):


Ma ecco cosa succede se invece di tutti i coefficienti se ne consideriamo solo 1/4 (M=64):

Ricostruendo il filtro (in scala lineare ed anche in quella logaritmica, cioè di Bode) si vede lo scadimento dovuto al troncamento nel numero dei coefficienti: la caratteristica di ideale ha ben poco (anche se non è poi così male, se comparato con le caratteristiche dei filtri analogici).

Apriamo le "finestre"

Il fenomeno che accompagna il troncamento del numero di coefficienti è una serie di oscillazioni nel grafico (chiamate oscillazioni di Gibbs) che distorcono la forma originale del filtro.

Il fenomeno è duale di quanto succede nella ricostruzione di una forma d'onda nel tempo, quando si limiti il numero di armoniche utilizzate per la ricostruzione.

Per ridurre questi effetti, diversi autori hanno proposto una serie di algoritmi che modificano i valori dei coefficienti in modo da "smussarne gli estremi", migliorando così le prestazioni del filtro (tali algoritmi vengono chiamati finestre, vedi in particolare la fig. 11.4).


Seguiamo passo a passo l'applicazione di una di queste finestre (Hamming).

Ecco la distribuzione dei 64 coefficienti originali (h2), con indici traslati sullo zero (h3):

ed ecco l'applicazione a questi dell'algoritmo di Hamming:

Le trasformazioni negli indici dei coefficienti servono solo a rendere possibile la moltiplicazione dei valori della finestra, wm, con i valori dei coefficienti: in pratica si trasforma la serie originaria h2, prima in h3 e poi in h4.

Si può appena notare la differenza fra le 2 serie (h4 rispetto ad h2), ma l'effetto sulla forma del filtro è invece significativa: eccolo

Come si vede il risultato è "niente male !" (si confrontino gli andamenti di HBP con 256 coefficienti, di H con 64, e di Hf sempre con 64 coefficienti ma corretti dalla finestra).

Riferimenti

L'illustrazione dei principi su cui di basano i filtri FIR può fermarsi qui, rimandando ad un prossimo articolo quella dei filtri ricorsivi.


Avrei voluto dare qualche riferimento agli integrati che ne permettono la realizzazione pratica, ma non ho trovato in Rete niente di semplice e convincente.

Per quanto detto all'inizio del primo articolo, sarei lieto se qualcuno che ha già applicato tali componenti fornisse informazioni al riguardo.

Posso soltanto aggiungere che queste tecniche di progettazione sono fondate sull'uso del computer (è ovviamente impensabile un approccio diverso) e che sono ormai talmente evolute da permetterne il calcolo data semplicemente la "specifica" del filtro desiderato.

Valgano come esempi i riferimenti a FIR Filters design using MATLAB e Practical FIR Filters design in MATLAB.

2

Commenti e note

Inserisci un commento

di ,

Ringrazio EcoTan della segnalazione ed auspico un articolo che illustri le realizzazione pratiche di filtri "piuttosto semplici"

Rispondi

di ,

Rispondendo alla sua sollecitazione, comunico che come componente ho fatto qualcosa con il microcontrollore dsPic33 p33FJ128GP802. Va a 40 MHz, fa le moltiplicazioni a 16 bit in un ciclo, ha un ADC abbastanza veloce ed è dotato di uscita analogica DAC. Mi costa 16 euro al banco. Ci ho fatto dei passa-basso del sesto ordine tipo Chebyshev, che a loro volta mi sono serviti per un frequency shifter in banda audio. Però non sono filtri FIR essendo basati sulla trasformazione S-Z bilineare. Poi ho fatto anche dei filtri risonanti piuttosto semplici http://www.robot-italy.net/roboforum/blog_attachment.php?attachmentid=236&d=1385726807 Anch'io ho trovato poca roba pratica sul Web ed ho battuto la testa parecchio, non sono sicurissimo di aver fatto tutto bene però ho avuto parecchi riscontri convincenti sul funzionamento.

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.