Vous êtes sur la page 1sur 11

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

Faculté ST
Département d’Electronique
Tp-01-03 CN L3-Télécommunications Pr. Khaled ROUABAH

Décodage en ligne
% Ce programme permet de faire les différents types de décodage en ligne
% Ces décodages concernent :
% 1- Décodage NRZ Unipolaire ;
% 3- Décodage NRZ Bipolaire ;
% 2- Décodage RZ Unipolaire ;
% 4- Décodage RZ Bipolaire ;
% 5- Décodage Manchester ;
% 6- Décodage HDB3.

clear all
close all
clc

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%% 1- Décodage NRZ Unipolaire %%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Génération des éléments du signal codé NRZ Unipolaire. Ici, il faut générer
un signal similaire à celui codé NRZ Unipolaire. On peut utiliser le programme
de codage « TP1-1-CN_2021_Corr » pour générer le signal codé.

% Nombre d'impulsions rectangulaires.


T=25;
% Génération de T symboles aléatoires.
ele_Sig_code=randint(1,T);
% Nombre d’échantillons par symbole.
n = 100;
% Nombre total d’échantillons.
Nt = n*length(ele_Sig_code);
% Période d’échantillonnage.
Te = T/Nt;
% Fréquence d'échantillonnage.
Fe=1/Te;
% Génération du vecteur Temps.
t = 0:Te:T-Te;
% Echantillonnage du signal codé.
i=1:Nt;
sig_code(i)=ele_Sig_code(ceil(i/n));
% Décodage.
% Pour le décodage, il est nécessaire de compter le nombre d'échantillons
décodés ==> Utilisation d’un compteur.
% Initialisation du compteur.
g_ctr = 0;

Page 1 sur 11
Université de Bordj Bou Arréridj Année Universitaire 2020/2021
Faculté ST
Département d’Electronique
Tp-01-03 CN L3-Télécommunications Pr. Khaled ROUABAH

Décodage en ligne
% Il est nécessaire également de créer une variable pour charger les bits
décodés.
seq_decod = 0;
% Une boucle "for" est nécessaire pour effectuer le décodage sur la taille
complète du signal codé.
% Les itérations de cette boucle dépendent des instants des échantillons du
signal codé.
% Dans cette boucle, il faut tester les instants « t(i) » par rapport à la
valeur du compteur « g_ctr ».
% Il est à noter que le compteur « g_ctr » augmente par rapport à la taille du
signal codé traité.
% Boucle.

for i = 1:length(t)
if t(i)>g_ctr
g_ctr = g_ctr + 1;
seq_decod(g_ctr) = sig_code(i);
end
end

% Maintenant la variable « seq_decod » contient la séquence binaire.

figure;

% Représentation du code NRZ Unipolaire original.

subplot 211
plot(t,sig_code,'LineWidth',3)
title('Signal NRZ
Unipolaire','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
xlabel('Temps','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
axis([0 T -0.1 1.1])
ylabel('Amplitude','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
grid
% Représentation de la séquence binaire qui est le résultat du décodage.

subplot 212
stem(1:length(seq_decod),seq_decod,'LineWidth',3)
title(['Séquence binaire: [' num2str(seq_decod)
']'],'FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
xlabel('Indice du bit','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
axis([1 length(seq_decod) -0.1 1.1])

Page 2 sur 11
Université de Bordj Bou Arréridj Année Universitaire 2020/2021
Faculté ST
Département d’Electronique
Tp-01-03 CN L3-Télécommunications Pr. Khaled ROUABAH

Décodage en ligne
ylabel('Niveau logique','FontSize',10,'FontWeight','bold','FontName','Times
New Roman','Color','k')

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%% 2- Décodage NRZ Bipolaire %%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Génération des éléments du signal codé NRZ Bipolaire. Ici, il faut générer
un signal similaire à celui codé NRZ Bipolaire. On peut utiliser aussi le
programme de codage « TP1-1-CN_2021_Corr » pour générer le signal codé.

% Nombre d'impulsions rectangulaires.

ele_Sig_code=1-2*randint(1,T);

% Echantillonnage.

i=1:Nt;
sig_code(i)=ele_Sig_code(ceil(i/n));

% Décodage.
g_ctr = 0;
seq_decod = 0;

% Même chose, une boucle "for" est nécessaire aussi pour effectuer le décodage
sur la taille complète du signal codé.

for i = 1:length(t)
if t(i)>g_ctr
g_ctr = g_ctr + 1;
if sig_code(i)>0
seq_decod(g_ctr) = sig_code(i);
else seq_decod(g_ctr) = 0;
end
end
end

figure;

% Représentation du code NRZ Bipolaire original.

subplot 211
plot(t,sig_code,'LineWidth',3)

Page 3 sur 11
Université de Bordj Bou Arréridj Année Universitaire 2020/2021
Faculté ST
Département d’Electronique
Tp-01-03 CN L3-Télécommunications Pr. Khaled ROUABAH

Décodage en ligne
title('Signal NRZ
Bipolaire','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
xlabel('Temps','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
axis([0 T -1.1 1.1])
ylabel('Amplitude','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
grid
% Représentation de la séquence binaire qui est le résultat du décodage.

subplot 212
stem(1:length(seq_decod),seq_decod,'LineWidth',3)
title(['Séquence binaire: [' num2str(seq_decod)
']'],'FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
xlabel('Indice du bit','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
axis([1 length(seq_decod) -0.1 1.1])
ylabel('Niveau logique','FontSize',10,'FontWeight','bold','FontName','Times
New Roman','Color','k')

%==========================================================================
%==========================================================================
%==========================================================================
%==========================================================================

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%% 3- Décodage RZ Unipolaire %%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Ici, il faut utiliser le même principe utilisé dans le décodage NRZ.

% Génération des éléments du signal codé RZ Unipolaire.

% Génération d'une suite de symboles aléatoires.


ele_Sig_code=randint(1,T);

% Echantillonnage
i=1:Nt;
sig_co(i)=ele_Sig_code(ceil(i/n));

% Dans le codage RZ, la taille de l'impulsion positive doit être la moitié de


celle correspondant à un codage NRZ. Par conséquent, chaque impulsion positive

Page 4 sur 11
Université de Bordj Bou Arréridj Année Universitaire 2020/2021
Faculté ST
Département d’Electronique
Tp-01-03 CN L3-Télécommunications Pr. Khaled ROUABAH

Décodage en ligne
du signal "sig_co" précédent est remplacée par une autre impulsion ayant 50%
des échantillons nuls et 50% des échantillons positifs.

mot1=repmat([ones(1,50) zeros(1,50)],1,length(ele_Sig_code));
sig_code=sig_co.*mot1;

% Décodage.
% Initialisation du compteur.

g_ctr = 0;

% Il est nécessaire également de créer une variable pour charger les bits
décodés.

seq_decod = 0;

% Une boucle "for" est nécessaire aussi pour effectuer le décodage sur la
taille complète du signal codé.

for i = 1:length(t)
if t(i)>g_ctr
g_ctr = g_ctr + 1;
seq_decod(g_ctr) = sig_code(i);
end
end

figure;

% Représentation du code RZ Unipolaire original.

subplot 211
plot(t,sig_code,'LineWidth',3)
title('Signal RZ
Unipolaire','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
xlabel('Temps','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
axis([0 T -0.1 1.1])
ylabel('Amplitude','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
grid
% Représentation de la séquence binaire qui est le résultat du décodage.

subplot 212
stem(1:length(seq_decod),seq_decod,'LineWidth',3)

Page 5 sur 11
Université de Bordj Bou Arréridj Année Universitaire 2020/2021
Faculté ST
Département d’Electronique
Tp-01-03 CN L3-Télécommunications Pr. Khaled ROUABAH

Décodage en ligne
title(['Séquence binaire: [' num2str(seq_decod)
']'],'FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
xlabel('Indice du bit','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
axis([1 length(seq_decod) -0.1 1.1])
ylabel('Niveau logique','FontSize',10,'FontWeight','bold','FontName','Times
New Roman','Color','k')

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%% 4- Décodage RZ Bipolaire %%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Génération des éléments du signal codé RZ Bipolaire. Les valeurs de ces


éléments sont les valeurs « -1 » et « +1 ».

ele_Sig_code=1-2*randint(1,T);

% Echantillonnage.
i=1:Nt;

% On utilise la même méthode pour réduire les tailles des impulsions


positives. En effet, dans le codage RZ Bipolaire, la taille de l'impulsion
positive doit être la moitié de celle correspondant à un codage NRZ.
Similairement, la taille de l'impulsion négative doit être la moitié de celle
correspondant à un codage NRZ.

sig_co(i)=ele_Sig_code(ceil(i/n));
mot1=repmat([ones(1,50) zeros(1,50)],1,length(ele_Sig_code));
sig_code=sig_co.*mot1;

% Décodage.

% Compteur.
g_ctr = 0;

% Variable de chargement des bits décodés.


seq_decod = 0;

% Une boucle "for" est nécessaire aussi pour effectuer le décodage sur la
taille complète du signal codé.

for i = 1:length(t)

Page 6 sur 11
Université de Bordj Bou Arréridj Année Universitaire 2020/2021
Faculté ST
Département d’Electronique
Tp-01-03 CN L3-Télécommunications Pr. Khaled ROUABAH

Décodage en ligne
if t(i)>g_ctr
g_ctr = g_ctr + 1;
if sig_code(i)>0
seq_decod(g_ctr) = sig_code(i);
else seq_decod(g_ctr) = 0;
end
end
end

figure;

% Représentation du code RZ Bipolaire original.

subplot 211
plot(t,sig_code,'LineWidth',3)
title('Signal RZ
Bipolaire','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
xlabel('Temps','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
axis([0 T -1.1 1.1])
ylabel('Amplitude','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
grid
% Représentation de la séquence binaire qui est le résultat du décodage.

subplot 212
stem(1:length(seq_decod),seq_decod,'LineWidth',3)
title(['Séquence binaire: [' num2str(seq_decod)
']'],'FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
xlabel('Indice du bit','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
axis([1 length(seq_decod) -0.1 1.1])
ylabel('Niveau logique','FontSize',10,'FontWeight','bold','FontName','Times
New Roman','Color','k')

%==========================================================================
%==========================================================================
%==========================================================================
%==========================================================================

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%% 5- Décodage Manchester %%%%%%%%%%%%%%%%%%%%%%%%%%%

Page 7 sur 11
Université de Bordj Bou Arréridj Année Universitaire 2020/2021
Faculté ST
Département d’Electronique
Tp-01-03 CN L3-Télécommunications Pr. Khaled ROUABAH

Décodage en ligne
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Génération des éléments du signal codé Manchester. Ici, il faut créer des
éléments positifs et des éléments nuls.

ele_Sig_code=randint(1,T);

% Echantillonnage.
i=1:Nt;
sig_co(i)=ele_Sig_code(ceil(i/n));

% On utilise la même méthode pour réduire les tailles des impulsions positives
et des impulsions négatives. En effet, le "0" est remplacé par "01" et le "1"
par "10".

mot0=repmat([zeros(1,50) ones(1,50)],1,length(ele_Sig_code));
mot1=repmat([ones(1,50) zeros(1,50)],1,length(ele_Sig_code));
sig_co_0=sig_co==0;
sig_co_1=sig_co==1;
sig_code_part0=sig_co_0.*mot0;
sig_code_part1=sig_co_1.*mot1;
sig_code=sig_code_part0+sig_code_part1;

% Décodage.

% Compteur.
g_ctr = 0;

% Variable de chargement des bits décodés.


seq_decod = 0;

% Une boucle "for" est nécessaire aussi pour effectuer le décodage sur la
taille complète du signal codé.

for i = 1:length(t)
if t(i)>g_ctr
g_ctr = g_ctr + 1;
if sig_code(i)>0
seq_decod(g_ctr) = sig_code(i);
else seq_decod(g_ctr) = 0;
end
end
end

figure;

Page 8 sur 11
Université de Bordj Bou Arréridj Année Universitaire 2020/2021
Faculté ST
Département d’Electronique
Tp-01-03 CN L3-Télécommunications Pr. Khaled ROUABAH

Décodage en ligne
% Représentation du signal codé Manchester.

subplot 211
plot(t,sig_code,'LineWidth',3)
title('Signal Manchester','FontSize',10,'FontWeight','bold','FontName','Times
New Roman','Color','k');
xlabel('Temps','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
axis([0 T -0.1 1.1])
ylabel('Amplitude','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
grid
% Représentation du de la séquence binaire qui est le résultat du décodage.

subplot 212
stem(1:length(seq_decod),seq_decod,'LineWidth',3)
title(['Séquence binaire: [' num2str(seq_decod)
']'],'FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
xlabel('Indice du bit','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
axis([1 length(seq_decod) -0.1 1.1])
ylabel('Niveau logique','FontSize',10,'FontWeight','bold','FontName','Times
New Roman','Color','k')

%==========================================================================
%==========================================================================
%==========================================================================
%==========================================================================

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%% 5- Décodage HDB3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Génération des éléments du signal codé HDB3. Ici, on peut utiliser le code
HDB3 généré par le programme de codage HDB3 ==> (TP1_1_CN_2020). Ici, il faut
télécharger ce signal à partir du fichier « code_HDB_3.mat ».

load code_HDB_3.mat

sig_code=x5;
t = 0:Te:((length(sig_code)/n))-Te;

Page 9 sur 11
Université de Bordj Bou Arréridj Année Universitaire 2020/2021
Faculté ST
Département d’Electronique
Tp-01-03 CN L3-Télécommunications Pr. Khaled ROUABAH

Décodage en ligne
% Décodage.

% Comme tous les autres types de décodage, nous avons besoin d'un compteur qui
comptera combien de bits ont été décodés.
% La valeur initiale du compteur est la valeur « 0 ».
g_ctr = 0;

% Ici, nous avons également besoin d'une variable pour charger le dernier bit.
dernier_bit=1;

% Aussi, nous avons besoin d’une variable de chargement des bits décodés.
seq_decod = 0;

% Une boucle "for" est nécessaire aussi pour effectuer le décodage sur la
taille complète du signal codé. Dans cette boucle, il faut tester t(i) par
rapport à la valeur du compteur g_ctr. Si t(i) est supérieur à g_ctr, alors il
faut augmenter la valeur du compteur "g_ctr" d'une valeur égale à "1". Ici, il
faut vérifier si chaque bit est égal à la valeur de "dernier_bit"

for i = 1:length(t)
if t(i)>g_ctr
g_ctr = g_ctr + 1;
if sig_code(i)==dernier_bit
seq_decod(g_ctr-3:g_ctr) = 0;
else
if(sig_code(i)==0)
seq_decod(g_ctr) = 0;
else
seq_decod(g_ctr) = 1;
dernier_bit = -dernier_bit;
end
end
end
end

figure;

% Représentation du signal codé HDB3.

subplot 211
plot(t,sig_code,'LineWidth',3)
title('Signal HDB3','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
xlabel('Temps','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
axis([0 (length(sig_code))/n -1.1 1.1])

Page 10 sur 11
Université de Bordj Bou Arréridj Année Universitaire 2020/2021
Faculté ST
Département d’Electronique
Tp-01-03 CN L3-Télécommunications Pr. Khaled ROUABAH

Décodage en ligne
ylabel('Amplitude','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
grid
% Représentation de la séquence binaire qui est le résultat du décodage.

subplot 212
stem(1:length(bits1),bits1,'rs','LineWidth',3)
hold on
stem(1:length(seq_decod),seq_decod,'LineWidth',3)
title(['Séquence binaire: [' num2str(seq_decod)
']'],'FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k');
xlabel('Indice du bit','FontSize',10,'FontWeight','bold','FontName','Times New
Roman','Color','k')
axis([1 length(seq_decod) -0.1 1.1])
ylabel('Niveau logique','FontSize',10,'FontWeight','bold','FontName','Times
New Roman','Color','k')
legend('Suite de bits utilisée pour le codage HDB3','Résultat du décodage
HDB3')

Page 11 sur 11