Académique Documents
Professionnel Documents
Culture Documents
Préparé par:
• Matoug Bilal
Groupe : M1 RT G22
1. Introduction :
Les communications sans fil font l'objet de l'étude d'un grand nombre de chercheurs. Ceci, dans le but
d'obtenir une bonne qualité de communications sans fil avec des débits de transmission élevé. Dans ce
type de systèmes de communications il faut combattre adéquatement 1'effet des canaux à trajets multiples.
Ceci a mené au développement et à l'utilisation de la technique du multiplexage par division de
fréquences orthogonales (OFDM) qui semble être une solution très prometteuse .La transmission OFDM
consiste à répartir l’information sur un grand nombre de sous porteuses, créant ainsi des sous-canaux très
étroits. Elle convient à des types de propagation par trajets multiples. La répartition des symboles sur
plusieurs sous porteuses est la propriété plus importante de la transmission OFDM. C'est elle qui
engendre la robustesse contre le délai d'étalement et par conséquent diminue le taux de transmission par
sous-porteuse.
2. Modulation mono porteuse :
Dans la modulation mono-porteuse, chaque symbole élémentaire d’information occupe toute la bande
spectrale disponible sur un intervalle de temps minimale.
Les techniques qu’on appelle multi porteuses consistent à transmettre des données numériques en les
modulant sur un grand nombre de porteuses en même temps. Ce sont des techniques de multiplexage en
fréquence qui existent depuis longtemps. Son principe est de diviser la totalité de la bande passante
allouée à la transmission en un nombre fini de sous-porteuses. L’information sera transmise sur chacune
de ces sous-porteuses. En effet, le train binaire contenant l’information à transmettre sera répartie sur N
sous-porteuses orthogonales. L’espacement entre les sous-porteuses est choisit tel que ces dernières soient
mathématiquement orthogonales les unes par rapport aux autres. Il existe plusieurs formes de techniques
de modulation multi-porteuse qui sont en usage d'être étudiée pour une utilisation future. Certains des
systèmes plus connus sont résumées ci-dessous :
4. Travail demandé:
Exercice 1 :
La performance de la modulation/démodulation QAM sous un canal AWGN.
% Paramètres de simulation %
M = ………;% M = 2, 4, 8, 16, 32, 64.
SNR = ……..; % -20 dB , -10 dB , 0 dB, 10 dB, 20 dB
NoBits=5000;
%++++++++ Performance d'une modulation/démodulation QAM sous AWGN +++++++
%
Data = randi([0 M-1],NoBits,1);
Mod_QAM = modem.qammod(M);
Demod_QAM = modem.qamdemod(Mod_QAM);
Modulated_Signal= modulate(Mod_QAM,Data);
received_Signal= awgn(Modulated_Signal,SNR,'measured');
received_Data=demodulate(Demod_QAM,received_Signal);
%++++++++++++++++++ Taux d'erreur et nombre d'erreurs ++++++++++++++++++++
%
hError = comm.ErrorRate('ComputationDelay',1);
errorStats = step(hError, Data, received_Data);
fprintf('Error rate = %f\nNumber of errors = %d\n',errorStats(1),errorStats(2));
%++++++++++++++++++++++++++ Constellation +++++++++++++++++++++++++++%
scatterPlot=
commscope.ScatterPlot('SamplesPerSymbol',1,'Constellation',Mod_QAM.Constellation);
scatterPlot.PlotSettings.Constellation = 'on';
update(scatterPlot,received_Signal);
% Paramètres de simulation %
M =2;% M = 2, 4, 8, 16, 32, 64.
SNR = -20; % -20 dB , -10 dB , 0 dB, 10 dB, 20 dB
NoBits=5000;
%++++++++ Performance d'une modulation/démodulation QAM sous AWGN +++++++%
Data = randi([0 M-1],NoBits,1);
Mod_QAM = modem.qammod(M);
Demod_QAM = modem.qamdemod(Mod_QAM);
Modulated_Signal= modulate(Mod_QAM,Data);
received_Signal= awgn(Modulated_Signal,SNR,'measured');
received_Data=demodulate(Demod_QAM,received_Signal);
%++++++++++++++++++ Taux d'erreur et nombre d'erreurs ++++++++++++++++++++%
hError = comm.ErrorRate('ComputationDelay',1);
errorStats = step(hError, Data, received_Data);
fprintf('Error rate = %f\nNumber of errors =
%d\n',errorStats(1),errorStats(2));
%++++++++++++++++++++++++++ Constellation +++++++++++++++++++++++++++%
scatterPlot=
commscope.ScatterPlot('SamplesPerSymbol',1,'Constellation',Mod_QAM.Constellati
on);
scatterPlot.PlotSettings.Constellation = 'on';
update(scatterPlot, received_Signal)
quelque exemple pour cette manipulation :
SNR=20 :
20 0 0 0 0 15 253
2. Tracer les résultats de BER en fonction de SNR dans une seule figure. (Utiliser la fonction
semilogy):
Réponse:
-Le programme:
clc
Clear all
close all
%M=2
BER1=[0.43 0.33 0.07 0.00 0.00]
%M=4
BER2=[0.69 0.61 0.29 0.00 0.00]
%M=8
BER3=[0.84 0.79 0.58 0.08 0.00]
%M=16
BER4=[0.92 0.89 0.74 0.21 0.00]
%M=32
BER4=[0.95 0.94 0.86 0.45 0.00]
%M=64
BER5=[0.97 0.97 0.92 0.67 0.05]
SNR=[-20 -10 0 10 20]
semilogy(SNR,BER1,SNR,BER2,SNR,BER3,SNR,BER4,SNR,BER5)
Le traçage de BER en fonction de SNR :
Exercice 2 :
La performance de la modulation/démodulation OFDM en utilisant M-QAM sous un canal AWGN.
Cet exemple montre comment effectuer une simulation du taux d'erreur de symbole (SER) d'une liaison
de communication en utilisant une modulation/démodulation OFDM avec des symboles M-QAM est
simulée.
Construisez les objets d’un modulateur et démodulateur M-QAM.
OFDM_Mod = comm.OFDMModulator;
OFDM_Demod = comm.OFDMDemodulator(OFDM_Mod);
Utilisez la méthode info pour déterminer les dimensions d'entrée requises pour le modulateur OFDM.
modDim = info(OFDM_Mod);
1. Créez un objet de canal AWGN avec un rapport signal sur bruit.
Définissez le générateur de nombres aléatoires sur sa valeur par défaut pour vous assurer que les résultats sont répétables.
Déterminez le nombre de symboles OFDM par trames en utilisant la première valeur du tableau
Error = comm.ErrorRate('ResetInputPort',true);
SER = zeros(nFrames, 1);
Exécutez la simulation sur 100 trames OFDM (5300 symboles). Pendant l’exécution de la boucle, générez un vecteur de
données aléatoires d’une longueur égale au nombre requis de symboles
par trames, appliquez la modulation M-QAM puis appliquez la modulation OFDM. Passez les données modulées OFDM
sous un canal AWGN, puis appliquez la démodulation OFDM. Démodulez les données M-QAM résultantes et comparez-l
avec les données d'origine pour déterminer le taux d'erreur du symbole.
for i = 1:nFrames
% Générer des données aléatoires pour chaque trame OFDM
data = randi([0 M-1], nSymbolsPerFrame, 1);
% Appliquer la modulation QAM pour moduler les données(data)
mod_Data = modulate(Mod_QAM, data);
% Moduler les symboles QAM en utilisant OFDM
data_OFDM = step(OFDM_Mod, mod_Data);
% Passer le signal OFDM sous un canal AWGN
received_Signal = step(AWGN, data_OFDM);
% Démoduler les données OFDM
received_OFDM_Data = step(OFDM_Demod, received_Signal);
% Appliquer la démodulation QAM pour démoduler les données(data)
received_Data = demodulate(Demod_QAM, received_OFDM_Data);
% Calculer le taux d'erreur des symboles
errors = step(Error, data, received_Data,1);
SER(i) = errors(1);
NoE(i) = errors(2);
end
clc
clear all
close all
M =2.;% M = 2, 4, 8, 16, 32, 64.
Mod_QAM = modem.qammod(M);
Demod_QAM = modem.qamdemod(Mod_QAM);
OFDM_Mod = comm.OFDMModulator;
OFDM_Demod = comm.OFDMDemodulator(OFDM_Mod);
modDim = info(OFDM_Mod);
SNR =10.; % -20 dB , -10 dB , 0 dB, 10 dB, 20 dB
AWGN = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (SNR)','SNR', SNR);
Error = comm.ErrorRate('ResetInputPort',true);
SER = zeros(nFrames, 1);
for i = 1:nFrames
% Générer des données aléatoires pour chaque trame OFDM
data = randi ([0 M-1], nSymbolsPerFrame, 1);
% Appliquer la modulation QAM pour moduler les données (data)
mod_Data = modulate(Mod_QAM, data);
% Moduler les symboles QAM en utilisant OFDM
data_OFDM = step(OFDM_Mod, mod_Data);
% Passer le signal OFDM sous un canal AWGN
received_Signal = step(AWGN, data_OFDM);
% Démoduler les données OFDM
received_OFDM_Data = step(OFDM_Demod, received_Signal);
% Appliquer la démodulation QAM pour démoduler les données(data)
received_Data = demodulate(Demod_QAM, received_OFDM_Data);
% Calculer le taux d'erreur des symboles
errors = step(Error, data, received_Data,1);
SER(i) = errors(1);
NoE(i) = errors(2);
end
• Afficher les données de taux d'erreur des symboles pour les vingt premières trames avec un SNR égale à 10 dB et
M égale à 2.
Réponse :
Le programme sera comme ci de suite :
clc
clear all
close all
%M=2
SER1=[0.54 0.45 0.50 0.43 0.52 0.41 0.45 0.56 0.54 0.32]
SER2=[0.54 0.43 0.49 0.41 0.52 0.39 0.43 0.56 0.49 0.30]
SER3=[0.45 0.33 0.41 0.32 0.50 0.37 0.41 0.49 0.35 0.28]
SER4=[0.28 0.22 0.26 0.39 0.18 0.32 0.32 0.26 0.16 0.30]
SER5=[0.07 0.01 0.05 0.01 0.03 0.03 0.03 0.05 0.01 0.01]
ntrame=[1:1:10]
semilogy(ntrame,SER1,ntrame,SER2,ntrame,SER3,ntrame,SER4,ntrame,SER5)
• Tracer le taux d'erreur des symboles en fonction de nombre de trames, pour des SNR suivants : -20 dB ; -10 dB
0 dB, 10 dB, 20 dB, et de M qu’égale à 2. (Utiliser la fonction semilogy) :
Réponse :
Le traçage :
• Tracer le taux d'erreur des symboles en fonction de nombre de trames, pour des M suivants : 2, 4, 8, 16, 32, 64, e
un SNR qu’égale à 20 dB. (Utiliser la fonction semilogy)
Réponse :
clc
clear all
close all
%SNR=20
M1=[0.075 0.018 0.056 0.018 0.037 0.037 0.037 0.056 0.018 0.018 ]
M2=[0.075 0.056 0.056 0.075 0.094 0.056 0.056 0.113 0.094 0.037]
M3=[0.132 0.075 0.094 0.037 0.056 0.075 0.056 0.169 0.132 0.132]
M4=[0.132 0.094 0.113 0.075 0.075 0.094 0.075 0.188 0.132 0.169]
M5=[0.132 0.113 0.113 0.094 0.056 0.094 0.075 0.188 0.113 0.169]
M6=[0.132 0.113 0.113 0.094 0.075 0.113 0.094 0.118 0.169 0.207]
ntrame=[1:1:10]
semilogy(ntrame,M1,ntrame,M2,ntrame,M3,ntrame,M4,ntrame,M5,ntrame,M6)
Le traçage :
* Conclusion *
La simulation Simulink que nous avons réalisée a permis de mettre en relie
les intérêts d’une modulation et démodulation OFDM d’un point de vue taux d’erreur
binaire , ainsi que les paramètres de la chaine de transmission primordiaux (nombre de
porteuses , choix de constellation ) à ajuster en fonction du canal et des données à
transmettre . Dans cette partie de la simulation, nous avons réalisé une chaîne basic de la
technique OFDM, en guise de perspectives nous comptons y introduire d’autres types de
bruits.