Filtres numériques FIR (à réponse impulsionelle finie) Guy Gauthier École de technologie supérieure 1 er mai 2014
Outline 1 Signaux 2 Filtrage 3 Transformée en Z 4 Filtres FIR 5 Fenêtres
Représentation des signaux - signal périodique Dans le domaine temporel un signal périodique x(t) peut ressembler à : Dans le domaine fréquentiel ce signal devient : T 1 est la période du signal ; f 1 est sa fréquence.
Représentation des signaux - signal non périodique Dans le domaine temporel un signal non périodique x(t) peut ressembler à : Dans le domaine fréquentiel ce signal devient : f m est sa bande passante.
Définitions Bande passante Plage de fréquences pour laquelle le signal dépasse une certaine amplitude. Spectre (en fréquence) La courbe du signal en fréquence est appelée le spectre du signal. Cette courbe s étend sur une plage de fréquences positives et négatives. La courbe est une fonction paire, i.e., elle symétrique par rapport à l axe des amplitudes.
L échantillonnage d un signal continu Un signal échantillonné à une certaine période :
L échantillonnage d un signal continu Période d échantillonnage Temps entre deux échantillons. Ce temps est invariant. La période d échantillonnage doit donner une fréquence au moins 2 fois plus grande que le signal le plus rapide à mesurer. Durée d échantillonnage Dépend des convertisseurs A/N utilisés. Devrait être courte devant la période d échantillonnage
L échantillonnage à une fréquence très très rapide Très bonne qualité de représentation Exige de la mémoire Exige un système rapide
L échantillonnage à la fréquence de Nyquist Fréquence limite pour l acquisition
L échantillonnage sous la fréquence de Nyquist Le signal est complètement déformé (Recouvrement Alias). Superposition des spectres dans le domaine fréquentiel.
En conclusion Deux solutions possibles : 1) Échantillonner plus que 2 fois plus rapidement que le signal le plus rapide. 2) Filtrer le signal analogique pour éliminer les fréquences indésirables. Les deux solutions peuvent être appliquées ensembles.
Outline 1 Signaux 2 Filtrage 3 Transformée en Z 4 Filtres FIR 5 Fenêtres
Le filtrage des signaux
Le filtrage des signaux - types de filtres Filtres passe-bas Filtres passe-haut Filtres passe-bande Filtres coupe-bande Filtres passe-tout (Modifie simplement la phase des signaux)
Phase des signaux Indésirable : - musique - vidéo - communications numériques L oreille humaine utilise la phase pour localiser la source du son.
Filtres analogiques passe haut Filtre passe-haut - La fonction de transfert d un filtre passe haut est : H(ω) = R R + 1/(jωC) = jωrc jωrc + 1 (1) C est un vecteur dans le domaine complexe.
Filtres analogiques passe haut Le gain est l amplitude du vecteur ; A = Re[H(ω)] 2 + Im[H(ω)] 2 (2) La phase est l angle du vecteur ; ( ) Im[H(ω)] φ = tan 1 Re[H(ω)] (3)
Filtres analogiques La fréquence de coupure du filtre correspond à la fréquence ou l amplitude est descendu de 3 db par rapport au plateau.
Filtres analogiques passe bas Filtre passe-bas - La fonction de transfert d un filtre passe bas est : H(ω) = 1/(jωC) R + 1/(jωC) = 1 jωrc + 1 (4)
Critères de performance d un filtre - Réponse en amplitude L ondulation (ripple) dans la bande passante est nuisible. Il est possible de faire un filtre sans ondulations. Pente en db/décade. L atténuation (en db) de la bande bloquée. Note : Gain(dB)= 20 log 10 A.
Critères de performance d un filtre - Réponse en phase Représente un délai en temps en fonction de f. La réponse de phase devrait être linéaire. - Même délai en temps quelque soit la fréquence. Si pas linéaire : -distorsion -audible si on écoute de la musique -visible si on regarde une image.
Outline 1 Signaux 2 Filtrage 3 Transformée en Z 4 Filtres FIR 5 Fenêtres
Rappel sur la transformée en Z La transformée en Z peut être vue comme l équivalent, dans le domaine discret, de la transformée de Laplace qui s applique au domaine continu. - La transformée en Z est la résultante de l application de la transformée de Laplace sur un signal échantillonné. À l entrée de l échantillonneur bloqueur, le signal analogique est continu : x(t). À sa sortie, le signal est discret (échantillonné) : x s (t).
Signal discret dans le domaine du temps Un signal discret est définit par la série suivante : x s (t) = (x(t)δ(t kt S )) (5) k=0 avec la période d échantillonnage T S = 1/F S, F S étant la fréquence d échantillonnage. Le terme δ(t kt S ) est une impulsion retardée de kt S.
Transformée de Laplace de ce signal La transformée de Laplace est définie par cette intégrale : X s (s) = 0 x s (t)e st dt (6) Avec la définition donnée pour x s (t), on trouve : X s (s) = = { 0 0 k=0 (x(t)δ(t kt S )) } e st dt (x(t)δ(t) + x(t)δ(t T S ) +...) e st dt (7)
La transformée de Laplace d une impulsion Une propriété importante de δ(t) est : 0 f (t)δ(t kt S )dt = f (kt S ) (8) Ainsi, on peut écrire : X s (s) = x(kt S )e skt S (9) k=0 Avec la définition donnée pour x s (t), on trouve : X s (s) = x(0) + x(t S )e st S + x(2t S )e 2sT S +... (10)
Signal discret Pour simplifier l écriture, définissons z = e st S. Alors : X s (z) = k=0 ( x(kt S )z k) = ZT {x[k]} (11) Regardons maintenant deux exemples de transformées en Z.
Premier exemple de transformée en Z Soit x[n] = e na, avec n 0 et a une constante : X(z) = e na z n = (e a z 1) n i=0 i=0 Posons u n = ( e a z 1) n. Or, il existe une série semblable qui donne : u n = 1 1 u i=0 Cette série converge si u < 1. Donc, si e a z 1 < 1, on peut alors écrire : X(z) = 1 1 e a z 1 = z z e a
Second exemple de transformée en Z Soit x[n] = sin(nωt S ), avec n 0, ω la pulsation du sinusoïde et T S la période d échantillonnage. En utilisant une des relations d Euler, on peut écrire : Ainsi : sin(nωt S ) = ejnωt S e jnωt S 2j X(z) = 1 2j (e jωt S z n e jωt S z n) n=0 En se basant sur l exemple précédent, on peut écrire : X(z) = 1 ( ) z 2j z e jωt z S z e jωt S
Second exemple de transformée en Z On peut simplifier la dernière équation en mettant tout sous le même dénominateur : X(z) = 1 ( z(z e jωt S ) z(z e jωt ) S ) 2j (z e jωt S )(z e jωt S ) Ce qui donne : X(z) = 1 ( z(e jωt S e jωt ) S ) 2j z 2 (e jωt S + e jωt S )z + 1
Second exemple de transformée en Z Le numérateur divisé par 2j, c est le sinus. Le coefficient de z au dénominateur correspond à cette relation d Euler : Ce qui mène à : cos(ωt S ) = ejωt S + e jωt S 2 X(z) = z sin(ωt S ) z 2 2z cos(ωt S ) + 1 (12) Note : ω = 2πf, avec f la fréquence de la sinusoïde.
Outline 1 Signaux 2 Filtrage 3 Transformée en Z 4 Filtres FIR 5 Fenêtres
Filtres FIR Un filtre FIR est basé sur l équation suivante : y[n] = (h[k]x[n k]) (13) k=0 Si l entrée x[n] est une impulsion à t = 0 (soit δ(0), alors y[n] = h[n]. Il se trouve que y[n] suivra donc la réponse impulsionnelle représentée par la suite des h[n]. Cette opération est nommée une convolution et est représentée par y[n] = h[n] x[n]. Dans le domaine Z cette convolution correspond à ce produit Y (z) = H(z)X(z).
Filtres FIR La définition de H(z) est : H(z) = (h[k]z k ) (14) k=0 Puisqu un microcontrôleur a une quantité de mémoire finie, il faut choisir un H(z) plus réaliste en le tronquant. Considérons que nous changeons la borne supérieure de la somme de à N. - Il suffit alors de connaître les N + 1 coefficients, de h[0] à h[n], pour obtenir le filtre. - Il faut mémoriser N + 1 données de x[n] à x[n N].
Filtre FIR La définition de H(z) tronquée est : H(z) = N (h[k]z k ) k=0 =h[0]z 0 + h[1]z 1 +... + h[n]z N = h[0]zn + h[1]z N 1 +... + h[n] z N Ce filtre présente un grand avantage. Il est toujours stable, puisque les N pôles de ce filtre sont à 0. (15)
Structure du filtre FIR Cette structure met en évidence les délais z 1 présents dans le filtre.
Exemple de filtre FIR Un filtre à moyenne mobile est un filtre FIR : H(z) = Réponse en fréquence. 9 (0.1z k ) (16) k=0
Second exemple de filtre FIR Soit la fonction de transfert suivante : G(z) = 0.995z 0.995 z 0.99 qui est un filtre passe haut dont la fréquence de coupure est de 100 Hz (le système est échantillonné à 10 khz). Considérons les 16 premiers termes de la réponse impulsionnelle de ce filtre :. H(z) =0.9950 0.0099z 1 0.0098z 2 0.0097z 3 0.0096z 4 0.0095z 5 0.0094z 6 0.0093z 7 (17) 0.0092z 8 0.0091z 9 0.0090z 10 0.0090z 11 0.0089z 12 0.0088z 13 0.0087z 14 0.0086z 15 (18)
Second exemple de filtre FIR Ce filtre comporte une certaine réponse en fréquence (en bleu G(z), en vert H(z) en rouge FIR à 100 points de la réponse impulsionnelle de G(z)) :
Filtre FIR en structure échelle Certaines applications (filtrage adaptatif, traitement de la voie) ont besoin de filtres FIR ayant des structures particulières. Un de ces structures est nommée "structure en échelle" (Lattice structure).
Filtre FIR en structure échelle Pour l étage i, on peut écrire : et : y i [n] = y i 1 [n] + k i e i 1 [n 1] (19) e i [n] = k i y i 1 [n] + e i 1 [n 1] (20) Le premier étage reçoit comme entrées x[n]. Donc : Pour l étage #1, on peut écrire : y 1 [n] = x[n] + k 1 x[n 1] (21) et : e 1 [n] = k 1 x[n] + x[n 1] (22)
Filtre FIR en structure échelle Pour le second étage, on peut écrire : y 2 [n] =y 1 [n] + k 2 e 1 [n 1] =x[n] + k 1 (1 + k 2 )x[n 1] + k 2 x[n 2] (23) et : e 2 [n] =k 2 y 1 [n] + e 1 [n 1] =k 2 x[n] + k 1 (1 + k 2 )x[n 1] + x[n 2] (24) Remarquez vous les coefficients des deux équations?
Filtre FIR en structure échelle Si on généralise pour un filtre du N-ième ordre : et : N y N [n] = a i x[n i] (25) i=0 N e N [n] = a N i x[n i] (26) i=0 Pour un filtre du 2-ième ordre : on peut tirer de l acétate précédente que a 0 = 1,a 1 = k 1 (1 + k 2 ) et a 2 = k 2. Il serait intéressant de trouver la relation entre les a et les k.
Filtre FIR en structure échelle La transformée en Z du filtre du N-ième ordre est : et : N Y N (z) = a i X(z)z i (27) i=0 N E N (z) = a N i X(z)z i (28) i=0 On remarque que E N (z) = z N Y N (1/z). Cela signifie que le polynôme E N (z) est le polynôme image de Y N (z).
Filtre FIR en structure échelle La transformée en Z de la r-ième section du filtre est : et : Y r (z) = Y r 1 (z) + k r z 1 E r 1 (z) (29) E r (z) = k r Y r 1 (z) + z 1 E r 1 (z) (30) La dernière équation peut s écrire : E r 1 (z) = E r(z) k r Y r 1 (z) z 1 (31)
Filtre FIR en structure échelle Puis en remplaçant E r 1 (z) dans l équation de Y r (z) : Ensuite : Y r (z) = Y r 1 (z) + k r z 1 E r(z) k r Y r 1 (z) z 1 (32) Y r (z) = Y r 1 (z) + k r (E r (z) k r Y r 1 (z)) (33) Et isolant Y r 1 (z), on obtient : Y r 1 (z) = Y r(z) k r E r (z) 1 k 2 r (34)
Filtre FIR en structure échelle En utilisant la notion de polynôme image : Y r 1 (z) = Y r(z) k r z r Y r (1/z) 1 k 2 r (35) Or : et : r Y r (z) = a r,i z i (36) i=0 r Y r (1/z) = a r,(r i) z r i (37) i=0
Filtre FIR en structure échelle En utilisant la notion de polynôme image : r a (r 1),i z i = i=0 Puis : ri=0 a r,i z i k r z r r i=0 a r,(r i) z r i 1 k 2 r (38) r a (r 1),i z i = i=0 ri=0 a r,i z i k r ri=0 a r,(r i) z i 1 k 2 r (39) Ce qui mène à la relation recherchée : a (r 1),i = a r,i k r a r,(r i) 1 k 2 r (40)
Filtre FIR en structure échelle Cette relation : a (r 1),i = a r,i k r a r,(r i) 1 k 2 r est utilisée de façon itérative avec i = 0, 1, 2,..., r 1 et r = N, N 1, N 2,..., 1. Le gain k r est posé égal à a r,r et k r 1. Cette approche permet de calculer les gains k i à partir des coefficients a i,j.
Filtre FIR en structure échelle - Exemple Soit ce filtre de 2e ordre : Y 2 (z) = 1 + 0.2z 1 0.5z 2 = a 2,0 + a 2,1 z 1 + a 2,2 z 2 On commence en posant r = N = 2 (filtre du 2e ordre). Le gain k 2 = a 2,2 = 0.5. Puis on calcule : a 1,0 = a 2,0 k 2 a 2,1 1 k 2 2 = 1 ( 0.5)( 0.5) 1 ( 0.5) 2 = 1 a 1,1 = a 2,1 k 2 a 2,1 1 k 2 2 = 0.2 ( 0.5) 0.2 1 ( 0.5) 2 = 0.4
Filtre FIR en structure échelle - Exemple On décrémente r à 1 et on recommence. Le gain k 1 = a 1,1 = 0.4. Cela met un terme au calculs.
Filtre FIR en structure échelle - Obtenir les coefficients a i Soit k 1 = 0.4 et k 2 = 0.5. On peut procéder au calcul suivant : a r,r = k r Donc, a 1,1 = k 1 = 0.4 et a 1,0 = 1, ce qui mène à : Y 1 = 1 + 0.4z 1 Puis a 2,2 = k 2 = 0.5 et a 2,0 = 1. De plus : Ce qui mène à : a 2,1 = a 1,1 + k 2 a 1,1 = 0.4 0.5 0.4 = 0.2 Y (z) = 1 + 0.2z 1 0.5z 2
Filtres FIR basés sur la transformée de Fourier On peut créer des filtres FIR en se basant sur la transformée de Fourier. Pour ce faire définit le spectre en fréquence désiré du filtre : H d (ω) = C n e jnωt S (41) Normalisons les fréquences avec ν = f /F N, avec F N = F S /2 et T S = 1/F S : H d (ν) = C n e jnπν (42) Les coefficients de Fourier C n sont calculés avec : C n = 1 2 +1 1 Rappel : e jnπν = cos(nπν) j sin(nπν). H d (ν)e jnπν dν (43)
Filtres FIR basés sur la transformée de Fourier De plus, si on intègre une fonction impaire entre -1 et +1 cela donne 0. Puisque H(ν) est une fonction paire, alors : avec n 0. Et C n = C n. C n = 1 0 H d (ν) cos(nπν)dν (44) On approxime H d (ν) en réduisant le nombre de coefficients à 2Q + 1 : Q H a (ω) = C n e jnωt S (45) Q
Calcul des coefficients C n Filtre passe bas : C n = sin(nπν 1) nπ En vertu de la règle de l Hopital, C 0 = ν 1. Filtre passe haut : Filtre passe bande (ν 2 > ν 1 ) : Filtre coupe bande (ν 2 > ν 1 ) : C n = sin(nπν 1) nπ C n = sin(nπν 2) sin(nπν 1 ) nπ C n = sin(nπν 1) sin(nπν 2 ) nπ (46) (47) (48) (49)
Calcul des coefficients C n - Exemple Il faut concevoir un filtre passe bas ayant une fréquence de coupure de 1 khz. Le signal est échantillonné à 10 khz et le filtre est de 33 points. Calcul de la fréquence de coupure normalisée ν 1 : ν 1 = f c F N = 2f c F S = 2000 10000 = 0.2 La formule pour obtenir les 16 coefficients (car 2Q + 1 = 33) est : C n = sin(0.2nπ) (50) nπ Les coefficients sont : C 0 = 0.2, C 1 = 0.1871, C 2 = 0.1514, C 3 = 0.1009, C 4 = 0.0468, C 5 = 0, C 6 = 0.0312, C 7 = 0.0432, C 8 = 0.0378, C 9 = 0.0208, C 10 = 0, C 11 = 0.017, C 12 = 0.0252, C 13 = 0.0233, C 14 = 0.0134, C 15 = 0 et C 16 = 0.0117.
Outline 1 Signaux 2 Filtrage 3 Transformée en Z 4 Filtres FIR 5 Fenêtres
Les fonctions de fenêtres Pour le FIR, on ne considère qu une partie des points, car normalement, la réponse impulsionnelle est de durée infinie. Pour pouvoir l exploiter, il faut tronquer cette réponse. On tronque en multipliant la série par une fonction de fenêtre rectangulaire. { 1, si n Q; w R [n] = (51) 0, ailleurs.
Les fonctions de fenêtres - Fenêtre de Hann (ou Hanning) Le fait de ne considérer qu une partie des coefficients fait en sorte que la fonction de transfert sera tronquée. La fonction de fenêtre coupe très abruptement à ses frontières, ce qui entraîne certains problèmes. Pour améliorer le comportement du filtre, on peut ne considérer qu un certain nombre de points et utiliser une fonction différente pour pondérer chacun des points. Plusieurs personnes ont proposés diverses fonctions. Parmi ces fonctions, il y a la fenêtre de Hann (nommée aussi Hanning) : w HA [n] = { 0.5 + 0.5 cos(nπ/q), si n Q; 0, ailleurs. (52)
Les fonctions de fenêtres - Fenêtre de Hamming Un autre fonction de fenêtre est la fenêtre de Hamming : w H [n] = { 0.54 + 0.46 cos(nπ/q), si n Q; 0, ailleurs. (53)
Les fonctions de fenêtres - Fenêtre de Blackman Enfin, on trouve la fenêtre de Blackman : { 0.42 + 0.5 cos(nπ/q) + 0.08 cos(2nπ/q), si n Q; w B [n] = 0, ailleurs. (54)
Spécifications pour concevoir un filtre L ondulation maximale en bande passante est représentée par δ p et en bande bloquée par δ s. δ p db = 20 log 10 (1 + δ p ) δ s db = 20 log 10 (δ s )
Spécifications pour concevoir un filtre Les fréquences f pass et f stop délimitent les zones des bandes passante et coupées. La fréquence de coupure f c est définie par (f pass + f stop )/2. De plus f est définie par f pass f stop /f S, avec f S la fréquence d échantillonnage.
Spécifications pour concevoir un filtre Dans ce tableau, N représente le nombre minimum de points requis dans le filtre. Ce nombre est arrondit au nombre impair suivant. M = (N 1)/2.
Exemple de conception On désire concevoir un filtre passe haut possédant une ondulation maximale de 0.1 db dans la bande passante et une atténuation d au moins 40 db dans la bande bloquée. La fréquence d échantillonnage est de 2000 Hz. La bande passante s étend de 400 à 1000 Hz. La bande bloquée couvre de 0 à 250 Hz. Les spécifications d ondulation et d atténuation implique l utilisation d une fenêtre de Hanning, ou mieux. La fenêtre rectangulaire est éliminée. f = 400 250 /2000 = 0.075 N = 3.1/ f = 41.33 N = 43.
Exemple de conception Le filtre passe haute comportera 43 coefficients. La fréquence de coupure est f c = (400 + 250)/2 = 325 Hz. La fréquence de Nyquist est f N = f S /2 = 1000 Hz. La fréquence normalisée est : ν = f c /f N = 0.325 Les coefficients de Fourier du filtre sont : C n = sin(nπν) nπ Les coefficients de la fenêtre de Hanning sont : ( ) nπ w n = 0.5 + 0.5 cos 21 avec n [ 21, +21].
Exemple de conception Les coefficients du filtre sont : h n = C n 21 w n 21 ( ( )) sin((n 21)πν) (n 21)π = 0.5 + 0.5 cos (n 21)π 21 avec n [0, 42] (ce qui donne 43 coefficients).