Vous êtes sur la page 1sur 28

TP Théorie et Traitement du Signal 3ème année E.I.I.

3ème année
Licence de Physique Appliquée
UFR SAT

Travaux pratiques de

Théorie et Traitement
des Signaux

SOMMAIRE
TP n° 1 : Séries et Transformée de Fourier
TP n° 2 : Convolution, corrélation
TP n° 3 : Filtrage
TP n° 4 : Les modulations linéaires
TP n° 5 : Les modulations linéaires (suite), les
modulations angulaires
TP n° 6 : TP de synthèse

par
Véronique COAT
Kidiyo KPALMA
Luce MORIN
Jean-Noël PROVOST

Année Universitaire 2014-2015


0
TP Théorie et Traitement du Signal 3ème année E.I.I.

Les annexes fournies en fin du polycopié donnent quelques fonctions Matlab


utiles pour l'ensemble des TP.

SOMMAIRE

TP N° 1 1

1- DECOUVERTE DU LOGICIEL MATLAB 3


2- ETUDE DE LA TRANSFORMEE DE FOURIER D'UN SIGNAL CARRE 5
3- SYNTHESE D'UN SIGNAL CARRE A PARTIR DE SES HARMONIQUES 6

TP N° 2 7

1- CONVOLUTION, CORRELATION 7
2- FONCTION D’AUTOCORRELATION D’UN SIGNAL PERIODIQUE 7
3- LE FILTRAGE ADAPTE 8

TP N° 3 11

1- DEFINITION DU GABARIT D’UN FILTRE 11


2- FILTRAGE D'UN SIGNAL 12

TP N° 4 17

1- LES MODULATIONS D’AMPLITUDE AM ET AM-P 17


1.1- DEFINITION D’UNE FONCTION PERMETTANT DE FAIRE DE LA MODULATION 17
1.2- MODULATION 17
2- DEMODULATION AM COHERENTE 18
3- DEMODULATION AM PAR RECUPERATION DE LA PORTEUSE 18

TP N° 5 19

1- LA MODULATION BLU 19
1.1- MODULATION 19
1.2- DEMODULATION 19
2- LES MODULATIONS ANGULAIRES (FM ET PM) 19
2.1- SIGNAL MODULANT QUELCONQUE 19
2.2- MODULATION DE FREQUENCE AVEC UN SIGNAL MODULANT SINUSOÏDAL 20
2.3- DEMODULATION D’UN SIGNAL MODULE EN FREQUENCE 20

TP N° 6 23

1- CODAGE DTMF 24
2- DECODAGE 26

1
TP Théorie et Traitement du Signal 3ème année E.I.I.

2
TP Théorie et Traitement du Signal 3ème année E.I.I.

TP N° 1

BUT : Découverture du logiciel MATLAB


Représentation de signaux élémentaires
Décomposition en Séries de Fourier
Analyse spectrale et Transformée de Fourier

1- Découverte du logiciel MATLAB


Afin de comprendre le fonctionnement de Matlab, il vous est demandé
d'exécuter les instructions données dans les exemples ci-dessous et
d'interpréter les résultats obtenus.

1.1- Introduction
Matlab (MATrix LABoratory) est un logiciel de calcul numérique et de visualisation. Il offre
4 modes de travail :
- le mode interactif : sur la ligne de commande de la fenêtre principale de Matlab,
l'utilisateur crée des variables et les manipule à l'aide des commandes Matlab :
a=5↵ % Création de a initialisé à 5
b=4↵ % création de b initialisé à 4
c = a+b ↵ % création de c initialisé à a+b=9
a = 5+2*c ↵ % affectation de 5+2*9 à a (a=23)

- le mode programmation à l'aide des fichiers scripts (*.m) : l'utilisateur crée un fichier à
l'extension m (qui peut être une fonction Matlab) contenant les commandes Matlab. Il suffit
alors de taper le nom de ce fichier sur la ligne de commandes dans la fenêtre de
commandes (ou de l'appeler dans un autre fichier *.m) pour exécuter son contenu. Le
fichier n'est pas compilé mais il est interprété commande par commande.
Exemple de fichier *.m
% Toute expression précédée du signe % est considérée comme un commentaire
a=[0 1 2] % création d'un vecteur ligne nommé a.
b=[7 8 9] % création d'un vecteur ligne nommé b
c=[a 3 4 5 6 b] % création du vecteur ligne c avec une concaténation de a à
% gauche et b à droite
cmplx=a+i*b % création d'un vecteur ligne complexe dont la partie réelle
% est le vecteur a et la partie imaginaire, le vecteur b.

- le mode programmation compilé avec une interface avec un langage de programmation


évolué comme le langage C grâce aux fichiers *.mex.
- le mode programmation par blocs à l'aide de Simulink qui permet de simuler un système
construit à l'aide de blocs de fonctions.

Remarque : nous n'utiliserons que les deux premiers modes.

3
TP Théorie et Traitement du Signal 3ème année E.I.I.
1.2- Les variables sous Matlab
En langage Matlab, qui s'apparente au langage C, on ne déclare pas les variables. Il suffit de
les "créer" (leur affecter une valeur), car en réalité, Matlab ne connaît qu'un seul type : le type
matrice (tableau). Ainsi :
• un scalaire est un tableau de taille 1x1,
• un vecteur de taille n est une matrice ligne à n colonnes ou une matrice colonne à n
lignes.
Exemples
A=[0 1 2; 3 4 5] % A est une matrice 2x3
B=[6 7 8; 9 0 1] % B est une matrice 2x3
[l, c]=size(A) % détermination du nombre l de lignes et du nombre c de
% colonnes de A
a=ones(size(A)) % création d'une matrice a de même taille que A et ne
% contenant que des "1".
b=zeros(size(A)) % ou bien b=0*A : création d'une matrice b de même taille que A
% et ne contenant que des "0".
V=ones(1,5) % création d'un vecteur ligne 1x5 ne contenant que des "1"
v=V' % transposition : v=VT.
LB=sum(B) % somme des lignes
CB=sum(B') % somme des lignes après transposition
C=A+B % Expliquez le résultat
D=A.*B % Expliquez le résultat
E=A*B % Expliquez le résultat
F=A*B' % Expliquez le résultat

clear all % vide la mémoire en effaçant toutes les variables de la mémoire


close all % ferme toutes les fenêtres graphiques
cls % nettoie la fenêtre de commandes

t=debut:pas:fin % création d'un vecteur ligne dont le premier élément est


% "debut". Les éléments successifs sont une incrémentation de
% "pas" et jusqu'à la valeur maximale de "fin" : t[n+1]=t[n]+"pas"
% avec t[n+1]<="fin"
Remarque : vous noterez que le fait de placer un ";" à la fin d'une instruction fera que les
résultats ne seront plus affichés. Ceci permet d'accélérer grandement le traitement.
Exemple de programme : calculer et afficher les fonctions f (t ) = sin(5πt ) , g (t ) = e −3 (t −1)
2

ainsi que leur produit h(t ) = f (t ).g (t ) pour t ∈ (− 1.5,3) avec un pas d'échantillonnage de
10 −2 . Créez un fichier fonc.m contenant le texte ci-dessous et testez-le.
% Création des fonctions
deb=-1.5 ;
fin=3 ;
pas=0.01 ;
t=deb:pas:fin ; % vecteur temps avec un pas d'échantillonnage de 0.01.
f=sin(5*pi*t) ; %fonction f : f [ n] = sin( 5πt[ n])
−3 ( t [ n ]−1)
g=exp(-3*(t-1).^2) ; % fonction g : g[n] = e
2

h=f.*g ; % h[ n] = f [ n].g[n]

4
TP Théorie et Traitement du Signal 3ème année E.I.I.

% Affichage des résultats dans une même fenêtre: cf l'aide sur plot (help plot)
plot(f) ; % Affichage de f en fonction des indices
plot(t,f,'y',t,g,'r',t,h,'g') ; % Affichage de f, g et h en fonction de t.
% Mettre une légende aux courbes : cf. help legend
legend('courbe f','courbe g','courbe h',3);
% Affichage des résultats dans des sous-fenêtres: cf l'aide sur subplot
figure % Ouverture d'une nouvelle fenêtre graphique
subplot(221), plot(t,f,'r') ; % fenêtre haut-gauche
subplot(222), plot(t,g,'g') ; % fenêtre haut-droit
subplot(223), plot(t,h,'b') ; % fenêtre bas-gauche

2- Etude de la transformée de Fourier d'un signal carré

2.1- Générer le signal périodique xT(t) de la figure 1 pour une période T = 0.05s (fréquence f =
20 Hz).
xT (t)

0 T/2 T t
Fig.1

a) Visualisez xT (t).
b) Donner l'expression mathématique de la transformée de Fourier de xT(t).
c) Calculez, à l'aide de la fonction afourier, et visualisez le spectre d'amplitude
correspondant.
d) Commentaires ?
e) Modifier Fe, la durée d'observation et le rapport cyclique. Quels effets observez-vous sur
le spectre?

2.2- On souhaite maintenant étudier l'influence des temps de montée Tr et de descente Tf sur
l'occupation spectrale d'un signal.
a) Générez le signal x(t) de la figure ci-après, pour x(t)
différentes valeurs de Tr (on prendra Tr = 0, T/4,
T/2).
On choisira Tr = Tf et T=1s.
b) Pour les différentes valeurs de Tr (0, T/4, T/2),
superposez dans la même fenêtre graphique, le
spectre d'amplitude des signaux x(t)
t
correspondants. Expliquez les différents résultats Tr Tf
obtenus. T
2.3- Spectre d'un signal périodique Fig.2
Générez le signal y(t) de la figure ci-après, qui
représente la période principale d'un signal périodique yT(t).
5
TP Théorie et Traitement du Signal 3ème année E.I.I.

y(t)
1

T
t

T/2
Fig. 3
On choisira T=1s.
A partir de y(t), générez yT(t). Pour ce faire, vous utiliserez la fonction fournie [ts, yT] =
repeter(t, y, per, N) pour répéter N fois le signal y(t).
a) Superposez dans la même fenêtre graphique, le spectre d'amplitude des signaux y(t) et
yT(t).
b) Expliquez le résultat obtenu.

3- Synthèse d'un signal carré à partir de ses harmoniques


Connaissant les coefficients an et bn du développement en Série de Fourier d'un signal carré,
on peut reconstruire ce signal par superposition des harmoniques correspondants.
a) Calculez les coefficients an et bn de la série de Fourier du signal carré de fréquence 5 Hz
dont l'allure est similaire à la figure 1.
b) Reconstruire progressivement le signal précédent. En particulier, on visualisera le signal
reconstruit à partir :
- du fondamental
- des 2 premiers harmoniques
- des 4 premiers harmoniques
- des 10 premiers harmoniques
- des 100 premiers harmoniques
- des 1000 premiers harmoniques
Pour cela, on utilisera les possibilités offertes par le langage de programmation de Matlab
pour écrire une boucle dans laquelle, à chaque passage, on ajoute un nouvel harmonique au
signal à reconstruire. Commentez les résultats obtenus.

6
TP Théorie et Traitement du Signal 3ème année E.I.I.

TP N° 2

BUT : Etude de la convolution


Etude de l’intercorrélation entre deux signaux
Calcul de la fonction d’autocorrélation d’un signal
Filtrage adapté

1- Convolution, corrélation
On se définit deux signaux carrés x(t) et y(t) (avec x(t)=y(t)), identiques au signal représenté
sur la figure ci-après :
x(t),y(t)

t
T/2
T
Fig. 4
Première partie :
a) Calculer manuellement la convolution de x(t) par y(t).
b) Retrouver le résultat précédent en utilisant la fonction "convol.m" et visualiser le résultat
de la convolution de x(t) par y(t).
c) Calculer la corrélation entre x(t) et y(t).
d) Effectuer le même calcul avec Matlab à l'aide de la fonction "correl.m".
Seconde partie :
Que deviennent ces 2 fonctions si l’on retarde le signal y(t) de la valeur T/2 par rapport à x(t).
Recommencer le travail demandé dans les questions a) à d).

2- Fonction d’autocorrélation d’un signal périodique


On veut étudier la fonction d’autocorrélation d’un signal d’horloge xT(t) en fonction du
rapport cyclique de ce signal. Le rapport cyclique est défini par le rapport τ / T.

xT(t)
1

τ t

7
TP Théorie et Traitement du Signal 3ème année E.I.I.
2.1- On commence par créer le signal x(t) qui correspond au signal xT(t) pris sur sa période
principale.

2.2- Pour appliquer la définition du cours et n’ayant aucun moyen de dire au logiciel Matlab
que le signal est périodique, on va procéder de la façon suivante :
a) on définit le signal périodique xT(t).
b) on calcule ensuite l'intercorrélation de xT(t) avec le signal x(t).
Etudiez les cas suivants :
rapport cyclique < 0.5
rapport cyclique = 0.5
rapport cyclique >0.5
c) Conclusions ?

3- Le filtrage adapté

On dispose d’un système composé :


- d’un tapis roulant se déplaçant à la vitesse v = 10 mm/s,
- d’un capteur qui, ici, est un palpeur permettant d’enregistrer l’état de surface du tapis
roulant.
Ce système est illustré par la figure 1 ci-après. Sur le tapis, sont disposées des bandes
transversales qui produisent une surépaisseur à l’endroit où elles sont mises. Juste derrière
chaque bande, on trouve un creux dont la largeur n’excède pas la largeur τ de la bande qui le
précède.
La figure 2 fait un zoom sur la partie du tapis comportant une bande transversale. On
distingue bien la surépaisseur de largeur Ls puis le creux de largeur Lc. La distance séparant
deux bandes transversales successives est fixée à D.
La figure 3 montre l’allure du signal x(t) enregistré par le capteur. L’amplitude de ce signal est
directement proportionnelle à la hauteur mesurée par le capteur. Dans la pratique, vient se
superposer à ce signal x(t), un bruit b(t) centré. On appellera y(t), le signal réellement mesuré,
correspondant à la superposition du signal x(t) et du bruit b(t).

8
TP Théorie et Traitement du Signal 3ème année E.I.I.

Capteur

Tapis roulant Fig. 1

.
Fig. 2

L
s L
c
x(t)
Signal enregistré par le capteur
a
t
0 Fig. 3
b

On souhaite mesurer la distance D séparant deux bandes successives.

Travail à réaliser :
a) Proposez un système basé sur le filtre adapté pour effectuer les mesures souhaitées.
Expliquer en quoi la solution proposée est efficace.
b) Générez les signaux adéquats à l’aide de Matlab. A ce propos, on pourra réutiliser la
fonction repeter() comme lors du TP n° 1.
c) Mesurez la distance D. Commentez les performances du système lorsqu’on fait varier :
le rapport signal sur bruit
le rapport cyclique défini par :
Rcycle = τ / T
où τ est la largeur du niveau haut et T la largeur du signal considéré.
d) Conclusions ?

9
TP Théorie et Traitement du Signal 3ème année E.I.I.

10
TP Théorie et Traitement du Signal 3ème année E.I.I.

TP N° 3

BUT : Le filtrage
Etude du gabarit d’un filtre
Filtrage d’un signal
Extraction d’un signal noyé dans du bruit par filtrage

1- Définition du gabarit d’un filtre


Le gabarit d’un filtre définit la zone dans laquelle doit se situer le gain fréquentiel de ce filtre.
Prenons l’exemple d’un filtre passe-bas. Dans ce cas, le gabarit a l’allure suivante :

0
Rp

-10

-20
Amplitude (dB)

-30

-40

Rs = -50

-60

-70

0 100 200 300 400 500 600 700 800 900 1000
fc fstop

Fréquence (Hz)

Les paramètres importants à définir sont :


1) la largeur de la bande passante du filtre,
2) la fréquence de coupure fc ,

11
TP Théorie et Traitement du Signal 3ème année E.I.I.
3) la fréquence atténuée fstop et l’atténuation Rs à cette fréquence (c'est l'atténuation
minimale dans la bande coupée), atténuation exprimée en dB,
4) le niveau Rp, exprimé en dB, des ondulations dans la bande passante (c'est
l'atténuation maximale dans la bande passante).

Exemple : On peut se définir un filtre passe-bas de fréquence de coupure égale à 20 Hz et


dont l’atténuation est de 40 dB à 25Hz. Le niveau des rebonds dans la bande peut être fixé à 3
dB.

Travail à réaliser :

Vous lancez la commande filtdemo dans la fenêtre de commande de Matlab.


Apparaît alors une nouvelle fenêtre appelée « Lowpass Filter design demo ». C’est dans cette
fenêtre que vous allez faire vos différents essais.

1) Pour un type de filtre donné, vous étudierez l’influence de la raideur de la pente


entre la fréquence de coupure et fstop, sur l’ordre du filtre.

2) Vous ferez les mêmes essais pour un filtre de type :


- Butterworth
- Chebyshev

3) Pour un ordre de filtre donné, étudiez les limitations obtenues sur la forme du
gabarit. Relevez pour les différents essais réalisés, l’allure du gabarit obtenu.

2- Filtrage d'un signal

On dispose d’un signal s(t) qui est la somme de 3 signaux sinusoïdaux s1(t), s2(t), s3(t), de
fréquence respective 5, 15 et 30 Hz. On souhaite extraire par filtrage la composante à 15Hz.

Un fichier de commande pour Matlab appelé tp3_exo2.M vous est fourni. Il est incomplet car
il manque la définition du gabarit du filtre.

Travail à réaliser :

1) Définissez dans le fichier de commande tp3_exo2.M, le gabarit du filtre passe-bande


et observez l’influence du choix des paramètres du filtre sur l’allure du signal filtré sf(t) ainsi
que sur son spectre SF(f). Faites plusieurs essais avec des jeux de paramètres différents. Les
modifications du gabarit pourront porter sur le type de filtre (Butterworth, Chebyshev), sur la
largeur de la bande passante, sur la raideur de la pente à partir de la fréquence de coupure ...
2) En vous appuyant sur la théorie, proposez une méthode permettant de visualiser le
spectre d'amplitude du filtre défini. Justifiez votre choix et implémentez cette méthode dans le
fichier tp3_exo2.m après le commentaire "Calcul et affichage de la réponse fréquentielle du
filtre défini".

12
TP Théorie et Traitement du Signal 3ème année E.I.I.
3) On souhaite maintenant récupérer le signal s1(t) (sinusoïde à 5Hz). Définissez le
gabarit du filtre permettant cette récupération. Testez ce filtre.
4) Commentaires ?

Listing du fichier tp3_exo2.M qui vous est fourni :


clear all;
Fe = 200; % Fréquence d'échantillonnage
t=0:1/Fe:1;

%------------------------------------------------
% Génération du signal s(t)
%------------------------------------------------

s1=sin(2*pi*t*5);
s2=sin(2*pi*t*15);
s3=sin(2*pi*t*30);
s=s1+s2+s3;
plot(t,s);

%------------------------------------------------
% Définition du gabarit du filtre
%------------------------------------------------
%
%
% C’est ici que vous devez définir votre filtre !!!
% Se reporter à l’annexe pour connaître les
% fonctions de Matlab correspondantes
%
%
%------------------------------------------------
% Calcul et affichage de la réponse
% fréquentielle du filtre défini
%------------------------------------------------
%
% Ceci correspond à votre réponse à la
% question n°2
%
%------------------------------------------------
% Filtrage
%------------------------------------------------
sf=filter(b,a,s);
figure, plot(t,sf);

%------------------------------------------------
% Calcul des TF de s(t) et de s(t) filtré
%------------------------------------------------
[f,S]=afourier(s,t);
[f,SF]=afourier(sf,t);
%------------------------------------------------
% Visualisation des spectres
%------------------------------------------------
figure, plot(f,abs(S),'c', f,abs(SF),'b');

13
TP Théorie et Traitement du Signal 3ème année E.I.I.

COMPLEMENTS SUR LE FILTRAGE


Comparaison de trois types de filtres en fonction de leur gain et de leur temps de propagation de groupe
dans la bande passante pour un gabarit passe-bande.

Définition du gabarit
Pour une largeur de bande de 1000Hz avec les fréquences de coupure fp_b=500Hz et fp_h=1500Hz
puis les fréquences atténuées fs_b=100Hz et fs_h=1900Hz, l'ordre n des filtres est fixé à 6.
L'atténuation minimale Rp dans la bande passante étant de 3dB et l'atténuation maximale Rs dans la
bande atténuée (ou bande coupée) de 40 dB.

Définitions diverses
jϕ ( f )
La fonction de transfert d'un filtre étant de la forme F ( f ) = F ( f ) e avec
F ( f ) le gain et ϕ ( f ) la phase . On définit le gain en dB (décibel) et respectivement le temps de
propagation de groupe (τg) par :

dϕ ( f )
GdB ( f ) = 20 log10 ( F ( f ) ) et τ g ( f ) = −
2 π df
Résultats graphiques

Filtres passe-bande d'ordre 6 : Butterworth, Chebyshev et Cauer

Rp

Rs

14
TP Théorie et Traitement du Signal 3ème année E.I.I.
a) gain des filtres en dB
Temps de propagation de groupe : Butterworth, Chebyshev et Cauer

[s]

b ) temps de propagation de groupe

Commentaires

Le temps de propagation de groupe (ou retard de groupe = group delay en anglais) est, en fait, la
mesure du retard induit sur chaque composante spectrale par le filtrage. Les figures a et b représentent
respectivement le gain et le temps de propagation de groupe.

Si le gain nous renseigne sur l'atténuation que le filtre cause sur un signal en fonction de l'occupation
spectrale de celui-ci, le temps de propagation de groupe reflète l'aptitude d'un filtre à transmettre des
signaux transitoires sans déformation. Plus le temps de propagation de groupe est régulier dans la
bande passante et plus le filtre est apte à transmettre les signaux transitoires sans les transformer. De
même, plus le gain est plat dans la bande passante et plus le filtre est apte à transmettre des signaux
sans déformation.

Comme on peut le voir sur les deux figures, tous les types de filtre n'ont pas le même comportement
dans la bande d'intérêt. En fonction de ses besoins, on choisira le filtre qui donne l'atténuation la plus
plate dans la bande passante (ex. Butterworth), les pentes les plus abruptes dans les bandes de
transition (ex. Chebyshev), le retard de groupe le plus régulier dans la bande passante (ex. Bessel), ou
...

Attention! Les fenêtres en traits plein et gras sur la figure b ne donnent pas le gabarit comme
sur la figure a. Elles sont là pour le symboliser tout simplement.

15
TP Théorie et Traitement du Signal 3ème année E.I.I.

16
TP Théorie et Traitement du Signal 3ème année E.I.I.

TP N° 4

BUT : La modulation
Etude des modulations linéaires
- les modulations d’amplitude AM et AM-P
- la démodulation cohérente.
- démodulation AM par récupération de la porteuse

1- Les modulations d’amplitude AM et AM-P

1.1- Définition d’une fonction permettant de faire de la modulation

Vous devez dans un premier temps, définir une fonction que l’on appellera am permettant
de faire de la modulation d’amplitude et que l’on stockera dans le fichier am.m. Cette
fonction sera définie par :

function y=am(m, Fp, Am, Ap,t)

Les paramètres passés lors de l’appel de la fonction sont :


m : signal modulant
Fp : fréquence de la porteuse
Am : amplitude du signal modulant
Ap : amplitude de la porteuse
t : le vecteur-temps associé au signal modulant
La fonction retourne :
y : signal modulé ou signal démodulé

1.2- Modulation
Vous vous définissez un signal modulant sinusoïdal. Vous faites ensuite appel à la
fonction am définie dans am.m, pour moduler ce signal en amplitude.
Travail à réaliser :

a) Choisir la fréquence Fs du signal modulant ainsi que la fréquence Fp de la porteuse.


Etudier l’influence du choix de ces valeurs sur l’allure du signal modulé.
b) Observer l’allure du signal modulé en fonction de la valeur de l’indice de
modulation.
c) Observer le spectre du signal modulé en fonction du choix des paramètres
précédents.
d) Commentaires.

17
TP Théorie et Traitement du Signal 3ème année E.I.I.

2- Démodulation AM cohérente
La démodulation réalisée ici, est une démodulation cohérente. Elle consiste à multiplier le
signal modulé par une réplique de la porteuse puis à filtrer passe-bas ce signal. Le problème
réside donc dans la définition du filtre passe-bas qui assurera une démodulation correcte. Les
paramètres importants pour le filtre sont :
- sa fréquence de coupure fc
- sa fréquence atténuée fstop
- l’atténuation minimale dans la bande coupée (en dB)

Travail à réaliser :

a) Modifiez votre fonction am définie précédemment afin que maintenant, elle puisse
également faire de la démodulation. Il faut donc pour cela, lui passer des paramètres
supplémentaires liés à l’opération de filtrage :

fc : fréquence de coupure du filtre passe-bas


fstop : fréquence atténuée du filtre passe-bas
Rs : atténuation minimale dans la bande coupée (en dB)
Ceci nous permet ainsi de simuler un boîtier électronique permettant de réaliser les deux
opérations de modulation et de démodulation.

b) Etudier l’influence du choix des paramètres précédents sur le résultat de la


démodulation par rapport aux différents essais réalisés dans la partie modulation.

c) Etudier l’influence d’un défaut de cohérence de la porteuse lors de l’opération de


démodulation. Le défaut peut être :
- une dérive de phase de la porteuse entre le modulateur et le démodulateur
- une dérive de fréquence de la porteuse entre le modulateur et le démodulateur.

N.B. : L’étude de ces défauts nécessite de modifier la définition de la porteuse dans la partie
démodulation du fichier am.m.

3- Démodulation AM par récupération de la porteuse


3.1- Démontrer théoriquement qu'un signal carré dont la fréquence est égale à la
fréquence fp de la porteuse, peut être utilisé pour démoduler un signal modulé en amplitude
(avec une porteuse de fréquence fp).

3.2- A partir du raisonnement établi à la question précédente, proposer une solution


simple permettant de récupérer la porteuse quand on ne dispose que du signal AM avec un
indice de modulation a ≤1.

18
TP Théorie et Traitement du Signal 3ème année E.I.I.

TP N° 5

BUT : La modulation (suite)


Etude des modulations d’amplitude (suite et fin)
- la modulation BLU
Etude des modulations angulaires
- la modulation de phase PM et la modulation de fréquence FM
- la démodulation de signaux FM.

1- La modulation BLU

1.1- Modulation

A partir d’un signal modulant sinusoïdal, fabriquer un signal modulé en BLU en utilisant la
méthode basée sur le filtre de Hilbert (génération du signal BLU par déphasage).
a) On visualisera le signal modulé correspondant à la BLU inférieure et celui associé à
la BLU supérieure.
b) Visualisez les spectres correspondants. Commentaires ?

1.2- Démodulation

Comme dans le cas de la modulation d’amplitude, la technique de démodulation utilisée ici,


est la démodulation cohérente.
a) Mettre en œuvre cette technique. On pourra refaire appel à la fonction am définie
lors du T.P. précédent, fonction qui a été stockée dans le fichier am.m.
b) Faire varier les paramètres de définition du filtre et observer les conséquences sur le
signal démodulé.

2- Les modulations angulaires (FM et PM)

2.1- Signal modulant quelconque

a) Définir une fonction pmfm que vous stockerez dans le fichier pmfm.m, vous
permettant de faire soit de la modulation de phase, soit de la modulation de fréquence à partir
d’un signal modulant quelconque passé en paramètre.La fonction pmfm sera définie de la
façon suivante :

19
TP Théorie et Traitement du Signal 3ème année E.I.I.

function y = pmfm(m, Fp, t, TYPE)


où : m est le signal modulant,
Fp est la fréquence de la porteuse,
t est le vecteur-temps associé au signal modulant,
TYPE est le type de modulation souhaité : « pm » ou « fm »,
y est le signal de sortie modulé.

b) Définir un signal modulant m(t) comparable à celui de la figure 5.23 du polycopié


de cours de traitement du signal.

c) Moduler ce signal en phase et en fréquence en utilisant la fonction pmfm définie


dans le fichier pmfm.m.

d) Observer l’allure des signaux modulés. Commentaires ?

2.2- Modulation de fréquence avec un signal modulant sinusoïdal

On utilisera cette fois la fonction modulate de Matlab (cf Annexe de T.P. détaillant les
fonctions de Matlab) pour moduler le signal sinusoïdal.

a) Observer l’allure du signal modulé en fonction de l’indice de modulation.


b) Etudier l’influence de l’indice de modulation sur l’encombrement spectral.
2.3- Démodulation d’un signal modulé en fréquence

Réfléchir à la façon de démoduler simplement un tel signal. Dans quel cas, cette
méthode marche-t-elle ? Tester cette méthode.

20
TP Théorie et Traitement du Signal 3ème année E.I.I.

TP N° 6

BUT : TP de Synthèse
Etude d’un codeur-décodeur DTMF

Introduction
L'objectif de ce projet est la réalisation d'un système de codage et décodage DTMF (Dual-tone
multi-frequency) que l’on retrouve dans le téléphone. C’est grâce à ce type de systèmes, qu’on
a pu mettre en place des services vocaux pour le téléphone.
Pour la réalisation du TP, nous allons procéder étape par étape en développant les fonctions
élémentaires. La dernière partie est consacrée au test du système global utilisant les fonctions
créées. Pour éviter des erreurs dans la dernière partie du TP, vous devez respecter
scrupuleusement la syntaxe proposée ainsi que la nomenclature des fonctions.
Pour alléger la tâche, les fonctions suivantes sont fournies :
• dtmf : c'est le programme principal du projet. Il utilise le fichier dtmf.fig contenant le
fond graphique du projet.
• freq2touche : détermine et retourne la touche du clavier correspondant à deux
fréquences passées en paramètres,
• touche2freq : retourne les 2 fréquences correspondant à la touche passée en paramètre,

• rii2o : filtre RII d'ordre 2. Il retourne la séquence yk en réponse à la séquence x pour la


fréquence fk,
• pgoertzel : fait appel à rii2o pour calculer la puissance véhiculée par le signal dans une
bande spectrale centrée sur la fréquence fk.
• touchetel : reçoit la touche tapée et l'ajoute au numéro à composer. Ensuite, elle fait
appel aux fonctions touche2freq et bifreq pour convertir une touche en fréquences, pour
générer et jouer le son correspondant.
Remarque : Pour avoir l'aide sur l'utilisation des fonctions, utiliser la commande help de
Matlab (ex. help rii2o affiche l'aide sur la fonction rii2o).

Principe du DTMF
Le principe est simple. Dans la partie codage, il s’agit de générer une combinaison de deux
fréquences audibles qui sont jouées simultanément. Du côté du décodeur, la tâche principale à
réaliser consiste à détecter la présence des deux fréquences et à en déduire la touche
correspondante.
Le tableau ci-après indique les touches du clavier d’un téléphone et les fréquences qui leur
sont associées par la norme internationale UIT-T-Q.23.

Ainsi, lorsqu’on appuie sur une touche, les fréquences FCOL et FLIG correspondant
respectivement, à la colonne et à la ligne de cette touche dans le tableau permettent de générer
un signal audio s(t) à l’aide de la relation suivante :

s( t ) = sin(2πFCOL t ) + sin(2πFLIG t ) (1)

21
TP Théorie et Traitement du Signal 3ème année E.I.I.

FCOL
1209 1336 1477 1633
FLIG

697 1 2 3 A
770 4 5 6 B
852 7 8 9 C
941 * 0 # D
Figure 1 : Codage des touches d'un clavier de téléphone

De cette façon, le signal émis lorsqu’on appuie sur la touche ‘*’ est la superposition de deux
sinusoïdes de fréquences FLIG=941Hz et FCOL=1209Hz.
NB : Les fréquences utilisées étant limitées à 1633 Hz au maximum, on choisira une
fréquence d’échantillonnage Fe de 8kHz.

1- Codage DTMF
1.1- Fichier bifreq.m : écrire une fonction [t x]=bifreq(f1, f2,T,Te) qui génère et retourne un
signal comportant deux fréquences f1 et f2 suivant le signal s(t) défini par l'équation (1). Le
signal est généré sur une durée de T par pas de la période d'échantillonnage Te.
Tester la fonction en écoutant le son émis (cf. fonctions sound, soundsc, wavplay).
1.2- Fichier dtmfgen.m : écrire la fonction [t x]=dtmfgen(touch,Fe) qui appelle les fonctions
touche2freq et bifreq pour générer le son associé à la touche passée en paramètre dans la
variable touch. Au signal généré, on superposera un bruit additif de niveau σ (à l'aide de la
fonction randn de Matlab), variable globale Ebruit. Si la valeur passée en paramètre n’est pas
une touche valide du clavier (cf. tableau de la figure 1) alors le signal généré ne comportera
que le bruit.
Tester la fonction pour différents niveaux de bruit afin de fixer le niveau acceptable de bruit.

Typiquement la tonalité associée à une touche dure entre 45 et 55ms sur un créneau réservé de
l’ordre de 200ms. On se fixera la tonalité à τ=45ms et le créneau réservé à D=200ms pour ce
TP comme l'indique la figure ci-dessous.

τ τ τ

D=200ms
Figure 2 : Chronogramme d'une tonalité

22
TP Théorie et Traitement du Signal 3ème année E.I.I.

1.3- Modifier la fonction dtmfgen pour répondre à ces contraintes ; en d’autres termes, le
signal associé à une touche est une superposition de deux sinusoïdes et d’un bruit additif sur
une durée de 45ms puis complété sur 200ms par le bruit uniquement.

1.4- Fichier composer.m : écrire la fonction [t, x]=composer(numero, Fe) permettant de


composer un numéro à 10 chiffres. Cette fonction appelle la fonction dtmfgen. Le paramètre,
numero, passé à la fonction est une chaîne de 10 caractères indiquant les 10 chiffres du
numéro à composer. Le signal x retourné contient alors une succession de tonalités
correspondant aux 10 chiffres.

Afin de simuler une situation réaliste, on complétera le signal ainsi généré pour le numéro par
une sonnerie téléphonique : c'est le signal "retour d'appel" qu'entend l'appelant dans son
combiné. Cette sonnerie est un signal qui est une superposition des deux fréquences 440 Hz et
480 Hz. Le signal de la sonnerie passe alternativement à l'état ON pendant 2s puis à l'état OFF
pendant 4s.

Si le numéro à composer n’est pas correct (par exemple nombre de chiffres différents de 10),
on remplacera la sonnerie par le signal "occupé" qui est une superposition des fréquences
focc1=480Hz et focc2=620Hz qui est à ON pendant 500ms et OFF pendant 500ms.

NB : Le nombre de sonneries ou du signal occupé est fixé à 5.

2- Décodage
Le décodage utilisé consiste à détecter la présence des fréquences dans le signal reçu. Pour
cela, on balaie la bande spectrale pour vérifier si l’on a suffisamment d’énergie à la fréquence
désirée. Au lieu de calculer tout le spectre, comme par exemple avec l’algorithme rapide de
calcul de la transformée de Fourier (c’est-à-dire la FFT), on utilisera l’algorithme de Goertzel.
Celui-ci présente l’avantage d’être localisé dans une bande spectrale bien définie. Dans le cas
présent, nous connaissons les 4+4=8 fréquences possibles donc il suffit de calculer le spectre
dans une bande étroite autour de chacune d’elle et de vérifier s’il y a suffisamment d’énergie.

L’algorithme de Goertzel est basé sur la transformée de Fourier discrète (TFD ou DFT pour
Discrete Fourier Transform) définie pour le calcul du spectre des séquences numériques. Pour
une séquence {x(n), n=1, 2,…, N} à N échantillons, la TFD est une séquence numérique à N
échantillons donnés par

N
X(k ) = ∑ x (n )e −2 jπkn / N pour k=1, 2,…, N. (2)
n =1

Cette expression peut être réécrite en fonction de la fréquence en utilisant

N
X(f k ) = ∑ x (n )e −2 jπnf k / Fe pour k=1, 2,…, N (3)
n =1

où fk est un échantillon de fréquence exprimée en Hz et où Fe est la fréquence


d’échantillonnage exprimée en Hz.

La puissance de la séquence x véhiculée par la fréquence fk est donnée par

23
TP Théorie et Traitement du Signal 3ème année E.I.I.

Px (f k ) = X(f k ) * X * (f k ) = X(f k )
2
(4)

Grâce à l’algorithme de Goertzel, on montre que la puissance Px (f k ) peut être obtenue par

Px (f k ) = [y k ( N)]2 + [y k ( N − 1)]2 − 2 cos(2πf k / Fe ) y k ( N) y k ( N − 1) (5)

où yk(n) est une séquence récursive donnée par

y k (n ) = x(n) + 2cos(2πf k /Fe )y k (n - 1) - y k (n - 2) (6)

Sans rentrer dans les détails, on retiendra que le système produisant la séquence yk à partir de
la séquence xk est un filtre RII (filtre à Réponse Impulsionnelle Infinie) d’ordre 2.

NB : Sachant que pour un chiffre, on a une seule fréquence ligne et une seule fréquence
colonne, il devient possible de simplifier le principe en arrêtant d’explorer les lignes ou les
colonnes dès qu’on a détecté une fréquence ligne (ou une fréquence colonne respectivement).

2.1- Tester la fonction yk=rii2o(x,fk,Fe) sur le signal correspondant à la touche '0' pour
différentes valeurs de la fréquence fk. Expliquer les résultats obtenus en observant les niveaux
du signal.

2.2- Tester la fonction [f, pk]=pgoertzel(x,fk,Fe,dF,DF) sur le même signal que précédemment
et pour différentes valeurs de la fréquence fk. Expliquer les résultats obtenus en observant les
niveaux de la puissance du signal dans la bande observée.

2.3- En utilisant la fonction dtmfgen, générer le signal s(t) de l'équation (1), avec FLIG=941Hz
et FCOL=1209Hz. Calculer, tracer et analyser le graphique de pk pour des fréquences allant de
f k − dF à f k + dF par pas de DF . Des résultats obtenus et en exploitant les conclusions des
deux questions précédentes, déduire le seuil Po permettant de décider si la fréquence centrale
fk est présente ou non dans le signal x (voir le paragraphe suivant).
On prêtera une attention particulière au choix de dF et de DF.

2.4- Fichier callerid.m : écrire la fonction No=callerid(x, Po, Fe) qui prend un signal en
paramètre et retourne le numéro correspondant aux fréquences détectées sous la forme d'une
chaîne de caractères. Une fréquence est considérée comme présente dans le signal reçu si la
puissance (cf. fonction pgoertzel) qu’elle véhicule dépasse le seuil Po prédéfini en 2.3; pour
cela, vous serez amenés à modifier éventuellement la valeur fixée dans dtmf.m.

3- Test du système global


Pour tester votre système global, il suffit d'exécuter la commande dtmf qui ouvre alors
l'environnement graphique de l'annexe 3.
Corrigez les éventuelles erreurs pour faire fonctionner la chaîne complète.

24
TP Théorie et Traitement du Signal 3ème année E.I.I.

Annexe 1 : Quelques fonctions utiles


Rappel : pour avoir de l'aide sur une commande cmd, il suffit de taper help cmd dans la fenêtre de
commandes de Matlab.

Name .......................... : functionality


abs ............................... : Magnitude.
angle............................ : Phase angle.
barthannwin ................ : Modified Bartlett-Hanning window.
bartlett ......................... : Bartlett window.
blackman ..................... : Blackman window.
boxcar ......................... : Rectangular window.
butter ........................... : Butterworth filter design.
buttord ......................... : Butterworth filter order selection.
cheb1ord ..................... : Chebyshev type I filter order selection.
cheb2ord ..................... : Chebyshev type II filter order selection.
cheby1 ......................... : Chebyshev type I filter design.
cheby2 ......................... : Chebyshev type II filter design.
conv............................. : Convolution.
cos ............................... : Cosine of argument in radians.
ellip ............................. : Elliptic filter design.
ellipord ........................ : Elliptic filter order selection.
fft ................................ : Fast Fourier transform.
fftshift ......................... : Swap vector halves.
filtdemo ....................... : Filter design demonstration.
filter ............................ : Filter implementation.
fir1 .............................. : Window based FIR filter design : low, high, band, stop.
fir2 .............................. : Window based FIR filter design : arbitrary response.
firls .............................. : FIR filter design : arbitrary response with transition bands.
freqz ............................ : Z-transform frequency response.
gausswin ..................... : Gaussian window.
hamming ..................... : Hamming window.
hamming ..................... : Hamming window.
hann ............................ : Hann window.
hanning ....................... : Hanning window.
hilbert .......................... : Hilbert transform.
ifft ............................... : Inverse fast Fourier transform.
impz ............................ : Impulse response (discrete).
kaiser ........................... : Kaiser window.

25
TP Théorie et Traitement du Signal 3ème année E.I.I.

moddemo .................... : Modulation/demodulation demonstration.


modulate ..................... : Modulation for communications simulation.
ones ............................. : All ones
parzenwin.................... : Parzen (de la Valle-Poussin) window.
randn ........................... : Normally distributed random numbers.
rectwin ........................ : Rectangular window.
remez........................... : Parks-McClellan optimal FIR filter design.
remezord ..................... : Parks-McClellan filter order selection.
sawtooth ...................... : Sawtooth function.
sin................................ : Sine of argument in radians.
sinc .............................. : Sinc or sin(pi*x)/(pi*x) function
sosdemo ...................... : Second-order sections demonstration.
square .......................... : Square wave function.
stem ............................. : Plot discrete data sequence.
triang ........................... : Triangular window.
unwrap ........................ : Unwrap phase.
zeros ............................ : All zeros
zplane .......................... : Discrete pole-zero plot.

Annexe 2 : Les opérateurs disponibles sous Matlab


Char Name HELP topic Char Name HELP topic
= Assignment punct
+ Plus arith == Equality relop
- Minus arith <> Relational operators relop
* Matrix multiplication arith & Element-wise Logical AND relop
.* Array multiplication arith && Short-Circuit Logical AND.
^ Matrix power arith | Element-wise Logical OR relop
.^ Array power arith || Short-Circuit Logical OR.
\ Backslash or left division slash ~ Logical NOT relop
/ Slash or right division slash xor Logical EXCLUSIVE OR xor
./ Array division slash
kron Kronecker tensor product kron exist Check if variables or functions are
: Colon colon defined.
() Parentheses paren any True if any element of vector is true.
[] Brackets paren all True if all elements of vector are true.
{} Braces paren find Find indices of non-zero elements.
. Decimal point punct isnan True for Not-A-Number.
.. Parent directory punct isinf True for infinite elements.
... Continuation punct finite True for finite elements.
, Comma punct isempty True for empty matrix.
; Semicolon punct isreal True for real matrix.
% Comment punct issparse True for sparse matrix.
! Exclamation point punct isstr True for text string.
' Transpose and quote punct isglobal True for global variables.

26
TP Théorie et Traitement du Signal 3ème année E.I.I.

Annexe 3 : Vue graphique du système DTMF du TP 6

Numéro à composer
Ascenseur pour régler le niveau
(écart-type) de bruit de 0 à 2.5 :
son réglage affiche le niveau de
bruit dans la case correspondante.
C'est la variable globale Ebruit. Permet de terminer
l'application.

Clavier alpha-numérique : un clic RAZ-No : efface le numéro à composer


sur une touche fait appel aux Composer : fait appel à la fonction
fonctions touche2freq et bifreq composer pour composer le numéro à
(via la fonction touchetel) pour composer à l'aide de la fonction dtmfgen.
générer le son correspondant. Caller ID : fait appel à la fonction callid
Le chiffre ou la lettre sélectionné pour décoder le signal reçu (pour en
est alors mis à la suite dans le extraire le No composé) puis identifier
numéro à composer. l'abonné s'il est référencé dans la liste.

27

Vous aimerez peut-être aussi