Você está na página 1de 21

Les filtres numriques

1. Prsentation 2. Comparaisons entre FIR et IIR 3. Les FIR 4. Calculs des coefficients des FIR 5. Mthodes de structure des FIR a. FIR parallle b. FIR srie c. FIR LUT 6. Modlisation dun FIR srie en VHDL 7. Rsultats obtenus

page 2 page 4 page 5 page 9 page 12 page 13 page 15 page 17 page 20

-1-

1.

Prsentation

Lacquisition de signaux physiques, quels quils soient, est une opration souvent dlicate. Un simple convertisseur analogique-numrique permet de transformer une tension ou un courant en une donne numrique. Cela suffirait si les valeurs physiques ntaient pas troitement associes une multitude de signaux : autres signaux de mesure, signaux parasites tels que le bruit lectronique, les dcharges lectrostatiques, les fluctuations de la tension dalimentation. Tous ces signaux se combinent, sinterfrent et viennent polluer le signal utile. Afin de capturer correctement le signal recherch, un convertisseur analogiquenumrique est toujours associ des convertisseurs, des amplificateurs ou des filtres. Le rle de chacun est de mettre en forme les signaux pour les rendre propres : les convertisseurs transforment des frquences, des courants, des impulsions en tension, les amplificateurs adaptent lamplitude de la tension la plage dentre du convertisseur analogique-numrique. Le filtrage permet, quant lui, dextraire une partie de linformation lie un signal, dliminer des frquences parasites indsirables. Le filtrage peut sappliquer des signaux analogiques ou numriques. Quand on parle de filtrage de signaux de mesure, on pense immdiatement au filtrage analogique. Par exemple, le filtre anti-repliement, les filtres passe-bas de Bessel ou de Tchebychev, le filtre passe-bande utilisant un amplificateur oprationnel. Il existe bien dautres familles de filtres base de composants traditionnels : les filtres analogiques passifs RLC qui utilisent des rsistances, des condensateurs, des inductances, les filtres passifs rsonateurs base de quartz, de rsonateurs cramiques ou ondes de surface, les filtres passifs lignes imprimes, les filtres analogiques actifs intgrant des amplificateurs oprationnels ou des transistors, les filtres analogiques capacits commutes. Tous ces filtres se distinguent par une facilit de mise en uvre, un fonctionnement des frquences qui peuvent atteindre quelques gigahertz. Le revers de la mdaille rside dans la sensibilit de ces composants aux conditions externes (temprature, humidit,). La non-matrise de leurs tolrances nuit galement la prcision du filtragesurtout dans le cas de filtres exigeants. Pour saffranchir des limites des composants traditionnels, il existe une alternative : les filtres numriques. Les judicieux assemblages de rsistances, de capacits, dinductances, damplificateurs oprationnels des filtres analogiques sont ici remplacs par des algorithmes de calcul implments dans des microprocesseurs DSP ou des composants spcifiques du type FPGA. Les filtres numriques travaillent sur des signaux numriss et sont donc placs en aval des convertisseurs analogique-numrique. Le signal analogique dentre est dabord chantillonn un rythme lev, une frquence qui est au moins le double de la frquence maximale contenue dans le signal (sinon, une partie de linformation est perdue). Les chantillons obtenus sont ensuite numriss et cest sur ces chantillons numriques que travaillent les filtres numriques. Les algorithmes implments dans les filtres sont caractriss par un ensemble de coefficients permettant de dterminer la valeur dun chantillon de sortie en fonction des chantillons dentre et/ou de sortie prcdents. En quoi un filtrage numrique est-il plus performant quun filtrage analogique ? Tout dabord, on na pas les erreurs lies aux non-linarits des amplificateurs oprationnels ou aux mauvaises tolrances des rsistances, des capacits, que lon trouve sur les filtres analogiques. Les filtres numriques ne sont pas pour autant parfaits, leurs rsultats sont entachs par dautres sources derreurs. Lune dentre elles est lie la conversion analogique-numrique. La numrisation consiste capturer rgulirement une valeur dun

-2-

signal analogique pour la transformer en un nombre binaire. Lors de cette tape, on introduit une erreur darrondi, appele bruit de quantification, dont la valeur crte est parfaitement connue. Une autre source de bruit provient de larchitecture des microprocesseurs virgule fixe. Prenons lexemple dun filtre avec des coefficients valant en thorie 0,0001 et 0,9999 pour deux dentre eux et implment sur DSP (Digital Signal Processor) virgule fixe. Ce genre de DSP autorise pour valeurs de paramtres 0, 0,1, 0,2Il faut donc arrondir les coefficients de lalgorithme aux valeurs possibles du DSP. Cette opration implique une erreur supplmentaire : cest le bruit de calcul. On retrouve le mme phnomne avec les rsultats des oprations de base (multiplication, addition, soustraction et division). Contrairement aux erreurs issues de la non-linarit des amplificateurs oprationnels ou des tolrances des composants, les bruits de quantification et de calcul sont parfaitement connus et ils restent stables. Les filtres numriques gagnent donc en prcision et en reproductibilit. Il est mme possible damliorer la prcision en rduisant le bruit de quantification. Pour cela, il faut utiliser des microprocesseurs disposant dun nombre de bits plus grand. Ainsi, le pas de quantification, donc lerreur entre la valeur relle et larrondi, seront plus petits. En ce qui concerne le bruit de calcul li aux microprocesseurs virgule fixe, une solution consiste utiliser des FPGA virgule flottante. Toutes les valeurs des coefficients dun filtre numrique sont possibles sans arrondi, ce qui rend le bruit de calcul ngligeable. En contrepartie, ces processeurs virgule flottante requirent une puissance de calcul plus importante, ralentissant les temps dexcution. Avec les volutions technologiques des composants, ce handicap sestompe progressivement. Le filtrage numrique apporte dautres avantages par rapport aux filtres analogiques. Changer de gabarit dun filtre (ondulation dans la bande passante, ordre du filtre, affaiblissement dans la bande de rjection) ou mme de changer de filtre (passe-bas en passehaut) revient modifier les coefficients dun algorithme ou lalgorithme en lui-mme. Ces oprations seffectuent par logiciel. Il nest donc plus ncessaire denlever et dassembler diffremment rsistances, capacits, amplificateurs oprationnels.

-3-

Tableau 4 : comparaison entre le filtrage numrique et le filtrage analogique.

2.

Comparaisons entre FIR et IIR


M N

La fonction de transfert dun filtre numrique est :

y ( n) = a k . x ( n k ) b j . y ( n j )
k =0 j =1
ak et bj tant les coefficients, x lchantillon dentre et y lchantillon de sortie. Il existe deux types de filtres numriques : Les FIR (Finite Impulse Response) qui sont stables donc pas de ples (bj=0). Les IIR (Infinie Impulsion Response) qui sont stables uniquement si les modules de leurs ples sont suprieurs 1.

-4-

Voici un tableau comparant ces deux types de filtres numriques :

Tableau 5 : comparaisons entre FIR et IIR.

3.

Les FIR

Pour effectuer le gabarit dun filtre numrique non-rcursifs (FIR), il est ncessaire de connatre : Le taux dondulation dans la bande passante (1) ; Le taux daffaiblissement dans la bande rejets (2) ; La bande de transition F = fp fc.

Figure 16 : Gabarit dun FIR.

A partir de ces diffrents paramtres, il est possible de choisir une fentre approprie. En effet, il existe plusieurs fentres mais 4 dentre elles sont les plus rpandues pour dfinir un FIR : La fentre rectangulaire ; La fentre de Hamming ; La fentre de Hanning ; La fentre de Blackman.

-5-

Fentre Rectangulaire :

Figure 17 : Fentre Rectangulaire (256 samples 250 kHz, fc=10 kHz)

Bande de transition troite (infrieure 1 kHz). Attnuation stagnante dans la bande rejete (-55 dB).

w[ n] = 1

Fentre de Hamming :

Figure 18 : Fentre de Hamming (256 samples 250 kHz, fc=10 kHz)

Attnuation stagnante dans la bande rejete (-75 dB). Bande de transition troite (infrieure 2 kHz).

w[n] = 0.54 + 0.46 cos( 2

n ) 2M + 1

-6-

Fentre de Hanning :

Figure 19 : Fentre de Hanning (256 samples 250 kHz, Fc=10 kHz)

Meilleure attnuation dans la bande coupe que la fentre de Hamming. Bande de transition plus grande (40 dB dattnuation contre 60 dB pour la fentre de Hamming).

w[n] = 0.5 + 0.5 cos(2


Fentre de Blackman :

n ) 2M + 1

Figure 20 : Fentre de Blackman (256 samples 250 kHz, Fc=10 kHz)

Nette attnuation en bande rejete. Faible bande de transition (2,5 kHz pour atteindre 60 dB dattnuation contre 2 kHz pour la fentre de Hanning).

w[ n] = 0.42 + 0.46 cos( 2

n n ) + 0.08 cos( 2 ) 2M + 1 2M + 1
-7-

Figure 21 : Comparaisons des diffrentes fentres.

Chacune dentre elles possde leurs propres avantages et inconvnients. Par exemple, si lon veut un filtre ayant une faible bande de transition, peu importe lattnuation, il est prfrable dutiliser une fentre Rectangulaire. En revanche, sil est question dune attnuation minimale de 30 dB, il vaut employer une fentre de Hanning. La fentre de Blackman correspond aussi ce gabarit du filtre mais sa bande de transition est trop importante.

Tableau 6 : Principales caractristiques des fentres.

Au plus le nombre dchantillons utiliss dans le filtre est important, au plus la bande de transition est rduite. En revanche, le retard du premier chantillon valide saccrot.

-8-

4.

Calculs des coefficients des FIR

Les coefficients h(n) sont calculs grce la formule suivante :

h(n) = hD (n).w(n)
avec : hD(n), rponse impulsionnelle du filtre (filtre passe-bas par exemple) et w(n), rponse impulsionnelle de la fentre. Prenons par exemple un filtre passe-bas de rponse impulsionnelle :

hD ( n) = 2 f ' c sin c ( f ' c .( n N taps ))


ayant comme caractristiques principales : 33 chantillons ; frquence dchantillonnage 5 kHz ; frquence de coupure 2 kHz ; bande de transition de 0.25 kHz. fc=fc + f = (2 + 0.25)/5 = 0.45 Pour ce filtre-ci, la rponse impulsionelle de la fentre de Hamming est :

w[n] = 0.54 + 0.46 cos(2

n ) 33

Tableau 7 : Valeurs des coefficients du filtre passe-bas calcul.

-9-

Calculer 16 coefficients la main est faisable pour nimporte quel bipde, mais il est vrai que cest une perte de temps. Certains ont dvelopp des logiciels permettant de calculer tous ces coefficients. Cest le cas dALTERA qui fournit avec son logiciel Quartus II, un programme permettant certes, de calculer les coefficients des filtres mais aussi de gnrer des FIR en VHDL ou en Verilog. Le seul bmol de ce logiciel est que les filtres raliss ne sont pas modifiables souhait ; il nest pas possible avec un seul de ces filtres de raliser des filtres ayant des gabarits diffrents.

Figure 22 : Logiciel FIR Compiler MegaCore.

En cliquant sur Parameterize , vous pouvez entrer les diffrentes caractristiques de votre filtre. Dans cette premire interface, il est possible de choisir le nombre de bits de vos chantillons ainsi que de vos coefficients. Vous pouvez galement garder ou de tronquer le rsultat final. Il est possible destimer la place alloue dans le FPGA en modifiant la famille dsire, la mthode de calcul (parallle ou srie), la sauvegarde des chantillons et des coefficients. Pour vos coefficients, ils peuvent tre convertis en virgule fixe ou en virgule flottante. La rponse frquentielle ( Frequency Response ) et la rponse impulsionnelle ( Time Response & Coefficients Values) sont visualisables sur cette mme interface. Les caractristiques gnrales des filtres sont modifiables en cliquant sur New Coefficient Set ou sur Edit Coefficient Set .

- 10 -

Figure 23 : Interface Parameterize .

Figure 24 : Interface Coefficients Generator Dialog

- 11 -

Sur linterface Coefficients Generator Dialog , vous choisissez votre type de filtre (passe-bas, passe-haut, passe bande,), vos frquences de coupure, votre nombre dchantillons, votre frquence dchantillonnage ainsi que votre type de fentre. Vous cliquez sur Apply et vous visualisez la rponse frquentielle du filtre ainsi que les valeurs des coefficients. Une fois votre filtre clairement dfini, il ne vous reste plus qu gnrer le fichier VHDL le reprsentant en appuyant sur Generate de la premire interface du logiciel.

5.

Mthodes de structure des filtres

Il existe trois mthodes de raliser des FIR : FIR parallle ; FIR srie ; FIR utilisant les LUT ( Look-Up Table ). a. FIR parallle

Cette conception de filtre est trs simple et ne ncessite quun seul coup dhorloge pour restituer le rsultat. A chaque coup dhorloge, les chantillons sont dcals grce des registres dcalage. Pour chaque chantillon, un multiplieur est ncessaire. La rsolution de sortie de ce multiplieur dpend du nombre de bits du coefficient et de lchantillon. Si par exemple, le coefficient et lchantillon sont de 16 bits chacun, la rsolution du multiplieur sera alors de 32 bits. Un additionneur est ncessaire pour additionner les produits. Par exemple, un FIR de 8 chantillons ncessite 8 multiplieurs, un registre dcalage de 8x16 bits et un additionneur (voir figure ci-dessous).

Figure 25 : FIR parallle (1re mthode).

Etant donn que les coefficients sont symtriques, il nest gure ncessaire dutiliser un multiplieur par chantillon. Il est prfrable dutiliser moiti moins de multiplieurs en sommant les chantillons ayant les mmes coefficients puisque les multiplieurs ncessitent plus de places dans un FPGA quun additionneur.

- 12 -

Figure 26 : FIR parallle (2me mthode).

b.

FIR srie

Le filtre srie utilise nettement moins dlments logiques quun filtre parallle. En effet, pour effectuer un FIR et ce quelque soit le nombre dchantillons, vous navez besoin que dun multiplieur et de deux additionneurs. Cela devient trs intressant lorsque vous utilisez des FIR utilisant quelques centaines dchantillons. Le seul inconvnient majeur dans ce type de filtre est quil lui faut un certains temps pour obtenir le rsultat. Lorsquun chantillon arrive lentre du FIR, il est tout dabord, sauvegard dans une RAM interne au FPGA, de l, sensuit une longue phase de calculs pour aboutir au rsultat final. La premire opration est une addition entre les deux chantillons ayant le mme coefficient, tant donn que les coefficients sont soient symtriques, soient antisymtriques. Une fois utiliss, les chantillons sont par la suite dplacs dune adresse pour le prochain calcul. Laddition termine, la somme est multiplie par un coefficient sauvegard dans une RAM. Tous les produits sont somms entre eux afin davoir le rsultat final. Ce rsultat est obtenu une fois que tous les produits ont t somms.

- 13 -

DATA IN

RAM 1
CLK

CLK CLK CLK CLK

A D D

A D D

R E G

DATA OUT

RAM 2
LOAD CLK RAM Coefficients CLK

Figure 27 : FIR srie.

- 14 -

Oui mais voil, tant donn que toute cette phase de calcul est prvue pour deux chantillons la fois, il faut donc un nombre de coups dhorloge minimal gal la moiti des chantillons. Je mexplique, prenons lexemple dun FIR de 128 chantillons, il est ncessaire davoir au minimum 64 coups dhorloge pour obtenir le rsultat du calcul. Lorsque vous travaillez avec un taux dchantillonnage plus lent que la frquence du microprocesseur, cela est parfait mais si ce nest pas le cas, cette mthode sera trs complique employer Un filtre comme celui-ci ncessite 3 RAM internes dans le FPGA et 965 lments logiques. A titre de comparaison, un filtre structure parallle utilise pas moins de 9800 lments logiquesUn filtre srie correspond tout fait la carte CPCI 228 car pour 16 voies analogiques, vous pouvez utiliser 16 filtres de cette structure dans le FPGA. De plus, la frquence dchantillonnage est nettement plus lente que la frquence du FPGA. En effet, entre deux temps dchantillonnage, il y a 128 coups dhorloge du microprocesseur, ce qui est assez pour effectuer un FIR 128 voire 230 chantillons. c. FIR LUT

Les LUT sont utiliss pour remplacer les multiplieurs, gourmands en lments logiques. Il est tout simplement compos dune RAM plus ou moins grande selon la taille des entres. Le seul inconvnient est quune des deux entres doit tre une constante.

Figure 28 : LUT.

Dans la figure ci-dessus, la donne est considre comme ladresse de la RAM. La RAM est initialement remplie des valeurs possibles en sortie. C est le coefficient et la donne dentre est consiste de 5 bits. Si par exemple, la donne est 10011 en binaire, soit 19 en dcimal, le rsultat sera donc la valeur inscrite ladresse 10011 , donc 19 x C . Linconvnient majeur est quil faut remplir la RAM des valeurs possibles, c'est--dire que vous faites les trois-quarts du travail du FPGA. Il est galement possible deffectuer avec ce type de structures, des associations daddition et de multiplications. Prenons lexemple de lquation suivante :

output = c0 .w + c1 .x + c 2 . y + c3 .z

- 15 -

w, x, y et z sont des coefficients fixes et c0, c1, c2 et c3 sont les chantillons. Si dans lordre, ces quatre chantillons ont la valeur suivante, 1011 , cela quivaut la somme des coefficients w, y et z. Il y a 4 chantillons donc 16 rsultats possibles. Il suffit juste de remplir la RAM correspondante cette quation (voir figure ci-dessous).

Figure 29 : LUT 4 entres.

Etant donn que les chantillons sont rarement composs dun seul et unique bit, il est ncessaire de placer avant cette table un convertisseur parallle-srie par voie ainsi quun registre dcalage associ un additionneur en sortie du filtre.

Figure 30 : FIR 4 entres.

4 chantillons pour un filtre numrique, cest relativement peu si lon veut un filtre relativement slectif. Il est vrai que les coefficients sont symtriques donc on peut ajouter quelques additionneur en amont des convertisseurs parallle-srie, afin davoir un filtre 8 chantillons. Cela reste relativement peu ! Si on double le nombre dchantillons, c'est--dire 16, il faut pour cela, avoir une RAM de 256 x 20 bits et ainsi de suite. Imaginez un FIR de 64 chantillons, il faut une RAM avec un minimum despace adressable de 4 Go ! Impensable ! - 16 -

Il est donc ncessaire de sparer les chantillons par groupe de 4 et de sommer leurs rsultats (voir figure 31).

Figure 31 : FIR 8 entres.

Pour obtenir le rsultat final, il faut attendre 17 coups dhorloge (nombre de bits de lchantillon + overflow de la somme des deux chantillons). Dun point de vue, place occupe dans le FPGA, cela quivaut un filtre srie donc relativement faible. Linconvnient majeur pour ce type de filtre est quil est ncessaire davoir au moins deux fois plus de RAM ainsi que dlments logiques pour effectuer un FIR avec des chantillons et coefficients SIGNES ! Cette structure ne conviendra pas la carte CPCI228.

6.

Modlisation dun FIR srie en VHDL

Avant de concevoir le filtre en VHDL, il faut rflchir la manire que lon va procder pour le raliser. Pour cela, il vaut mieux commencer concevoir les chronogrammes (voir figure 32) avec les diffrents signaux ncessaires. Ensuite, il faut songer aux contraintes constructeurs, c'est--dire celles du FPGA, comme par exemple le temps dattente pour obtenir le rsultat en sortie de RAM. Chez Altera, il est ncessaire dattendre 2 cycles dhorloge aprs avoir plac ladresse en entre, pour avoir un rsultat cohrent. Sur la figure ci-aprs, les signaux ainsi que les bus forment le chronogramme principal du FIR 128 chantillons. Tout y est reprsent, des signaux servant aux calculs jusqu ceux utiliss pour dplacer les chantillons. A prciser galement que tous les signaux sont synchrones (dclenchement sur front montant du signal dhorloge). Dun point de vue VHDL, le multiplieur, les additionneurs, les RAMs et les registres ont tous t labors par le constructeur dans une librairie. Le FPGA utilis par la carte CPCI228 est un Cyclone compos de 20 000 portes logiques et de 64 RAM de 4096 bits chacune. En rcapitulant, on a besoin de 965 lments logiques et de 3 RAM par filtre, ce qui nous fait donc 48 RAM et 15440 lments logiques pour 16 filtres.

- 17 -

Figure 32: Chronogramme dun FIR 128 chantillons.

- 18 -

RAM Mesures

Bloc Multiplieur Bloc RAM Coefficients


Texte 11 : Dclaration des principaux composants du FIR 128.

Mise en forme des signaux Addition Multiplieur


Texte 12 : Bloc Multiplieur.

- 19 -

7.

Rsultats obtenus

Jai ralis 4 filtres FIR 128 chantillons utilisant chacun une fentre diffrente : Rectangulaire, Hamming, Hanning et Blackman. La frquence dchantillonnage est la frquence dchantillonnage maximale, c'est--dire 250 kHz et la frquence du FIR, 10 kHz. Voici quelques simulations diffrents frquences dentres
FIR d'ordre 128 Entre 5 kHz
15

10

5 Amplitude

Entre Rectangulaire Hanning 1 14 27 40 53 66 79 92 105 118 131 144 157 170 183 Hamming Blackman

-5

-10

-15 Echantillons

Figure 33 : Simulation du FIR 128 5 kHz.

FIR d'ordre 128 Entre 10 kHz


15

10

5 Amplitude

Entre Rectangulaire Hanning 1 12 23 34 45 56 67 78 89 100 111 122 133 144 155 166 177 Hamming Blackman

-5

-10

-15 Echantillons

Figure 34 : Simulation du FIR 128 10 kHz.

- 20 -

FIR d'ordre 128 Entre 15 kHz


15

10

5 Amplitude

Entre Rectangulaire Hanning 1 14 27 40 53 66 79 92 105 118 131 144 157 170 183 Hamming Blackman

-5

-10

-15 Echantillons

Figure 35 : Simulation du FIR 128 15 kHz.

Comme prvu, les 128 premiers chantillons de sortie sont inexploitables tant donn quils ne servent uniquement qu remplir les RAM. On obtient donc un filtre plutt slectif comme le montre le tableau ci-dessous. Frquence du signal dentre 10 kHz 12.5 kHz 14 kHz 15 kHz Attnuation -6.3 dB -22.6 dB -40.5 dB -60.5 dB

En effet, 12.5 kHz, on a dj une attnuation de plus de 22 dB, soit un signal de sortie 10 fois plus faible que le signal dentre. Il reste donc au total, 15 RAM car 48 sont utilises pour les filtres et une pour la table de motifs. Avec ces RAM restantes, il est possible de sauvegarder par moins de 60 filtres ( 128 chantillons) de gabarits tous diffrents. Cela sous entend quil est donc ncessaire de rajouter un ou plusieurs registres la carte afin de paramtrer chaque filtre un gabarit choisiDe plus, il nest pas difficile dinsrer ces filtres dans le programme du FPGA initial. Il suffit juste de relier les chantillons de sortie du convertisseur srie-parallle lentre du FIR et les diffrents signaux accompagnant ce filtre (horloge, validation de la donne,). Le signal de validation de la donne, issue du convertisseur srie-parallle doit tre retard jusqu la fin du calcul du FIR.

- 21 -

Você também pode gostar