MIC7340Chapitre 12
Filtres
Passe-basPasse-bas Passe-hautPasse-haut
Passe-bandePasse-bande Coupe-bandeCoupe-bandefc fc
fc1 fc2fc1 fc2
IdéalRéalisable
• Peuvent être réalisés par des moyens analogiques ou numériques• L’analyse de la réponse en fréquence se fait généralement avec la
transformée de Fourier, la synthèse part de la transformée de Laplace
Quatres types fondamentaux
Série de Fourier
• Permet de représenter tout signal périodique par une combinaison de signaux sinusoïdaux :
où
10
100
kk
kk
)tksin(b
)tkcos(aa)t(s
T
20
Série et transformée de Fourier• L’égalité sin() + j cos()=e jpermet aussi d’écrire :
où
– Chaque terme se distingue par une amplitude ck et un angle de phase k=k0t
• Lorsque s(t) n’est pas périodique ou T est infini, on utilise la transformée de Fourier :
où
– s(t) comprend un nombre infini de composant et F() est une fonction continue
• La transformée de Fourier est aussi applicable aux fonctions de durée finie ou périodiques; F() est alors discontinu
• Dans tous les cas, les paires (ck,k) ou F() décrivent le spectre de fréquences de s(t)
k
tjkk
0ec)t(s T
tjkk dte)t(s
Tc
0
01
deF)t(s tj
2
1
dte)t(sF tj
Transformée de Laplace• Définie par:
où et
• Peut être vue comme une extension de la transformée de Fourier où j est remplacé par s= + j• L’usage de s au lieu de j permet de rendre compte aussi du
comportement transitoire d’un circuit permet d’étudier la réponse transitoire et j la réponse
permanente
• Utile pour déterminer la stabilité d’un circuit pour différente conditions d’opération
• On passe souvent de la transformée de Fourier à la transformée de Laplace en remp;açant j par s dans l’une ou l’autre• En pratique, la transformée de Fourier est plus facile d’usage
dsesFj
)t(s stj
j
2
1 T
stdte)t(ssF0
js
Propriété fondamentale
• Les relations s(t) F()s(t)F(s)
sont bi-univoques• Pour chaque s(t), le F() ou F(s) correspondant est unique
s’il existe, et vice-versa
• Par conséquent l’impact d’un circuit sur un signal s(t) peut se faire de manière équivalente en faisant une analyse dans le temps ou dans l’un des espaces j ou s, dépendant de qui est le plus avantageux
Fonction de transfert
• Définie par H(s)=Y(s)/X(s) ou Y(s) et X(s) sont la sortie et l’entrée du circuit étudié
• Joue un rôle similaire à celui la fonction de réponse en fréquence, mais dans le domaine de Laplace
• Dans tous les cas :
• En pratique, on retrouve aussi souvent l’une que l’autre formulation
Y j X j H j
Y s X s H s
• Filtres numériques : implémentés par microprocesseur, microcontrôleurs, FPGA ou autre moyen numérique• Le filtre calcule directement la fonction de réponse en fréquence en matériel
ou logiciel
• Filtres analogiques : la mise en œuvre est basée sur des composants analogiques qui réalisent la fonction de réponse en fréquence • Les filtres passifs utilisent uniquement R, L et C et ont un gain inférieurs à 1.
• Les filtre analogiques actifs ajoutent des composants actifs (habituellement des amplificateurs operations) pour un gain arbitraire
Moyens de mise en oeuvre des filtres
R
CVI VO
+
_
+
_
1( ) 1
1( ) 1OV jw jwC
V jw jwRCRijwC
Filtre passe-bas de permier ordre
Filtre analogiques passifs
0 dB
1
0
1/RC
1/RC
Diagramme de Bode
Diagramme linéaire
.-3 dB
x0.707
Réponse en amplitude
C
RVi VO
+
_
+
_
( )1( ) 1
OV jw jwRCRV jw jwRCRi
jwC
Filtre passe-haut de premier ordre
Filtre analogiques passifs
0 dB
.
. -3 dB
0
1/RC
1/RC
1/RC
10.707
Bode
Linéaire
x
C L
RViVO
+
_
+
_
Filtre passe-bande du second-ordre
2
( )1( )
O
i
R sV s LRV s s sL LC
Filtre analogiques passifs
0
0 dB-3 dB
lo
hi
.
. .
.10.707
Bode
Linéaire
lo
hi
RL
C
+
_
VO
+
_Vi
Filtre coupe-bande de second-ordre :
)(sGv
LCs
L
Rs
LCs
sGv 1
1
)(2
2
Filtre analogiques passifs
3000003100
3000002
2
ss
s
Example
Matlab:
num = [1 0 300000];den = [1 3100 300000];w = 1 : 5 : 10000;Bode(num,den,w)
Bode
Matlab
V i nV O
C
R fb
+
_
+
_
R in
Filtre analogiques actifs
Filtre passe-bas du 1er ordre
R i nC
V in
R fb
V O
+
_
+
_
Filtre passe-haut du 1er ordre
V in
R 1
R 1
C 1
C 2
R 2
R 2
R fb
R i
V O
+
+
_
_
V i n
R 1
R 1
C 1
C 2
R 2R i
R fb
V O
+
_
+
_
Filtre coupe-bande du 2nd ordre
Filtre passe-bande du 2nd ordre
Rappel :
Pour un ampli-op inverseur : G=-Zf/Zi
Filtres numériques
• Deux types fondamentaux– À réponse impulsionnelle de durée finie (RIF)– À réponse impulsionnelle de durée infinie (RII)
• Analysés et conçus à l’aide de la transformée z– Adaptation de la transformée de Laplace aux systèmes à temps
échantillonnés avec le changement de variable z = eTs
– Permet donc de :• Déterminer la réponse d’un filtre numérique à un signal d’entrée• Étudier sa réponse en fréquence • Étudier sa stabilité
Transformée Z
• La transformée z d’un signal à temps échantillonné quelconque x[n] est définie par
où z = esTe, s étant la variable de Laplace et Te la période d’échantillonnage ; pour un signal causal k0=0.
• Il existe une relation biunivoque entre le signal et sa transformée z :
0][)(
kk
kzkxzX
x n Z X z
Fonctions de transfert numériques
• Si x[n] est l’excitation, h[n] la fonction de réponse du filtre á une impulsion et y [n] sa sortie, alors
et H( ) est la fonction de transfert du système.• Résultat similaire à ceux trouvés pour les transformée de
Fourier et Laplace :
Y z X z H z
Y j X j H j
Y s X s H s
Ex. : donne
• L’effet du numérateur et du dénominateur peut être représenté par des vecteurs qui partent de pôles ou zéros et se rejoignent en un point commun sur le cercle unité.
• Les rapports d’amplitudes et les angles des vecteurs définissent la réponse en fréquence.
Diagrammes de placement des pôles-zéros et réponse en fréquence
31
z
z3)z(H
31
e
e3)e(H
j
jj
Re
Im
1
pôle
zérocercle unité
-1/3
31
e
e3)e(H
j
j
j
3
1ee3)e(H jjj
Comparaison entre RII et RIFRIFRIF RIIRII
Stable par défaut Demande n>> 1 pour une bonne
performance Peut demander un temps de calcul
escessif La gamme dynamique se calcule
facilement Réponse en phase linéaire si filtre
causal Ne possède pas d’équivalent
analogique stable
La stabilité dépend de la position des pôles de H(z)
Peut donner une performance adéquate pour n=1 ou 2
La gamme dynamique se calcule difficilement
Peut nuire à la performance Réponse en phase non linéaire en
général Effets de quantification et d’arrondi
plus prononcés que pour RIF. Possède un équivalent analogique
1N
0n
nz]n[hzH
1M
1k
kk
1N
0k
kk
za1
zbzH
Propriétés d’un filtre RIF• Équation d’e/s :
1
0
N
kk knxbny
x[n] représente les valeurs successives du signal d’entrée,
bk représente les coefficients de la fonction de transfert du filtres,
y[n] représente les valeurs successives du signal de sortie,
N est le nombre de coefficients du filtre(l’ordre).
Réponse en fréquence d’un filtre FIR• La transformée z de
La fonction de réponse en fréquence du filtre est obtenue en remplaçant z by ejTe :
1
0
N
k
kzkhzH
1
0
N
k
Tjk
eze
eTj enhHzH
1
0
N
k
kn]k[hnh
est:
La similarité de H() avec une série de Fourier suggère une méthode pour trouver h[n] !
Propriétés d’un filtre RII
• Équation d’e/s :
1M
1k
1N
0k
knykaknxkbny
x[n] représente les valeurs successives du signal d’entrée,ak, bk représentent les coefficients de la fonction de transfert du
filtres,y[n] représente les valeurs successives du signal de sortie,N, M représentent les ordres du numérateur et du dénominateur
de H(Z) (M est souvent appelé l’ordre du filtre).
Réponse en fréquence d’un filtre RII La transformée z de
La fonction de réponse en fréquence du filtre est obtenue en remplaçant z by ejTe :
est :
1M
1kk
1N
0kk knyaknxbny
1M
1k
kk
1N
0k
kk
za1
zbzH
1M
1k
Tjkk
1N
0k
Tjkk
eze
e
eTj
ea1
ebzH)(H
Puisque e-j2k = 1, on a :
La réponse en fréquence est périodique avec période 2/Te dans le cercle de rayon unité. Si on normalise Te à 1, on a
Propriétes de la réponse en fréquence numérique
HT
k2H
e
Hk2H
Conception d’un filtre numérique
Cinq étapes requises :
1. Spécification du filtre
2. Calcul des coefficients.
3. Choix d’une architecture de mise en oeuvre.
4. Simulation (option).
5. Implémentation.
Dans la suite, on discute les filtres RII
(a)
1
f(norm)fc : cut-off frequency
pass-band stop-band
pass-band stop-bandtransition band
1
s
pass-bandripple
stop-bandripple
fpb : pass-band frequency
fsb : stop-band frequency
f(norm)
(b)
p1
s
p0
-3
p1
fs/2
fc : cut-off frequency
fs/2
|H(f)|(dB)
|H(f)|(linear)
|H(f)|
Étape 1 : spécification du filtre
• Il existe deux approches :– Placement direct des pôles et zeros dans la plan z– Conversion d’un filtre analogique :
• Par transformation bilinéaire• En utilisant le principe de l’invariance de la réponse
impulsionnelle
• Dans le cas de la transformation d’un filtre analogique, on part souvent de l’équation d’un filtre passe bas normalisé que l’on adapte au type désiré (passe haut, passe bande, etc.) avant la conversion.
Étape 2 : calcul des coefficients
Méthode du placement des pôles et zéros
• Basée sur le principe que, dans le plan z :– Le placement d’un zéros ~ |z|=1 minimise la fonction de
réponse en fréquence du filtre à cet endroit.– Le placement d’un pôle ~ |z|=1 maximise la fonction de
réponse en fréquence du filtre à cet endroit.– Pour obtenir un filtre avec des coefficients réels (donc
réalisable), il faut que les pôles et zéros soient à valeurs réelles ou qu’ils apparaissent pas paires conjuguées.
• Méthode intuitive mais qui demande un réglage fin
Méthode du placement des pôles et zéros
• Exemple :
Méthode du placement des pôles et zéros% Conception et simulation d’un filtre par placement de pôles et zéros
pole1 = 0.5+0.5i; % création de deux paires de pôles conjuguéspole2 = 0.8 +0.25i;pole3 = conj(pole1); pole4 = conj(pole2);poles = [pole1 pole2 pole3 pole4];
zero1 = -0.5 + 0.8i; % création de deux paires de zéros conjuguészero2 = -0.2 + 0.9i;zero3 = conj(zero1); zero4 = conj(zero2);zeros = [zero1 zero2 zero3 zero4];
denz=poly(poles); % conversion des pôles en dénominateur de H(z)numz=poly(zeros); % numérateur de H(z) = 1zplane(numz, denz); % affichage des pôles et zérosfigure(2); freqz(numz,denz,256); % affichage de la réponse en fréquence
t=[0:1:127]; % test avec 128 valeurs d’un sinus corrompux=sin(2*pi*t/24);x=x+rand(1,128)-0.5;y=filter(numz,denz,x);figure(3); plot(t,500*x,'b',t,y,'k');axis([0 128 -1000 1000]);axis('normal');
-1 -0.5 0 0.5 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Real Part
Ima
gin
ary
Pa
rt
0 0.2 0.4 0.6 0.8 1-300
-200
-100
0
100
Normalized Frequency ( rad/sample)
Pha
se (
de
gre
es)
0 0.2 0.4 0.6 0.8 1-40
-20
0
20
40
60
Normalized Frequency ( rad/sample)
Mag
nitu
de
(dB
)
0 20 40 60 80 100 120-1000
-800
-600
-400
-200
0
200
400
600
800
1000
Méthode du placement des pôles et zéros
% Autre exemple en utilisant des coordonnées polaires
angl=[0.2: 0.1: 0.5]*pi/2; % création de 4 paires conjuguées de pôles
poles=0.85*exp(j*angl);
poles=[poles 0.85*exp(-j*angl)];
denz=poly(poles) % conversion des pôles en dénominateur de H(z)
numz=[1]; % numérateur de H(z) = 1
zplane(numz, denz); % affichage des pôles et zéros
figure(2); freqz(numz,denz,256); % affichage de la réponse en fréquence
t=[0:1:127]; % test avec 128 valeurs d’un sinus bruité
x=sin(2*pi*t/24);
x=x+rand(1,128)-0.5;
y=filter(numz,denz,x);
figure(3); plot(t,500*x,'b',t,y,'k');axis([0 128 -1000 1000]);axis('normal');
Méthode du placement des pôles et zéros
0 20 40 60 80 100 120-1000
-800
-600
-400
-200
0
200
400
600
800
1000 0 0.2 0.4 0.6 0.8 1-400
-300
-200
-100
0
Normalized Frequency ( rad/sample)
Pha
se (
de
gre
es)
0 0.2 0.4 0.6 0.8 1-40
-20
0
20
40
60
Normalized Frequency ( rad/sample)
Mag
nitu
de
(dB
)
-1 -0.5 0 0.5 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
8
Real Part
Ima
gin
ary
Pa
rtMéthode du placement des pôles et zéros
Conversion d’un filtre analogique • Méthode la plus « simple »• Exploite le fait qu’il existe des méthodes établies de
conception de filtres analogiques.• Consiste à concevoir un filtre analogique et à le convertir
en filtre numérique.• Les deux méthodes les plus utilisés sont :
– L’invariance de la réponse impulsionnelle :
– La transformation bilinéaire :
enTtth]n[h
...s)s(H)z(H
Méthode de l’invariance de la réponse impulsionnelle
% Conception d’un filtre par la méthode de l’invariance de la réponse impulsionnelle
[num,den]=butter(15,2*pi,'s'); % Filtre Passe Bas de Butterworth dans le domaine s avec N=15, fc=1 Hz
[a,p,K] = residue(num,den); % Décomposition en fractions élémentaires par la méthode des résidus :
figure(1); plot(p,'xk'); % digramme des pôles maqués par des x noirs
figure(2); freqs(num,den); % réponse en fréquence analogique
% dans s donne dans t, ce qui donne dans z :
%
%
Te=0.05; % fe=20Hz (=> fc normalisé = 1Hz/(fe/2) =0.1)
pz=exp(p*Te); % conversion des pôles dans s en des pôles dans z
az=-a.*pz; % détermination des coefficients des fractions élémentaires correspondantes
K=K*sum(a); % Terme continu
[numz,denz] = residue(az,pz,K); % détermination de H(z) à partir des fractions élementaires dans z
figure(3); zplane(numz, denz); % digramme des pôles et zéros dans le plan z
figure(4); freqz(numz,denz); % réponse en fréquence numérique
enTtth]n[h
i i
i
ps
aKsH )(
21 ps
B
ps
A
tptp 21 BeAe
e2
e2
e1
e1
e2e1 Tp
Tp
Tp
Tp
TpTp ez
Be
ez
AeBA
ez
zB
ez
zA
-7 -6 -5 -4 -3 -2 -1 0-8
-6
-4
-2
0
2
4
6
8
10-1
100
101
102
-200
-100
0
100
200
Frequency (rad/s)
Pha
se (
de
gre
es)
10-1
100
101
102
10-20
10-10
100
Frequency (rad/s)
Mag
nitu
de
-1 -0.5 0 0.5 1 1.5 2 2.5 3
-1.5
-1
-0.5
0
0.5
1
1.5
Real Part
Ima
gin
ary
Pa
rt
10-2
10-1
100
-1500
-1000
-500
0
Normalized Frequency ( rad/sample)
Pha
se (
de
gre
es)
10-2
10-1
100
-200
-150
-100
-50
0
50
Normalized Frequency ( rad/sample)
Mag
nitu
de
(dB
)
ffcc==cc/2/2=1 Hz=1 Hz
ffcc==((cc/2/2))fe=1 Hz=1 Hz
Méthode de l’invariance de la réponse impulsionnelle
Normalement
On peut donc dériver H(z) de H(s) par la transformation
Cette transformation donne des équations compliquées
La transformation bilinéaire utilise l’approximation d’une surface continue par un ensemble de surfaces trapézoïdales.
Méthode de la transformation bilinéaire
)zln(T
1s
e
)s(H)z(H
)zln(T
1sez
e
sTe
Si , alors et jouent le même rôle
dans les domaines s et z
On peut donc dériver H(z) de H(s) par la transformation
)z(Y
z
zT)z(A
)z(YTz
)z(Az)z(A
T)T)k((y)kT(y)T)k((A)kT(A
)s(Ys
)s(Ad)(y)t(A
e
e
eeeee
t
1
1
11
1
1
2
2
12
11
1
Méthode de la transformation bilinéaire
k-1 k t=kTe
y(t)
y((k-1)Te )
y(kTe )
A((k-1)Te )
s
11
1e
z1
z1
2
T
)kT(A)t(A e
1
1
e z1
z1
T
2s
)s(H)z(H
/*/*IIR.c IIR filter using cascaded Direct Form II. y(n)=S ax(n-k)-by(n-j)*/
Void IIR_Isr(void) {short a1 = 0x0; // coefficients du filtreshort a2 = 0x15f6; short b0 = 0x257d;short b1 = 0x4afd;short b2 = 0x257d;
static short p1=0, p2=0; // variables persistentes short xn, p0, y0; // variables d’e/sint prod1, prod2, prod3, prod4, prod5; // termes intermédiaires
xn = input_sample();pn=xn-((b0*p1)>>15)-((b1*p2)>>15);yn=((a0*pn)>>15) + ((a1*p1)>>15) + ((a2*p2)>>15);p2 = p1;p1 = p0;
output_sample(y0); // Envoyer le signal au port de sortie sériel }
>>15 non requis si calculs fait en virgule flottante>>15 non requis si calculs fait en virgule flottante Noter l’absence de boucles for.Noter l’absence de boucles for.
Étape 5 : mise en oeuvre
Étape 5 : mise en oeuvreCode c plus rapideCode c plus rapidevoid IIR_Isr (void)
{short a1 = 0x0; // coefficients du filtreshort a2 = 0x15f6; short b0 = 0x257d;short b1 = 0x4afd;short b2 = 0x257d;
static short p1=0, p2=0; // variables persistentes short xn, p0, y0; // variables d’e/sint prod1, prod2, prod3, prod4, prod5; // termes intermédiaires
xn = input_sample();prod1 = _mpy(p2,a2);prod2 = _mpy(p1,a1);p0 = xn + (short)((prod1 + prod2)>>15);prod3 = _mpy(p1,b1);prod4 = _mpy(p2,b2);prod5 = _mpy(p0,b0);y0 = (short)((prod3+prod4+prod5)>>15);p2 = p1;p1 = p0;
output_sample(y0); // Envoyer le signal au port de sortie sériel }
>>15 non requis si calculs fait en virgule flottante>>15 non requis si calculs fait en virgule flottante