Progettazione nell'ambiente
LPCXpresso
Introduzione alla progettazione di sistemi
embedded a microcontrollore
Note su filtri digitali
S. Salvatori - Microelettronica – aprile 2016 – (1 di 42)
Sommario
Perché un filtro digitale
Filtraggio digitale
Trasformata z
Progetto di filtri digitali
Filtri FIR
Algoritmo di calcolo
S. Salvatori - Microelettronica - aprile 2016
2/42
Perché un filtro digitale?
Il processore può essere riprogrammato;
L'accuratezzo dipende dall'arrotondamento nel calcolo
aritmetico:
Nota a priori
Minimizzare gli errori aumentando la risoluzione
Alimentazione e temperatura non influenzano le prestazioni (il
programma rimane lo stesso)
Alta immunità al rumore
S. Salvatori - Microelettronica - aprile 2016
3/42
Processo di campionamento
S. Salvatori - Microelettronica - aprile 2016
4/42
Aliasing
Segnale campionato correttamente
Alias dovuto al sottocampionamento
S. Salvatori - Microelettronica - aprile 2016
5/42
Filtraggio digitale
VREF
VREF
filtro
numerico
Analog
input
gnd
DAC
Analog
output
gnd
S. Salvatori - Microelettronica - aprile 2016
6/42
Filtraggio digitale
Un modo per ridurre il rumore in un segnale potrebbe
consistere nella semplice operazione di smoothing
Per esempio un filtro parabolico:
y[k ]=
1
( −3 x [k+2 ]+12 x [k +1 ]+17 x[k ]+12 x[ k−1]−3 x[k −2] )
35
S. Salvatori - Microelettronica - aprile 2016
7/42
Filtraggio digitale
Nel filtro:
y[k ]=
1
( −3 x [k+2 ]+12 x [k +1 ]+17 x[k ]+12 x[ k−1]−3 x[k −2] )
35
il valore del campione attuale dell'uscita dipende da:
●
campione attuale x[k]
●
campioni precedenti x[k-1] e x[k-2]
●
e i campioni futuri x[k+1] e x[k+2] !
Il problema viene risolto semplicemente spostando il
calcolo di y[k] dopo che i 5 campioni sono stati acquisiti
S. Salvatori - Microelettronica - aprile 2016
8/42
Filtraggio digitale
Cioè:
1
y[k ]= (−3 x [k]+12 x[k −1]+17 x [k−2]+12 x [k−3 ]−3 x[k −4])
35
È interessante osservare che l'espressione:
y[k ]=∑ ai x [k−i ]
rappresenta la convoluzione dei dati in ingresso attraverso i
coefficienti del filtro.
Tali coefficienti rappresentano la risposta impulsiva del filtro.
Infatti: che succede se l'ingresso è un impulso:
x[k] = 0 per k≠ 0, x[0] = 1
S. Salvatori - Microelettronica - aprile 2016
9/42
Filtraggio digitale
Se x[k] = 0 per k≠ 0, x[0] = 1
y[k ]=∑ ai x [k−i ]=ak x( 0)
Quindi:
y[0]=a0 ;
y[1]=a1 ;
y[2]=a2 ;
...
Poiché vi è un numero finito di coefficienti, la risposta
impulsiva è finita. Per questo motivo tali filtri vengono
denominati FIR, Finite Impulse Response
S. Salvatori - Microelettronica - aprile 2016
10/42
Filtraggio digitale
Un altro tipo di filtri è quello di tipo ricorsivo: l'uscita attuale
dipende dai valori precedenti dell'uscita:
N
M
i=0
i =0
y[k ]=∑ ai x [k−i ]=ak x( 0)+∑ bi y [k−i ]
Questi hanno una risposta impulsiva di tipo infinito e vengono
denominati IIR, Infinite Impulse Response
S. Salvatori - Microelettronica - aprile 2016
11/42
Trasformata z
note
S. Salvatori - Microelettronica - aprile 2016
12/42
Trasformata z
La trasformata z ha, nel dominio discreto, lo stesso ruolo che
la trasformata di Laplace ha nel dominio analogico
Impulso a t=kT
trasformata
di Laplace
e
−kTs
La trasformata di Laplace di una funzione discreta f[k], che è
una successione di impulsi, sarà:
F d [ s]=f ( 0)+f (1 )e
−Ts
−2 Ts
+f ( 2) e
+ f (3) e
−3 Ts
S. Salvatori - Microelettronica - aprile 2016
+f ( 4)e
−4 Ts
+...
13/42
Trasformata z
F d [ s]=f ( 0)+f (1 )e
−Ts
e
−2 Ts
+f ( 2) e
+ f (3) e
−3 Ts
Ts
+f ( 4)e
−4 Ts
+...
z
−1
−2
−3
−4
F ( z)=f (0 )+f (1) z +f ( 2) z +f ( 3) z +f ( 4) z +...
S. Salvatori - Microelettronica - aprile 2016
14/42
Esempi
S. Salvatori - Microelettronica - aprile 2016
15/42
Esempi
S. Salvatori - Microelettronica - aprile 2016
16/42
Esempi
S. Salvatori - Microelettronica - aprile 2016
17/42
Funzione di trasferimento impulsiva
Trasformata z dell'uscita
Trasformata z dell'ingresso
Y ( z )=G ( z) X ( z )
N
Filtro non-ricorsivo: G ( z)= ∑ ai z −i
i=0
Filtro ricorsivo:
N
M
Y ( z )=∑ ai z X ( z)+∑ bi z Y ( z)
−i
i=0
−i
i =1
∑ ai z
−i
Y ( z)
G ( z)=
=
X (z ) 1− ∑ bi z −i
S. Salvatori - Microelettronica - aprile 2016
18/42
Piano z
z=e
sT
con
s=σ + j ω
σT
z=e e
se
z=e
σ=0
j ωT
jωT
=cos(ω T )+ j sin (ω T )
|z|=1
ω
σ>0
1
σ
σ<0
S. Salvatori - Microelettronica - aprile 2016
19/42
Progetto di un filtro digitale
S. Salvatori - Microelettronica - aprile 2016
20/42
Filtri semplici
Per progettare un filtro passa basso si può adottare la tecnica di
smoothing;
Vi sono due approcci:
fit polinomiale
media mobile
Fit polinomiale
Aumentando l'ordine del
polinomio possiamo
migliorare il cut-off
S. Salvatori - Microelettronica - aprile 2016
21/42
Media mobile: esempio
Filtro Hanning
1
y[k ]= ( x [k ]+2 x [k−1]+ x[k−2 ])
4
Il filtro genera il campione attuale come
media pesata di tre campioni di
ingresso con quello al centro avente
peso doppio rispetto a quelli estremi
S. Salvatori - Microelettronica - aprile 2016
22/42
Filtro Hanning
La trasformata z sarà:
1
−1
−2
H (z )= (1+2 z + z )
4
1
2
che è pari a H (z )= ( z+1)
4
È un passa basso?
con due zeri pari a -1
Vediamo la risposta in frequenza
S. Salvatori - Microelettronica - aprile 2016
23/42
Filtro Hanning
1
−1
−2
H (z )= (1+2 z + z )
4
z→e
1
− j ωT
−2 j ωT
H ( jω)= (1 +2 e
+e
)
4
jω T
|H|
1
0,9
1 − j ωT j ωT
− jω T
H ( jω)= e
( e +2 +e
)
4
0,8
0,7
0,6
1 − j ωT
H ( jω)= e
( 2+2 cos( ωT ))
4
0,5
1 −j ωT
H ( jω)= e
(1+cos(ω T ))
2
0,2
0,4
0,3
0,1
0
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1
f/2fs
S. Salvatori - Microelettronica - aprile 2016
24/42
Filtro Hanning
Fase?
1 −j ωT
H ( j ω)= e
(1+cos(ω T ))
2
H ( jω)=−ωT
La fase varia linearmente con f.
Questo è vero per qualunque filtro FIR con “coefficienti
simmetrici” (polinomio palindromo)
S. Salvatori - Microelettronica - aprile 2016
25/42
LPF
Potremmo realizzare un LPF inserendo un polo
−1
1
z
H (z )=
=
z −α 1−α z−1
−1
z
Y ( z )=
X ( z)
−1
1−α z
−1
Y ( z )(1−α z )=z
−1
X ( z)
|H| 3
y[k ]= x[k −1 ]+α y[k −1 ]
α = 0.6
2,5
2
1,5
Filtro ricorsivo IIR
1
0,5
0
0
0,1
0,2
0,3
0,4
0,5
f/2fs
S. Salvatori - Microelettronica - aprile 2016
0,6
0,7
0,8
0,9
1
26/42
Progetto di un filtro FIR
S. Salvatori - Microelettronica - aprile 2016
27/42
Risposta ideale di un passa basso
h(n)
1
pass-band
stop-band
ft
f normalizzata alla fs
0.5
Frequenza di transizione
La risposta impulsiva di questo
tipo di filtro è la funzione sinc.
0,8
0,7
ft = 0.4 fS
0,6
0,5
0,4
0,3
0,2
0,1
0
-0,1
-0,2
-10
-8
-6
-4
-2
0
2
4
6
8
10
n
S. Salvatori - Microelettronica - aprile 2016
28/42
Risposta ideale di un passa basso
0,8
0,7
La funzione sinc è infinita
Si estende sia per x positiva che
per x negativa
ft = 0.4 fS
0,6
0,5
0,4
0,3
0,2
0,1
0
-0,1
-0,2
-10
-8
-6
-4
-2
0
2
4
6
8
10
n
Un filtro FIR, invece
ha un numero finito di coefficienti
può avere campioni solo dal passato
1
Campioniamo e tronchiamo a
un numero finito M+1 di valori
0,8
0,6
0,4
M: ordine del filtro
0,2
Muoviamo I campioni di M/2
0
-0,2
1
2
3
4
5
6
7
8
9
10
11
S. Salvatori - Microelettronica - aprile 2016
12
13
14
15
16
17
18
19
20
21
29/42
Risposta ideale di un passa basso
Con i coefficienti della funzione
sinc troncata si ottiene una
risposta in frequenza che presenta
ripple sia in banda passante che
nella banda attenuata
I coefficienti vengono pesati con
funzioni particolari:
●
●
●
●
Hamming
Hanning
Bartlett
Blackman
S. Salvatori - Microelettronica - aprile 2016
30/42
Windowing
S. Salvatori - Microelettronica - aprile 2016
31/42
Windowing
S. Salvatori - Microelettronica - aprile 2016
32/42
Struttura di un FIR
linea di ritardo
h0
h1
h2
hM
moltiplicazione
somma
S. Salvatori - Microelettronica - aprile 2016
33/42
Esempio
fS: 44100 Hz
ft: 4 kHz
M: 20
[
sen 2 π
h (n)=.
(
ft
M
n−
fs
2
(
π n−
ft
2
fs
M
2
)
)]
per n≠
M
2
per n=
M
2
S. Salvatori - Microelettronica - aprile 2016
#
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sinc
-0,017555
-0,032341
-0,039323
-0,034095
-0,014550
0,018331
0,060410
0,105081
0,144601
0,171744
0,181406
0,171744
0,144601
0,105081
0,060410
0,018331
-0,014550
-0,034095
-0,039323
-0,032341
-0,017555
34/42
Esempio
Supponiamo di avere un ADC a 12 bit
Se anche per i coefficienti scelgo una
risoluzione di 12 bit:
h (i) x ( j)
24 bit
M
Y ( k)=∑ ai z x( z )
−i
i=0
21 addendi: altri 5 bit
Totale: 29 bit (ok per uP 32 bit)
S. Salvatori - Microelettronica - aprile 2016
#
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
coeff
-0,017555
-0,032341
-0,039323
-0,034095
-0,01455
0,018331
0,06041
0,105081
0,144601
0,171744
0,181406
0,171744
0,144601
0,105081
0,06041
0,018331
-0,01455
-0,034095
-0,039323
-0,032341
-0,017555
x4096
-72
-133
-162
-140
-60
75
247
430
592
703
743
703
592
430
247
75
-60
-140
-162
-133
-72
35/42
Algoritmo per il calcolo
X(0)
X(1)
X(2)
X(3)
X(4)
X(5)
X(6)
X(7)
X(8)
X(9)
X(10)
X(11)
X(12)
X(13)
X(14)
X(15)
X(16)
X(17)
X(18)
X(19)
X(20)
Nuovo
campione
X(1)
X(2)
X(3)
X(4)
X(5)
X(6)
X(7)
X(8)
X(9)
X(10)
X(11)
X(12)
X(13)
X(14)
X(15)
X(16)
X(17)
X(18)
X(19)
X(20)
X(21)
Scalare tutti gli elementi
del vettore X?
S. Salvatori - Microelettronica - aprile 2016
36/42
Algoritmo per il calcolo
X(0)
X(1)
X(2)
X(3)
X(4)
X(5)
X(6)
X(7)
X(8)
X(9)
X(10)
X(11)
X(12)
X(13)
X(14)
X(15)
X(16)
X(17)
X(18)
X(19)
X(20)
X(21)
X(1)
X(2)
X(3)
X(4)
X(5)
X(6)
X(7)
X(8)
X(9)
X(10)
X(11)
X(12)
X(13)
X(14)
X(15)
X(16)
X(17)
X(18)
X(19)
X(20)
p_x
X(21)
X(22)
X(2)
X(3)
X(4)
X(5)
X(6)
X(7)
X(8)
X(9)
X(10)
X(11)
X(12)
X(13)
X(14)
X(15)
X(16)
X(17)
X(18)
X(19)
X(20)
...
È sufficiente muovere
un puntatore
S. Salvatori - Microelettronica - aprile 2016
37/42
Algoritmo per il calcolo
Buffer circolare
p_x
Comincio a riempire il
vettore dalla posizione 0;
Si incrementa il puntatore;
Se p_x > M → p_x = 0
S. Salvatori - Microelettronica - aprile 2016
38/42
Algoritmo per il calcolo
Nuovo
campione
y←0
j ← p_x
i←0
i <= M
F
T
y ← a(i) * x(j) + y
decr. j
i←i+1
incr. p_x
S. Salvatori - Microelettronica - aprile 2016
39/42
Algoritmo per il calcolo
T
decr. j
incr. p_x
j←j-1
p_x ← p_x + 1
j<0
j←M
F
T
p_x > M
F
p_x ← 0
end
end
S. Salvatori - Microelettronica - aprile 2016
40/42
Riferimenti
http://http://www.labbookpages.co.uk/audio/firWindowing.html
http://http://www.robots.ox.ac.uk/~sjrob/Teaching/SP/l5.pdf
http://www.robots.ox.ac.uk/~sjrob/Teaching/SP/l6.pdf
S. Salvatori - Microelettronica - aprile 2016
41/42