TPs EA104 2012 2013
TPs EA104 2012 2013
TPs EA104 2012 2013
pratiques de
Communications
Numériques
ENSEIRB-MATMECA – RSI-1
Benoît ESCRIG
COMPTE-RENDU : un compte-rendu est à rendre à l’encadrant, par voie électronique, au plus tard 15 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.
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.
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 )
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.
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
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.
• 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.
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 :
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.
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
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.
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().
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.
6
• Le signal passe-bas à la sortie du filtre de mise en forme,
• Le signal passe-bas à la sortie du filtre adapté,
• Le peigne de Dirac correspondant aux échantillons prélevés toutes les périodes T.
L’axe temporel sera exprimé en multiples de la période symbole T. Une figure sera pour la partie réelle et une
autre pour la partie imaginaire. Commenter.
Représentation en fréquence
Superposer, sur la même figure, les densités spectrales de puissance, entre –Fs/2 et Fs/2, du signal passe-bande
émis et du signal à la sortie du filtre adapté. Commenter.
L’hypothèse de blancheur du bruit signifie que les échantillons de bruit ne sont pas corrélés les uns aux autres.
Cette hypothèse est justifiée par le fait que la valeur d’un échantillon d’une source de bruit particulière n’est
pas conditionnée par les valeurs des échantillons des autres sources de bruit. Par exemple, si les défauts de
connectique de l’émetteur sont modélisés par une source de bruit, les valeurs aléatoires de cette source de
bruit ne sont pas conditionnées par les valeurs de la source de bruit modélisant les perturbations liées au
milieu de transmission, et inversement.
Test : tracer la fonction d’auto-corrélation d’un bruit blanc gaussien de moyenne nulle, de variance unité, de
1000 échantillons. Commenter.
L’hypothèse relative au caractère gaussien de la source de bruit vient du théorème de la limite centrale : toute
combinaison de N variables aléatoires indépendantes et identiquement distribuées tend vers une loi
gaussienne lorsque N tend vers l’infini. Il faut également tenir compte du fait que toute combinaison linéaire de
variables aléatoires gaussiennes suit une loi gaussienne. Ainsi, lorsque toutes les sources de bruit sont
référencées et classées selon leur densité de probabilité, il est possible d’obtenir, pour chaque classe, une
7
variable aléatoire globale suivant une loi gaussienne qui, une fois combinée aux variables aléatoires globales
associées aux autres classes, donne également une loi gaussienne.
Test : tracer l’histogramme d’une variable aléatoire uniformément répartie sur (0,1) comprenant 1000
réalisations. Puis, tracer l’histogramme de la somme de 2, 3 et 10 variables aléatoires. Tracer l’histogramme
d’un bruit AWGN. Commenter.
Compte-rendu : les courbes d’auto-corrélation, l’histogramme d’un bruit blanc et les commentaires.
Es =
Eg 2
2
σa avec
+∞
Eg = ∫ g(t ) dt et
−∞
2
[ ]
σ a2 = E ak
2
où Eg est l’énergie du filtre de mise en forme et σa² est la variance des symboles, à condition que ces derniers
soient centrés et où les ak sont les symboles de la constellation. L’énergie moyenne Eb d’un bit est de la forme
Es/log2(M). Le bruit blanc gaussien doit être généré avec une variance N0/2.
Représentation en temps
Sur une première figure, superposer le signal reçu sans bruit et le signal reçu avec bruit. Sur une autre figure,
superposer le signal à la sortie du filtre adapté dans le cas sans bruit et dans le cas avec bruit. Tracer
l’histogramme des échantillons aux instants de prise de décision. Commenter.
Représentation en fréquence
Sur une même figure, représenter les densités spectrales de puissance des trois signaux suivants : le signal
émis, le signal reçu et le bruit. Commenter.
Recommencer les représentations en temps et en fréquence pour un rapport Eb/N0 de 10 dB. Commenter.
1 E
Pb = erfc b
2 N0
Commenter. Modifier le code MATLAB pour obtenir des courbes complètes. Superposer aux courbes
précédentes les courbes d’écart-type sur l’estimation de la probabilité d’erreur par le BER, c’est-à-dire
BER ± σ BER . Commenter.
Indication : le BER est un estimateur de la probabilité d’erreur Pb avec les caractéristiques suivantes
8
mBER = E [BER] = Pb
Pb (1 − Pb )
2
σ BER [ ]
= E BER 2 − mBER
2
=
Nb
La précision de la mesure de la probabilité d’erreur est quantifiée par l’erreur relative quadratique moyenne,
ε², définie par
2
σ BER
ε = 2 =
2 (1 − Pb ) avec ε2 =
1
si Pb << 1
mBER Nb Pb NbPb
Le calcul du BER consistait jusqu’à présent à envoyer un nombre de bits arbitrairement grand pour toutes les
valeurs du rapport Eb/N0 et à observer un certain nombre d’erreurs. Ainsi, par rapport à l’expression suivante
du BER
Ne
BER =
Nb
où Ne représente le nombre d’erreurs observées, la procédure précédente consistait à fixer Nb et à compter Ne.
La procédure va maintenant être modifiée. Au lieu de fixer Nb, c’est Ne qui va être fixé. Expliquer l’impact de
cette procédure sur la précision de la mesure.
Etablir une nouvelle courbe de BER avec la méthode suivante. Pour chaque valeur du rapport Eb/N0, envoyer
des blocs de Nb bits, avec Nb assez faible (exemple : Nb=100), et accumuler ces erreurs dans une variable
intermédiaire Ne. Envoyer autant de blocs de Nb bits jusqu’à ce que Ne soit supérieur à un seuil Nemax fixé ici à
100 (Nemax=100). Le BER estimé sera alors donné par
Ne
BER =
Nb × Nblock
Commenter les résultats et expliquer les avantages de cette méthode par rapport à la précédente en se
fondant sur la notion de précision de la mesure. Tracer également les courbes BER+/- σBER où σBER est
maintenant calculé en fonction de ε². Expliquer et commenter.
Approfondissement
9
Certaines notions de communications numériques vont maintenant être approfondies par le biais
d’expérimentations.
Compte-rendu : explications de l’influence des différents paramètres sur les représentations en temps et en
4
fréquence des signaux .
4
Il est possible d’ajouter des figures pour illustrer une explication.
10
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.
Tester les combinaisons filtre de mise en forme – filtre adapté référencées dans le tableau ci-dessous.
Commenter et conclure.
11
% ENSEIRB-MATMECA Dpt :
% 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
%----------------------------------
12
%--------------------------------------------
% Figures
%--------------------------------------------
%-------------------------------
% perf_QPSK_chain.m
%-------------------------------
% ENSEIRB-MATMECA Dpt :
% Author :
% Year :
%-------------------------------
% BER Performance of a 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
BER_theo_QPSK= % Theoretical BER Curve
BER= % Iniatilize the BER vector to zero
nblock= %Initializing the Number of Blocks
nblocklim= % Maximum Number of Emitted Blocks
nerror= % Maximum Number of Bits per Block
%---------------------------------
% Begin Simulation
%---------------------------------
% For each Eb/N0 Value
for
% While the Maximum Number of Error has not been reached
% or While the Maximum Number of Blocks has not been reached
while
13
%-------------------------------------------
% Perform the transmission of Nb-Bits Block
%-------------------------------------------
% 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
% Counting the Number of Errors
% Updating the Number of Blocksnblock(k)
end
% End of the While Loop
end
% End of the "For each Eb/N0 Value" Loop
BER= % Normalizing the BER
%--------------------------------------------
% End Simulation
%--------------------------------------------
%--------------------------------------------
% Figures
%--------------------------------------------
14