You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
2.1 Introduzione<br />
2<br />
Sintesi di circuiti a tempo-discreto<br />
Nell’elaborazione numerica del segnale la scelta del tipo di filtro e il suo progetto è di centrale importanza<br />
praticamente in tutte le applicazioni DSP.<br />
La scelta di usare un filtro FIR o IIR è in genere legata, oltre alle caratteristiche della risposta in frequenza<br />
e fase desiderate, anche a considerazioni di tipo computazionale, al ritardo di gruppo ammissibile, ecc. Avere<br />
una fase lineare, per esempio, può risultare vantaggioso in molte situazioni e, laddove è compatibile con il<br />
tipo di applicazione, risulta preferibile l’uso di filtri FIR.<br />
Il progetto accurato di filtri FIR o IIR, è un argomento molto esteso ed esula dagli scopi di questa nota. Di<br />
seguito si introducono solo alcune metodologie rimandando ai riferimenti bibliografici approfondimenti su<br />
tale tematica.<br />
Progetto dei filtri FIR<br />
Nel caso in cui con un filtro FIR si voglia approssimare una certa risposta in frequenza, dalle precedenti<br />
proprietà è possibile derivare alcune tecniche di progetto molto efficaci tra le quali<br />
• la tecniche della finestratura (windowing design);<br />
• la tecnica del campionamento in frequenza;<br />
• il metodo ottimo equiripple o min-max error.<br />
La prima di queste tecniche consiste nel ricavare, in forma chiusa, la risposta impulsiva ideale hid[n] di<br />
lunghezza infinita che viene, successivamente, moltiplicata con una finestra w[n] di forma opportuna e<br />
lunghezza limitata; ovvero<br />
h[n]= hid[n] w[n] n=0, 1, …, N – 1.<br />
Nella tecnica del campionamento in frequenza la h[n] è determinata partendo dalla risposta in ampiezza<br />
desiderata. Si procede, quindi, a un’approssimazione di questa (solo sui punti di campionamento) con una<br />
tecnica di ottimizzazione (per esempio minimi quadrati).<br />
La tecnica min-max, una delle più usate, è basata sulla approssimazione polinomiale della risposta in<br />
frequenza. Il procedimento di ottimizzazione minimizza l’errore massimo tra la risposta in frequenza<br />
desiderata e quella raggiungibile dal filtro. L’errore (ripple) è pressoché identico per tutte le frequenze e per<br />
questa proprietà il filtro si dice anche equiripple.<br />
Progetto dei filtri IIR<br />
In letteratura esiste una grande varietà di procedimenti per il progetto di filtri IIR. Alcune tecniche,<br />
analogamente ai filtri FIR, sono basate sulla approssimazione di una certa maschera (passabasso, passaalto,<br />
ecc) e sono derivate dai metodi di progetto di filtri analogici. I metodi generalmente usati sono quelli tipici dei<br />
filtri analogici basati su rappresentazioni polinomiali della risposta in frequenza quali:<br />
• Butterworth (maxflat);<br />
• Bessel (ritardo di gruppo maxflat);<br />
• Chebyshev (equiripple);<br />
• ellittico (equiripple);
50 Capitolo 2<br />
• mappatura (mapping) da prototipo analogico.<br />
2.2 Generalità sul progetto filtri numerici<br />
I filtri sono dei circuiti in grado di lasciare passare alcune frequenze presenti nel segnale d’ingresso e di<br />
attenuarne delle altre. Nell’elaborazione numerica del segnale la scelta del tipo di filtro e il suo progetto è di<br />
centrale importanza praticamente in tutte le applicazioni reali del DSP.<br />
In termini generali, il progetto di un filtro può essere ricondotto ai seguenti punti:<br />
• convertire le richieste di progetto in precise specifiche sulla risposta in ampiezza e fase;<br />
• approssimare le specifiche di progetto del passo 1 con un filtro FIR o IIR fisicamente implementabile<br />
che sia ottimo, secondo qualche criterio, rispetto alle specifiche date;<br />
• realizzare il filtro secondo la tecnologia digitale più opportuna rispetto all’applicazione richiesta.<br />
2.2.1 Filtri ideali<br />
Sono detti ideali quei filtri che, invece di attenuarle, eliminano completamente le frequenze indesiderate.<br />
La classificazione dei filtri lineari viene in genere fatta in relazione alla gamma di frequenze mantenute nel<br />
segnale di uscita dei filtri stessi. Viene usato l’appellativo passabasso nel caso in cui il segnale in uscita<br />
presenta non attenuate le componenti al di sotto di una certa frequenza detta frequenza di taglio. Altre<br />
tipologie di filtro, con caratteristiche facilmente intuibili dal lettore, sono il passaalto, il passabanda e<br />
l’arrestabanda. Le risposte in frequenza e le rispettive DTFT ideali di tali filtri ideali sono riportate in Figura<br />
1.1.<br />
2.2.1.1 Filtro ideale passabasso<br />
La risposta in frequenza di un filtro passabasso ideale non causale può essere definita come<br />
H (e LP j! "<br />
$ 1 ! < ! c<br />
) = #<br />
0 ! < ! ! "<br />
%$ c<br />
Figura 1.1 Risposta in frequenza o ‘maschera’ e definizione di filtri ideali.<br />
(2.1)<br />
j 1<br />
c<br />
HLP ( e )<br />
0 c<br />
ω j<br />
HLP( e )<br />
1<br />
⎧ ω < ω<br />
= ⎨<br />
⎩ ω < ω ≤ π<br />
ω<br />
- Low pass filter<br />
−2 π −π −ω<br />
0 ω π 2 π ω<br />
c c<br />
j 0<br />
c<br />
HHP ( e )<br />
1 c<br />
ω j<br />
HHP ( e )<br />
1<br />
⎧ ω < ω<br />
= ⎨<br />
⎩ ω < ω ≤ π<br />
ω<br />
- High pass filter<br />
−2 π −π −ω<br />
0 ω π 2 π ω<br />
Pass - band filter<br />
1<br />
j<br />
H ( e )<br />
ω<br />
PB<br />
−2 π −π0<br />
ω ω 2 π ω<br />
Stop - band filter<br />
c c<br />
1<br />
a b<br />
j<br />
H ( e )<br />
ω<br />
SB<br />
−2 π −π0<br />
ω ω 2 π ω<br />
a b<br />
j 1 a b<br />
HPB ( e )<br />
0 altrove<br />
ω ⎧ ω ≤ ω ≤ ω<br />
= ⎨<br />
⎩<br />
j 0 a b<br />
HSB ( e )<br />
1 altrove<br />
ω ⎧ ω ≤ ω ≤ω<br />
= ⎨<br />
⎩
Sintesi di circuiti a tempo-discreto 51<br />
La risposta impulsiva del filtro ideale può essere calcolata antitrasformando la precedente espressione come<br />
h [n] = LPi 1<br />
2!<br />
= 1<br />
2!<br />
"<br />
"<br />
!"<br />
H (e LP j! )e j!n<br />
d! =<br />
e j"n<br />
" c<br />
!" c<br />
"<br />
= e j! c n ! e ! j! c n<br />
j2!n<br />
= sin(! cn) .<br />
!n<br />
d" =<br />
=<br />
Definendo la funzione sinc(! c n) ! sin(! c n) ! c n , per ! c = 2! f c , la precedente viene riscritta come<br />
(2.2)<br />
h id [n] = 2 f c sinc(! c n) ! " < n < " . (2.3)<br />
Si osservi che tale filtro ha durata infinita ed è non causale in quanto la risposta impulsiva è definita anche per<br />
n negativi.<br />
hn [ ]<br />
hn [ ]<br />
f = 0.25 N = 21<br />
Figura 1.2 Andamento nel tempo della risposta impulsiva e della risposta in frequenza di un filtro ideale non<br />
causale con h[n] troncata.<br />
In Figura 1.2 è riportato un esempio di risposta impulsiva di un filtro passabasso, con ωc= 2π0.25, ottenuta<br />
troncando la risposta impulsiva del filtro ideale (2.2). Dalla figura si può osservare che la risposta del filtro<br />
troncato presenta un certo ripple (fenomeno di Gibbs), intorno alla risposta ideale la cui ampiezza non<br />
dipende dalla lunghezza. Data la non causalità la risposta in fase, non riportata in figura, è nulla.<br />
Nelle implementazioni di filtraggio la risposta impulsiva del filtro viene “causalizzata” traslandola di una<br />
quantità tale che la h[n] sia definita per 0≤n≤N − 1.<br />
Ciò introduce un contribuito di fase non nullo e, nel<br />
caso di risposta impulsiva simmetrica, di tipo lineare (ovvero con ritardo di gruppo costante per tutte le<br />
frequenze).<br />
2.2.1.2 Filtro ideale passaalto, passabanda e arrestabanda<br />
La risposta in frequenza di un filtro passaalto ideale non causale può essere definita come completare rispetto<br />
ad un filtro passabasso. Per cui risulta<br />
H HP (e j! ) = 1! H LP (e j! ) (2.4)<br />
per cui, dalla (2.2), la risposta impulsiva risulta pari a<br />
0.5<br />
0.5<br />
h [n] = ![n] ! HPi sin(! cn) . (2.5)<br />
!n<br />
La risposta in frequenza di un filtro passabanda ideale risulta essere<br />
c<br />
f = 0.25 N = 51<br />
c<br />
Ripple (fenomeno di Gibbs)<br />
n<br />
n<br />
Filtro ideale<br />
−0.5 −0.25<br />
0 0.25 0.5 f<br />
−0.5 −0.25<br />
0 0.25 0.5 f
52 Capitolo 2<br />
H (e PB j! "<br />
$ 1 ! ! ! ! ! a b<br />
) = #<br />
%$ 0 altrove<br />
e procedendo come nel caso passabasso, la risposta impulsiva risulta pari a<br />
h [n] = PBi 1<br />
H (e BP<br />
2!<br />
j! )e j!n<br />
!<br />
"<br />
d! =<br />
!!<br />
= 1<br />
e<br />
2"<br />
j!n<br />
!! b<br />
" d! + e<br />
!! a<br />
j!n<br />
! #<br />
b<br />
" d!<br />
%<br />
$<br />
! a & =<br />
= e j! b n ! e ! j! b n<br />
j2!n<br />
! e j! a n ! e ! j! a n<br />
j2!n<br />
= sin(! bn) ! sin(! an) .<br />
!n<br />
Infine, per l’arresta banda è facile verificare che<br />
=<br />
(2.6)<br />
(2.7)<br />
h [n] = ![n] ! SBi sin(! bn) ! sin(! an) . (2.8)<br />
!n<br />
Osservazione<br />
Dalle precedenti definizioni, considerando identiche frequenze di taglio, un filtro passaalto è complementare<br />
al filtro passabasso e il filtro arrestabanda è complementare al filtro passabanda.<br />
2.2.1.3 Filtri differenziatori e di Hilbert ideali<br />
Il differenziatore è un filtro con risposta in frequenza ideale pari a<br />
H D (e j! ) = j! ! " " ! " " (2.9)<br />
la risposta impulsiva<br />
h [n] = Di 1<br />
j!e<br />
2!<br />
j!n<br />
!<br />
" d! =<br />
!!<br />
$<br />
&<br />
= %<br />
&<br />
'<br />
cos("n)<br />
n<br />
0<br />
n # 0<br />
n = 0.<br />
Il filtro di Hilbert è caratterizzato dal una risposta in frequenza ideale pari a<br />
H (e H j! # % j !! " " < 0<br />
) = $<br />
&% ! j 0 " ! < "<br />
la risposta impulsiva risulta<br />
h [n] = Hi 1<br />
je<br />
2!<br />
j!n<br />
0<br />
" d! ! je<br />
!!<br />
j!n<br />
!<br />
#<br />
" d!<br />
%<br />
$<br />
0 & =<br />
=<br />
2 sin2 (<br />
*<br />
)<br />
*<br />
+<br />
(" n 2)<br />
!n<br />
0<br />
n ' 0<br />
n = 0<br />
(2.10)<br />
(2.11)<br />
(2.12)
Differenziator filter<br />
Hilbert filter<br />
Figura 1.3 Risposta in frequenza del filtro differenziatore e di Hilbert ideali.<br />
Sintesi di circuiti a tempo-discreto 53<br />
Il differenziatore e il filtro di Hilbert sono filtri antisimmetrici per cui le risposte impulsive sono a simmetria<br />
dispari h[n] = h[!n].<br />
2.2.2 Specifiche del filtro<br />
Le specifiche del filtro sono generalmente espresse con delle maschere definite nel dominio della frequenza,<br />
in termini di risposta in ampiezza e/o risposta in fase.<br />
Con riferimento alla Figura 1.4, nel caso di filtri passa-basso la risposta in ampiezza desiderata è indicata<br />
come<br />
D(e j! "<br />
$ 1 per ! ![0,! ] p<br />
) = #<br />
0 per ! ![! ,! ]<br />
%$<br />
s<br />
(2.13)<br />
dove ω∈ [0, ω ] indica regione di frequenze passabanda, mentre ω ∈ [ ω , π ] indica la regione stopband (o<br />
p<br />
banda oscura). Si osservi che l’intervallo ω ∈ [ ω , ω ] è definito come banda di transizione o transition band<br />
p s<br />
ed è usuale non fornire alcuna specifica per tale regione di frequenze.<br />
L’ampiezza del ripple ammissibile nella passband è definito come<br />
A p = 20log 10<br />
mentre il ripple nella stopband è<br />
A s = !20log 10 ! s<br />
jω<br />
H ( e ) j<br />
−π<br />
0<br />
π<br />
D<br />
jω<br />
H ( e ) j<br />
−π<br />
0<br />
π<br />
H<br />
jω<br />
H ( e ) = jω<br />
−π ≤ ω ≤ π<br />
" 1+ ! %<br />
p<br />
$ ' [dB] (2.14)<br />
# 1! ! p &<br />
( ) [dB] (2.15)<br />
D<br />
jω<br />
⎧−<br />
j −π ≤ ω < 0<br />
HH( e ) = ⎨<br />
⎩<br />
j 0 ≥ ω > π<br />
s
54 Capitolo 2<br />
j<br />
He ( )<br />
ω<br />
1+ δ p<br />
1<br />
1− δ p<br />
δ s<br />
Figura 1.4 Generiche specifiche nel dominio della frequenza di un filtro numerico .<br />
In alcune applicazioni è necessario preservare la forma del segnale d’ingresso. Tale specifica può essere<br />
raggiunta se la risposta in fase del filtro, indicata come !(" ) ! "H(e i! ) , ha una un andamento lineare nella<br />
regione passabanda ω∈ [0, ω ]<br />
p<br />
!(" ) = #" + $ (2.16)<br />
dove α e β sono scelti arbitrariamente. In tal caso il criterio associato alla fase è generalmente fornito in<br />
termini di ritardo di gruppo definito come<br />
"#(" )<br />
! (" ) = ! g<br />
"" (2.17)<br />
o ritardo di fase definito come<br />
Passband<br />
Transition<br />
band<br />
ω p<br />
ωc<br />
ωs<br />
Maschera<br />
j<br />
H ( e )<br />
ω<br />
Stopband<br />
ω∈[0, ω ] Passband<br />
ω ∈[<br />
ω , ω ] Transition band<br />
ω ∈[<br />
ω , π ] Stopband<br />
#(" )<br />
! (" ) = ! p<br />
" . (2.18)<br />
id<br />
Osservazione<br />
Le specifiche di filtro possono essere definite in più di regioni d’interesse come, per esempio, illustrato in<br />
Figura 1.5.<br />
s<br />
s p<br />
p<br />
π<br />
ω
Sintesi di circuiti a tempo-discreto 55<br />
Figura 1.5 Specifiche di un filtro definito su più regioni passband e stopband. Per ogni regione può essere<br />
definito un differente margine di scostamento della risposta ideale definito dalla maschere del<br />
filtro.<br />
2.2.3 Criteri di approssimazione per il progetto di filtri<br />
j<br />
Il criterio di approssimazione consiste in una misura di distanza tra la risposta del filtro He ( )<br />
ω e quella<br />
j<br />
desiderata De ( )<br />
ω definita secondo una certa maschera.<br />
2.2.3.1 Norma di un vettore<br />
Prima di proseguire, ricordiamo al lettore che nel caso di uno spazio di ordine p, detto spazio Lp, la norma di<br />
un vettore x !! N Lp<br />
, di elementi xi, è indicata come x o come x , ed è definita come<br />
p<br />
N "<br />
x ! x<br />
p $ ! i<br />
# i=1<br />
p<br />
%<br />
'<br />
&<br />
1 p<br />
. (2.19)<br />
La precedente espressione è valida anche quando 0< p < 1;<br />
il risultato, in questo caso, non è esattamente una<br />
norma.<br />
Norma L0<br />
Per p = 0,<br />
la (2.19) diventa<br />
N<br />
0<br />
x = lim x = x<br />
0 p!0 p " (2.20)<br />
i<br />
i=1<br />
che, in pratica, rappresenta il numero di elementi non nulli del vettore x.<br />
Norma L1<br />
La norma L1 definita dalla (2.19) per p=1, è pari a<br />
N<br />
x = x<br />
1 ! (2.21)<br />
i<br />
i=1<br />
j<br />
He ( )<br />
ω<br />
j<br />
H ( e ) risposta ideale desiderata<br />
ω<br />
e rappresenta, in pratica, la somma dei moduli del vettore x.<br />
21<br />
id<br />
ω 11 = 0 ω ω<br />
ω22<br />
ω31 ω32<br />
ω41<br />
12<br />
ω42 = π<br />
Banda 1 Banda 2 Banda 3 Banda 4<br />
Specifiche del filtro<br />
ω ∈ ω , ω A(<br />
ω)<br />
= 1.0<br />
11 21<br />
ω ∈ ω , ω A(<br />
ω)<br />
= 0.0<br />
21 22<br />
ω ∈ ω , ω A(<br />
ω)<br />
= 0.7<br />
31 31<br />
ω ∈ ω , ω A(<br />
ω)<br />
=<br />
0.0<br />
41 42<br />
ω
56 Capitolo 2<br />
Norma L2<br />
La norma L2, detta anche norma Euclidea , è definita come<br />
N<br />
2<br />
x = x<br />
2 ! . (2.22)<br />
i<br />
i=1<br />
A volte è usata la norma quadratica che risulta pari a<br />
2<br />
x<br />
2<br />
N<br />
2<br />
= ! x = x i<br />
T x (2.23)<br />
i=1<br />
o la norma quadratica pesata definita come<br />
2<br />
x<br />
G<br />
= x T Gx (2.24)<br />
dove G è una matrice di pesatura diagonale.<br />
Norma L ∞<br />
La norma infinito, detta anche norma del massimo o norma di Chebyshev, dalla (2.19) per p →∞, risulta<br />
definita dalla seguente espressione<br />
x ! = max<br />
{ x<br />
i=1,...,N<br />
i } . (2.25)<br />
La precedente espressione è a volte indicata anche come norma uniforme o norma del massimo. In altri<br />
termini, con tale norma viene indicato il massimo valore del modulo del vettore x.<br />
2.3 Progetto filtri FIR ottimi<br />
Si definisce errore E(e j! ) la differenza tra la risposta del filtro e quella desiderata, ovvero<br />
E(e j! ) = D(e j! ) ! H(e j! ) ! !" . (2.26)<br />
Si osservi che con ω ∈Ω, s’intende che l’errore è calcolato su un insieme finito di pulsazioni ω = 2πf o di<br />
frequenze. Nei metodi numerici per il progetto dei filtri viene usata direttamente la frequenza normalizzata f.<br />
In pratica, la (2.26) è valutata su un insieme finito di frequenze Nf (in gergo indicato come frequency grid), in<br />
genere spaziato uniformemente, per f ∈ [0.0,0.5] .<br />
Indicando con h !(!,!) N il vettore contenente i tappi del filtro, tale che H(e j! ) = DTFT(h) , il progetto<br />
del filtro può essere effettuato definendo una Funzione Costo (FC) che, in pratica, coincide con la norma<br />
dell’errore valutato per un insieme di frequenze k∈[0, K − 1]<br />
J (h) = D(e j! K !1 #<br />
p<br />
k j! &<br />
k<br />
% " ) ! H(e ) (<br />
$ k=0<br />
'<br />
1 p<br />
! k !" (2.27)<br />
per cui il valore ottimo h , relativamente alla norma scelta, si ottiene minimizzando la FC J(h) stessa<br />
opt<br />
h opt !arg min<br />
!"#<br />
{ J (h) }. (2.28)<br />
È noto che il minimo di una funzione si ha quando la sua derivata è nulla, per cui vale<br />
"J (h)<br />
h ! # 0 (2.29)<br />
opt<br />
"h
Sintesi di circuiti a tempo-discreto 57<br />
si osservi, però, che la derivata !J (h) !h è calcolabile in forma chiusa solo in specifiche situazioni e, il più<br />
delle volte, per il calcolo dei parametro ottimi del filtro occorre minimizzare la (2.27) in forma espressamente<br />
numerica.<br />
Osservazione<br />
Nel caso di filtri FIR a fase lineare generalizzata (Cfr. §1.5.4), in cui vale l’espressione H(e j! ) = A(e j! j! (" )<br />
)e<br />
risulta che la fase è interamente determinata come φ( ω) = − αω + β . Ne segue che il progetto del filtro è<br />
interamente determinato dalla sola risposta in ampiezza che è definita dal modulo della risposta in frequenza<br />
come A(e j! k ) = H(e j! k ) . Per cui la FC è definita interamente da funzioni reali e, in genere, è indicata come<br />
J (h) = D(e j! K !1 #<br />
p<br />
k j! &<br />
k<br />
% " ) ! A(e ) (<br />
$ k=0<br />
'<br />
1 p<br />
ωk ∈Ω (2.30)<br />
j<br />
dove Ae ( )<br />
ω j<br />
e De ( )<br />
ω sono funzioni reali.<br />
Nel seguito del paragrafo viene trattato solo il caso definito da funzioni costo di tipo (2.30), ovvero<br />
relative a filtri FIR a di tipo I-IV.<br />
2.3.1 Criterio minimi quadrati o least squares (LS)<br />
Nel progetto di filtri FIR, in particolari situazioni, è usata la norma quadratica (2.23) che, nel nostro caso può<br />
essere definita come<br />
K !1<br />
" = E(e<br />
k=0<br />
j! K !1<br />
2<br />
k " ) k<br />
k=0<br />
J (h) = D(e j! k ) ! A(e j! k ) 2<br />
j k<br />
Esprimendo la Ae ( )<br />
ω come indicato della (1.63) (Cfr. §1.5.4), risulta<br />
A(e j! M !1<br />
k ) = h[n]trig(! ,n) k<br />
n=0<br />
ω ∈Ω. (2.31)<br />
" per k = 0, 1, ..., K − 1<br />
(2.32)<br />
e la FC (2.31) può essere scritta come<br />
K !1<br />
M !1<br />
J (h) = D(e j! k " ) ! " h[n]trig(! ,n) . (2.33)<br />
k<br />
k=0<br />
n=0<br />
Introducendo il vettore e !! K"1 = $ e[0] e[1] ! e[K #1]<br />
%<br />
J (h) = e T e.<br />
2<br />
T<br />
& , con e[k] = E(e<br />
'<br />
j! k ) , si potrà scrivere<br />
(2.34)<br />
Per esempio, nel caso di filtro FIR di tipo I a fase nulla, esplicitando la funzione trig( k , ) n ω secondo la (1.55)<br />
(Cfr. §1.5.4.1), la precedente può essere riscritta come<br />
"<br />
$<br />
$<br />
$<br />
$<br />
# $<br />
e[0]<br />
e[1]<br />
!<br />
e[K !1]<br />
% "<br />
' $<br />
' $<br />
'<br />
=<br />
$<br />
' $<br />
&'<br />
# $<br />
d[0]<br />
d[1]<br />
!<br />
d[K !1]<br />
per cui in forma vettoriale risulta<br />
% " 1 2cos! 2cos2! ! 2cos! (M !1) % "<br />
0 0 0<br />
' $<br />
' $<br />
' $ 1 2cos! 2cos2! ! 2cos! (M !1) '<br />
1 1 1 $<br />
'<br />
! $<br />
' $<br />
' $ ! ! ! ! " ' $<br />
&'<br />
$ 1 2cos! 2cos2! ! 2cos! (M !1) '<br />
#<br />
K !1 K !1 K !1 & # $<br />
h[0]<br />
h[1]<br />
!<br />
h[M !1]<br />
e = d − Xh (2.36)<br />
dove la matrice X !! K"M , in termini generali, è definita come<br />
%<br />
'<br />
' (2.35)<br />
'<br />
'<br />
&'
58 Capitolo 2<br />
"<br />
$<br />
$<br />
X = $<br />
$<br />
$<br />
#<br />
trig(! 0 ,0) trig(! 0 ,1) ! trig(! 0 ,M !1)<br />
trig(! 1 ,0) trig(! 1 ,1) ! trig(! 1 ,M !1)<br />
! ! " !<br />
trig(! K !1 ,0) trig(! K !1 ,1) ! trig(! K !1 ,M !1)<br />
%<br />
'<br />
'<br />
'<br />
'<br />
'<br />
&<br />
(2.37)<br />
e dove il vettore d !! K"1 = $ d[0] d[1] ! d[K #1] & , con d[k] = D(e<br />
%<br />
'<br />
j! k ) , contiene i valori della<br />
risposta in frequenza desiderata nell’insieme dei K punti di misura.<br />
Con le precedenti posizioni la FC (2.34), mediante la (2.36), diventa<br />
J (h) = e T e<br />
= (d T ! h T X T )(d ! Xh)<br />
= d T d ! d T Xh ! h T X T d + h T X T Xh.<br />
T<br />
(2.38)<br />
La soluzione ottima si minimizzando l’espressione precedente. Derivando la precedente (vettorialmente) ed<br />
eguagliando a zero si trova<br />
!J (h)<br />
!h = "2XT d + 2X T Xh # 0 . (2.39)<br />
La precedente espressione descrive un sistema di M equazioni in M incognite (i termini del vettore h) dette<br />
equazioni normali<br />
X T Xh = X T d (2.40)<br />
Il numero delle incognite M è, in genere, minore rispetto al numero di equazioni K della (2.36) per cui il<br />
sistema è di tipo sovradeterminato. La minimizzazione dell’errore conduce all’espressione della soluzione<br />
h opt = (X T X) !1 X T d . (2.41)<br />
La matrice (X T X) !1 X T è nota come pseudo inversa della matrice rettangolare X.<br />
Esempio<br />
In Figura 1.6 sono riportate le risposte in ampiezza di tre filtri FIR di lunghezza pari N = 21. Considerando la<br />
frequenza normalizzata, le regioni passband fp e stopband fs<br />
per i tre filtri sono rispettivamente definite come f = [0.0,0.15] , f = [0.35,0.5] ; f = [0.0,0.2] ,<br />
f = [0.3,0.5] e<br />
s2<br />
p3<br />
p1<br />
f = [0.0,0.245] , f = [0.255,0.5] . In altri termini, come indicato in figura, i tre filtri sono<br />
s3<br />
caratterizzati dalla stessa frequenza di taglio a metà ampiezza pari a fc = 0.25 e bande di transizione a<br />
Δ f = 0.2,<br />
Δ f2<br />
= 0.1 e Δ f3<br />
= 0.01.<br />
1<br />
s1<br />
p2
Magnitute |H(e jω )|<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
Δ f = f − f<br />
Δ f = 0.2<br />
Figura 1.6 Progetto di filtri FIR con il metodo dei minimi quadrati.<br />
Sintesi di circuiti a tempo-discreto 59<br />
0<br />
0 0.1 0.2 0.3 0.4 0.5<br />
Normalized Frequency<br />
Dalla figura si può osservare che: 1) il ripple non è uniforme; 2) diminuendo la banda di transizione il ripple<br />
aumenta.<br />
Osservazione<br />
Una caratteristica specifica nell’uso della norma ai minimi quadrati per il progetto di filtri è che, per<br />
definizione, questa tende a minimizzare la superficie tra la curve della risposta desiderata e quella effettiva del<br />
filtro. Tale caratteristica tende a determinare un ripple che non è uniforme in frequenza e con uno scostamento<br />
massimo intorno alla frequenza di taglio del filtro. Infatti, dalla Figura 1.6 si può osservare che questo assume<br />
valori più elevati in prossimità della frequenza di taglio.<br />
Per il progetto dei filtri è stata usata la procedura Matlab firls che implementa l’espressione (2.41). Il<br />
codice della procedura è di seguito riportato.<br />
% Filter design by ls method ---------------------------------------------<br />
Fs = 1; % Sampling Frequency<br />
Nf = 21; % Filter length<br />
N = 20; % Filter order<br />
Wpass = 1; % Passband Weight<br />
Wstop = 1; % Stopband Weight<br />
Fpass = 0.15; % Passband Frequency<br />
Fstop = 0.35; % Stopband Frequency<br />
b = firls(N, [0 Fpass Fstop Fs/2]/(Fs/2), [1 1 0 0], [Wpass Wstop])<br />
[h1,w] = freqz(b,1,512);<br />
Fpass = 0.2; % Passband Frequency<br />
Fstop = 0.3; % Stopband Frequency<br />
b = firls(N, [0 Fpass Fstop Fs/2]/(Fs/2), [1 1 0 0], [Wpass Wstop])<br />
[h2,w] = freqz(b,1,512);<br />
Fpass = 0.245; % Passband Frequency<br />
Fstop = 0.255; % Stopband Frequency<br />
b = firls(N, [0 Fpass Fstop Fs/2]/(Fs/2), [1 1 0 0], [Wpass Wstop])<br />
[h3,w] = freqz(b,1,512);<br />
figure1 = figure('PaperType','a4letter','PaperSize',[20.98 29.68]);<br />
axes('Parent',figure1,'YTick',[0 0.2 0.4 0.6 0.8 1 1.2],'YGrid','on',...<br />
'XTick',[0 0.1 0.2 0.3 0.4 0.5],...<br />
'XGrid','on');<br />
box('on');<br />
hold('all');<br />
xlabel('Normalized Frequency');<br />
ylabel('Magnitute |{\it{H}}({\ite^{j\omega}})|');<br />
plot(w/(2*pi),abs(h1));<br />
plot(w/(2*pi),abs(h2));<br />
plot(w/(2*pi),abs(h3));<br />
% END --------------------------------------------------------------------<br />
Esempio<br />
In Figura 1.7 è disegnata la risposta in ampiezza per un filtro FIR passabasso di lunghezza pari a N = 61, con<br />
una regione passband f p = [0.0,0.1] e una regione stopband pari a f s = [0.2,0.5] . In termini di pulsazione<br />
vale perciò<br />
1<br />
Δ f = 0.1<br />
2<br />
Δ f =<br />
0.01<br />
2<br />
s p
60 Capitolo 2<br />
D(e j! # % 1.0 per ! ![0,2" "0.1]<br />
) = $<br />
&% 0.0 per ! ![2" "0.2," ]<br />
(2.42)<br />
Figura 1.7 Risposta in ampiezza di un filtro passabasso di tipo I di lunghezza pari a N = 61, (ordine 60) con<br />
banda passante fp = [0, 0.1] e banda oscura fs = [0.2, 0.5] progettato con il metodo dei minimi<br />
quadrati. Nel riquadro è riportato il ripple nella banda passante.<br />
2.3.2 Norma pesata<br />
j<br />
La norma pesata è definita moltiplicando l’errore per una funzione peso Ge ( )<br />
ω , ovvero<br />
E(e j! ) = G(e j! ) D(e j! ) ! A(e j! ( ) ) . (2.43)<br />
Utilizzando la norma pesata la funzione di errore può essere definita come<br />
con<br />
j<br />
Magnitude 20log10 He ( )<br />
ω<br />
0<br />
−20<br />
−40<br />
−60<br />
−80<br />
−100<br />
0.0 0.1 0.2 0.3 0.4 0.5<br />
( ) p<br />
J (h) = G(e j! K !1 #<br />
k j! k j! k<br />
% " ) D(e ) ! A(e )<br />
$ k=0<br />
h !arg min G(e opt j! * K "1<br />
, $<br />
k j! k j! k<br />
+ &#<br />
) D(e ) " A(e )<br />
% k=0<br />
-<br />
,<br />
&<br />
(<br />
'<br />
1 p<br />
( ) p<br />
'<br />
)<br />
(<br />
ωk ∈Ω (2.44)<br />
1 p<br />
.<br />
,<br />
/ . (2.45)<br />
0<br />
,<br />
La funzione peso è in genere definita su regioni di frequenze. Per esempio considerando il caso descritto dalle<br />
specifiche indicate in Figura 1.4, la funzione peso può essere definita come<br />
G(e j! "<br />
$ 1.0 per ! ![0,! ] p<br />
) = #<br />
! ! per ! ![! ,! ].<br />
p s s %<br />
$<br />
0.002<br />
Normalized Frequency<br />
0<br />
j<br />
20log10 He ( )<br />
ω<br />
−0.002<br />
0.0 0.05 0.1<br />
(2.46)
Sintesi di circuiti a tempo-discreto 61<br />
j<br />
Per esempio, se nella regione stopband ω ∈ [ ω , π ] si ha Ge ( ) 10.0<br />
ω = e nella regione passband si ha<br />
s<br />
j<br />
Ge ( ) 1.0<br />
ω = , ciò corrisponde a un’attenuazione nella stopband pari 10 volte il ripple della passband. La<br />
j<br />
pesatura consente il progetto del filtro in modo più flessibile. In altri termini, per Ge ( )<br />
ω = 1.0 su tutte le<br />
regioni, il filtro è di tipo equiripple.<br />
A titolo di esempio, è riportato un ipotetico file di specifiche per un filtro FIR passabasso di lunghezza pari<br />
a N = 61, con le stesse specifiche indicate dalla (2.42) e una funzione peso pari a<br />
G(e j! # % 1.0 per ! ![0,2" "0.1]<br />
) = $<br />
&% 10.0 per ! ![2" "0.2," ].<br />
FIR design specification file <br />
61 2 ; nTap, nBand <br />
0.0 0.1 20 1.0 1.0 ; 1^banda: pass‐band, FreqGrid, obj, weig <br />
0.2 0.5 32 0.0 10.0 ; 2^banda: stop‐band, FreqGrid, obj, weig <br />
N61_1.out ; output file name <br />
END <br />
(2.47)<br />
Nel file, la regione passabanda è valutata su 20 punti, mentre la regione stopband su 32 punti spaziati<br />
uniformemente.<br />
2.3.2.1 Criterio minimi quadrati pesato<br />
La norma quadratica pesata è definita come<br />
( ) 2<br />
K !1<br />
"<br />
k=0<br />
k<br />
J (h) = G(e j! k ) D(e j! k ) ! A(e j! k )<br />
ω ∈Ω (2.48)<br />
In tale caso, detta G la matrice diagonale contenente i valori dei pesi per le varie bande di frequenza, le<br />
equazioni normali (2.41) sono riscritte nella forma<br />
X T GXh = X T Gd (2.49)<br />
Anche in questo caso il numero delle incognite M è minore rispetto al numero di equazioni K per cui il<br />
sistema è di tipo sovradeterminato. La soluzione che minimizza l’errore è<br />
h opt = (X T GX) !1 X T Gd . (2.50)
62 Capitolo 2<br />
j<br />
Magnitude 20log10 He ( )<br />
ω<br />
Figura 1.8 Risposta in ampiezza di un filtro passabasso progettato con il metodo dei minimi quadrati<br />
pesato. N = 61, fp = [0, 0.1] e banda oscura fs = [0.2, 0.5]. Nel riquadro è riportato il ripple nella<br />
banda passante.<br />
Osservazione<br />
Il criterio dei minimi quadrati, imponendo la minimizzazione di una norma quadratica, è indicato anche come<br />
criterio max-flat in quanto consente di avere una risposta in frequenza massimamente piatta.<br />
Esempio<br />
In Figura 1.8, è riportato un ipotetico file di specifiche per un filtro FIR passabasso di lunghezza pari a N =<br />
61, con specifiche sulla risposta in frequenza definite dalla (2.42) e una funzione pesi definita dalla (2.47).<br />
Confrontando le risposte in ampiezza riportate in Figura 1.7 e in Figura 1.8, si può osservare come l’effetto<br />
della pesatura consiste a un aumento del ripple in banda passante e a una diminuzione del ripple in banda<br />
oscura.<br />
Osservazione<br />
I criteri dei minimi quadrati e dei minimi quadrati pesato si prestano a molte possibili modifiche e<br />
specializzazioni. Queste consentono una notevole flessibilità e filosofie diversificate di progetto.<br />
2.3.3 Criterio min-max<br />
Una scelta molto comune nel caso di progetto dei filtri numerici è la norma di Chebyshev, ovvero la norma<br />
del massimo. Con tale criterio viene minimizzato il massimo scostamento tra la risposta desiderata e quella<br />
effettiva del filtro. In questo caso il filtro non è ottimo nel senso dei minimi quadrati ma nel senso del<br />
massimo errore.<br />
La norma del massimo è tra le più usate nel progetto di filtri numerici (e analogici) in quanto si dimostra<br />
j<br />
facilmente che con tale criterio l’errore Ee ( )<br />
ω<br />
Dalla definizione della norma infinito (2.25) e dalla (2.26) risulta<br />
h opt !arg min max<br />
D(e<br />
! k "#<br />
j! k j! k { { ) $ A(e ) } }<br />
E nel caso di criterio con pesatura risulta<br />
0<br />
−20<br />
−40<br />
−60<br />
−80<br />
−100<br />
0.0 0.1 0.2 0.3 0.4 0.5<br />
0.002<br />
Normalized Frequency<br />
0<br />
j<br />
20log10 He ( )<br />
ω<br />
−0.002<br />
0.0 0.05 0.1<br />
è ‘spalmato’ in modo uniforme su tutte le frequenze.<br />
. (2.51)
h opt !arg min max<br />
G(e<br />
! k "#<br />
j! ) D(e j! k j! k { { ( ) $ A(e ) ) } }<br />
Sintesi di circuiti a tempo-discreto 63<br />
. (2.52)<br />
In virtù del formalismo (2.51) o (2.52), il criterio è noto anche con l’appellativo min-max o equiripple.<br />
Il progetto di un filtro min-max è più complesso rispetto al criterio dei minimi quadrati. In genere, infatti,<br />
non è possibile derivare la funzione costo e determinare un sistema di equazioni eguagliando a zero la<br />
derivata.<br />
La soluzione del problema della determinazione della risposta impulsiva ottima del filtro è ricondotta a un<br />
problema di approssimazione in cui, data una certa funzione continua definita su in prefissato intervallo<br />
chiuso e limitato, occorre determinare il polinomio approssimante considerando la norma del massimo. Si noti<br />
che la funzione A(e jω ) non è vincolata nelle regioni di transizione.<br />
2.3.3.1 Risposta in ampiezza nella forma polinomiale di Chebyshev<br />
Considerando per semplicità il filtro di tipo I, dallo sviluppo in §1.5.4.1 possiamo scrivere<br />
L<br />
A(e j! ) = H(e j! n ) = ! a[n]cos! n (2.53)<br />
n=0<br />
in cui L= ( N −1) 2 − 1 e il termine a[n] è legato alla risposta impulsiva del filtro come<br />
a[0] = h[(N !1) 2]<br />
a[n] = 2h[(N !1) 2 + n] n = 1, 2, ..., (N !1) 2.<br />
(2.54)<br />
Per lo sviluppo in seguito, si osservi che il termine cos(ωn) nella (2.53) può essere espresso come somma di<br />
potenze di cosω nella forma<br />
cos!n = T n (cos! ) (2.55)<br />
−1<br />
in cui con Tk ( x) = cos( k cos x)<br />
si indica il polinomio di Chebyshev di ordine k che può essere generato con<br />
la seguente ricorrenza<br />
T 0 (x) = 1<br />
T 1 (x) = cos(cos !1 x) = x<br />
T 2 (x) = cos(2cos !1 x) = 2x 2 !1<br />
...<br />
T n (x) = 2xT n!1 (x) ! T n!2 (x).<br />
(2.56)<br />
Usando tali equivalenze, cos(ωn) può essere espresso come un polinomio in cosω per cui la risposta in<br />
ampiezza (2.53) può essere riscritta come<br />
L<br />
!<br />
L<br />
n = ! a[n]Tn cos! = ![n]cos<br />
n=0<br />
n=0<br />
n L<br />
!<br />
n=0<br />
A(e j! ) = a[n]cos!<br />
( )<br />
! . (2.57)<br />
La precedente mostra che la risposta in ampiezza di un filtro FIR di tipo I di lunghezza N, può essere<br />
interamente determinata come un polinomio di ordine L= ( N −1) 2 − 1.<br />
Tale uguaglianza può essere<br />
utilmente usata per la definizione di numerosi metodi di progetti di filtri con criterio min-max.<br />
2.3.3.2 Determinazione delle equazioni<br />
La soluzione del problema del progetto è formulata considerando la teoria dell’approssimazione di funzioni<br />
con i polinomi di Chebyshev. In particolare la soluzione proposta da Parks-McClellan [10] è basata sul<br />
teorema dell’alternanza, che fornisce uno dei metodi più usati per l’approssimazione di funzione continue in<br />
un intervallo limitato.
64 Capitolo 2<br />
Teorema dell’alternanza<br />
Sia Ω un sottoinsieme compatto dell’intervallo [0, π ) . Sia P(x) un polinomio di ordine L<br />
L<br />
P(x) = a x n n<br />
! (2.58)<br />
n=0<br />
Sia DP(x) una funzione desiderata di x, continua in Ω . Indicata con WP(x) una funzione peso positiva, continua<br />
in Ω, sia EP(x) l'errore pesato<br />
E (x) = W (x) "# D (x) ! P(x) $ P P P % . (2.59)<br />
Il massimo errore E è definito dalla relazione<br />
E = max<br />
x!"<br />
E P (x) (2.60)<br />
Una condizione necessaria e sufficiente affinchè P(x) sia l'unico polinomio di ordine L che minimizza E<br />
è che EP(x) abbia almeno L+2 alternanze, cioè che esistano almeno L+2 valori xi in Ω tali che x1
Sintesi di circuiti a tempo-discreto 65<br />
corrispondente a un sistema di equazioni nelle incognite a[k] e ε che possono essere scritte in forma matriciale<br />
come<br />
1 cos! ! cos! L 1 G(e 0 0 j! 0 )<br />
1 cos! ! cos! L !1 G(e 1 1 j! 1 )<br />
! ! ! " !<br />
1 cos! ! cos! L (!1) L L L G(e j! L )<br />
1 cos! ! cos! L (!1) L+1 L+1 L+1 G(e j! "<br />
%<br />
$<br />
'<br />
" a[0] % D(e<br />
$<br />
'<br />
$ '<br />
$<br />
'<br />
$ a[1] '<br />
$<br />
'<br />
$<br />
!<br />
'<br />
$<br />
'<br />
$ '<br />
=<br />
$<br />
'<br />
$ a[L] '<br />
$<br />
L+1 '<br />
$ '<br />
) !<br />
#<br />
$<br />
&<br />
' # $ &'<br />
j! 0 )<br />
D(e j! 1 )<br />
!<br />
D(e j! L )<br />
D(e j! " %<br />
$ '<br />
$ '<br />
$ '<br />
$ ' (2.63)<br />
$ '<br />
$ '<br />
$<br />
L+1 ) '<br />
# $ &'<br />
Note le frequenze estremali, queste equazioni possono essere risolte per a[0], a[1], …, a[L] e ε.<br />
Osservazione<br />
Il precedente sviluppo può essere facilmente esteso al caso più generale in cui (vedi (1.64)) la risposta in<br />
ampiezza è espressa come<br />
L<br />
A(e j! ) = ! h[n]trig(!,n) . (2.64)<br />
n=0<br />
Algoritmo di Parks-McClellan<br />
La determinazione delle frequenze estremali nella (2.63) può essere fatta con il metodo di Parks-McClellan<br />
(PM) che, indicando con i l’indice di ricorrenza, è implementato con il seguente algoritmo ricorsivo<br />
(i=0)<br />
1. Inizializzazione. Scelta iniziale delle frequenze estremali ! . k<br />
2. Determinazione dell’errore massimo ε con la soluzione delle (2.63)<br />
! =<br />
L+1<br />
!<br />
b(k)D(e j! (i )<br />
k )<br />
k=0<br />
("1) k b(k) G(e j! L+1<br />
(i )<br />
k )<br />
!<br />
k=0<br />
dove<br />
b(n) =<br />
(2.65)<br />
L+1<br />
1<br />
# (2.66)<br />
(cos! ! cos! )<br />
n k<br />
k=1,k"n<br />
3. Calcolo della funzione costo E(e j! (i)<br />
) sull’insieme di frequenze ! !" , interpolando tra i valori<br />
k<br />
estremali (usando la formula dell’interpolatore di Lagrange 1 ).<br />
4. Se per qualche ω risulta E(e j! (i+1)<br />
) > " , selezionare un nuovo insieme di frequenze estremali ! k<br />
scegliendo L+2 frequenze per cui la funzione interpolata di errore è quella massima.<br />
5. Ripetere dal passo 2 finché vengono trovate nuove frequenze.<br />
1 Data una funzione f(x) e n punti a1,a2... an per cui sono noti i valori f(a1),f(a2)...f(an) si definisce il polinomio interpolatore di<br />
Lagrange della funzione f il polinomio P(x) = f (a i )<br />
n<br />
$<br />
i=1<br />
#<br />
j"i<br />
x ! a j<br />
a i ! a j
66 Capitolo 2<br />
j<br />
He ( )<br />
ω<br />
Figura 1.9 Filtro di tipo I, N = 15 (ordine pari a n=14), banda passante fp = [0, 0.1875] e banda oscura fs =<br />
[0.25, 0.5]. Con M = 7 il minimo numero di alternanze è pari a 9. Il ripple risultante è pari δp=δs=<br />
0.08836.<br />
Esempio<br />
In Figura 1.9 è riportata la risposta in frequenza di un filtro FIR di tipo I di lunghezza N=15 con specifiche<br />
! p = [0,2! "0.1.875] e ! s = [0,2! "0.25] . La H(e j! ) è calcolata con la procedura Matlab firpm che<br />
implementa il metodo di progetto di Parks-McClellan a sua volta basato sull’algoritmo di Remez [7] .<br />
Esempio<br />
In Figura 1.10 è riportata la risposta in frequenza di un filtro FIR di tipo I di lunghezza pari a N = 41 con<br />
specifiche ! p = [0,2! "0.15] e ! s = [0,2! "0.22] . La H(e j! ) è calcolata con la procedura Matlab firpm.<br />
Magnitute [dB] 20log|H(e jω )|<br />
10<br />
0<br />
-20<br />
-40<br />
-60<br />
-80<br />
1.2<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0<br />
−1<br />
9 Frequenze estremali<br />
Nf = 15;<br />
n = Nf - 1;<br />
f = [0 0.375 0.5 1];<br />
a = [1 1 0 0];<br />
b = firpm(n,f,a)<br />
[h,w] = freqz(b,1,512);<br />
plot(w/(2*pi),abs(h));<br />
0.0 0.1 0.2 0.3 0.4 0.5<br />
Frequenza normalizzata<br />
0 0.1 0.2 0.3 0.4 0.5<br />
Normalized Frequency<br />
Figura 1.10 Filtro di tipo I, N = 41 (ordine pari a n=40), banda passante fp = [0, 0.15] e banda oscura fs =<br />
[0.22, 0.5].
Sintesi di circuiti a tempo-discreto 67<br />
Esempio<br />
La Figura 1.11 illustra un esempio di risposta in ampiezza di un filtro differenziatore di lunghezza pari a N =<br />
101.<br />
Figura 1.11 Esempio di progetto di un filtro differenziatore di lunghezza N = 101. Le specifiche sono riportate<br />
in figura.<br />
2.3.3.3 Regole per il progetto filtri FIR a minima norma di Chebyshev<br />
j<br />
L’algoritmo di PM è utilizzabile per approssimare qualunque risposta in ampiezza De ( )<br />
ω e il progetto dei<br />
filtri è effettuato seguendo delle specifiche che, di volta in volta, possono essere diverse. Per esempio, nel<br />
caso di filtri passabasso i parametri di progetto d’interesse sono cinque: la lunghezza del filtro N, le regioni<br />
passband e stopband fp e fs e il massimo errore nelle regioni passband e stopband δp e δs. Tali valori non sono<br />
tra loro indipendenti e la modifica di uno di essi interferisce con gli altri quattro parametri.<br />
Una formula approssimata per il calcolo della lunghezza del filtro partendo dalle specifiche sul ripple, è la<br />
seguente<br />
N = !10log(! p ! ) !13 s<br />
+1 (2.67)<br />
14.6"f<br />
Esempio<br />
Supponiamo di volere progettare un filtro audio passabasso di tipo equiripple. Le specifiche sono: frequenza<br />
di campionamento pari a Fs = 48 kHz, attenuazione in banda oscura pari 100 dB con banda passante pari a<br />
500 Hz e banda di transizione pari a 200 Hz.<br />
La specifica sul ripple in valori naturali è pari a ! s = 10 !! sdB 20 = 10 !5 , mentre quella sulla banda di<br />
transizione normalizzata risulta !f = 200 / 48000 = 4.167"10 #3 per cui la lunghezza stimata del filtro risulta<br />
N = !10log(10!10 ) !13<br />
+1 = 1431<br />
!3<br />
14.6"4.167"10<br />
Magnitute [dB] 20log|H(e jω )|<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
n = 100; % order<br />
f = [0 0.9 0.95 1];<br />
a = [0 1 0 0];<br />
b = firpm(n,f,a)<br />
[h,w] = freqz(b,1,512);<br />
plot(w/(2*pi), abs(h));<br />
0<br />
0 0.1 0.2 0.3 0.4 0.5<br />
Normalized Frequency
68 Capitolo 2<br />
Magnitute [dB] 20log|H(e jω )|<br />
0<br />
-20<br />
-40<br />
-60<br />
-80<br />
-100<br />
-120<br />
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 2.2 2.4<br />
x 10 4<br />
Frequency Hz<br />
Figura 1.12 Risposta in frequenza di un filtro FIR equiripple (leggi testo).<br />
Magnitute [dB] 20log|H(e jω )|<br />
0<br />
-20<br />
-40<br />
-60<br />
-80<br />
-100<br />
-120<br />
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 2.2 2.4<br />
x 10 4<br />
Frequency Hz<br />
Figura 1.13 Risposta in frequenza di un filtro FIR progettato con metodo LS con le stesse specifiche del filtro<br />
in Figura 1.12.<br />
Esempio<br />
Progetto di un filtro di crossover a due vie per applicazioni audio. La frequenza di campionamento è fs = 44.1<br />
kHz, la frequenza di taglio fs = 2 kHz, la banda di transizione è pari a Δf = 500 Hz e l’attenuazione della<br />
stopband pari a 90dB.<br />
Di seguito è riportato il codice Matlab per il calcolo del filtro di crossover dell’esempio.<br />
% TWO WAY CROSSOVER ---------------------------------------------------<br />
Fs = 44100; % Sampling Frequency<br />
% Low pass ----------------------------------------------------<br />
Fc = 2000; % Cut Frequency<br />
dF1 = 500; % Delta Frequency<br />
dltdB = 90; % Desired stopband attenuation in [dB]<br />
dlt = 10^(-dltdB/20)<br />
N = round(((-10*log10(dlt*dlt))-13)/(14.6*(dF1/Fs))/2);<br />
N = 2*N; % Estimated filter order (odd length)<br />
F1 = (Fc - (dF1 /2.0)) / Fs; % Passband Normalized Frequency<br />
F2 = (Fc + (dF1 /2.0)) / Fs; % Stopband Normalized Frequency<br />
b1 = firpm(N,[0 2*F1 2*F2 1],[1 1 0 0],[1 1])<br />
[h1,w] = freqz(b1,1,1024,Fs);<br />
% High pass by complementary response of lowpass filter --------<br />
M = N/2 + 1; % Group delay
Sintesi di circuiti a tempo-discreto 69<br />
b3 = - b1;<br />
cntr = 1.0 - b1( M );<br />
b3( M ) = cntr;<br />
[h3,w] = freqz(b3,1,1024,Fs);<br />
figure1 = figure('PaperSize',[7 11]);<br />
axes('Parent',figure1,'YMinorTick','on',...<br />
'XTick',[0 2000 4000 6000 8000 1e+004 1.2e+004 1.4e+004 1.6e+004 1.8e+004 2e+004 2.2e+004<br />
2.4e+004],...<br />
'XMinorTick','on');<br />
xlim([0 2.4e+004]);<br />
ylim([-130 10]);<br />
box('on');<br />
hold('all');<br />
xlabel('Frequency Hz');<br />
ylabel('Magnitute [dB] 20log|{\it{H}}({\ite^{j\omega}})|');<br />
plot(w, 20*log10(abs(h1)));<br />
plot(w, 20*log10(abs(h3)));<br />
xn [ ]<br />
digital audio input<br />
M<br />
z −<br />
HLP() z<br />
Figura 1.14 Esempio di un filtro di crossover numerico a due vie.<br />
La Figura 1.14 mostra uno schema implementativo del filtro a due vie. Si osservi che la banda in alta<br />
frequenza è ottenuta sottraendo al segnale d’ingresso, opportunamente ritardato, la componente in bassa<br />
frequenza in uscita dal filtro. Si dimostra facilmente, infatti, che per la funzione di trasferimento del filtro<br />
passaalto complementare rispetto al passabasso vale<br />
jω jω<br />
H ( e ) = 1 − H ( e )<br />
(2.68)<br />
HP LP<br />
−<br />
+<br />
DAC Ampli<br />
DAC<br />
In Figura 1.15 sono riportate le risposte in frequenza in decibel e in valori naturali del filtro di crossover con<br />
le specifiche dell’esempio.<br />
Magnitute |H(e jω )|<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2<br />
x 10 4<br />
0<br />
Frequency Hz<br />
Magnitute [dB] 20log|H(e jω )|<br />
Figura 1.15 Risposte in ampiezza di un filtro di crossover a due vie con frequenza di incrocio pari a f = 2kHz.<br />
Ampli<br />
0<br />
-20<br />
-40<br />
-60<br />
-80<br />
-100<br />
Tweeter<br />
Twetter<br />
Woofer<br />
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2<br />
x 10 4<br />
-120<br />
Frequency Hz
70 Capitolo 2<br />
2.3.4 Metodo della finestratura della risposta impulsiva ideale<br />
Il metodo della finestratura della risposta impulsiva ideale consiste nella moltiplicazione della risposta<br />
impulsiva ideale di un filtro numerico ideale di durata infinita hid[n], con una finestra di durata finita w[n]. In<br />
altri termini la risposta impulsiva del filtro è determinata come<br />
h[n] =w[n]! h id [n] . (2.69)<br />
La finestra w[n], che può essere scelte tra numerose alternative, consente di attenuare il fenomeno di Gibbs<br />
dovuto al troncamento della hid[n], eliminando o attenuando le discontinuità.<br />
Filtri FIR molto importanti nelle elaborazioni numeriche dei segnali, come già indicato in precedenza nel<br />
filtro passabasso ideale, sono quelli caratterizzati da risposte impulsive di tipo sinc(x).<br />
Nel caso di circuiti TD la risposta h[n] di un filtro passabasso con frequenza di taglio ωc ideale può essere<br />
calcolata con la seguente espressione<br />
h id [n] = 2 f c sinc(! c n) ! " < n < " . (2.70)<br />
Il troncamento della (2.70) è equivalente alla moltiplicazione della risposta impulsiva ideale con una<br />
sequenza finestra w[n] definita come:<br />
" $ 1 per -L ! n ! L<br />
w[n] = #<br />
%$ 0 altrove<br />
. (2.71)<br />
Il brusco troncamento della (2.70) ha come effetto la presenza di un ripple intorno alla maschera del filtro<br />
ideale. Il ripple può essere interpretato come effetto della convoluzione tra la risposta in frequenza ideale del<br />
filtro e la DTFT della finestra. La risposta in frequenza del filtro è quindi H(e j! ) = W (e j! )! H id (e j! ) . È<br />
ovvio, allora, che la forma della finestra w[n] può essere scelta in modo da diminuire tale effetto: per attenuare<br />
il ripple il troncamento è eseguito, in maniera meno brusca, moltiplicando la risposta ideale per una certa<br />
sequenza w[n] di lunghezza limitata, detta funzione finestra.<br />
Ne segue che la risposta impulsiva del filtro passabasso reale, di tipo causale (ovvero traslata a destra in<br />
modo che sia nulla per n
2n<br />
N !1<br />
0 " n "<br />
N !1 2<br />
w[n] = 2 ! 2n<br />
#<br />
%<br />
%<br />
%<br />
N !1<br />
$<br />
< n " N !1<br />
% N !1 2<br />
% 0 altrove<br />
%<br />
&<br />
Sintesi di circuiti a tempo-discreto 71<br />
Di seguito è riportato un esempio di codice in linguaggio C per la creazione della finestra di Hamming e di<br />
Blackman.<br />
void SqWindow(double *w, long SqLength, char tyWindow)<br />
{<br />
register int i;<br />
double Arg, a,b,c;<br />
Arg= 6.28318530717959/(SqLength-1);<br />
switch (toupper(tyWindow))<br />
{<br />
case 'H' :<br />
a=0.54; b=0.46; c=0;<br />
break ;/* Hamming */<br />
case 'B' :<br />
a=0.42; b=0.5; c=0.08;<br />
break ;/* Blackman */<br />
default :<br />
a=1; b=0; c=0;<br />
break;<br />
}<br />
for(i=0;i
72 Capitolo 2<br />
pari alla convoluzione tra le DTFT del filtro ideale e della funzione finestra. A titolo di esempio, in Figura<br />
1.18 sono riportate le curve caratteristiche di un filtro passabasso realizzato con l’espressione (2.72) con<br />
finestra di Hamming per N=51.<br />
Figura 1.17 Risposta in ampiezza, valutata in decibel e normalizzata a 0dB, di alcune finestre di lunghezza N<br />
= 99. Le finestre sono: a) rettangolare; b) triangolare o di Bartlett; c) Hamming; d) Blackman.<br />
Tabella 1.1 Caratteristiche Δω vs. lunghezza N di alcune funzioni finestra [3].<br />
Tipo di<br />
finestra<br />
0<br />
−20<br />
−40<br />
−60<br />
−80<br />
−100<br />
0<br />
−20<br />
−40<br />
−60<br />
−80<br />
−100<br />
j<br />
Magnitude 20log10 He ( )<br />
ω<br />
Larghezza<br />
lobo Δω<br />
−13<br />
dB<br />
a) b)<br />
0.0 0.1 0.2 0.3 0.4 0.5<br />
Normalized Frequency<br />
j<br />
Magnitude 20log10 He ( )<br />
ω<br />
−41<br />
dB<br />
c) d)<br />
0.0 0.1 0.2 0.3 0.4 0.5<br />
Normalized Frequency<br />
Picco del lobo<br />
secondario<br />
[dB]<br />
Attenuazione<br />
minima [dB]<br />
Banda di<br />
transizione Δω<br />
Rettangolare 4π N – 13.3 – 20.9 1.84 π ( N − 1)<br />
Bartlett 8π N<br />
–26.5 –26.5 2.37! (N !1)<br />
Hanning 8π N – 31.5 – 43.9 5.01! (N !1)<br />
Hamming 8π N – 42.7 – 54.5 6.64 π ( N − 1)<br />
Blackman 12π N – 58.1 – 75.3 11.13 π ( N − 1)<br />
In termini del tutto generici, la forma della finestra determina:<br />
• l’andamento del ripple intorno alla banda di transizione;<br />
• l’attenuazione e la forma dello spettro in banda oscura.<br />
In generale, detta Δω la larghezza della banda di transizione del filtro, questa sarà tanto più larga quanto più<br />
elevata risulta l’attenuazione della banda oscura.<br />
0<br />
−20<br />
−40<br />
−60<br />
−80<br />
−100<br />
0<br />
−20<br />
−40<br />
−60<br />
−80<br />
−100<br />
j<br />
Magnitude 20log10 He ( )<br />
ω<br />
−25dB<br />
0.0 0.1 0.2 0.3 0.4 0.5<br />
Normalized Frequency<br />
j<br />
Magnitude 20log10 He ( )<br />
ω<br />
−57dB<br />
0.0 0.1 0.2 0.3 0.4 0.5<br />
Normalized Frequency
Amplitude<br />
Magnitude (dB)<br />
Continuous Phase (radians)<br />
0.5<br />
0.4<br />
0.3<br />
0.2<br />
0.1<br />
0<br />
-0.1<br />
Impulse Response<br />
-0.2<br />
0 5 10 15 20 25<br />
Time (secs)<br />
30 35 40 45 50<br />
0<br />
-20<br />
-40<br />
-60<br />
Magnitude Response in dB<br />
-80<br />
0 0.1 0.2 0.3 0.4<br />
Frequency (Hz)<br />
Continuous Phase Response<br />
0<br />
-20<br />
-40<br />
-60<br />
-80<br />
0 0.1 0.2 0.3 0.4<br />
Frequency (Hz)<br />
Magnitude<br />
Imaginary Part<br />
Sintesi di circuiti a tempo-discreto 73<br />
0<br />
0 0.1 0.2 0.3 0.4<br />
Frequency (Hz)<br />
Figura 1.18 Curve caratteristiche di un filtro FIR passabasso con finestra di Hamming, detta anche a coseno<br />
rialzato, per N=51, fc=0.25.<br />
La Figura 1.19 mostra un confronto delle risposte in frequenza di un filtro passabasso progettato con<br />
alcune tipi di finestre.<br />
Si noti che tutte le finestre definite sono simmetriche rispetto al punto centrale. Nell’ipotesi che la risposta<br />
desiderata sia anch’essa simmetrica, anche la risposta impulsiva “finestrata” sarà simmetrica e sarà quindi<br />
caratterizzata da una fase lineare generalizzata. Naturalmente la stessa condizione si può ottenere nell’ipotesi<br />
di antisimmetria della finestra e antisimmetria della risposta impulsiva desiderata.<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
1<br />
0.5<br />
0<br />
-0.5<br />
-1<br />
Magnitude Response<br />
Pole/Zero Plot<br />
50<br />
-1 -0.5 0 0.5 1 1.5<br />
Real Part
74 Capitolo 2<br />
Figura 1.19 Filtro FIR passabasso N = 51, f1 = 0.1 e f2 = 0.2<br />
2.3.4.1 Finestre parametriche<br />
La scelta di forma e durata della finestra determina le proprietà del filtro FIR risultante nelle tecniche di<br />
progetto considerate. In molti casi tuttavia la scelta di finestre differenti e la procedura di ottimizzazione per<br />
approssimazioni successive non risulta molto efficiente. Al fine di avere una maggiore flessibilità di progetto,<br />
per alcuni tipi di finestra è definita una certa modalità di controllo parametrico. In altri termini, la funzione<br />
finestra è regolata da uno o più parametri che consentono di fissare a priori la larghezza della banda di<br />
transizione e l’attenuazione della banda oscura. In questo caso la lunghezza della finestra necessaria per il<br />
raggiungimento delle specifiche risulta essere determinata indirettamente.<br />
Finestra di Kaiser<br />
Tre le più usate nelle applicazioni di filtraggio e di analisi spettrale, la finestra di Kaiser, regolata dal<br />
parametro β, è definita per N dispari ( N = 2M + 1)<br />
come<br />
( )<br />
I 0 !<br />
I ! n(2M ! n) M<br />
0<br />
w[n] =<br />
( )<br />
n = 0, 1 , … , N – 1<br />
dove I0(x) è la funzione di Bessel modificata di ordine zero del primo tipo definita come<br />
I 0 (x) = 1+<br />
'<br />
(<br />
k=1<br />
j<br />
Magnitude 20log10 He ( )<br />
ω<br />
0<br />
−20<br />
−40<br />
−60<br />
−80<br />
−100<br />
0.0 0.1 0.2 0.3 0.4 0.5<br />
( x 2)<br />
k<br />
2<br />
! $<br />
# & .<br />
# k! &<br />
" %<br />
Rettangolare Bartlett<br />
Hamming<br />
Normalized Frequency<br />
Blackman<br />
A differenza delle altre finestre, la finestra di Kaiser ha due parametri: la lunghezza N e il parametro di forma<br />
β. Scegliendoli opportunamente è possibile determinare l'ampiezza dei lobi laterali e la larghezza del lobo<br />
principale conseguenti.
Sintesi di circuiti a tempo-discreto 75<br />
Figura 1.20 Andamento della finestra di Kaiser in funzione del parametro di controllo beta.<br />
Indicando con A il minimo valore, calcolato in decibel, del ripple desiderato tra la banda oscura e la banda<br />
passante<br />
"<br />
#<br />
A = !20log 10 min(! p ,! s )<br />
$<br />
%<br />
(2.74)<br />
la finestra di Kaiser consente di ottenere un trade-off tra le varie specifiche del filtro regolate dal valore di β<br />
che può essere determinato con le seguenti formule<br />
0.1102(A ! 8.7) if A > 50<br />
! = 0.5842(A ! 21) 0.4 #<br />
%<br />
$<br />
+ 0.07886(A ! 21) if 21" A " 50<br />
%<br />
0 if A < 21<br />
&%<br />
(2.75)<br />
La lunghezza del filtro è determinata in funzione della larghezza della banda di transizione desiderata<br />
come Δ f<br />
N = D ! f s<br />
"f<br />
wn [ ]<br />
1<br />
Kaiser window<br />
β = 5<br />
β = 2<br />
N −1<br />
0 N −1<br />
n<br />
2<br />
n = 0, 1 , … , N – 1 (2.76)<br />
dove fs rappresenta la frequenza di campionamento e il parametro D è calcolato come<br />
# % (A ! 7.95) 14.36 if A > 21<br />
D = $<br />
&% 0.922 if A " 21<br />
(2.77)<br />
Esempio<br />
Progetto di un filtro di crossover a tre vie con frequenze d’incrocio f1 = 2kHz e f2 = 5kHz con Δf1 = 1kHz e<br />
Δf2 = 2.5kHz. La frequenza di campionamento è fs = 44.1 kHz e l’attenuazione richiesta nelle stopband è pari<br />
a 80 dB.<br />
Soluzione<br />
Indicando hLP[n], hMP[n] e hHP[n], rispettivamente le riposte impulsive del filtro passabasso, passabanda e<br />
passaalto, procediamo con la tecnica della finestratura e imponiamo la condizione che la risposta complessiva<br />
dei tre filtri sia un impulso ritardato. Vale quindi la relazione<br />
h LP [n] + h MP [n] + h HP [n] = ![n ! M ]<br />
β = 10<br />
in cui l’indice M indica il ritardo di gruppo dei tre filtri supposti di identica lunghezza.
76 Capitolo 2<br />
Il calcolo dei parametri della finestra di Kaiser è effettuato per mezzo delle espressioni (2.74)-(2.77). Per la<br />
(2.74) vale A =− 80 . Il parametro β, per la (2.75) vale β =7.63. Per la (2.76) e la (2.77) il filtro ha una<br />
lunghezza N = 223. In figura 1.22 sono riportate le risposte in ampiezza dei filtri.<br />
xn [ ]<br />
digital audio input<br />
M<br />
z −<br />
Figura 1.21 Schema del filtro di crossover a tre vie.<br />
Tutti i parametri della finestra di Kaiser, le risposte impulsive e gli andamenti della risposta in frequenza sono<br />
valutati con la seguente procedura Matlab.<br />
% Design of three way audio crossover filter<br />
% Kaiser window methdo<br />
Fs = 44100; % Sampling frequency<br />
F1 = 2000 ; % Crossover f1<br />
DF1 = 1000; % Transition band 1<br />
F2 = 5000 ; % Crossover f2<br />
DF2 = 2500; % Transition band 2<br />
Rs = 80; % Ripple in dB<br />
% Lowpass section<br />
DEV = [ 10^(-Rs/20), 10^(-Rs/20) ];<br />
[n,Wn,bta,filtype] = kaiserord( [F1-DF1/2 F1+DF1/2], [1 0],DEV, Fs);<br />
n = 2*floor(n/2); % force even order (odd length)<br />
N = n + 1;<br />
hlp = fir1(n, Wn, filtype, kaiser(N,bta), 'noscale');<br />
% Bandpass section<br />
DEV = [ 10^(-Rs/20), 10^(-Rs/20) , 10^(-Rs/20) ];<br />
F = [F1-DF1/2 F1+DF1/2 F2-DF2/2 F2+DF2/2 ];<br />
[n1,Wn,bta1,filtype] = kaiserord( F, [0 1 0],DEV, Fs)<br />
hbp = fir1(n, Wn, 'bandpass', kaiser(N,bta), 'noscale');<br />
%High pass by complementary response of bandpass & lowpass filters<br />
M = n/2 + 1 % Group delay<br />
hhp = - (hlp + hbp);<br />
cntr = 1.0 - (hlp(M) + hbp(M));<br />
hhp( M ) = cntr;<br />
[HHP,w] = freqz(hhp,1,1024,Fs);<br />
% DTFT computation<br />
[HLP,w] = freqz(hlp,1,1024,Fs);<br />
[HBP,w] = freqz(hbp,1,1024,Fs);<br />
[HHP,w] = freqz(hhp,1,1024,Fs);<br />
+<br />
−<br />
DAC Ampli<br />
HBP() z DAC Ampli<br />
HLP() z<br />
−<br />
DAC<br />
Ampli<br />
% Plot Frequency Response<br />
ylim([-110 10]);<br />
box('on');<br />
hold('all');<br />
plot(w,20*log10(abs(HBP)), w,20*log10(abs(HLP)), w,20*log10(abs(HHP)));<br />
box('on');<br />
hold('all');<br />
xlabel('Frequency Hz');<br />
ylabel('Magnitute [dB] 20log|{\it{H}}({\ite^{j\omega}})|');<br />
% Copyright (2011) A. Uncini - University of Rome "La <strong>Sapienza</strong>"- Italy<br />
Twetter<br />
Tweeter<br />
Mid − Range<br />
Woofer
Magnitute [dB] 20log|H(e jω )|<br />
0<br />
-20<br />
-40<br />
-60<br />
-80<br />
-100<br />
Sintesi di circuiti a tempo-discreto 77<br />
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2<br />
x 10 4<br />
-120<br />
Frequency Hz<br />
Figura 1.22 Risposte in frequenza del filtro di crossover a tre vie progettato con il metodo della finestratura di<br />
Kaiser.
78 Capitolo 2<br />
2.4 Progetto di filtri IIR<br />
2.4.1 Progetto di filtri analogici<br />
Data una funzione di trasferimento (FdT) analogica H(s) del tipo<br />
H(s) = b 0 + b 1 s +!+ b q sq<br />
a 0 + a 1 s +!+ a p s p<br />
per progetto del filtro si intende la determinazione dei coefficienti ak e bk tali che siano soddisfatte le<br />
specifiche di progetto del filtro stesso.<br />
Tipicamente le specifiche del filtro vengono fornite con una maschera passabasso di tipo già visto nel caso<br />
TD. In questo caso la FdT analogica è a solo poli<br />
1<br />
H(s) =<br />
a + a s +!+ a s 0 1 p p<br />
per cui la risposta in frequenza è determinata dalla posizione dei poli nel piano s.<br />
2.4.1.1 Specifiche di un filtro analogico<br />
Le specifiche di progetto per un filtro analogico sono, in genere, fornite con due tipi di convenzioni diverse.<br />
Come illustrato in Figura 1.23, è possibile usare i parametri relativi al ripple, simili a quelli definiti nel caso di<br />
filtri numerici, indicati come δp, δs , oppure attraverso i parametri ε e A.<br />
Figura 1.23 Possibili modalità di fornire le specifiche per un filtro analogico.<br />
In figura, Ωc indica la frequenza di taglio a –3 dB (in genere si pone Ωc = 1 per una normalizzazione in<br />
frequenza), Ωp indica la massima frequenza passabanda o passband-edge, Ωs indica la frequenza di stop e il<br />
termine<br />
1<br />
1− δ p<br />
δ s<br />
H( jΩ)<br />
Passband<br />
c Ωs<br />
2<br />
1 1+ ε indica lo scostamento dalla risposta ideale.<br />
2.4.1.2 Filtri max-flat e equiripple del I e del II ordine<br />
Ω p<br />
Ω<br />
Stopband<br />
Ω<br />
Un filtro passabasso max-flat (massimamente piatto) con frequenza di taglio a –3 dB pari a Ωc, è<br />
caratterizzato da una distribuzione dei poli simmetrica nel semipiano negativo s intorno ad un cerchio di<br />
raggio Ωc , come illustrato in Figura 1.24-a). In figura 1.24-b) è riportata invece la distribuzione dei poli in un<br />
filtro ellittico o equiripple.<br />
Nel caso del primo ordine, in cui la FdT è caratterizzata da un solo polo, si ha<br />
1<br />
2<br />
1 1+ ε<br />
1 A<br />
H( jΩ)<br />
Passband<br />
Ω<br />
p<br />
Ω<br />
c Ωs<br />
Stopband<br />
Ω
1<br />
Hs () =<br />
1+<br />
τ s<br />
per cui in questo caso max-flat e equiripple coincidono.<br />
Sintesi di circuiti a tempo-discreto 79<br />
Figura 1.24 Posizione dei poli sul piano complesso per un tipico filtro passabasso analogico. a) filtro maxflat;<br />
b) filtro ellittico o equiripple<br />
Consideriamo ora una FdT del II ordine con poli s1 e s2<br />
1<br />
H(s) =<br />
1! 1<br />
1<br />
=<br />
" % " 1 %<br />
$ s<br />
# s ' $ 1! s<br />
1 & # s '<br />
1+<br />
2 &<br />
s s2<br />
+ 2<br />
( Q ( c c<br />
(2.78)<br />
caratterizzata da una risposta in frequenza 2 del tipo illustrato in Figura 1.25. Q è il cosiddetto fattore di bontà<br />
del filtro.<br />
Ponendo nella precedente, per semplicità, Ω c = 1,<br />
ovvero considerando una FdT normalizzata in frequenza, è<br />
possibile dimostrare che la condizione max-flat si ha quando i poli della FdT sono a ± π 4 nel semipiano<br />
negativo, ovvero quando i poli sono<br />
1 1 1 1<br />
s1 = − + j , s2 = − − j .<br />
2 2 2 2<br />
La FdT risulta pari a<br />
" 1 1 % " 1 1 %<br />
! j<br />
#<br />
$<br />
2 2 &<br />
' + j<br />
#<br />
$<br />
2 2 &<br />
'<br />
H(s) =<br />
s + 1<br />
1<br />
=<br />
" 1 % " 1 1 % s<br />
! j<br />
#<br />
$<br />
2 2 &<br />
' s + + j<br />
#<br />
$<br />
2 2 &<br />
'<br />
2 + 2s +1 .<br />
Dalla precedente e dalla (2.78) risulta che la condizione max-flat si ha quando il fattore di bontà Q risulta<br />
1<br />
Q = .<br />
2<br />
2 Si ricorda al lettore che per indicare la frequenza analogica si usa il simbolo Ω, mentre per la frequenza numerica si usa<br />
il simbolo ω.<br />
piano s<br />
jΩ<br />
s= σ + jΩ<br />
a) b)<br />
σ<br />
jΩ<br />
σ
80 Capitolo 2<br />
Figura 1.25 Diagramma di Bode di un filtro passabasso del II ordine al variare del fattore di bontà Q.<br />
Il diagramma di Bode della FdT max-flat illustrato in Figura 1.25 dista, alla frequenza di taglio, –3dB rispetto<br />
alla maschera del filtro ideale. Si può inoltre osservare che per la risposta in ampiezza vale<br />
2 4<br />
H( jΩ ) = 1 (1 + ( Ω Ω c ) ) .<br />
Seguendo lo stesso ragionamento è possibile dimostrare che un filtro ellittico equiripple o min-max<br />
(minimo errore massimo) si ha quando Q = 1,<br />
ovvero quando la FdT risulta pari a<br />
Hs () =<br />
1<br />
+ + 1<br />
2<br />
s s<br />
Magnitude (dB)<br />
Phase (deg)<br />
-12<br />
-18<br />
-24<br />
0<br />
In questo caso la posizione dei poli risulta essere<br />
24<br />
18<br />
12<br />
-6<br />
s = ! 1 1 3<br />
+ j<br />
2 2 , s 1 3<br />
= ! ! j 1<br />
2 2<br />
6<br />
0<br />
−3dB<br />
-45<br />
-90<br />
-135<br />
-180<br />
10 -1<br />
Q = 0.707<br />
Q = 0.5<br />
Bode Diagram<br />
ovvero i poli sono disposti sul semipiano dei numeri complessi a parte reale negativa con angoli pari a ± π 6 .<br />
10 0<br />
Frequency (rad/sec)<br />
Q = 12<br />
Q = 8<br />
Q = 4<br />
Q = 1<br />
pendenza<br />
−12dB<br />
ott<br />
Ω<br />
Ω<br />
c<br />
10 1
Sintesi di circuiti a tempo-discreto 81<br />
Figura 1.26 Posizione dei poli sul piano s per filtri analogici del II ordine max-flat (in blu) e equiripple (in<br />
rosso).<br />
2.4.1.3 Filtro di Butterworth<br />
Nella trattazione che segue si fa riferimento per semplicità al filtro passabasso. La generalizzazione ad<br />
ogni tipo di filtro è immediata.<br />
I filtri di Butterworth sono filtri a soli poli. Il filtro di Butterworth di ordine N e frequenza di taglio a –3 dB<br />
pari a Ωc è caratterizzato da una risposta in frequenza del tipo<br />
H( j!) 2 1<br />
=<br />
1+ ! " %<br />
$ '<br />
# &<br />
! c<br />
2N<br />
. (2.79)<br />
Usando il parametro ε (che definisce la specifica sul ripple) e la frequenza stopband Ωp, la precedente<br />
relazione può essere riscritta come<br />
H( j!) 2 1<br />
=<br />
1+ ! 2<br />
2N<br />
" ! %<br />
$ '<br />
# &<br />
(2.80)<br />
dove il parametro ε vale<br />
! p<br />
! = ( ! ! p c ) N<br />
. (2.81)<br />
Dato che vale la proprietà H( j!) 2<br />
= H(s)H("s) dalla (2.79) si ricava<br />
s= j!<br />
H(s)H(!s) =<br />
#<br />
1+ %<br />
$<br />
1<br />
s<br />
j" c<br />
&<br />
(<br />
'<br />
2N<br />
1<br />
−<br />
2<br />
1<br />
−<br />
2<br />
. (2.82)<br />
I 2N poli di H(s)H(!s) giacciono su un cerchio di raggio Ωc e sono disposti in modo equispaziato a una<br />
distanza angolare pari a ! / N l'uno dall'altro. In particolare i poli della H(s) giacciono sul semipiano dei reali<br />
negativi mentre quelli della H(–s) su quello dei reali positivi. Infatti, dalla (2.82) abbiamo che i poli sono<br />
jω<br />
piano s<br />
σ
82 Capitolo 2<br />
s k = (!1) 1 (2N ) ( j" c ) = (!1) 1 (2N ) e j! 2 " c = " c e j(2k+1+N )! 2N k = 0, 1 , … , 2N – 1 (2.83)<br />
Figura 1.27 Andamento della risposta in ampiezza quadratica<br />
ordine.<br />
2<br />
H( jΩ ) per filtri di Butterworth di vario<br />
Come esempio, in Figura 1.28 è riportata la posizione dei poli per filtri di Butterworth per N = 3 e N = 4.<br />
Figura 1.28 Per i filtri di Butterworth i poli si ottengono dividendo il cerchio di raggio Ωc in 2N spicchi identici e<br />
distanti ! / N . a) poli per N=3; b) poli per N = 4.<br />
La FdT può essere espressa in termini di poli come<br />
H(s) =<br />
N<br />
)<br />
k=1<br />
1<br />
1! s " # &<br />
c<br />
% (<br />
$ '<br />
s k<br />
2<br />
H( jΩ)<br />
in cui il denominatore è un polinomio di Butterworth definito dalla formula<br />
1.0<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0.0<br />
1<br />
2<br />
1+ ε<br />
2π<br />
π<br />
φ k = + k 5π<br />
π<br />
jω<br />
φ jω<br />
3 p<br />
k = +<br />
k<br />
8 p<br />
Hs ()<br />
H( −s)<br />
a)<br />
2π<br />
φ 0 =<br />
3<br />
π<br />
3<br />
p = 3<br />
σ<br />
p = 5<br />
Ωc<br />
p = 3<br />
p = 4<br />
p = 2<br />
b)<br />
p = 1<br />
Hs ()<br />
H( −s)<br />
5π<br />
φ 0 =<br />
8<br />
π<br />
4<br />
p = 4<br />
(2.84)<br />
σ
s<br />
B (s) = N 2 " 2k + N !1%<br />
! 2scos<br />
#<br />
$ 2N &<br />
' +1<br />
N 2 (<br />
+<br />
. *<br />
-<br />
k=1 )<br />
,<br />
(s +1) s 2 " 2k + N !1%<br />
! 2scos<br />
#<br />
$ 2N &<br />
' +1<br />
/<br />
1<br />
1<br />
0<br />
( N !1) 2<br />
1<br />
(<br />
+<br />
1 . *<br />
-<br />
k=1<br />
2<br />
)<br />
,<br />
N pari<br />
N dispari<br />
Sintesi di circuiti a tempo-discreto 83<br />
(2.85)<br />
Calcolando la (2.85) per N = 1, 2, …, 8 si ottengono i seguenti polinomi di Butterworth normalizzati<br />
1 (s +1)<br />
2 (s 2 +1.4142s +1)<br />
3 (s +1)(s 2 + 2s +1)<br />
4 (s 2 + 0.7654s +1)(s 2 +1.8478s +1)<br />
5 (s +1)(s 2 + 0.6180s +1)(s 2 +1.6180s +1)<br />
6 (s 2 + 0.5176s +1)(s 2 +1.4142s +1)(s 2 +1.9319s +1)<br />
7 (s +1)(s 2 + 0.4450s +1)(s 2 +1.2470s +1)(s 2 +1.8019s +1)<br />
8 (s 2 + 0.3902s +1)(s 2 +1.1111s +1)(s 2 +1.6629s +1)(s 2 +1.9616s +1)<br />
Criteri di progetto<br />
2<br />
La H( jΩ ) è monotona decrescente sia nella banda passante che in quella oscura. Se consideriamo i<br />
diagrammi di Bode dei polinomi in precedenza indicati, sappiamo che la risposta in ampiezza<br />
20log dB H( jΩ ) decresce con un andamento (roll-off) pari a N ! 6 dB/ottava (o N ! 20 dB/decade). Per<br />
esempio, un filtro con N = 3 e fc = 1kHz, a f = 2kHz presenterà un’attenuazione di circa 18 dB e a f = 10 kHz<br />
di circa 60 dB.<br />
Nel caso si abbia una stopband Ωs con una specifica attenuazione richiesta δ2, per il calcolo dell’ordine si<br />
può usare la seguente la seguente relazione derivata dalla (2.79)<br />
"<br />
1<br />
2N<br />
%<br />
$ '<br />
# ! p &<br />
= ! 2<br />
2<br />
(2.86)<br />
! 2 ! s<br />
Risolvendo rispetto a N si trova<br />
N = log[(1 ! 2<br />
) !1] 2 log(! ")<br />
=<br />
2log(" " ) log(" " ) s c s p (2.87)<br />
dove per definizione ! 2 = 1 1+ ! 2 . Il filtro di Butterworth è quindi completamente caratterizzato dai<br />
parametri N, δ2, ε e dal rapporto (! s ! p ) .<br />
Esempio<br />
Determinare l’ordine e i poli di un filtro passabasso di Butterworth con frequenza di taglio a –3 dB fc = 1000<br />
Hz e un’attenuazione di 40 dB a fs = 2000 Hz.
84 Capitolo 2<br />
Figura 1.29 Diagramma di Bode del filtro di Butterworth (vedi testo) di ordine p = 7 con Ωc = 2000π e Ωs =<br />
4000π .<br />
Soluzione<br />
Essendo la specifica definita su un’ottava (fs = 2fc), approssimativamente possiamo dire che l’ordine del<br />
polinomio dovrà essere p > 40/6 (p = 7). Procedendo con la (2.87), le frequenze critiche sono Ωc = 2000π e Ωs<br />
40 20<br />
= 4000π. Per un’attenuazione di 40dB risulta 2 10 0.01<br />
δ<br />
−<br />
= = per cui dalla (2.87) otteniamo<br />
N = log[(1 10!4 ) !1]<br />
2log(2)<br />
= 6.64 (2.88)<br />
Quindi, per soddisfare le specifiche si conferma la scelta di un ordine N = 7. I poli della FdT sono<br />
s = 2000! !e k j! [1+(2k+1) 7]<br />
2<br />
2.4.1.4 Filtri di Chebyshev<br />
k = 0, 1, … , 6. (2.89)<br />
Vi sono due tipi di filtri di Chebyshev: i filtri di tipo 1 a soli poli, che hanno un comportamento equiripple<br />
nella regione passabanda e un roll-off monotono decrescente nella stopband, e i filtri di tipo 2 con poli e zeri,<br />
che hanno un andamento monotono nella passband e equiripple nella stopband. Gli zeri per questa classe di<br />
filtri giacciono sull’asse immaginario del piano s.<br />
Il filtro di Chebyshev di tipo 1 è caratterizzato da una risposta in ampiezza quadratica del tipo<br />
H( j!) 2<br />
=<br />
Magnitude (dB)<br />
Phase (deg)<br />
10<br />
0<br />
-10<br />
-20<br />
-30<br />
-40<br />
-50<br />
0<br />
-90<br />
-180<br />
-270<br />
-360<br />
-450<br />
-540<br />
10 2<br />
-630<br />
1<br />
( )<br />
1+ ! 2 2<br />
T ! ! N p<br />
TN(x) è il polinomio di Chebyshev di ordine N definito come<br />
10 3<br />
Bode Diagram<br />
Frequency (rad/sec)<br />
. (2.90)<br />
cos(N cos<br />
T (x) = N !1 x) x " 1<br />
cosh(N cosh !1 #<br />
%<br />
$<br />
. (2.91)<br />
x) x > 1<br />
&<br />
%<br />
mentre ε è un parametro relativo al ripple in banda passante. I polinomi di Chebyshev possono essere generati<br />
ricorsivamente utilizzando le relazioni<br />
ω<br />
c<br />
10 4<br />
ω<br />
s<br />
ω<br />
10 5
T 0 (x) = 1<br />
T 1 (x) = x<br />
!<br />
T N +1 (x) = 2xT N (x) ! T N !1 (x) N = 1,2, ...<br />
Per esempio T 2 (x) = 2x 2 !1, T 3 (x) = 4x 3 ! 3x , …. .<br />
Alcune proprietà di questi polinomi sono:<br />
1. T N (x) ! 1 " x ! 1<br />
2. T N (1) = 1 !N<br />
3. Le radici di T N (x) giacciono nell’intervallo !1" x " 1.<br />
Sintesi di circuiti a tempo-discreto 85<br />
(2.92)<br />
Il parametro ε è legato al ripple nella regione passabanda, come illustrato in figura. Per N dispari T N (0) = 0 e<br />
quindi H(0) 2<br />
= 1. Per N pari T (0) = 1 e H(0) N 2<br />
= 1 (1+ ! 2 ) . In corrispondenza del limite della banda<br />
passante ! = ! risulta T (1) = 1 e quindi<br />
p<br />
N<br />
ovvero<br />
1<br />
1+ ! 2 = 1! " 1<br />
! 2 1<br />
=<br />
( 1! " 1)<br />
2 !1<br />
essendo ! 1 il ripple nella banda passante.<br />
Figura 1.30 Risposta in ampiezza quadratica di un filtro di Chebyshev del I tipo.<br />
I poli giacciono su un'ellisse nel piano s avente come asse minore<br />
r 1 = ! p<br />
e asse maggiore<br />
! 2 "1<br />
2!
86 Capitolo 2<br />
r 2 = ! p<br />
in cui β è dato da<br />
!<br />
! = #<br />
"<br />
! 2 +1<br />
2!<br />
1+" 2 $<br />
+1<br />
&<br />
" &<br />
%<br />
1 N<br />
.<br />
La posizione dei poli per un filtro di Chebyshev di ordine N può essere determinata dalla posizione dei poli di<br />
un filtro equivalente di Butterworth di ordine N che appartengono a circonferenze di raggio r1 o r2. Indicando<br />
con φk le posizioni angolari dei poli del filtro di Butterworth<br />
! = k ! (2k +1)!<br />
+<br />
2 2N<br />
k = 0,1,2,..., N !1<br />
allora i poli del filtro di Chebyshev appartengono all'ellisse con coordinate (xk, yk) (si veda la Fig. 1.31) in cui<br />
x k = r 1 cos! k k = 0,1,2,..., N !1<br />
y k = r 2 sin! k k = 0,1,2,..., N !1<br />
Figura 1.31 Determinazione del luogo dei poli per un filtro di Chebyshev.<br />
Un filtro di Chebyshev di tipo II contiene sia zeri che poli. La risposta in ampiezza quadratica in questo<br />
caso vale<br />
H( j!) 2<br />
=<br />
1<br />
1+ ! 2 2 2<br />
[T (!s ! ) / T (!s !)]<br />
N<br />
p N<br />
in cui ! s è la frequenza della banda di stop (si veda figura).<br />
jω<br />
r1<br />
r2<br />
σ
Sintesi di circuiti a tempo-discreto 87<br />
Figura 1.32 Risposta in ampiezza quadratica di un filtro di Chebyshev del II tipo.<br />
Gli zeri del filtro appartengono all'asse immaginario e sono dati da<br />
s k = j ! s<br />
sin! k<br />
k = 0,1,..., N "1<br />
I poli sono posizionati nei punti (vk, wk), dati da<br />
v = k ! sxk 2 2<br />
x + yk<br />
k<br />
e wk = ! s yk 2 2<br />
x + yk<br />
k<br />
k = 0,1,..., N "1<br />
in cui i punti (xk, yk) sono definiti come nelle equazioni precedenti e β stavolta è legato al ripple nella<br />
banda di stop dalla relazione<br />
! = 1+ 1! " "<br />
2 %<br />
2<br />
$ '<br />
#<br />
$ " 2 &<br />
'<br />
1 N<br />
.<br />
Da questa descrizione si deduce che i filtri di Chebyshev sono caratterizzati dai parametri N, ε, δ2 e dal<br />
rapporto Ω s/Ωp. L'ordine del filtro può essere ricavato dalle specifiche su ε, δ2 e Ω s/Ωp dalla relazione<br />
N =<br />
2 2 2<br />
log ( 1! ! + 1! ! (1+ " )<br />
2<br />
2 ) !" "<br />
2<br />
#$<br />
"<br />
#$<br />
log (( s / ( p ) + (( s / ( p ) 2 !1<br />
in cui per definizione ! 2 =<br />
1<br />
.<br />
2<br />
1+ !<br />
%<br />
&'<br />
%<br />
&'<br />
= cosh!1 (! / ")<br />
cosh !1 (( s / ( p )<br />
Esempio<br />
Si determinino ordine e poli di un filtro passabasso di Chebyshev del primo tipo con un ripple in banda<br />
base di 1dB, una frequenza di cutoff ! p =1000! , una frequenza di stop di 2000π e una attenuazione di<br />
almeno 40dB per ! " ! s .<br />
Innanzitutto si può determinare l'ordine del filtro. Si ha<br />
Inoltre<br />
10log 10 (1+ ! 2 ) = 1! ! = 0.5088
88 Capitolo 2<br />
20log 10 ! 2 = !40 " ! 2 = 0.01<br />
Di conseguenza<br />
N = log10196.54 = 4.0<br />
log (2 + 3) 10<br />
e un filtro con quattro poli verifica dunque le specifiche. Per determinare la posizione dei poli si possono<br />
calcolare innanzitutto i parametri β, r1 e r2 . Risulta<br />
! = 1.429, r 1 = 1.06! p , r 2 = 0.365! p<br />
Gli angoli φk risultano<br />
! = k ! (2k +1)!<br />
+<br />
2 8<br />
mentre i poli sono<br />
k = 0,1,2,3<br />
x 1 + jy 1 = !0.1397" p ± j0.979" p<br />
x 2 + jy 2 = !0.337" p ± j0.4056" p<br />
Si noti che in generale un filtro di Chebyshev soddisfa le specifiche con un numero di poli inferiore a quello<br />
richiesto da un filtro di Butterworth corrispondente. In alternativa, si può dire che confrontando un filtro di<br />
Butterworth e uno di Chebyshev con lo stesso numero di poli e le stesse specifiche in termini di banda<br />
passante e banda di stop, il filtro di Chebyshev avrà una banda di transizione più piccola.<br />
2.4.1.5 Filtri ellittici<br />
I filtri ellittici (o di Cauer) hanno un comportamento equiripple sia nella banda passante che in quella<br />
oscura (si veda la figura per i casi di lunghezza pari e dispari).<br />
Figura 1.33 Risposta in ampiezza quadratica di un filtro ellittico.<br />
Questi filtri hanno sia zeri che poli e hanno la risposta in ampiezza quadratica<br />
H( j!) 2<br />
=<br />
1<br />
1+ ! 2 U N (! / ! p )<br />
in cui UN(x) è la funzione Jacobiana ellittica di ordine N e ε è un parametro relativo al ripple in banda<br />
passante. Gli zeri appartengono all'asse immaginario.
Sintesi di circuiti a tempo-discreto 89<br />
Si ricorda che il progetto più efficiente si ha quando l'errore di approssimazione è distribuito sia in banda<br />
passante che in banda oscura. I filtri ellittici raggiungono questo obiettivo e di conseguenza sono i più<br />
efficienti, nel senso che forniscono il filtro di ordine minimo per un dato insieme di specifiche. In modo<br />
equivalente si può dire che a parità di ordine e di specifiche, un filtro ellittico ha la banda di transizione più<br />
piccola possibile.<br />
L'ordine del filtro necessario per raggiungere un dato insieme di specifiche in termini di ripple in banda<br />
passante δ1, ripple in banda oscura δ2 e rapporto di transizione Ωp/Ωs è dato da<br />
( )<br />
( )<br />
K(! / ! )K p s<br />
N =<br />
1" (! 2 / ! 2 )<br />
K(! / ! )K 1" (! / ! ) p s 2<br />
in cui K(x) è l'integrale ellittico completo del primo tipo, definito da<br />
K(x) =<br />
" 2<br />
"<br />
0<br />
d!<br />
1! x 2 sin 2 !<br />
e ! 2 = 1 1+ ! 2 . I valori di questo integrale sono stati tabulati in diversi testi. Il ripple nella banda<br />
passante è 10log 10 (1+ ! 2 ) .<br />
Naturalmente sono disponibili numerosi programmi per il progetto di filtri ellittici a partire dalle specifiche<br />
in frequenza fornite. Si noti che tali filtri, pur essendo ottimi dal punto di vista della complessità, non risultano<br />
soddisfacenti dal punto di vista ad esempio della risposta in fase, che risulta più non lineare nella banda<br />
passante rispetto a quello che accade in un filtro di Butterworh o in un filtro di Chebyshev, specialmente in<br />
prossimità del limite della banda.<br />
2.4.1.6 Filtri di Bessel<br />
I filtri di Bessel sono una classe di filtri a soli poli con la seguente funzione di rete<br />
H(s) =<br />
1<br />
B N (s)<br />
in cui BN(s) è il polinomio di Bessel di ordine N. Questi polinomi possono essere espressi nella forma<br />
N<br />
!<br />
B N (s) = a k s k<br />
k=0<br />
in cui i coefficienti ak hanno la seguente espressione<br />
a k =<br />
(2N ! k)!<br />
2 N !k k!(N ! k)!<br />
k = 0,1,..., N<br />
In alternativa i polinomi di Bessel possono essere generati in maniera ricorsiva dalla relazione<br />
B N (s) = (2N !1)B N !1 (s) + s 2 B N !2 (s)<br />
in cui B0(s) = 1 e B1(s) = s+1.<br />
Una caratteristica importante dei filtri di Bessel è la risposta in fase lineare nella banda passante. In figura<br />
è riportato il confronto tra la risposta in ampiezza e la risposta in fase di un filtro di Bessel e un filtro di<br />
Butterworth di ordine N=4. Si noti che il filtro di Bessel ha una regione di transizione più ampia, ma la sua<br />
risposta in fase è lineare nella banda passante. Naturalmente bisogna tenere conto della trasformazione del<br />
filtro nel dominio discreto e di come tale trasformazione modifichi la risposta in fase.
90 Capitolo 2<br />
Figura 1.34 Risposta in ampiezza e risposta in fase dei filtri di Butterworth e Bessel di ordine N=4.<br />
2.4.2 Progetto di filtri IIR a partire da filtri analogici<br />
Il progetto di un filtro numerico IIR caratterizzato da un FdT del tipo<br />
H(z) = b0 + b1z!1 +…+ bM z !M<br />
a0 + a1z !1 (2.93)<br />
!N<br />
+…+ aNz eseguito direttamente nel dominio numerico, può risultare difficile. Nel caso si voglia procedere<br />
minimizzando una certa funzione costo definita dalla distanza tra la maschera e la risposta del filtro, secondo<br />
una certa metrica, la presenza del numeratore e del denominatore porta generalmente ad un sistema di<br />
equazioni non lineari. Molto spesso, quindi, per aggirare tale difficoltà si preferisce progettare un filtro<br />
analogico e successivamente trasformare la FdT H(s) analogica in una corrispondente H(z) che la realizza il<br />
filtro nel dominio numerico.
Sintesi di circuiti a tempo-discreto 91<br />
Il passaggio dal dominio s al dominio z, in pratica, coincide con il problema della simulazione di un<br />
sistema fisico a TC lineare con un suo modello nel TD. Come vedremo è proprio la linearità che ci consente di<br />
definire delle modalità alternative per effettuare il passaggio.<br />
Nel caso in cui il sistema fisico analogico fosse determinato da un’equazione differenziale lineare a<br />
coefficienti costanti del tipo<br />
( M) ( N)<br />
dy( t) d y( t) dx( t) d y( t)<br />
0 ( ) + 1 + + M = ( ) 0 ( ) + M 1 + + N ( N)<br />
d y t d L d c x t c L c<br />
(2.94)<br />
dt dt dt dt<br />
In termini generali potremo procedere discretizzando direttamente la precedente equazione con un periodo di<br />
a , b dell’equazione alle differenze in funzione dei<br />
campionamento T cercando di esprimere i coefficienti { k k}<br />
corrispondenti coefficienti dell’equazione differenziale { , }<br />
d c e del tempo di campionamento T.<br />
Nel caso in cui avessimo calcolato la risposta impulsiva per h(t) del sistema fisico (2.94) è la risposta<br />
impulsiva stessa che potrebbe essere campionata e usata per modellare il sistema fisico.<br />
Un’altra modalità di simulazione potrebbe essere basata sulla conoscenza delle soluzioni della (2.94). In<br />
questo caso piuttosto che discretizzare direttamente l’equazione differenziale, potremo discretizzarne una sua<br />
soluzione integrale.<br />
In generale, quindi, è possibile ottenere un circuito TD mediante una trasformazione opportuna di un<br />
circuito TC, a partire da una sua particolare rappresentazione. Questa trasformazione deve mantenere le<br />
proprietà principali del filtro analogico di partenza.<br />
1. l’asse immaginario del piano s deve trasformarsi nella circonferenza unitaria del piano z;<br />
2. un filtro analogico stabile deve fornire un circuito numerico stabile.<br />
Nel seguito del paragrafo considereremo solo le seguenti tre tecniche:<br />
• invarianza della risposta impulsiva<br />
• soluzione numerica dell’equazione differenziale<br />
• trasformazione bilineare.<br />
La Tabella 1.2 stabilisce una corrispondenza tra le rappresentazioni matematiche di circuiti analogici (TC)<br />
e circuiti numerici (TD)<br />
k k<br />
Tabella 1.2 Rappresentazioni e corrispondenze per circuiti TC e TD.<br />
Funzione di<br />
rete<br />
Integrale o<br />
somma di<br />
convoluzione<br />
Equazione<br />
differenziale o<br />
alle differenze<br />
( )<br />
H z<br />
M<br />
∑<br />
k = 0<br />
TC TD<br />
−k<br />
bz k<br />
k = 0 Y() z<br />
= =<br />
N<br />
−k<br />
X() z<br />
az<br />
+∞<br />
∑<br />
k<br />
H s<br />
M<br />
∑<br />
k<br />
ds k<br />
k Ya() s<br />
= =<br />
k Xa() s<br />
cs<br />
= 0 ( )<br />
a N<br />
∑<br />
k<br />
k = 0<br />
( ) = ∫ ( τ ) ( −τ<br />
) τ y[ n] = x[ k] h[ n − k]<br />
y t x h t d<br />
a a a<br />
−∞<br />
N<br />
∑ k<br />
( k) a<br />
M<br />
= ∑ k<br />
( k)<br />
a<br />
k= 0 k=<br />
0<br />
c y ( t) d x ( t)<br />
2.4.2.1 Invarianza della risposta impulsiva<br />
+∞<br />
∑<br />
k =−∞<br />
N M<br />
∑ ∑<br />
a y[ n − k] = b x[ n − k]<br />
k k<br />
k= 0 k=<br />
0<br />
Si impone che la risposta impulsiva del circuito TD coincida con quella del circuito analogico ha() t<br />
campionata indicata come<br />
h[ n] = h ( nT)<br />
. (2.95)<br />
Per cui in frequenza vale<br />
a
92 Capitolo 2<br />
jω jΩT H ( z) = H( e ) = H ( e )<br />
jω<br />
z= e<br />
+∞ 1<br />
= ∑ H jΩ − kjΩ<br />
T<br />
k =−∞<br />
( )<br />
a s<br />
+∞ 1 ⎛ 2π⎞<br />
= ∑ Ha ⎜ jΩ − kj ⎟<br />
T k =−∞ ⎝ T ⎠<br />
che può essere generalizzata come<br />
(2.96)<br />
+∞ 1 ⎛ 2π⎞<br />
H () z sT = H z e<br />
a s kj<br />
= ∑ ⎜ − ⎟.<br />
(2.97)<br />
T k =−∞ ⎝ T ⎠<br />
In base alla relazione z = e sT , si ha che strisce di larghezza 2π/T del piano s si mappano nell’intero piano z,<br />
sovrapponendosi.<br />
In particolare:<br />
• la parte a sinistra dell’asse immaginario si mappa nella parte interna alla circonferenza unitaria;<br />
• la parte a destra dell’asse immaginario si mappa nella parte esterna alla circonferenza unitaria;<br />
• ogni segmento di lunghezza 2π/T sull’asse immaginario si mappa nell’intera circonferenza unitaria<br />
(aliasing).<br />
Figura 1.35 Mappatura del piano s sul piano z per il metodo basato sulla invarianza della risposta impulsiva.<br />
In base al teorema del campionamento la tecnica dell’invarianza all’impulso può essere usata se e solo se<br />
allora<br />
π<br />
Ha( jΩ<br />
) = 0 per Ω > (2.98)<br />
T<br />
+∞<br />
jω<br />
1 ⎛ ω ⎞<br />
H ( e ) = ∑ Ha ⎜ j ⎟ per ω ≤ π<br />
(2.99)<br />
T k =−∞ ⎝ T ⎠<br />
Poiché in generale il filtro analogico non mai è strettamente limitato in banda, come illustrato in Figura 1.36,<br />
la tecnica dell’invarianza della risposta impulsiva dà luogo ad aliasing.<br />
Per quanto riguarda la corrispondenza tra le funzioni di rete si ha nell’ipotesi di poli semplici del tipo<br />
a<br />
( )<br />
H s<br />
=<br />
A<br />
con risposta impulsiva<br />
jΩ<br />
3π T<br />
π T<br />
−π<br />
T<br />
σ<br />
−3π<br />
T<br />
Im{ z}<br />
N<br />
k<br />
∑ (2.100)<br />
k = 1 s−sk 1<br />
ω<br />
Re{ z}
N<br />
st k ( ) −1<br />
h t = ∑ A e u () t . (2.101)<br />
a k<br />
k = 1<br />
La corrispondente FdT nel dominio z risula<br />
N A<br />
k e z − ∑ (2.102)<br />
−<br />
k<br />
( ) =<br />
sT 1<br />
H z<br />
k = 1 1<br />
con risposta all’impulso<br />
N<br />
sk nT<br />
h[ n] = ∑ A e u[ n]<br />
(2.103)<br />
k = 1<br />
k<br />
Figura 1.36 Effetto dell’aliasing nella tecnica di progetto dell’invarianza all’impulso.<br />
Quindi se il filtro analogico è stabile, lo è anche quello numerico:<br />
{ }<br />
sT k<br />
Re s < 0 ⇒ z = e < 1<br />
(2.104)<br />
k k<br />
Infine, nel caso di T piccolo (frequenze di campionamento elevate), la relazione:<br />
jω<br />
1 ⎛ ω ⎞<br />
H ( e ) ≈ Ha ⎜ j ⎟ per ω ≤π<br />
T ⎝ T ⎠<br />
Sintesi di circuiti a tempo-discreto 93<br />
(2.105)<br />
potrebbe richiedere dei guadagni troppo elevati. Per questo motivo in generale si preferisce usare la relazione<br />
h[ n] = T ⋅ h ( nT)<br />
(2.106)<br />
a<br />
In conclusione, la tecnica dell’invarianza della risposta impulsiva è adatta solo nei casi di filtri analogici<br />
limitati in banda (no passa-alto o elimina-banda), e in tal caso sostanzialmente si conserva la forma della<br />
risposta in frequenza del filtro analogico.<br />
2.4.2.2 Soluzione numerica dell’equazione differenziale<br />
In questa tecnica, l’equazione differenziale del tipo<br />
N<br />
k<br />
( k) a<br />
M<br />
= k<br />
( k)<br />
a<br />
k= 0 k=<br />
0<br />
Ha( jΩ)<br />
j<br />
He ( )<br />
ω<br />
π 2π<br />
T T<br />
∑cy( t) ∑ d x ( t)<br />
(2.107)<br />
che consente di analizzare un circuito analogico, viene risolta ricorrendo alle differenze finite<br />
π<br />
2π<br />
Ω<br />
ω
94 Capitolo 2<br />
N<br />
( k) k∇ M<br />
=<br />
( k)<br />
k∇<br />
k= 0 k=<br />
0<br />
∑cy[ n] ∑ d x[ n]<br />
(2.108)<br />
( k )<br />
dove il simbolo ∇ rappresenta la differenza finita (all’indietro) di ordine k, che approssima la derivata di<br />
ordine k mediante il rapporto incrementale<br />
(0)<br />
∇ =<br />
y[ n] y[ n]<br />
(1)<br />
∇ yn [ ] =<br />
y[ n] − y[ n −1]<br />
T<br />
{ }<br />
(2) (1) (1)<br />
∇ y[ n] = ∇ ∇ y[ n]<br />
......<br />
L’operatore<br />
( k )<br />
∇ è LTI e passando al dominio di z<br />
−1<br />
(1) ⎧y[ n] − y[ n −1] ⎫ 1−<br />
z<br />
Ζ{ ∇ y[ n] } = Ζ ⎨ ⎬=<br />
⋅Y<br />
( z)<br />
⎩ T ⎭ T<br />
−1<br />
k<br />
⎛ ⎞<br />
( k)<br />
1−<br />
z<br />
Ζ{ ∇ y[ n] } = ⎜ ⎟ ⋅Y<br />
( z)<br />
⎝ T ⎠<br />
e quindi dalla (2.108) si ottiene<br />
1<br />
k<br />
1<br />
k<br />
N − M<br />
−<br />
⎛1−z ⎞ ⎛1−z ⎞<br />
c ⎜ ⎟ ⋅ Y( z) = d ⎜ ⎟ ⋅ X ( z)<br />
⎝ T ⎠ ⎝ T ⎠<br />
k k<br />
k= 0 k=<br />
0<br />
(2.109)<br />
(2.110)<br />
(2.111)<br />
∑ ∑ (2.112)<br />
M<br />
k<br />
∑ds<br />
k<br />
k= 0<br />
a<br />
a ( ) = =<br />
N<br />
k a ∑cs<br />
k<br />
k = 0<br />
H s<br />
Y () s<br />
X () s<br />
−1<br />
k<br />
⎛1−z⎞ k<br />
d ⎜ ⎟<br />
Y( z)<br />
k = 0 T<br />
H( z)<br />
= =<br />
⎝ ⎠<br />
X( z) 1 z<br />
M<br />
∑<br />
1<br />
k<br />
N<br />
−<br />
⎛ − ⎞<br />
∑ck<br />
⎜ ⎟<br />
k = 0 T<br />
⎝ ⎠<br />
cioè la funzione di rete TD si ottiene con la trasformazione<br />
(2.113)<br />
(2.114)<br />
−1<br />
1− z<br />
s = . (2.115)<br />
T<br />
Invertendo questa relazione si trova:<br />
1 1 1 ⎡ 1+ jΩT⎤ 1<br />
−1 j2tan ( ΩT)<br />
z = = = 1+ = ⎡1+ e ⎤<br />
1− sT s= jΩ<br />
1− jΩT 2<br />
⎢<br />
1 j T<br />
⎥<br />
⎣ − Ω ⎦ 2 ⎣ ⎦<br />
che corrisponde ad una circonferenza di raggio 0.5 con centro in z = 0.5<br />
(2.116)
Sintesi di circuiti a tempo-discreto 95<br />
Figura 1.37 Mappatura del piano s sul piano z per il metodo basato sulla soluzione numerica dell’equazione<br />
differenziale.<br />
Si ha quindi che:<br />
• l’asse immaginario si mappa nella circonferenza di raggio 0.5 con centro in z = 0.5;<br />
• tutto il piano Re{s}
96 Capitolo 2<br />
Le espressioni delle derivate nell’espressione precedente si possono ricavare dalla (**). Ponendo y[n]=ya(nT)<br />
e x[n]=x(nT), si ottiene:<br />
T ⎡ c d<br />
⎤<br />
y n y n y n y n x n x n<br />
[ ] [ ]<br />
0 0<br />
[ ] − [ − 1] = ⎢− [ ] + [ − 1] + [ ] + [ −1]<br />
⎥<br />
2 ⎣ c1 c1<br />
⎦<br />
Facendo la trasformata z e ricavando H(z) si ottiene:<br />
Y( z)<br />
d0<br />
H( z)<br />
= =<br />
−1<br />
X( z)<br />
21−<br />
z<br />
c + c<br />
T 1+<br />
z<br />
1 −1<br />
0<br />
(2.122)<br />
(2.123)<br />
Confrontando l’espressione trovata con la (***) si ricava la trasformazione dal piano s al piano z cercata<br />
(trasf. bilineare):<br />
−1<br />
2 1− z 1 + sT / 2<br />
−1<br />
T 1+ z 1 − sT / 2<br />
s = ⇔ z =<br />
Ponendo z = e jω<br />
− jω<br />
2 1− e 2 jsin(<br />
ω / 2) 2<br />
s = = = j tan( ω/ 2) = σ + jΩ<br />
− jω<br />
T 1+ e T cos( ω / 2) T<br />
cioè s risulta puramente immaginaria (σ = 0). Inoltre:<br />
(2.124)<br />
(2.125)<br />
TΩ<br />
tan( ω / 2) = (2.126)<br />
2<br />
ω<br />
−π<br />
π<br />
Figura 1.38 Trasformazione nonlineare delle frequenza continua Ω nella frequenza TD ω.<br />
Dalla figura precedente si ricava che l’asse immaginario positivo e quello negativo sono mappati<br />
rispettivamente nella metà superiore e nella metà inferiore della circonferenza unitaria nel piano z. noltre il<br />
semipiano sinistro del piano s si mappa nel cerchio unitario, garantendo quindi la stabilità del circuito TD.<br />
Osservazione<br />
Siccome l’intero asse immaginario viene mappato nella circonferenza unitaria, si evita il problema<br />
dell’aliasing che si ha nel metodo dell’invarianza della risposta impulsiva. Si introduce tuttavia una<br />
distorsione della risposta in frequenza.<br />
ω<br />
Ω<br />
⎛ΩT⎞ ⎝ 2 ⎠<br />
−1<br />
= 2 tan ⎜ ⎟
Figura 1.39 Mappatura del piano s sul piano z per la trasformazione bilineare.<br />
Sintesi di circuiti a tempo-discreto 97<br />
In particolare la trasformazione bilineare genera anche una distorsione della risposta in fase, per cui non è<br />
possibile ottenere un circuito numerico a fase lineare da un circuito analogico a fase lineare.<br />
j<br />
He ( )<br />
ω<br />
Ha( jΩ)<br />
Figura 1.40 Distorsione di frequenza-ampiezza della trasformazione bilineare.<br />
Figura 1.41 Distorsione di frequenza-fase della trasformazione bilineare.<br />
ω<br />
π<br />
ωs<br />
ω p<br />
jΩ<br />
σ<br />
ω<br />
Ω p s Ω<br />
( T )<br />
ω = 2arctan Ω 2<br />
2 ⎛ωp⎞ Ω p = arctan ⎜ ⎟<br />
T ⎝ 2 ⎠<br />
2 ⎛ωs⎞ Ω s = arctan ⎜ ⎟<br />
T ⎝ 2 ⎠<br />
Im{ z}<br />
1<br />
ω<br />
Re{ z}<br />
Ω<br />
Ω
98 Capitolo 2<br />
2.4.2.4 Procedure Matlab per il progetto di filtri numerici da prototipi analogici<br />
Filtri di Butterworth<br />
Procedura BUTTER<br />
BUTTER Butterworth digital and analog filter design.<br />
[B,A] = BUTTER(N,Wn) designs an Nth order lowpass digital<br />
Butterworth filter and returns the filter coefficients in length<br />
N+1 vectors B (numerator) and A (denominator). The coefficients<br />
are listed in descending powers of z. The cutoff frequency<br />
Wn must be 0.0 < Wn < 1.0, with 1.0 corresponding to<br />
half the sample rate.<br />
If Wn is a two-element vector, Wn = [W1 W2], BUTTER returns an<br />
order 2N bandpass filter with passband W1 < W < W2.<br />
[B,A] = BUTTER(N,Wn,'high') designs a highpass filter.<br />
[B,A] = BUTTER(N,Wn,'low') designs a lowpass filter.<br />
[B,A] = BUTTER(N,Wn,'stop') is a bandstop filter if Wn = [W1 W2].<br />
When used with three left-hand arguments, as in<br />
[Z,P,K] = BUTTER(...), the zeros and poles are returned in<br />
length N column vectors Z and P, and the gain in scalar K.<br />
When used with four left-hand arguments, as in<br />
[A,B,C,D] = BUTTER(...), state-space matrices are returned.<br />
BUTTER(N,Wn,'s'), BUTTER(N,Wn,'high','s') and BUTTER(N,Wn,'stop','s')<br />
design analog Butterworth filters. In this case, Wn is in [rad/s]<br />
and it can be greater than 1.0.<br />
Esempio<br />
Progetto di filtro analogico di Butterworth con ordine pari N = 2 e una fc = 1kHz<br />
% esempio di progetto di filtri di Butterworth<br />
N = 2; % Ordine del filtro<br />
Fc = 1000 ; % Frequenza di taglio a -3dB<br />
[b,a] = butter(N,6.283185*Fc,'s')<br />
bode(b,a);<br />
La FdT del filtro risulta<br />
b3<br />
Hs () =<br />
a + a s + a s<br />
3 2 1<br />
2<br />
Esempio<br />
Nel caso si voglia un filtro analogico nella forma spazio di stato<br />
dw() t<br />
= Aw( t) + Bx( t)<br />
dt<br />
y( t) = Cw( t) + Dx( t)<br />
dove w(t) rappresenta il vettore di stato, si può usare la forma<br />
[B,A,C,D] = butter(N,6.283185*Fc,'s');<br />
che, in pratica, ritorna le matrici A, B, C e D.
Magnitude (dB)<br />
Phase (deg)<br />
0<br />
-20<br />
-40<br />
-60<br />
-80<br />
0<br />
-45<br />
-90<br />
-135<br />
10 2<br />
-180<br />
Figura 1.42 Diagramma di Bode dell’esempio.<br />
10 3<br />
Bode Diagram<br />
10 4<br />
Frequency (rad/sec)<br />
Sintesi di circuiti a tempo-discreto 99<br />
Esempio<br />
Progetto di filtro numerico di Butterworth con ordine pari N = 2 e una fc = 1000 (frequenza normalizzata per<br />
una Frequenza di campionamento = Fs).<br />
% esempio di progetto di filtri di Butterworth numerici<br />
N = 2; % Ordine del filtro<br />
Fs = 10000 % Frequenza di campionamento<br />
Fc = 1000; % Frequenza di taglio a -3dB<br />
[b,a] = butter(N,Fc/(Fs/2)); % Filtro di Butterwoth numerico<br />
fvtool(b,a);<br />
I vettori dei coefficienti del filtro b e a sono<br />
b = [0.0675 0.1349 0.0675]<br />
a = [1.0000 -1.1430 0.4128]<br />
per cui la FdT del filtro risulta essere<br />
0.0675 + 0.1349z + 0.0675z<br />
H() z =<br />
−1 −2<br />
1− 1.1430z + 0.4128z<br />
−1 −2<br />
La funzione fvtool(b,a) consente la visualizzazione delle caratteristiche del filtro progettato (risposta in<br />
frequenza e in fase, risposta all’impulso al gradino, diagramma poli-zeri ecc). In Figura 1.43, è sono riportati<br />
alcuni grafici realizzati con la procedura fvtool(b,a).<br />
10 5<br />
10 6
100 Capitolo 2<br />
Magnitude (dB)<br />
Phase (radians)<br />
Group delay (in samples)<br />
0<br />
-10<br />
-20<br />
-30<br />
-40<br />
-50<br />
-60<br />
-0.5<br />
-1<br />
-1.5<br />
-2<br />
-2.5<br />
-3<br />
Magnitude Response (dB)<br />
0 0.2 0.4 0.6 0.8<br />
Normalized Frequency (×π rad/sample)<br />
0<br />
2.5<br />
Phase Response<br />
0 0.2 0.4 0.6 0.8<br />
Normalized Frequency (×π rad/sample)<br />
2<br />
1.5<br />
1<br />
0.5<br />
Group Delay<br />
0 0.2 0.4 0.6 0.8<br />
Normalized Frequency (×π rad/sample)<br />
Figura 1.43 Caratteristiche del filtro di Butterworth (vedi esempio) analizzate con la procedura Matlab<br />
fvtool(b,a).<br />
Se nell’esempio precedente scegliamo un ordine, per esempio, pari 7 i vettori dei coefficienti del filtro b e a<br />
sono<br />
b = [0.0001 0.0006 0.0019 0.0032 0.0032 0.0019 0.0006 0.0001]<br />
a = [1.0000 -4.1823 7.8717 -8.5309 5.7099 -2.3492 0.5483 -0.0558]<br />
Filtri di Chebishev di tipo 1 di tipo 2<br />
-1 -0.5 0<br />
Real Part<br />
0.5 1<br />
Procedura CHEBY1<br />
CHEBY1 Chebyshev Type I digital and analog filter design.<br />
[B,A] = CHEBY1(N,R,Wp) designs an Nth order lowpass digital Chebyshev<br />
filter with R decibels of peak-to-peak ripple in the passband. CHEBY1<br />
returns the filter coefficients in length N+1 vectors B (numerator) and<br />
A (denominator). The passband-edge frequency Wp must be 0.0 < Wp < 1.0,<br />
with 1.0 corresponding to half the sample rate. Use R=0.5 as a<br />
starting point, if you are unsure about choosing R.<br />
If Wp is a two-element vector, Wp = [W1 W2], CHEBY1 returns an order 2N<br />
bandpass filter with passband W1 < W < W2. [B,A] =<br />
CHEBY1(N,R,Wp,'high') designs a highpass filter. [B,A] =<br />
Imaginary Part<br />
Amplitude<br />
Amplitude<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0<br />
-0.2<br />
-0.4<br />
-0.6<br />
-0.8<br />
-1<br />
0.25<br />
0.2<br />
0.15<br />
0.1<br />
0.05<br />
0<br />
0.9<br />
0.8<br />
0.7<br />
0.6<br />
0.5<br />
0.4<br />
0.3<br />
0.2<br />
0.1<br />
2<br />
Pole/Zero Plot<br />
Impulse Response<br />
0 5 10<br />
Samples<br />
15 20<br />
1<br />
Step Response<br />
0 5 10<br />
Samples<br />
15 20
CHEBY1(N,R,Wp,'low') designs a lowpass filter. [B,A] =<br />
CHEBY1(N,R,Wp,'stop') is a bandstop filter if Wp = [W1 W2].<br />
When used with three left-hand arguments, as in [Z,P,K] = CHEBY1(...),<br />
the zeros and poles are returned in length N column vectors Z and P,<br />
and the gain in scalar K.<br />
When used with four left-hand arguments, as in [A,B,C,D] = CHEBY1(...),<br />
state-space matrices are returned.<br />
CHEBY1(N,R,Wp,'s'), CHEBY1(N,R,Wp,'high','s') and<br />
CHEBY1(N,R,Wp,'stop','s') design analog Chebyshev Type I filters. In<br />
this case, Wp is in [rad/s] and it can be greater than 1.0.<br />
Sintesi di circuiti a tempo-discreto 101<br />
Esempio<br />
Progetto di filtro numerico di Chebyshev di tipo 1 con ordine pari N = 6 e una fc = 1kHz con un ripple in<br />
banda passante pari a 0.1 dB.<br />
% esempio di progetto di filtri di Chebyshev di tipo 1 numerici<br />
N = 6; % Ordine del filtro<br />
Fs = 10000 % Frequenza di campionamento<br />
Fc = 1000; % Frequenza di taglio a -3dB<br />
R = 0.1; % Ripple in dB nella regione passabanda<br />
[b,a] = cheby1(N,R,Fc/(Fs/2)); % Filtro di Chebyshev numerico<br />
fvtool(b,a);
102 Capitolo 2<br />
Imaginary Part<br />
Amplitude<br />
Amplitude<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0<br />
-0.2<br />
-0.4<br />
-0.6<br />
-0.8<br />
-1<br />
0.2<br />
0.15<br />
0.1<br />
0.05<br />
0<br />
-0.05<br />
1.2<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0<br />
Pole/Zero Plot<br />
-1 -0.5 0<br />
Real Part<br />
0.5 1<br />
Impulse Response<br />
0 20 40 60 80 100 120 140<br />
Samples<br />
Step Response<br />
0 20 40 60 80 100 120 140<br />
Samples<br />
0 0.2 0.4 0.6 0.8<br />
Normalized Frequency (×π rad/sample)<br />
Figura 1.44 Caratteristiche del filtro di Chebishev di tipo 1 (vedi esempio) analizzate con la procedura Matlab<br />
fvtool(b,a) .<br />
Procedura CHEBY2<br />
CHEBY2 Chebyshev Type II digital and analog filter design.<br />
[B,A] = CHEBY2(N,R,Wst) designs an Nth order lowpass digital Chebyshev<br />
filter with the stopband ripple R decibels down and stopband-edge<br />
frequency Wst. CHEBY2 returns the filter coefficients in length N+1<br />
vectors B (numerator) and A (denominator). The stopband-edge frequency<br />
Wst must be 0.0 < Wst < 1.0, with 1.0 corresponding to half the sample<br />
rate. Use R = 20 as a starting point, if you are unsure about choosing<br />
R.<br />
Magnitude (dB)<br />
Phase (radians)<br />
Group delay (in samples)<br />
0<br />
-20<br />
-40<br />
-60<br />
-80<br />
-100<br />
-120<br />
-140<br />
-160<br />
-180<br />
-200<br />
0<br />
-1<br />
-2<br />
-3<br />
-4<br />
-5<br />
-6<br />
-7<br />
-8<br />
-9<br />
20<br />
15<br />
10<br />
5<br />
0<br />
Magnitude Response (dB)<br />
0 0.2 0.4 0.6 0.8<br />
Normalized Frequency (×π rad/sample)<br />
Phase Response<br />
Group Delay<br />
0 0.2 0.4 0.6 0.8<br />
Normalized Frequency (×π rad/sample)
If Wst is a two-element vector, Wst = [W1 W2], CHEBY2 returns an order<br />
2N bandpass filter with passband W1 < W < W2. [B,A] =<br />
CHEBY2(N,R,Wst,'high') designs a highpass filter. [B,A] =<br />
CHEBY2(N,R,Wst,'low') designs a lowpass filter. [B,A] =<br />
CHEBY2(N,R,Wst,'stop') is a bandstop filter if Wst = [W1 W2].<br />
When used with three left-hand arguments, as in [Z,P,K] = CHEBY2(...),<br />
the zeros and poles are returned in length N column vectors Z and P,<br />
and the gain in scalar K.<br />
When used with four left-hand arguments, as in [A,B,C,D] = CHEBY2(...),<br />
state-space matrices are returned.<br />
CHEBY2(N,R,Wst,'s'), CHEBY2(N,R,Wst,'high','s') and<br />
CHEBY2(N,R,Wst,'stop','s') design analog Chebyshev Type II filters. In<br />
this case, Wst is in [rad/s] and it can be greater than 1.0.<br />
Sintesi di circuiti a tempo-discreto 103<br />
Esempio<br />
Progetto di filtro numerico di Chebyshev di tipo 2 con ordine pari N = 6 e una fst = 1kHz, con un ripple nella<br />
stopband pari a 40 dB.<br />
% esempio di progetto di filtri di Chebyshev di tipo 2 numerici<br />
N = 6; % Ordine del filtro<br />
Fs = 10000 % Frequenza di campionamento<br />
Fst = 1000; % Frequenza di della stopband (a –R dB)<br />
R = 40; % Ripple in dB nella stopband<br />
[b,a] = cheby2(N,R,Fst/(Fs/2)); % Filtro di Chebyshev numerico<br />
fvtool(b,a);
104 Capitolo 2<br />
Magnitude (dB)<br />
Phase (radians)<br />
Group delay (in samples)<br />
0<br />
-10<br />
-20<br />
-30<br />
-40<br />
-50<br />
-60<br />
-1<br />
-2<br />
-3<br />
-4<br />
-5<br />
-6<br />
Magnitude Response (dB)<br />
0 0.2 0.4 0.6 0.8<br />
Normalized Frequency (×π rad/sample)<br />
1<br />
0<br />
18<br />
16<br />
14<br />
12<br />
10<br />
Phase Response<br />
0 0.2 0.4 0.6 0.8<br />
Normalized Frequency (×π rad/sample)<br />
8<br />
6<br />
4<br />
2<br />
Group Delay<br />
0<br />
0 0.2 0.4 0.6 0.8<br />
Normalized Frequency (×π rad/sample)<br />
-1 -0.5 0<br />
Real Part<br />
0.5 1<br />
Figura 1.45 Caratteristiche del filtro di Chebishev di tipo 2 (vedi esempio) analizzate con la procedura Matlab<br />
fvtool(b,a).<br />
Filtri di Ellittici di Cauer<br />
ELLIP Elliptic or Cauer digital and analog filter design.<br />
[B,A] = ELLIP(N,Rp,Rs,Wp) designs an Nth order lowpass digital elliptic<br />
filter with Rp decibels of peak-to-peak ripple and a minimum stopband<br />
attenuation of Rs decibels. ELLIP returns the filter coefficients in<br />
length N+1 vectors B (numerator) and A (denominator). The passband-edge<br />
frequency Wp must be 0.0 < Wp < 1.0, with 1.0 corresponding to half the<br />
sample rate. Use Rp = 0.5 and Rs = 20 as starting points, if you are<br />
unsure about choosing them.<br />
If Wp is a two-element vector, Wp = [W1 W2], ELLIP returns an order 2N<br />
bandpass filter with passband W1 < W < W2. [B,A] =<br />
ELLIP(N,Rp,Rs,Wp,'high') designs a highpass filter. [B,A] =<br />
Imaginary Part<br />
Amplitude<br />
Amplitude<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0<br />
-0.2<br />
-0.4<br />
-0.6<br />
-0.8<br />
-1<br />
0.14<br />
0.12<br />
0.1<br />
0.08<br />
0.06<br />
0.04<br />
0.02<br />
0<br />
-0.02<br />
-0.04<br />
Pole/Zero Plot<br />
Impulse Response<br />
-0.06<br />
0 20 40 60<br />
Samples<br />
80 100<br />
1.2<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0<br />
Step Response<br />
0 20 40 60<br />
Samples<br />
80 100
ELLIP(N,Rp,Rs,Wp,'low') designs a lowpass filter. [B,A] =<br />
ELLIP(N,Rp,Rs,Wp,'stop') is a bandstop filter if Wp = [W1 W2].<br />
When used with three left-hand arguments, as in [Z,P,K] = ELLIP(...),<br />
the zeros and poles are returned in length N column vectors Z and P,<br />
and the gain in scalar K.<br />
When used with four left-hand arguments, as in [A,B,C,D] = ELLIP(...),<br />
state-space matrices are returned.<br />
ELLIP(N,Rp,Rs,Wp,'s'), ELLIP(N,Rp,Rs,Wp,'high','s') and<br />
ELLIP(N,Rp,Rs,Wp,'stop','s') design analog elliptic filters. In this<br />
case, Wp is in [rad/s] and it can be greater than 1.0.<br />
Sintesi di circuiti a tempo-discreto 105<br />
Esempio<br />
Progetto di filtro ellittico (o di Cauer) numerico on ordine pari N = 6 e una fst = 1kHz, con un ripple nella<br />
stopband pari a 40 dB.<br />
% esempio di progetto di filtri Ellittico (o di Cauer) numerico<br />
N = 6; % Ordine del filtro<br />
Fs = 10000 % Frequenza di campionamento<br />
Fc = 1000; % Frequenza di della stopband (a –R dB)<br />
Rp = 0.1; % Ripple in dB nella regione passabanda<br />
Rs = 40; % Ripple in dB nella stopband<br />
[b,a] = ellip(N,Rp,Rs,Fc/(Fs/2)); % Filtro di Cauer numerico<br />
fvtool(b,a);
106 Capitolo 2<br />
Magnitude (dB)<br />
Phase (radians)<br />
Group delay (in samples)<br />
0<br />
-10<br />
-20<br />
-30<br />
-40<br />
-50<br />
-60<br />
0 0.2 0.4 0.6 0.8<br />
Normalized Frequency (×π rad/sample)<br />
0<br />
-1<br />
-2<br />
-3<br />
-4<br />
-5<br />
-6<br />
-7<br />
40<br />
35<br />
30<br />
25<br />
20<br />
15<br />
10<br />
Figura 1.46 Caratteristiche del filtro di Cauer (vedi esempio) analizzate con la procedura Matlab<br />
fvtool(b,a).<br />
2.4.3 Progetto filtri IIR interamente numerici<br />
Il progetto di filtri IIR consiste nel determinare i coefficienti di una FdT razionale del tipo<br />
H ( z)<br />
= h[n]z !n "<br />
=<br />
#<br />
n=0<br />
Magnitude Response (dB)<br />
Phase Response<br />
0 0.2 0.4 0.6 0.8<br />
Normalized Frequency (×π rad/sample)<br />
5<br />
0<br />
Group Delay<br />
0 0.2 0.4 0.6 0.8<br />
Normalized Frequency (×π rad/sample)<br />
b 0 + b 1 z !1 +!+ b q z !q<br />
-1 -0.5 0<br />
Real Part<br />
0.5 1<br />
1+ a z 1 !1 . (2.127)<br />
! p<br />
+!+ a z p<br />
attraverso un algoritmo di ottimizzazione.<br />
La procedura di ottimizzazione per il progetto del filtro IIR viene formulata nei seguenti passi:<br />
Imaginary Part<br />
Amplitude<br />
Amplitude<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0<br />
-0.2<br />
-0.4<br />
-0.6<br />
-0.8<br />
-1<br />
0.2<br />
0.15<br />
0.1<br />
0.05<br />
0<br />
-0.05<br />
1.2<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
Pole/Zero Plot<br />
Impulse Response<br />
0 50 100 150<br />
Samples<br />
200 250 300<br />
1<br />
0<br />
Step Response<br />
0 50 100 150<br />
Samples<br />
200 250 300
Sintesi di circuiti a tempo-discreto 107<br />
1. la H(z) è razionale con ordine del numeratore e denominatore fissati;<br />
2. il criterio di ottimizzazione può riguardare sia il modulo che la fase o può essere interamente definito<br />
nel dominio del tempo;<br />
3. i coefficienti del filtro{ a , b } sono determinati con un metodo iterativo.<br />
k k<br />
2.4.3.1 Approccio nel dominio della frequenza: metodo di Deczky<br />
Detta<br />
D<br />
D( e ) D( e ) e<br />
jω jω<br />
jφ<br />
( ω)<br />
= la risposta in frequenza desiderata del filtro e<br />
risposta in frequenza del filtro con una FdT del tipo<br />
1+ b k1 z !1 + b k 2 z !2<br />
P<br />
H ( z)<br />
= A"<br />
. (2.128)<br />
1+ a z k1 !1 + a z k 2 !2<br />
k=1<br />
H<br />
H( e ) H( e ) e<br />
jω jω<br />
jφ<br />
( ω)<br />
= la<br />
Indicando con w !! [(4P+1)"1] = [ a T b T<br />
] T il vettore contenente, incolonnati, tutti i coefficienti del filtro, la<br />
funzione costo J(w) dell’algoritmo di Deczky [13] è definita come la somma (convessa) di due contributi<br />
J (w) = (1! !)J 1 (w) + !J 2 (w)<br />
In questa formula 1 ( ) J w è legato alla risposta in ampiezza e J2 ( w ) al ritardo di gruppo. In dettaglio si ha<br />
K !1<br />
"<br />
( ) p<br />
J (w) = (1! !) G(e j! k ) D(e j! k ) ! H(e j! k )<br />
k=0<br />
( ) p<br />
+! V (e j! K !1<br />
k ) ! (! ) !! (! ) !! (! )<br />
H k 0 D k<br />
"<br />
k=0<br />
1 p<br />
1 p<br />
ωk ∈Ω. (2.129)<br />
Dalla (2.17) ricordiamo che i ritardi di gruppo sono definiti come ! H (" ) = !"# H (" ) "" e<br />
! D (" ) = !"# D (" ) "" . Nella (2.129) il termine ! (" 0 ) è definito come ‘ritardo nominale’ ed è un termine<br />
costante necessario nell’algoritmo di ottimizzazione. Il parametro λ ( 0≤λ≤ 1)<br />
determina il peso che si vuole<br />
dare alla misura di errore sulla risposta in ampiezza o all’errore sul ritardo di gruppo. Infine, i termini G(e j! k )<br />
e V (e j! k ) sono le funzioni peso della norma.<br />
L’ordine p della norma determina il tipo di approssimazione desiderato; p = 2 è il criterio ai minimi<br />
quadrati o least squares. Per p = 40 la (2.129) produce un grado di approssimazione quasi del tipo min-max.<br />
L’equazione (2.129) è caratterizzata da 4P+1 incognite e similmente all’approccio LS incontrato nel<br />
progetto dei filtri FIR (Cfr. §2.3.1), l’algoritmo di Deczky minimizza la derivata della (2.129) ponendola a<br />
zero. In altri termini indicando con ∇J( w ) il gradiente della funzione costo, il minimo si ha per<br />
w opt !"J (w) !<br />
#J (w)<br />
#w<br />
$ 0 . (2.130)<br />
La funzione costo definita dalla (2.129), è una funzione razionale. Ponendo a zero la derivata si produce in<br />
insieme di equazioni non lineare che non ammette un minimo assoluto ma presenta dei minimi relativi. Ne<br />
segue che la minimizzazione della (2.130) non produce un risultato unico 3 .<br />
L’algoritmo usato dall’autore per la minimizzazione, consiste nella procedura iterativa di Davidon-<br />
Fletcher-Powell (DFP) [14] per la discesa della funzione gradiente. L’algoritmo non garantisce la<br />
convergenza al minimo assoluto per cui occorre lanciare la procedura più volte e selezionare il miglior<br />
risultato.<br />
Osservazione<br />
I metodi di ottimizzazione sono molto importanti per la determinazione dei parametri dei circuiti sia analogici<br />
sia digitali. In particolare i metodi iterativi sono di centrale importanza nei filtri adattativi. In questi casi i<br />
3 Nei filtri FIR la minimizzazione della FC con norma euclidea produce una FC quadratica, che ha quindi un minimo<br />
assoluto determinabile risolvendo un sistema di equazioni lineari.
108 Capitolo 2<br />
coefficienti del circuito vengono aggiornati in continuazione in modo da soddisfare le specifiche del filtro in<br />
funzione dell’ambiente operativo che non è noto a priori o può variare nel tempo.<br />
2.4.3.2 Approssimazione di Padé<br />
Sia hd[n] la risposta del filtro ideale che si vuole realizzare con una funzione di trasferimento razionale del<br />
tipo<br />
H ( z)<br />
= B(z)<br />
A(z) = b0 + b1z!1 +!+ b z q !q<br />
1+ a z 1 !1 . (2.131)<br />
! p<br />
+!+ a z p<br />
Poiché la H(z) ha (p + q + 1) parametri liberi è possibile determinare i valori { , }<br />
a b tali che h[n] = hd[n] per<br />
n = 0, 1, …, p + q.<br />
La procedura per determinare tali coefficienti è basata sulla funzione di rete H(z) = B(z) / A(z) . Si può<br />
scrivere<br />
A(z) / H(z) = B(z) (2.132)<br />
Il primo membro nel dominio del tempo si può scrivere<br />
p<br />
a[n]! h[n] = h[n] + # a[k]h[n " k] . (2.133)<br />
k=1<br />
Ponendo h[n] = hd[n] per n = 0, 1, …, p + q si ottiene un insieme di p+q+1 equazioni in p+q+1 incognite del<br />
tipo<br />
p<br />
# % b[n] n = 0, 1, ..., q<br />
h [n] + a[k]h [n ! k]<br />
d "<br />
=<br />
d $<br />
k=1<br />
&% 0 n = q +1, ..., q + p<br />
In forma matriciale<br />
"<br />
%<br />
h [0] 0 ! 0<br />
"<br />
$ d ' $<br />
$ h [1] h [0] ! 0 ' $<br />
$ d d ' " 1 % $<br />
$ " " # " ' $ '<br />
$<br />
' a $<br />
$ 1 '<br />
$<br />
h [q] h [q !1] ! 0<br />
d d ' $<br />
!<br />
' = $<br />
$<br />
$ h [q +1] h [q] ! " ' $ '<br />
d d $<br />
' a<br />
$<br />
$ p '<br />
$ " " # h [q !1] '<br />
# & $<br />
d $<br />
$<br />
'<br />
h [q + p] h [q + p !1] ! h [q]<br />
$<br />
# $ d d d &'<br />
#<br />
b 0<br />
b 1<br />
!<br />
b q<br />
0<br />
!<br />
0<br />
k k<br />
(2.134)<br />
%<br />
'<br />
'<br />
'<br />
'<br />
' . (2.135)<br />
'<br />
'<br />
'<br />
'<br />
'<br />
&<br />
Il sistema (2.135) può essere risolto in due passi. Nel primo passo sono determinati i coefficienti a[k] usando<br />
le ultime p equazioni della Errore. L'origine riferimento non è stata trovata.. Determinati gli a[k], i<br />
coefficienti b[k] possono essere determinati dalla prime delle<br />
Errore. L'origine riferimento non è stata trovata. come<br />
p<br />
b[n] = h [n] + a[k]h d " [n ! k] per n = 0, 1, ..., q . (2.136)<br />
d<br />
k=1<br />
Il metodo di Padé produce una soluzione esatta per i primi p + q campioni della hd[n], quindi nel caso di<br />
risposte impulsive lunghe il metodo non è praticabile.<br />
2.4.3.3 Metodo di Prony<br />
Il metodo di Prony consente di determinare i valori { , }<br />
a b che minimizzano una funzione costo del tipo<br />
k k
K<br />
J (h) = h [n] ! h[n] d 2<br />
" . (2.137)<br />
n=0<br />
Sintesi di circuiti a tempo-discreto 109<br />
Poiché il calcolo del gradiente della J (h) non produce un sistema lineare di equazioni, la soluzione del<br />
problema risulta difficile. Il metodo di Prony consente di ottenere una soluzione approssimata implementata in<br />
due passi. Il primo passo consiste nel minimizzare una funzione costo<br />
!<br />
J (a) = e 2 " [n] . (2.138)<br />
n=q+1<br />
con e[n] derivato dalla (2.134) come<br />
p<br />
e[n] = h [n] + a[k]h d " [n ! k] . (2.139)<br />
d<br />
k=1<br />
che in forma matriciale diventa<br />
T<br />
e = h [n] + h a . (2.140)<br />
d d<br />
La funzione costo (2.138) può essere espressa come<br />
e T 2 T<br />
e = h [n] + 2hdahd<br />
[n] + a d<br />
T T<br />
h h a d d<br />
Derivando rispetto ad a e ponendo a zero si ottiene<br />
Si ha perciò<br />
!J (a)<br />
!a = hd [n]h T T<br />
+ hdh a " 0<br />
d d<br />
T !1 T<br />
a = !h [n](h h ) hd . (2.141)<br />
d d d<br />
Determinati gli a[k], i coefficienti b[k] sono calcolati con l’espressione (2.136) del metodo di Padé.
110 Capitolo 2<br />
2.5 Bibliografia<br />
[1] A.V. Oppenheim, R.W. Schafer, J.R. Buck, “Discrete-Time Signal Processing”, II ed., Prentice Hall, 1999.<br />
[2] L.R. Rabiner and B. Gold, “Theory and Application of Digital Signal Processing”, Prentice-Hall, Inc, Englewood<br />
Cliffs, N.J., 1975.<br />
[3] F.J. Harris, “On the use of windows for harmonic analysis with the discrete Fourier transform”, Proceedings of the<br />
IEEE,Vol. 66, No. 1, pp. 51-83, Jan. 1978.<br />
[4] A. Antoniou, “Digital Filters: Analysis and Design”, MacGraw-Hill , 1979.<br />
[5] T. Saramaki, “Finite Impulse Response Filter Design”, in Handbook for Digital Signal Processing”, Mitra-Kaiser<br />
editor, Wiley, ISBN 0-471-61995-7, 1993.<br />
[6] T.W. Parks and J.H. McClellan, “Chebyshev approximation for nonrecursive digital filters with linear phase”,<br />
IEEE Trans. Circuit Theory vol. CT-19, no. 2, pp. 189–194, 1972.<br />
[7] E. Ya. Remez, “General computational methods of Tchebycheff approximation”, Kiev (Atomic Energy<br />
Commission Translation 4491), pp. 1–85, 1957.<br />
[8] Programs for Digital Signal Processing, IEEE Press, New York, 1979, Algorithm 5.1.<br />
[9] Selected Papers in Digital Signal Processing, II, IEEE Press, New York, 1979.<br />
[10] T.W. Parks and C.S. Burrus, “Digital Filter Design”, John Wiley & Sons, New York:, 1987, p.83.<br />
[11] L.R. Rabiner, J.H. McClellan, and T.W. Parks, “FIR Digital Filter Design Techniques Using Weighted Chebyshev<br />
Approximations,” Proc. IEEE 63 (1975).<br />
[12] Padé Approximates Method and its Applications to Mechanics. Lecture notes in physics. Springer-Verlag, 1976.<br />
[13] A.G. Deczky, “Synthesis of recursive digital filters using the minimum p-error criterion”, IEEE Transactions on<br />
Audio and Electroacoustics, Vol. 20 , No 4, pp 257 – 263, 1972<br />
[14] R. Fletcher and M. J. D. Powell, “A rapidly convergent descent method for minimization”, Computer Journal,<br />
6(2):163-168, 1963.<br />
[15] Fletcher, Roger, “Practical methods of optimization” (2nd ed.), New York: John Wiley & Sons, ISBN 978-0-471-<br />
91547-8, 1987.<br />
[16] D. M. Kodek, "Design of optimal finite wordlength FIR digital filters using integer programming<br />
techniques," IEEE Trans. Acoust., Speech, Signal Processing, vol. ASSP-28. pp. 304-308, June 1980.<br />
[17] V. B. Lawrence and A. C. Salazar. "Finite precision design of linear phase FIR filters." Bell Syst. Tech. J ..<br />
vol. 59, pp. 1575-1598, Nov. 1980.<br />
[18] Y. C. Lim and S. R. Parker, "FIR filter design over a discrete Powers- of-two coefficient space," IEEE<br />
Trans. Acoust., Speech, Signalocessing, vol. ASSP-31. pp. 583-591, June 1983.<br />
[19] Q. F. Zhao and Y. Tadokoro, "A simple design of FIR filters with powers-of-two coefficients," IEEE Trans.<br />
Circuits Syst., vol. CAS35, pp. 566-570. May 1988.<br />
[20] N. Benvenuto, M. Marchesi, A. Uncini, "Application of Simulated Annealing for the Design of Special Digital<br />
Filters", IEEE Transactions on Signal Processing, VOL 40, No.2, February 92.<br />
[21] Stefano Traferro and Aurelio Uncini, “Power-of-Two Adaptive Filters Using Tabu Search”, IEEE Transactions<br />
on Circuits and Systems-II: Analog and Digital Signal Processing, Vol. 47, No. 6, June 2000.<br />
[22] P. Gentili, F. Piazza, A. Uncini, "Improved Power-of-Two Sharpening Filter Design by Genetic Algorithm", IEEE<br />
Int. Conference on Acoustic Speech and Signal Processing, ICASSP'96, Atlanta, USA, 7-10 May 1996.<br />
[23] P. Gentili, F. Piazza, A. Uncini, "Evolutionary Design of FIR Digital Filters with Power-of-Two<br />
Coefficients", IEEE International Conference on Evolutionary Computation, Orlando, Florida, Vol. I, pp.<br />
110-114, June 27-June 29 1, 1994.