TP 2 - CNA
Modulations
numériques
ENSTA –STR2
COMPTE-RENDU : un compte-rendu est à rendre par voie électronique, au plus tard 07 jours après la
dernière séance de travaux pratiques. Le format retenu est le format pdf. Le compte-rendu ne devra pas
excéder 15 pages. Les deux codes MATLAB seront également joints au courrier électronique. La notation
portera essentiellement sur les commentaires et les interprétations des différents résultats.
Programmation MATLAB
Les deux programmes MATLAB à rendre devront scrupuleusement respecter le canevas fournis à la fin de ce
document.
Notion de fréquence normalisée et paramètres de simulation
1
Par défaut, la fréquence d’échantillonnage Fs du logiciel MATLAB est de un (Fs=1) . Ainsi, les quantités
représentant des fréquences (ou des débits) devront être normalisées par rapport à la fréquence
d’échantillonnage utilisée. Dans toute la suite, il ne sera fait référence qu’aux fréquences normalisées. De
même, la période d’échantillonnage Ts du logiciel MATLAB est de un (Ts=1). Ainsi, les quantités représentant
des temps, comme les périodes, seront normalisées par rapport à la période d’échantillonnage utilisée.
Valeur réelle Valeur normalisée
Fréquence d’échantillonnage 10 MHz Fs=1
Période d’échantillonnage 0,1 µs Ts=1
Fréquence porteuse 2 MHz fc=0,2
Débit binaire 1 Mbit/s Db=0,1
Période binaire 1 µs Tb=10
Emetteurs numériques : modulations numériques
L’objectif de cette partie est de générer des signaux issus de modulations numériques (voir Figure 1) et de
comparer les représentations en temps et en fréquence de plusieurs modulations.
BITS ÉTAPE 1 SIGNAL ÉTAPE 2 SIGNAL
PASSE-BAS PASSE-BANDE
Db
Transformation en un signal passe- Transposition du signal
bas dont la bande passante est passe-bas dans la bande W
compatible avec W allouée au système
Figure 1 : génération de modulations numériques – schéma de principe
Cette partie commence par l’étude de la modulation de phase BPSK (Binary Phase Shift Keying). Puis, l’étude
est généralisée aux autres modulations de phase, aux modulations d’amplitude et aux modulations
d’amplitude en quadrature.
1
Le « s » de Fs fait référence à « sampling » (échantillonnage).
2
Génération d’une modulation numérique de phase BPSK
La génération de la modulation se fonde sur le schéma de principe de la Figure 2.
BITS SIGNAL PASSE-BAS
α (t ) = ∑α kδ (t − kTb ) sl (t ) = ∑ ak g(t − kT ) = A(t )e jθ (t ) = i (t ) + jq(t )
k k
g(t)
SYMBOLES a (t ) = ∑ akδ (t − kT )
k
SIGNAL PASSE-BANDE
s(t ) = A(t )cos[2πfc t + θ (t )] = i (t )cos (2πfct ) − q(t )sin(2πfct )
Figure 2 : génération de modulations numériques - schéma détaillé
Génération d’une séquence aléatoire de bits αk
Générer une séquence aléatoire de Nb bits.
Nom de la variable : bits
Fonction MATLAB utilisée : randint()
Paramétrage : Nb=100
Conseil de programmation : compléter la partie initialisation au début du code MATLAB. L’objectif est de
supprimer au maximum les valeurs numériques à l’intérieur du programme. Par exemple, pour générer la
séquence de bits, ne pas écrire randint(1,100) mais plutôt randint(1,Nb) en définissant Nb=100
dans la partie initialisation.
Génération de symboles BPSK ak
Coder la séquence de bits en une séquence de symboles BPSK, grâce à la règle de codage suivante : ak=-1 si
αk=0 et ak=+1 si αk=1. Le cardinal de l’alphabet des symboles est, M. Dans le cas de la BPSK, il vaut deux (M=2).
Représenter les symboles avec l’instruction scatterplot().
Nom de la variable : symbols
Génération du signal a(t)
Générer un peigne de Dirac, de débit D, débit symbole, dont les amplitudes correspondent aux symboles BPSK.
Nom de la variable : Dirac_comb
Rappel : D=Db/log2(M).
Indication : générer un vecteur nul de durée NT où N représente le nombre de symboles, avec N=Nb/log2(M), et
T désigne la période symbole (T=1/D), avec l’instruction zeros(1,NT). Puis, placer, à intervalles de temps
réguliers T, les valeurs des symboles BPSK stockées dans symbols avec une instruction du type
Dirac_comb(1:T:NT)=symbols.
3
Mise en forme des symboles BPSK :) et sl(t)
Filtrer le peigne de Dirac par un filtre porte d’amplitude unité et de durée T pour générer le signal passe-bas.
Indication : la réponse du filtre à une impulsion sera stockée dans le vecteur g et vaut donc ones(1,T).
Nom de la variable : sl
Fonction MATLAB à utiliser : filter()
Paramétrage : g
Transposition en fréquence : génération su signal s(t)
Transposer le signal autour de la fréquence porteuse fc pour générer le signal en bande transposée.
Nom de la variable : s.
Indication : la méthode proposée repose sur les relations de la Figure 2. Dans l’instruction qui suit, le vecteur
temps va de 0 à NT-1 mais il peut aller de 1 à NT, ou même de T1 à T1+NT-1 avec T1 entier. Le tout est de
conserver la même convention tout au long du programme MATLAB.
s=real(sl).*cos_carrier-imag(sl).*sin_carrier où
o cos_carrier=cos(2*pi*fc*[0:N*T-1]) et où
o sin_carrier=sin(2*pi*fc*[0:N*T-1])
Remarque sur l’hypothèse de signaux à bande étroite : l’hypothèse de signaux à bande étroite (fc très grande
devant D) permet de faire un certain nombre de simplifications dans les calculs sur les signaux numériques. Ici,
cette hypothèse n’est pas vérifiée. En effet, pour réduire la taille des vecteurs générés et ainsi réduire le temps
des simulations, cette hypothèse a été abandonnée. Cependant, pour que les résultats établis en cours restent
valides, cette hypothèse a été remplacée par une autre hypothèse, à savoir que fc=kD, où k est un entier non
nul.
Visualisation des résultats
Représentations en temps
Représenter les signaux suivants :
• Le signal passe-bande,
• Les parties réelles du peigne de Dirac des symboles et du signal passe-bas,
• Les parties imaginaires du peigne de Dirac des symboles et du signal passe-bas.
L’axe temporel sera exprimé en multiples de la période symbole T.
Conseil : prédire le résultat. Cela vaut pour tous les TPs. Lorsqu’il est demandé de tracer une courbe
(représentation en temps, représentation en fréquence, courbe de BER), il faut toujours anticiper le résultat qui
va être affiché. Ce n’est qu’en comparant le résultat obtenu avec le résultat escompté qu’il est possible de
décider si le résultat de la simulation est correct ou non.
Indication : pour générer l’échelle d’un axe entre les valeurs T0 et T1 sur Nsamp échantillons, il est possible
d’utiliser linspace(T0,T1,Nsamp). L’avantage de cette instruction est qu’elle fonctionne aussi avec des
valeurs négatives et des réels.
Indication : pour la représentation des peignes de Dirac, il est parfois intéressant de ne représenter que les
valeurs non nulles et ce pour éviter de surcharger la figure. Lorsque les abscisses des valeurs non nulles d’un
peigne de Dirac noté vector sont dans le vecteur time, il est possible de ne représenter que ces valeurs là
4
par l’instruction plot(time,vector(time),’ro’). Le marker choisi ici pour la représentation est un
rond (‘o’) rouge (‘r’).
Consignes pour toute la suite des travaux pratiques : toujours donner une légende explicite aux figures.
Différencier les courbes par un tracé différent (en prévision d’une impression sur une imprimante noir et
blanc).
Représentation en fréquence
Tracer les trois densités spectrales de puissance correspondant aux trois signaux suivants :
• Le peigne de Dirac des symboles,
• Le signal passe-bas à la sortie du filtre de mise en forme,
• Le signal passe-bande à la sortie du modulateur.
2
Les densités spectrales de puissance seront tracées entre –Fs/2 et Fs/2 en utilisant une échelle logarithme .
Expliquer la forme des densités spectrales de puissance.
Indication : la densité spectrale de puissance d’un signal donné est obtenue par le module au carré de sa
3
transformée de Fourier (FFT pour Fast Fourier Transform) , divisé par le nombre de points de la transformée de
Fourier, noté nfft.
Indication : pour limiter les axes de la figure entre xmin et xmax pour l’axe des abscisses et ymin et ymax
pour l’axe des ordonnées, il est possible d’utiliser l’instruction axis([xmin xmax ymin ymax]).
Rappel : le calcul de la FFT est optimisé pour un nombre de points de la FFT multiple d’une puissance de deux. Il
est conseillé de choisir, comme nombre de points de la FFT, la puissance de deux immédiatement supérieure
au nombre d’échantillons du signal. Pour cela, utiliser la fonction nextpow2().
Compte-rendu : les figures correspondant aux représentations en temps et en fréquence, et les explications.
Généralisation à d’autres modulations linéaires
Adapter le précédent programme aux trois modulations suivantes : QPSK (Quaternary Phase Shif Keying), 4-
PAM (Pulse Amplitude Modulation) et 16-QAM (Quadrature Amplitude Modulation). Expliquer les
changements observés au niveau des représentations en temps et en fréquence des signaux par rapport à la
modulation BPSK.
Compte-rendu : la comparaison des représentations en temps et en fréquence.
Récepteurs numériques
L’objectif de cette partie consiste à étudier le récepteur optimal pour les canaux AWGN (Additive White
Gaussian Noise). Le récepteur est optimal au sens où il minimise le BER (Bit Error Rate). Dès lors que le canal
n’est plus AWGN, le récepteur proposé n’est plus optimal (voir Figure 3).
2
Le recentrage des densités spectrales de puissance se fait par la fonction fftshift().
3
Sous MATLAB, l’échelle des fréquences par défaut va de 0 à 1 où 1 représente la fréquence d’échantillonnage.
5
SIGNAL PASSE-BAS
SIGNAL
PASSE-BANDE
BITS
+
BRUIT
SYMBOLES
Figure 3 : réception de modulation numériques - schéma de principe
Cette partie commence par l’étude de la modulation de phase BPSK. Puis, l’étude est généralisée aux autres
modulations de phase, aux modulations d’amplitude et aux modulations d’amplitude en quadrature.
Récepteur pour modulation BPSK
Retour en bande de base
Le retour en bande de base se fait sur deux voies. Le signal reçu est multiplié par deux porteuses pures de la
forme cos[2πf0t+φ] et - sin[2πf0t+φ] où f0=fc et φ=0. Pour les modulation BPSK, cela permet de traiter les
modulations dont les symboles sont de la forme exp(jθ) et exp[j(θ+π)].
Filtrage adapté
La suppression des lobes secondaires en -2fc et +2fc, et la maximisation du rapport signal à bruit aux instants de
prise de décision, se font grâce au filtrage adapté. Filtrer le signal (après le retour en bande de base) par un
filtre h adapté au filtre de mise en forme.
Nom de la variable : y
Fonction MATLAB à utiliser : filter()
Paramétrage : h
NB : si le filtre de mise en forme est de la forme g(t), alors la réponse impulsionnelle du filtre adapté est de la
forme g*(τ-t) où τ est un retard servant à compenser les retards introduits par les différentes étapes de filtrage.
La permutation de la réponse impulsionnelle du filtre de mise en forme se fait par la fonction fliplr().
Sous-échantillonnage et prise de décision
Sous-échantillonner au rythme symbole T, le signal y à la sortie du filtre adapté et stocker les échantillons dans
dec_samples. Représenter les échantillons avec l’instruction scatterplot(). Décoder les symboles
reçus et stocker les bits estimés dans estimated_bits. Comparer les bits émis bits et les bits reçus
estimated_bits. Conclure.
NB : tenir compte des retards introduits par le filtre de mise en forme et le filtre adapté (temps de propagation
de groupe) dans le sous-échantillonnage. En particulier, le premier échantillon, étant donné la forme des filtres
(porte de durée T), est prélevé à l’instant T.
Indication : un facteur ½ Eg a été introduit par la transmission, où Eg désigne l’énergie du filtre de mise en
forme. Ce facteur doit être pris en compte lors de la démodulation.
Visualisation des résultats
Représentations en temps
Superposer, sur la même figure, les signaux suivants :
• Le peigne de Dirac représentant les symboles émis,
6
Impact de différents paramètres sur la réception des signaux numériques
Impact de la synchronisation
Changer la fréquence porteuse du récepteur. Pour cela, rajouter 1% de fc à la valeur de fc. Sur une même figure,
superposer deux signaux : l’un correspondant à la sortie du filtre adapté pour une fréquence porteuse à la
réception égale à fc, et l’autre avec la nouvelle valeur de la fréquence porteuse. Commenter et conclure.
Changer la phase de la porteuse du récepteur. Faire varier la phase de 0 à π/2 par pas de π/8 (la valeur de la
fréquence porteuse doit reprendre sa valeur initiale). Sur une même figure, superposer les signaux à la sortie
du filtre adapté, correspondants aux quatre valeurs de la phase. Commenter et conclure.
Compte-rendu : les figures, les commentaires et les conclusions.
Ancienne valeur Nouvelle valeur
f0 fc fc+ 1% x fc
Φ 0 0, π/8, π/4, 3π/8, π/2
Impact du filtre adapté
Des versions sous-optimales du récepteur vont maintenant être implantées, toujours pour une modulation
BPSK, afin d’appréhender les éléments caractéristiques de l’architecture optimale.
Tester les combinaisons filtre de mise en forme – filtre adapté référencées dans le tableau ci-dessous.
Commenter et conclure.
Filtre à l’émission Filtre à la réception
Filtre porte de durée T et g=ones(1,T) h=fliplr(g)
d’amplitude unité
Filtre aléatoire g=randn(1,T) h=fliplr(g)
Filtre non adapté g=ones(1,T) h=[0:T/2 T/2-1:-1:1]
Filtre non inversé g=randn(1,T) h=g
Compte-rendu : les commentaires et les conclusions.
Comparaison de l’efficacité en puissance des modulations numériques
Envoyer un signal tel que l’énergie moyenne émise par bit soit unité. Mesurer le BER pour un rapport signal à
bruit de 3 dB et remplir le tableau suivant. Commenter et Conclure.
Modulation M-PAM M-PSK M-QAM
M 2 4 8 16 2 4 8 16 2 4 8 16
BER pour un Eb/N0
de 3dB
Compte-rendu : le tableau rempli, les commentaires et les conclusions.
Canevas pour le programme : transmission d’une modulation de phase à 4 états QPSK
%-------------------------------
% QPSK_chain.m
%-------------------------------
7
% Author :
% Year :
%-------------------------------
% QPSK Transmission
%-------------------------------
clear all
close all
%------------------------------------
% Initialization
%------------------------------------
fc= % Carrier Frequency
Db= % Bit Rate
Tb= % Bit Period
Nb= % Number of Bits
Fs= % Sampling Frequency
M= % Size of the Symbol Alphabet
n= % Number of Bits per Symbol
D= % Symbol Rate
T= % Symbol Period
N= % Number of symbols
g= % Impulse Response of the Shaping Filter
h= % Impulse Response of the Matched Filter
Eg= % Energy of the shiping filter
cos_carrier=cos(2*pi*fc*[0:N*T-1]); % Cosine Carrier
cos_carrier=sin(2*pi*fc*[0:N*T-1]); % Sine Carrier
time_axis= % Time Axis
nfft= % Number of Samples for the FFT
freq_axis % Frequency Axis
first_sample=T; % Delay at the Receiver Side
var_s= % Variance of the Symbols
Es= % Average Energy per Symbol
Eb= % Average Energy per Bit
EbN0dB= % Eb/N0 Ratio in dB
EbN0= % Eb/N0 Ratio
N0= % Noise Parameter
PSD_theo= % Theoretical Power Spectral Density
% of the Band-Pass Signal
%---------------------------------
% Begin Simulation
%---------------------------------
% Emitter
%---------------------------------
% Generating bits with randint()
% Generating symbols
% Generating a Dirac Signal
% Generating a Low Pass Signal
% Generating a Band Pass Signal
%-------------------------------
% Channel
%-------------------------------
% Receiver
%-------------------------------
% Recovering the base-band signal
% Mathed Filtering
% Sampling
% Received bits are compared to emitted bits
%----------------------------------
% End Simulation
%----------------------------------
%--------------------------------------------
% Figures
%--------------------------------------------
8