Institut National des Télécommunications et des Technologies de l’Information et
de la Communication d’Oran
Module : Radiocommunications Numériques
TP : N°04
Optimum Receivers for
AWGN Channels
Préparé par : Mr Roumane Ahmed
Année universitaire : 2020/2021.
Estimation du temps nécessaire : 10h
Objective :
Comprendre la génération et l’analyse des signaux passe bande : Modulations numériques.
Démodulation, détection d’enveloppe, récepteur Optimal pour un canal AWGN
Se préparer au TP :
Il est recommandé de réviser les points suivants : Transformée d’Hilbert, signal analytique,
représentation vectorielle des signaux sur une base orthonormée, produit scalaire pour vecteur ou
fonction/signal, distance euclidienne, détection optimal pour un canal AWGN.
Voir les annexes.
Travail demandé :
Remarque : mettez votre script principal dans un fichier « .m » et Commentez tous les ligne de code que
vous introduisez. En cas de plusieurs fichiers, mettez-les dans un seul répertoire qui porte votre nom et
l’intitulé du TP.
Assurez-vous que l’exécution des fichiers « .m » fonctionne comme prévue (surtout la clarté de
l’affichage).
1. Préparer un signal binaire « s » contenant 1000 points et générer le signal modulé en 4-QAM en
bande de base. Tracer le signal temporel, le diagramme de constellation et le spectre.
2. Introduire la modulation QAM sur porteuse (fc=2*le débit symbole) et afficher les formes d’onde
avec le spectre correspondant. Comparer les résultats trouvés dans 1 et 2.
3. Que pouvez-vous dire sur l’enveloppe du signal ?
4. Faire passer le signal QAM passe bande dans un canal AWGN et observer l’effet du canal dans les
graphes cités. Justifier l’affichage.
Traitement coté récepteur :
5. Pour extraire le signal équivalent en bande de base, déterminer les expressions de ri(t) et rq(t)
puis implémenter le traitement illustré dans le schéma suivant :
Page 2 of 10
6. Quelle est l’utilité du traitement de l’étape (5) ? (Voir annexe 02)
7. Challenge :
Concevoir puis implémenter le détecteur optimal adéquat à ce signal. (Voir annexe 02)
Tracer la constellation et déterminer son taux d’erreurs.
8. Rédiger une conclusion générale qui résume ce que vous avez appris dans ce travail.
Page 3 of 10
Annexe 01
Some useful commands:
x = hilbert( xr ) % returns the analytic signal, x , from a real data sequence, xr
fe=8000; % define a Sampling Freq => Ts=1/8000 = 125 µs
s=[1:1:10]; % Example of Data
x=dec2bin(s);
x=x(:);
y=bin2dec(x(1:1:end,1)); % one column amplitudes
pulse= ones(50,1) ;% Rect pulse of T = 50*1/8000= 6.3 ms
Fc=4000; t=[0: 1/8000: (50-1)*1/8000];
cos_wave=cos(2*pi*Fc*t);
sin_wave=sin(2*pi*Fc*t);
sig =pulse*(y');
bas_bnd_sig = sig (:);
plot(bas_bnd_sig) % Adding noise
Noisy_bas_bnd_sig= Bas_bnd_sig + 0.2*randn(size(Bas_bnd_sig));
[Psd1,freq] = pwelch(Bas_bnd_sig(1:end,1),512,0,512,fe); plot (freq, 10*log10(Psd1))
%Eye Diagram
Start_eye_data =1; % Offset in starting of display eyediagram unit:symbol period.
End_eye_data = 100; % Number of symbols displayed in the eyediagram
Delay = 0.9; % Channel transmission time. Unit: symbol period.
Nb_Pt_Pls = 50 %samples per impulse
P=3; % Number of symbol period to be displayed in eye diagram
eyediagram(N_Out_Chan(round((Start_eye_data+Delay)*Nb_Pt_Pls):End_eye_data*Nb_Pt_Pls,:),P*Nb_
Pt_Pls,P);
delayed_out=[zeros(10,1); Bas_bnd_sig];
clear all; close all; clc
%QPSK
%Set the modulation order
Page 4 of 10
Annexe 01
M = 16;
%Generate random data symbols.
data = randi([0 M-1],1000,1);
%Modulate the data symbols.
txSig = pskmod(data,M,pi/M);
%Pass the signal through white noise and plot its constellation.
rxSig = awgn(txSig,20);
scatterplot(txSig)
scatterplot(rxSig)
numErrs = symerr(dataIn,dataOut)
%Modulate and demodulate the data using Gray and natural binary encoded data.
symgray = pskmod(data,M,phz,'gray');
mapgray = pskdemod(symgray,M,phz,'gray');
symbin = pskmod(data,M,phz,'bin');
mapbin = pskdemod(symbin,M,phz,'bin');
pxx = pwelch(x) returns the (PSD) estimate of x.
When x is a matrix, the PSD is computed independently for each column and stored in the corresponding
column of pxx.
To set the DC in the middle :
plot(psd(spectrum.welch,pb_sig(:),'Fs',fe,'CenterDC',true));
x2_2bit_words=reshape(x2, 20, 2)
00 -> 1 + j; 01 -> 1 – j; 10 -> -1+j; 11 -> -1-j
qam_clpx_symb=zeros(20,1);
for i = 1:20
switch bin2dec(x2_2bit_words(i,:))
case 0
qam_clpx_symb(i)= 1+j
case 1
qam_clpx_symb(i)= 1-j
case 2
Page 5 of 10
Annexe 01
qam_clpx_symb(i)= -1+j
case 3
qam_clpx_symb(i)= -1-j
end
end
qam _I=real(qam_clpx_symb);
qam _Q=imag(qam_clpx_symb);
qam_Q=cos_wave'*imag(bas_bnd_qam)';
qam_basband_I=pulse* qam _I’
qam_basband_Q= pulse*qam _Q’
#qam_basband_I= qam_basband_I(:) # to plot
#qam_basband_Q= qam_basband_Q(:)
qam_bandPas= cos_wave'* qam _I’ - sin_wave'*qam _Q’
#Demodulation:
r_anltc_x2 = hilbert( qam_bandPas) ;
r_=real(r_anltc_x2);
r_hlb=imag(r_anltc_x2);
>> r_Q=zeros(size(r_));
>> r_I=zeros(size(r_));
for j =[1:20]
r_I(:,j)= cos_wave'.*r_(:,j) + sin_wave'.*r_hlb(:,j);
r_Q(:,j)= -sin_wave'.*r_(:,j) + cos_wave'.*r_hlb(:,j);
end
filtred_r_Q= conv(r_Q(:,1),pulse);
Page 6 of 10
Annexe 2
Modulator:
Page 7 of 10
Annexe 2
Page 8 of 10
Annexe 2
Page 9 of 10
Annexe 2
Page 10 of 10