Electronique : signaux

Conversion analogique-numérique et numérique-analogique : échantillonnage, quantification et restitution des signaux

Le monde est analogique : une tension varie continûment, à tout instant. L'ordinateur ne connaît que des nombres, en quantité finie. Pour passer de l'un à l'autre, il faut prélever le signal à intervalles réguliers (échantillonner), arrondir chaque valeur à un nombre de bits fixé (quantifier), puis, au retour, reconstruire une tension continue à partir de ces nombres. Cinq planches pour comprendre ce qu'on perd, ce qu'on garde, et comment fonctionnent les convertisseurs.

Un convertisseur analogique-numérique (CAN) fait deux opérations. L'échantillonnage fige la tension à des instants espacés de Te = 1/fe : c'est sans perte si le signal ne contient aucune fréquence supérieure à fe/2 (théorème de Shannon). La quantification arrondit chaque échantillon au plus proche des 2N niveaux disponibles : c'est toujours une perte, mais on la rend aussi petite qu'on veut en ajoutant des bits, chaque bit gagnant environ 6 dB de rapport signal sur bruit. Le convertisseur numérique-analogique (CNA) fait le chemin inverse, et un filtre lisse ensuite les marches qu'il produit.

Une sinusoïde (gris) est échantillonnée (points), chaque échantillon est arrondi à l'un des 16 niveaux d'un convertisseur 4 bits (escalier bleu), puis le signal est reconstruit (rouge) à partir de ces nombres.
ConvertisseurPrincipeRésolution typiqueVitesse typique
CAN flash2N − 1 comparateurs en parallèle6 à 8 bitsplusieurs milliards d'échantillons/s
CAN à approximations successivesrecherche dichotomique, un bit par cycle10 à 18 bitsjusqu'à quelques millions/s
CAN sigma-delta1 bit très rapide, puis filtrage numérique16 à 24 bitsaudio, mesure de précision
CNA à réseau R-2Rsomme de courants pondérés par des puissances de 28 à 16 bitsrapide
CNA par MLImoyenne d'un signal carré filtré8 à 12 bitslent, très bon marché
Planche 1

Échantillonner : le théorème de Shannon et le repliement

Une suite d'échantillons ne dit rien de ce qui se passe entre eux. Pourtant, si le signal ne contient aucune fréquence supérieure à fe/2, la fréquence de Nyquist, une seule courbe passe par tous les points avec cette contrainte : on peut la reconstruire exactement, en remplaçant chaque échantillon par une fonction sinus cardinal, sin(πx)/(πx), et en les additionnant (formule de Whittaker et Shannon). Au-delà de fe/2, l'ambiguïté apparaît : une sinusoïde de fréquence f a exactement les mêmes échantillons qu'une sinusoïde de fréquence |f − k·fe|. Le convertisseur ne peut pas les distinguer, et la reconstruction produit la fréquence basse : c'est le repliement (aliasing). D'où le filtre passe-bas obligatoire avant tout échantillonnage.

reconstruction : x(t) = Σ x[n]·sinc(fet − n)  ·  fréquence apparente : fa = |f − k·fe|, k entier le plus proche de f/fe
Signal d'origine (gris), échantillons (rouge) et signal reconstruit à partir des seuls échantillons par la formule de Whittaker-Shannon (bleu).
Spectre : la fréquence du signal (gris) et ses images autour des multiples de fe (traits clairs). La zone colorée va de 0 à fe/2 ; la raie rouge est la fréquence qu'on retrouve après conversion.
Fréquence de Nyquist fe/2
—
Fréquence trouvée dans les échantillons (transformée de Fourier, 4 096 points)
—
|f − k·fe| · écart
—
Écart efficace : reconstruction / signal d'origine
—
Écart efficace : reconstruction / sinusoïde à fa
—
—
Planche 2

Quantifier : 6 dB par bit

Avec N bits, un convertisseur dispose de 2N niveaux, espacés du pas de quantification q (le « LSB »). Chaque échantillon est arrondi au niveau le plus proche : l'erreur est comprise entre −q/2 et +q/2. Pour un signal assez riche, elle se comporte comme un bruit uniforme, de valeur efficace q/√12. Pour une sinusoïde qui occupe toute la plage, le rapport signal sur bruit vaut alors 6,02·N + 1,76 dB : chaque bit ajouté divise le bruit par deux. Mais si le signal est plus petit que le pas, il disparaît purement et simplement. On ajoute alors un faible bruit avant la conversion, le dither : l'erreur devient un vrai bruit, un peu plus fort, mais le signal survit, noyé dedans, et une moyenne le retrouve.

q = plage/2N  ·  erreur efficace = q/√12  ·  RSB = 6,02·N + 1,76 + 20·log10(A/Amax) dB  ·  avec dither uniforme de ±q/2 : 3 dB de moins
En haut : sinusoïde (gris) et valeurs quantifiées (bleu). En bas : erreur de quantification, en fraction du pas q.
Répartition de l'erreur sur 65 536 échantillons, en fraction de q. Sans dither, elle est uniforme entre −q/2 et q/2 ; avec dither, triangulaire entre −q et q.
Dither
Pas de quantification q (plage de −1 à +1 V)
—
Erreur efficace mesurée
—
q/√12 (ou q/√6 avec dither) · écart
—
Rapport signal sur bruit mesuré
—
6,02·N + 1,76 + 20·log(A) (− 3 dB avec dither) · écart
—
Amplitude du signal retrouvée dans la sortie (transformée de Fourier)
—
—
Planche 3

Le CNA à réseau R-2R : diviser par deux, encore et encore

Le réseau R-2R n'utilise que deux valeurs de résistance. Vu de chaque nœud, ce qui se trouve en aval équivaut toujours à 2R : à chaque nœud, le courant se partage donc en deux moitiés égales. Chaque bit, en commutant sa résistance 2R entre la référence et la masse, apporte une contribution deux fois plus faible que le bit précédent, et la tension de sortie vaut exactement Vref·code/2N. Exactement, si les résistances sont parfaites. Avec des résistances réelles, la marche entre deux codes voisins n'est plus égale à un LSB : c'est la non-linéarité différentielle (DNL). Le pire cas est le passage de 0111…1 à 1000…0, où tous les bits changent : si l'erreur dépasse un LSB, la sortie peut même redescendre quand le code augmente.

Vs = Vref·(bN−1/2 + bN−2/4 + … + b0/2N) = Vref·code/2N  ·  DNL = marche réelle/LSB − 1  ·  INL = écart à la droite idéale, en LSB
Le réseau R-2R pour le code choisi : chaque interrupteur relie sa résistance 2R à Vref (bit à 1, rouge) ou à la masse (bit à 0). Les tensions des nœuds sont calculées en résolvant les équations du réseau.
En haut : non-linéarité intégrale (INL) pour tous les codes. En bas : non-linéarité différentielle (DNL) de chaque marche, en LSB. Avec des résistances tirées au hasard selon la tolérance choisie.
Composants
Tension de sortie, réseau idéal résolu
—
Vref·code/2N · plus grand écart sur tous les codes
—
Tension de sortie avec les résistances tirées
—
DNL maximale / INL maximale
—
Monotonie (la sortie croît-elle toujours avec le code ?)
—
Précision relative de l'ordre de 1/2N nécessaire
—
—
Planche 4

Le CAN à approximations successives : le jeu du plus ou moins

Pour trouver un nombre entre 0 et 255, on demande d'abord « est-ce au moins 128 ? », puis, selon la réponse, « au moins 192 ? » ou « au moins 64 ? », et ainsi de suite : huit questions suffisent. Le CAN à approximations successives (SAR) fait exactement cela. Un registre propose un code, un CNA le transforme en tension, un comparateur dit si l'entrée est au-dessus ou au-dessous ; on garde ou on efface le bit, puis on passe au suivant. N bits demandent N cycles et un seul comparateur, là où le CAN flash en utilise 2N − 1 pour répondre en un seul coup, et où le CAN à rampe compte patiemment jusqu'à 2N.

code = ⌊Ve·2N/Vref⌋  ·  flash : 2N − 1 comparateurs, 1 cycle  ·  SAR : 1 comparateur, N cycles  ·  rampe : 1 comparateur, jusqu'à 2N cycles
À gauche : le registre, bit par bit, et la réponse du comparateur. À droite : la tension proposée par le CNA à chaque cycle (bleu) converge vers la tension d'entrée (rouge).
Code obtenu après N comparaisons
—
⌊Ve·2N⌋
—
Erreur de conversion (Ve − code·LSB), en LSB
—
Vérification sur 10 000 tensions tirées au hasard
—
Comparateurs ou cycles : flash / SAR / rampe
—
—
Planche 5 · signature

Suréchantillonner, moyenner, restituer

Trois façons d'échanger de la vitesse contre de la précision, ou de la précision contre de la simplicité. Le CAN sigma-delta n'a qu'un comparateur à 1 bit, mais il tourne très vite et repousse son bruit hors de la bande utile. Le CNA par modulation de largeur d'impulsion se contente d'un signal carré et d'un filtre RC. Et tout CNA, en maintenant chaque valeur jusqu'à la suivante, déforme un peu le spectre qu'il restitue.

Le modulateur sigma-delta compare son entrée à sa propre sortie 1 bit, intègre la différence, et décide du bit suivant selon le signe de l'intégrale. La densité de 1 dans le flot de bits suit l'entrée. L'erreur de quantification, énorme pour 1 bit, est mise en forme : la boucle la repousse vers les hautes fréquences, et un filtre numérique ne garde ensuite que la bande utile, fe/(2·R), où R est le taux de suréchantillonnage. Doubler R fait gagner 9 dB avec un modulateur du premier ordre, 15 dB avec un modulateur du second ordre.

1er ordre : RSB = 10·log(A²/2) − 10·log(π²/9) + 30·log R  ·  2e ordre : RSB = 10·log(A²/2) − 10·log(π⁴/15) + 50·log R
À gauche : entrée (gris), flot de bits (traits) et sa moyenne glissante sur R bits (bleu). À droite : spectre du flot de bits (65 536 points), en dB ; la bande utile est colorée.
Modulateur
RSB mesuré dans la bande utile
—
Formule du bruit mis en forme · écart
—
Résolution équivalente (RSB − 1,76)/6,02
—
Pente mesurée du bruit entre 0,01·fe et 0,1·fe
—
—

Un microcontrôleur sans CNA sait au moins produire un signal carré de 5 V à 10 kHz dont il règle la fraction du temps à l'état haut, le rapport cyclique D. Sa valeur moyenne vaut D·5 V. Un filtre RC ne garde que cette moyenne, plus une petite ondulation résiduelle. Plus RC est grand, plus l'ondulation est faible, mais plus la sortie met de temps à suivre un changement de consigne.

moyenne = D·Vdd  ·  ondulation crête à crête : Vdd·(1 − e−DT/τ)(1 − e−(1−D)T/τ)/(1 − e−T/τ) ≈ Vdd·D(1 − D)·T/τ  ·  établissement à 1 % : τ·ln 100
Signal MLI (gris) et tension filtrée (bleu) depuis la mise en marche. Encadré : agrandissement des dernières périodes, où l'on voit l'ondulation.
Moyenne mesurée en régime établi
—
D·Vdd · écart
—
Ondulation crête à crête mesurée
—
Formule exacte · approximation D(1 − D)T/τ
—
Temps d'établissement à 1 % (mesuré)
—
τ·ln 100 · écart
—
—

Un CNA tient chaque valeur jusqu'à l'échantillon suivant : sa sortie est un escalier. Cet escalier contient la bonne fréquence f, légèrement affaiblie, et des images autour de chaque multiple de fe. L'affaiblissement suit la fonction |sin(πf/fe)/(πf/fe)| : c'est la distorsion de maintien, de près de 4 dB à fe/2, que les CNA audio corrigent par un léger rehaussement des aigus. Les images, elles, sont retirées par le filtre de lissage. Une interpolation linéaire entre les échantillons affaiblit les images davantage, avec la fonction élevée au carré.

maintien : |H(f)| = |sinc(f/fe)|  ·  interpolation linéaire : |H(f)| = sinc²(f/fe)  ·  images à k·fe ± f
À gauche : sinusoïde idéale (gris) et sortie du CNA (bleu). À droite : amplitude des raies de la sortie jusqu'à 3fe, mesurée par transformée de Fourier, et enveloppe prévue (tirets).
Restitution
Amplitude mesurée à f
—
Enveloppe prévue à f · écart
—
Première image, à fe − f (mesurée)
—
Enveloppe prévue à fe − f · écart
—
—

Repères historiques

Ce qu'il faut retenir

Échantillonner sans perte

Un signal dont le spectre s'arrête avant fe/2 est entièrement déterminé par ses échantillons. Au-delà, les fréquences se replient et deviennent impossibles à distinguer de fréquences basses : on filtre avant de convertir.

Quantifier avec mesure

L'arrondi ajoute un bruit de valeur efficace q/√12 : 6 dB de rapport signal sur bruit par bit. Un dither rend ce bruit inoffensif pour les signaux très faibles ; le suréchantillonnage et la mise en forme du bruit échangent de la vitesse contre des bits.

Les convertisseurs

Le réseau R-2R divise par deux à chaque nœud ; sa précision dépend de celle des résistances. Le CAN SAR cherche le code par dichotomie, en N cycles. À la sortie, le maintien affaiblit légèrement les aigus et crée des images qu'un filtre de lissage retire.
Pour aller plus loin : modèles et calculs de contrôle

Planche 1. Fréquence apparente mesurée par transformée de Fourier rapide de 4 096 échantillons, fenêtre de Hann, interpolation parabolique du pic. Reconstruction par la formule de Whittaker-Shannon tronquée à 401 échantillons, évaluée au centre.

Planche 2. Quantificateur à niveau central, plage de −1 à +1 V, saturation aux extrémités. Fréquence du signal incommensurable avec fe. Dither : bruit uniforme de ±q/2, graine fixe.

Planche 3. Tension des nœuds obtenue par résolution du système tridiagonal des lois de Kirchhoff (algorithme de Thomas), pour chacun des 2N codes ; résistances tirées selon une loi normale. DNL et INL par rapport à la droite passant par les codes extrêmes.

Planche 4. CNA et comparateur idéaux. La vérification compare le code SAR au calcul direct pour 10 000 tensions pseudo-aléatoires.

Planche 5. Sigma-delta : modulateurs à intégrateurs discrets et quantificateur ±1 ; spectre par transformée de Fourier rapide de 65 536 points, fenêtre de Hann ; RSB = puissance des raies du signal / puissance du bruit dans la bande utile. MLI : intégration par Runge-Kutta, 400 pas par période. Maintien : sortie calculée sur 64 points par échantillon, 256 échantillons, amplitudes mesurées par transformée de Fourier sur un nombre entier de périodes.