Un exemple plus élaboré d'utilisation de filtres de fréquence
Ce deuxième exemple a pour but d'illustrer les différences entre des filtres simples et des filtres plus complexes. Dans le premier exemple, nous n'avions pas besoin d'un filtre avec une grande performance pour séparer la petite bande utile du signal de la large bande du bruit. De toute façon il restait du bruit dans le signal final, ce qui limitait l'utilité d'un filtre plus performant (dès que le gain par un filtre plus puissant était négligeable devant le bruit restant, il perdait son utilité). Cette fois nous allons étudier le cas où le signal utile se trouve dans une bande passante étroite, entre deux bandes voisines contenant du bruit, mais sans chevauchement. C'est souvent le cas avec de la radio, où le signal utile se trouve dans une bande spécifique, à coté d'autres bandes contenant d'autres signaux que l'on considère comme du bruit. Cette fois, la performance du filtre de séparer la bande utile du bruit sera primordiale.
Dans cet exemple, nous allons utiliser des formules relativement simples pour génerer le bruit et le signal. Bien sûr cela ne peut pas être vrai dans un réel problème: si nous connaissons l'expression mathématique du signal, nous ne devons plus essayer de le recevoir !
Le signal est s(t), et le bruit contient deux composants: s2a(t) et s2b(t). t est donné en micro secondes.
s = cos(180.02*t)*sin(8.81*sin(t)+2*t); s2a = cos(230.3*t)*sin(7.9*sin(t)+5*t); s2b = cos(130.3*t)*sin(7.9*sin(t)+5*t); s2 = s2a + s2b;
Le signal et le bruit ont l'aspect suivant:
Le signal bruité est alors:
Nous reconnaissons à peine le battement du signal original dans le signal bruité.
Les densités spectrales nous montrent que le signal occupe une bande étroite libre de toute interférence, mais avec des bandes bruités voisines:
Cela implique qu'un filtre parfait qui coupe parfaitement la bande de 25 MHz à 32 MHz permettrait de reconstruire parfaitement le signal utile du signal bruité:
Nous observons effectivement que le signal original et le signal bruité filtré, sont identiques. Comme dans le premier exemple, nous avons pu construire un filtre parfait car nous avons enregistré le signal en entier. Une transformation de Fourier du signal entier nous permet de garder la portion du spectre entre 25 MHz et 32 MHz. La transformation inverse reconstruit alors le signal parfaitement filtré, comme s'il passait à travers un filtre parfait passe-bande.
Nous allons maintenant construire un filtre de troisième ordre Butterworth, Tchebychev I et Elliptique avec une bande passante de 25 MHz à 32 MHz, et nous allons l'appliquer ou signal bruité. Ces filtres introduisent un retard variable. Pour pouvoir comparer le résultat au signal original, nous avons corrigé pour ce retard de telle façon que nous trouvons le meilleur accord entre le signal de sortie du filtre et le signal original. Ce retard corrigé est de 106 ns pour le filtre Butterworth, et 72 ns pour les filtres Tchebychev I et Elliptiques.
Nous observons que les filtres de troisième ordre peuvent restituer l'essentiel du signal d'entrée, mais qu'il reste des déviations:
Selon l'application, cette performance peut être suffisante, ou non.
Si nous augmentons à des filtres d'ordre 6, le résultat s'améliore sensiblement:
Nous avons encore corrigé pour les délais: 176 ns pour le filtre Butterworth, 212 ns pour le filtre Tchebychev I, et 140 ns pour le filtre elliptique.
Filtres analogiques passives.
Si nous pouvons accepter le résultat des filtres de troisième ordre Butterworth, nous pouvons le construire de façon plutôt simple avec des éléments passifs:
Comme nous pouvons constater, les valeurs des inductances et des condensateurs sont très raisonnables (il faudra choisir des valeurs commerciales qui se rapprochent des valeurs théoriques indiqués).
La réponse de ce filtre est:
La bande passante est très lisse (c'est la propriété fondamentale d'un filtre Butterworth) mais la coupure n'est pas très rapide. Nous voyons qu'autour de 20 MHz, nous laissons passer encore un dixième du signal. C'est pourquoi ce filtre ne donne pas une reconstruction parfaite et un réjet parfait du bruit. L'application déterminera si ce résultat est acceptable ou non, mais le filtre reste relativement simple à construire.Si nous passons au filtre passif elliptique de sixième ordre, le circuit devient bien plus compliqué:
La réponse du circuit, avec des composants parfaits, est impressionnante:
Nous voyons que la bande du bruit autour de 20 MHz est supprimé de 60 dB !
Apart d'une étude de la non-idéalité des composants, ce filtre nous paraît parfaitement réalisable. Comme ce filtre est fait essentiellement par des composants non-dissipatifs, il n'ajoute presque pas de bruit, est parfaitement linéaire (dans la mesure où les inductances sont linéaires). Les valeurs des composants sont dans des plages très accessibles. Si on peut construire un tel filtre, il ne faudrait pas hésiter. La question est: pouvons-nous le faire ?
Le problème qui se posera est la précision des composants nécessaire. Si nous remplaçons les valeurs théoriques par des valeurs dans la série commerciale E12 (c'est un peu grossier, d'accord) et nous considérons que les inductances ont une résistance de 0.1 Ohm et une capacité parasitique de 1 pF, notre fonction de transfert devient bien moins jolie:
La sélectivité reste toujours très bonne et la réjection du bruit reste impressionante. Mais la bande passante s'est détériorée sensiblement. Il y a d'abord une plus grande perte, mais il y a surtout une variation du gain dans la bande passante de plus de 10 dB, là où nous l'avions spécifié en dessous de 0.2 dB. Cela peut introduire des distorsions importantes du signal, plus importantes que l'influence du bruit avec le filtre de troisième ordre, ce qui nous ferait préférer ce filtre plus simple.
Il est vrai que nous avons été grossier en utilisant la série E12, et 0.1 ohm de résistance série peut être amélioré en choisissant des composants de grande qualité. Mais il y a pire sur le marché. Cela nous montre le danger de la conception de filtres passifs sophistiqués: ils requièrent des composants extrêmement précis et de grande qualité. La tolérance des valeurs arrondis à des valeurs commerciales et les éléments parasitiques peuvent ruiner totalement un effet à priori spectaculaire d'un filtre d'ordre élevé. Il faut beaucoup d'attention pour faire fonctionner un pareil filtre en réalité.
Filtres actifs.
En général il est plus facile de trouver des condensateurs et des résistances proches d'un comportement idéal, que des inductances. C'est pourquoi des filtres actifs souffrent moins du problème précédent de non-idéalités de composants que des filtres passifs. Il est possible de construire des filtres actifs de plusieurs façons différentes et ce n'est pas toujours le filtre avec la topologie la plus simple et le moins d' amplificateurs opérationnels qui fourniront la performance la plus satisfaisante ou qui auraient la sensibilité la moins critique pour les tolérances des composants.
Considérons d'abord un filtre d'ordre 6 de Cauer avec une topologie simple (avec un amplificateur opérationnel par étage):
La réponse est:
Cette réponse nous semble correct, sauf que la suppression des bandes de bruit n'est pas très forte. Cela vient du fait que nous avons vraiment construit un filtre de 6ième ordre (6 variables d'état) alors que les filtres passifs étaient des filtres de 6ième ordre passe-bas transformés en filtres passe-bande ce qui double l'ordre: les filtres passifs étaient des filtres de 12ième ordre en réalité. Notre filtre actif de 6ième ordre doit donc être comparé au filtre de troisième ordre passif (qui était devenu un filtre de sixième ordre). Le circuit s'avère beaucoup moins sensible aux tolérances des petits condensateurs ou des résistances qui se comportent comme des composants quasi-idéaux à ces fréquences. Mais il y a un problème: les amplificateurs opérationnels doivent avoir un produit gain-bande insensé: pour le circuit en question, nous avons spécifié une valeur de 40 GHz !! Ce n'est pas raisonnable. Du moment où nous choisissons une valeur plus raisonnable, la fonction de transfert est tellement vilaine qu'on ne reconnaît même plus un filtre.
C'est pour cela que des topologies plus compliqués peuvent nous aider:
Chaque étage a 3 amplificateurs opérationnels, mais cette fois nous avons pu limiter leur produit gain bande passante à 2 GHz. C'est déjà un amplificateur très performant.
Le résultat prend la forme suivante:
Nous observons une distortion dans la bande passante, mais au moins, ce filtre actif est réalisable et pas trop sensible aux composants passifs.
On peut se demander si on n'est pas mieux servi avec un filtre passif qu'avec ce filtre actif à la topologie compliquée avec une réponse de qualité médiocre.
Filtres numériques
A première vue, sur papier, notre application favoriserait un filtre analogique. Dans la mesure où un filtre passif peut être construit, il semble la meilleure solution à notre problème: les valeurs des composants sont très accessibles, et le filtre n'est pas trop compliqué. Les filtres actifs commencent à être beaucoup plus sophistiqués, et ont besoin d'amplificateurs opérationnels à large bande. Même des circuits sophistiqués nous donnent des résultats médiocres. La difficulté de réaliser des filtres analogiques se trouve dans le fait que nous avons besoin d'une grande sélectivité de signal et une bande passante plutôt plate. Cela implique des filtres d'un ordre très élevé ce qui implique des composants de grande précision. Comme nous sommes dans des fréquences de l'ordre de 30 MHz, pour que les amplificateurs opérationnels soient suffisamment parfaits, il faut que leur produit gain-bande doit au moins être plusieurs GHz. Ces amplificateurs existent, mais ce ne sont pas des composants bon marché ou facile à mettre en œuvre.
Cela veut dire que nous pouvons envisager aussi de dépenser un effort sur la variante numérique. Comme le signal utile se trouve dans les 30 MHz, il faudrait une fréquence d'échantillonnage de l'ordre de 100 MHz. Dépendant de la précision et la dynamique requise, des convertisseurs 12 bit 100 MHz sont relativement faciles à mettre en oeuvre. Entre plusieurs amplificateurs opérationnels de plusieurs GHz, ou un bon convertisseur numérique à 100 MHz et une certaine capacité de traitement, la balance pourrait basculer du coté numérique.
Bien sûr il faut un conditionnement du signal avant la numérisation. Il faudra un filtre anti-repliement plus sophistiqué qu'un simple RC, car nous avons beaucoup moins de marge entre la fréquence utile et la fréquence d'échantillonnage. Avec une fréquence utile de 30 MHz et une fréquence d'échantillonnage à 100 MHz, il faut couper entre 30 et 50 MHz. Il faut donc au moins un filtre de 4ième ordre passe-bas. Mais ce filtre devra être beaucoup moins sélectif. Un filtre Butterworth de 4ième ordre fera l'affaire.
Pour traiter un flux de 12 bits à 100 MHz, un petit FPGA sera sans doute préférable. Mais indépendant de la technologie de traitement utilisée, un filtre Cauer de 6ième ordre aura un algorithme comme suivant. Nous avons sectionné le filtre en une succession de filtres de deuxième ordre. Cela aura inconvenance d'ajouter quelques coups d'horloge au délai strictement nécessaire, mais aura le grand avantage d'être numériquement bien plus stable qu'une application du filtre en un seul calcul.
Chaque section prendra en compte 2 pôles et deux zéros conjugués.
secin[0] = secin[1];
secin[1] = secin[2];
secin[2] = secinnew;
outnew = secin[2] - 2 * zre * secin[1] + (zre * zre + zim * zim) * secin[0];
outnew = outnew + 2 * pre * secout[1] - (pre * pre + pim * pim) * secout[0];
secout[0] = secout[1];
secout[1] = outnew;
Cette section sera répétée (avec des variables d'état séparés pour chaque section bien sûr) 6 fois:
La première section aura les valeurs:
zre = 0.9727360 and zim = 0.2319154 ; pre = 0.9246654 and pim = 0.3238547
La deuxième:
zre = 0.9561635 and zim = 0.2928334 ; pre = 0.9421167 and pim = 0.3103005
La troisième:
zre = 0.9533496 and zim = 0.3018683 ; pre = 0.9496072 and pim = 0.3076116
La quatrième:
zre = 0.8597706 and zim = 0.5106804 ; pre = 0.9101001 and pim = 0.3570613
La cinquième:
zre = 0.9111290 and zim = 0.4121213 ; pre = 0.9130628 and pim = 0.3826558
La sixième:
zre = 0.9163805 and zim = 0.4003083 ; pre = 0.9176718 and pim = 0.3914969
Le résultat doit être multiplié par 0.0096172 comme facteur final d'échelle. Bien sûr il serait intelligent de remplacer les calculs de constantes (comme pre * pre + pim * pim) en dehors de la boucle d'échantillons. Nous n'avons fait que faire une esquisse de l'algorithme, nous ne montrons pas une implémentation actuelle qui dépendra des choix du hardware. Il faut faire à peu près 24 additions, et 24 multiplications par échantillon. Cela implique, à 100 Mé/s, 5 Gflops/s. C'est très élevé pour un simple processeur, mais il n'y a aucun problème pour un FPGA, où ces opérations peuvent êtres faites en parallèle. Sur la famille Altera, cela prendrait quelques milliers de LE. Ces composants se vendent pour 20-30 Euro pièce.
Cet algorithme donne exactement les mêmes résultats que le filtre Cauer théorique que nous avions utilisé. Comme nous voyons, la solution numérique demande un modeste investissement, mais le résultat est garanti et de grande qualité. Il ne faut pas oublier le filtre anti-repliement entre 30 et 50 MHz, cependant.
Conclusion
Nous avons étudié un problème où grande sélectivité fréquentielle était primordiale dans la fonction du filtre, dans un domaine de fréquences relativement élevés (dizaines de MHz). Traditionnellement nous nous trouvons dans le domaine du filtre passif discret. Il est effectivement possible de construire des filtres relativement sélectifs de cette façon, mais si on veut vraiment une très grande sélectivité, les exigences sur la qualité des composants devient problématique: les moindres tolérances ou non-idéalités peuvent detruire totalement les propriétés du filtre. Il ne faut pas être trop ambitieux ou le filtre ne fonctionnera pas dans le monde réel avec de vrais composants.
Le domaine des dizaines de MHz est moins adapté aux filtres actifs. Le problème des composants passifs n'est plus d'actualité, mais la bande passante des amplificateurs opérationnels est maintenant le problème. Pour des topologies simples les exigences pour les amplificateurs ne sont pas réalistes ; pour des topologies plus sophistiqués, il faut des amplificateurs de très large bande, accessibles mais chers et difficiles à mettre en œuvre. Tout compte fait, un filtre actif aura une performance tellement dégradée qu'il est sans doute préférable d'utiliser un filtre passif moins ambitieux.
Finalement, nous indiquons qu'un filtre numérique semble être la solution la plus fiable à un coût raisonnable quand il nous faut vraiment une grande sélectivité, mais aux fréquences utilisés, le coût n'est pas négligeable.
Il faudrait vraiment évaluer le besoin de sélectivité pour l'application considérée. Le prix d'une sur-dimension de la sélectivité est élevé dans ce cas. Si nous pouvons vivre avec une sélectivité modérée, le filtre passif est adéquat. S'il faut plus de performance, la solution numérique s'impose, à un prix plus élevé.