Vous êtes sur la page 1sur 27

UNIVERSITE DE SOUSSE

Institut Supérieur d’Informatique et des


Techniques de Communication
Hammam Sousse

Travaux Pratiques
COMMUNICATIONS NUMERIQUES

Niveau : 1ère année DNI


Enseignante : Moufida Hajjaj

ANNEE UNIVESITAIRE 2017-2018


1ère année DNI Enseignante : Moufida Hajjaj

AVANT-PROPOS

Objectif des TPs communications numériques

Les TPs sont sélectionnées en fonction de matériel du cours. L’objectif des TPs est de familiariser les
étudiants aux méthodes de mesure et d’analyse des techniques numériques de communications. Les TPs
couvriront :

- Signaux numériques ( Types de signaux, échantillonnage, tansformée de Fourier)


- Transmission en bande de base (codage en ligne, densité spectrale de puissance)
- Transmission en bande de base optimale (filtre adapté, probabilité d’erreur binaire)
- Modulations numériques (ASK, PSK, ASK, détection cohérente)
- Codes correcteurs d'erreurs (Codes en blocs linéaires, Codes convolutifs)

Compte-rendu
Un rapport devrait être rendu à l’enseignante de TP, par voie électronique, avant la prochaine séance de
TP (Email : moufida.hajjaj@gmail.com). Le format retenu est le format PDF. Le rapport devrait contenir
deux parties :
- La première partie : un compte-rendu de TP déjà traité en classe. La notation portera
essentiellement sur les commentaires et les interprétations des différents résultats.
- La deuxième partie : des réponses aux questions de la partie « Préparation théorique » du
prochain TP. La notation portera essentiellement sur la clarté des réponses.

Communications numériques Année universitaire 2017/2018 Page 2


1ère année DNI Enseignante : Moufida Hajjaj

TP 1: INTRODUCTION

I. Rappels
1. Signaux continus et discrets
Il existe deux types de signaux temporels :

Signal continu Signal discret

signal connu à chaque instant t signal connu uniquement à certains instants tn


x(t) avec t ∈ R xn avec n ∈ Z
t : temps (souvent exprimé en secondes) n : échantillon (sans unité)

En pratique
- Les signaux continus x(t) ne sont pas stockables et étudiables sur ordinateur (ils contiennent une
infinité de valeurs !). Ils peuvent être vus comme des fonctions mathématiques. On les étudie
principalement pour avoir des modèles théoriques des signaux que l’on veut étudier. Ils
modélisent des phénomènes physiques tels que les ondes acoustiques, les signaux électriques,
etc...
- Les signaux discrets xn au contraire peuvent être stockés et étudiés sur ordinateur. Ils ont en
général un nombre fini de valeurs non nulles. Un signal discret est ainsi représenté comme un
vecteur contenant toutes les valeurs xn. On y associe un vecteur temps contenant toutes les
valeurs tn des instants où l’on connaît le signal.
Remarque : Tous les signaux que nous allons étudier avec MATLAB sont donc des signaux discrets.
Qu’est-ce que l’échantillonnage ?
- Principe : Convertir un signal continu en un signal discret en ne stockant que ce qui se passe à
certains instants tn

- On ne va considérer ici que l’échantillonnage uniforme, c’est à dire qu’on prend une valeur
toutes les Ts secondes, où Ts est fixe

- Ts est appelée la période d’échantillonnage (en secondes).


- Fs=1/Ts est appelée la fréquence d’échantillonnage (en Hertz).
- L’indice s correspond au mot sampling en anglais qui veut dire échantillonnage.

Communications numériques Année universitaire 2017/2018 Page 3


1ère année DNI Enseignante : Moufida Hajjaj

2. Signaux particuliers

Sinusoïde Peigne de Dirac

où A : amplitude,
f0 : fréquence fondamentale (en Hz), Très utile pour modéliser de façon théorique le
ϕ: phase à l’origine processus d’échantillonnage. Signal
et x(t) est périodique de période périodique de période fondamentale T.
fondamentale
T0 =1/f0 Sinus cardinal

Dirac

Ce signal apparaîtra naturellement quand nous


allons calculer des transformées de Fourier.
Il vérifie la propriété suivante :
Signal porte

Très utile pour établir des propriétés


d’échantillonnage.

II. Travaux pratiques:


Procédez à l’initialisation du TP par:
>> start

A. Signaux continus et discrets


A.1 En utilisant la fonction exemple_signal_continu, générez un signal continu dans l’intervalle [0,2[:
>> t=0:0.02:2
>> exemple_signal_continu(t);

A.2 Echantillonnez le signal de A.1 en prenant une valeur toutes le 0.1 s. La fréquence d'échantillonnage
Fe =10 Hz et le nombre de points de la séquence N = 20.
>> t=0:0.02:2
>> Fe = 10 ;
>> N=20 ;
>> exemple_echantillonnage(t,Fe,N);

A.3 Rangez les valeurs dans un vecteur et représentez le signal discret obtenu :
>> Fe = 10 ;
>> N=20 ;
>> exemple_signal_discret(Fe,N) ;

B. Signaux particuliers
B.1 En utilisant la fonction sinusoide, générez un signal sinusoïdal d’amplitude A = 1.5, de fréquence
fondamentale f0 = 1 Hz et de phase ϕ = 0 :
>> t=0 :0.02 :2;

Communications numériques Année universitaire 2017/2018 Page 4


1ère année DNI Enseignante : Moufida Hajjaj

>> A = 1.5 ;
>> F0 = 1 ;
>> phase = 0 ;
>> sinusoide (t,A,F0,phase) ;
B.2 Générez les signaux Dirac, peigne de Dirac, sinus cardinal et porte par
>> exemple_dirac;
>> exemple_peigne_dirac;
>> exemple_sinus_cardinal;
>> exemple_porte;

C. Echantillonnage d’un signal


On considère le signal s défini par s(t) = 2 sin(2πf0t + ϕ0), d’amplitude 2, de fréquence fondamentale
f0 = 20 kHz et de phase ϕ0 = 0. Générez dans un vecteur sig de N = 1000 points du signal s, échantillonné
au rythme de :

– un échantillon toutes les 20 microsecondes,

– un échantillon toutes les 10 microsecondes,

– un échantillon toutes les 5 microsecondes,

– un échantillon toutes les 1 microsecondes,

Représentez graphiquement (sur une figure avec quatre cadrants) ces quatre signaux numériques,
avec une échelle des temps correcte, et en indiquant sur chaque courbe la fréquence d’échantillonnage
et le nombre de points.

D. Transformée de Fourier de signaux sinusoïdaux


On considère les signaux définis pour t ∈ [0; 0.1] par

s1(t) = sin(2π f1 t + p1)


s2(t) = sin(2π f2 t + p2)
s3(t) = sin(2π f3 t + p3)
s4(t) = s1(t) + s2(t) + s3(t)
où, f1 = 50 Hz, f2 = 75 Hz, f3 = 125 Hz, p1 =π/2, p2= π/3, p3 = 0.

On échantillonne ces signaux à la fréquence de Fe = 20 kHz, soit un pas Te = 1/Fe = 0.5 ms.

Tracez les signaux si et leur transformée de Fourier ŝi (fonction fft).

Calculez et tracez ensuite les transformées de Fourier inverses des ŝi (fonction ifft), et les comparez
avec les signaux de départ.

E. Effet du bruit de canal sur le signal transmis


On considère la fonction x2(t) de la question D. Transmettre ce signal sur un canal à bruit blanc
additif gaussien (BBAG) où la puissance de bruit est sigma = 10-2 W. Affichez les signaux d'entrée et
de sortie du canal.
y2 = s2 + w ;

Communications numériques Année universitaire 2017/2018 Page 5


1ère année DNI Enseignante : Moufida Hajjaj

Augmentez progressivement la puissance du bruit du canal sigma ∈ {0.05, 0.1, 0.5, 1} et observez les
changements à la sortie du canal.
À quel niveau de puissance de bruit, la forme d'onde de sortie du canal devient-elle indiscernable du
bruit?
Repérer l’amplitude maximale M de la transformée de Fourier. Définir un seuil S (10% par exemple).
Pour sigma = 0.5, tracez le signal s2 et sa transformée de Fourier ŝ2 (fonction fft).
Créer un filtre F selon les caractéristiques suivantes:
− F a la même taille que le signal initial.
− Lorsque l’amplitude de la FFT est plus petite que S × M le filtre vaut 0, et vaut 1 sinon.
Appliquer le filtre F à la FFT du signal (multiplication terme à terme).
Calculer la transformée de Fourier inverse au signal filtré.
Commenter le résultat obtenu.

Communications numériques Année universitaire 2017/2018 Page 6


1ère année DNI Enseignante : Moufida Hajjaj

TP 2: CODAGE EN LIGNE

I. Objectifs:
Dans ce TP, vous observez la manière dont les informations binaires sont codées en série pour la
transmission aux fréquences de bande de base. En particulier, vous allez étudier:
• les méthodes de codage en ligne qui sont actuellement utilisées dans les applications de communication
de données;
• fonctions de densité spectrale de puissance (Power spectral density, PSD) associées aux différents
codes en ligne;
• causes de distorsion de signal dans un canal de communication de données;
• les effets de l'interférence inter-symboles (ISI) et le bruit du canal en observant le diagramme de l’œil.
II. Rappels

1. Codes en ligne
La manière la plus simple de transmettre un signal est d'utiliser deux niveaux de tension pour représenter
les deux états binaires 0 et 1. La présence d'une tension peut, par exemple, représenter un 1 tandis que
l'absence d'une tension représente un 0. C'est le cas du codage NRZ-L (Non Return to Zero Level)
unipolaire. Cette technique, ainsi que d'autres, est illustrée à la figure 1.

Code en ligne DSP commentaires


2
A2Tb  sin  fTb   1 
PUni. NRZ ( f )    1   ( f ) 
NRZ unipolaire 4   fTb   Tb  Notez le composant DC, Cela
signifie une puissance gaspillée!
Difficile de récupérer le symbole de
synchronisation quand une longue
chaîne de 0 ou de 1

2
Une impulsion de la moitié de la
A2Tb  sin  fTb / 2   1 
n 
RZ unipolaire PUni. RZ ( f )  
16   fTb / 2   Tb
 1    ( f  T ) durée de NRZ nécessite deux fois la
n  b 
bande passante!
Les longues chaînes de 1 ne sont
plus un problème. Cependant, les
chaînes de 0 posent encore
problème.
Occupation spectrale double par
rapport au code NRZ.
2
 sin  fTb 
NRZ polaire PPolar NRZ ( f )  A Tb  2

  fTb 
Pas de composant DC, donc plus
économe en énergie.

Communications numériques Année universitaire 2017/2018 Page 7


1ère année DNI Enseignante : Moufida Hajjaj

2
A2Tb  sin  fTb 
RZ polaire PBipolar RZ ( f )   sin  fTb 
2

4   fTb 

Maintenant, nous pouvons aussi


gérer de longues chaînes de 0.

Manchester 2
 sin  fTb / 2 
PManch. NRZ ( f )  A2Tb   sin  fTb / 2 
2

  fTb / 2  Synchronisation facile et meilleures


caractéristiques spectrales que RZ
polaire.
Occupation spectrale double au
codage NRZ.

2. Canal de transmission
Une chaîne de transmission est composée d’un émetteur, d’un canal et d’un récepteur. Le canal
de transmission est caractérisé par :
 sa bande passante : c’est la plage de fréquence dans laquelle l’atténuation du signal
est inférieure à une certaine valeur ;
 sa distorsion : c’est la déformation que va subir un signal analogique. Elle est liée
à la distance entre l’émetteur et le récepteur et peut poser des problèmes lors de la
détection de signaux numériques. Par exemple un signal carré émis peut être reçu
comme le montre le schéma suivant :

Signal émis Signal reçu

Distorsion d’un signal carré

La distorsion s’effectue sur trois niveaux : affaiblissement de l’amplitude,


arrondissement du signal, et retard du temps de propagation de groupe ;
 son atténuation : pour une transmission sur câble elle est définit par :
√2
𝐴𝑚𝑎𝑥 ∗
2
 sa vitesse de propagation ;
 son immunité aux différents bruits (bruit thermique, de grenaille, de
scintillation…) et aux champs magnétique et électrostatique ;
 ses pertes qui sont divers (effet de peau, pertes diélectriques, pertes par
rayonnement) ;
 son coût.

3. Diagramme de l’œil :

Communications numériques Année universitaire 2017/2018 Page 8


1ère année DNI Enseignante : Moufida Hajjaj

Le diagramme de l’œil est une représentation graphique qui permet d’estimer la qualité d’un canal de
transmission donc du signal reçu. Ce diagramme est obtenu en superposant toutes les formes possibles
du signal sur un intervalle de durée T. Il représente toutes les configurations possibles d’une séquence
aléatoire, le principe général étant que plus l’aire centrale de l’œil est grande, plus la qualité de la
transmission est bonne.

Seuil + Ouverture verticale

Seuil -

Ouverture horizontale

Diagramme de l’oeil

Ce diagramme est dépendant de deux paramètres :


 l’ouverture horizontale représente le seuil de détection,
 l’ouverture verticale représente l’instant le plus favorable pour reconnaître le symbole. L’instant
de décision sera pris pour une ouverture maximale.
De manière générale, plus l’œil est ouvert horizontalement, moins le canal génère de bruit et de
distorsion. Plus l’œil est ouvert verticalement plus l’immunité vis-à-vis des instants d’échantillonnage
est grande.
Vous allez maintenant apprendre à extraire des informations significatives et quantifiées à partir d'un
modèle oculaire. Les quantités clés qui peuvent être mesurées sur un diagramme de l’œil ont été
illustrées à cette figure:
A: intervalle d'échantillonnage; E
B: marge sur le bruit (la moitié de "l'ouverture de l’œil");
C: distorsion des passages à zéro;
D: pente - indiquant la sensibilité à l'erreur de +V
s
synchronisation; D B
C
E: distorsion maximale;
topt: instant d'échantillonnage optimal mesuré par -Vs
rapport à l'origine du temps. C'est le meilleur moment
pour échantillonner la forme d'onde à chaque durée de A
symbole afin d'extraire le message transmis avec un topt
minimum d'erreurs. Il doit être choisi au milieu de l'œil de
manière à maximiser B (et donc minimiser les erreurs dues au bruit) et à maximiser la distance aux
passages à zéro les plus proches (pour minimiser les erreurs dues à la gigue temporelle). Si la période
de données binaires est Tb, la forme d'onde sera échantillonnée à t*, t* + Tb, t* + 2Tb,. . . pour la détection
du signal.
Une fois choisis les instants d’échantillonnage optimaux à l’aide du diagramme de l’œil, la valeur des
échantillons {z(kTb)}k est comparée à un ou plusieurs seuils selon le code utilisé.
Pour prendre l’exemple du code bipolaire d’ordre 1, on utilisera un comparateur à deux
seuils [+VS, −VS]. Tout ce qui sera détecté comme supérieur à [+VS] sera considéré comme +1 et tout

Communications numériques Année universitaire 2017/2018 Page 9


1ère année DNI Enseignante : Moufida Hajjaj

ce qui sera détecté comme inférieur à [−VS] sera considéré comme -1. Tout ce qui sera détecté à un
niveau compris entre [+VS] et [−VS] sera considéré comme 0.

III. Préparation théorique:


1. Compte tenu de la séquence binaire b = {1, 0, 1, 0, 1, 1}, tracez les formes d'onde représentant la
séquence b en utilisant les codes en ligne suivants:
(a) NRZ unipolaire;
(b) NRZ polaire;
(c) RZ unipolaire;
(d) RZ bipolaire;
(e) manchester.
Etant donné le débit de données binaires Rb = 1 kbps.
2. Déterminer et tracez les fonctions de densité spectrale de puissance (PSD) correspondantes aux codes
en ligne ci-dessus. Utilisez Rb = 1 kbps. Soit f1> 0 l'emplacement du premier nœud spectral dans la
fonction PSD. Si la largeur de bande de transmission BT d'un code en ligne est donnée par f1, déterminez
BT pour les codes en ligne de question 1 en fonction de Rb.
Lien intéressent : http://www.telecom.ulg.ac.be/teaching/notes/total1/elen008/node116.html
IV. Travaux pratiques:
Procédez à l’initialisation du TP par:
>> start
A. Formats de signalisation binaires: Formes d'ondes du code en ligne
Les symboles binaires 1 et 0 tels que dans les systèmes de modulation par impulsions (Pulse Code
Modulation, PCM), peuvent être représentés dans différents formats de signalisation en série appelés
codes en ligne. Dans cette section, vous étudierez les formats de signalisation et leurs propriétés.
A.1 Vous utiliserez le générateur d'ondes de fonction MATLAB pour générer des formes d'onde
représentant une séquence binaire:
wave_gen (‘séquence binaire’, ‘nom de code en ligne’, Rb)
où Rb est le débit de données binaires spécifié en bits par seconde (bps). Si vous utilisez la fonction
wave_gen avec les deux premiers arguments uniquement, il sera par défaut le débit de données binaires
défini par le variable binary_data_rate, soit 1000 bps. Créez la séquence binaire suivante:
>> b = [1 0 1 0 1 1];
Générer la forme d'onde représentant b, en utilisant un codage en ligne NRZ unipolaire avec Rb =
1 kbps et afficher la forme d'onde x.
>> x = wave_gen(b, 'unipolar_nrz' , 1000);
>> waveplot (x)
A.2 Répétez l'étape A.1 pour les codes en ligne suivants:
• NRZ polaire ('polar_nrz');
• RZ unipolaire ('unipolar_rz');
• RZ bipolaire ('bipolar_rz');
• manchester ('manchester').

Communications numériques Année universitaire 2017/2018 Page 10


1ère année DNI Enseignante : Moufida Hajjaj

Vous pouvez simplifier votre ligne de commande en utilisant:


waveplot( wave_gen( b, 'nom de code en ligne'))

Puisque vous comparez les formes d'onde au même Rb, vous pouvez utiliser la fonction wave_gen avec
seulement deux arguments.
Q2.1
Pour l'ensemble de codes en ligne ci-dessus, déterminez qui générera une forme d'onde sans composant
DC, quelle que soit la séquence binaire représentée. Pourquoi l'absence d'un composant DC a une
signification pratique sur la transmission des signaux?
A.3 Fonctions de densité spectrale de puissance (PSD) des codes en ligne: génèrez une séquence binaire
de 1000 échantillons:
>> b = binary(1000);
Affichez la fonction PSD de chaque code de ligne utilisé dans la partie A.1:
>> psd(wave_gen(b, 'line code name' ));
Soit:
fp1: premier pic spectral; fn1: premier nul spectral
fp2: deuxième pic spectral; fn2: second nul spectral tel que tout f (.)> 0. Enregistrez vos observations dans
le tableau 2.1.
Tableau 2.1
Rb = fp1 fn1 fp2 fn2 BT
NRZ unipolaire
NRZ polaire
RZ unipolaire
NRZ bipolaire
Manchester

L'emplacement du premier nœud spectral détermine la bande passante de transmission BT.


A.4 Pour illustrer la dépendance de la fonction PSD sur le débit de données binaires sous-jacent, utilisez
le code ligne manchester et modifiez Rb:
>> psd(wave_gen(b, 'manchester' , Rb)) ;
où Rb ∈{5 kbps, 10 kbps, 20 kbps}. Vous pouvez remplacer Manchester par tout autre code en ligne
utilisé dans la partie A.1. Observez l'emplacement des pics spectral et des nuls et reliez-les à Rb.
Q2.2
Pour un canal de communication de données en bande de base avec une bande passante utilisable de 10
kHz, quel est le débit de données binaires maximal pour chacun des codes en ligne examinés dans la
partie A.1.

Communications numériques Année universitaire 2017/2018 Page 11


1ère année DNI Enseignante : Moufida Hajjaj

B. Caractéristiques des canaux


Dans cette partie, vous simulez les caractéristiques d'un canal de communication.

Bruit

Entrée Canal Sortie

Figure 2.1 modèle du canal


La fonction MATLAB qui représente la réponse du canal est channel qui s'appelle avec les arguments
suivants:
channel(entrée, gain, puissance de bruit, bande passante)

B.1 Créez une séquence binaire b de 10 échantillons et générez une forme d'onde représentant b au
format de signalisation NRZ polaire. Utilisez Rb = 1 kbps.
>> b = binary(10);
>> x = wave_gen(b, 'polar_nrz' , 1000);
De votre observation dans la partie A, déterminer la bande passante de transmission BT de x:
BT = Hz
B.2 Considérons un canal de transmission de données en bande de base avec un gain unitaire et un bruit
blanc gaussien additif (AWGN) où la puissance de bruit est 10-2 W et la bande passante du canal est de
4,9 kHz.
Transmettre la forme d'onde x sur ce canal. Affichez les signaux d'entrée et de sortie du canal:
>> y = channel(x, 1, 0.01, 4900);
>> subplot(211), waveplot(x);
>> subplot(212), waveplot(y);
Si le format de signalisation est NRZ polaire à Rb = 1 kbps, estimez la séquence transmise à partir de
l'affichage de la forme d'onde de sortie du canal.
b̂ =
Comparez votre estimation avec la séquence originale b.
B.3 Effet du bruit de canal sur la forme d'onde transmise: augmentez progressivement la puissance du
bruit du canal tout en conservant la bande passante du canal à 4,9 kHz et observez les changements à la
sortie du canal.
>> y = channel(x, 1, sigma, 4900);
>> waveplot(y);
où sigma ∈ {0.1, 0.5, 1, 2, 5}. À quel niveau de puissance de bruit, la forme d'onde de sortie du canal
devient-elle indiscernable du bruit?
B.4 Vous pouvez également observer les effets de l'augmentation de la puissance du bruit du canal en
regardant le PSD de la forme d'onde de sortie du canal.
>> b = binary(1000);
>> x = wave_gen(b, 'polar_nrz', 1000);
>> clf; subplot(121); psd(x);
>> subplot(122); psd(channel(x, 1, 0.01, 4900));

Communications numériques Année universitaire 2017/2018 Page 12


1ère année DNI Enseignante : Moufida Hajjaj

>> hold on;


>> subplot(122); psd(channel(x, 1, 1, 4900));
>> subplot(122); psd(channel(x, 1, 5, 4900));

Q2.3
Étant donné que le bruit du canal est additif et non corrélé avec l'entrée du canal, déterminez une
expression qui décrira le PSD de la sortie du canal en fonction des fonctions PSD d'entrée et de bruit.
B.5 Effets de la bande passante du canal sur la forme d'onde transmise: La distorsion observée dans
l'affichage du temps de la sortie du canal est due à la bande passante finie du canal et due au bruit. Pour
étudier la distorsion due uniquement à la bande passante du canal, régler la puissance de bruit sur zéro
et régénérer la forme d'onde de sortie du canal:
>> hold off; clf;
>> b = binary(10);
>> x = wave_gen(b, 'polar_nrz' , 1000);
>> subplot(211), waveplot(x);
>> subplot(212), waveplot(channel(x, 1, 0, 4900));
B.5 Étudier les effets de la bande passante du canal sur la forme d'onde de sortie.
>> subplot(212), waveplot(channel(x, 1, 0, bw));
où bw ∈{3000, 2000, 1000, 500}. Observez le retard dans la forme d'onde de sortie en raison des
caractéristiques de filtrage du canal. Tracez les formes d'onde d'entrée et de sortie. Déterminer les
instants d'échantillonnage appropriés pour le décodage de la forme d'onde pour le cas bw = 500.
C. Diagramme de l’œil
Les effets du filtrage des canaux et du bruit peuvent être mieux vus en observant la forme d'onde de
sortie sous la forme d'un «diagramme de l’œil». Le diagramme de l’œil est généré avec plusieurs
balayages où chaque balayage est déclenché par un signal d'horloge et la largeur de balayage est
légèrement supérieure à la période de données binaires Tb = 1 / Rb. Dans cette simulation, le diagramme
de l’œil est basé sur une largeur de balayage de 2Tb.
C.1 Génération du diagramme de l’œil:
>> b = [1 0 0 1 0 1 1 0];
>> x = wave_gen(b, 'polar_nrz', 1000);
>> clf;
>> subplot(221), waveplot(x);
>> subplot(223), eye_diag(x);
Le diagramme de l’œil pour la forme d'onde x représente ce que vous devriez espérer voir pour un signal
non déformé. Pour observer comment le diagramme de l’œil est généré et pour observer les effets de la
distorsion du signal lorsque le signal x est transmis sur un canal de bande passante finie sans composant
de bruit:
>> y = channel(x, 1, 0, 4000);
>> subplot(222), waveplot(y);
>> subplot(224), eye_diag(y, -1);

Si le deuxième argument de la fonction eye_diag est négatif, vous devez appuyer sur la touche « Entrée »
pour afficher la trace suivante. Cela vous aidera à comprendre comment le diagramme de l’œil est
généré.

Communications numériques Année universitaire 2017/2018 Page 13


1ère année DNI Enseignante : Moufida Hajjaj

C.2
Générez le diagramme de l’œil à partir d'une forme d'onde polaire NRZ à la sortie du canal pour les
valeurs de la variance du bruit s2 et la bande passante du canal bw montrée dans le tableau 2.2.
Enregistrez t*, A et B pour chaque ensemble de s2 et b
>> clf;
>> b = binary(100);
>> x = wave_gen(b, 'polar_nrz', 1000);
>> eye_diag(channel(x, 1, s2, bw));
Tableau 2.2
Code en ligne NRZ polaire
s2 bw t* A B
3000
0.01 2000
1000
0.02
0.08 4000
0.10

C.3 Répétez l'étape C.2 pour le code en ligne manchester et enregistrez vos résultats dans le tableau 2.3.
Tableau 2.3
Code en ligne Manchester
s2 bw t* A B
3000
0.01 2000
1000
0.02
0.08 4000
0.10

Q2.4
Lorsque vous comparez les diagrammes de l’œil de C.2 et C.3 pour s2 = 0.01 et bw = 1000, pour quel
code en ligne observez-vous un diagramme de l’œil "raisonnable"? Expliquez la différence en termes
de propriétés de code en ligne respectives.
C.4 Générer des diagrammes d'œil comme à l'étape C.2 pour les codes de lignes RZ polaires et RZ
unipolaires et NRZ unipolaires et observer comment le code en ligne dicte la forme et la symétrie du
diagramme de l’œil.

Communications numériques Année universitaire 2017/2018 Page 14


1ère année DNI Enseignante : Moufida Hajjaj

TP 3: FILTRE ADAPTÉ ET TAUX D’ERREUR BINAIRE

V. Objectifs:
Dans ce TP, vous allez étudier le processus de détection du signal en étudiant les éléments d'un récepteur
et du processus de décodage. En particulier, vous:
- Étudiez les caractéristiques des filtres adaptés;
- Étudiez les performances de diverses récepteurs en fonction de différents filtres récepteurs en
mesurant la probabilité d'erreur binaire;
- Utilisez le diagramme de l’œil pour définir les paramètres du processus de détection.
VI. Rappels

1. Filtrage adapté

Soit un signal codé avec la forme d'onde g(t) (formant du code en ligne), et bruité :
𝑥(𝑡) = 𝑔(𝑡) + 𝑛(𝑡), 𝑡 ∈ [0; 𝑇 ]
où n est un BBAG de densité spectrale 𝑁(𝑓) = 𝑁0 /2
𝑦(𝑡) = ℎ(𝑡) ∗ 𝑥(𝑡) = 𝑔0 (𝑡) + 𝑛(𝑡)
tel que le RSB en t = T (instant de décision) :
|𝑔 (𝑇)|2
0
𝜂 = 𝐸(𝑛 2 (𝑡)) soit maximal
On a

𝑔0 (𝑇) = ℎ(𝑡) ∗ 𝑔(𝑡) = ∫ 𝐻(𝑓)𝐺(𝑓)𝑒 2𝑖𝜋𝑓𝑇 𝑑𝑓



et,
𝑁0
E(n2 (t)) = ∫ |𝐻(𝑓)|2 |𝑊(𝑓)|2 𝑑𝑓 = ∫ |𝐻(𝑓)|2 𝑑𝑓
ℝ 2 ℝ
D’où,
2
|∫ℝ 𝐻(𝑓)𝐺(𝑓)𝑒 2𝑖𝜋𝑓𝑇 𝑑𝑓|
η=
𝑁0
|𝐻(𝑓)|2 𝑑𝑓
2 ∫ℝ

Par Cauchy-Schwarz, on a,
2
η≤ ∫ |𝐺(𝑓)|2 𝑑𝑓
𝑁0 ℝ
avec égalité si et seulement si,
̅̅̅̅̅̅𝑒 −2𝑖𝜋𝑓𝑇 , 𝑘 ∈ ℂ
𝐻(𝑓) = 𝑘𝐺(𝑓)
soit, pour des filtres réels,
ℎ(𝑡) = 𝑔(𝑇 − 𝑡)
Le filtre h(t) = g(T-t) est le filtre optimal, ou filtre adapté, a la détection du signal g(t) bruité.
Le filtre adapté est le filtre optimal pour la détection du signal utile.

Communications numériques Année universitaire 2017/2018 Page 15


1ère année DNI Enseignante : Moufida Hajjaj

Exemple : Cas d'une impulsion uBR(t) rectangulaire uBR(t)

-∆/2 ∆/2
t
0
h(t)=uBR(∆/2-t)

On observe que le filtre adapté déforme le signal u'BR(t) de


t
manière à optimiser le rapport UBR/ à l'intant  ∆
'
d'échantillonnage t0. uBR(t)*h(t)= u BR(t)
U'BR=∆

t0
t
-∆/2  ∆/2 ∆

2. Effet du bruit et probabilité d’erreur


La mesure de la performance du filtrage (adapté ou non) est donnée par la probabilité d’erreur :

probabilité de décider qu’un bit 1 à était reçu alors qu’un bit 0 a été envoyé, ou inversement.

Exemple de calcul de la probabilité d’erreur


On considère un signal polaire NRZ :
+𝐴 + 𝑤(𝑡), 𝑠𝑖 𝑏𝑖𝑡 é𝑚𝑖𝑠 = 1
𝑥(𝑡) = {
−𝐴 + 𝑤(𝑡), 𝑠𝑖 𝑏𝑖𝑡 é𝑚𝑖𝑠 = 0
D’après le théorème de Bayes, on a
𝑝𝑒 = 𝑝(0|1)𝑝1 + 𝑝(1|0)𝑝0
𝑝 ,𝑝 𝑙es probabiltés d′ avoir un 0 ou un 1
avec, { 0 1
𝑝(0|1), 𝑝(1|0) les probabilités conditionnelles
Soit Y la sortie du filtre adapté :
1 𝑇𝑏
𝑌 = 𝑔(−𝑡) ∗ 𝑥(𝑡) = ∫ 𝑥(𝑡)𝑑𝑡
𝑇𝑏 0
et donc, si un 0 a été envoyé,
1 𝑇𝑏
𝑌 = −𝐴 + ∫ 𝑤(𝑡)𝑑𝑡
𝑇𝑏 0
d’où la densité de probabilité conditionnelle
1 (𝑦 + 𝐴)2
𝑇𝑌|0 = 𝑒𝑥𝑝 (− )
√2𝜋𝜎 2 2𝜎 2

avec la variance σ du bruit w(t) gaussien :


𝑁0
𝜎2 =
2𝑇𝑏
On obtient alors, avec un seuil de décision λ,
+∞
1 𝐴+𝜆
𝑝(1|0) = 𝑝𝑌|0 (𝑌 ≥ 𝜆) = ∫ 𝑇(𝑌|0)𝑑𝑧 = 𝑒𝑟𝑓𝑐 ( )
𝜆 2 √𝑁0 ⁄𝑇𝑏
avec la fonction d’erreur complémentaire :
+∞
2 2
𝑒𝑟𝑓𝑐(𝑢) = ∫ 𝑒 −𝑠 𝑑𝑠
√𝜋 𝑢

Communications numériques Année universitaire 2017/2018 Page 16


1ère année DNI Enseignante : Moufida Hajjaj

On trouve de même,
1 𝐴−𝜆
𝑝(0|1) = 𝑒𝑟𝑓𝑐 ( )
2 √𝑁0 ⁄𝑇𝑏
Au total, on obtient,
𝑝1 𝐴−𝜆 𝑝0 𝐴+𝜆
𝑒𝑟𝑓𝑐 ( ) + 𝑒𝑟𝑓𝑐 ( )
2 √𝑁0 ⁄𝑇𝑏 2 √𝑁0 ⁄𝑇𝑏
Dans le cas où, p0 = p1 = 1/ 2 , alors pe est minimum pour λ = 0 et alors,
1 𝐴
𝑝𝑒 = 𝑒𝑟𝑓𝑐 ( )
2 √𝑁0 ⁄𝑇𝑏
et donc, si on pose εb = A2 Tb, l’énergie par bit (impulsion d’amplitude A de durée Tb), alors,
1 𝜀𝑏
𝑝𝑒 = 𝑒𝑟𝑓𝑐 (√ )
2 𝑁0

VII. Travaux pratiques:


Procédez à l’initialisation du TP par:
>> start
A. Caractéristiques des filtres adaptés
A.1 Générez une impulsion rectangulaire avec une amplitude d'impulsion d'unité et une durée
d'impulsion de 1 ms.
>> r = wave_gen(1, 'polar_nrz', 1000);
A.2 Affichagez r et la réponse impulsionnelle d'un filtre adapté basé sur r.
>> subplot(311); waveplot(r);
>> subplot(312); match('polar_nrz');
A.3 Observez la sortie du filtre apparié si r est appliqué à son entrée.
>> rm = match('polar_nrz', r);
>> subplot(313); waveplot(rm);
Q3.1
Déterminez l’instant où la sortie du filtre atteint sa valeur maximale. Comment cette fois est-il lié à la
forme d'onde r?
A.4 Répétez les parties A.1-A.3 pour une impulsion triangulaire avec une largeur d'impulsion de 10 ms
et une amplitude de crête d'une unité.
>> r = wave_gen(1, 'triangle', 100);
>> clf; subplot(311); waveplot(r);
>> subplot(312); match('triangle');
>> rm = match('triangle', r);
>> subplot(313); waveplot(rm);

Q3.2
Si la largeur d'impulsion triangulaire est changée à 1 ms, déterminez l'amplitude du pic de la sortie du
filtre adapté?

Communications numériques Année universitaire 2017/2018 Page 17


1ère année DNI Enseignante : Moufida Hajjaj

A.5 Répétez les parties A.1-A.3 pour une impulsion manchester avec une largeur d'impulsion de 10 ms
et une amplitude de crête d’une unité. Prévoyez la réponse impulsionnelle du filtre adapté et la sortie du
filtre adapté. Vérifiez vos prédictions à l'aide des fonctions MATLAB.
A.6 Générez une forme d'onde polaire NRZ qui représente la séquence binaire de 5 bits [1 0 0 1 0]. Le
taux de données binaires Rb est de 1 kbps et l'amplitude d'impulsion A est de 1 V.
>> x5 = wave_gen([1 0 0 1 0], 'polar_nrz', 1000);
>> clf; subplot(211); waveplot(x5);
Enregistrez la forme d'onde x5
A.7 Appliquez x5 à un filtre adapté. Enregistrez la sortie.
>> subplot(212); waveplot(match('polar_nrz', x5));
Q3.3
Construisez la forme d'onde à la sortie de filtre adapté si l'entrée est une forme d'onde NRZ unipolaire
qui représente la séquence binaire [1 0 0 1 0].
B. Détection du signal
B.1 Générez une séquence binaire de 10 bits et une forme d'onde qui représente cette séquence binaire
en format de signalisation NRZ polaire.
>> b10 = binary(10);
>> x10 = wave_gen(b10, 'polar_nrz', 1000);
>> subplot(211); waveplot(x10);
B.2 Appliquez x10 à un canal avec une bande passante de 4,9 kHz et AWGN où la puissance de bruit
est de 2W. Affichez la forme d'onde de sortie du canal y10:
>> y10 = channel(x10, 1, 2, 4900);
>> subplot(212); waveplot(y10);
Décodez la séquence binaire de la forme d'onde y10:
̂ =
b10
B.3 Appliquez y10 à un filtre adapté. Affichez la forme d'onde de sortie z10:
>> z10 = match('polar_nrz', y10);
>> subplot(212); waveplot(z10);
B.4 Soit Tb la période de données binaires. Échantillonnez la sortie du filtre adapté à kTb; k = 1, …, 10
et appliquez la règle de décision suivante:

̂k = {0, si la valeur de ′l échantillon < 0;
b
1, si la valeur d échantillon > 0;
̂k est la valeur estimée du kème élément de la séquence binaire b10. Appliquer cette règle de décision
où b
sur la sortie du filtre adapté z10:
̂ =
b10
Comparez votre séquence décodée avec la séquence initiale b10.
Q3.4
Commentez s'il est plus facile de décoder la séquence binaire transmise directement à partir de la sortie
de canal y10 ou de la sortie de filtre adapté z10. Si des instants d'échantillonnage autres que ceux
spécifiés ci-dessus sont utilisés, la probabilité d'une erreur de décodage sera plus grande. Pourquoi?
C. Récepteur de filtre adapté
C.1 Générez une séquence binaire b de 2000 bits et une forme d'onde polaire NRZ basée sur b:

Communications numériques Année universitaire 2017/2018 Page 18


1ère année DNI Enseignante : Moufida Hajjaj

>> b = binary(2000);
>> x = wave_gen(b, 'polar_nrz');
Appliquez x à un canal avec une bande passante de 4,9 kHz et une puissance de bruit de canal de 0,5 W.
Soit y la forme d'onde de sortie du canal.
>> y = channel(x, 1, 0.5, 4900);
C.2 Appliquez y à un filtre adapté. Affichez le diagramme de l’œil de la sortie du filtre adapté z.
>> z = match('polar_nrz', y);
>> eye_diag(z);
À partir du diagramme de l’œil, déterminez les instants d'échantillonnage optimums et la valeur de seuil
𝜆_th pour que le détecteur décode la séquence binaire transmise b. Les instants d'échantillonnage de la
sortie du filtre adapté sont mesurés par rapport à l'origine du temps. Par exemple, si la période de données
binaires est Tb et que le paramètre instant_échantillonnage est réglé sur ti, le détecteur échantillonnera
le signal à ti, ti + Tb, ti + 2Tb, … etc.
𝜆_th = V
instant_échantillonnage = sec
Utilisez 𝜆_th et instant_échantillonnage dans le détecteur qui fonctionnera sur la sortie du filtre adapté.
Enregistrez la probabilité résultante d'erreur binaire Pe (TEB) dans le Tableau 3.1.
>> detect(z, 𝜆_th, instant_echantillonnage, b);
Tableau 3.1
σ2n (W) Pe expérimental Pe théorique
0.5
1
1.5
2

C.3 Répétez C.1-C.2 pour une puissance de bruit du canal de 1, 1.5 et 2 W sans afficher le diagramme
de l’œil de la sortie du filtre adapté z. Enregistrez les résultats de Pe dans le tableau 3.1.
C.4 Si différents instants d’échantillonnage autre que les valeurs optimales sont utilisés, le TEB résultant
sera plus grand. Vous pouvez l'observer en décodant la séquence binaire en utilisant les valeurs du
paramètre instant d'échantillonnage qui sont 0,9 et 0,5 fois la valeur optimale utilisée dans la partie C.3.
Q3.5
Évaluez la probabilité théorique des valeurs d'erreur binaire pour tous les cas considérés ci-dessus et
enregistrez les dans le Tableau 3.1.

Communications numériques Année universitaire 2017/2018 Page 19


1ère année DNI Enseignante : Moufida Hajjaj

TP 4: MODULATION NUMERIQUE

I. Objectifs:
Dans ce TP, vous allez appliquer les concepts de transmission numérique en bande de base et de
modulation analogique de signaux continus à l'étude de la transmission numérique passe bande. Vous
examinerez:
- génération de formes d'ondes modulées numériquement;
- détection cohérente (synchrone) et non cohérente (enveloppe) de signaux modulés;
- performance du système en présence de bruit.
II. Rappels
L'utilisation des modulations numériques répond à deux impératifs:
 lorsque la transmission des signaux numériques en bande de base n'est pas possible (dans l'air
ou sur les lignes téléphoniques), on est obligé de translater le spectre de la bande de base vers
les hautes fréquences: il faut réaliser une modulation,
 la demande en plages de fréquences augmente considérablement, alors que le spectre en espace
libre est une ressource partagée. Le numérique utilise plus efficacement ces plages car son
encombrement est réduit grâce à des techniques de compression de données et de modulations
adaptées.
1. Modulation cohérente ou incohérente
On peut distinguer deux grandes classes de modulation numérique, qui possèdent chacune des propriétés
particulières:
 la modulation cohérente: la fréquence de la porteuse est un multiple entier du rythme
d'émission 1/Tb,
 la modulation incohérente: la fréquence de la porteuse n'est pas un multiple entier du rythme
d'émission 1/Tb.
Dans le premier cas, la modulation peut être vue comme un cas particulier de codage en ligne à l'émission
en bande de base; l'onde de mise en forme est tout simplement un signal sinusoïdal périodique.
Toutefois, la modulation cohérente exige une synchronisation parfaite entre la source d'information et
la porteuse, ce qui n'est guère aisé à réaliser. Il faut alors recourir à une modulation incohérente. On
devine que la conception du récepteur sera guidée par d'autres principes et qu'elle demandera un soin
tout particulier.
2. Démodulation cohérente ou incohérente
Il ne faudrait pas confondre la nomenclature du type de modulation avec le principe utilisé dans certains
démodulateurs utilisant une reconstitution de la porteuse pour démoduler le signal reçu. Ainsi, on définit
également une démodulation cohérente, pour laquelle le récepteur dispose de la fréquence et de la phase
instantanées en permanence, et une démodulation incohérente, pour laquelle cette information n'est pas
disponible.

3. Modulation d'amplitude numérique cohérente


La modulation numérique d'amplitude porte le nom anglais d'Amplitude-Shift Keying (ASK) qui, dans
le cas où un signal est nul, s'appelle on/off keying. Son principe est illustré, en même temps que celui
de la modulation de phase et de fréquence, à la figure 4.1. Un signal modulant NRZ à deux états
d'amplitude, A0 et A1, multiplie une porteuse. À supposer que les symboles successifs de la source
soient indépendants entre eux, la séquence modulée peut être vue comme la somme de deux signaux

Communications numériques Année universitaire 2017/2018 Page 20


1ère année DNI Enseignante : Moufida Hajjaj

modulés de type on/off keying. Pour construire chacun d'eux, il suffit de prendre un signal nul au droit
des symboles de l'autre séquence.

Figure 4.1: Signal modulant numérique et signaux modulés respectivement en AM, PM et FM.

III. Préparation théorique:


1. Considérons la séquence binaire b = [1 0 0 1 0]. Pour un débit binaire Rb de 1 kbps et une amplitude
de crête de toutes les formes d'onde modulées numériques de 1 V,
(a) Tracez la forme d'onde ASK représentant la séquence binaire b en utilisant une fréquence
porteuse de 5 kHz.
(b) Tracez la forme d'onde PSK représentant la séquence binaire b en utilisant une fréquence
porteuse de 5 kHz.
(c) Supposons que le bit « 0 » va être codé par une fréquence f0 de 3 kHz et le bit « 1 » va être
codé par une fréquence f1 de 6 kHz. Tracez la forme d'onde FSK résultante représentant la
séquence binaire b.
2. Tracez la fonction de densité spectrale de puissance pour chacun des signaux modulés dans
Question1.
3. Si un signal ASK est appliqué à l'entrée d'un détecteur cohérent représenté sur la figure 4.2, traces
les formes d'onde à la sortie de chaque bloc.
IV. Travaux pratiques:
Procédez à l’initialisation du TP par:
>> start
Dans ce TP, le taux de données binaires Rb est de 1 kbps et l'amplitude du signal pic modulé est de 1 V.
La période de bit Tb = 1/Rb est représentée par 100 échantillons.
A. Génération de signaux modulés
Amplitude-Shift Keying (ASK)
A.1 Générer une séquence binaire avec les premiers 5 bits [1 0 0 1 0]:
>> b = [1 0 0 1 0 binary(45)];
A.2 Pour générer le signal ASK, sa, avec une fréquence porteuse de 4 kHz:
- générez un signal NRZ unipolaire xu, à partir de la séquence b;
- mélangez xu avec la sortie d'un oscillateur fonctionnant à 4 kHz.
>> xu = wave_gen(b, 'unipolar_nrz');
>> sa = mixer(xu, osc(4000));

Communications numériques Année universitaire 2017/2018 Page 21


1ère année DNI Enseignante : Moufida Hajjaj

A.3 Afficher les 5 premiers bits de xu et sa dans la séquence binaire b. Comparez les deux formes d'onde.
>> subplot(211); waveplot(xu(1:5*SAMPLING_CONSTANT));
>> subplot(212); waveplot(sa(1:5*SAMPLING_CONSTANT));
Affichez et enregistrez également les fonctions PSD respectives sur l'intervalle de fréquence [0, 8 kHz].
>> fr = [0, 8000];
>> subplot(211); psd(xu, fr);
>> subplot(212); psd(sa, fr);
Phase-Shift Keying (PSK)
A.4 Pour générer le signal PSK sp, avec une fréquence porteuse de 4 kHz:
- génèrez un signal NRZ polaire xp, à partir de la séquence b;
- mélangez xp avec la sortie d'un oscillateur fonctionnant à 4 kHz.
>> xp = wave_gen(b, 'polar_nrz');
>> sp = mixer(xp, osc(4000));
A.5 Afficher les 5 premiers échantillons des formes d'onde xp et sp:
>> subplot(211); waveplot(xp(1:5*SAMPLING_CONSTANT));
>> subplot(212); waveplot(sp(1:5*SAMPLING_CONSTANT));
Quelle est la différence de phase entre sp et la porteuse sin (2πfct) pendant les première et deuxième
périodes de bits?
A.6 Affichez les fonctions PSD de xp et sp over l'intervalle de fréquence [0, 8 kHz]. Enregistrez les
principales caractéristiques de chaque fonction PSD.
>> fr = [0, 8000];
>> subplot(211); psd(xp, fr);
>> subplot(212); psd(sp, fr);
Frequency-Shift Keying (FSK)
A.7 Pour générer le signal FSK en phase continue sf, avec des fréquences f0 et f1 de 2 et 4 kHz,
respectivement:
- générez un signal NRZ polaire à partir de la séquence b;
- mélangez xp et appliquez la forme d'onde polaire à l'entrée d'un oscillateur à tension contrôlée (voltage
controlled oscillator, VCO). Dans cette expérience, le VCO a la fréquence de fonctionnement réglée à
3 kHz et a une sensibilité de -1 kHz / V.
>> xf = wave_gen(b, 'polar_nrz');
>> sf = vco(xf);
A.8 Affichez les formes d'onde xf et sf pour 0 <t <5Tb.
>> subplot(211); waveplot(xf(1:5*SAMPLING_CONSTANT));
>> subplot(212); waveplot(sf(1:5*SAMPLING_CONSTANT));
Affichez et enregistrez la fonction PSD du signal FSK.
>> fr = [0, 8000];
>> subplot(211); psd(xf, fr);
>> subplot(212); psd(sf, fr);
Q4.1
Comment générer un signal FSK à partir de deux signaux ASK? Pour un système où une utilisation
efficace de la bande passante est requise, quel schéma de modulation préférez-vous?

Communications numériques Année universitaire 2017/2018 Page 22


1ère année DNI Enseignante : Moufida Hajjaj

B. Détection cohérente
B.1 Un détecteur cohérent pour les signaux ASK et PSK est représenté sur la figure 4.1.

Figure 4.2 Détecteur cohérent


Pour démoduler le signal ASK sa, multipliez d'abord sa par un support généré localement qui a la même
fréquence et la même phase que le support utilisé pour générer sa. Affichez la forme d'onde à la sortie
du multiplicateur pour les cinq premières périodes de bits. Affichez et enregistrez également la fonction
PSD correspondante sur l'intervalle fr.
>> ya = mixer(sa, osc(4000));
>> clf; subplot(211); waveplot(ya(1:5*SAMPLING_CONSTANT));
>> subplot(212); psd(ya,fr);
B.2 Appliquez ya à un filtre adapté et enregistrez sa sortie pour 0 <t <5Tb.
>> za = match('unipolar_nrz', ya);
>> subplot(212); waveplot(za(1:5*SAMPLING_CONSTANT));
Q4.2
Déterminez la réponse impulsionnelle du filtre adapté. Notez que za est similaire à la sortie du filtre
adapté pour un signal NRZ unipolaire. Pourquoi?
B.3 La difficulté majeure dans la mise en œuvre d'un détecteur cohérent est la synchronisation des
opérateurs. Afin d'obtenir des performances optimales, l'oscillateur local doit avoir la même phase et la
même fréquence que la porteuse entrante. L'écart de phase ou de fréquence entraînera une dégradation
des performances de détection.
Pour observer l'effet de l'erreur de phase, démodulez sa en utilisant un oscillateur local dont la sortie est
sin(2πfc + ϕ). Ici, ϕ est l'erreur de phase mesurée par rapport à la porteuse. Enregistrez l'amplitude du
signal de crête à la sortie du filtre adapté pour chaque erreur de phase indiquée au tableau 4.1.
>> phase_error = 0;
>> ya = mixer(sa, osc(4000, phase_error));
>> za = match('unipolar_nrz', ya);
>> subplot(212); waveplot(za(1:5*SAMPLING_CONSTANT));
Tableau 4.1
ϕ Amplitude de crête [V]

20°
60°
80°
120°
Q4.3
Rappelons que le TEB résultant de la détection d'un signal en présence de bruit est fonction de
l'amplitude du signal de crête à la sortie du filtre du récepteur. Déterminez à partir des résultats affichés
dans le tableau 4.1 quelle erreur de phase donnera le TEB le plus petit.

Communications numériques Année universitaire 2017/2018 Page 23


1ère année DNI Enseignante : Moufida Hajjaj

B.4 Pour observer l'effet de l'écart de fréquence en démodulant un signal ASK, démodulez sa avec un
oscillateur local réglé à 3900 Hz. Affichez et comparez les signaux démodulés ya et ya1.
>> ya1 = match('unipolar_nrz', mixer(sa, osc(3900)));
>> subplot(211); waveplot(ya(1:5*SAMPLING_CONSTANT));
>> subplot(212); waveplot(ya1(1:5*SAMPLING_CONSTANT));
La séquence binaire d'origine peut-elle être récupérée sur ya1? Considérons un deuxième cas où la
fréquence de l'oscillateur local est réglée à 3985 Hz. Démodulez sa et générez la sortie du filtre apparié:
>> ya2 = match('unipolar_nrz', mixer(sa, osc(3985)));
>> subplot(211); waveplot(ya(1:5*SAMPLING_CONSTANT)); subplot(212);
waveplot(ya2(1:5*SAMPLING_CONSTANT));
Déterminer la fréquence de l'enveloppe de la sortie du filtre adapté.
C. Performance du système sous bruit
Détection cohérente
C.1 Générer un signal ASK représentant une séquence binaire de 500 échantillons:
>> b = [1 0 0 1 0 binary(495)];
>> sa = mixer(wave_gen(b, 'unipolar_nrz'), osc(4000));
C.2 Appliquer sa à un canal avec un gain unitaire, un bruit de canal σ2n = 1 W, et une large bande
passante de telle sorte qu'aucune distorsion ne soit introduite dans le signal. Affichez le signal ASK sa
et la sortie du canal y pour 0 <t <5Tb.
>> y = channel(sa, 1, 1, 49000);
>> subplot(211); waveplot(sa(1:5*SAMPLING_CONSTANT));
>> subplot(212); waveplot(y(1:5*SAMPLING_CONSTANT));
C.3 Utilisez un détecteur cohérent pour démoduler y. Affichez le diagramme de l’œil de la sortie du
filtre adapté.
>> zm = match('unipolar_nrz', mixer(y, osc(4000)));
>> clf; eye_diag(zm);
À partir du diagramme de l’œil, déterminez les instants d'échantillonnage et la valeur seuil optimale.
Appliquer zm au circuit de décision, et enregistrer la probabilité résultante d'erreur de bit.
>> detect(zm, 3.8e-4, 0.001, b);
Q4.4
Calculez la probabilité théorique d'erreur binaire pour le cas considéré ci-dessus.

Communications numériques Année universitaire 2017/2018 Page 24


1ère année DNI Enseignante : Moufida Hajjaj

TP 4: CODES CORRECTEURS D'ERREURS

I. Objectifs:
Ce TP examine le codage de canal comme un moyen d'améliorer le taux d'erreur binaire à travers des
canaux hostiles. Plus précisément, nous examinerons:
- Codes en bloc linéaires et leurs performances contre les erreurs aléatoires;
- Les codes en bloc BCH et leur performance contre les erreurs éclatantes;
- Codes convolutifs et décodage Viterbi;
- Différences entre les décisions hard et les décisions soft.
II. Préparation théorique:
1. Considérez le code ci-contre: message mot de code
a) Est-ce un code linéaire? Expliquez. 000 0000000
b) Est-ce un code systématique? 001 0010110
010 0101000
c) Quelle est la matrice générateur du code G?
011 0111110
d) Construire la matrice de contrôle de parité H.
100 1000101
e) Quelle est la distance minimale dmin ? 101 1010011
f) Quelle est la capacité de correction d'erreur? 110 1101101
g) Quelle est la capacité de détection d'erreur? 111 1111011
III. Travaux pratiques:
1. Codes en bloc linéaires
1.1 Codes Hamming : Les codes de Hamming constituent une famille de codes en bloc linéaires
couvrant une large gamme de mots et de longueur de mots de code (n et k). D'abord, générer une
séquence de bits suffisamment longue pour le codage:
>> b = round(rand(20000,1));
Codez cette séquence en utilisant un code Hamming (7,4).
>> c = encode(b, 7,4, 'hamming/binary');
Vous allez maintenant transmettre cette séquence à travers un canal symétrique binaire avec une
probabilité d'erreur de bit de 0,01. Il s'agit d'un modèle de canal abstrait qui est souvent utilisé dans
l'étude de codes en raison de sa simplicité. Il inclut l'effet de la modulation et de la démodulation, du
bruit additif et de la mise en forme de l'impulsion. Son seul paramètre caractéristique est la probabilité
d'erreur binaire, ce qui est identique, même si 1 ou 0 ont été transmis (d'où la désignation: "symétrique").
>> d = bsc(c,0.01);
Décodez le signal à la sortie du canal.
>> e = decode(d,7,4, 'hamming/binary');
Enfin, calculer les taux d'erreur de bit codés et non codés pc et pu et les enregistrer dans le Tableau 1.
>> [n_err,pc] = biterr(b,e(1:20000))
>> [n_err,pu] = biterr(c,d)
Répétez cette expérience pour un code Hamming (15,11) et un Hamming (31,26).

Tableau 1: Canaux symétriques binaires: codes Hamming.

Communications numériques Année universitaire 2017/2018 Page 1


1ère année DNI Enseignante : Moufida Hajjaj

Code TEB du canal TEB codés TEB non codés


(7,4) 0.01
(15,11) 0.01
(31,26) 0.01

1.2 codage BCH et le seuil de codage : Nous allons maintenant expérimenter une famille de codes plus
puissante, les codes Bose-Chandhuri-Hocquenghem (BCH).
Afin d'effectuer une comparaison «équitable» entre les liaisons de communication codées et non codées,
il faut tenir compte de la quantité d’overhead requise par le code. Considérons un système BPSK avec
un débit binaire de 1 kb / s. Supposons que =4 chez le destinataire. Par conséquent:

1
= = 0.0125
2

Si nous voulons maintenant introduire un code BCH (127,36) dans ce système tout en conservant le
même débit de données utile, il faudra augmenter le débit brut par un facteur de . Puisque l'amplitude
de la forme d'onde reçue est fixée, cela diminuera d'un facteur de . En utilisant cette nouvelle valeur,
un taux d'erreur de bit de canal "ajusté" (avant le décodage) peut être calculé en tenant compte du débit
binaire augmenté requis par le code.
Calculez les taux d'erreur binaire de canal avec et sans codage pour tous les cas répertoriés dans le
tableau 2. Utilisez la commande erfc pour calculer les valeurs de la fonction. Enregistrez vos résultats.
Maintenant, codez b en utilisant un code BCH (127,36):
>> n = 127;
>> k = 36;
>> nwords = 2000;
>> msgTx = gf(randi([0 1],nwords,k));
>> [~,t] = bchgenpoly(n,k)
>> c = bchenc(msgTx,n,k);
En supposant que =4 dans le cas non codé, transmettre la séquence codée à travers un canal
symétrique binaire avec un taux d'erreur de bit correctement ajusté. Décoder la séquence reçue et
calculer le taux d'erreur de bit codé; enregistrez-le dans le tableau 2. À cette fin, utilisez
>> d = bsc(c,0.0125);
>> [msgRx2,numerr] = bchdec(d,n,k);
>> pc = sum(numerr)/(nwords*k)
Répétez cette séquence d'opérations pour toutes les valeurs de indiquées dans le tableau.

Tableau 2: Canaux symétriques binaires: codes BCH.

non-codé Pe de canal Pe de canal Pe codé


(pas code) (avec code)
4 dB 0.0125
5 dB
6 dB
7 dB
8 dB

Communications numériques Année universitaire 2017/2018 Page 2


1ère année DNI Enseignante : Moufida Hajjaj

2. Codes convolutifs
Un code convolutif est défini par trois paramètres (n, k, K). Le nombre de registres à décalage parallèles
utilisés dans le codeur est n alors que k est le nombre de bits de sortie chaque fois que les registres à
décalage tournent. Par conséquent, le débit de codage est défini comme étant avec des codes linéaires,
soit k/n. Le paramètre K est la longueur en bits du registre à décalage le plus long, et on l'appelle la
longueur de contrainte (constraint length). Puisqu'il indique la quantité de mémoire intrinsèque au code,
c'est une mesure importante de la puissance du code.
L'encodeur convolutif présenté dans II (figure 1) a la fonction de transfert binaire
1 1 1 1
!
1 0 1 1
Il est facile de voir la correspondance entre les branches reliant le registre à décalage aux additionneurs
supérieur et inférieur et les bits dans la fonction de transfert. Tout simplement, un "0" indique l'absence
d'une branche à la position correspondante.
Matlab n'accepte pas les fonctions de transfert binaire (ou au moins pas dans un format simple comme
expliqué ci-dessus), mais accepte un format octal équivalent selon lequel la fonction de transfert ci-
dessus serait [17,13].
2.1 Tout d'abord, générer une séquence de bits plus courte:
>> b = round(rand(2000,1));
Définissez la fonction de transfert octale d'un code convolutif optimal (3,7,5) et utilisez-le pour coder b.
>> trellis =poly2trellis(3, [7 5]);
>> c = convenc(b , trellis);
Pour démontrer la puissance d'un simple code convolutif, nous utiliserons encore la chaîne la plus
hostile: un canal symétrique binaire avec un taux d'erreur de 0,1 bit.
>> d = bsc(c,0.1);
Pour décoder la séquence reçue, la commande decode de Matlab utilise l'algorithme de Viterbi pour
une estimation de vraisemblance maximale de la séquence transmise. L'algorithme de Viterbi trouve le
chemin le plus court à travers le trellis depuis le début de la transmission. En pratique, cependant,
il est nécessaire de truncate l'historique du chemin d'une longueur finie pour économiser de la
mémoire et obtenir un délai de décodage fini et raisonnable. Il est généralement admis qu'une longueur
de troncature de 5 fois la longueur de contrainte du code est suffisante pour assurer une dégradation
minimale des performances.
>> tb=2 ;
>> e= vitdec(d,trellis, tb, 'trunc', 'hard') ;
>> [n_err,pc] = biterr(b,e)
La longueur de troncature est le 6ème paramètre facultatif de la commande decode de Matlab.
Calculez le taux d'erreur binaire comme d'habitude. Enregistrez vos résultats dans le Tableau 3. Répétez
cette procédure pour le code K =4 défini dans la table; n'oubliez pas d'utiliser toujours la longueur de
troncature 5K.
Tableau 3: Codes convolutifs.

K Fonction de transfert TEB de canal TEB codés


3 [7,5]
4 [17,13]

Communications numériques Année universitaire 2017/2018 Page 3