Vous êtes sur la page 1sur 5

Université de Bordj Bou Arréridj Année Universitaire 2019/2020

Faculté ST
Département d’Electronique
Tp-02 CN MCIL 4 – Industries Electroniques Pr. Khaled ROUABAH

Transmission en bande de base en présence du bruit blanc


Gaussien
% Ce programme permet de simuler la Conversion bits/symboles, l’opération de
filtrage de mise en forme, l’ajout du bruit dans le canal, l’échantillonnage
au niveau du récepteur et la décision et le décodage binaire.
clc;
clear all;
close all;
% Génération d’un vecteur contenant les tailles des alphabets (Binaire & M-
aire).
M1=[2 4 8 16 32 64];
% Dans ce programme, on utilise une boucle « for » pour permettre de faire les
simulations pour chaque valeur de M.
for g=1:6

%%%%%%%%%%%%%%%%%%%%%%%%% Emetteur %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Choix de la taille de l’alphabet (Une valeur à partir du tableau M1).


M=M1(g);
% Nombre de bits par symbole M-aire.
n = log2(M);
% Indice des symboles dans l'alphabet.
k=1:M;
% Génération de l'alphabet.
alphabet=2*k-M-1;
% Taille de la séquence binaire (Ce choix est effectué pour permettre de
faire les simulations pour toutes les valeurs de M).
len = 4320;
% Génération d'une séquence de "len" bits binaires.
msg_bin = randint(1,len);
% Regroupement de chaque "n bits" dans la séquence binaire.
m1=len/n;
msg_bin_reg=reshape(msg_bin,m1,n);
% Conversion bits/symboles. Ici, chaque "n" bits sont transformés en un
% seul symbole appartenant à l'alphabet.
d = 2*(bi2de(msg_bin_reg))-M+1;
N_1=length(d);
% Représentation de la séquence de symboles.
% Ici, on représente "100" symboles. L'étudiant peut modifier cette
% valeur.
% Génération du vecteur temps normalisé.
t=(0:N_1-1)/100;
figure
subplot 311
stem(t(1:100),d(1:100),'LineWidth',3)
xlabel('Indice du
symbole','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')

Page 1 sur 5
Université de Bordj Bou Arréridj Année Universitaire 2019/2020
Faculté ST
Département d’Electronique
Tp-02 CN MCIL 4 – Industries Electroniques Pr. Khaled ROUABAH

Transmission en bande de base en présence du bruit blanc


Gaussien
ylabel('Amplitude','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
title(['Conversion Bits symboles pour M= [' num2str(M)
']'],'FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
grid
% Filtrage de mise en forme.
% Nombre d'échantillons pour une durée Ts.
N_Ts=101;
% L'étudiant peut modifier la valeur de N_Ts.
% Centrage de chaque impulsion. Ici, on utilise un suréchantillonnage
% pour réaliser cette opération.
Impulsions_d= upsample(d,N_Ts);
t1= linspace(0,max(t),length(Impulsions_d));
% Représentation des impulsions centrées.
% Ici, on représente "m1" symboles. L'étudiant peut modifier cette
% valeur.
subplot 312
stem(t1(1:m1),Impulsions_d(1:m1),'LineWidth',3)
xlabel('Indice du
symbole','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
ylabel('Niveau
physique','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
grid
% Conception du filtre de mise en forme.
% Filtre à réponse impulsionnelle rectangulaire. L'étudiant peut
% modifier ce filtre. Il peut utiliser une forme triangulaire ou
% Gaussienne.
h=rectwin(N_Ts);
% Filtrage du Signal et normalisation.
y = filter(h,1,Impulsions_d)/(max(h));
% Représentation du signal après filtrage de mise en forme.
% Ici, on représente "m1" symboles. L'étudiant peut modifier cette
% valeur.
subplot 313
plot(t1(1:m1),y(1:m1),'LineWidth',3)
xlabel('Temps
normalisé','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
ylabel('Amplitude','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
grid
% Ici, on utilise "pause" pour permettre à l'étudiant de voir chacune des
figures.
pause(2)

Page 2 sur 5
Université de Bordj Bou Arréridj Année Universitaire 2019/2020
Faculté ST
Département d’Electronique
Tp-02 CN MCIL 4 – Industries Electroniques Pr. Khaled ROUABAH

Transmission en bande de base en présence du bruit blanc


Gaussien
%%%%%%%%%%%%%%%%%%%%%% Canal %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Rapport signal sur bruit par bit en dB. L'étudiant peut modifier
% cette valeur pour voir l'effet du canal.
Eb_N0_dB = 25 ;
% Rapport signal sur bruit par bit en valeur relative.
Eb_N0 = 10.^(Eb_N0_dB/10);
% Rapport signal sur bruit par symbole en valeur relative.
Es_N0 = Eb_N0*n;
% Rapport signal sur bruit par symbole en dB.
Es_N0_dB = 10*log10(Es_N0);
% Ajout du Bruit.
% Ici, on utilise la fonction awgn de Matlab.
Sig_aff_bruit=awgn(y,Es_N0,'measured','linear');
% Représentation du signal bruité et comparaison avec le signal sans
% bruit.
figure
subplot 311
plot(t1(1:m1),Sig_aff_bruit(1:m1),'LineWidth',3)
hold on
plot(t1(1:m1),y(1:m1),'r','LineWidth',2)
legend('Avec bruit','Sans bruit')
xlabel('Temps
normalisé','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
ylabel('Amplitude','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
grid

%%%%%%%%%%%%%%%%%%%%%%%% Récepteur %%%%%%%%%%%%%%%%%%%%%%%%%%%

% Suréchantillonnage.
% Ici, on réalise un suréchantillonnage du fait que le signal d'origine
% est discret.
% Choix de l'instant d'échantillonnage.
t0=0.5;
Sig_echan=Sig_aff_bruit(round(101*t0):N_Ts:end);
% Représentation du signal suréchantillonné.
subplot 312
stem(t(1:round(m1/N_Ts)),Sig_echan(1:round(m1/N_Ts)),'LineWidth',3)
xlabel('Temps
normalisé','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
ylabel('Amplitude','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
grid

Page 3 sur 5
Université de Bordj Bou Arréridj Année Universitaire 2019/2020
Faculté ST
Département d’Electronique
Tp-02 CN MCIL 4 – Industries Electroniques Pr. Khaled ROUABAH

Transmission en bande de base en présence du bruit blanc


Gaussien
% Réception : Dans cette partie, le récepteur doit comparer chacune des
% valeurs du signal « Sig_echan » aux différents seuils correspondant à la
taille de l’alphabet.
% Détection optimale
% Seuils de décision
DM = [-(M-2):2:(M-2)];
% Pour le cas binaire, nous avons un seul seuil.
% Initialisation de la variable de stockage du résultat.
Seq_Deci=zeros(1,length(d));
% Décision sur la valeur extrême supérieure "+(M-1)".
Seq_Deci(find(Sig_echan<DM(1)))=alphabet(1);
% Décision sur les valeurs situées entre les deux valeurs extrêmes.
% Cette phase est valable uniquement pour M>2.
if (length(DM) > 1)
for k = 2:length(DM)
Seq_Deci(find((Sig_echan>DM(k-1))&(Sig_echan<
DM(k))))=alphabet(k);
end
end
% Décision sur la valeur extrême inférieure "-(M-1)".
Seq_Deci(find(Sig_echan> DM(length(DM))))= alphabet(end);
% Représentation des symboles après décision.
subplot 313
stem(t(1:100),Seq_Deci(1:100),'bo','LineWidth',3)
hold on
% Comparaison avec les symboles émis.
stem(t(1:100),d(1:100),'r*--','LineWidth',3)
legend('Reçue','Emise')
xlabel('Indice du
symbole','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
ylabel('Amplitude','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
title(['Symboles reçus pour M= [' num2str(M)
']'],'FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
grid
% Ici, on utilise "pause" pour permettre à l'étudiant de voir chacune des
figuers.
pause(2)
% Décodage des symboles en binaire.
% Conversion des symboles vers une représentation décimale.
Sym_Dec=(Seq_Deci+M-1)/2;
Mat_bin=dec2bin(Sym_Dec,n);
[a1,b1]=size(Mat_bin);
Seq_bin_dec=reshape(fliplr(Mat_bin),a1*b1,1)-'0';
% Représentation de la séquence binaire reçue.

Page 4 sur 5
Université de Bordj Bou Arréridj Année Universitaire 2019/2020
Faculté ST
Département d’Electronique
Tp-02 CN MCIL 4 – Industries Electroniques Pr. Khaled ROUABAH

Transmission en bande de base en présence du bruit blanc


Gaussien
figure
stem(Seq_bin_dec(1:100),'bo','LineWidth',3)
hold on
% Comparaison avec la séquence binaire émise.
stem(msg_bin(1:100),'r*--','LineWidth',3)
legend('Reçue','Emise')
xlabel('Indice du bit','FontSize',10,'FontWeight','bold','FontName','Times
New Roman','Color','k')
ylabel('Niveau
logique','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
title(['Bits reçus reçus pour M= [' num2str(M)
']'],'FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
grid
pause(2)
end
% D’après les différentes figures, on peut voir la présence d’éléments
% binaires erronés pour les grandes valeurs de M.

Page 5 sur 5