03.08.2013 Views

p - InfoCom - Sapienza

p - InfoCom - Sapienza

p - InfoCom - Sapienza

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!