Vai al contenuto
Emmy

Filtri a tempo discreto

Elettronica · Strumentazione elettronica Articolo

Percorso: Strumentazione elettronica · 12 di 17

Prima di questo, potrebbe interessarti: Integratore a finestra e boxcar averager

Indice

Filtrare con i numeri

I filtri degli articoli precedenti sono fatti di resistori, condensatori e interruttori, e la loro funzione peso è quella che il circuito sa produrre: un’esponenziale, un rettangolo, un’esponenziale a pezzi. Un convertitore analogico-digitale e un po’ di calcolo permettono di sceglierla: si prendono NN campioni del segnale, distanti tst_s, e si combina

y=k=0N1wkx(tk),y = \sum_{k=0}^{N-1} w_k\,x(t_k) ,

con i pesi wkw_k che si vogliono. Cambiare filtro vuol dire cambiare numeri, e si possono realizzare pesi che nessun circuito produrrebbe — negativi, asimmetrici, diversi da misura a misura.

Nel linguaggio dell’articolo precedente un campionamento ideale è un filtro tempo-variante con funzione peso fatta di impulsi:

w(t,τ)=k=0N1wkδ(τ(tkts)),w(t, \tau) = \sum_{k=0}^{N-1} w_k\,\delta\big(\tau - (t - kt_s)\big) ,

perché l’uscita di un campionatore che legge l’istante tkt_k è x(τ)δ(τtk)dτ=x(tk)\int x(\tau)\,\delta(\tau - t_k)\,d\tau = x(t_k). Qui il campionamento è considerato istantaneo e la conversione esatta: il tempo di apertura del campionatore e la quantizzazione del convertitore sono un altro discorso.

La funzione peso di un filtro a tempo discreto Sopra, un segnale costante immerso nel rumore e sedici impulsi tutti uguali, uno per ogni istante di campionamento: sono i pesi della media uniforme. Sotto, un impulso che decade in modo esponenziale, con il rumore, e i pesi corrispondenti, che seguono la forma del segnale: alti all'inizio e sempre più piccoli. media uniforme: wk = 1/N pesi proporzionali al segnale: wk ∝ x(tk) ts

La funzione peso di un filtro a tempo discreto è un treno di impulsi, uno per campione, alto quanto il peso. Sopra la media uniforme di sedici campioni di un segnale costante; sotto i pesi proporzionali al segnale, per un impulso che decade.

La media pesata e i suoi limiti

Proposizione (media pesata di campioni incorrelati)

Se il segnale vale AA a ogni istante di campionamento e il rumore ha tempo di correlazione minore del passo tst_s, così che i campioni di rumore siano incorrelati e con valore quadratico medio σx2\sigma_x^2,

y=Akwk,σy2=σx2kwk2,(SN)y=(SN)xkwkkwk2.\begin{gathered} y = A\sum_k w_k , \qquad \sigma_y^2 = \sigma_x^2\sum_k w_k^2 , \\[0.5em] \left(\frac{S}{N}\right)_y = \left(\frac{S}{N}\right)_x\frac{\sum_k w_k}{\sqrt{\sum_k w_k^2}} . \end{gathered}

Con NN campioni il fattore di miglioramento non supera N\sqrt N, e vale N\sqrt N solo per i pesi uniformi wk=1/Nw_k = 1/N.

Dimostrazione.

La media del rumore è nulla, quindi resta il segnale moltiplicato per la somma dei pesi. Per il valore quadratico medio, i prodotti misti nknj\overline{n_kn_j} con kjk \ne j sono nulli perché i campioni sono incorrelati, e restano i termini wk2nk2w_k^2\,\overline{n_k^2}. Il rapporto segnale-rumore all’uscita è il loro quoziente, e quello all’ingresso è A/σxA/\sigma_x. Per la disuguaglianza di Cauchy e Schwarz,

(k=1Nwk)2Nk=1Nwk2,\left(\sum_{k=1}^{N} w_k\right)^2 \le N\sum_{k=1}^{N}w_k^2 ,

con l’uguaglianza solo se tutti i pesi sono uguali: il fattore wk/wk2\sum w_k/\sqrt{\sum w_k^2} vale al massimo N\sqrt N.

Fine della dimostrazione.

È la versione discreta del risultato dell’articolo sul filtro passa-basso: per un segnale costante in rumore bianco la media uniforme è la migliore. La normalizzazione wk=1\sum w_k = 1 serve perché l’uscita valga AA; se interessa solo il rapporto segnale-rumore, i pesi contano a meno di una costante.

Il confronto con i filtri continui, però, non è a favore del campionatore. Un integratore a finestra che integra per lo stesso tempo di misura TM=NtsT_M = Nt_s migliora il rapporto segnale-rumore di TM/τ0\sqrt{T_M/\tau_0}, con τ0\tau_0 il tempo di correlazione del rumore, mentre la media uniforme dà N=TM/ts\sqrt N = \sqrt{T_M/t_s}. Poiché i campioni si prendono distanti almeno τ0\tau_0, perché siano incorrelati, il campionatore perde sempre: guarda il segnale solo negli istanti di campionamento e butta via tutto il resto. La differenza è il rapporto ts/τ0\sqrt{t_s/\tau_0}.

Rumore correlato, repliche e aliasing

Se il rumore è correlato su tempi più lunghi del passo, i prodotti misti non sono più nulli, e il conto si fa con l’autocorrelazione della funzione peso.

Proposizione (autocorrelazione dei pesi di una media uniforme)

Per la media uniforme di NN campioni distanti tst_s,

kw(γ)=n=(N1)N1NnN2δ(γnts),k_w(\gamma) = \sum_{n = -(N-1)}^{N-1}\frac{N - |n|}{N^2}\,\delta(\gamma - nt_s) ,

e per un rumore stazionario all’ingresso

σy2=nNnN2Rxx(nts)1NnRxx(nts),\sigma_y^2 = \sum_{n}\frac{N - |n|}{N^2}\,R_{xx}(nt_s) \simeq \frac{1}{N}\sum_n R_{xx}(nt_s) ,

dove l’ultima forma vale se RxxR_{xx} si annulla per ritardi molto più corti di NtsNt_s.

Dimostrazione.

L’autocorrelazione della funzione peso è w(t,α)w(t,α+γ)dα\int w(t, \alpha)\,w(t, \alpha + \gamma)\,d\alpha: due treni di impulsi si sovrappongono solo quando lo scorrimento γ\gamma è un multiplo di tst_s, e con γ=nts\gamma = nt_s le coppie che si incontrano sono NnN - |n|, ciascuna con peso 1/N21/N^2. Per il teorema sul rumore nei filtri tempo-varianti, σy2=Rxx(γ)kw(γ)dγ\sigma_y^2 = \int R_{xx}(\gamma)\,k_w(\gamma)\,d\gamma, e gli impulsi campionano l’autocorrelazione del rumore nei multipli di tst_s.

Fine della dimostrazione.

Con un rumore poco correlato sopravvive solo il termine centrale, Rxx(0)/N=σx2/NR_{xx}(0)/N = \sigma_x^2/N, e si ritrova il N\sqrt N. Se invece il rumore è correlato su più passi, i termini con n0n \ne 0 sono positivi e si aggiungono: la media cancella meno rumore, perché i campioni si somigliano tra loro.

Autocorrelazione dei pesi e del rumore Un pettine di impulsi verticali ai multipli del passo di campionamento, con altezze che scendono linearmente allontanandosi dal centro. Sopra, due curve: una molto stretta, che vale quasi zero già al primo impulso laterale, e una larga, che resta alta per parecchi impulsi. La prima è l'autocorrelazione di un rumore poco correlato, la seconda di un rumore correlato su tempi lunghi rispetto al passo. ts −ts 6ts rumore poco correlato rumore correlato kw(γ) γ

L’autocorrelazione della funzione peso di una media uniforme è un pettine di impulsi ai multipli del passo, con inviluppo triangolare. Il rumore all’uscita è l’autocorrelazione del rumore campionata da questo pettine: un rumore poco correlato tocca solo l’impulso centrale, uno correlato ne tocca parecchi e il filtro rende meno.

Nel dominio delle frequenze lo stesso fatto prende la forma dell’aliasing. La funzione peso della media uniforme è un rettangolo lungo TMT_M moltiplicato per un pettine di impulsi distanti tst_s; la sua trasformata è quindi la convoluzione di un seno cardinale largo 1/TM1/T_M con un pettine di impulsi distanti 1/ts1/t_s, cioè una replica del seno cardinale attorno a ogni multiplo della frequenza di campionamento:

W(t,f)2=ksinc2 ⁣[TM(fkts)].|W(t, f)|^2 = \sum_k \text{sinc}^2\!\left[T_M\left(f - \frac{k}{t_s}\right)\right] .

Il rumore all’uscita è Sx(f)W2df\int S_x(f)\,|W|^2df: ogni replica pesca la densità spettrale attorno alla sua frequenza, e tutto quello che sta sopra 1/2ts1/2t_s rientra nella misura come se fosse a bassa frequenza. Per un rumore bianco fino a fn1/2tsf_n \gg 1/2t_s le repliche sono tante, e si ritrova la varianza σx2/N\sigma_x^2/N con σx2\sigma_x^2 grande. La cura è un filtro anti-aliasing prima del campionatore, che tagli sopra la metà della frequenza di campionamento.

Le repliche dello spettro del campionatore Il quadrato del modulo della trasformata della funzione peso di una media uniforme: una serie di picchi stretti a frequenza zero e a ogni multiplo della frequenza di campionamento, tutti della stessa altezza. Una curva tratteggiata, che scende dopo metà della frequenza di campionamento, mostra il filtro anti-aliasing che serve per non raccogliere il rumore attorno alle repliche. 1/2ts 1/ts 2/ts 3/ts |W(t, f)|² filtro anti-aliasing larghezza 1/TM f

Il quadrato del modulo della trasformata della funzione peso di una media uniforme: seni cardinali larghi 1/TM1/T_M attorno a ogni multiplo di 1/ts1/t_s. Senza il filtro anti-aliasing, tratteggiato, il rumore ad alta frequenza rientra nella misura attraverso le repliche.

Il filtro anti-aliasing migliore, per questo scopo, è quello che media l’ingresso su tutto l’intervallo tra un campione e l’altro invece di guardarlo in un istante: è l’integrate and dump, cioè un integratore a finestra lungo tst_s che si azzera a ogni campione. Allora i campioni sono le medie di finestre contigue, ognuna con varianza S/2tsS/2t_s, e sono incorrelati per un rumore bianco; la loro media uniforme ha varianza S/2Nts=S/2TMS/2Nt_s = S/2T_M, esattamente quella dell’integratore a finestra lungo tutto il tempo di misura. Con questo accorgimento il filtro numerico raggiunge il continuo, e non lo perde più: è il motivo per cui i convertitori a integrazione e i modulatori sigma-delta con decimazione campionano una media, non un istante.

Pesi qualsiasi

Con i pesi liberi si imita qualunque filtro continuo, e se ne costruiscono altri. Il caso più usato è quello dei pesi in progressione geometrica, wkαkw_k \propto \alpha^k: è la media esponenziale, il filtro che un microcontrollore realizza con una riga, yy+(xy)(1α)y \leftarrow y + (x - y)(1 - \alpha), senza tenere in memoria i campioni passati.

Proposizione (media esponenziale)

Con pesi wk=(1α)αkw_k = (1 - \alpha)\,\alpha^k, k0k \ge 0, un segnale costante AAy=Ay = A e un rumore incorrelato dà

σy2=σx21α1+α,Neq=1+α1α,\sigma_y^2 = \sigma_x^2\,\frac{1 - \alpha}{1 + \alpha} , \qquad N_{eq} = \frac{1 + \alpha}{1 - \alpha} ,

dove NeqN_{eq} è il numero di campioni di una media uniforme che darebbe lo stesso rumore.

Dimostrazione.

La somma dei pesi è (1α)kαk=1(1 - \alpha)\sum_k\alpha^k = 1, quindi l’uscita è AA. La somma dei quadrati è (1α)2kα2k=(1α)2/(1α2)=(1α)/(1+α)(1 - \alpha)^2\sum_k\alpha^{2k} = (1 - \alpha)^2/(1 - \alpha^2) = (1 - \alpha)/(1 + \alpha), e per la proposizione sulla media pesata è il fattore che moltiplica σx2\sigma_x^2. Una media uniforme di NN campioni dà σx2/N\sigma_x^2/N: uguagliando si ottiene NeqN_{eq}.

Fine della dimostrazione.

Con la forma ricorsiva yy+(xy)/My \leftarrow y + (x - y)/M si ha α=11/M\alpha = 1 - 1/M e Neq=2M1N_{eq} = 2M - 1: mediare con M=16M = 16 equivale a mediare una trentina di campioni, e il filtro impiega circa 5M5M campioni ad arrivare a regime. È lo stesso conto del boxcar averager dell’articolo precedente, che infatti si può leggere come la cascata di due filtri: un integratore a finestra che misura il singolo impulso e una media esponenziale con α=eTC/TF\alpha = e^{-T_C/T_F} sui risultati, con Neq=(1+α)/(1α)2TF/TCN_{eq} = (1 + \alpha)/(1 - \alpha) \simeq 2T_F/T_C.

I pesi negativi, che nessun filtro RC può dare, aprono un’altra strada. Il filtro più semplice che li usa è la differenza di due campioni, y=x(t)x(tts)y = x(t) - x(t - t_s): per un rumore bianco è un disastro, perché le due varianze si sommano, ma per un rumore correlato su tempi lunghi rispetto a tst_s è il modo di cancellare quasi tutto.

Proposizione (differenza di due campioni)

Il filtro y=x(t)x(tts)y = x(t) - x(t - t_s) ha kw(γ)=2δ(γ)δ(γts)δ(γ+ts)k_w(\gamma) = 2\delta(\gamma) - \delta(\gamma - t_s) - \delta(\gamma + t_s), e con un rumore di autocorrelazione RxxR_{xx}

σy2=2[Rxx(0)Rxx(ts)].\sigma_y^2 = 2\left[R_{xx}(0) - R_{xx}(t_s)\right] .

Per un rumore bianco vale 2σx22\sigma_x^2; per un rumore con autocorrelazione σx2eγ/τc\sigma_x^2e^{-|\gamma|/\tau_c} vale 2σx2(1ets/τc)2\sigma_x^2\left(1 - e^{-t_s/\tau_c}\right), che tende a zero per tsτct_s \ll \tau_c.

Dimostrazione.

La funzione peso è δ(τt)δ(τt+ts)\delta(\tau - t) - \delta(\tau - t + t_s). Nell’autocorrelazione, per γ=0\gamma = 0 i due impulsi si sovrappongono a sé stessi e i loro contributi si sommano, 1+1=21 + 1 = 2; per γ=±ts\gamma = \pm t_s si sovrappongono l’uno all’altro, con segni opposti, e danno 1-1 ciascuno. Il rumore all’uscita è Rxxkw=2Rxx(0)2Rxx(ts)\int R_{xx}k_w = 2R_{xx}(0) - 2R_{xx}(t_s), e basta sostituire le due autocorrelazioni.

Fine della dimostrazione.

La differenza di due campioni A sinistra la funzione peso della differenza di due campioni: un impulso verso l'alto e uno verso il basso, separati dal passo di campionamento, e sotto la sua autocorrelazione, un impulso centrale di altezza due e due impulsi laterali negativi. A destra il rumore all'uscita in funzione del rapporto tra il passo e il tempo di correlazione del rumore, in scala logaritmica: vale radice di due per campioni indipendenti e scende verso zero quando i due campioni sono molto più vicini del tempo di correlazione. w(t, τ) kw(γ) t t − ts ts −ts 0,01 0,1 1 10 √2 rumore all'uscita tsc

La differenza di due campioni: a sinistra la funzione peso e la sua autocorrelazione, con i due impulsi laterali negativi; a destra il rumore all’uscita, in unità di quello di un campione, per un rumore con autocorrelazione esponenziale. Sopra il tempo di correlazione la differenza raddoppia la potenza del rumore, sotto lo cancella.

È il principio del doppio campionamento correlato, che si usa nei sensori di immagine e nei convertitori per togliere l’offset e il rumore lento: si campiona due volte a breve distanza, una con il segnale e una senza, e si sottrae. Il prezzo è il rumore bianco raddoppiato, il guadagno è la scomparsa di tutto ciò che varia lentamente. Il prossimo articolo riprende il filo dalla parte opposta — quali pesi sono i migliori, dato il segnale e dato il rumore — e quello dopo torna sul rumore a bassa frequenza.

Esercizi risolti e commentati

Esercizio 1. Un rumore ha tempo di correlazione τ0=10\tau_0 = 10 ns. Si misura un segnale costante per 11 μs, campionando ogni 2020 ns e mediando. Quanto migliora il rapporto segnale-rumore? E un integratore a finestra sullo stesso tempo?

Soluzione. I campioni sono N=1 μs/20 ns=50N = 1\ \mu\text{s}/20\ \text{ns} = 50, incorrelati perché ts>τ0t_s > \tau_0, e il miglioramento è 50=7,1\sqrt{50} = 7{,}1. L’integratore a finestra dà TM/τ0=100=10\sqrt{T_M/\tau_0} = \sqrt{100} = 10.

Commento. Il rapporto tra i due è ts/τ0=2\sqrt{t_s/\tau_0} = \sqrt2: campionando ogni due tempi di correlazione si guarda il segnale per metà del tempo. Campionare più fitto non aiuta, perché i campioni diventano correlati e il guadagno smette di crescere come N\sqrt N; l’unico modo di recuperare è mediare l’ingresso tra un campione e l’altro invece di guardarlo in un istante.

Esercizio 2. Un impulso Aet/τA\,e^{-t/\tau} con τ=1\tau = 1 μs arriva in un rumore quasi bianco con densità unilatera S=4×1016S = 4\times10^{-16} V²/Hz e tempo di correlazione 1010 ns. Si campiona ogni ts=10t_s = 10 ns. Quale ampiezza minima si misura, con rapporto segnale-rumore 11, con una media uniforme sui primi 5τ5\tau? E con i pesi migliori?

Soluzione. Il rumore di un campione è σx=S/2τ0=4×1016/2×108=141\sigma_x = \sqrt{S/2\tau_0} = \sqrt{4\times10^{-16}/2\times10^{-8}} = 141 μV: un campione solo misura solo ampiezze sopra 141141 μV. Con N=5τ/ts=500N = 5\tau/t_s = 500 campioni uniformi, il segnale medio è

ANk=0N1ekts/τAN1e51ets/τ=0,199A,\frac{A}{N}\sum_{k=0}^{N-1}e^{-kt_s/\tau} \simeq \frac{A}{N}\,\frac{1 - e^{-5}}{1 - e^{-t_s/\tau}} = 0{,}199\,A ,

e il rumore è 141 μV/500=6,3141\ \mu\text{V}/\sqrt{500} = 6{,}3 μV: serve Amin=32A_{min} = 32 μV. Con i pesi proporzionali al segnale, wkekts/τw_k \propto e^{-kt_s/\tau}, il rapporto segnale-rumore diventa (A/σx)ke2kts/τ=(A/σx)τ/2ts=7,07A/σx(A/\sigma_x)\sqrt{\sum_k e^{-2kt_s/\tau}} = (A/\sigma_x)\sqrt{\tau/2t_s} = 7{,}07\,A/\sigma_x, cioè Amin=20A_{min} = 20 μV.

Commento. La media uniforme su 5τ5\tau spreca la coda, dove il segnale è quasi finito ma il rumore no; mediando solo sul primo τ\tau si arriverebbe a 2222 μV, già quasi quanto i pesi ottimi. È un fatto generale: un peso che assomiglia grossolanamente alla forma del segnale prende quasi tutto il guadagno possibile.

Esercizio 3. Si misura un segnale con una media esponenziale in un microcontrollore, yy+(xy)/My \leftarrow y + (x - y)/M a ogni campione. Quanti campioni equivalenti si mediano con M=4M = 4, 1616, 6464? Quanto tempo serve per arrivare a regime?

Soluzione. Il peso del campione kk-esimo all’indietro è (1/M)(11/M)k(1/M)(1 - 1/M)^k, cioè α=11/M\alpha = 1 - 1/M, e Neq=(1+α)/(1α)=2M1N_{eq} = (1 + \alpha)/(1 - \alpha) = 2M - 1: 77, 3131 e 127127 campioni, con miglioramenti di 2,62{,}6, 5,65{,}6 e 11,311{,}3. Il regime si raggiunge dopo circa cinque costanti di tempo, cioè 5M5M campioni: 2020, 8080 e 320320.

Commento. Raddoppiare MM migliora il rumore di 2\sqrt2 e raddoppia il tempo di risposta: la solita legge della radice del tempo. La forma ricorsiva costa una moltiplicazione e nessuna memoria, ed è per questo che si trova in quasi tutti i firmware che leggono un sensore.

Esercizio 4. Un sensore dà un segnale costante insieme a un rumore lento con autocorrelazione σx2eγ/τc\sigma_x^2e^{-|\gamma|/\tau_c}, τc=1\tau_c = 1 ms, e a un rumore bianco con σw=σx/10\sigma_w = \sigma_x/10 per campione. Si sottraggono due campioni distanti tst_s, uno con il segnale e uno senza. Quanto vale il rumore all’uscita per ts=1t_s = 1 ms e per ts=10t_s = 10 μs?

Soluzione. I due rumori sono indipendenti e le varianze si sommano. Il bianco dà sempre 2σw2=0,02σx22\sigma_w^2 = 0{,}02\,\sigma_x^2; il lento dà 2σx2(1ets/τc)2\sigma_x^2(1 - e^{-t_s/\tau_c}), cioè 1,26σx21{,}26\,\sigma_x^2 con ts=τct_s = \tau_c e 0,0199σx20{,}0199\,\sigma_x^2 con ts=τc/100t_s = \tau_c/100. In tutto 1,13σx1{,}13\,\sigma_x nel primo caso e 0,20σx0{,}20\,\sigma_x nel secondo.

Commento. Sottraendo due campioni vicini il rumore lento sparisce quasi del tutto, e resta il bianco raddoppiato: con ts=10t_s = 10 μs i due contributi si equivalgono, e scendere ancora con tst_s non serve più. Il doppio campionamento correlato funziona finché si riesce a prendere i due campioni dentro il tempo di correlazione del disturbo che si vuole togliere.

Esercizio 5. Un rumore bianco con densità unilatera SS ha banda 1010 MHz. Si campiona a 100100 kHz e si mediano 10001000 campioni. Quanto vale il rumore all’uscita? E se prima del campionatore si mette un integratore che media su tutto l’intervallo tra un campione e l’altro?

Soluzione. Senza filtro ogni campione porta il rumore in tutta la banda, σx2=S107\sigma_x^2 = S\cdot10^7 Hz, e la media di 10001000 campioni incorrelati dà σy2=S×104\sigma_y^2 = S\times10^4 Hz. Con l’integratore su ts=10t_s = 10 μs ogni campione è la media di una finestra, con varianza S/2ts=S×5×104S/2t_s = S\times5\times10^4 Hz, cioè duecento volte meno, e la media di 10001000 campioni dà σy2=S×50\sigma_y^2 = S\times50 Hz =S/2TM= S/2T_M con TM=10T_M = 10 ms.

Commento. Sono duecento volte in potenza, cioè quattordici in tensione, per un accorgimento che non tocca il segnale: il rapporto tra la banda del rumore e metà della frequenza di campionamento. Il risultato con l’integratore, S/2TMS/2T_M, è quello dell’integratore a finestra lungo tutto il tempo di misura: il filtro numerico, se il campionamento è preceduto dalla media, non perde niente rispetto al continuo.

Hai trovato un errore o qualcosa che non funziona in questa pagina? Scrivi una segnalazione