Capitolo 5 parte I

Transcript

Capitolo 5 parte I
Appunti di
Elaborazione numerica dei segnali
Capitolo 5 (I) - Progetto di filtri IIR
Introduzione: filtri numerici e filtri analogici ............................................. 1
Realizzazione in forma diretta dei filtri IIR ................................................ 4
Progetto di filtri IIR tramite approssimazione di derivate ........................... 8
Esempio .............................................................................................. 10
Problemi con l’approssimazione delle derivate................................... 12
Osservazione....................................................................................... 15
Trasformazione bilineare .......................................................................... 17
Dettagli analitici................................................................................. 19
Caratteristiche della trasformazione bilineare.................................... 20
Esempio ........................................................................................ 23
Esempio ........................................................................................ 24
Esempio ........................................................................................ 26
Considerazioni generali sul progetto tramite trasformazione bilineare28
Problemi legati alla precisione di calcolo dei coefficienti ......................... 29
Schematizzazione dei poli e degli zeri ................................................. 31
Utilizzo delle “strutture analogiche a scala” ............................................. 35
Filtri ad onda numerica (Wave Digital Filters) ......................................... 39
Dispositivi adattatori .......................................................................... 43
Progetto dell’adattatore tipo serie .................................................. 45
Progetto dell’adattatore tipo parallelo............................................ 46
Realizzazione del filtro ....................................................................... 46
Pregi e difetti dei filtri ad onda numerica ........................................... 48
INTRODUZIONE: FILTRI NUMERICI E FILTRI ANALOGICI
Per definizione, un filtro IIR è un filtro la cui funzione di risposta all’impulso h(n) ha lunghezza
infinita. Perché accada questo, la funzione di sistema (cioè la trasformata zeta della funzione di
risposta all’impulso) del filtro deve presentare almeno un polo (che non si trovi ovviamente
nell’origine). Ciò significa che deve trattarsi, in generale, di una funzione razionale, data dal
rapporto di due polinomi:
M
Y( z )
=
H(z) =
X( z )
∑b
k =0
N
k
z −k
1 + ∑ a k z −k
k =1
Da notare che il filtro è IIR anche in assenza degli zeri (che
costituiscono la parte FIR del filtro stesso). Ciò che importa, per avere una
funzione di risposta all’impulso di lunghezza infinita (anche se eventualmente causale), è la presenza
dei poli.
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Posta la questione in questo modo, la differenza sostanziale tra un filtro
IIR ed un filtro FIR è proprio nella presenza dei poli.
In questi paragrafi vogliamo prima introdurre le principali caratteristiche dei filtri IIR, dopodiché
parleremo delle principali metodologie di progetto di tali filtri. Gran parte di queste metodologie,
come si vedrà, si basano sul progetto di filtri analogici da cui vengono poi derivati i corrispondenti
filtri numerici. Concentriamoci allora proprio su questo aspetto, tramite considerazioni generali.
In primo luogo, è bene osservare che nel caso dei filtri FIR (di cui abbiamo
parlato nel precedente capitolo) non ha senso cercare alcuna
analogia con filtri analogici, per un motivo molto semplice: affinché un filtro
analogico presenti delle proprietà di filtraggio (passa-basso, passa-banda, passa-alto), è necessario
che esso presenti almeno un elemento reattivo e quindi necessariamente almeno un polo nella
funzione di trasferimento (se usassimo solo elementi resistivi, invece, il filtro sarebbe
necessariamente passa-tutto, dato che i resistori garantiscono, entro certi limiti fisici legati al loro
funzionamento reale, legami istantanei tra ingresso ed uscita); di conseguenza, le analogie tra
filtri analogici e filtri numerici possono essere fatte solo per
filtri che presentino, sia nel dominio s (trasformata di Laplace)
sia nel dominio z (trasformata zeta), almeno un polo e questo non è
il caso dei filtri FIR. I filtri FIR, pur potendo presentare qualsiasi proprietà di
filtraggio, sono filtri a soli zeri (nel piano z).
Dato, quindi, che consideriamo filtri che presentano almeno un polo, possiamo cercare di sfruttare
le conoscenze che abbiamo relativamente al mondo analogico. In quest’ultimo, esistono svariati
metodi per il dimensionamento di filtri RLC che sintetizzino la funzione di trasferimento desiderata.
Ad esempio, una volta assegnata una maschera per il filtro analogico da ottenere, esistono procedure
di ottimizzazione (basati su algoritmi e tabelle standard), che forniscono i valori di resistenza,
induttanza e capacità normalizzati all’impedenza di ingresso o di uscita oppure anche alle frequenze
di taglio che si desidera ottenere1. Allora, ha senso chiedersi se le conoscenze di questi metodi di
progetto possono essere in qualche modo sfruttate per progettare filtri IIR nel dominio tempodiscreto.
Vediamo di capire, a livello generale, con quali criteri poter passare da un filtro analogico al
corrispondente filtro numerico.
Un generico filtro analogico può essere descritto tramite la trasformata di Laplace della sua
funzione di risposta all’impulso (tempo-continua). Questa trasformata di Laplace può essere
calcolata in almeno due modi:
• un primo modo consiste nell’applicare direttamente la definizione:
H A (s) =
+∞
∫ h ( t )e
− st
dt
−∞
Il pedice “A” sta appunto per “analogico”.
• un secondo modo consiste nel considerare il legame ingresso-uscita del filtro, individuato
direttamente nel dominio trasformato, in modo da poter calcolare HA(s) come rapporto tra la
trasformata dell’uscita e quella dell’ingresso:
1
In pratica, tali metodi forniscono i valori di R,C ed L non per una fissata impedenza in ingresso o in uscita (o per una prefissata
frequenza di taglio), ma in funzione di questa, in modo che i valori numerici esatti possono essere facilmente determinati caso per
caso (semplicemente tramite delle moltiplicazioni).
Autore: Sandro Petrizzelli
2
Progetto di filtri IIR (parte I): trasformazione bilineare
M
H A (s) =
Y(s)
=
X(s)
∑b
k =0
N
∑a
k =0
k
sk
k
sk
I coefficienti ak e bk sono quelli che caratterizzano il filtro, esattamente con nel dominio
numerico, dove però usiamo la trasformata zeta, applicata ad una funzione h(n) tempo-discreta.
Un modo alternativo di descrivere il comportamento del filtro è quello di individuare il legame
ingresso-uscita non più nel dominio trasformato, ma nel dominio del tempo, senza però considerare
la funzione di risposta all’impulso, ma direttamente l’equazione differenziale lineare, a coefficienti
costanti, del tipo
N
d k y( t ) M
d k x (t )
ak
= ∑ bk
∑
dt k
dt k
k =0
k =0
Come è ben noto, se noi trasformiamo secondo Laplace questa equazione, ritroviamo esattamente
l’ultima espressione riportata per HA(s).
Ognuna di queste 3 caratterizzazioni del filtro analogico conduce ad un possibile metodo per
convertire il filtro nel dominio tempo-discreto. Prima di esaminare questi metodi nel dettaglio,
possiamo però fare delle considerazioni generali:
• in primo luogo, ricordiamo che un filtro costituito da un sistema analogico lineare tempoinvariante, con funzione di trasferimento2 H(s), è stabile se e solo se i suoi poli giacciono tutti
nel semipiano destro del piano complesso. Questo comporta che una eventuale tecnica di
conversione di un filtro dal mondo analogico al mondo digitale debba garantire almeno due
proprietà:
∗ la prima è che l’asse immaginario jω nel piano s venga mappato (cioè fatto corrispondere)
nel cerchio unitario del piano z;
∗ la seconda, ancora più stringente, è che il semipiano sinistro del piano s
venga mappato nei punti all’interno del cerchio unitario del
piano z: questo garantisce che un filtro stabile nel dominio
analogico corrisponda ad un filtro stabile anche nel dominio
numerico.
• in secondo luogo, è possibile dimostrare che filtri IIR fisicamente
realizzabili e stabili non possono avere fase lineare. Questo
risultato discende da una proprietà dei filtri numerici a fase lineare, in base alla quale tali filtri
hanno una funzione di trasferimento che soddisfa la condizione
H(z) = ± z − N H(z −1 )
In base a questa relazione, il filtro dovrebbe avere, per ogni polo all’interno del cerchio
unitario, un polo anche all’esterno del cerchio unitario, in posizione simmetrica (ad esempio, se
c’è un polo in -a, con 0<a<1, ci dovrà anche essere quello in -1/a); di conseguenza, la presenza
2
D’ora in poi, chiameremo funzione di trasferimento sia la trasformata di Laplace della funzione di risposta all’impulso sia la
trasformata di Fourier della stessa funzione: la differenza, come è ben noto, è che la trasformata di Fourier H(ω) si ottiene dalla
trasformata di Laplace H(s) ponendo banalmente s=jω. Questo risultato è affermato dal noto teorema della funzione di
risposta armonica, che vale però solo per sistemi lineari tempo-invarianti asintoticamente stabile).
3
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
di quel polo all’esterno del cerchio unitario fa si che il filtro sia instabile (nel caso dei filtri
FIR, questo problema non sussisteva in quanto non c’erano poli da considerare). Deduciamo
che un filtro IIR causale (cioè fisicamente realizzabile) e
stabile non può avere fase lineare. Se, invece, rimuoviamo l’ipotesi della
fisica realizzabilità, allora il filtro IIR potrà anche avere fase lineare. In generale, dato che
a noi interessano filtri fisicamente realizzabili, laddove ci
interessa
anche
una
fase
rigorosamente
lineare
dovremo
necessariamente affidarci a filtri FIR;
• come ultima osservazione, ricordiamo che, al pari dei filtri FIR, quando
progettiamo un filtro IIR abbiamo, come obbiettivo, quello di
approssimare al meglio le specifiche prefissate, che riguardano
solo di modulo della H(z); questo, però, non significa che noi consideriamo non
importante la caratteristica di fase del filtro: dato che modulo e fase di H(z) sono tra loro legati,
noi specifichiamo le desiderate caratteristiche per il modulo ed accettiamo la caratteristica di
fase che viene fuori dal metodo di progetto utilizzato.
REALIZZAZIONE IN FORMA DIRETTA DEI FILTRI IIR
Consideriamo un filtro IIR la cui funzione di sistema (trasformata della risposta all’impulso) sia
razionale e, in particolare, del tipo seguente:
M
H ( z) =
∑b
k =0
N
∑a
k =0
k
z −k
k
z −k
M
=
∑b
k =0
N
k
z −k
1 + ∑ a k z −k
k =1
(si è supposto a0=1, il che non lede di generalità i nostri discorsi in quanto basta usare un fattore di
scala per riportarsi alla situazione più generale possibile).
Sappiamo bene che questa funzione di sistema può essere scomposta nel prodotto di due funzioni
di sistema, una corrispondente agli zeri del filtro e l’altra ai poli:
M
filtro FIR (soli zeri) 
→ H1 (z) = ∑ b k z − k
k =0
filtro IIR a soli poli 
→ H 2 (z) =
1
N
1 + ∑ a k z −k
k =1
Questa scomposizione porta ad individuare il filtro IIR (poli e zeri) di partenza come cascata di un
filtro FIR (che presenta quindi solo degli zeri, oltre ad un polo nell’origine di molteplicità M) ed un
filtro IIR a soli poli (oltre ovviamente allo zero nell’origine di molteplicità N).
Vogliamo sfruttare questa scomposizione per arrivare ad una struttura a blocchi del filtro IIR di
partenza: tale struttura a blocchi dovrebbe essere, idealmente, la più semplice e la più efficiente
possibile.
Per quanto riguarda la parte FIR, cioè H1(z), esistono diverse possibili realizzazioni, che saranno
esaminate in seguito. La più semplice realizzazione di un filtro FIR è la cosiddetta forma diretta, che
si basa esclusivamente nell’implementare la funzione di risposta all’impulso del filtro: infatti, se
Autore: Sandro Petrizzelli
4
Progetto di filtri IIR (parte I): trasformazione bilineare
indichiamo con v(n) l’ingresso del filtro e con w(n) la corrispondente uscita, sappiamo che essi sono
legati dalla relazione (nel dominio tempo-discreto)
M
w ( n ) = ∑ h ( k ) v( n − k )
k =0
M
Se confrontiamo questa espressione con H1 (z) = ∑ b k z − k , ci accorgiamo facilmente (basta
k =0
trasformare con la trasformata zeta) che i coefficienti bk coincidono con i campioni della risposta
all’impulso del filtro.
Nella figura seguente è riportato lo schema a blocchi rappresentativo di questa relazione:
v(k)
b0
z-1
z-1
z-1
w(k)
+
b1
+
b2
+
bM
+
Realizzazione di un filtro FIR (di lunghezza M) in forma diretta. Le indicazioni di b0,b1,...., bM sui
rami della struttura corrispondono a semplici moltiplicazioni: i moltiplicatori non sono stati riportati per
non far sembrare la struttura più complicata di quanto non sia in realtà
Anche se, come si dirà in seguito, questa struttura è altamente inefficiente, si tratta comunque di
una possibile realizzazione di un filtro FIR.
Una struttura assolutamente analoga si può ottenere anche per un filtro IIR a soli poli, ossia del
tipo
H 2 (z) =
1
N
∑a
k =0
k
z −k
Infatti, tenendo conto che H2(z)=W(z)/V(z), dove W(z) è la trasformata dell’uscita e V(z) quella
dell’ingresso, possiamo scrivere che
W (z)
=
V(z)
1
N
∑a
k =0
k
z −k
N
N
k =0
k =0

→ W (z)∑ a k z − k = V(z) 
→ ∑ a k W (z)z − k = V(z)
5
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Se antitrasformiamo questa relazione (tramite la trasformata zeta inversa), otteniamo
N
∑a
k =0
k
w ( n − k ) = v( n )
Esplicitando il termine della sommatoria che si ottiene per k=0 e lasciandolo da solo al primo
membro, concludiamo che
N
w (n ) = v( n ) − ∑ a k w ( n − k )
k =1
Questa relazione è quella che lega, nel dominio tempo-discreto, i campioni all’ingresso a quelli di
uscita. La corrispondente realizzazione in forma diretta (cioè il corrispondente schema a blocchi) è
evidentemente la seguente:
v(k)
+
1
w(k)
-a1
+
+
z-1
-a2
z-1
+
-aN
z-1
Realizzazione di un filtro IIR in forma diretta. Le indicazioni di dei coefficienti sui rami della struttura
corrispondono ancora una volta a semplici moltiplicazioni
A questo punto, per ottenere il filtro complessivo H(z) dato dal prodotto di H1(z) ed H2(z) ci basta
porre in cascata le due strutture appena descritte, ottenendo quanto riportato nella figura seguente:
Autore: Sandro Petrizzelli
6
Progetto di filtri IIR (parte I): trasformazione bilineare
b0
x(n)
b1
z-1
b2
z-1
bM
z-1
+
1
+
y(n)
-a1
+
+
+
+
z-1
-a2
z-1
+
+
-aN
z-1
Realizzazione di un filtro IIR in forma diretta I
Questa è la cosiddetta realizzazione di un filtro IIR in forma diretta I. Come si nota, questo tipo
di realizzazione richiede M+N+1 moltiplicazioni, M+N addizioni e M+N+1 elementi di ritardo (cioè
celle di memoria).
D’altra parte, avendo a che fare con un sistema lineare, possiamo anche scambiare la posizione dei
due blocchi, disponendo la parte puramente IIR prima della parte puramente FIR. Questo, come
peraltro già visto in precedenza, consente di semplificare la struttura nel caso particolare in cui M=N:
infatti, se questo accade, i due blocchi usano le stesse celle di memoria, per cui possiamo dimezzare
il numero totale di celle di memoria, ottenendo una realizzazione del tipo seguente:
x(n)
+
1
b0
-a1
b1
+
+
y(n)
+
z-1
-a2
+
b2
z-1
+
+
+
-aN
bM
z-1
Realizzazione di un filtro IIR in forma diretta II (per M=N)
7
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Si tratta evidentemente di una struttura più efficiente della precedente, in quanto richiede ancora
M+N+1 moltiplicazioni e M+N somme, ma solo N celle di memoria. Appare evidente che, anche nel
caso in cui M≠N si può ottenere qualcosa di simile: la struttura non sarà più simmetrica (ci saranno
più rami nella parte IIR se N>M oppure più rami nella parte FIR se N<M), ma potremo comunque
usare un numero di elementi di ritardo pari al valore maggiore tra M ed N.
Proprio perché questa realizzazione (chiamata forma diretta II) minimizza il numero di celle di
memoria, si parla di realizzazione canonica di un filtro IIR. E’ bene però precisare che ci sono
altre implementazioni che ottengono la stessa minimizzazione, per cui è bene non incorrere in errore
nell’usare questa terminologia.
Notiamo inoltre che la realizzazione in forma diretta II appena proposta presenta una particolarità:
se invertiamo il senso di percorrenza di tutti i rami e i sensi di
propagazione nelle memorie e se scambiamo i coefficienti ai con i
coefficienti
bi,
otteniamo
nuovamente
la
stessa
funzione
di
trasferimento.
Segnaliamo che ulteriori semplificazioni della struttura si possono ottenere nel caso in cui la parte
FIR del filtro complessivo ha fase zero (simmetria pari dei coefficienti rispetto all’istante 0) oppure
presenta un ritardo per permetterne la realizzazione causale: in questo caso, infatti, la parte FIR ha
notoriamente fase lineare e si può sfruttare, nel modo già visto in precedenza (capitolo sui filtri FIR)
la simmetria dei coefficienti rispetto ad un istante centrale (lunghezza pari) oppure rispetto ad un
campione centrale (lunghezza dispari).
Per concludere, facciamo osservare che le due implementazioni proposte (forma diretta I e forma
diretta II) hanno il grosso svantaggio di essere molto sensibili al valore dei parametri ak e bk: si può
infatti dimostrare3 che, quando N è grande, anche una piccola variazione in
uno qualsiasi dei coefficienti del filtro può provocare una
variazione notevole della posizioni degli zeri e soprattutto dei
poli del sistema; questo non solo comporta una funzione di trasferimento diversa da quella
che si voleva ottenere, ma anche il rischio di rendere instabile il sistema. Questo fatto rende le due
implementazioni tutt’altro che opportune nelle applicazioni pratiche.
PROGETTO DI FILTRI IIR TRAMITE APPROSSIMAZIONE DI DERIVATE
Passiamo adesso più specificatamente ai metodi di progetto dei filtri IIR; in particolare,
riprendiamo il concetto, precedentemente esposto, per cui le principali tecniche di
progetto di filtri IIR consistono nel progettare un filtro analogico
opportuno e nel ricavare da esso il filtro numerico che si vuole
ottenere.
Uno dei modi più semplici per convertire un filtro analogico in uno digitale è quello di
approssimare, nel dominio tempo-discreto, l’equazione differenziale che, nel dominio tempocontinuo, lega ingresso ed uscita del filtro, tramite i parametri caratteristici del filtro stesso4:
N
∑ak
k =0
d k y( t ) M
d k x (t )
=
b
∑
k
dt k
dt k
k =0
3
Un cenno della dimostrazione sarà dato più avanti nel capitolo
4
Si tratta, sostanzialmente, dello stesso approccio che spesso viene seguito per risolvere numericamente, per esempio con un
computer, una equazione differenziale lineare a coefficienti costanti.
Autore: Sandro Petrizzelli
8
Progetto di filtri IIR (parte I): trasformazione bilineare
Questa è una equazione che lega le derivate dell’uscita, da quella di ordine 0 a quella di ordine N,
alle derivate dell’ingresso, dall’ordine 0 all’ordine M. Per effettuare la suddetta approssimazione,
quindi, bisogna trovare il modo di implementare, nel dominio numerico, l’operatore di derivazione.
Essendo la derivata definita rigorosamente come il limite del rapporto incrementale, possiamo
approssimarla proprio con il rapporto incrementale:
dx ( t )
x (n ) − x (n − 1)
←
→
dy t = nT
T
dove T è ovviamente il periodo di campionamento.
Abbiamo cioè usato il rapporto incrementale calcolato nell’istante nT-T/2, tramite il quale
vogliamo approssimare la derivata calcolata in nT.
Nel caso tempo-continuo, la funzione di trasferimento (intesa come trasformata di Laplace) del
derivatore y( t ) = dx ( t ) / dt è notoriamente H(s)=s. In modo analogo, la funzione di sistema del filtro
numerico che approssima il derivatore si ottiene nel modo seguente:
Y ( z ) 1 − z −1 1 z − 1
x (n ) − x (n − 1) trasformata Z
X ( z ) − X ( z ) z −1
=
=
y(n ) =
  
→ Y(z) =

→ H(z) =
X(z)
T
T z
T
T
Abbiamo ottenuto dunque un filtro con un polo nell’origine ed uno zero in +1. Con questo
sistema, noi approssimiamo, nel dominio numerico, un derivatore nel dominio analogico. Sul grado
di questa approssimazione torneremo più avanti. Per il momento, osserviamo solo se, confrontando
1 − z −1
H(s) con H(z), quest’ultima si ottiene da H(s) semplicemente ponendo s =
: infatti
T
s=
1− z −1
T
H(s)  → H(z) =
1 − z −1
T
1 − z −1
costituisce dunque lo strumento con cui possiamo ottenere il derivatore
T
numerico del primo ordine partendo dal derivatore analogico del primo ordine.
Complichiamo adesso la cosa, considerando il derivatore analogico del secondo ordine: il legame
ingresso-uscita del filtro diventa dunque y( t ) = d 2 x ( t ) / dt 2 e ad esso corrisponde una funzione di
trasferimento H(s)=s2. Per implementare il corrispondente filtro numerico, ci basta considerare che la
derivata seconda non è altro che la derivata della derivata prima:
La relazione s =
y( t ) =
d 2 x ( t ) d  dx ( t ) 
= 
dt  dt 
dt 2
Passando in numerico, possiamo allora approssimare sia la prima derivata con un rapporto
incrementale sia la derivata seconda:
9
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
 d  dx ( t )  
 d  x (n ) − x (n − 1)  
d 2 x(t )
=
= 
= 

2

 
T
dt t = nT  dt  dt   t = nT  dt 
 t = nT
 x (n ) − x (n − 1)   x (n − 1) − x (n − 2) 

 − 
 x (n ) − 2 x (n − 1) + 2 x (n − 2)
T
T
=
=
T
T2
Abbiamo qui usato una notazione forse poco rigorosa, ma che rende bene l’idea di ciò che
abbiamo fatto: in pratica, dopo aver approssimato la derivata prima tramite un rapporto incrementale,
ottenendo così una certa funzione tempo-discreta, abbiamo successivamente applicato a quest’ultima
nuovamente la derivazione, ossia nuovamente il rapporto incrementale.
Se ora applichiamo anche a questa funzione la trasformata zeta, otteniamo la corrispondente
funzione di sistema:
y( n ) =
x (n ) − 2x (n − 1) + x (n − 2) trasformata Z
X(z) − 2X(z)z −1 + X(z)z −2
Y
(
z
)





→
=

→
T2
T2
2
Y ( z ) 1 − 2 z −1 + z −2  1 − z −1 
1 z 2 − 2z − 1


=
=
H ( z) =
=
 T 
X( z )
T2
T2
z2


Abbiamo ottenuto un sistema con 2 poli nell’origine e uno zero doppio in +1. Ciò che più
interessa, però, è la corrispondenza tra la funzione H(z) appena ottenuta e la funzione di
trasferimento H(s)=s2 del corrispondente derivatore analogico: ancora una volta, H(z) si ottiene con
1 − z −1
la banale sostituzione s =
.
T
Possiamo perciò concludere come segue: la funzione di sistema in un filtro
digitale IIR, ottenuto come approssimazione delle derivate tramite
le corrispondenti differenze finite, è data da
H (z) = H A (s) s=1−z−1
T
dove ovviamente HA(s) è la funzione di trasferimento del filtro analogico, caratterizzato da una
equazione differenziale nella forma
N
d k y( t ) M
d k x (t )
a
b
=
∑
∑
k
k
dt k
dt k
k =0
k =0
Esempio
Facciamo un esempio concreto dei concetti appena illustrati. Consideriamo un filtro analogico
passa-banda avente la seguente funzione di trasferimento (intesa nel dominio di Laplace):
H A (s) =
Autore: Sandro Petrizzelli
1
(s + 0.1) 2 + 9
10
Progetto di filtri IIR (parte I): trasformazione bilineare
Si tratta di un filtro a soli poli, situati in -1±j3. Modulo e fase della funzione di trasferimento sono
riportati nella figura seguente, in funzione della pulsazione ω e usando una scala logaritmica sulle
ordinate del modulo:
Vogliamo convertire questo filtro in un filtro digitale IIR utilizzando il metodo descritto prima,
1 − z −1
usando cioè la trasformazione s =
.
T
Applicando allora tale trasformazione, otteniamo quanto segue:
H(z) = H A (s) s =1− z −1 =
T
1
2
 1 − z −1


+ 0.1 + 9
 T

=
1
1+ z
−2
− 2z
−1
T2
1 − z −1
+ 0.01 + 0.2
+9
T
Facendo qualche manipolazione algebrica su questa espressione, si trova la funzione di sistema
del filtro numerico. A prescindere da quale sia l’espressione completa, si nota subito la presenza di
poli, da cui si deduce che il filtro è di tipo IIR.
Si nota anche un’altra cosa: il periodo di campionamento T è generico, il che significa che
abbiamo trovato una sorta di soluzione parametrica, nel senso che la H(z) dipende del valore che
assegniamo a T. Ad esempio, si può verificare che, prendendo T≤0.1, i poli del filtro si avvicinano al
cerchio unitario, il che significa che il filtro ottenuto tende a diventare un oscillatore digitale. Se
prendiamo, in particolare, T=0.1, si può verificare che i poli sono
p1 / 2 = 0.91 ± j0.27 = 0.949e ± j16.5°
11
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Problemi con l’approssimazione delle derivate
Il metodo appena descritto è estremamente semplice, ma presenta qualche problema. Vediamo
quale.
Consideriamo per semplicità il derivatore del primo ordine, che abbiamo visto corrispondere, in
numerico, ad un sistema con funzione di sistema
1 − z −1
H(z) =
T
Ad essa corrisponde una funzione di risposta all’impulso di lunghezza 2 (quindi è un filtro FIR),
causale: h(n)=(1,-1). La sequenza h(n) e la mappa poli-zeri della corrispondente trasformata zeta
sono riportate nella figura seguente:
H(z) =
1 − z −1
T
Im
+T
n
T
Re
-1
-T
Possiamo determinare anche la funzione di trasferimento di questo filtro, ponendo semplicemente
z=ejωT nell’espressione di H(z):
1
H(ω) = 1 − e − jωT
T
(
)
Possiamo esplicitare meglio l’esponenziale, al fine di individuare rapidamente modulo e fase di
questa funzione di trasferimento:
1
H(ω) = e
T
− jω
T
2
T
T
− jω
T
T  jω 2
− jω 
−
j
ω
 jω T2

1
e −e 2
 e − e 2  = 2 je 2 

 T
j





T
− jω
 1
 T
2
sin  ω 
 = 2 je
 2
 T

Deduciamo che si tratta di un filtro con modulo ad andamento sinusoidale (di periodo T/2) e fase
rettilinea (di pendenza ωT/2):
1
 T
H(ω) = sin  ω 
T
 2
T
π
 2 − ω 2
H(ω) = 
− π − ω T
 2
2
ω>0
ω<0
I rispettivi andamenti sono rappresentati nella figura seguente in funzione della pulsazione ω (si
ricordi che la frequenza di Nyquist fC/2 corrisponde alla pulsazione ωC=π/T):
Autore: Sandro Petrizzelli
12
Progetto di filtri IIR (parte I): trasformazione bilineare
H(ω)
H(ω)
+
−
π
T
+
π
T
w
−
π
2
π
T
+
−
π
T
w
π
2
Modulo e fase del derivatore numerico del primo ordine ottenuto dal corrispondente derivatore
analogico approssimando la derivata tempo-continua tramite il rapporto incrementale tempo-discreto
Osservando il modulo, notiamo che esso cresce con la frequenza, così come si richiede ad un
derivatore ideale, ma non in modo rettilineo, come accade per un derivatore analogico ideale, le cui
caratteristiche in frequenza (cioè modulo e fase della funzione di trasferimento) sono riportate nella
figura seguente:
|HA(w)|
H A (w )
+
−
π
T
+
π
T
w
−
π
2
π
T
+
−
π
T
w
π
2
Modulo e fase del derivatore analogico ideale, all’interno dell’intervallo non ambiguo (all’interno
del quale si può fare il confronto con l’analogo caso numerico): il modulo cresce linearmente con la
frequenza, mentre la fase è costante e pari a -π/2 per le frequenze negative e +π/2 per quelle positive
Il confronto tra i moduli delle due funzioni di trasferimento mostra che, in numerico, otteniamo
una buona approssimazione del derivatore solo per bassi valori di frequenza, mentre invece i due
andamenti si discostano anche apprezzabilmente per valori di frequenza più alti (sempre compresi
nell’intervallo non ambiguo, l’unico nel quale abbia senso fare un confronto tra mondo analogico e
mondo numerico, data la periodicità di quest’ultimo).
Per quanto riguarda, invece, la fase del derivatore numerico, si tratta di una fase rettilinea
continua a tratti di pendenza -ωT/2: tale caratteristica di fase dipende dal fatto che la h(n) del filtro è
a simmetria dispari, ma rispetto all’istante T/2 anziché rispetto all’istante 0:
13
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
h(n)
asse di simmetria
per h(n)
T
n
0
T/2
Se la funzione di risposta all’impulso fosse simmetrica rispetto all’istante 0, essa sarebbe dispari:
essendo anche reale, la sua trasformata di Fourier avrebbe fase costante (-π/2 per le frequenze negative e
+π/2 per quelle positive). Al contrario, la h(n) da noi considerata (riportata in figura) è traslata di T/2 in
ritardo, da cui appunto il termine di fase e-jωT/2 nella corrispondente funzione di trasferimento
La fase di H(ω) è dunque la composizione della caratteristica di fase di un derivatore puro e di
quella di un ritardatore puro di mezzo passo di campionamento.
Per tornare ad una fase costante in frequenza, potremmo pensare di definire in altro modo il
rapporto incrementale con cui approssimiamo la derivata tempo-continua. Infatti, avendo osservato
che il termine di fase deriva dal mezzo passo di campionamento di ritardo, possiamo pensare di
usare, come operatore numerico, uno che corrisponda ad una h(n) non più causale, ma centrata
nell’origine:
h(n)
T
-T
n
0
In questo caso, la funzione di sistema è completamente diversa rispetto a prima: infatti, essendo la
sequenza h(n)=(1,0,-1), a meno eventualmente del fattore di scala 1/T, otteniamo
=e
H(z) = z − z −1 z
→ = H(ω) = e jωT − e − jωT = 2 jsin (ωT )
jωT
In questo caso, come previsto (dato che h(n) è reale e pari), la fase è perfettamente costante (data
la presenza di j). Tuttavia, cambia radicalmente, rispetto a prima, il modulo, che è ancora
sinusoidale, ma di periodo metà rispetto a prima (frequenza doppia):
Autore: Sandro Petrizzelli
14
Progetto di filtri IIR (parte I): trasformazione bilineare
|H(w)|
H( w )
+
−
π
T
+
π
T
w
−
π
2
π
T
+
−
π
T
w
π
2
E’ evidente che abbiamo ottenuto qualcosa di decisamente inaccettabile: infatti, mentre la fase è
proprio quella desiderata, il modulo è crescente fino a metà della frequenza di Nyquist (π/2T,
corrispondente a fC/4), mentre è decrescente da tale frequenza fino alla frequenza di Nyquist.
D’altra parte, questo tipo di sistema presenta anche un altro inconveniente di fondo: avendo una
risposta all’impulso di tipo non causale, esso non è fisicamente realizzabile.
Osservazione
Supponiamo di voler trovare un filtro numerico che approssimi al meglio possibile un
derivatore analogico, ovviamente nell’intervallo non ambiguo, cioè per frequenze
comprese tra -fC/2 ed fC/2, dove fC è la frequenza di campionamento del mondo tempodiscreto che stiamo considerando.
Un modo possibile di procedere è semplicemente quello di partire dalla funzione di
trasferimento di interesse e ricercare la funzione di risposta all’impulso h(n)
corrispondente. La funzione di trasferimento che ci interessa ottenere deve avere un
modulo fatto nel modo seguente:
|H(f)|
-f C/2
fC/2
f
Se vogliamo partire da un filtro analogico, dal quale poi ricavare il corrispondente filtro
numerico, dobbiamo imporre che la funzione di trasferimento sia quella rappresentata in
figura: quella funzione di trasferimento è ottenibile, in analogico, solo tramite la cascata
di un derivatore ideale (la cui funzione di trasferimento cresce indefinitamente con la
frequenza) e di un filtro passa-basso di banda fC.
Considerando che tali due sistemi sono lineari, possiamo sicuramente scambiarli: si tratta
perciò prima di filtrare passa-basso il segnale e poi di integrarlo nella banda di interesse.
15
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Dal punto di vista dell’individuazione del filtro complessivo, possiamo semplicemente
prendere la risposta all’impulso del filtro passa-basso e calcolarne la derivata: così
facendo, otteniamo la funzione di risposta all’impulso del filtro complessivo.
C’è però da fare una considerazione importante: la funzione di trasferimento del
derivatore è di tipo passa-alto, cioè tale da attenuare le basse frequenze ed esaltare le alte
frequenze; d’altra parte, i segnali che noi trattiamo sono generalmente segnali passa-basso
cui è sovrapposto l’immancabile rumore termico, che è “spalmato” su tutta la banda; di
conseguenza, il filtraggio attraverso un filtro come il derivatore avrà l’effetto di esaltare
le componenti di rumore e questa esaltazione potrebbe anche renderle prevalenti rispetto
al segnale. Questo è ovviamente un effetto da evitare. Non solo, ma l’effetto del filtro
passa-basso posto in cascata è quello di introdurre due brusche discontinuità nella
funzione di trasferimento, in corrispondenza di +fC/2 e -fC/2: anche queste discontinuità
vanno il più possibile ridotte, in modo da far decadere a zero la risposta all’impulso il più
velocemente possibile.
Per andare incontro a tali esigenze, è necessario definire la funzione di trasferimento del
filtro da ottenere imponendo due vincoli:
• il primo è che la funzione di trasferimento (si intende il modulo) cresca con la frequenza
entro un certo intervallo a partire dalla frequenza zero;
• il secondo vincolo è che ci sia un intervallo di frequenza, in prossimità di ±fC/2, in cui la
funzione di trasferimento non presenti spigoli, ma presenti una transizione dolce dai
valori elevati ai valori nulli.
Si tratta in sostanza di imporre un andamento del modulo della funzione di trasferimento
del tipo seguente:
|H(f)|
-fC/2
fC/2
f
A fronte di queste considerazioni, però, se ne può fare anche un’altra:
non è consigliabile progettare operatori di derivazione
eccessivamente complicati, in quanto essi, collegati tra di
loro per ottenere derivate di ordine maggiore di uno,
darebbero alla fine luogo ad un filtro di complessità tale
da essere inutilizzabile.
Autore: Sandro Petrizzelli
16
Progetto di filtri IIR (parte I): trasformazione bilineare
TRASFORMAZIONE BILINEARE
Vista l’inaccettabilità dell’ultima soluzione proposta, torniamo al filtro precedente, il quale
soddisfaceva, almeno per le basse frequenze, la nostra necessità di avere un modulo crescente con la
frequenza:
H(ω)
H(ω)
+
−
π
T
+
π
T
w
−
π
T
π
2
+
−
π
T
w
π
2
Modulo e fase del derivatore numerico del primo ordine ottenuto dal corrispondente derivatore
analogico approssimando la derivata tempo-continua tramite il rapporto incrementale tempo-discreto
Abbiamo visto che il problema essenziale di questo filtro è nella caratteristica di fase, che risente
del fatto che l’asse di simmetria (dispari) della funzione di risposta all’impulso è nell’istante T/2 e
non nell’istante 0:
h(n)
asse di simmetria
per h(n)
T
n
0
T/2
Possiamo inquadrare il problema da un altro punto di vista. Se consideriamo un generico filtro
analogico (inteso come sistema lineare tempo-invariante tempo-continuo) del primo ordine, esso è
caratterizzato da una equazione differenziale lineare, a coefficienti costanti, del tipo
dy( t )
= ay( t ) + bx ( t )
dt
In base a questa equazione, il funzionamento del filtro è tale da confrontare la derivata dell’uscita
all’istante t con il valore sia dell’ingresso sia dell’uscita nello stesso istante t.
17
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Al contrario, nel momento in cui noi approssimiamo, in numerico, l’operatore di derivazione
tramite un rapporto incrementale, subentra una differenza:
y(n ) − y(n − 1)
= a ⋅ y( n ) + b ⋅ x ( n )
T
A causa del ritardo di T/2, il confronto viene effettuato con la derivata relativa a mezzo passo di
campionamento precedente (nT-T/2), il che significa che non c’è più coincidenza temporale tra la
derivata dell’uscita da una parte e l’uscita e l’ingresso dell’altra (in pratica, uscita ed ingresso sono
relativi a T/2 secondi dopo rispetto alla derivata).
Questa interpretazione suggerisce un modo di aggirare parzialmente il problema: possiamo
provare ad interpolare, nel modo più indolore possibile, i valori della sequenza x(n) e della sequenza
y(n) nei punti a metà tra ciascuna coppia di istanti di campionamento successivi. Per semplicità,
possiamo scegliere una comoda interpolazione lineare: invece di confrontare il rapporto
incrementale con i valori y(n) ed x(n), lo confrontiamo con i valori interpolati delle due sequenze
negli stessi istanti. In altre parole, consideriamo
y(n ) − y(n − 1) a
b
= (y(n ) + y(n − 1) ) + (x (n ) + x (n − 1) )
T
2
2
Andiamo allora a calcolare la trasformata zeta di entrambi i membri di questa equazione, al fine di
giungere alla funzione di sistema del filtro: si trova facilmente che
1 − z −1 a
b
Y(z)
= Y(z) 1 + z −1 + X(z) 1 + z −1
T
2
2
(
Al fine di fare un confronto con la relazione
)
(
)
dy( t )
= ay( t ) + bx ( t ) , possiamo riscrivere l’ultima
dt
relazione nella forma seguente:
2 1 − z −1
Y(z) = aY(z) + bX(z)
T 1 + z −1
Il confronto con il corrispondente sistema analogico si può fare semplicemente applicando la
dy( t )
trasformata di Laplace all’equazione
= ay( t ) + bx ( t ) : si ottiene evidentemente
dt
s ⋅ Y(s) = aY(s) + bX(s)
Se allora confrontiamo le ultime due relazioni, notiamo ancora una volta che esiste un modo
banale di passare da una all’altra: basta prendere l’espressione del dominio di Laplace e porre
2 1 − z −1
s=
T 1 + z −1
Autore: Sandro Petrizzelli
18
Progetto di filtri IIR (parte I): trasformazione bilineare
La corrispondenza così ottenuta (tra dominio di Laplace e dominio della trasformata zeta) prende
il nome di trasformazione bilineare:
s=
2 1− z −1
T 1+ z −1
s ⋅ Y(s) = aY(s) + bX(s)  →
2 1 − z −1
Y( z) = aY(z) + bX(z)
T 1 + z −1
Dettagli analitici
L’espressione trovata poco fa per la trasformazione bilineare può essere ottenuta con maggiore
rigore matematico. Vediamo come.
b
Consideriamo ancora, per semplicità, un filtro con funzione di trasferimento H(s) =
, ossia
s−a
rappresentato dall’equazione differenziale
dy( t )
= ay( t ) + bx ( t )
dt
Al posto di usare una differenza finita (cioè il rapporto incrementale) per approssimare quella
derivata, seguiamo un procedimento diverso. Supponiamo di integrare quella derivata:
dy (τ)
dτ + y( t 0 )
d
τ
t0
t
y( t ) = ∫
Adesso approssimiamo l’integrale tramite la nota formula trapezoidale:
y( t ) =
t − t0
2
 dy ( t )
dy ( t ) 
+

 + y( t 0 )
dτ t 0 
 dτ t
Per passare nel dominio discreto, poniamo t=nT e t0=(n-1)T:
y( n ) =

T  dy ( t )
dy ( t )
+

 + y(n − 1)
2  dτ t = nT
dτ ( n −1) T 
Analoga sostituzione possiamo effettuare nell’equazione
dy( t )
= ay( t ) + bx ( t ) :
dt
dy( t )
= ay(n ) + bx (n )
dt t = nT
Possiamo allora usare l’espressione appena ottenuta per
dy( t )
e sostituirla nell’equazione
dt t = nT
ricavata prima: otteniamo
y( n ) =
T
[(ay(n) + bx(n )) + (ay(n − 1) + bx (n − 1))] + y(n − 1)
2
19
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Adesso separiamo i termini dipendenti dall’uscita da quelli dipendenti dall’ingresso:
T
T
T


1 − a  y(n ) − 1 + a  y(n − 1) = b (x (n ) + x (n − 1) )
2
2
2


Possiamo applicare la trasformata zeta ad entrambi i membri:
(
)
T
T  −1
T


−1
1 − a  Y ( z ) − 1 + a  z Y ( z ) = b 1 + z X ( z )
2
2
2




Facendo adesso il rapporto tra Y(z) ed X(z), otteniamo la funzione di sistema del filtro: con le
opportune manipolazione algebriche si ottiene
(
)
T
1 + z −1
bT 1 + z −1
b
Y( z )
2
H(z) =
=
= ... =
=
−1
T  −1 (2 − aT ) − (2 + aT )z
T 
X( z ) 
2  1 − z −1 
−a

1 − a  −  1 + a  z
2
2 

T  1 + z −1 
b
(
)
Se adesso confrontiamo questa funzione con la funzione di trasferimento H(s) =
b
del filtro
s−a
analogico da cui siamo partiti, la corrispondenza è evidente: basta prendere
s=
2 1 − z −1
T 1 + z −1
Questa sostituzione consente di passare dal filtro analogico al corrispondente filtro numerico,
ossia anche di mappare il piano-s (trasformata di Laplace, caso tempo-continuo) nel piano-z
(trasformata zeta, caso tempo-discreto).
Questo ragionamento matematico è stato condotto per un filtro del primo ordine, ma si può
facilmente verificare che si applica, in generale, ad un filtro di ordine N qualsiasi, ossia un filtro
descritto da una equazione lineare di ordine N.
Caratteristiche della trasformazione bilineare
A questo punto, il passo successivo è quello di indagare sulle caratteristiche di questa
trasformazione. Infatti, da essa ci aspettiamo due caratteristiche fondamentali, precedentemente
citate:
∗ la prima è che l’asse immaginario nel piano-s venga mappato nel cerchio unitario del pianoz;
∗ la seconda è che il semipiano sinistro del piano-s venga mappato nei punti all’interno del
cerchio unitario del piano-z, al fine di garantire che un filtro stabile nel dominio analogico
corrisponda ad un filtro stabile anche nel dominio numerico.
Vediamo allora se questi requisiti sono soddisfatti.
Autore: Sandro Petrizzelli
20
Progetto di filtri IIR (parte I): trasformazione bilineare
Cominciamo col porre genericamente z=rejω, in modo da individuare un punto nel piano z tramite
modulo (=r) e fase (=ω)5: sostituendo nella trasformazione bilineare e facendo qualche
manipolazione algebrica, otteniamo
s=
2 1 − z −1 2 z − 1 2 re jω − 1 2 r (cos ω + jsinω) − 1 2 (r ⋅ cos ω − 1) + jr ⋅ sinω
=
=
=
=
=
T 1 + z −1 T z + 1 T re jω + 1 T r (cos ω + jsinω) + 1 T (r ⋅ cos ω + 1) + jr ⋅ sinω

2r ⋅ sinω
2
r 2 −1
2 (r ⋅ cos ω − 1) + jr ⋅ sinω (r ⋅ cos ω + 1) − jr ⋅ sinω

=
⋅
= ... = 
+j
2
2
T  1 + r + 2r ⋅ cos ω 1 + r + 2r ⋅ cos ω 
T (r ⋅ cos ω + 1) + jr ⋅ sinω (r ⋅ cos ω + 1) − jr ⋅ sinω
Se inoltre scomponiamo s in termini di parte reale e parte immaginaria (s=σ+jΩ), possiamo
uguagliare le parti reali e le parti immaginarie dei due membri, ottenendo
2
r 2 −1
⋅
T 1 + r 2 + 2r ⋅ cos ω
2
2r ⋅ sinω
Ω= ⋅
T 1 + r 2 + 2r ⋅ cos ω
σ=
Queste due relazioni ci consentono di appurare quanto da noi ricercato:
• consideriamo il caso di un punto che, nel piano-z, si trovi all’interno del cerchio unitario: ciò
significa che r<1; osservando l’espressione di σ, si nota che, se r<1, risulta σ<0, ossia un punto
che, nel piano-s, si trova nel semipiano sinistro;
• in modo del tutto analogo, è immediato verificare che, se r>1, allora risulta σ>0: ciò significa
che ad un punto all’esterno del cerchio unitario corrisponde un punto nel semipiano destro del
piano-s;
• ovviamente, per r=1 (punti sul cerchio unitario), si ottiene σ=0 (punti sull’asse immaginario).
Quindi, abbiamo ottenuto esattamente la mappatura che ci interessava, sia in termini di passaggio
dall’asse immaginario al cerchio unitario sia anche in termini di stabilità.
Possiamo anche ricavare qualcosa in più: infatti, se consideriamo il caso in cui r=1 (quindi σ=0),
otteniamo anche che
2
2sinω
2 sinω
2
ω
Ω= ⋅
= ⋅
= ⋅ tan
T 2 + 2 cos ω T 1 + cos ω T
2
Invertendo questa relazione, otteniamo
ω = 2arc tan
ΩT
2
Questa relazione, così come la precedente, evidenzia il legame esplicito tra la pulsazione nel
piano-s (la cosiddetta pulsazione analogica) e la pulsazione nel piano-z (pulsazione digitale).
Indicando tali pulsazioni rispettivamente con ωA ed ωD, scriviamo dunque che
5
Da notare che, così facendo, stiamo attribuendo ad ω il significato della pulsazione 2πf normalizzata alla frequenza di
campionamento. Se supponiamo unitaria tale frequenza, allora pulsazione e pulsazione normalizzata sono la stessa cosa.
21
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
ωD = 2arc tan
ωA =
ωA T
2
ω
2
tan D
T
2
Graficamente, queste due relazioni corrispondono a quanto riportato nella figura seguente:
Notiamo che la mappatura da asse immaginario (piano-s) a cerchio unitario (piano-z) deve avere
un altro requisito: mentre sull’asse immaginario ci possiamo muovere indefinitamente da -∞ a +∞,
sul cerchio unitario il movimento non può che essere periodico, per cui la mappatura deve essere
tale da dare una relazione tra una variabile che varia da -∞ a +∞ ed una variabile periodica. In effetti,
questo accade, perché è noto che la funzione Tangente ha una periodicità di π.
Un’altra osservazione riguarda l’andamento quasi rettilineo che la curva diagrammata nell’ultima
figura ha per valori piccoli della pulsazione analogica ωA (riportata in ascisse): in effetti, la tangente
è la funzione trigonometrica che meglio approssima, intorno all’origine, un andamento rettilineo.
Quindi, nell’intorno della pulsazione zero, le due pulsazioni ωA ed ωD
variano praticamente di pari passo, il che corrisponde a dire che la
funzione di trasferimento analogica e quella digitale avranno, in
tale intorno, andamento molto simile.
Se invece cominciamo ad aumentare la pulsazione analogica, notiamo che i corrispondenti valori
di ωD non aumentano indefinitamente, in quanto rimangono comunque all’interno dell’intervallo [π,+π] (la relazione è di tipo spiccatamente non-lineare). Abbiamo cioè una compressione
dei valori di ωA in un intervallo di valori di ωD sempre più
piccolo. Questa compressione corrisponde evidentemente ad una deformazione della funzione di
trasferimento del filtro digitale rispetto a quella del filtro analogico, ma questo fatto non rappresenta
un grosso problema: infatti, conoscendo esattamente la relazione tra ωD ed ωA, automaticamente
conosciamo perfettamente l’entità della suddetta deformazione, per cui possiamo tenerne conto.
Come ne teniamo conto? Il discorso è semplice e sarà ripreso anche in seguito: in fase di progetto del
filtro analogico, provvederemo a pre-distorcere opportunamente la sua funzione di trasferimento, in
modo tale che il corrispondente filtro digitale assuma l’andamento desiderato (cioè sostanzialmente
quello che rientra nella maschera prefissata e approssima al meglio ciò che vogliamo ottenere).
Autore: Sandro Petrizzelli
22
Progetto di filtri IIR (parte I): trasformazione bilineare
Per concludere, notiamo anche che la trasformazione bilineare mappa il punto s=∞ del dominio di
Laplace nel punto z=-1 del dominio della trasformata zeta. Un caso evidente è proprio quello del
filtro passa-basso analogico considerato prima: infatti, abbiamo visto che tale filtro era caratterizzato
b
dalla funzione di trasferimento H(s) =
, cui corrisponde un filtro numerico che abbiamo visto
s−a
essere
H(z) =
b
2  1 − z −1 
−a

T  1 + z −1 
Questo filtro ha evidentemente uno zero in z=-1
Esempio
Usiamo ancora una volta un esempio concreto per capire i discorsi fatti. Consideriamo perciò un
filtro analogico con la seguente funzione di trasferimento:
H A (s) =
s + 0.1
(s + 0.1)2 + 16
Si tratta di un filtro del 2° ordine (il grado del numeratore è 2), con poli situati in -0.1±j4. La
pulsazione di risonanza è ωA,n=4. Modulo e fase della funzione di trasferimento sono riportati nella
figura seguente, in funzione della pulsazione ω e usando una scala logaritmica sulle ordinate:
23
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Vogliamo convertire questo filtro in un filtro digitale IIR tramite l’applicazione della
trasformazione bilineare. In particolare, vogliamo fare in modo che tale filtro digitale abbia una
pulsazione di risonanza pari a π/2.
Circa quest’ultimo requisito, è subito ovvio che l’unico grado di libertà a nostra disposizione è sul
valore da attribuire al periodo di campionamento T. Possiamo allora fissare T proprio imponendo il
vincolo sulla risonanza: infatti, sappiamo che la mappatura delle pulsazioni è retta dall’equazione
ωD = 2arc tan
ωA T
2
Di conseguenza, ci basta imporre che ωD=π/2 in corrispondenza di ωA=4: si trova immediatamente
che deve essere T=1/2.
Premesso questo, andiamo ad applicare la trasformazione bilineare, che per T=1/2 sarà
 2  1 − z −1 
 1 − z −1 



=
4
s =  
−1 
−1 
1+ z 
 T  1 + z  T =1 / 2
Sostituendo nell’espressione di HA(s), otteniamo
H ( z) =
 1 − z −1 
 + 0.1
4
−1 
1+ z 
2
  1 − z −1 

 4
 + 0.1 + 16
−
1

 1+ z


 

= ... =
0.128 + 0.006z −1 − 0.122z − 2
1 + 0.0006z −1 + 0.975z − 2
Se accettiamo, per semplicità, solo un progetto approssimato (vedremo che non sempre possiamo
farlo), possiamo approssimare a zero il coefficiente del termine z-1 a denominatore, per cui
concludiamo che il filtro digitale è dato approssimativamente da
H(z) ≅
0.128 + 0.006z −1 − 0.122z −2 0.128z 2 + 0.006z − 0.122
=
1 + 0.975z − 2
z 2 + 0.975
Il filtro ottenuto presenta dunque due poli e due zeri:
poli 
→ p1 / 2 = 0.987e ± jπ / 2
− 1
zeri 
→ z1 / 2 = 
0.95
Abbiamo quindi ottenuto un filtro IIR a due poli con risonanza nei pressi di ωD=π/2.
Esempio
Il precedente esempio è un classico caso in cui partiamo da un filtro analogico e passiamo ad
ottenere il corrispondente filtro numerico, imponendo su di esso una precisa condizione (in quel caso
la risonanza ad una determinata frequenza) da ottenere fissando opportunamente T. In generale, il
progetto dei filtri digitali, basato su trasformazione bilineare, procede nel modo seguente:
Autore: Sandro Petrizzelli
24
Progetto di filtri IIR (parte I): trasformazione bilineare
• il punto di partenza sono le specifiche in frequenza sul filtro digitale;
• queste specifiche vengono convertire nel dominio analogico come indicato dalla relazione
ω T
ωD = 2arc tan A che lega le pulsazioni nei due domini;
2
• viene quindi progettato il filtro analogico che risponde a queste specifiche;
• infine, si usa la trasformazione bilineare per ottenere il corrispondente filtro numerico, cioè
l’esito finale del progetto.
Con questo metodo, il parametro T è trasparente, nel senso che può essergli attribuito un valore
del tutto arbitrario: tipicamente, per comodità si pone T=1. L’esempio che sviluppiamo adesso
chiarisce quest’ultimo concetto.
Vogliamo progettare un filtro digitale passa-basso, a singolo polo, con una pulsazione di taglio (o
pulsazione a -3dB) in corrispondenza di 0.2π. Per ottenere questo, vogliamo usare la
trasformazione bilineare applicata al seguente filtro analogico:
H A (s) =
ω A ,C
s + ω A ,C
dove ωA ,C è la pulsazione a -3dB del filtro stesso.
Per prima cosa, così come abbiamo fatto nell’esempio precedente, leghiamo la pulsazione di
taglio del filtro analogico a quella desiderata per il filtro numerico:
ωD ,C = 2arc tan
ω A ,C T
2
Imponendo ωD,C=0.2π e invertendo quella relazione, si ottiene banalmente ωA ,C =
0.65
.
T
Sostituendo allora nella funzione di trasferimento del filtro analogico, otteniamo
H A (s) =
0.65 / T
s + 0.65 / T
Questa funzione rappresenta il nostro progetto del filtro analogico: lo otterremo, ad esempio, con
un banale circuito RC serie, alimentato in tensione e con uscita prelevata sul condensatore:
R
+
+
C
x(t)
-
y(t)
-
Adesso dobbiamo passare al corrispondente filtro numerico, applicando semplicemente la
trasformazione bilineare: otteniamo
25
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
0.65
0.65
0.245(1 + z −1 )
T
H(z) =
=
=
1 − 0.509z −1
 1 − z −1 
2  1 − z −1  0.65




2
0
.
65
+
+
 1 + z −1 
T  1 + z −1 
T


Come previsto, il parametro T è scomparso, il che significa che non abbiamo alcun vincolo su di
esso. Poniamo per semplicità T=1 sec.
Possiamo anche verificare la risposta in frequenza di questo filtro, per accertarci che rispetti le
specifiche di progetto. Ponendo z=ejωT (che diventa ejω avendo posto T=1), otteniamo
H(ω) =
0.245(1 + e − jω )
1 − 0.509e − jω
Per verificare se la pulsazione a -3dB è quella desiderata, ci basta calcolare il guadagno in
corrispondenza di tale frequenza e confrontarlo con quello in continua (ω=0):
ω = 0.2π 
→ H(0.2π) = ... = 0.707
ω=0
→ H(0 = ... = 1
Il risultato ottenuto è esattamente quello desiderato.
Esempio
Facciamo un altro esempio, analogo al precedente ma ancora più dettagliato.
Vogliamo definire il filtro numerico corrispondente ad un filtro analogico passa-basso a singolo
polo, ad esempio del tipo seguente:
R
i(t)
+
+
C
x(t)
-
y(t)
-
La funzione di trasferimento di questo filtro si ricava banalmente applicando il partitore di
tensione direttamente nel dominio di Laplace: si ottiene
H A (s) =
Y(s)
1 / sC
=
X(s) R + 1 / sC
Applicando la trasformazione bilineare, per un passo di campionamento T generico, otteniamo
Autore: Sandro Petrizzelli
26
Progetto di filtri IIR (parte I): trasformazione bilineare
1
2  1 − z −1 

C 
T  1 + z −1 
1 + z −1
H(z) =
= .... =
1
 −1
 2
  2
R+
1 + RC  + 1 − RC z
−1
2 1− z 

 T
  T

C 
−1 
T 1+ z 
1 − 2RC / T
< 1.
1 + 2RC / T
Proviamo a capire quale sia la funzione di risposta all’impulso del filtro. Possiamo per esempio
scomporre il filtro nella cascata di due filtri, così fatti:
E’ questo un filtro che presenta uno zero in -1 ed un polo in p =
 H 1 ( z ) = 1 + z −1


1
H ( z ) = H1 ( z ) ⋅ H 2 ( z ) 
→H 2 (z) =
 −1
 2
  2

1 + RC  + 1 − RC z


 T
  T
Il filtro indicato con H1(z) è un semplice filtro FIR (avente uno zero in -1 ed un polo nell’origine),
la cui funzione di risposta all’impulso è semplicemente
1
1
n
Conosciamo bene le caratteristiche della funzione di trasferimento di questo filtro.
In cascata a questo filtro, dobbiamo porre il filtro H2(z), che è un filtro IIR, avente uno zero
1 − 2RC / T
nell’origine ed il polo in p =
< 1 . Questo polo è all’interno del cerchio unitario, il che
1 + 2RC / T
significa che H2(z), e quindi anche H(z), è stabile. Non poteva essere altrimenti: siamo infatti partiti
da un filtro analogico stabile, in quanto il suo polo è -1/RC, per cui anche il corrispondente filtro
numerico, per le proprietà della trasformazione bilineare, doveva necessariamente essere stabile.
Si può ricavare agevolmente che la funzione di risposta all’impulso corrispondente H2(z) è la
seguente (di lunghezza infinita):
n
 1 − 2RC / T  
n
h 2 (n ) = p = 
 
 1 + 2RC / T  
{ }
Note, dunque, h1(n) ed h2(n), ci basta convolverle per ottenere la risposta all’impulso h(n) del
filtro complessivo. Si trova una risposta all’impulso del tipo seguente:
.................
n
27
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Considerazioni generali sul progetto tramite trasformazione bilineare
In generale, sappiamo che le specifiche di progetto, per un filtro digitale così come per uno
analogico, non sono in termini di andamento esatto della funzione di trasferimento, quanto in termini
di maschera all’interno della quale il modulo di tale funzione di trasferimento deve rientrare. Ad
esempio, nel caso di un filtro passa-basso, la maschera è del tipo seguente:
banda
passante
banda di
transizione
banda
arrestata
fC/2
f (Hz)
Classica maschera per un filtro passa-basso: di particolare importanza sono le frequenze fS ed fD (>fS)
che delimitano la banda di transizione. La maschera è ovviamente riferita all’intervallo [0,fC/2], in
quanto il mondo tempo-discreto si ripete periodicamente all’esterno di tale intervallo
Di conseguenza, il problema principale che dobbiamo porci, in fase di progetto, è il seguente:
trovare il prototipo di filtro analogico che, trasformato in digitale tramite la trasformazione
bilineare, produce un filtro numerico che rientra nella maschera assegnata.
Quando parliamo di prototipo di filtro analogico ci riferiamo sostanzialmente al fatto che anche in
analogico non interessa un filtro preciso, ma una maschera: il filtro analogico deve rientrare in tale
maschera e, una volta convertito tramite la trasformazione bilineare, deve dare un filtro digitale che a
sua volta rientri nella propria maschera.
Quindi, il problema si riconduce a determinare la maschera analogica
corrispondente
alla
maschera
tempo-discreta
che
ci
è
stata
assegnata.
Ciò che consente il passaggio dall’una all’altra maschera è ancora la formula che lega le
pulsazioni nei due domini, analogico e digitale:
ω T
ωD = 2arc tan A
2
Tramite questa relazione, infatti, possiamo ricavare le frequenze delimitatrici della banda di
transizione del filtro analogico note che siano quelle del filtro digitale da realizzare.
Quindi, il metodo di progetto può essere così sintetizzato:
• il punto di partenza sono le specifiche in frequenza sul filtro digitale, espresse in termini di
maschera da rispettare, ossia sostanzialmente di massimo ripple in banda passante, massimo
ripple in banda arrestata, minima attenuazione in banda arrestata e frequenze delimitatrici della
banda di transizione;
Autore: Sandro Petrizzelli
28
Progetto di filtri IIR (parte I): trasformazione bilineare
• queste
specifiche vengono convertire nel dominio analogico tramite la relazione
ω T
ωD = 2arc tan A : si ottiene perciò la maschera analogica equivalente a quella digitale di
2
partenza;
• viene quindi progettato il filtro analogico che rientra nella maschera;
• infine, si usa la trasformazione bilineare per ottenere il corrispondente filtro numerico.
ωA T
tiene intrinsecamente conto
2
della deformazione subita dalle frequenze analogiche nel passaggio a
quelle digitali: ciò significa, sostanzialmente, che la maschera analogica contiene già di per
sé le pre-distorsione di cui abbiamo parlato in precedenza.
Infine, c’è da considerare l’ottimizzazione per il progetto di filtri IIR, per la quale vale
sostanzialmente quanto già detto per i filtri FIR: una volta definito un parametro (ad esempio il
classico errore quadratico medio) che sia indice della bontà dell’approssimazione che otteniamo, si
può mettere in piedi una procedura di ottimizzazione che, agendo sui coefficienti del
numeratore e del denominatore della H(z), venga iterata fin quando, con la complessità assegnata, si
ottiene il minimo scostamento rispetto alla funzione di trasferimento desiderata.
Alla fine, si ottiene dunque un filtro H(z) descritto in termini di polinomio in z.
E’ ovvio che la relazione
ωD = 2arc tan
PROBLEMI LEGATI ALLA PRECISIONE DI CALCOLO DEI COEFFICIENTI
Abbiamo detto che, al termine del progetto di un filtro (sia esso FIR o IIR), otteniamo il filtro
stesso in termini di funzione di sistema H(z), ossia sostanzialmente in termini di polinomio in z (o in
z-1, è la stessa cosa):
{h (n )} → H(z) = ∑ h (n )z − n
n
I coefficienti di questo polinomio sono dei numeri reali: essi infatti corrispondono esattamente ai
campioni della risposta all’impulso h(n) del sistema stesso, che deve essere reale.
Necessariamente, la precisione con cui descriviamo questi coefficienti è limitata, sia se ci
riferiamo ad una simulazione al computer (Matlab) sia se ci riferiamo all’implementazione pratica
del filtro: in ogni caso, infatti, dovremo usare dei moltiplicatori binari con un numero finito di cifre.
Nel caso dei filtri FIR, la limitata precisione non rappresenta un problema particolarmente grave,
in quanto le funzioni di trasferimento presentano solo poli nell’origine (che sono fissi) e zeri, per cui
non si hanno problemi di stabilità: in generale, nel caso dei filtri FIR, un eventuale errore di
rappresentazione di uno o più coefficienti determina una diversa posizione di uno o più zeri; dato che
tali zeri influiscono solo sulle frequenze alle quali il filtro deve attenuare maggiormente il segnale in
ingresso, deduciamo che errori sugli zeri possono influenzare tutt’al più
il comportamento nella banda arrestata, dove appunto l’attenuazione
è massima.
Se, invece, passiamo ai filtri IIR, allora le cose si complicano, a causa della presenza dei poli:
−1
H(z ) =
(
a 0 ∏ 1 − z k z −1
∏ (1 − p
k
k
z −1
)
)
k
29
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Cerchiamo allora di capire, per un filtro di questo tipo, quale sia la funzione svolta dagli zeri e
quale quella svolta dai poli.
Abbiamo già visto che un filtro di questo tipo si può scomporre nella cascata di un filtro tutti zeri
(FIR) e di un filtro tutti poli (IIR):
(
)
H(z −1 ) = H1 (z −1 ) ⋅ H 2 (z −1 ) = a 0 ∏ 1 − z k z −1 ⋅
k
1
∏ 1 − p k z −1
(
)
k
Il filtro FIR, avendo solo zeri, presenta anche una batteria di poli situati nell’origine, per cui ha
una mappa poli-zeri del tipo seguente:
Possiamo allora visualizzare la situazione come se l’andamento della funzione di trasferimento sia
rappresentato da un “tendone da circo”: con questa visualizzazione, gli zeri del filtro possono essere
visti come dei “chiodi” che mantengono il tendone ben fissato in corrispondenza dei vari punti del
cerchio unitario6.
Questo è un modo semplice di visualizzare il fatto che gli zeri sul cerchio unitario
impongono
attenuazione
infinita,
ovvero
stabiliscono
a
quali
frequenze il modulo della funzione di trasferimento deve essere
nullo. Tanto per richiamare un esempio concreto, ricordiamo il comportamento di un filtro
NOTCH, che ha una coppia di zeri complessi coniugati posizionati sul cerchio unitario: se, ad
esempio, i due zeri sono in ±j, allora il filtro è tale da azzerare un’eventuale sinusoide, a frequenza
fC/4, mandata in ingresso al filtro.
6
Non è detto che gli zeri debbano necessariamente trovarsi sul cerchio unitario. Dovunque essi si trovino, il significato è sempre lo
stesso.
Autore: Sandro Petrizzelli
30
Progetto di filtri IIR (parte I): trasformazione bilineare
Im
+j
1
1
0
T
2T
Re
n
-j
Risposta all’impulso (lunga 3) e mappa poli-zeri della corrispondente funzione di sistema, per un filtro
NOTCH che azzeri un’eventuale ingresso sinusoidale (ovviamente campionato) a frequenza fC/4. Se lo
zero si trova sul cerchio unitario, allora esso impone una attenuazione infinita; al contrario, se esso non
si trova sul cerchio unitario, ma ha la stessa fase, allora l’attenuazione è finita, tanto maggiore quanto
più lo zero è vicino al cerchio unitario (r→1)
Questo per quanto riguarda, dunque, la parte relativa agli zeri. I poli si comportano in
modo sostanzialmente duale, in quanto corrispondono a modulo
estremamente
grande
(al
limite
infinito)
della
funzione
di
trasferimento. Essi quindi possono essere usati per tirar su il modulo della funzione di
trasferimento nella banda desiderata. Di conseguenza, andranno sistemati in modo da corrispondere a
frequenze nella banda passante del filtro.
Riprendendo la schematizzazione di prima del “tendone”, mentre gli zeri sono dei “chiodi”, i poli
sono una specie di “pali”, proprio perché servono a tirar su la funzione di trasferimento.
Schematizzazione dei poli e degli zeri
Per comprendere ancora meglio l’analogia tra poli e zeri da un parte e, rispettivamente,
pali e chiodi dall’altra, possiamo far riferimento ad un caso concreto. Consideriamo
infatti la seguente funzione di sistema:
1 − 2z −1
H ( z) =
1 − 32z −5
Una funzione di questo tipo è stata già analizzata in precedenza: è facile verificare che
essa presenta 4 poli disposti, in posizioni a due a due simmetriche rispetto all’origine del
piano-z, sul cerchio di raggio 2, e presenta inoltre uno zero (di molteplicità 4)
nell’origine. E’ possibile usare una simulazione al calcolatore (Matlab) con la quale
diagrammare l’andamento del modulo di H(z) al variare di z sul piano-z. Usando una
rappresentazione tri-dimensionale (che cioè appunto riporti |H(z)| per un numero
prefissato di punti del piano-z), si ottiene la seguente figura:
31
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Si sono considerati, in questo caso, 1600 punti, ottenuti considerando 40 valori sull’asse
reale e altrettanti sull’asse immaginario. Come si nota, i poli portano su il modulo di
H(z), mentre lo zero nell’origine tiene tale modulo “ancorato” in z=0.
Una attenzione particolare bisogna porre per l’implementazione di coppie di poli e/o di zeri
complessi coniugati, per ottenere i quali sappiamo di dover usare celle elementari del secondo
ordine (ogni cella è la cascata di due celle elementari del primo ordine, ciascuna corrispondente ad
un polo o ad uno zero complesso):
• per realizzare una coppia di zeri complessi coniugati, dovremo considerare una cella
elementare del tipo
(
)(
)
(
)
H i (z −1 ) = 1 + re − jθ z −1 1 + re jθ z −1 = 1 + r e jθ + e − jθ z −1 + r 2 z −2 = 1 + 2r cos θ ⋅ z −1 + r 2 z −2
Questa cella (che presenta due poli nell’origine e due zeri complessi coniugati z=re±jθ) ha
evidentemente una funzione di risposta all’impulso lunga 3 campioni:
2r cos(θ z )
1
r2
0
2T
T
n
• per realizzare una coppia di poli complessi coniugati, dovremo invece considerare una cella
elementare del tipo
1
1
1
H(z −1 ) =
⋅
= ... =
jθ −1
− jθ −1
1 − re z 1 − re z
1 − 2r cos θ ⋅ z −1 + r 2 z −2
Autore: Sandro Petrizzelli
32
Progetto di filtri IIR (parte I): trasformazione bilineare
Otteniamo in questo caso i due poli complessi coniugati p=re±jθ ed uno zero doppio
nell’origine, cioè la funzione di trasferimento reciproca della precedente.
In questo caso, ci riagganciamo al discorso da cui eravamo partiti, in quanto entra in gioco la
precisione di calcolo. In particolare, i problemi vengono dal coefficiente intermedio cosθ, che va
necessariamente approssimato. Possiamo allora renderci conto del fatto che tale approssimazione non
dà grossi problemi nel caso degli zeri, mentre può darne nel caso dei poli:
• consideriamo la coppia di zeri complessi: supponiamo che tali zeri debbano trovarsi sul cerchio
unitario, il che significa porre r=1; una eventuale variazione del coefficiente cosθ corrisponde
semplicemente ad una variazione angolare dei due zeri, che continuano a rimanere sul cerchio
unitario. Questo significa che un eventuale arrotondamento dei coefficienti
relativi agli zeri può avere come conseguenza semplicemente lo
spostamento delle frequenze di attenuazione infinita rispetto a
quelle teoriche calcolate; l’effetto in banda passante di questo spostamento è solo
marginale;
• passiamo invece alla coppia di poli complessi: in questo caso, dato che noi vogliamo solo filtri
stabili, i due poli si trovano all’interno del cerchio unitario, per cui r<1; se, allora,
commettiamo un errore sul coefficiente intermedio (ad esempio tramite una descrizione
grossolana), non cambia solo la fase dei due poli, ma anche il modulo, in quanto dobbiamo
approssimare non più cosθ, ma rcosθ. Questo può non essere tollerabile: infatti, se abbiamo
progettato un filtro molto selettivo, quindi con andamento molto appuntito in un piccolo
intervallo di frequenze, per ottenere l’andamento desiderato abbiamo bisogno di piazzare un
polo molto vicino al cerchio unitario; dato, però, che anche piccole imprecisioni di calcolo
possono spostare il polo rispetto alla posizione desiderata, la situazione diventa critica: non
solo perché potremmo avere un comportamento diverso da quello previsto, ma anche perché, se
il polo dovesse finire al di fuori del cerchio unitario, il sistema diventerebbe instabile.
Possiamo perciò concludere che, nel caso dei filtri IIR, la scelta sulla
precisione da adottare per il calcolo dei coefficienti è un problema
critico.
Possiamo anche condurre una minima analisi matematica della questione7. Consideriamo infatti il
denominatore della funzione di sistema del filtro considerato:
(
)
N
D(z) = ∏ 1 − p k z −1 = ∑ a i z −i
k
i =0
Possiamo esprimere tale denominatore sia in termini dei produttoria di binomi, in modo da
evidenziare le sue radici (cioè i poli del filtro), sia in termini di polinomio in z-1, in modo da
evidenziare i coefficienti del filtro stesso.
Consideriamo, in particolare, questa seconda rappresentazione e valutiamo la cosiddetta
sensitività, ossia la dipendenza dei poli dalle variazioni dei coefficienti del filtro. Sostanzialmente,
∂p k
quello che ci interessa calcolare è la quantità
, cioè la dipendenza della posizione del polo k∂a i
simo dal coefficiente i-simo del polinomio.
7
Si veda, in proposito, la dimostrazione a pag. 138 del Rocca
33
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Per fare questa valutazione, cominciamo a calcolare la derivata del polinomio D(z) rispetto al
generico coefficiente ai del polinomio stesso: otteniamo
∂D(z)
∂D(z)
∂z
=
∂a i z = p
∂z z = p k ∂a i
k
=
z =pk
∂D(p k ) ∂p k
⋅
∂p k
∂a i
Da qui possiamo esplicitare la suddetta sensitività:
∂p k
=
∂a i
(
∂D(z −1 )
∂a i z =p
∂D(p k )
∂p k
k
)
Se consideriamo che D(z) = ∏ 1 − p k z −1 , possiamo esplicitare meglio la derivata a denominatore:
k
intanto, possiamo scrivere che
 pk − p j 
 = p kN ∏ (p k − p j )
D(p k ) = ∏ 1 − p j p −k1 = ∏ 
pk 
j
j 
j
(
)
Dobbiamo ora derivare questa quantità rispetto a pk: avendo il prodotto di N+1 termini, la
derivazione risulta complicata, ma si intuisce che il risultato finale sia un qualcosa di proporzionale
alla quantità ∏ (p k − p j ) .
j≠ k
Sostituendo, allora, nell’espressione di
∂p k
, otteniamo
∂a i
∂p k
∝
∂a i
∂D(z −1 )
∂a i z =p
∏ (p
j≠ k
k
− pj)
k
Se invece consideriamo la derivata a numeratore, la cosa è ancora più semplice:
∂D(z −1 )
∂  N

=
= z −i
 ∑ a i z −i 
∂a i z = p
∂a i  i=0
 z=pk
k
z=pk
= p −k i
Abbiamo ancora una costante di proporzionalità, per cui possiamo concludere che
∂p k
1
∝
∂a i
∏ (p k − p j )
j≠ k
Questo risultato dice in pratica che la sensibilità di un polo pk alle
fluttuazioni di un coefficiente ai è inversamente proporzionale al
prodotto delle distanze relative tra tutte le radici del polinomio e
Autore: Sandro Petrizzelli
34
Progetto di filtri IIR (parte I): trasformazione bilineare
il polo stesso. Di conseguenza, questa sensibilità risulta tanto maggiore quanto più esistono,
nella costellazione, coppie di poli vicini tra loro.
Non solo, ma la sensitività cresce anche al crescere del grado del polinomio D(z), cioè al crescere
del numero di poli. Questo è uno dei motivi fondamentali per cui è opportuno realizzare blocchi che
contengano solo polinomi di grado minimo, e cioè 2, per evitare di utilizzare aritmetica complessa.
Quindi, sistema complicati devono essere realizzati come cascate di forme biquadratiche, ossia di
funzioni di trasferimento che realizzano una coppia di poli ed una coppia di zeri. Tali funzioni sono
implementate da blocchi del tipo già visto in precedenza e qui di seguito riproposti:
x(n)
+
+
y(n)
T
2rp cos θ p
2rz cos θ z
T
− rP2
rZ2
UTILIZZO DELLE “STRUTTURE ANALOGICHE A SCALA”
Siamo nell’ambito del problema del controllo delle radici di un polinomio
H(z) mediante il controllo dei coefficienti del polinomio stesso: il
problema nasce dal fatto che tali coefficienti devono essere descritti con precisione inevitabilmente
finita.
Quando, in precedenza, abbiamo descritto i metodi implementativi dei filtri IIR, abbiamo visto
che la generica cella elementare, corrispondente ad una funzione di sistema con una coppia di poli
complessi coniugati ed una coppia di zeri complessi coniugati, è fatta nel modo seguente:
x(n)
+
+
y(n)
T
2r cos θ
2r cos θ
T
r2
-r2
35
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Questa cella è ottenuta ponendo in cascata la cella elementare del secondo ordine corrispondente
alla coppia di poli e quella (sempre elementare del secondo ordine) corrispondente alla coppia di
zeri.
Per le considerazioni fatte nel paragrafo precedente, una struttura di questo tipo richiede
particolare attenzione per quanto riguarda i coefficienti dei moltiplicatori: infatti, mentre non
abbiamo problemi per quanto riguarda gli zeri, ne abbiamo per quanto riguarda i poli, in quanto
bisogna assicurarsi che essi, oltre a mantenersi nei pressi delle posizioni teoriche previste, rimangano
comunque all’interno del cerchio unitario, onde garantire un filtro comunque stabile.
Questo discorso è assolutamente analogo a quello da fare quando si vuole ottenere un filtro
analogico tramite una rete RLC e si vogliono determinare i valori delle capacità e delle induttanze
per avere una data funzione di trasferimento. Anzi, nel mondo analogico i problemi sono
decisamente minori, in quanto, anche sbagliando il valore di una induttanza, il filtro conserva
sostanzialmente le proprie caratteristiche e, soprattutto, rimane stabile. Ad esempio, quando si vuole
realizzare un filtro passa-basso, delle strutture molto usate sono le cosiddette strutture a scala,
che sono del tipo seguente:
Abbiamo cioè una serie di celle LC, poste in cascata, chiuse da una parte sul generatore (con
resistenza serie) e dall’altra sul carico, rappresentato da una resistenza RL.
Fissata la funzione di trasferimento che si vuole ottenere, bisogna dimensionare i valori di
induttanze e capacità. Per fare questo, sono state predisposte delle apposite tabelle, in cui vengono
riportati i valori di L e di C normalizzati rispetto alla frequenza di taglio fT: in altre parole, sono
tabulati i valori di L/fT e di C/fT. Queste tabelle consentono perciò di dimensionare L e C in funzione
della frequenza di taglio che si desidera ottenere.
Ci sono anche altre tabelle di questo tipo, nelle quali però la normalizzazione viene fatta rispetto
alle impedenze di ingresso e di uscita. Questo è possibile per una particolare proprietà delle reti a
scala: infatti, se abbiamo una rete a scala e dividiamo tutte le impedenze
per uno stesso numero, la funzione di trasferimento non cambia.
Sfruttando questa proprietà, si trovano i valori delle impedenze della rete (ωL e 1/ωC) normalizzate
all’impedenza di ingresso Rg ed alla impedenza di uscita RL, che di solito sono uguali.
Con queste tabelle, quindi, conoscendo il valore che serve per l’impedenza di ingresso e quella di
uscita ed avendo effettuato la denormalizzazione per ottenere la frequenza di taglio desiderata, si può
sintetizzare la rete finale.
In effetti, nel progetto di un filtro analogico c’è anche un altro parametro importante, vale a dire il
numero di celle elementari da porre in cascata, ossia sostanzialmente il grado di complessità della
rete. Facciamo un esempio concreto: se si vuole realizzare un filtro alla Butterworth (filtro passabasso a soli poli), il modulo al quadrato della funzione di trasferimento deve essere del tipo
H(ω) =
2
Autore: Sandro Petrizzelli
1
 ω 

1 + 
ω
 C
36
2n
Progetto di filtri IIR (parte I): trasformazione bilineare
dove ωC è la pulsazione di taglio, cioè la pulsazione alla quale il guadagno del filtro scende di 3dB
rispetto al valore in continua (ω=0).
In questa espressione c’è un grado di libertà che è appunto il numero n di celle da porre in cascata
(ogni cella introduce un polo, in quanto comprende un elemento reattivo): fino alla frequenza ωC, il
modulo quadro di H(ω) risulta sostanzialmente costante; a partire da ωC, invece, l’andamento di
|H(ω)| subisce l’effetto di n poli, ognuno dei quali contribuisce notoriamente ad un incremento di
pendenza (negativa) di 20 dB/decade. Di conseguenza, è evidente che il numero n di celle da
considerare dipende dalle specifiche richieste e, in particolare, sia dalla attenuazione minima in
banda attenuata sia dalla estensione della banda transizione.
In base a queste specifiche, dunque, risulta determinata la complessità della rete. Non solo, ma in
questa rete i valori delle induttanze e delle capacità sono noti per frequenze di taglio normalizzate:
basta allora denormalizzare ed il progetto del filtro analogico ha termine.
Se stiamo progettando un filtro analogico cui poi dovremo far corrispondere un filtro numerico
ottenuto tramite trasformazione bilineare, ci basterà applicare proprio la suddetta trasformazione per
ottenere il filtro numerico desiderato: otteniamo cioè i coefficienti del numeratore e del
denominatore della funzione di sistema H(z) che rappresenta il filtro.
Quindi, la tecnica appena descritta si basa essenzialmente su due passaggi:
• in primo luogo, si progetta il filtro analogico, cioè sostanzialmente si dimensionano capacità ed
induttanze della rete a scala;
• in secondo luogo, si applica la trasformazione bilineare per ottenere il corrispondente filtro
numerico, espresso in termini di una parte FIR (solo zeri, numeratore della funzione di sistema)
e di una parte IIR (solo poli, denominatore della funzione di sistema).
C’è però una considerazione da fare: nel mondo analogico, un eventuale errore sulle capacità e
sulle induttanze non dà grossi problemi, in quanto il filtro continua ad essere molto simile a quello
desiderato; al contrario, nel mondo digitale, nel quale noi controlliamo la
posizione dei poli non più tramite elementi reattivi ma tramite
coefficienti
numerici,
i
problemi
dovuti
ad
errori
di
approssimazione sono più consistenti.
Si potrebbe allora pensare di scegliere una strada diversa per l’implementazione di un filtro
numerico: così come in analogico usiamo elementi reattivi per controllare la posizione dei poli,
potremmo pensare di fare qualcosa di analogo nel mondo numerico; in altre parole, possiamo andare
alla ricerca di blocchi che implementino resistori, condensatori ed induttori nel mondo numerico,
dopodiché andremo a connettere tali blocchi così come faremmo per un filtro analogico. Vediamo di
spiegarci meglio.
Supponiamo di voler simulare al calcolatore il comportamento di un elemento resistivo: dobbiamo
costruire un blocco che dia un legame istantaneo di proporzionalità tra l’ingresso e l’uscita e
sappiamo che è banale ottenere questo, in quanto basta un moltiplicatore, che dia l’uscita appunto
moltiplicando l’ingresso per una costante di proporzionalità assegnata (sarebbe il valore della
resistenza). Più complessa diventa invece la simulazione del comportamento di un elemento reattivo,
cioè un induttore o un condensatore: infatti, in questo caso abbiamo il problema che l’uscita è legata
alla derivata dell’ingresso tramite una costante di proporzionalità, per cui il moltiplicatore non è più
sufficiente.
D’altra parte, abbiamo visto nei precedenti paragrafi come si possa approssimare, nel mondo
tempo-discreto, l’operazione di derivazione: si tratta dei discorsi che ci hanno portato alla
trasformazione bilineare:
2 1 − z −1
s=
T 1 + z −1
37
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Consideriamo per esempio un condensatore: la relazione che ne caratterizza il funzionamento, nel
dv( t )
mondo analogico, è notoriamente i( t ) = C
; applicando la trasformata di Laplace, otteniamo
dt
I(s) = CsV (s) , da cui deduciamo che la funzione di trasferimento è H(s) = Cs . Per ottenere il
corrispondente sistema tempo-discreto, applichiamo la trasformazione bilineare:
s=
2 1− z −1
T 1+ z −1
H(s) = Cs  → H(z) =
2C 1 − z −1 2C z − 1
=
T 1 + z −1
T z +1
Abbiamo dunque ottenuto come è fatto il blocco H(z) che, nel mondo tempo-discreto, approssima
il comportamento di un condensatore: a meno della costante di proporzionalità 2C/T, si tratta della
cascata di due celle elementari del primo ordine, una rappresentativa del polo in -1 e l’altra
rappresentativa dello zero in +1:
H(z) =
H ( z ) = z − 1
2C
⋅ H 1 (z ) ⋅ H 2 ( z ) 
→ 1
T
H 2 ( z ) = z + 1
Il corrispondente schema di flusso è fatto allora nel modo seguente:
z-1
y(n)
+
x(n)
z-1
H1(z)
H2(z)
(zero in +1)
(polo in -1)
Questo è dunque il modello tempo-discreto di un condensatore. Identico ovviamente sarà il
modello di un induttore, a patto di ricordare che la relazione caratteristica è in questo caso
di( t )
v( t ) = L
, per cui l’ingresso è adesso la corrente, mentre l’uscita è la tensione.
dt
Osservando il modello ottenuto, si nota immediatamente un problema: tra ingresso ed uscita c’è
un cammino a ritardo nullo. Si tratta di un problema in quanto dobbiamo pensare che il nostro
filtro sarà ottenuto dalla combinazione di vari modelli di quel tipo: a seconda della connessione che
adottiamo, è possibile che vari cammini a ritardo nullo vadano a costituire una maglia (o loop) a
ritardo nullo, il che non può essere: infatti, una maglia a ritardo nullo indica che una variabile, in
un certo istante, dipende da se stessa nello stesso istante, il che significa che il filtro è irrealizzabile.
Possiamo allora concludere con le seguenti considerazioni:
• siamo partiti cercando di ottenere un filtro che, pur avendo un comportamento simile a quello
che sapremmo già implementare banalmente tramite trasformazione bilineare, abbia però una
minore sensibilità ai parametri;
Autore: Sandro Petrizzelli
38
Progetto di filtri IIR (parte I): trasformazione bilineare
• abbiamo individuato un modo di risolvere questo problema, che consiste nel costruire il filtro
numerico tramite interconnessione di strutture elementari, ciascuna rappresentativa dei
corrispondenti componenti analogici (resistori, condensatori ed induttori);
• questa soluzione ha il pregio per cui, anche con una limitata precisione di rappresentazione dei
coefficienti, la risposta del filtro continua ad essere accettabile; essa presenta però due
svantaggi fondamentali:
∗ il primo riguarda il pericolo che si creino maglie a ritardo nullo, che renderebbero il
progetto non fisicamente realizzabile;
∗ il secondo riguarda l’evidente complessità della struttura del filtro: la struttura ottenuta
connettendo i blocchi del tipo riportato nell’ultima figura presenta sicuramente più
moltiplicatori e sommatori della struttura che si otterrebbe usando la trasformazione
bilineare.
Supponendo allora di accettare la maggiore complessità della struttura, abbiamo sempre il
problema dei cammini a ritardo nullo. Una possibile soluzione a questo problema è quella dei
cosiddetti filtri ad onda numerica (wave digital filter), descritti nel prossimo paragrafo.
FILTRI AD ONDA NUMERICA (WAVE DIGITAL FILTERS)
L’idea dei filtri a onda numerica prende le mosse da alcuni concetti tipici dei sistemi
analogici a parametri distribuiti, tali cioè che le dimensioni fisiche siano confrontabili con la
lunghezza d’onda dei segnali che si propagano. L’esempio classico di sistema distribuito è una linea
di trasmissione:
Ii
+
I(z)
I0
+
+
+
Vi
V(z)
V0
-
-
-
-
asse z
Come ben sappiamo, in ogni punto della linea risulta costante il rapporto tra la tensione V(z) e la
corrente I(z): tale rapporto rappresenta l’impedenza caratteristica della linea stessa.
L’equazione differenziale (equazione dei telegrafisti) descrittiva del sistema lineare fornisce,
come soluzione generale, la sovrapposizione di un’onda che si propaga allontanandosi dalla sorgente
(onda diretta) e di un’onda che si propaga in verso opposto (onda riflessa). Se la linea è
infinitamente lunga oppure è di lunghezza finita ma è chiusa su una impedenza concentrata
coincidente con l’impedenza caratteristica della linea (linea adattata), allora c’è solo l’onda diretta
(in quanto al carico non si verifica alcuna riflessione, come indicato dal teorema del massimo
trasferimento di potenza). Se, invece, l’impedenza di carico è diversa dall’impedenza caratteristica
della linea, allora si genera anche l’onda riflessa (linea non adattata) in corrispondenza del carico: la
potenza erogata dal generatore non è interamente trasferita al carico, ma viene in parte riflessa verso
la sorgente.
39
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Anziché considerare il caso particolare di una linea di trasmissione, possiamo estendere
questi concetti ad un generico doppio bipolo per il quale sia
necessaria una descrizione a parametri distribuiti:
I1
I2
+
Doppio
Bipolo
V1
-
+
V2
-
Questo tipo di approccio è quello seguito per un qualsiasi componente elettronico che lavori in
alta frequenza (microonde e oltre), cioè appunto con segnali di lunghezza d’onda piccola: si è fatta
questa scelta in quanto, per piccole lunghezze d’onda, non è più possibile definire i cortocircuiti
ideali per conduttori di dimensioni paragonabili appunto con λ.
Per questo tipo di situazioni, anziché descrivere il comportamento del doppio bipolo in termini di
tensioni e correnti alle due porte (cioè, sostanzialmente, in termini di parametri Z o Y), si ricorre ad
una descrizione proprio in termini di onda diretta e onda riflessa, sia per la porta di ingresso sia per
la porta di uscita. Questa descrizione, che tra un attimo sarà meglio dettagliata, porta alla nota
matrice di scattering, cioè una matrice che rappresenta il comportamento del doppio bipolo in
funzione dei cosiddetti parametri S di scattering (o di diffusione).
Dobbiamo per prima cosa capire cosa intendiamo per onda diretta e onda riflessa. Per la generica
porta, consideriamo le seguenti definizioni:
onda diretta (incidente) →
onda riflessa →
a = V + R ⋅I
b = V − R ⋅I
In queste definizioni, compare il parametro R, rappresentativo della resistenza di normalizzazione
per la porta considerata. Nel mondo analogico, il valore di R è standard e vale 50 Ω oppure 75 Ω; al
contrario, nel mondo numerico R non è una resistenza fisica da implementare, il che ci conferisce
due gradi di libertà: in primo luogo, possiamo fissare R a nostro piacimento e vedremo in seguito
quale valore ci conviene scegliere; in secondo luogo, possiamo adottare sia un valore di R uguale per
tutte le porte del dispositivo in esame sia un valore di R diverso per ciascuna porta.
Per semplicità, supponiamo che R sia uguale per tutte le porte. Di conseguenza, le definizioni che
adottiamo per le due porte sono le seguenti:
a = V1 + R ⋅ I1
porta 1 :  1
b1 = V1 − R ⋅ I1
a = V2 + R ⋅ I 2
porta 2 :  2
b 2 = V2 − R ⋅ I 2
Queste definizioni ci consentono di descrivere il comportamento del sistema in termini di matrice
di scattering: ciò significa scrivere una relazione matriciale del tipo
[b] = [S]⋅ [a ]
In pratica, mentre nella descrizione mediante i parametri Z ed Y si considera, come variabile
indipendente per ciascuna porta, rispettivamente la corrente o la tensione, nella descrizione mediante
parametri S si considera come ingresso l’onda incidente e come uscita l’onda riflessa.
Esplicitando le matrici, abbiamo dunque che
Autore: Sandro Petrizzelli
40
Progetto di filtri IIR (parte I): trasformazione bilineare
b1  S11 S12  a 1 
b  = S
⋅ 
 2   21 S 22  a 2 
I parametri S vanno misurati per il dispositivo in esame ed il criterio con cui effettuare la misura
si basa proprio su quella relazione matriciale: per esempio, il coefficiente S11 è dato evidentemente
da
S11 =
b1
a1
=
a 2 =0
V1 − RI1
V1 + RI1
=
V2 + RI 2 = 0
V1 − RI1
V1 + RI1
V2 = − RI 2
In base a questa espressione, la misura di S11 si ottiene nel modo seguente: sulla porta 2 del
dispositivo dobbiamo porre semplicemente un resistore di resistenza R, mentre dobbiamo alimentare
la porta 1 tramite un generatore di tensione Vg con resistenza serie pari ad R:
Doppio
Bipolo
+
-
Su questo schema, dobbiamo poi misurare il rapporto tra l’onda riflessa e l’onda diretta per la
porta 1. In poche parole, S11 è il rapporto tra onde riflessa e onda diretta alla porta 1 quando la porta
2 è chiusa su un carico passivo di valore R.
In modo del tutto analogo, ci accorgiamo, ad esempio, che S12 è dato da
S12 =
b1
a2
=
a1 = 0
V1 − RI1
V2 + RI 2
=
V1 + RI1 = 0
V1 − RI1
V2 + RI 2
V1 = − RI1
A questo punto, anziché considerare un dispositivo generico, concentriamoci sui dispositivi che ci
interessano nei nostri discorsi, vale a dire condensatori e induttori. Essendo questi degli elementi
monoporta (e non biporta come i doppi bipoli), è ovvio che l’unico parametro S che ha significato è
il rapporto tra l’onda incidente e l’onda riflessa all’unica porta presente.
Cominciamo da un condensatore:
I
+
V
-
41
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Applicando le definizioni viste prima, abbiamo che
S=
b V −R ⋅I
=
a V + R ⋅I
dove R è sempre la resistenza serie con la quale supponiamo di alimentare il dispositivo.
D’altra parte, se ci poniamo direttamente nel dominio di Laplace, sappiamo che corrente e
tensione sono legate dalla relazione I=sCV, per cui scriviamo che
S=
V − R ⋅ sCV 1 − sRC
=
V + R ⋅ sCV 1 + sRC
Questo è dunque il modello per il nostro condensatore analogico che lavora in alta frequenza. Per
ottenere il corrispondente dispositivo tempo-discreto, usiamo ancora una volta la trasformazione
bilineare:
2 1 − z −1
2
2 1− z −1
1
−
RC
⋅
1 + z −1 − RC ⋅ 1 − z −1
1
−
s
=
1 − sRC
T 1+ z =
T
+ z −1
T 1
→ S =
S=
2
1 + sRC
2 1 − z −1
−1
1 + z + RC ⋅ 1 − z −1
1 + RC ⋅
−1
T
T 1+ z
(
)
(
)
(
)
(
)
A questo punto, possiamo sfruttare quanto detto in precedenza circa il valore di R: non avendo
alcun vincolo, dato che stiamo nel mondo numerico, possiamo scegliere R come più ci fa comodo. In
questo caso, ci fa comodo eliminare quante più costanti possibile, per cui scegliamo R in modo tale
2
che risulti RC ⋅ = 1 : quindi
T
RC ⋅
(
(
) (
) (
)
)
2
T
1 + z −1 − 1 − z −1
=1
→ R =

→ S =
= z −1
−1
−1
T
2C
1+ z + 1− z
La conclusione cui siamo pervenuti è la seguente: se il condensatore vede, alla porta, un livello di
impedenza puramente resistivo e di valore R=T/2C, esso può essere simulato da un operatore
−1
numerico S = z .
In altri termini, se effettuiamo una simulazione discreta del sistema analogico, possiamo sostituire
al condensatore un semplicissimo elemento di memoria (ad esempio un flip-flop o comunque una
cella di memoria):
I
+
V
z-1
E’ bene precisare che questa corrispondenza è valida solo quando R=2/TC. Se non è verificata
questa condizione, allora la simulazione non sarebbe corretta.
Autore: Sandro Petrizzelli
42
Progetto di filtri IIR (parte I): trasformazione bilineare
Possiamo adesso ripetere l’identico discorso per un induttore, per il quale cambia evidentemente
la relazione di lato, che adesso è V=sLI: abbiamo che
L
−1
b V − R ⋅ I sLI − R ⋅ I sL − R
R
S= =
=
=
=
L
a V + R ⋅ I sLI + R ⋅ I sL + R
s +1
R
s
Questo è il modello per un induttore analogico che lavora in alta frequenza. Per ottenere il
corrispondente dispositivo tempo-discreto, usiamo la trasformazione bilineare:
L
s − 1 s = 2 1− z −1
+ z −1
S= R
T 1
→ S =
L
s +1
R
2 1 − z −1
T 1 + z −1
2 1 − z −1
T 1 + z −1
(
L
2
−1
1 − z −1
R
= T
2
L
1 − z −1
+1
T
R
(
) RL − (1 + z )
−1
) RL + (1 + z )
−1
Ancora una volta, scegliamo il valore di R in modo opportuno, ossia in modo tale che risulti
2 L
⋅ = 1 : quindi
T R
(
(
) (
) (
)
)
2 L
2L
1 − z −1 − 1 + z −1
⋅ =1
→ R =

→ S =
= − z −1
T R
T
1 − z −1 + 1 + z −1
Rispetto al modello del condensatore che abbiamo ottenuta prima, abbiamo in più una inversione
−1
di segno: S = − z .
I
+
V
z-1
-1
-
Dispositivi adattatori
Adesso cominciamo ad avere gli strumenti necessari per costruire un filtro numerico, che
corrisponda ad un filtro analogico RLC, semplicemente componendo i singoli blocchi (ciascuno
rappresentativo del corrispondente dispositivo analogico). C’è però da capire come vanno effettuate
le connessioni e come si risolve il problema dei cammini a ritardo nullo.
Per spiegarci meglio, immaginiamo di voler realizzare un filtro numerico che sia il
corrispondente, nel mondo discreto, del filtro analogico RLC rappresentato nella figura seguente:
43
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
Rg
L1
L2
+
RL
C
-
Le resistenze indicate con Rg ed RL sono, rispettivamente, quella di pilotaggio (resistenza serie del
generatore) e quella di carico. Il loro valore può essere forzato al valore per noi più comodo: per
esempio, potremmo prenderla entrambe di 1Ω.
Resta quindi da sostituire ai due induttori ed al condensatore i rispettivi blocchi numerici: una
cella di memoria per il condensatore ed una cella di memoria in cascata ad un moltiplicare (per -1)
per gli induttori. C’è il problema di come imporre gli opportuni valori delle impedenze affinché la
simulazione sia corretta: infatti, sappiamo che i due modelli appena citati valgono solo quando
l’impedenza di pilotaggio del condensatore vale R=T/2C e quella di pilotaggio degli induttori vale
R=2L/T. Si deduce che non possiamo effettuare un collegamento diretto tra i dispositivi discreti, ma
dobbiamo necessariamente interporre qualcosa (altri blocchi) che consentano l’adattamento dei
livelli di impedenza.
Quali blocchi dobbiamo usare? In generale, per il generico dispositivo (blocco corrispondente al
condensatore o blocco corrispondente all’induttore), abbiamo bisogno di un dispositivo a 3 porte,
come indicato nella figura seguente:
-1
z-1
z-1
Blocco adattatore
(a 3 porte)
per il condensatore
Blocco adattatore
(a 3 porte)
per l'induttore
I due adattatori qui disegnati servono affinché le porte dei due dispositivi (simulatore del
condensatore e simulatore dell’induttore) vedano impedenze pari, rispettivamente, a T/2C e 2L/T.
Tramite questi adattatori, possiamo connettere i due simulatori al resto della rete. In particolare,
useremo adattatori tipo serie quando servono a rappresentare elementi collegati in serie, mentre
useremo adattatori tipo parallelo quando servono a rappresentare elementi collegati in parallelo.
L’ultima cosa da fare è comprendere quali devono essere le relazioni ai morsetti degli adattatori;
tali relazioni saranno diverse a seconda della connessione (serie o parallelo), per cui dobbiamo
distinguere i due casi.
Autore: Sandro Petrizzelli
44
Progetto di filtri IIR (parte I): trasformazione bilineare
Progetto dell’adattatore tipo serie
Come primo caso, consideriamo un adattatore tipo serie, che cioè venga usato per connettere
elementi in serie. Per caratterizzare il funzionamento dell’adattatore, potremmo usare le tensioni e le
correnti alle 3 porte:
I2
- V2 +
I1
I3
R2
+
V1
+
R1
R3
-
V3
-
Al contrario, noi abbiamo deciso di utilizzare descrizioni in termini di matrice di scattering, il che
significa che, per ciascuna porta del dispositivo adattatore, dovremo considerare onda incidente ed
onda riflessa:
a2
b2
a1
b1
a3
R2
R1
R3
b3
Le onde (incidenti e riflesse) considerate sono
a = V1 + R 1 ⋅ I1
porta 1 :  1
b1 = V1 − R 1 ⋅ I1
a = V2 + R 2 ⋅ I 2
porta 2 :  2
b 2 = V2 − R 2 ⋅ I 2
a 3 = V3 + R 3 ⋅ I 3
porta 1 : 
b 3 = V3 − R 3 ⋅ I 3
La prima condizione da imporre è che il collegamento sia di tipo serie: per un triporta, ciò
significa che le correnti alle tre porte siano uguali e che la somma delle tensioni sia nulla, per cui
I 1 = I 2 = I 3

V1 + V2 + V3 = 0
La seconda condizione da imporre riguarda invece i valori delle impedenze viste alle tre porte: ad
esempio, se stiamo considerando un condensatore e lo connettiamo alla porta 2, dovremo imporre
che l’impedenza di tale porta sia resistiva e, in particolare, valga R2=T/2C.
Possiamo ora descrivere l’adattatore in termini di parametri S, il che significa esprimere le onde
riflesse (variabili dipendenti) in funzione delle onde incidenti (variabili indipendenti). Basta
45
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
combinare le definizioni delle varie onde con i vincoli corrispondenti al collegamento serie, per
rendersi conti che la descrizione matriciale del dispositivo, in termini di matrice di scattering, è la
seguente:
b1    α 1
 b  = I − α
 2   2
b 3   α 3
α1
α2
α3
α 1   a 1 

α 2  a 2 
α 3  a 3 
Si trova cioè che la matrice di scattering si ottiene come differenza tra la matrice identità (di
ordine 3) ed una matrice aventi ciascuna riga formata da elementi uguali: per la generica riga iesima, si trova in particolare che il generico elemento è
αi =
2R i
R1 + R 2 + R 3
i = 1,2,3
Quindi, una volta che sia stato scelto il collegamento serie per il dispositivo (condensatore o
induttore) in esame, basta conoscere i livelli di impedenza che sono necessari alle 3 porte
dell’adattatore per ottenere una descrizione dello stesso adattatore in termini di matrice di scattering.
Progetto dell’adattatore tipo parallelo
Valgono in questo caso discorsi perfettamente analoghi a quelli visti per l’adattatore tipo serie. In
particolare, è chiaro che le condizioni sulle impedenza alle porte dell’adattatore sono le stesse di
prima, in quanto non dipendono dal tipo di connessione che si vuole effettuare. Al contrario,
trattandosi di una connessione di tipo parallelo, cambiano i vincoli tra le tensioni e le correnti alle tre
porte: in questo caso, le tensioni devono essere uguali, mentre le correnti, sommandosi, devono dare
0. Quindi, scriviamo che
V1 = V2 = V3

I1 + I 2 + I 3 = 0
Con procedimento analogo a quello di prima, si trova che la descrizione in termini di matrice di
scattering è simile (ma non uguale) a quella trovata prima. In particolare, ci si imbatte ancora una
volta in una matrice avente elementi uguali sulle righe; il generico di tali elementi è
αi =
2G i
G1 + G 2 + G 3
i = 1,2,3
Realizzazione del filtro
Abbiamo ora tutti gli strumenti per implementare il dispositivo numerico che simuli il
comportamento del filtro analogico da cui eravamo partiti e che riproponiamo nella figura seguente:
Autore: Sandro Petrizzelli
46
Progetto di filtri IIR (parte I): trasformazione bilineare
Rg
L1
L2
+
RL
C
-
Sappiamo bene che i due elementi resistivi non ci danno problemi per quanto riguarda
l’implementazione, in quanto si tratta semplicemente di due moltiplicatori. Concentriamoci allora
sulla parte di circuito composta dal collegamento a T dei due induttori e del condensatore.
L’induttore L1 è connesso in serie al resistore di carico RL, per cui dovremo utilizzare un adattatore
tipo serie. Successivamente, la serie L1-RL si trova in parallelo al condensatore, per il quale quindi
dovremo usare un adattatore tipo parallelo. Questa connessione in parallelo si trova poi a sua volta in
serie all’induttore L2, che è anche in serie con Rg: quindi, per L2 useremo un adattatore serie.
In definitiva, i 3 elementi reattivi risultano connessi nel modo seguente:
-1
z-1
Adattatore
serie
-1
z-1
z-1
Adattatore
parallelo
Adattatore
serie
Possiamo adesso fare una osservazione: dato che negli adattatori non ci sono elementi di ritardo,
deduciamo che i ritardi sono introdotti solo dai blocchi corrispondenti a condensatori ed induttori;
questo fatto comporta ancora il rischio di ottenere maglie a ritardo nullo, il che ci riporterebbe al
punto da cui siamo partiti.
Per risolvere il problema, basta fare alcune semplici considerazioni circa gli adattatori.
Consideriamo per esempio il primo adattatore a sinistro (cioè relativo ad L2):
• alla porta 1 di tale adattatore si presenta un livello di resistenza pari a quello di pilotaggio da
noi fissato;
• alla porta 2, invece, sappiamo che il livello di resistenza deve essere 2L/T, perché solo sotto
questa ipotesi la simulazione risulta corretta;
• infine, alla porta 3 devono essere soddisfatte le specifiche del blocco seguente.
Il blocco seguente è l’adattatore parallelo relativo al condensatore C. Qui abbiamo due vincoli:
• alla porta 2’ dobbiamo garantire una impedenza resistiva pari a T/2C;
• alla porta 3’ dobbiamo garantire una impedenza che soddisfi il blocco successivo.
Consideriamo infine l’ultimo blocco, ossia l’adattatore serie relativo ad L1; le specifiche sono
ancora due:
47
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 5
• alla porta 2’’ dobbiamo garantire ancora una impedenza resistiva di valore 2L/T;
• alla porta 3’’, invece, se per esempio abbiamo scelto di normalizzare il carico, dobbiamo
garantire una impedenza resistiva unitaria.
Queste considerazioni mostrano che la struttura presenta diversi gradi di libertà, che possono
perciò essere sfruttati per ovviare al problema delle maglie a ritardo nullo. Ad esempio, possiamo
pensare di dimensionare il sistema in modo che venga garantito il massimo trasferimento di potenza,
ossia in modo che non ci siano onde riflesse. Se le onde riflesse vengono neutralizzate, le possibili
maglie a ritardo nullo vengono aperte e quindi il problema è risolto: l’implementazione vista
consente di realizzare un filtro numerico che ricalca perfettamente il comportamento del filtro
analogico di partenza.
Pregi e difetti dei filtri ad onda numerica
A questo punto, indaghiamo circa i pregi e difetti sui filtri ad onda numerica. E’ subito evidente
un difetto: questo tipo di filtri hanno una struttura abbastanza complessa, anche se il filtro analogico
di partenza era molto semplice come nell’esempio considerato. Non solo, ma tale struttura risulta
anche più complicata di quella che, a parità di filtro analogico di partenza, si sarebbe ottenuta
applicando, direttamente alla H(s) del suddetto filtro, la trasformazione bilineare:
filtro analogico : H(s)
s=
2 1− z −1
T 1+ z −1
 → filtro numerico : H(z)
Deduciamo che il vantaggio di usare filtri ad onda numerica non è certo di natura implementativa.
Al contrario, il grosso pregio di questi filtri è la minore sensibilità alle imprecisioni di calcolo dei
coefficienti: pur approssimando uno o più coefficienti, la funzione di trasferimento del filtro rimane
comunque molto prossima a quella desiderata.
Autore: SANDRO PETRIZZELLI
e-mail: [email protected]
sito personale: http://users.iol.it/sandry
succursale: http://digilander.iol.it/sandry1
Autore: Sandro Petrizzelli
48