Electronique numérique

Dans une communication numérique, l’information est transmise à l’aide d’une suite d’éléments binaires, susceptibles de présenter deux états notés respectivement "0" et "1". L’idée n’est pas nouvelle si l’on considère que les premières transmissions électriques ont été faites en Morse, en codant le signal par un élément binaire pouvant prendre deux états : le point et le trait [16]. Les technologies numériques ont pris une importance considérable dans la société et dans les instruments qui nous équipent. Pourtant la science du numérique est encore relativement peu enseignée dans le supérieur, mais il faut noter son apparition récente dans quelques programmes de classe préparatoire.

L’électronique numérique à l’agrégation : des notions d’électronique numérique peuvent apparaître dans les épreuves suivantes :

  • Leçons : aspects analogique et numérique du traitement d’un signal, étude spectrale.

  • MP43: Mise en forme, transport et détection de l’information. (indispensable)

  • MP45: Signal et bruit. (éventuellement pour la détection synchrone)

  • MP46: Numérisation du signal.

Signaux numériques

_images/numerisation.svg

Fig. 86 Échantillonnage numérique d’un signal \(s(t)\) sur 8 niveaux : le signal peut être représenté par une suite de 0 et de 1.

Un signal analogique est continu et par conséquent comporte mathématiquement une infinité de points. Dans un appareil numérique, l’image du signal analogique récupéré doit être stockée dans une mémoire. Pour ne stocker qu’un nombre fini de points, on va acquérir les points du signal à numériser à des intervalles de temps régulier (échantillonnage) et sur une durée limitée (troncation).

L’opération d’échantillonnage et de numérisation du signal sous forme binaire est représentée figure Fig. 86. La construction d’un signal numérique à partir d’un signal analogique se décompose en trois opérations fondamentales :

  • l’échantillonnage du signal avec une période régulière \(T_e\),

  • la quantification du signal échantillonné sur un niveau discret,

  • la représentation de chaque niveau par un élément binaire.

On conçoit que chaque étape laisse le champ libre à l’imagination. Nous n’envisagerons que les méthodes les plus immédiates.

Échantillonnage:

le signal échantillonné \(s_{\rm ech}(t)\) est obtenu en prélevant sur le signal \(s(t)\) une suite d’échantillons \(s(0), s(T_e), s(2T_e)\), etc... à la fréquence \(f_e=1/T_e\). Cette opération peut être représentée par la multiplication du signal par un peigne de Dirac :

\[s_{\rm ech}(t) = s(t) \times \sum_{k=-\infty}^{+\infty} \delta\left(t-kT_e\right)\]

Nous verrons plus loin que l’échantillonnage doit être réalisé à une fréquence \(f_e\) deux fois supérieures à la fréquence maximale contenue dans le signal pour être correcte.

Quantification :

puis les valeurs prélevées doivent être numérisées. La plage de variations du signal \(s(t)\) est découpée en \(S\) niveaux \(s_0,s_1,...,s_{S-1}\). La résolution de la numérisation est donnée par \(\Delta s = s_{j+1}-s_{j}\) (\(1\,\volt\) sur la figure Fig. 86). Chaque valeur d’échantillon \(s(t) \delta\left(t-kT_e\right)\) peut alors être arrondie au niveau \(s_j\) dont elle est le plus proche.

\[s(t=kT_e) \mapsto s_k = \min_{j} \left\vert s(t=kT_e) - s_j\right\vert\]

Le signal discrétisé peut in fine s’écrire sous la forme :

\[\boxed{s_{\rm num}(t) = \sum_{k=-\infty}^{+\infty}s_k \delta\left(t-kT_e\right)}\]

sans considération sur la taille de la mémoire numérique pour stocker les nombres \(s_k\).

Représentation binaire :

Un nombre entier positif \(n\) peut se décomposer en base 10 selon:

\[n = \sum_{j=0}^\infty a_j 10^j\]

ou en base 2 selon:

\[n = \sum_{j=0}^\infty b_j 2^j\]

On pourrait généraliser cette écriture à tout nombre réel. Mais, dans le premier cas, les \(\left\lbrace a_j \right\rbrace\) sont les 10 chiffres allant de 0 à 9, alors que dans le second ce sont les 2 seuls chiffres 0 ou 1. Coder électriquement un nombre dans une représentation décimale nécessiterait donc l’utilisation de 10 états différents et bien distinguables même si du bruit se superpose au signal, alors qu’une représentation à 2 états est plus simple et plus fiable.

Note

Représentations binaire et décimale

Donnons quelques exemples de représentation en base 2. Pour un codage sur \(N=8\) bits, les nombres suivants s’écrivent :

  • \(1 = 0\times 2^3 + 0\times 2^2 + 0\times 2^1 + 1\times 2^0 \Rightarrow 00000001\)

  • \(42 = 1\times 2^5 + 0\times 2^4 +1\times 2^3 + 0\times 2^2 + 1\times 2^1 + 0\times 2^0 \Rightarrow 00101010\)

  • \(128 = 1\times 2^7 + 0 \Rightarrow 10000000\)

  • \(\displaystyle 255 = 255 = 1\times 2^8 -1 = \sum_{k=0}^{7} 2^k \Rightarrow 11111111\)

Lors d’une numérisation binaire, le nombre de niveaux \(S\) doit être fini (pour des raisons de stockage en mémoire) : il s’écrit sous la forme \(S=2^N\), où \(N\) est un entier qui représente le nombre de cases dans la mémoire allouées pour stocker un nombre. Par exemple, si on alloue \(N=8\) cases mémoire pour stocker un nombre (soit 1 octet), on peut stocker des valeurs allant de 0 à 255. Chacun des \(S=2^N\) niveaux de quantification \(s_k\) se décompose en base 2 sous la forme :

\[\boxed{s_k = \Delta s \left[ b_0 2^0 + b_1 2^1 + ... + b_{N-1}2^{N-1} \right]}\]

où les \(b_0,...,b_{N-1}\) peuvent prendre uniquement les valeurs 0 et 1. Un chiffre \(b_j\) est appelé bit et \(N\) est le nombre de bits sur lequel est numérisé le signal. L’ensemble des \(\left\lbrace b_j \right\rbrace\) forme le nombre binaire correspondant à \(s_k\) : \(b_{N-1}b_{N-2}...b_2b_1b_0\). Dans le cadre d’une transmission numérique, c’est donc cette séquence de 0 et de 1 que l’on doit transmettre pour signifier la valeur d’un échantillon.

Résolution d’un appareil numérique :

la plage de quantification \(S\Delta s\) du signal est fixée par l’appareil de mesure lors du choix du calibre (sur un multimètre ou un oscilloscope). Le pas de quantification \(\Delta s\), donc la résolution, est d’autant meilleure que le nombre de bits \(N\) utilisé pour coder la valeur d’un échantillon est plus élevée. En effet si on choisit un calibre où la valeur maximale numérisable est \(c\) (par exemple \(2\,\volt\), \(20\,\volt\)), calibre et résolution sont liés par:

\[\boxed{\Delta s = \frac{c}{2^N}}\]

C’est pourquoi en utilisant un oscilloscope numérique on agrandit au maximum la fenêtre de visualisation verticalement pour finement échantillonner le signal. De plus l’appareil sera d’autant plus précis (et cher) s’il code les tensions sur un nombre \(N\) élevé de bits.

Bruit de quantification :

le passage du signal échantillonné \(s_{\rm ech}(t)\) au signal numérique \(s_{\rm num}(t)\) constitue une dégradation du signal, analogue à celle que produirait un bruit superposé au signal \(s_{\rm ech}(t)\). On l’appelle bruit de quantification \(n(t)\). D’après la référence [16], on peut montrer que :

\[\left\langle n^2(t)\right\rangle = \frac{\Delta s ^2}{12}\]

On remarque là encore l’intérêt d’augmenter le nombre de bits utilisés pour coder la valeur d’un échantillon. Mais le choix du nombre de bits utilisé doit être un compromis entre le nombre de valeurs nécessaires, la mémoire disponible et la vitesse de calcul ou d’acquisition.

Note

Ordres de grandeurs

  • Codage en 8 bits (1 octet) : le chiffre maximal \(11111111\) vaut \(2^8-1=255\).

  • Échelles de couleurs 8 bits dans la numérisation des images : \((2^8)^3 = 16\) millions de couleurs sont accessibles en codant chaque couleur R, V et B sur 8 bits (sur un vieux PC).

  • Pour les transmissions téléphoniques, on utilise un codage sur 8 bits (256 niveaux).

  • Les oscilloscopes Agilent InfiniiVision enregistrent jusqu’à \(2^{16}=65536\) points, et le nombre de bits pour l’échantillonnage vertical varie entre 8 et 12 selon la vitesse d’acquisition du signal.

Acquisition et numérisation de signaux électriques

Un diviseur de fréquence par 2, 4, 8 ou plus généralement \(2^N\) est basé sur un élément logique implémenté sous forme de puce électronique appelé bascule (ou "flip-flop"). Il s’agit d’un composant électronique à base de transistors, comportant des associations de portes logiques (NON, NON-ET, etc.) dont la ou les sorties passent d’une valeur logique à une autre (\(0\,\volt\) ou \(5\,\volt\)) selon l’état logique des entrées, mais restent permanentes une fois les entrées remises à zéro. Ce qui distingue une bascule logique d’une simple porte est qu’elle garde en mémoire son dernier état: ce sont donc des composants très importants pour le calcul séquentiel et la mémoire informatique. Elles peuvent être de différents types (type D, T, JK,...). Une bascule est définie par sa table de vérité définissant ses états de sortie en fonction de l’état de ses entrées et de ses sorties.

Tableau 35 Gauche : composant SN74HC377N réalisant une bascule de type D. Droite : montage à transistors pour réaliser un diviseur de fréquence par 2 équivalent à ce qui peut être présent dans le composant SN74HC377N une fois branché en diviseur de fréquence (Source: https://www.sonelec-musique.com/electronique_bases_diviseurs_frequence.html).
_images/sn74hc377n-flip-flop.jpg
_images/electronique_diviseur_freq_001.jpg
Tableau 36 Table de vérité de la bascule front descendant.

Entrée

État de la sortie

Sortie

\(\downarrow\)

0

1

\(\downarrow\)

1

0

\(\uparrow\)

0

0

\(\uparrow\)

1

1

Tableau 37 Gauche : fonctionnement d’une bascule logique sur front descendant. Droite : application au diviseur de fréquence par 2.
_images/bascule.svg
_images/diviseur_frequence.svg

Une bascule de type D ou autre peut être branchée de telle manière à obtenir un composant à une seule entrée \(e(t)\) et une seule sortie \(s(t)\), dont l’état de la sortie bascule dès que l’état de l’entrée change (voir figure Tableau 35 et table de vérité tab:logique_bascule_montant). Elle peut fonctionner sur front montant ou front descendant (voir figure Tableau 37 gauche). En pratique, si on fournit à une telle bascule en signal d’entrée \(e(t)\) un signal d’horloge TTL, la sortie sera également un signal d’horloge mais à une fréquence 2 fois plus faible. Il se comporte en diviseur de fréquence par 2 (figure Tableau 37 droite). Mis en série, on peut obtenir un diviseur de fréquence par \(2^N\).

En utilisant plusieurs diviseurs de fréquence en série, on peut parvenir à réaliser un compteur binaire tel que représenté figure Fig. 87. Ainsi, au cours du temps, l’état de chaque voie de sortie peut être considérée comme un bit, valant 0 ou 1, et l’ensemble forme un nombre binaire. Ce nombre augmente de 1 toutes les demies périodes d’horloge: on obtient un compteur numérique en base 2. C’est exactement comme des enfants qui comptent lorsqu’ils jouent à cache-cache sauf que la période entre deux nombres est fixée par la période du signal d’horloge et les nombres sont exprimés en binaires.

_images/compteur_binaire.svg

Fig. 87 Principe du compteur numérique, utilisé en fréquencemètre numérique avec \(N=4\) bits.

Maintenant on voit directement comment réaliser un fréquencemètre numérique simple. Le signal à mesurer de fréquence \(f\) est injecté dans un dispositif qui le met sous la forme d’un signal d’horloge. Puis les bascules comptent tous les fronts descendants pendant un temps \(\Delta t = 1\,\second\) imposé par une horloge extérieure de fréquence \(F=1/(2\Delta t)\). On mesure ainsi un nombre \(n\) de fronts descendants, donc un nombre de périodes, sur une seconde : ce nombre \(n\) est directement la fréquence du signal. Plus généralement on a :

\[\Delta t \approx n T \Rightarrow f_{\rm mes} = \frac{n}{\Delta t} \approx \frac{1}{T}\]

avec \(T\) la période du signal à mesurer et \(f_{\rm mes}\) la fréquence mesurée.

Étudions maintenant sa précision. Comme \(\Delta t\) ne peut pas être un multiple exact de la période du signal à mesurer, on a une erreur sur le nombre \(n\) de fronts descendants de \(\pm 1\) donc :

\[(n-1) T \leqslant \Delta t \leqslant (n+1) T \Rightarrow - \frac{1}{\Delta t} \leqslant f - f_{\rm mes} \leqslant \frac{1}{\Delta t}\]

La précision \(\delta f\) du fréquencemètre est donnée par :

\[\delta f = \frac{1}{\Delta t} \Rightarrow \frac{\delta f}{f}\approx \frac{\delta f}{f_{\rm mes}} = \frac{1}{n}\]

avec \(n\) le nombre de périodes comptées.

Pour un fréquencemètre codant sur \(N\) bits, la fréquence maximale mesurable est \(f_{\rm max}=2^N/\Delta t\). Pour atteindre des hautes fréquences il faut donc soit diminuer \(\Delta t\), au détriment de la précision, soit augmenter \(N\). Diminuer \(\Delta t\) augmente aussi la rapidité d’acquisition.

Pour mesurer des basses fréquences, ce système a une précision très faible. Il faut alors inverser les entrées du signal d’horloge externe et du signal à mesurer sur le fréquencemètre et le faire fonctionner en périodemètre. La fréquence mesurée correspond alors au nombre \(n\) de périodes de l’horloge de fréquence \(F\) pendant une demie-période \(T/2\) du signal mis en forme (donc pendant que le signal d’horloge vaut 1). La période mesurée est donc :

\[\frac{T}{2}\approx \frac{n}{F}, \qquad T_{\rm mes} = \frac{2n}{F}\]

et sa précision est :

\[(n-1) \frac{1}{F} \leqslant \frac{T}{2}\leqslant (n+1) \frac{1}{F} \Leftrightarrow -\frac{2}{F} \leqslant T-T_{\rm mes} \leqslant \frac{2}{F}\]
\[\delta T = \frac{2}{F} \Rightarrow \frac{\delta T}{T}\approx \frac{\delta T}{T_{\rm mes}} = \frac{1}{n}\]

Comme son nom l’indique un convertisseur CNA a pour rôle de transformer un signal numérique en un signal analogique. Il existe plusieurs façons d’y parvenir.

CNA à réseau de pondération en tension :

ce convertisseur est représenté figure Fig. 88: il est composé d’un AO précédé de \(N\) résistances en parallèle. Le CNA étudié en TP repose sur ce principe.

Soit un nombre binaire quelconque constitué par une série de chiffres \(\left\lbrace b_j\right\rbrace\), \(b_j \in \left\lbrace 0,1 \right\rbrace\). Les valeurs des \(\left\lbrace b_j\right\rbrace\) vont servir à commander des interrupteurs, avec la valeur 1 correspondant à un interrupteur fermé et 0 un interrupteur ouvert. D’après la loi des nœuds, le courant au point \(A\) vaut :

\[i = \sum _{j=0}^{N-1} \frac{b_j E}{R_j}\]

avec \(R_j = R/2^{j}\) la résistance alimentée par l’interrupteur \(j\). D’où la tension en sortie de l’AO :

\[v_s = -\frac{ER'}{R}\sum_{j=0}^{N-1} 2^j \times b_j\]

On a donc converti un nombre binaire en une valeur décimale (une tension) analogique. Le nombre \(N\) correspond au nombre de bits du convertisseur.

_images/CNA_ponderation.svg

Fig. 88 Convertisseur numérique-analogique à réseau de pondération en tension.

Remarques :

  1. En pratique, on considérera des tensions d’entrée de \(5\,\volt\) car la plupart des composants logiques fonctionnent avec un codage binaire \(0\,\volt\) / \(5\,\volt\).

  2. Par construction, la tension \(v_s\) est comprise entre \(0\,\volt\) et \(-2^NER'/R\). Il y a donc une plage finie de valeurs accessibles à un circuit donné. Or, le nombre de valeurs finales est lié au nombre de valeurs binaires initiales, soit \(2^N\) pour un codage sur N bits. De plus, la discrétisation des valeurs finales est de \(\Delta v_s = ER'/R\).

  3. Ce montage est simple, et l’AO est utilisé comme un convertisseur tension-courant (d’impédance de sortie quasi nulle) suivant un montage simple d’additionneur de courants. Par contre, la valeur de la résistance totale du circuit varie fortement selon les valeurs numériques à convertir. Par exemple, pour un convertisseur de 10 bits, la valeur de la résistance totale varie d’un facteur 1024 ! Ainsi ce montage bien que simple à l’inconvénient d’avoir une impédance d’entrée qui varie beaucoup. On lui préfère en pratique des montages dit en « \(R-2R\) » [17].

CNA à réseau \(R-2R\) :

_images/CNA_reseau.svg

Fig. 89 Convertisseur numérique-analogique \(N=4\) bits à réseau \(R-2R\), codant le nombre 0101.

dans ce montage il n’y a que des résistances de valeurs \(R\) et \(2R\). Il fonctionne sur le principe d’un diviseur de courant. L’avantage de ce réseau est que son impédance est constante et égale à \(2R\) tout au long du réseau, car ici le courant passe toujours (au travers de l’ALI ou vers la masse). De plus, la résistance équivalente vue depuis \(E\) vaut toujours \(2R\) car deux résistances \(2R\) en parallèle sont équivalentes à une résistance \(R\), laquelle est en série avec une résistance \(R\) donc formant un résistance \(2R\), et ainsi de suite... Par conséquent, à chaque nœud le courant est divisé en deux parts égales car chaque branche a une résistance équivalente valant \(2R\).

D’après la figure Fig. 89, la tension en sortie de l’AO vaut :

\[v_s = -2R i = -2 \sum_{j=0}^{N-1} b_j \frac{RI}{2^{N-j}} = - E \sum_{j=0}^{N-1} \frac{b_j}{2^{N-j}}= - 2^{-N} E \sum_{j=0}^{N-1} 2^j \times b_j\]

d’après la loi des nœuds. La tension \(U_s\) est donc l’image directe sous forme analogique du nombre binaire à convertir.

Autres CNA :

il existe bien d’autres technologies de CNA:

  • CNA par pondération de courant (à base de transistors) ;

  • CNA par pondération de tension à courants constants ;

  • CNA par pondération de capacités ;

  • CNA par pondération de capacités en réseau \(C-2C\) ;

  • etc...

Pour une revue détaillé des CNA et CAN, voir les références [18, 19].

Convertisseur analogique-numérique (CAN)

Les convertisseurs analogique-numérique se rencontre au sein de nombreux appareils de mesures tels que les multimètres ou les oscilloscopes numériques. Nous allons détaillé le fonctionnement d’un CAN simple constitué d’un convertisseur simple rampe, d’un CNA et d’un comparateur.

Principe du convertisseur simple rampe :

une horloge extérieure alimente un compteur binaire engendrant un comptage binaire à la fréquence \(1/T\) de l’horloge. La durée de la rampe est liée à la fréquence de l’horloge et à \(N\) selon :

\[T_{\rm rampe} = 2^N T\]

Les tensions binaires en sortie du compteur numérique ouvrent ou ferment les interrupteurs du CNA. Le chiffre binaire est ainsi converti en tension analogique par le CNA. On synthétise donc en sortie une rampe de tension numérique de 0 à \(v_{\rm max}\) de durée \(2^N T\) avec \(N\) le nombre de bits du CNA. La tension \(v_{\rm max}\) dépend du convertisseur et est donc réglable. Le pas de discrétisation \(\Delta v\) de la rampe générée et lié aux paramètres du CNA est :

\[\Delta v = \frac{v_{\rm max}}{2^N -1}\approx \frac{v_{\rm max}}{2^N}\]
_images/simple_rampe3.svg

Fig. 90 Principe du convertisseur simple rampe.

Convertisseur analogique-numérique :

_images/can6.svg

Fig. 91 Convertisseur analogique-numérique réalisé à partir d’un convertisseur simple rampe. Dans cette illustration \(N=4\) bits et le calibre est \(v_{\mathrm{max}}=2\,\volt\). Pour une tension à convertir \(U_0=1.5\,\volt\), le CAN renvoie \(1100\) ce qui correspond à \(U_{\rm mes} = \Delta v(2^3+2^2) \approx 1.6\,\volt\).

le principe de base du convertisseur analogique-numérique simple rampe consiste à utiliser un compteur binaire pour créer une rampe de tension, puis comparer la tension de la rampe à la tension \(U_0\) que l’on veut mesurer, et enfin relever la valeur numérique de la tension la plus proche de \(U_0\). Ce principe est schématisé figure Fig. 91. Un comparateur à AO simple peut être utilisé : celui-ci bascule à sa tension de saturation négative dès que la tension délivrée par la rampe est supérieure à \(U_0\).

La tension numérisée \(U_{\rm mes}\) peut être lue directement sur le compteur binaire ou calculée via une conversion temps-tension. La mesure de \(\Delta t\), durée pendant laquelle la tension \(U_0\) est supérieure à celle de la rampe, permet de remonter à \(U_0\) par une simple règle de trois :

\[U_{\rm mes} = v_{\rm max} \frac{\Delta t}{T_{\mathrm{rampe}}} = \frac{v_{\rm max}}{2^N} \frac{\Delta t}{T} \approx U_0\]

La résolution en tension d’un tel convertisseur est due à la discrétisation de la rampe. La valeur de basculement est résolue à \(\Delta v=v_{\rm max}/2^N\) près. Donc plus le nombre de bits est élevé, meilleur est la résolution en tension. De plus, plus la valeur de \(v_{\rm max}\) est élevée, moins bonne est la résolution. Or cette tension est réglable et en pratique correspond au calibre de l’appareil. Il est important donc de choisir le calibre adapté à la tension que l’on veut analyser pour bénéficier de la meilleure résolution.

La performance du CAN dépend aussi de l’horloge. La fréquence de l’horloge va fixer la vitesse d’échantillonnage du CAN. Sauf que plus le nombre de bits est élevé, plus il faut du temps pour réaliser la rampe. Ainsi précision et rapidité de conversion sont contradictoires [1].

La plupart des multimètres numériques donnent une incertitude de lecture comme une valeur constante uniquement dépendante du calibre et une valeur proportionnelle à la valeur mesurée. On propose ici une interprétation simpliste :

  • si la pente de la rampe de tension \(\alpha\) est mal calibrée (erreur de l’horloge ou de \(v_{\rm max}\)), alors le temps mesuré \(\Delta t\) est affecté d’une erreur : \(\delta (\Delta t)/\Delta t = \delta \alpha/\alpha\). Or, la tension mesurée est \(U_0\approx U_{\rm mes} \propto \Delta t\). Donc l’erreur commise sur \(U_{\rm mes}\) est proportionnelle à la valeur mesurée.

  • si le comparateur a un défaut (par exemple l’offset de l’AO est mal compensé), la mesure sera affectée d’un décalage constant, indépendant de la valeur mesurée. Donc l’erreur commise sur \(U_{\rm mes}\) est indépendante de la valeur mesurée.

Si on perfectionne le montage de la figure Fig. 89, alors le basculement de la tension de sortie \(v_s\) de l’AO peut servir à déclencher la lecture du nombre binaire issu du compteur qui a généré le basculement et représentant \(U_0\). Notons que dans ce cours, seul le principe de base du CAN a été présenté. Les CAN réels sont bien plus complexes afin d’augmenter les performances (rapidité, précision de la mesure en temps). Un modèle plus élaboré est présenté dans la référence [17] (CAN double rampe).

Analyse spectrale d’un signal numérique

Soit un signal \(s(t)\) dépendant du temps. On définit sa transformée de Fourier \(\hat{s}(f)\) en terme de fréquence par :

\[\boxed{\hat{s}(f) = \mathcal{F}(s(t)) = \int_{-\infty}^{+\infty}s(t) e^{-2j\pi f t} \mathrm{d}t}\]

et sa transformée inverse par :

\[s(t) = \mathcal{F}^{-1}(\hat{s}(f)) = \int_{-\infty}^{+\infty}\hat{s}(f) e^{2j\pi f t} \mathrm{d}f\]

Le spectre d’un signal est la donnée de sa transformée de Fourier \(\hat{s}(f)\), qui est un nombre a priori complexe. En général on se contente de ne représenter graphiquement que la norme du spectre, mais celle-ci ne contient que la moitié de l’information stockée dans la transformée de Fourier (l’autre moitié étant contenue dans la phase).

La série de Fourier est quant à elle adaptée à l’étude des signaux périodiques. Un signal périodique de période \(T\) peut se décomposer en série de Fourier selon :

\[s(t) = \sum_{n=-\infty}^{+\infty} \hat{s}_n e^{2j\pi \frac{nt}{T}}\]

avec les coefficients de Fourier \(\hat{s}_n\) qui se calculent par :

\[\boxed{\hat{s}_n = \frac{1}{T} \int_{-T/2}^{T/2} s(t) e^{-2j\pi \frac{nt}{T}} \mathrm{d}t}\]

Avec les appareils numériques actuels, les signaux temporels numérisés prennent la forme :

\[s_{\rm num}(t) = \sum_{k=-\infty}^{+\infty}s_k \delta\left(t-kT_e\right) \approx s(t)\times \sum_{k=-\infty}^{+\infty} \delta\left(t-kT_e\right)\]

Pour le moment on suppose encore que les appareils sont capables de stocker une infinité de points en mémoire, ce qui n’est évidemment pas le cas (en réalité, un appareil réel ne numérise le signal que sur une certaine plage de temps). La transformée de Fourier d’un signal numérique sans limite de points s’écrit :

(27)\[\begin{split}\begin{aligned} \hat{s}_{\rm num}(f) & = \int_{-\infty}^{+\infty}\left[ e^{-2j\pi f t} s(t)\times \sum_{k=-\infty}^{+\infty} \delta\left(t-kT_e\right) \right] \mathrm{d}t \notag \\ & = \hat{s}(f) * \mathcal{F}\left( \sum_{k=-\infty}^{+\infty} \delta\left(t-kT_e\right) \right) \end{aligned}\end{split}\]

Note

Transformée de Fourier et produit de convolution

Le produit de convolution entre deux fonctions \(s_1(t)\) et \(s_2(t)\) est défini par :

\[\left[ s_1 * s_2 \right](t) = \int_{-\infty}^{+\infty} s_1(t'-t)s_2(t') \mathrm{d}t'\]

La transformée de Fourier d’un produit de convolution est égale au produit des transformée de Fourier :

\[\mathcal{F}\left( \left[ s_1 * s_2 \right](t) \right ) = \mathcal{F}(s_1) \times \mathcal{F}(s_2)\]

et celle d’un produit à la convolution des transformées de Fourier :

\[\mathcal{F}\left(s_1(t)\times s_2(t)\right) = \left[ \mathcal{F}(s_1) * \mathcal{F}(s_2) \right]\]

La transformée de Fourier d’un signal numérique peut être vue comme étant la convolution de la transformée du signal réel analogique et de la transformée de Fourier d’un peigne de Dirac de fréquence \(1/T_e\). Or la transformée d’un peigne de Dirac de période \(T_e\) est un peigne de Dirac de période \(f_e\) dans l’espace fréquentiel :

\[\mathcal{F}\left( \sum_{k=-\infty}^{+\infty} \delta\left(t-kT_e\right) \right) = \frac{1}{T_e} \sum_{k=-\infty}^{+\infty} \delta\left(f-kf_e\right)\]

Par conséquent, l’analyse de l’équation Eq.27 nous dit que le spectre en amplitude du signal numérisé est est un peigne de Dirac de fréquence \(f_e\) convolué par le spectre du signal réel (voir figure Fig. 92).

Propriété 1. Le spectre d’un signal échantillonné est un spectre continu, périodique de période \(f_e\). Il est constitué par la répétition à l’infini avec la période \(f_e\) du spectre du signal analogique d’origine:

\[\hat{s}_{\rm num}(f) = \hat{s}(f) * \left[ \frac{1}{T_e} \sum_{k=-\infty}^{+\infty} \delta\left(f-kf_e\right)\right] = \frac{1}{T_e} \sum_{k=-\infty}^{+\infty} \hat{s}\left(f-kf_e\right)\]

On en déduit que si la fréquence maximale contenue dans le spectre de \(s(t)\) est supérieure à \(f_e/2\), alors on observe du repliement de spectre [2].

_images/fft_num.svg

Fig. 92 Effet de l’échantillonage d’un signal \(s(t)\) sur son spectre de Fourier.

Théorème 2 (Théorème de Shannon). La représentation discrète d’un signal exige des échantillons régulièrement espacés à une fréquence d’échantillonnage \(f_e\) supérieure au double de la fréquence maximale \(f_{\rm max}\) présente dans ce signal.

Si l’on veut numériser le signal analogique du réseau téléphonique qui possède une bande passante s’étendant de 300 à \(3400\,\hertz\), quelle doit être la fréquence d’échantillonnage minimum ? La formule du théorème de Shannon nous montre immédiatement que la fréquence d’échantillonnage doit être supérieure au double de la fréquence maximum, soit \(6800\,\hertz\). La fréquence standard qui a été choisie dans le réseau numérique est de \(8\,\kilo\hertz\) (i.e. une période de \(125\,\micro\second\)), ce qui satisfait les conditions ci-dessus.

Relations générales :

les appareils numériques réels ont une capacité en mémoire limitée et ne peuvent stocker qu’un nombre \(K\) fini de points du signal temporel :

\[s_{\rm num}(t) = \sum_{k=0}^{K-1}s_k \delta\left(t-kT_e\right)\]

Le signal peut éventuellement être pondéré par une fonction de fenêtrage \(W(t)\) (voir section Problème du fenêtrage). Pour le moment on ne considère qu’une fonction de fenêtrage carrée simple. De plus, le résultat de la transformée de Fourier obtenu par un calcul numérique ne peut pas être une fonction continue de la fréquence pour cette même raison. L’enjeu est donc d’obtenir une collection finie de points représentant au mieux la transformée de Fourier théorique du signal \(s(t)\).

La transformée de Fourier d’un signal échantillonné et tronqué s’écrit :

\[\begin{aligned} \hat{s}_{\rm num}(f) & = \int_{-\infty}^{+\infty}\ e^{-2j\pi f t} \times \sum_{k=0}^{K-1}s_k \delta\left(t-kT_e\right) \mathrm{d}t = \hat{s}(f) * \mathcal{F}\left( \sum_{k=0}^{K-1} \delta\left(t-kT_e\right) \right) \end{aligned}\]

mais aussi :

\[\begin{aligned} \hat{s}_{\rm num}(f) & = \int_{-\infty}^{+\infty}\ e^{-2j\pi f t} \times \sum_{k=0}^{K-1}s_k \delta\left(t-kT_e\right) \mathrm{d}t = \sum_{k=0}^{K-1}s_k e^{-2j\pi k f T_e } \end{aligned}\]

Le résultat de la transformée de Fourier est donc théoriquement une série finie mais pour le moment encore une fonction continue de la fréquence \(f\), ce qui n’est pas calculable et mémorisable par un oscilloscope intrinsèquement limité par la taille de sa mémoire. Comment calculer \(\hat{s}_{\rm num}(f)= \sum_{k=0}^{K-1}s_k e^{-2j\pi k f T_e }\) avec un appareil numérique ? Il faut parvenir à en retirer un nombre de points fini et représentatif de \(\hat{s}_{\rm num}(f)\), mais lesquels ?

_images/triangle_fft.svg

Fig. 93 Haut : signal triangulaire et sa transformée de Fourier. Bas : signal triangulaire numérisé à une fréquence d’échantillonage \(f_e=10\,\hertz\) avec \(K=20\), sa transformée de Fourier (trait plein bleu) et sa TFD (points verts): \(\delta f= 0.5\,\hertz\) et fréquence de Shannon à \(5\,\hertz\).

L’idée est de calculer \(\hat{s}_{\rm num}\) pour les fréquences \(f_n\) telles que \(f_n T_e = n \in \mathbb{N}\). On introduit la transformée de Fourier discrète (TFD) d’un signal échantillonné sur \(K\) points comme le calcul d’un ensemble fini de \(K\) coefficients \(\hat{s}_n^{\rm TFD}\) définis par:

\[\hat{s}_n^{\rm TFD} = \sum_{k=0}^{K-1} s_k e^{-2j\pi n \frac{k}{K} } \quad \text{pour} \quad 0 \leqslant n < K\]

On a alors une correspondance directe entre la TFD et la TF d’un signal échantillonné :

\[\boxed{\hat{s}_n^{\rm TFD} = \hat{s}_{\rm num}\left( f_n = \frac{n}{T_0} = \frac{n f_e}{K}\right)}\]

avec \(T_0=KT_e\) la durée d’acquisition du signal. Calculer la TFD d’un signal échantillonné permet donc d’avoir une image de \(K\) points représentatifs de sa TF aux fréquences multiples de \(f_e/K\). Ce sont donc ces \(K\) points qu’un oscilloscope numérique doit chercher à calculer.

Propriété 3. La transformée de Fourier d’un signal numérisé et échantillonné sur \(K\) points à la fréquence \(f_e=1/T_e\) est égale à la transformée de Fourier discrète de ce signal aux fréquences multiples de \(f_e/K\). La résolution en fréquence est de \(\delta f = f_e/K\) et la fréquence maximale du spectre accessible est \(f_e/2\) (critère de Shannon).

Ces opérations réalisées naïvement ont une complexité en \(\mathcal{O}(K^2)\) puisqu’il y a \(K\) points à calculer par des séries de \(K\) termes. L’algorithme de Fast Fourier Transform [3] (FFT) propose de calculer la TFD d’un signal numérisé de façon rapide, en exploitant les symétries de la somme. Il a été publié en 1965 par James Cooley et John Tukey, et sa complexité en \(\mathcal{O}(K\log K)\) en fait un algorithme bien plus rapide que son calcul brut.

Note

L’algorithme FFT

L’algorithme de Transformée de Fourier Rapide (FFT) a été publiée sous sa forme moderne par James Cooley et John Tukey en 1965, mais des prémices de l’algorithme avait déjà été utilisé par Carl Friedrich Gauss dès 1805.

Sur le principe, l’algorithme de Colley-Tukey ne fonctionne que pour les nombres de points \(K\) sous forme de puissance de 2, mais il consiste essentiellement à utiliser la périodicité de la fonction \(e^{-2j\pi n k/K}\) pour éviter des redondances de calcul. Ainsi, en divisant en 2 le lot de points à calculer, les fonctions calculées pour le premier lot servent au second.

L’algorithme est très utilisé en traitement du signal, au delà de la simple transformée de Fourier, grâce à sa rapidité en \(\mathcal{O}(K\log K)\). Par exemple il est plus avantageux de calculer un produit de convolution en passant par le produit des transformées de Fourier que directement, même si le but premier n’est pas d’obtenir la transformée de Fourier des signaux. De plus, des optimisations à l’algorithme original ont été apportées pour gérer les nombres \(K\) quelconques.

Règles pratiques :

dans un oscilloscope, le nombre de points \(K\) en mémoire pour représenter un signal numérique est une constante. En revanche, l’utilisateur est libre de choisir la durée d’acquisition \(T_0=KT_e\) de ces points en changeant le calibre de la base de temps, ce qui modifie la fréquence d’échantillonnage :

\[f_e = \frac{1}{T_e} = \frac{K}{T_0}\]

Le spectre est calculé par une FFT et affiche les \(K/2\) points de fréquence positive [4] sur une plage de fréquence allant de 0 à \(f_e/2\) : donc la plage de fréquence est aussi choisie via le calibre de la base de temps. La résolution en fréquence \(\delta f\) est alors donnée par :

\[\delta f = \frac{f_e/2}{K/2} = \frac{1}{T_0}\]

Donc le choix de la base de temps fixe à la fois \(f_e\), la plage de fréquence et la résolution.

Or il faut toujours respecter le critère de Shannon \(f_e > 2 f_{\rm max}\). Pour observer cette fréquence \(f_{\rm max}\) dans la plage de fréquence du spectre FFT, il faut augmenter la fréquence d’échantillonnage et donc diminuer la durée d’acquisition \(T_0\). Ceci a pour conséquence de diminuer la résolution spectrale de la FFT. Donc résolution et critère de Shannon s’opposent, et un compromis n’est pas toujours possible. On remarque cependant que plus \(K\) est grand (donc plus l’oscilloscope est cher), plus le compromis est réalisable car pour un même \(T_0\) la fréquence d’échantillonnage est supérieure.

En pratique : il faut commencer avec un temps d’acquisition suffisamment court pour avoir une grande plage de fréquence et l’augmenter progressivement jusqu’à une valeur satisfaisante pour augmenter la résolution fréquentielle.

Problème du fenêtrage

Étude de la fenêtre rectangulaire :

jusqu’à présent nous avons considéré une fenêtre rectangulaire :

\[\begin{split}W(t) = \left\lbrace \begin{array}{ll} 1 & \text{si }0<t<T_0 \\ 0 & \text{sinon} \end{array} \right.\end{split}\]

ce qui, formellement, conduit à étudier le signal :

\[s_{\rm num}(t) = s(t) \times W(t) \times \sum_{k=-\infty}^{\infty}\delta\left(t-kT_e\right)\]

La transformée de Fourier d’un tel signal correspond au produit de convolution des transformées de Fourier des trois facteurs. Donc le choix de la fenêtre \(W(t)\) a son importance. Dans la section précédente, nous avons calculé la transformée de Fourier du signal échantillonné et tronqué comme étant:

\[\begin{aligned} \hat{s}_{\rm num}(f) = \hat{s}(f) * \mathcal{F}\left( \sum_{k=0}^{K-1} \delta\left(t-kT_e\right) \right)\end{aligned}\]

Or la transformée de Fourier d’un peigne de Dirac tronqué s’écrit:

\[\mathcal{F}\left( \sum_{k=0}^{K-1} \delta\left(t-kT_e\right) \right) = \frac{1-e^{2\pi j Kf/f_e}}{1-e^{2\pi j f/f_e}} = e^{\pi j (K-1) f/f_e} \frac{\sin \left(\pi Kf/f_e\right)}{\sin\left( \pi f/f_e\right)}\]

Les pics du peigne de Dirac "s’élargissent" par rapport au cas \(K\rightarrow\infty\). La transformée de Fourier présente des pics principaux à des fréquences multiples de \(f_e\) et des maxima intermédiaires à des fréquences multiples de \(f_e/K\). Le spectre affiché étant le produit de convolution du spectre théorique par cette fonction, ces harmoniques peuvent donc venir polluer la TFD du signal numérique, lui-même aussi échantillonné tous les \(f_e/K\). En résumé, on peut confondre un pic du spectre de la fenêtre avec celui du signal, ou le masquer s’il est faible. Le choix d’une autre fonction de fenêtrage \(W(t)\) peut permettre d’améliorer ce point, comme nous le verrons par la suite.

_images/peigne_dirac_t_TF.svg

Fig. 94 Peigne de Dirac tronqué de période \(T_e=0.05\,\second\) et son spectre de Fourier, de période \(20\,\hertz\), avec \(K=10\). Des annulations sont présentes tous les \(f_e/K=2\,\hertz\) hors des pics principaux, espacés de \(f_e=20\,\hertz\).

Dans quel cas les harmoniques générées par la fonction fenêtre sont-elles préjudiciables ? Comparons le cas où la période d’enregistrement est un multiple entier fortuit de la période du signal dont on réalise l’analyse spectrale, à un cas où \(T_0\) est quelconque (et qui est le cas général). Deux exemples de FFT correspondantes sont représentées figure fig:fft_rect_2kHz. Dans les deux cas, la transformée de Fourier théorique (trait plein) est identique, c’est à dire que c’est la convolution du spectre théorique du signal (un pic de Dirac à \(f=2\,\kilo\hertz\)) avec la transformée de Fourier d’un peigne de Dirac tronqué. Dans le premier cas, comme la période d’échantillonnage est un multiple de la période du signal, les points de la FFT tombent sur les minima (et même les zéros) de la TF du peigne de Dirac [5]. Si on revient à la correspondance:

\[\hat{s}_n^{\rm TFD} = \hat{s}_{\rm num}\left( f = \frac{n}{T_0} = \frac{n f_e}{K}\right)\]

on voit que si la fréquence \(f_s\) du signal est pas un multiple de \(1/T_0\) alors la TFD est calculée en \(f_s\). En résumé la TFD est calculée à la fréquence d’intérêt et l’influence des harmoniques générées par le fenêtrage est minimale. Dans le second cas, si la période du signal n’est pas un multiple fortuit de la période d’enregistrement \(T_0\), on rate la fréquence intéressante du spectre \(f_s\) et la TFD est calculée à des fréquences où le spectre de la fonction de fenêtrage n’est pas minimal. Les harmoniques du spectre de la fenêtre polluent le spectre recherché et le pic du signal semble s’élargir.

_images/fft_rect_2kHz_To004.svg

Fig. 95 Haut : A gauche le signal temporel \(s(t)\) sinusoïdal de fréquence \(2\,\kilo\hertz\) d’amplitude \(1\,\volt\) échantillonné sur \(K=256\) points et \(T_0=4\,\milli\second\), pondéré une fenêtre rectangulaire, et la FFT correspondante (\(\delta f = 250\,\hertz\)). A droite, les traits pleins correspondent aux spectres théoriques (TF) calculés sur des signaux non échantillonnés, et les points aux spectres affichés à la résolution \(\delta f\) (FFT). Bas : idem mais \(T_0=4.2\,\milli\second\) (\(\delta f = 238\,\hertz\)).

_images/fft_rect_2kHz_To0042.svg

Fig. 96 Haut : A gauche le signal temporel \(s(t)\) sinusoïdal de fréquence \(2\,\kilo\hertz\) d’amplitude \(1\,\volt\) échantillonné sur \(K=256\) points et \(T_0=4\,\milli\second\), pondéré une fenêtre rectangulaire, et la FFT correspondante (\(\delta f = 250\,\hertz\)). A droite, les traits pleins correspondent aux spectres théoriques (TF) calculés sur des signaux non échantillonnés, et les points aux spectres affichés à la résolution \(\delta f\) (FFT). Bas : idem mais \(T_0=4.2\,\milli\second\) (\(\delta f = 238\,\hertz\)).

Une autre façon de comprendre ce problème est que la TFD se comporte comme si le signal échantillonnée était périodique de période \(T_0\). En effet, la TFD est à la fois liée à la transformée de Fourier mais aussi à la série de Fourier: si on considère que les \(K\) points de \(s_{\rm num}(t)\) représentent une période d’un signal périodique de période \(T_0\), d’après leur définition les coefficients de la série de Fourier associée sont :

\[\begin{split}\begin{aligned} \hat{s}_{\mathrm{num},n} & = \frac{1}{T_0} \int_{0}^{T_0} s_{\rm num}(t) e^{-2j\pi \frac{nt}{T_0}} \mathrm{d}t = \frac{1}{T_0} \int_{0}^{T_0} \sum_{k=0}^{K-1}s_k \delta\left(t-kT_e\right) e^{-2j\pi \frac{nt}{T_0}} \mathrm{d}t \\ \notag & = \sum_{k=0}^{K-1}s_k \int_{0}^{1} \delta\left(uT_0-kT_e\right) e^{-2j\pi n u} \mathrm{d}u = \sum_{k=0}^{K-1}s_k e^{-2j\pi \frac{n k T_e}{T_0}} \notag\end{aligned}\end{split}\]

Donc on obtient :

\[\boxed{\hat{s}_{\mathrm{num},n} = \sum_{k=0}^{K-1}s_k e^{-2j\pi n \frac{k}{K}} = \hat{s}_n^{\rm TFD}}\]

La TFD correspond donc exactement à la série de Fourier du signal échantillonné tronqué considéré périodique de période \(T_0\). Donc si la fenêtre ne tronque pas le signal sur un nombre entier de périodes, alors une discontinuité apparait entre les échantillons \(s(0)\) et \(s(T_0)\) ce qui engendre des harmoniques artificielles dans le spectre du signal. Les représentations temporelles répétées avec une période \(T_0\) sont présentées figure fig:fft_rect_2kHz en traits pointillés. Le signal ainsi périodisé n’est donc plus un signal sinusoïdal pur, les discontinuités induisent des harmoniques dans son spectre.

En résumé, le choix d’une fenêtre rectangulaire introduit des harmoniques qui peuvent polluer le spectre recherché, en particulier si la période d’échantillonnage n’est pas un multiple fortuit de la période du signal dont on cherche le spectre. Pour corriger cela, on peut donc imaginer trouver des fenêtres \(W(t)\) qui:

  • possèdent moins d’harmoniques dans leur transformée de Fourier;

  • garantissent une bonne périodisation du signal tronqué de période \(T_0\) en s’annulant sur les bords de la fenêtre.

Choix d’une fonction de fenêtrage :

pour résoudre les problèmes liés à la fenêtre rectangulaire, le signal peut être pondéré par d’autres fonctions de fenêtrage qui lissent ou annulent les discontinuités en bord de fenêtre, et ainsi réduisent l’impact du choix de la durée d’acquisition \(T_0\) sur la qualité du spectre. Il y a par exemple les fenêtres de:

  • Hamming :

    \[\begin{split}W(t) = \left\lbrace \begin{array}{ll} 0.54(1-0.46\cos (2\pi t/T_0)) & \text{si }0<t<T_0 \\ 0 & \text{sinon} \end{array} \right.\end{split}\]
  • Hanning :

    \[\begin{split}W(t) = \left\lbrace \begin{array}{ll} 0.5(1-\cos (2\pi t/T_0)) & \text{si }0<t<T_0 \\ 0 & \text{sinon} \end{array} \right.\end{split}\]
  • Blackmann-Harris :

    \[\begin{split}W(t) = \left\lbrace \begin{array}{ll} 0.42-0.5\cos(2\pi t /T_0) + 0.08 \cos(4\pi t/T_0) & \text{si }0<t<T_0\\ 0 & \text{sinon} \end{array} \right.\end{split}\]
  • gaussienne :

    \[\begin{split}W(t) = \left\lbrace \begin{array}{ll} e^{-((t-T_0/2)/T_0)^2} & \text{si }0<t<T_0\\ 0 & \text{sinon} \end{array} \right.\end{split}\]

Et il en existe bien d’autres. Notons que les problèmes de fenêtrage en analyse numérique sont conceptuellement proches des problèmes d’apodisation en optique.

_images/windows.svg

Fig. 97 Différentes fonctions de fenêtrage \(W(t)\) (gauche) et les transformées de Fourier correspondantes (droite).

Différentes fenêtres et leurs transformées de Fourier sont représentées figure Fig. 97, on voit que toutes possèdent moins d’harmoniques que la fenêtre rectangulaire, mais toutes ne s’annulent pas aux bords. En revanche le pic central proposé par la fenêtre rectangulaire est le plus fin de tous. Le choix d’une fenêtre FFT va résulter d’un compromis entre la résolution en fréquence et la précision en amplitude. Il dépend donc en partie de ce que l’on veut mesurer et des caractéristiques du signal source.

_images/fft_2kHz_To004.svg

Fig. 98 Haut : A gauche le signal temporel \(s(t)\) sinusoïdal de fréquence \(2\,\kilo\hertz\) d’amplitude \(1\,\volt\) échantillonné sur \(K=256\) points et \(T_0=4\,\milli\second\), pondéré par des fenêtres rectangulaire, Hamming et Blackmann, et les FFT correspondantes (\(\delta f = 250\,\hertz\)). A droite, les traits pleins correspondent aux spectres théoriques (TF) calculés sur des signaux non échantillonnés, et les points aux spectres affichés à la résolution \(\delta f\) (FFT). Bas : idem mais \(T_0=4.2\,\milli\second\) (\(\delta f = 238\,\hertz\)).

_images/fft_2kHz_To0042.svg

Fig. 99 Haut : A gauche le signal temporel \(s(t)\) sinusoïdal de fréquence \(2\,\kilo\hertz\) d’amplitude \(1\,\volt\) échantillonné sur \(K=256\) points et \(T_0=4\,\milli\second\), pondéré par des fenêtres rectangulaire, Hamming et Blackmann, et les FFT correspondantes (\(\delta f = 250\,\hertz\)). A droite, les traits pleins correspondent aux spectres théoriques (TF) calculés sur des signaux non échantillonnés, et les points aux spectres affichés à la résolution \(\delta f\) (FFT). Bas : idem mais \(T_0=4.2\,\milli\second\) (\(\delta f = 238\,\hertz\)).

Dans la figure fig:fft_2kHz, on constate les effets d’un choix de fenêtrage différents pour le signal présenté précédemment dans l’analyse de la fenêtre rectangulaire. Le pic central à \(2\,\kilo\hertz\) possède une amplitude moins bien mesurée mais dans le second cas le spectre est moins pollué par les harmoniques apportées par le fenêtrage.

Toutes les fenêtres n’ont pas les mêmes propriétés en résolution en amplitude et résolution spectrale. Le choix de l’utilisation d’une fenêtre plutôt qu’une autre n’a vraiment d’intérêt que dans le cadre de l’analyse spectrale d’un signal composé de plusieurs composantes spectrales. Dans la figure fig:fft_2kHz, on voit par exemple que le poids des pics latéraux (lobes) diminue dans le spectre avec la pondération de la fenêtre, mais l’amplitude du pic à \(2\,\kilo\hertz\) aussi. La largeur de ce dernier augmente légèrement aussi. Cette observation sur le cas d’un signal avec une seule composante spectrale est intéressante pour comprendre la FFT d’un signal plus complexe :

\[s(t) = 1\,\volt \times \left[\cos(2\pi f_1 t) + a \cos(2\pi f_2t)\right]\]

Étudions d’abord le cas \(f_1=2\,\kilo\hertz\), \(f_2=2.2\,\kilo\hertz\) avec \(a=1\) (figure Fig. 100). Pour discerner deux composantes spectrales proches mais d’amplitudes comparables la fenêtre rectangulaire est préférable car elle propose des pics plus fins que les autres fonctions de fenêtrage. De plus les amplitudes des deux pics sont bien mesurés à \(1\,\volt\).

_images/fft_2freq.svg

Fig. 100 A gauche le signal temporel \(s(t)\) avec \(f_1=2\,\kilo\hertz\), \(f_2=2.2\,\kilo\hertz\) et \(a=1\) échantillonné sur \(K=256\) points et \(T_0=10\,\milli\second\), pondéré par des fenêtres rectangulaire, Hamming et Blackmann, et les FFT correspondantes (\(\delta f = 100\,\hertz\)). Pour ces spectres, les traits pleins correspondent aux spectres théoriques (TF) et les points aux spectres affichés (TFD). A droite la comparaison des FFT avec en traits fins les spectres théoriques (TF) et avec les marqueurs circulaires les spectres affichés (TFD).

Passons au cas où on a deux composantes en fréquence moins proches mais avec l’une dominant l’autre : \(f_1=2\,\kilo\hertz\), \(f_2=2.5\,\kilo\hertz\) avec \(a=0.05\). Dans ce cas la composante spectrale faible est indiscernable dans les lobes générés par la fenêtre rectangulaire. Par contre elle apparaît clairement pour les autres choix de fenêtrages (voir figure Fig. 101). Remarquons cependant que les amplitudes affichées à ces fréquences sont inférieures à ce qu’elles devraient être (\(1\,\volt\) et \(0.05\,\volt\)).

_images/fft_2freq_a005.svg

Fig. 101 A gauche le signal temporel \(s(t)\) avec \(f_1=2\,\kilo\hertz\), \(f_2=2.5\,\kilo\hertz\) et \(a=0.05\) échantillonné sur \(K=256\) points et \(T_0=10\,\milli\second\), pondéré par des fenêtres rectangulaire, Hamming et Blackmann, et les FFT correspondantes (\(\delta f = 100\,\hertz\)). A droite, les traits pleins correspondent aux spectres théoriques (TF) calculés sur des signaux non échantillonnés, et les points aux spectres affichés à la résolution \(\delta f\) (FFT).

Terminons par un cas où les deux fréquences sont plus éloignées (\(f_1=2\,\kilo\hertz\), \(f_2=3\,\kilo\hertz\)) mais avec une seconde composante encore plus faible (\(a=0.0005\)). Sur la figure Fig. 102, la composante spectrale faible est discernable avec une fenêtre de Blackmann-Harris (en échelle log), mais est invisible pour les autres choix. La précision en amplitude s’est néanmoins encore dégradée.

_images/fft_2freq_a00005.svg

Fig. 102 A gauche le signal temporel \(s(t)\) avec \(f_1=2\,\kilo\hertz\), \(f_2=3\,\kilo\hertz\) et \(a=0.0005\) échantillonné sur \(K=256\) points et \(T_0=10\,\milli\second\), pondéré par des fenêtres rectangulaire, Hamming et Blackmann, et les FFT correspondantes (\(\delta f = 100\,\hertz\)). A droite, les traits pleins correspondent aux spectres théoriques (TF) calculés sur des signaux non échantillonnés, et les points aux spectres affichés à la résolution \(\delta f\) (FFT).

En résumé, le choix du fenêtrage doit être adapté au signal étudié. Ce problème devient complexe quand on ne connait pas ce signal et tout l’enjeu est de faire ressortir les composantes spectrale du bruit mais aussi des artefacts (lobes) engendrées par la numérisation et le fenêtrage. Il faut aussi faire un compromis entre la précision en amplitude et la résolution en fréquence.

Filtrage numérique

On appelle filtre numérique un système utilisé pour modifier la distribution fréquentielle d’un signal numérique selon des spécifications données [19]. Un filtre numérique peut être vu comme un procédé de calcul permettant de transformer une séquence de nombres d’un signal numérique d’entrée en une seconde séquence de nombres avec la modification voulue du signal. Le problème du filtrage numérique consiste donc à déterminer l’équation régissant cette transformation numérique qui d’une part doit respecter la réponse fréquentielle spécifiée en amont et d’autre part doit être réalisable. Le filtre numérique peut être implanté sous forme de logiciel (algorithme) ou matériel (circuit électronique).

Par rapport aux filtres analogiques, les filtres numériques apportent des avantages en fiabilité (gestion des erreurs, sécurité du stockage sous forme binaire) et adaptabilité (programmable).

Nous allons aborder les filtres numériques avec le point de vue du physicien qui cherche à réaliser une transformation d’un signal \(e(t)\) en un signal \(s(t)\) via une équation différentielle linéaire à coefficients constants, comme dans les chapitres précédents:

(28)\[ a_0 s(t) + \sum_{j=1}^n a_j \frac{\mathrm{d}^j s}{\mathrm{d}t^j} = b_0 e(t) + \sum_{i=1}^m b_i \frac{\mathrm{d}^i e}{\mathrm{d}t^i}\]

Si on note \(s_k = s(kT_e)\), alors les dérivées successives de la fonction \(s(t)\) peuvent être approximées numériquement par:

\[\frac{\mathrm{d}s}{\mathrm{d}t}(kT_e) \mapsto \frac{s_k - s_{k-1}}{T_e}\]
\[\frac{\mathrm{d}^2 s}{\mathrm{d}t^2}(kT_e) = \frac{\mathrm{d}}{\mathrm{d}t}\left[ \frac{\mathrm{d}s}{\mathrm{d}t}(kT_e)\right] \mapsto \frac{1}{T_e}\left[ \frac{s_k - s_{k-1}}{T_e} - \frac{s_{k-1} - s_{k-2}}{T_e}\right] = \frac{s_k - 2s_{k-1} + s_{k-2}}{T_e^2}\]
\[\frac{\mathrm{d}^3 s}{\mathrm{d}t^3}(kT_e) = \frac{\mathrm{d}}{\mathrm{d}t}\left[ \frac{\mathrm{d}^2 s}{\mathrm{d}t^2}(kT_e)\right] \mapsto \frac{s_k - 3s_{k-1} + 3s_{k-2} - s_{k-3}}{T_e^3}\]

Avec cette approche eulérienne de l’écriture de la dérivation, on observe donc que l’équation différentielle Eq.28 peut se réécrire comme une combinaison linéaire des \(\left\lbrace s_j, e_i \right\rbrace\):

\[\sum_{j=0}^n \alpha_j s_{k-j} = \sum_{i=0}^m \beta_i e_{k-i}\]

avec \(\left\lbrace \alpha_j, \beta_i \right\rbrace\) des coefficients combinaisons linéaires respectivement des \(\left\lbrace a_j, b_i \right\rbrace\). Dans le cadre de l’étude des filtres numériques, en choisissant \(\alpha_0=1\), on obtient l’équation suivante appelée équation aux différences:

\[\boxed{s_k = \sum_{i=0}^m \beta_i e_{k-i} - \sum_{j=1}^n \alpha_j s_{k-j}}\]

qui constitue l’équation fondamentale pour décrire les algorithmes liés aux filtres numériques. Elle permet de calculer la sortie \(s_k\) d’un signal numérique à une fonction linéaire des échantillons de l’entrée \(\left\lbrace e_i \right\rbrace\) précédents et éventuellement des valeurs des échantillons \(\left\lbrace s_k \right\rbrace\) précédents. A partir de cette expression, on peut distinguer deux grandes familles de filtres (voir figure Fig. 103):

  • les filtres non récursifs pour lesquels les coefficients \(\left\lbrace \alpha_j \right\rbrace\) sont tous nuls;

  • les filtres récursifs pour lesquels au moins un coefficient \(\alpha_j\) est non nul [6].

_images/filtres_numeriques.svg

Fig. 103 Principe des filtres non récursifs et récursifs.

Note

Un filtre non récursif: la moyenne

L’opération de moyenne d’un signal numérique est un exemple simple de filtre non récursif:

\[s_k = \sum_{i=1}^m \frac{1}{m} e_{k-i}\]

où les \(\left\lbrace \beta_i \right\rbrace\) valent tous \(1/m\) et \(m\) donne la profondeur temporelle \(\tau = mT_e\) sur laquelle le signal est moyenné.

Prenons l’exemple du filtre passe-bas régit par l’équation différentielle:

(30)\[\tau \frac{\mathrm{d}s}{\mathrm{d}t} + s(t) = e(t)\]

En prenant une approche eulérienne de la dérivation, l’équation différentielle ci-dessus se réécrit pour un signal discrétisé à la période \(T_e\):

\[\tau \frac{s_k - s_{k-1}}{T_e} + s_k = e_k\]

ce qui amène à la relation de récurrence:

\[s_k = \frac{\tau/T_e}{1+\tau/T_e}s_{k-1} + \frac{1}{1+\tau/T_e}e_k\]

L’implémentation de cet algorithme permet donc de réaliser un filtre passe-bas sur un signal numérique avec une pulsation de coupure \(1/\tau\). Il peut directement s’écrire en Python avec une simple boucle.

Cette section traite de l’analyse des filtres numériques, et n’est pas essentiel à comprendre dans le cadre du concours de l’agrégation de physique. Néanmoins elle permet d’acquérir un peu de recul sur le sujet du filtrage numérique en particulier sur la notion de fonction de transfert dans le cadre d’un signal discret.

Transformée en \(z\)

Dans le cas des signaux analogiques, on dispose de la transformée de Fourier ou de la transformée de Laplace pour analyser la réponse des filtres. Ces transformées ont l’avantage de pouvoir convertir les dérivées en multiplications par une variable, et ainsi de pouvoir convertir l’équation différentielle en fonction de transfert. Dans le cas des signaux discrets, on utilise la transformée en \(z\), notée \(T_z\) [19] qui admet le même type de transformation des dérivées.

Théorème 4 (Transformée en \(z\)). La transformée en \(z\) d’un signal causal \(s(t)\) échantillonnée à la période \(T_e\) s’exprime à l’aide de la variable complexe \(z\) selon la relation:

\[T_z\left[s(t)\right] = \underline{S}(z) = \sum_{k=0}^{\infty} s(kT_e) z^{-k}\]

La propriété la plus importante à retenir pour l’étude des filtres numériques liée à cette transformée est celle du retard temporel.

Propriété 5 (Retard temporel). Pour une période d’échantillonnage \(T_e\), on a :

\[T_z\left[s(t-nT_e)\right] = \underline{S}(z) z^{-n}\]

Ainsi, \(z^{-1}\) est appelé l’opérateur de retard.

_images/retards.svg

L’application de cette propriété à l’écriture de la dérivée discrétisée nous montre que l’opérateur dérivée s’écrit:

\[\frac{\mathrm{d}}{\mathrm{d}t} \mapsto \frac{1-z^{-1}}{T_e},\qquad \frac{\mathrm{d}^k}{\mathrm{d}t^k} \mapsto \left(\frac{1-z^{-1}}{T_e}\right)^k\]

On obtient ainsi une méthode simple pour passer d’une représentation sous forme d’équation différentielle d’un filtre à sa transformée en \(z\) et à son équation aux différences.

Réalisation des filtres numériques

A partir de l’expression de la représentation en \(z\) du filtre numérique ou de son équation aux différences, il faut concevoir l’algorithme du calcul ou la structure matérielle permettant de réaliser ce filtre. Les filtres numériques peuvent être réalisés en utilisant les trois éléments de base (matériel ou logiciel) suivants: l’additionneur, le multiplieur et le retard de \(T_e\). Tout filtre numérique doit être une combinaison quelconque de ces trois uniques opérations. Un exemple de structure est schématisé figure Fig. 104 pour un filtre non récursif.

images/FIR_filter.pdf

Fig. 104 Structure directe d’un filtre non récursif (Source: adapté de Wikipedia).

Fonction de transfert d’un filtre numérique

Si l’on s’appuie sur le formalisme des filtres analogiques, la représentation naturelle d’une fonction de filtrage numérique est l’écriture en terme de fonction de transfert. Nous allons ici en aborder trois, mais il en existe beaucoup d’autres qui ont chacune leurs avantages et leurs inconvénients selon la fonction de filtrage à réaliser et son implémentation. Une application au filtre passe-bas suit dans la section suivante Supplément sur la synthèse d’un filtre passe-bas pour illustrer ces trois méthodes.

Équation aux différences :

en appliquant la transformée en \(z\) à l’équation aux différences, il vient:

\[\sum_{k=0}^{\infty} \left[ \sum_{j=0}^n \alpha_j s_{k-j}\right] z^{-k} = \sum_{k=0}^{\infty} \left[ \sum_{i=0}^m \beta_i e_{k-i} \right] z^{-k}\]

soit en permutant les sommes puis via un changement d’indice:

\[\underline{S}(z) \sum_{j=0}^n \alpha_j z^{-j} = \underline{E}(z) \sum_{i=0}^m \beta_i z^{-i}\]

On représente alors le filtre synthétisé par la fonction de transfert associée à l’équation aux différences:

\[\underline{H}(z) = \frac{\underline{S}(z)}{\underline{E}(z)} = \frac{\displaystyle{\sum_{i=0}^m \beta_i z^{-i}}}{ \displaystyle{\sum_{j=0}^n \alpha_j z^{-j}}}\]

Méthode de l’invariance impulsionnelle :

par cette méthode on synthétise un filtre numérique dont la réponse impulsionnelle est égale à la réponse impulsionnelle échantillonnée du filtre analogique correspondant [7]. En considérant la fonction de transfert d’un filtre analogique \(\underline{H}(p)\) de réponse impulsionnelle \(h(t)\), la réponse impulsionnelle échantillonnée s’écrit:

\[h_{\rm num}(t) = T_e \sum_{k=0}^{+\infty}h_k \delta\left(t-kT_e\right), \quad h_k = h(k T_e)\]

Par conséquent, la transformée en \(z\) de \(h_{\rm num}(t)\) est donnée par:

\[T_z\left[ h_{\rm num}(t)\right] = \underline{H}(z) = T_e \sum_{k=0}^{\infty} h_k z^{-k}\]

Cette représentation est valable tant que la fréquence de coupure du filtre est inférieure à la fréquence de Shannon.

Fonction de transfert en \(z\) :

pour un filtre analogique de fonction de transfert \(\underline{H}(p)\) dans le domaine de Laplace (ou \(\underline{H}(j\omega)\) dans le domaine de Fourier), on peut rechercher la transformation qui permettrait d’avoir son écriture équivalente \(\underline{H}(z)\) dans le plan des \(z\). La relation exacte permettant de passer d’un domaine à l’autre est donnée par la définition même des transformées:
\[z \leftrightarrow e^{pT_e} \leftrightarrow e^{j\omega T_e}\]

soit \(p \leftrightarrow \frac{1}{T_e}\ln z \leftrightarrow j\omega\). Si on réalise cette transformation, comme \(\underline{H}(p)\) est en général un quotient de polynômes en \(p\), \(\underline{H}(z)\) ne l’est pas ce qui conduit à des difficultés de réalisation. Néanmoins la réponse fréquentielle du filtre numérique ainsi modélisé est rigoureusement identique à celle de son équivalent analogique.


Pour une fonction de filtrage désirée, il existe donc plusieurs manières de synthétiser et de représenter un filtre numérique. Cela tient au fait que l’opération d’approximation pour passer du continu au discret n’est pas réalisée de la même manière, et n’est pas unique. Pour l’équation aux différences, on approxime la dérivée. Pour la méthode de l’invariance impulsionnelle, on approxime que la réponse impulsionnelle discrétisée est suffisante pour représenter le fonctionnement du filtre pour tout signal d’entrée. Pour la fonction de transfert de \(z\), la fonction de filtrage est exacte mais la réalisation concrète de l’opération \(\ln z\) nécessite une approximation pour être conçue via les trois opérations élémentaires.

Supplément sur la synthèse d’un filtre passe-bas

Nous allons illustrer chacune des trois méthodes exposées précédemment sur l’exemple du filtre passe-bas régit par l’équation différentielle:

(30)\[\tau \frac{\mathrm{d}s}{\mathrm{d}t} + s(t) = e(t)\]

Équation aux différences:

en prenant une approche eulérienne de la dérivation, l’équation différentielle amène à la relation de récurrence:

\[s_k = \frac{\tau/T_e}{1+\tau/T_e}s_{k-1} + \frac{1}{1+\tau/T_e}e_k\]

Calculons aussi la fonction de transfert associée en prenant la transformée en \(z\) de l’équation différentielle Eq.30:

\[\tau\left(\frac{1-z^{-1}}{T_e}\right)\underline{S}(z) + \underline{S}(z) = \underline{E}(z)\]
\[\Rightarrow \underline{H}(z) = \frac{1}{\displaystyle{1+\frac{\tau}{T_e}\left(1-z^{-1}\right)}} = \frac{1}{\displaystyle{\left(1+\frac{\tau}{T_e}\right) -\frac{\tau}{T_e} z^{-1}}}\]

L’implémentation de cet algorithme permet donc de réaliser un filtre passe-bas sur un signal numérique avec une pulsation de coupure \(1/\tau\).

Méthode de l’invariance impulsionnelle:

la réponse impulsionnelle d’amplitude \(E\) associée à l’équation différentielle Eq.30 est:

\[h(t) = \frac{1}{\tau} e^{-t/\tau}u(t)\]

Échantillonnée à la période \(T_e\), cette fonction temporelle s’écrit:

\[h_{\rm num}(t) = \sum_{k=0}^{+\infty}h_k\delta\left(t-kT_e\right), \quad h_k = \frac{1}{\tau} e^{-kT_e/\tau}\]

dont la transformée en \(z\) se calcule comme une suite géométrique:

\[\underline{H}(z) = \frac{T_e}{\tau} \sum_{k=0}^{\infty} e^{-kT_e/\tau} z^{-k} = \frac{T_e/\tau}{\displaystyle{1 - e^{-T_e/\tau}z^{-1}}}\]

A partir de la fonction de transfert en \(z\), on peut remonter à la réponse temporelle en utilisant la propriété du retard temporel:

\[\begin{split}\begin{aligned} & \left(1 - e^{-T_e/\tau}z^{-1}\right)\underline{S}(z) = \frac{T_e}{\tau} \underline{E}(z) \\ & \Leftrightarrow s_k = e^{-T_e/\tau} s_{k-1} + \frac{T_e}{\tau} e_k \end{aligned}\end{split}\]

On observe donc que pour la même équation différentielle, suivant la méthode choisie on obtient des algorithmes de calcul de la réponse temporelle et des fonctions de transferts différents.

Fonction de transfert en \(z\):

la fonction de transfert dans le domaine de Laplace du filtre associé à cette équation différentielle est:

\[\underline{H}(p) = \frac{1}{1+\tau p}\]

ce qui donne dans le domaine des \(z\) pour un signal échantillonnée à la période \(T_e\):

\[\underline{H}(z) = \frac{1}{1+\frac{\tau}{T_e} \ln(z)}\]

De même en développant \(\ln(z)\) en série entière et en utilisant la propriété du retard temporel on pourrait obtenir un algorithme de calcul de la réponse temporelle. Cependant celle-ci sera impossible à réaliser en pratique, avec un algorithme ou via un circuit imprimé.

Simulations :

dans la figure Fig. 105 sont représentées les applications du filtre numérique passe-bas régi par l’équation différentielle Eq.28 à une entrée impulsionnelle, indicielle et sinusoïdale, pour différentes méthodes de synthèse du filtre numérique. On voit qu’elles diffèrent peu, et en particulier que la méthode de l’invariance impulsionnelle est particulièrement adaptée pour filtrer une excitation impulsionnelle. Les différences entre la sortie calculée et celle attendue pour un filtre analogique peuvent être réduites en augmentant la fréquence d’échantillonnage.

_images/filtre_numerique_t.svg

Fig. 105 Réponses impulsionnelles, indicielles et harmoniques d’un filtre numérique passe-bas réalisé selon deux méthodes, avec \(\tau=1\,\milli\second\) et \(T_e = \tau /10\).

Les diagrammes de Bode associés aux trois méthodes étudiées sont représentés figure Fig. 106, en opérant la transformation \(z \mapsto e^{j\omega T_e}\). A basse fréquence les diagrammes obtenus sont très similaires à celui attendu, avec une coupure à \(-3\) dB autour de \(1/\tau\). En revanche plus on s’approche de la fréquence de Shannon \(1/(2T_e)\) plus des divergences importantes apparaissent. Là aussi, augmenter la fréquence d’échantillonnage permettrait d’obtenir un filtrage numérique similaire à son équivalent analogique sur une plus grande plage de fréquence.

_images/filtre_numerique_f.svg

Fig. 106 Diagrammes de Bode d’un filtre numérique passe-bas réalisé selon trois méthodes, avec \(\tau=1\,\milli\second\) et \(T_e = \tau /10\).

Exercices (quelques solutions en annexe)

  1. Pour un système passe-bas du 2e ordre de fonction de transfert:

    \[\underline{H}(p) = \dfrac{1}{1 + \dfrac{2\xi}{\omega_0}p + \dfrac{p^2}{\omega_0^2}}\]

    calculer l’équation aux différences et les transformées en \(z\) par les trois méthodes exposées dans ce cours.