Upload
pierremasure
View
664
Download
5
Embed Size (px)
Citation preview
PROJET DE TRAITEMENT DU SIGNAL – MASTER 1
CONVERTISSEURS NUMERIQUE – ANALOGIQUE UTILISES DANS LES
LECTEURS CD
Roppe Quentin, Masure Pierre
1. Numérisation du signal audio analogique
Nous allons dans une première étape nous familiariser avec la numérisation d’un signal
analogique. Pour ce faire, nous devons d’abord échantillonner le signal et ensuite le
quantifier. Au fil de ce rapport, nous illustrerons par des figures réalisées sous Simulink les
différentes étapes qui ont été nécessaires au bon déroulement du projet.
1.1 La quantification uniforme à L = niveaux
Après avoir préalablement nommé notre schéma Simulink « quantification_uniform.mdl »,
nous avons généré pendant 2 secondes un signal aléatoire uniforme x(n) de variance égale à
3 et de fréquence d’échantillonnage égale à 8000 Hz.
Nous désirons générer ce signal entre - et ( q est la notation théorique ). Nous savons
que pour un signal aléatoire uniforme, la variance vaut = 3. Nous pouvons donc en
déduire la valeur de q = 6. Nous spécifions donc dans notre Uniform Random Number :
- minimum = - 3
- maximum = 3
- sample time = 1/8000 s ( correspondant à notre période d’échantillonnage) .
Via le bloc scope renommé x ( dans lequel nous avons décoché la limitation de points ), nous
avons pu visualiser le signal x(n). Pour ce faire, nous avons également fixé time range à 0.02
afin de visualiser plus clairement le graphique. Nous observons bien des valeurs comprises
entre -3 et 3.
Nous avons ensuite importé ces valeurs sous Matlab via le bloc To workspace . Dans ce bloc,
nous avons appelé « variable name : x ». Nous avons fixé sample time = 1/8000 ( nous ne le
rappellerons plus par la suite sauf si ce temps d’échantillonnage vient à changer ) ainsi que
Array comme format. Nous obtenons bien une variance égale à var ( x ) = 3.0203 3 .
Avant de commencer la quantification proprement dite, nous avons simulé le
périodogramme moyenné du signal x(n). Comme demandé, nous avons fixé les paramètres :
- window type : Hamming
- FFT length ( après avoir décoché inherit length ) = 2^13
- number of spectral averages = 10 (correspondant au L théorique)
Etant donné que nous voulons calculer ce périodogramme par trames de 400 échantillons et
que le signal est généré par échantillon, nous avons placé un buffer en amont. Nous avons
alors précisé Output buffer size = 400 ( nous ne le repréciserons plus par la suite ).
Enfin, pour afficher ce périodogramme, nous avons utilisé un « frequency vector scope ».
Comme paramètres, nous avons fixé :
- input domain : frequency ( logique pour afficher un périodogramme )
- frequency range : *0… fs+ ( pour afficher jusqu’à la fréquence d’échantillonnage)
- sample time = 1/8000 s (inherit décoché pour réaliser cette opération).
- amplitude scaling : dB
Etant donné qu’il s’agit d’un signal aléatoire uniforme de variance 3, nous savons que sa
densité spectrale est constante et égale à la variance en dB : .
C’est bien la valeur observée sur le périodogramme.
Voici les différentes figures obtenues jusqu’ici :
Figure 1: Génération d'un signal aléatoire uniforme et calcul de sa densité spectrale de puissance
Figure 2 : Signal aléatoire uniforme x(n) (gauche) et densité spectrale de puissance du signal x(n) (droite)
Nous allons maintenant implémenter la quantification uniforme sous Simulink. Cette
quantification se fera sur l’intervalle *-A , +A] avec A = 3 et N = 3 (nombre de bits sur lequel
l’information numérique sera codée). Pour réaliser cette quantification, nous allons
simplement transposer sous forme de bloc la formule de quantification à savoir :
tout en tenant compte de bien rester dans l’intervalle
, avec .
Nous avons donc placé un premier gain multipliant x par . Ensuite, nous lui
appliquons un floor ( arrondi vers le bas ) pour le remultiplier par après par q. Nous le
sommons alors avec . Enfin, afin de ne pas sortir de l’intervalle nous plaçons un bloc
saturation où « upper limit » = A-(A/(2^N)) et « lower limit » = (-A)+(A/(2^N)). Nous
mettons alors ce bloc sous un masque nommé quantification dans lequel nous initialisons
( edit mask parameters ) les valeurs de A et N.
Nous obtenons ce schéma pour la quantification :
Figure 3 : Schéma-bloc de la quantification uniforme
Nous pouvons observer le signal quantifié sur le scope où nous visualisons bien 8 niveaux
distincts pour le signal ce qui est logique : niveaux de quantification. Ces 8
niveaux sont compris entre -3 et 3 ( plus exactement entre -3 + et 3 - ).
Nous avons ensuite codé le périodogramme moyenné du signal quantifié exactement de la
même façon que pour le signal non quantifié. On constate, comme nous l’avons vu au cours
théorique, que l’erreur commise lors de la quantification peut être considérée comme un
bruit qui vient s’ajouter au signal. Et en effet, le bruit est légèrement plus important autour
de 4.77 dB pour le périodogramme moyenné du signal quantifié avec des pics dépassant les
8 dB ( ce qui n’est pas le cas sur le périodogramme du signal x(n) ). On le vérifiera de manière
plus précise par après en calculant le RSB (rapport signal à bruit).
Nous avons ensuite simplement soustrait (n) à x(n) via un bloc « add » pour obtenir
l’erreur e(n). Nous le visualisons via un scope, ramenons les valeurs sous Matlab à l’aide d’un
« workspace » et obtenons son périodogramme moyenné exactement avec les mêmes blocs
qu’utilisés précédemment.
Le signal d’erreur est théoriquement compris entre , = , =
, . C’est bien ce que nous observons sur le scope du signal d’erreur. Le signal
d’erreur devrait être un bruit blanc de variance
. C’est bien autour de cette valeur qu’ « oscille » le périodogramme d’erreur.
Calculons maintenant la rapport signal à bruit ( x(n) et e(n) ) :
Les deux valeurs théoriques et expérimentales concordent bien. Nous pouvons même
rentrer un peu plus dans le détail. En effet, calculons le RSB ( xq (n) et e(n) ) :
Nous constatons donc bien que le RSB du signal quantifié diminue.
Visualisons les graphes obtenus pour cette partie :
Figure 4 : Schéma-bloc du signal quantifié et du calcul de l’erreur de quantification
Figure 5 : Signal x(n) aléatoire uniforme quantifié (gauche) et signal d'erreur e(n) associé (droite)
Figure 6 : Densité spectrale de puissance du signal x(n) aléatoire uniforme quantifié (gauche) et densité spectrale de puissance du signal d'erreur associé (droite)
Nous allons maintenant remplacer le signal d’entrée x(n) aléatoire uniforme par un signal
échantillonné à 8000 Hz composé de 12 sinusoïdes d’amplitudes et fréquences différentes.
Le schéma-bloc est donc identique au précédent (cfr figure 4) excepté ce remplacement .
Pour simuler cela, nous avons simplement sommé via un bloc « add » les 12 sinusoïdes
discrètes avec les amplitudes et fréquences adéquates.
On constate que le signal généré a approximativement l’allure d’une sinusoïde ce qui est
logique étant donné que c’est une somme de sinusoïdes. Le signal quantifié l’est bien sur 8
niveaux distincts comme précédemment.
De plus, on vérifie bien que le périodogramme moyenné est constitué d’un ensemble de
raies aux différentes fréquences spécifiées. Vérifions l’amplitude d’une raie…
Enfin, comme le signal est suffisamment « complexe », l’erreur de quantification peut être
assimilé à un bruit blanc de variance C’est
bien l’amplitude « centrale » obtenue sur le périodogramme moyenné du signal d’erreur.
Figure 7 : Signal x(n) constitué de sinusoïdes (gauche) et signal quantifié de ces sinusoïdes (droite)
Figure 8 : Densité spectrale de puissance du signal quantifié constitué de sinusoïdes (gauche) et densité spectrale de puissance du signal d'erreur de ces mêmes sinusoïdes (droite)
Pour terminer cette première partie, nous allons remplacer le système constitué des
sinusoïdes par une seule sinusoïde valant : où Te=1/8000 s.
Il s’agit du même schéma-bloc (cfr figure 4) excepté ce remplacement.
Le signal n’est plus suffisamment complexe ; son erreur de quantification ne peut plus être
considérée comme un bruit blanc. Le signal d’erreur n’a plus la variance d’un bruit blanc
valant -13.2906 dB. En effet, le périodogramme moyenné présente des raies d’égales
amplitudes ainsi que du bruit aux alentours de -50 dB.
En ce qui concerne le signal x(n), nous observons bien une sinusoïde échantillonnée
d’amplitude 1.41 et de période 0.005 s. Nous constatons qu’il n’y a plus 8 niveaux de
quantification mais 4. C’est logique ; en effet si l’on divise l’amplitude crête à crête de la
sinusoïde par le pas de quantification, nous obtenons au maximum 4 niveaux de
quantification .
Figure 9 : Signal x(n) correspondant à une sinusoïde échantillonnée (gauche) et cette sinusoïde quantifiée (droite)
Figure 10 : Signal d'erreur e(n) dû à la quantification de la sinusoïde et densité spectrale de puissance associée (droite)
Nous retournons les valeurs des signaux x(n), x_quantifié(n) et e(n) à l’aide de trois blocs
« To workspace » dans le logiciel Matlab . Lorsque nous écoutons la différence de son entre
la sinusoïde et le signal quantifié via la commande soundsc (x, 8000), nous remarquons que,
pour le signal quantifié, le son est plus aïgu et qu’il y a superposition de plusieurs sons. C’est
normal car son spectre est plus riche en harmoniques.
Enfin, pour terminer cette première partie, calculons le RSB des signaux x(n) et e(n).
Si l’on compare cette valeur avec celle obtenue dans la cas du signal aléatoire uniforme, on
constate que le rapport signal à bruit a diminué. C’est normal si l’on observe les densités
spectrales d’erreur des deux signaux : le bruit relatif au périodogramme du sinus couvre
environ 40 dB alors que pour le signal aléatoire c’est de l’ordre d’environ 8 dB.
Figure 11 : Périodogramme de l'erreur de quantification du signal aléatoire (gauche) et périodogramme de l'erreur de quantification du sinus (droite)
1.2 Le dithering
Le principe du dithering est d’ajouter un bruit aléatoire au signal analogique de façon à
décorréler le bruit de quantification avec le signal. L’objectif de cette méthode est de réduire
la perception du bruit de quantification.
Pour réaliser ce « dithering », nous allons adapter le masque réalisant la quantification
uniforme. Nous allons construire un bruit blanc triangulaire ( meilleur dither existant ) en
sommant deux bruits blancs uniformes allant de [- , . Il est facilement compréhensible
que sommer deux bruits blancs uniformes donne un bruit blanc triangulaire.
Figure 12 : Création d’un bruit blanc triangulaire
Explications :
Prenons par exemple des valeurs
comprises entre -3 et +3 de manière
aléatoire et uniforme et on les somme. On
obtient donc un histogramme compris
entre -6 et +6. Cependant, pour obtenir 6 (
ou -6) , une seulement combinaison est
possible ( 3 et 3) tandis que pour obtenir
0, beaucoup plus de combinaisons sont
possibles (-3+3, -2.5+2.5, -1+1,…). Il est
donc normal d’obtenir une densité de
probabilité plus importante au centre et
faible aux extrémités.
Nous avons donc sommé à l’aide du bloc « add » deux bruits blancs uniformes « Uniform
Random Number » où :
- minimum = -A/(2^N) = -
- maximum = A/(2^N) = +
- sample time = 1/8000 s
Il est à noter que nous avons modifié la valeur d’ « initial seed » pour l’un des deux bruits car
Matlab ne génère pas tout à fait de manière aléatoire le bruit uniforme… Nous avons via la
sortie « bruit 2 » ramené les valeurs dans « To workspace triangle » afin d’afficher son
histogramme sous Matlab. Nous obtenons bien un histogramme sous Matlab ( commande :
hist ( triangle ,100) ) en forme de bruit blanc triangulaire. Si l’on somme tous les bâtonnets,
on obtient bien les 16001 échantillons ( 8000 éch. / seconde * 2 secondes de simulation)
compris entre –q et +q à savoir -0.75 et +0.75. On peut également vérifier que le bruit
triangulaire est blanc. En effet, sa variance vaut
On observe bien
un périodogramme avec une valeur centrale d’environ -10.25 dB (densité spectrale de
puissance « constante il s’agit bien d’un bruit blanc.
Figure 13 : Histogramme du bruit blanc triangulaire (gauche) et densité spectrale de puissance de ce bruit blanc triangulaire (droite)
Le schéma-bloc de la figure 4 est donc conservé si ce n’est le bloc quantification où l’on a
rajouté le « dither » au signal échantillonné x(n) ( où .
Nous obtenons alors pour le bloc de « dithering + quantification » :
Figure 14 : Schéma-bloc du dithering ajouté à la quantification
De nouveau via la commande soundsc (x, 8000), nous allons écouter les signaux x(n) et
x_quantifié(n). On constate que le bruit de quantification est moins gênant pour l’oreille car
on entend le signal de départ avec du bruit au-dessus. Pour mieux comprendre cela, il suffit
de comparer les densités spectrales de puissance avant et après dithering. On constate
distinctement que le signal n’est plus étouffé par d’autres harmoniques et est donc plus
audible. Cependant, on a ajouté un bruit aléatoire au signal avant de la quantifier, il serait
donc normal d’obtenir un RSB plus petit que sans « dithering » . C’est bien ce que l’on
constate :
Figure 15 : Densité spectrale de puissance du sinus x(n) quantifié(gauche) et densité spectrale de puissance du sinus quantifié avec dithering (droite)
2. CNA conventionnel
Le convertisseur numérique/analogique a pour but de transformer le signal numérique en un
signal analogique. Pour ce faire, le signal numérique x(n) est transformé par une fonction en
escaliers , cette opération consistant à réaliser une interpolation d'ordre zéro. Dans un
dernier temps, le signal en escalier est lissé par un filtre passe-bas analogique pour obtenir le
signal analogique x(t).
Illustration sous Matlab et Simulink
...
10. Calculer alors sous Matlab le rapport signal à bruit entre ces deux signaux, au moyen de
la fonction snr.m qui vous est fournie par le personnel de laboratoire.
function [snr_value, shift] = snr(signal,signal_plus_noise,max_shift,showplot) Cette fonction renvoie le rapport signal à bruit calculé à partir des signaux en entrée. Le max_shift nous donne le décalage maximal dans le temps en nombre d'échantillons entre le signal et le signal bruité. Le décalage actuel dans le temps (time-shift) est obtenu pour le calcul d'une cross-correlation maximale et cette valeur est renvoyée dans le shift en valeur absolue. Ceci est pris en compte pour estimer le bruit. En fait, cette fonction calcule la cross-corrélation pour tout k et elle regarde où cette valeur est maximale. Une fois réalisé, elle peut donc estimer le décalage entre les deux signaux, elle effectue donc une correction pour ce décalage temporel des deux signaux et dans un dernier temps elle finit donc par estimer de manière correcte le rapport signal à bruit.
Maintenant, il est intéressant d'analyser pourquoi on constate un décalage temporel entre les deux signaux (le signal d'entrée et le signal en sortie, bruité). Ce délai est dû à l'utilisation du filtre, l'ordre du filtre, l'utilisation de buffers et l'emploi du bloc "TO FRAME",… code matlab:
sinr(sin_de_depart,sin_bruitée,48001) 48001 = nombre d'échantillons maximal pour la simulation=on suppose à raison que les deux sinusoïdes seront décalées l'une par rapport à l'autre au maximum de leur nombre d'échantillons respectifs=8000 Hz * 2 secondes de simulation * 3 (pour l'interpolation d'ordre zéro avec fréquence d'échantillonnage 3 fois plus élevée).
valeurs retournées:
shift=6
snr=27.8580 dB
Explication pourquoi SNR meilleur?
3. CNA à sur-échantillonnage
problèmes des CNA conventionnels:
nécessitent des composants analogiques de haute précision
très sensibles aux interférences
imposent de fortes contraintes lors de la conception du filtre passe-bas analogique
de lissage, dont la bande de transition doit être restreinte à l'intervalle [ , ]
où est la fréquence maximum du signal.
fonctionnement du la CNA à sur-échantillonnage:
sur-échantillonnage du signal d'entrée x(n) par un facteur K (insère K-1 zéros entre
chaque échantillon de x(n) )
filtrage par un filtre passe-bas numérique de bande passante égale à [0, ]
avec une amplitude K fois plus petite que x(n) et fréquence
d'échantillonnage K fois plus élevée
puissance du bruit de quantification e(n) filtré par le filtre passe-bas numérique
d'interpolation
possible de re-quantifier le signal sur N' bits (avec N' < N) tout en gardant la
même puissance de bruit par rapport à la puissance du signal
Il faut donc égaler les aires grises correspondant au bruit sur le spectre de
et le spectre de , égaler les densités spectrales de puissance des bruits de
quantification de telle sorte qu'on puisse garder la même puissance du bruit avec un
nombre N' de bits de quantification < N.
K=4 N-N'=1 N'=N-1 tout en conservant le même rapport singal
à bruit.
Avantages :
gagner en nombre de bits de quantification
gagner en bande de transition pour le filtrage
Illustration sous Matlab et Simulink
Le schéma Simulink "CNA_conventionnel.mdl" est sauvegardé sous un nouveau nom, à savoir
"CNA_surechantillonnage.mdl". On fixe le temps de simulation à 2 secondes.
1.
Quantification:
A=3
N=6
2.
Modifications à apporter pour la visualisation de :
buffer 4*400
|FFT|²FFT length = 2^13
Freq Scope Sample time = 1/(8000*4) car sur-échantillonnage avec K=4.
Figure 16: Densité spectrale de puissance, gauche: quantifié, droite: x zéro
Figure 17: Oscillogramme, gauche: quantifié, droite: x zéro
Que constate-t-on?
Le spectre a bien été sur-échantillonné par un facteur 4 par rapport au signal
précédent situé à gauche de la figure 16 correspondant à x(n). Rajouter des zéros
entre chaque échantillon ne modifie en rien le spectre. On a juste modifié la
fréquence d'échantillonnage.
Sur la figure 17, on constate que pour construire ), on est venu placer 3 zéros
entre chaque échantillon de x(n).
3. On effectue le filtrage passe-bas numérique d'interpolation sous simulink au moyen d'un bloc
Digital Filter Design de la librairie Signal processing blockset>Filtering> Filter Designs. On choisira un
filtre non récursif de Parks-Mclellan (equiripple) de bande de transition
On obtient . (x_sharp)
Figure 18: insertion du filtre passe-bas numérique
Figure 19: Spécifications du filtre passe-bas numérique
Commentaires:
La fréquence d'échantillonnage a utiliser est bien maintenant de 8000*4 Hz.
Cette nouvelle fréquence d'échantillonnage doit être utilisée dans tous les blocs de la figure
18 situés après le bloc Upsample.
4. Affichage du signal ainsi obtenu dans un bloc scope renommé "x sharp", et
visualisation de sa transformée de Fourier calculée sur NTFD=2^13 points, au départ de
trames de 4*400 échantillons.
On veillera donc bien à mettre dans le buffer 4*400, pour le module |FFT|² on stipulera
bien que le calcul se réalise sur les 2^13 points. On modifiera aussi la fréquence
d'échantillonnage à 32000 Hz dans les modules de visualisation, notamment (Freq
Scope).
Figure 20: Oscillogramme de x sharp à dte comparé à celui de x zéro à gauche
On remarque que l'amplitude de x sharp a fortement diminué par rapport à x zéro. De plus on
constate un délai de 0.004 secondes environ de x sharp sur le signal x zéro. Ceci est lié à l'effet du
filtrage, à l'ordre élevé du filtre de Parks-Mclellan.
Figure 21: Densité spectrale de puissance de x sharp
On constate sur la figure 21 que le spectre est identique au spectre de x zéro. Toutefois, le but du
filtrage passe-bas numérique était de supprimer le bruit en haute fréquence. L e bruit est donc ici
éliminé en partie.
5. On effectue ici la re-quantification (avec dithering) sur N'=4 bits.
Nous avions crée un masque pour le module de dither/quantification. Nous devons donc modifier les
paramètres de ce bloc de manière à l'adapter à la re-quantification sur N'=4 bits. On modifie donc le
paramètre A par la valeur ¾. N est modifié et devient 4. Comme l'amplitude A est modifiée, une re-
quantification devient possible. On veillera aussi à changer dans les blocs "Uniform Random Number"
de notre système de dither la fréquence d'échantillonnage qui vaut maintenant 32000 Hz.
6. Affichage du signal x'(n) dans un bloc scope renommé "x prime" et visualisation de sa transformée
de Fourier calculée sur NTFD=2^13 points, au départ de trames de 4*400 échantillons.
La procédure est classique. Nous avons notre fréquence d'échantillonnage de 32000 Hz. On doit donc
modifier dans chaque bloc la fréquence d'échantillonnage afin de la mettre à cette valeur. On
modifie le buffer pour les 4*400 échantillons. On modifie le bloc |FFT|² afin que le calcul soit réalisé
sur les 2^13 points.
Figure 22: Densité spectrale de puissance de x prime
Figure 23: Oscillogramme, gauche: x sharp, droite: x prime
On constate ici sur la figure 23 que x prime est bien le signal x sharp requantifié sur N' bits avec N'=4.
Sur la figure 22, on constate que le bruit est à nouveau uniformément réparti sur tout le spectre et
non plus sur une partie du spectre comme précédemment. Toutefois, le calcul a été réalisé afin de
garder un même rapport signal à bruit. Les aires sous-jacentes aux densités spectrales de puissance
pour x sharp et pour x prime sont en effet calculées pour être identiques.
7. On effectue l'interpolation d'ordre zéro telle que dans le CNA conventionnel mais on adapte les
paramètres en fonction de la nouvelle fréquence d'échantillonnage à savoir 3*8000*4 Hz.
On doit donc modifier tous les blocs suivants l'interpolation d'ordre zéro par cette nouvelle
fréquence d'échantillonnage (exemple Freq Scope).
De plus, on doit adapter tous les buffers suivants l'interpolation d'ordre en modifiant leur valeur à
4*3*400 échantillons par trame.
Pourquoi un facteur par 3 ? L'interpolation d'ordre zéro en réalisé en décalant 2 fois le signal initial, à
la place d'avoir un échantillon, nous en avons maintenant 3. La fréquence et le nombre d'échantillons
est donc multiplié par un facteur 3.
8. Affichage du signal ainsi obtenu ainsi que sa transformée de Fourier calculée sur NTFD= 2^13
points, au départ de trames de 3*4*400 échantillons.
Figure 24: Oscillogramme de x star, donc après interpolation d'ordre zéro
Figure 25: Densité spectrale de puissance de x star
On constate bien sur la figure que la fréquence d'échantillonnage a été portée à 3*8000*4 Hz.
Le spectre du filtre d'interpolation d'ordre zéro est dupliqué à 3*8000*4 Hz.
On constate que le spectre est bien atténué et possède la même forme que la densité spectrale de
puissance du rectangle élémentaire de base servant à effectuer l'interpolation d'ordre zéro.
Sur la figure 24, les échantillons sont multipliés par un facteur 3.
9. Calcul préalable sous Matlab de l'ordre du filtrage passe-bas analogique permettant de lisser le
signal pour obtenir le signal analogique désiré.
On utilise pour cela, la fonction:
[ordre_N,WN]=ellipord(WP,WS,Ap,As,'s');
Le 's' correspond à un filtrage de type analogique. De plus, on supposera que la bande de transition
sera contenue dans l'intervalle [3400 Hz, 2*fe-3400 Hz] avec fe=8000 Hz.
Code Matlab:
[ordre_N,Wn]=ellipord(2*pi*3400,2*pi*(2*8000-3400), 0.1,60,'s');
Réponse renvoyée par Matlab:
N=4=ordre du filtre
WN=2.1363 e+0.004
On constate en utilisant [3400 Hz, 2*fe-3400 Hz] (fe=8000 Hz) comme bande de transition du filtre
qu'on est moins exigeant au niveau de la conception du filtre avec le CNA sur-échantillonné
comparablement avec le CNA conventionnel.
10. Simulation du filtrage analogique sous simulink au moyen d'un bloc Analog Filter Design de la
librairie Signal processing blockset>Filtering>Filter designs.
Figure 26: Paramètres du bloc du filtrage analogique
11. Affichage du signal ainsi obtenu ainsi que sa transformée de Fourier calculée sur
NTFD=2^13 points, au départ de trames de 3*4*400 échantillons.
Figure 27: Densité spectrale de puissance de x analogique(t)
Figure 28: Oscillogramme de x star (gauche) et de x analogique (droite)
Bien évidemment, les buffers ont à nouveau été configurés pour 4*3*400 échantillons.
Le bloc Freq Scope a bien été placé à la fréquence d'échantillonnage de 3*4*8000 Hz.
On constate donc bien qu'à la sortie nous obtenons bien un signal analogique bruité avec un bruit de
quantification.
Nous allons par après nous attarder à calculer comparer le signal d'entrée au signal de sortie. Nous
allons aussi déterminer le rapport signal à bruit du signal analogique en sortie.
12. Retourner les valeurs de x_analogique(t) dans l'espace de travail Matlab et afficher dans une
même figure sous Matlab, le signal x_analogique(t) récupéré ainsi que la vraie sinusoïde que l'on
aurait du obtenir.
On utilise pour réaliser cela, un simple bloc "To Workspace".
Commandes Matlab:
size(xan) ans = 1 1 192001
Ceci correspond bien à 8000(fréquence d'échantillonnage de départ) *3(interpolation d'ordre
zéro)*4(sur-échantillonnage)*2( temps de simulation) = 192000 échantillons.
C'est une matrice, nous souhaitons obtenir un vecteur avec les 192001 éléments.
Commandes Matlab:
x(1:192001)=xan(1,1,:);
tout=[0:2/192000:2];
subplot(2,1,1)
plot(tout(1:19201),sinp(1:19201))
subplot(2,1,2)
plot(tout(1:19201),x(1:19201))
Remarque: le temps de simulation est fixé à 2 secondes, toutefois par souci de clarté, j'ai
affiché le signal sous matlab jusqu'à 1/10 de la simulation.
On constate que le x analogique en sortie est bruité par rapport à une sinusoïde parfaite
placée en entrée. L'amplitude du signal en sortie est divisé par un facteur 4 par rapport à la
sinusoïde de départ. Ceci est du au facteur 4 du sur-échantillonnage.
(xanal)max=sqrt(2)/4= 0.3536
(sinp)max=sqrt(2)= 1.4142
De plus, on constate un délai entre les deux signaux. Ceci a déjà été expliqué précédemment
dans ce rapport. Les facteurs principaux influençant ce délai sont la présence de filtres, de
buffers, le bloc "To Frame",…
13. Calcul sous matlab du rapport signal à bruit entre ces deux signaux, au moyen de la
fonction snr.m.
La théorie concernant l'utilisation de la fonction snr.m a déjà été explicitée dans le rapport.
Le shift maximal entre les deux signaux est le nombre d'échantillons présent dans les
signaux. Celui-ci vaut 192000 (192001).
Commande matlab:
snr(sinp,4*x,8000*2*3*4);
Valeurs renvoyées par matlab:
Shift=434
snr=19.4627 dB
On constate donc bien que le rapport signal a diminué par rapport à avant lors de l'utilisation
du CNA conventionnel. Avant, cette valeur était de 27.85.
En effet, la quantification q est égale à 2A/ .
Si N diminue, q augmente et donc, le bruit qui est en q²/12 augmente. C'est en modifant
l'amplitude A qu'on a pu diminuer le nombre de bits de quantification. Toutefois, nous avons
quantifier sur 4 bits alors qu'idéalement on aurait du re-quantifier sur N'=N-1=5 bits. On perd
donc déjà ici un peu en rapport signal à bruit.
Puis, il faut aussi savoir qu'on a quantifier deux fois notre signal. Les erreurs de quantification
ont donc été cumulées, d'où le fait que le rapport signal à bruit ait diminué.
Toutefois, l'avantage de l'utilisation du CNA sur-échantillonné est indéniable.
Avantages :
gagner en nombre de bits de quantification
gagner en bande de transition pour le filtrage