Académique Documents
Professionnel Documents
Culture Documents
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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 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é.
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
figure;
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')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 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é.
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;
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')
%==========================================================================
%==========================================================================
%==========================================================================
%==========================================================================
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Echantillonnage
i=1:Nt;
sig_co(i)=ele_Sig_code(ceil(i/n));
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;
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')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ele_Sig_code=1-2*randint(1,T);
% Echantillonnage.
i=1:Nt;
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;
% 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;
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')
%==========================================================================
%==========================================================================
%==========================================================================
%==========================================================================
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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;
% 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')
%==========================================================================
%==========================================================================
%==========================================================================
%==========================================================================
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 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;
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