le Bruit et les dB

Dans ce chapitre, nous aborderons le bruit, notamment la façon dont il est modĂ©lisĂ© et traitĂ© dans un systĂšme de communication sans fil. Les concepts comprennent l’AWGN, le bruit complexe et le SNR/SINR. Nous introduirons Ă©galement les dĂ©cibels (dB) en cours de route, car ils sont largement utilisĂ©s dans les communications sans fil et la radio logicielle.

Le Bruit Gaussien

La plupart des gens connaissent le concept de bruit: des fluctuations indésirables qui peuvent masquer le ou les signaux souhaités. Le bruit ressemble à quelque chose comme:

_images/noise.png

Notez que la valeur moyenne est Ă©gale Ă  zĂ©ro dans le graphique temporel. Si la valeur moyenne n’était pas nulle, nous pourrions soustraire la valeur moyenne, l’appeler un biais, et il nous resterait une moyenne de zĂ©ro. Notez Ă©galement que les points individuels du graphique ne sont pas « uniformĂ©ment alĂ©atoires », c’est-Ă -dire que les grandes valeurs sont plus rares et la plupart des points sont plus proches de zĂ©ro.

Nous appelons ce type de bruit « bruit gaussien ». C’est un bon modĂšle pour le type de bruit provenant de nombreuses sources naturelles, comme les vibrations thermiques des atomes dans le silicium des composants RF de notre rĂ©cepteur. Le thĂ©orĂšme de la limite centrale nous dit que la somme de nombreux processus alĂ©atoires aura tendance Ă  avoir une distribution gaussienne, mĂȘme si les processus individuels ont d’autres distributions. En d’autres termes, lorsqu’un grand nombre d’évĂ©nements alĂ©atoires se produisent et s’accumulent, le rĂ©sultat semble approximativement gaussien, mĂȘme si les Ă©vĂ©nements individuels n’ont pas une distribution gaussienne.

_images/central_limit_theorem.svg

La distribution gaussienne est également appelée distribution « normale » (rappelons une courbe en cloche).

La distribution gaussienne possĂšde deux paramĂštres: la moyenne et la variance. Nous avons dĂ©jĂ  discutĂ© de la façon dont la moyenne peut ĂȘtre considĂ©rĂ©e comme nulle, car vous pouvez toujours supprimer la moyenne, ou le biais, si elle n’est pas nulle. La variance modifie la « puissance » du bruit. Une variance plus Ă©levĂ©e se traduira par des nombres plus importants. C’est pour cette raison que la variance dĂ©finit la puissance du bruit.

La variance est Ă©gale Ă  l’écart-type au carrĂ© (\(sigma^2\)).

Decibels (dB)

Nous allons prendre une brĂšve pause pour prĂ©senter officiellement les dB. Vous avez peut-ĂȘtre dĂ©jĂ  entendu parler de dB, et si vous ĂȘtes dĂ©jĂ  familier avec cette technologie, vous pouvez sauter cette section.

Le travail en dB est extrĂȘmement utile lorsque nous devons traiter simultanĂ©ment des petits et des grands nombres, ou simplement un ensemble de trĂšs grands nombres. ConsidĂ©rez combien il serait fastidieux de travailler avec des nombres de l’échelle de l’exemple 1 et de l’exemple 2.

Exemple 1: Le signal 1 est reçu à 2 watts et le plancher de bruit est à 0.0000002 watts.

Exemple 2: un broyeur d’ordures est 100 000 fois plus bruyant qu’une zone rurale calme, et une tronçonneuse est 10 000 fois plus bruyante qu’un broyeur d’ordures (en termes de puissance des ondes sonores).

Sans dB, c’est-Ă -dire en travaillant en termes « linĂ©aires » normaux, nous devons utiliser beaucoup de 0 pour reprĂ©senter les valeurs des exemples 1 et 2. Franchement, si nous devions reprĂ©senter quelque chose comme le signal 1 en fonction du temps, nous ne verrions mĂȘme pas le plancher de bruit. Si l’échelle de l’axe des y allait de 0 Ă  3 watts, par exemple, le bruit serait trop faible pour apparaĂźtre sur le graphique. Pour reprĂ©senter ces Ă©chelles simultanĂ©ment, nous travaillons avec une Ă©chelle logarithmique.

Pour illustrer davantage les problĂšmes d’échelle que nous rencontrons dans le traitement du signal, considĂ©rons les cascades ci-dessous de trois des mĂȘmes signaux. La partie gauche reprĂ©sente le signal original en Ă©chelle linĂ©aire, et la partie droite montre les signaux convertis en Ă©chelle logarithmique (dB). Les deux reprĂ©sentations utilisent exactement la mĂȘme carte de couleurs, oĂč le bleu est la valeur la plus basse et le jaune la plus haute. Vous pouvez Ă  peine voir le signal de gauche dans l’échelle linĂ©aire.

_images/linear_vs_log.png

Pour une valeur x donnĂ©e, on peut reprĂ©senter x en dB Ă  l’aide de la formule suivante :

\[x_{dB} = 10 \log_{10} x\]

En Python:

x_db = 10.0 * np.log10(x)

Vous avez peut-ĂȘtre vu que 10 * est un 20 * dans d’autres domaines. Chaque fois que vous avez affaire Ă  une puissance quelconque, vous utilisez 10, et vous utilisez 20 si vous avez affaire Ă  une valeur qui n’est pas une puissance, comme la tension ou le courant. En DSP, nous avons tendance Ă  traiter avec une puissance. En fait, il n’y a pas une seule fois dans ce manuel oĂč nous devons utiliser 20 au lieu de 10.

Nous convertissons les dB en linéaires (nombres normaux) en utilisant:

\[x = 10^{x_{dB}/10}\]

En Python:

x = 10.0 ** (x_db / 10.0)

Ne vous laissez pas prendre par la formule, car il y a un concept clĂ© Ă  retenir ici. En DSP, nous traitons Ă  la fois de trĂšs grands et de trĂšs petits nombres (par exemple, la force d’un signal par rapport Ă  la force du bruit). L’échelle logarithmique en dB nous permet d’avoir une plus grande plage dynamique lorsque nous exprimons des nombres ou les traçons. Elle offre Ă©galement certaines commoditĂ©s, comme la possibilitĂ© d’additionner alors qu’on multiplierait normalement (comme nous le verrons dans le chapitre Bilans de liaison).

Les erreurs les plus courantes que les gens rencontrent lorsqu’ils sont novices en matiùre de dB sont les suivantes :

  1. Utiliser le log naturel au lieu du log base 10 car la fonction log() de la plupart des langages de programmation est en fait le log naturel.

  2. Oublier d’inclure le dB lors de l’expression d’un nombre ou de l’étiquetage d’un axe. Si nous sommes en dB, nous devons l’identifier quelque part.

  3. Lorsque vous ĂȘtes en dB, vous additionnez/soustrayez des valeurs au lieu de multiplier/diviser, par ex:

_images/db.png

Il est Ă©galement important de comprendre que le dB n’est pas techniquement une « unité ». Une valeur en dB seule est sans unitĂ©, comme si quelque chose Ă©tait 2x plus grand, il n’y a pas d’unitĂ©s jusqu’à ce que je vous dise les unitĂ©s. dB est une chose relative. En audio, quand on dit dB, on veut dire dBA, qui est l’unitĂ© du niveau sonore (le A est l’unitĂ©). Dans le domaine du sans fil, nous utilisons gĂ©nĂ©ralement les watts pour faire rĂ©fĂ©rence Ă  un niveau de puissance rĂ©el. Par consĂ©quent, vous pouvez voir l’unitĂ© dBW, qui est relative Ă  1 W. Vous pouvez Ă©galement voir l’unitĂ© dBmW (souvent Ă©crite dBm pour faire court) qui est relative Ă  1 mW. Par exemple, quelqu’un peut dire « notre Ă©metteur est rĂ©glĂ© sur 3 dBW » (donc 2 watts). Parfois, nous utilisons le terme dB seul, ce qui signifie qu’il est relatif et qu’il n’y a pas d’unitĂ©. On peut dire « notre signal a Ă©tĂ© reçu 20 dB au-dessus du bruit de fond ». Voici une petite astuces: 0 dBm = -30 dBW.

Voici quelques conversions courantes que je vous recommande de mémoriser :

Linéaire

dB

1x

0 dB

2x

3 dB

10x

10 dB

0.5x

-3 dB

0.1x

-10 dB

100x

20 dB

1000x

30 dB

10000x

40 dB

Enfin, pour mettre ces chiffres en perspective, voici quelques exemples de niveaux de puissance, en dBm :

80 dBm

Puissance d’émission d’une station de radio FM rurale

62 dBm

Puissance maximale d’un Ă©metteur radio amateur

60 dBm

Puissance d’un micro-ondes domestique typique

37 dBm

Puissance maximale d’une radio CB ou d’une radio amateur portative typique

27 dBm

Puissance d’émission typique d’un tĂ©lĂ©phone cellulaire

15 dBm

Puissance d’émission typique du WiFi

10 dBm

Puissance d’émission maximale du Bluetooth (version 4)

-10 dBm

Puissance de réception maximale du WiFi

-70 dBm

Exemple de puissance reçue pour un signal radio amateur

-100 dBm

Puissance minimale reçue pour le WiFi

-127 dBm

Puissance reçue typique des satellites GPS

Bruit dans le Domaine FrĂ©quentiel

Dans le chapitre Domaine frĂ©quentiel, nous avons abordĂ© la correspondance temps-frĂ©quence de la transformĂ©e de Fourier, c’est-Ă -dire ce Ă  quoi ressemble un certain signal dans le domaine temporel dans le domaine frĂ©quentiel. Et bien, Ă  quoi ressemble un bruit gaussien dans le domaine des frĂ©quences? Les graphiques suivants montrent un certain bruit simulĂ© dans le domaine temporel (en haut) et un tracĂ© de la densitĂ© spectrale de puissance (DSP) de ce bruit (en bas). Ces graphiques sont tirĂ©s de GNU Radio.

_images/noise_freq.png

Nous pouvons voir qu’il a Ă  peu prĂšs la mĂȘme apparence sur toutes les frĂ©quences et qu’il est assez plat. Il s’avĂšre que le bruit gaussien dans le domaine temporel est Ă©galement un bruit gaussien dans le domaine frĂ©quentiel. Alors pourquoi les deux graphiques ci-dessus ne sont-ils pas identiques? C’est parce que le graphique du domaine frĂ©quentiel montre l’amplitude de la FFT, donc il n’y aura que des nombres positifs. Il est important de noter qu’il utilise une Ă©chelle logarithmique, c’est-Ă -dire qu’il indique l’amplitude en dB. Sinon, ces graphiques se ressembleraient. Nous pouvons le prouver par nous-mĂȘmes en gĂ©nĂ©rant un peu de bruit (dans le domaine temporel) dans Python, puis en prenant la FFT.

import numpy as np
import matplotlib.pyplot as plt

N = 1024 # nombre d'échantillons à simuler, choisissez le nombre que vous voulez
x = np.random.randn(N)
plt.plot(x, '.-')
plt.show()

X = np.fft.fftshift(np.fft.fft(x))
X = X[N//2:] # ne regardez que les fréquences positives. rappelez-vous que // est juste un diviseur d'entier
plt.plot(np.real(X), '.-')
plt.show()

Notez que la fonction randn() utilise par défaut la moyenne = 0 et la variance = 1. Les deux graphiques ressembleront à ceci :

_images/noise_python.png

Vous pouvez alors produire le DSP plate que nous avions dans GNU Radio en prenant le log et en faisant la moyenne de plusieurs d’entre eux. Le signal que nous avons gĂ©nĂ©rĂ© et dont nous avons fait la FFT Ă©tait un signal rĂ©el (par opposition Ă  un signal complexe), et la FFT de tout signal rĂ©el aura des parties nĂ©gatives et positives correspondantes, c’est pourquoi nous n’avons sauvegardĂ© que la partie positive de la sortie FFT (la seconde moitiĂ©). Mais pourquoi n’avons-nous gĂ©nĂ©rĂ© que du bruit « rĂ©el », et comment les signaux complexes entrent-ils en jeu ?

Bruit Complexe

Le bruit « gaussien complexe » est celui que nous rencontrons lorsque nous avons un signal en bande de base; la puissance du bruit est rĂ©partie de maniĂšre Ă©gale entre les parties rĂ©elles et imaginaires. Et surtout, les parties rĂ©elle et imaginaire sont indĂ©pendantes l’une de l’autre; connaĂźtre les valeurs de l’une ne vous donne pas les valeurs de l’autre.

Nous pouvons générer un bruit gaussien complexe en Python en utilisant :

n = np.random.randn() + 1j * np.random.randn()

Mais attendez! L’équation ci-dessus ne gĂ©nĂšre pas la mĂȘme « quantité » de bruit que np.random.randn(), en termes de puissance (appelĂ©e puissance du bruit). Nous pouvons trouver la puissance moyenne d’un signal (ou d’un bruit) de moyenne nulle en utilisant :

power = np.var(x)

oĂč np.var() est la fonction de variance. Ici, la puissance de notre signal n est 2. Afin de gĂ©nĂ©rer un bruit complexe avec une « puissance unitaire », c’est-Ă -dire une puissance de 1 (ce qui rend les choses plus pratiques), nous devons utiliser:

n = (np.random.randn(N) + 1j*np.random.randn(N))/np.sqrt(2) # AWGN de puissance unitaire

Pour tracer un bruit complexe dans le domaine temporel, comme tout signal complexe, nous avons besoin de deux lignes:

n = (np.random.randn(N) + 1j*np.random.randn(N))/np.sqrt(2)
plt.plot(np.real(n),'.-')
plt.plot(np.imag(n),'.-')
plt.legend(['real','imag'])
plt.show()
_images/noise3.png

Vous pouvez voir que les parties réelles et imaginaires sont complÚtement indépendantes.

À quoi ressemble un bruit gaussien complexe sur un graphique IQ? Rappelez-vous que le graphique IQ montre la partie rĂ©elle (axe horizontal) et la partie imaginaire (axe vertical), qui sont toutes deux des gaussiennes alĂ©atoires indĂ©pendantes.

plt.plot(np.real(n),np.imag(n),'.')
plt.grid(True, which='both')
plt.axis([-2, 2, -2, 2])
plt.show()
_images/noise_iq.png

Il ressemble Ă  ce que l’on pourrait attendre: une tache alĂ©atoire centrĂ©e sur 0 + 0j, ou l’origine. Juste pour le plaisir, essayons d’ajouter du bruit Ă  un signal QPSK pour voir Ă  quoi ressemble le graphique IQ :

_images/noisey_qpsk.png

Maintenant, que se passe-t-il quand le bruit est plus fort ?

_images/noisey_qpsk2.png

Nous commençons Ă  comprendre pourquoi la transmission de donnĂ©es sans fil n’est pas si simple. Nous voulons envoyer autant de bits par symbole que possible, mais si le bruit est trop Ă©levĂ©, nous aurons des bits erronĂ©s Ă  la rĂ©ception.

AWGN

Le bruit blanc additif gaussien ou AWGN (pour Additive White Gaussian Noise en anglais) est une abrĂ©viation que vous entendrez souvent dans le monde du DSP et de la SDR. Le GN, qui veut dire bruit gaussien, nous en avons dĂ©jĂ  parlĂ©. Additif signifie simplement que le bruit est ajoutĂ© Ă  notre signal reçu. Blanc, dans le domaine des frĂ©quences, signifie que le spectre est plat sur toute la bande d’observation. En pratique, il sera presque toujours blanc, ou approximativement blanc. Dans ce manuel, nous utiliserons le bruit AWGN comme seule forme de bruit lorsque nous traiterons des liaisons de communication, des budgets de liaison, etc. Le bruit non-AWGN tend Ă  ĂȘtre un sujet de niche.

SNR et SINR

Le rapport signal Ă  bruit (RSB) ou (SNR) (pour signal to noise ratio en anglais) est la façon dont nous allons mesurer les diffĂ©rences d’intensitĂ© entre le signal et le bruit. Il s’agit d’un rapport, donc sans unitĂ©. Le SNR est presque toujours exprimĂ© en dB dans la pratique. Souvent, en simulation, nous codons de maniĂšre Ă  ce que nos signaux soient d’une puissance unitaire (puissance = 1). Ainsi, nous pouvons crĂ©er un rapport signal Ă  bruit de 10 dB en produisant un bruit d’une puissance de -10 dB en ajustant la variance lorsque nous gĂ©nĂ©rons le bruit.

\[\mathrm{SNR} = \frac{P_{signal}}{P_{noise}}\]
\[\mathrm{SNR_{dB}} = P_{signal\_dB} - P_{noise\_dB}\]

Si quelqu’un dit « SNR = 0 dB », cela signifie que la puissance du signal et du bruit est la mĂȘme. Un SNR positif signifie que notre signal est plus puissant que le bruit, tandis qu’un SNR nĂ©gatif signifie que le bruit est plus puissant. La dĂ©tection de signaux Ă  un SNR nĂ©gatif est gĂ©nĂ©ralement assez difficile.

Comme nous l’avons mentionnĂ© prĂ©cĂ©demment, la puissance d’un signal est Ă©gale Ă  la variance du signal. Nous pouvons donc reprĂ©senter le SNR comme le rapport entre la variance du signal et la variance du bruit:

\[\mathrm{SNR} = \frac{P_{signal}}{P_{noise}} = \frac{\sigma^2_{signal}}{\sigma^2_{noise}}\]

Le rapport signal Ă  interfĂ©rence plus bruit (SINR pour signal to interference and noise ration en anglais) est essentiellement le mĂȘme que le SNR, sauf que vous incluez l’interfĂ©rence avec le bruit dans le dĂ©nominateur.

\[\mathrm{SINR} = \frac{P_{signal}}{P_{interference} + P_{noise}}\]

La dĂ©finition de l’interfĂ©rence dĂ©pend de l’application/de la situation, mais il s’agit gĂ©nĂ©ralement d’un autre signal qui interfĂšre avec le signal d’intĂ©rĂȘt, qui le empiĂšte sur lui dans le domaine frĂ©quentiel, et/ou qui ne peut pas ĂȘtre filtrĂ© pour une raison quelconque.

Ressources Externes (en anglais)

Autres ressources sur l’AWGN, le SNR et la variance:

  1. https://en.wikipedia.org/wiki/Additive_white_Gaussian_noise

  2. https://en.wikipedia.org/wiki/Signal-to-noise_ratio

  3. https://en.wikipedia.org/wiki/Variance