Vous êtes sur la page 1sur 13

Rapport du TP

Introduction

La transmission en bande de base est une méthode de transmission de signaux dans laquelle le signal
original est directement transmis sans modulation de porteuse. Cela signifie que le signal est transmis à
travers le canal de communication tel qu'il est, sans qu'il soit modifié ou transformé de quelque manière que
ce soit.

La transmission en bande de base est souvent utilisée pour transmettre des signaux numériques, tels que
des données informatiques, des signaux de téléphone, des signaux vidéo, etc. Cette méthode de
transmission peut être utilisée sur des supports de transmission tels que les fils de cuivre, les câbles
coaxiaux, les fibres optiques et les canaux radio.

La transmission en bande de base présente plusieurs avantages par rapport à la modulation de porteuse. Elle
permet une utilisation plus efficace de la bande passante, car il n'y a pas besoin de réserver une partie de la
bande passante pour la porteuse. De plus, la transmission en bande de base est plus simple et moins
coûteuse à mettre en œuvre, car elle ne nécessite pas d'équipements de modulation et de démodulation de
la porteuse.

Cependant, la transmission en bande de base a également ses limites. Elle est limitée en distance par les
pertes de signal qui se produisent lorsqu'un signal est transmis sur un support de transmission. De plus, la
transmission en bande de base peut être sujette à des interférences électromagnétiques et à des bruits qui
peuvent affecter la qualité du signal transmis.

I. Mise en forme du signal et densité spectrale de puissance

Sur MATLAB , On commence par générer un vecteur aléatoire de 12 bits en utilisant la fonction « randi »

bits = randi([0 1], 1, 12);

Ensuite, voici comment tracer les formes d'onde pour les différents schémas de codage :

 Polar RZ :

t = 0:0.01:length(bits)-0.01;
rz = zeros(1, length(t));
for i = 1:length(bits)
if bits(i) == 1
rz(i*100-49:i*100) = 1;
end
end
plot(t, rz);
axis([0 length(bits) -1.5 1.5]);

on trouve le shema suivant

1|Page
Rapport du TP

 unipolar_rz
t = 0:0.01:length(bits)-0.01;
rz = zeros(1, length(t));
for i = 1:length(bits)
if bits(i) == 1
rz(i*100-49:i*100) = 1;
else
rz(i*100-49:i*100) = 0;
end
end
plot(t, rz);
axis([0 length(bits) -1.5 1.5]);

on trouve la courbe suivante

 bipolar_nrz

t = 0:0.01:length(bits)-0.01;
nrz = zeros(1, length(t));
level = 1;
for i = 1:length(bits)
if bits(i) == 1

2|Page
Rapport du TP

if level == 1
nrz(i*100-49:i*100) = -1;
level = -1;
else
nrz(i*100-49:i*100) = 1;
level = 1;
end
else
nrz(i*100-49:i*100) = level;
end
end
plot(t, nrz);
axis([0 length(bits) -1.5 1.5]);

on trouve le schéma suivant

 Manchester
t = 0:0.01:length(bits)-0.01;
manchester = zeros(1, length(t));
for i = 1:length(bits)
if bits(i) == 1
manchester(i*100-100:i*100-51) = -1;
manchester(i*100-50:i*100) = 1;
else
manchester(i*100-100:i*100-51) = 1;
manchester(i*100-50:i*100) = -1;
end
end
plot(t, manchester);
axis([0 length(bits) -1.5 1.5]);

on trouve la coube comme suite

3|Page
Rapport du TP

Question1

Pour la composante continue, sur les figures ci-dessous on voit bien que les formes d'onde “polar _rz”,
“bipolar_nrz” ct “Manchester” n'ont pas de composante continue, c'est à dire qu'elle est nulle car les valeurs
sont limitées entre -1 et 1. Par contre de la forme d'onde unipolaire la composante continue différente de
zéro.

Cette composante continue est inutile, elle ne transporte aucune information et provoque un échauffement
(effet Joule) des organes d’extrémité. L'absence de transition, lors de la transmission d'une longue suite de 0
ou de 1, introduit un risque de perte de synchronisation des horloges.

o Représentation de la densité spectrale de puissance

% Génération du vecteur aléatoire de 1000 bits


bits = randi([0 1], 1, 1000);

% Signal NRZ
nrz = bits * 2 - 1; % Conversion des bits en symboles 0/-1
fs = 10000; % Fréquence d'échantillonnage
[Pxx_nrz, f] = pwelch(nrz, [], [], [], fs); % Calcul de la DSP
subplot(3,1,1); plot(f, Pxx_nrz); title('DSP du signal NRZ');

% Signal RZ
rz = repelem(bits, 2) * 2 - 1; % Conversion des bits en symboles 0/-1
[Pxx_rz, f] = pwelch(rz, [], [], [], fs); % Calcul de la DSP
subplot(3,1,2); plot(f, Pxx_rz); title('DSP du signal RZ');

% Signal Manchester
manchester = bits * 2 - 1; % Conversion des bits en symboles 0/-1
manchester(2:2:end) = -manchester(2:2:end); % Inversion du signe des symboles pairs
[Pxx_man, f] = pwelch(manchester, [], [], [], fs); % Calcul de la DSP
subplot(3,1,3); plot(f, Pxx_man); title('DSP du signal Manchester');

4|Page
Rapport du TP

Donc on deduit les valeurs suivantes :

Mise en forme Fn(Khz) W


Polar RZ 0.2 0.12
Unipolar RZ 0.2 0.12
Bipolar NRZ 0.5
Manchester 0.4

On voit bien que la densité spectrale de puissance dans le cas des mises on forme : “polar _rz”, “unipolar rz”
ct “Manchester” cest réparties dans des intervalles de fréquence [n KHz ,2*n KHz] avec n€ N.

Par contre dans le cas bipolaire la répartition se fait dans des intervalles de fréquence [n KHz, n+1 KHz] avec
n€ N.

II. Transmission sur un canal bruité et à bande limitée

Pour le choix de la mise en forme d’onde, on à choisi la forme polar_rz.

En insère le code suivant

% Génération du vecteur aléatoire de 12 bits


bits = randi([0 1], 1, 12);

% Mise en forme polar_rz


polar_rz = zeros(1, length(bits)*2);
for i = 1:length(bits)
if bits(i) == 0
polar_rz(i*2-1:i*2) = [1 0];
else

5|Page
Rapport du TP

polar_rz(i*2-1:i*2) = [-1 0];


end
end

% Paramètres de la simulation
t = linspace(0, length(bits)*2, length(polar_rz));
f1 = 2.5e3;
f2 = 4.8e3;
f3 = 0.4e3;
fs = 50e3;

% Canal avec une bande passante de 4.8 kHz


[b, a] = butter(4, f2/(fs/2), 'low');
signal_entree = polar_rz;
signal_sortie = filter(b, a, signal_entree);

% Affichage du signal à l'entrée et à la sortie du canal


subplot(3,1,1);
plot(t, signal_entree);
title('Signal à l''entrée du canal');
xlabel('Temps (s)');
ylabel('Amplitude');

subplot(3,1,2);
plot(t, signal_sortie);
title('Signal à la sortie du canal (4.8 kHz)');
xlabel('Temps (s)');
ylabel('Amplitude');

% Canal avec une bande passante de 2.5 kHz


[b, a] = butter(4, f1/(fs/2), 'low');
signal_sortie = filter(b, a, signal_entree);

% Affichage du signal à la sortie du canal


subplot(3,1,3);
plot(t, signal_sortie);
title('Signal à la sortie du canal (2.5 kHz)');
xlabel('Temps (s)');
ylabel('Amplitude');

% Canal avec une bande passante de 0.4 kHz


[b, a] = butter(4, f3/(fs/2), 'low');
signal_sortie = filter(b, a, signal_entree);

% Affichage du signal à la sortie du canal


figure;
plot(t, signal_sortie);
title('Signal à la sortie du canal (0.4 kHz)');
xlabel('Temps (s)');
ylabel('Amplitude');

on trouve :

6|Page
Rapport du TP

Remarque

On voit bien qu’il y a une relation entre la bande passante et la forme du signal de sortie, et lorsqu'on
diminue la bande passante, on aura une distorsion au niveau du signal.

o l’effet d’un bruit blanc additif gaussien

On a la bande passante est 48 KHz ct on fait varier la puissance du bruit blanc gaussien 0w, 1w et 5w selon le
code qui suit :

% Paramètres du canal
bande_passante = 4.8e3; % en Hz

7|Page
Rapport du TP

% Génération d'un vecteur aléatoire de 1000 bits


bits = randi([0 1], 1, 1000);

% Mise en forme polar RZ


signal_polar_rz = 2*bits - 1;

% Calcul de la puissance du signal


puissance_signal = mean(signal_polar_rz.^2);

% Affichage de la fonction d'autocorrélation


autocorr = xcorr(signal_polar_rz);
figure;
plot(autocorr);
title("Fonction d'autocorrélation du signal");

% Génération des densités spectrales de puissance pour différents niveaux de bruit


puissance_bruit = [0, 1, 5];
couleur = ['r', 'g', 'b'];
figure;
hold on;
for i = 1:length(puissance_bruit)
bruit = sqrt(puissance_bruit(i))*randn(1, length(signal_polar_rz));
signal_bruite = signal_polar_rz + bruit;
[psd, f] = pwelch(signal_bruite, [], [], [], bande_passante);
plot(f, psd, couleur(i));
end
hold off;
legend("0W", "1W", "5W");
xlabel("Fréquence (Hz)");
ylabel("Densité spectrale de puissance");
title("Densités spectrales de puissance du signal bruité");

8|Page
Rapport du TP

o On remarque qu'il y à une distorsion au niveau de la densité spectrale et la fonction


d’autocorrélation quand le bruit a une énergie différente de 0W.
III. Détection grâce au filtre adapté

La réponse impulsionnelle d'un filtre adapté est conçue pour correspondre à la forme d'onde du signal de
mise en forme utilisé, de manière à maximiser la qualité de la transmission et à minimiser les interférences
avec d'autres signaux.

Le code adapté pour La réponse impulsionnelle du filtre adapté à la forme d'onde bipolar rz :

9|Page
Rapport du TP

% Définir la forme d'onde d'entrée


x = [0, 1, 1, 0, -1, -1, 0, 1, 1, 0, -1, -1, 0];

% Définir la réponse impulsionnelle souhaitée du filtre adapté


h = [0.125, 0.375, 0.375, 0.125];

% Trouver la réponse impulsionnelle du filtre adapté


h_matched = match(x, h, 'fir');

% Afficher la réponse impulsionnelle du filtre adapté


stem(h_matched);
title('Réponse impulsionnelle du filtre adapté à la forme d’onde *bipolar rz*');
xlabel(temps');
ylabel('>');

On va faire la génération d’un vecteur de 7 bit de la forme “polar_nrz”

10 | P a g e
Rapport du TP

Remarque

On voit bien qu'il y a un retard à chaque front ou plutôt à chaque commutation.

QUEST6

La réponse impulsionnelle d'un filtre adapté dépend du choix du signal de mise en forme.

pour chaque signal de mise en forme, il existe une réponse impulsionnelle de filtre adapté optimale qui
maximise le rapport signal sur bruit (SNR) à la réception du signal. En général, le choix du signal de mise en
forme est déterminé en fonction des contraintes spécifiques du canal de transmission et des performances
souhaitées en termes de taux d'erreur de transmission, de bande passante, de puissance de transmission,
etc. Le filtre adapté est ensuite conçu en fonction de ce choix pour maximiser les performances de
transmission du système.

o l’intérêt du filtre adapté

On génère maintenant un vecteur de 12 bits dont la forme est “polar _nrz”, en ajoutant un bruit de 1.5W ct
avec une bande passante de 5kHz.

% Définir les paramètres du système


Fs = 50e3; % Fréquence d'échantillonnage
fc = 2.5e3; % Fréquence de coupure du filtre
SNRdB = 5; % Rapport signal sur bruit en décibels

% Générer un vecteur aléatoire de 12 bits


bits = randi([0, 1], 1, 12);

11 | P a g e
Rapport du TP

% Mettre en forme le signal avec la modulation polar NRZ


polar_nrz = 2*bits - 1; % Modulation polar NRZ

% Générer le filtre de mise en forme


h = fir1(40, fc/(Fs/2));

% Appliquer le filtre de mise en forme pour obtenir le signal modulé


x = filter(h, 1, polar_nrz);

% Générer le bruit gaussien blanc


Pn = 1.5; % Puissance du bruit en Watts
N = length(x); % Longueur du signal
n = sqrt(Pn)*randn(1, N); % Générer le bruit
n = n-mean(n); % Centrer le bruit autour de 0

% Ajouter le bruit au signal modulé


SNR = 10^(SNRdB/10);
Px = mean(abs(x).^2); % Puissance du signal modulé
Pn = Px/SNR; % Puissance du bruit
x_noisy = x + sqrt(Pn)*n;

% Appliquer le filtre adapté pour récupérer le signal original


y = filter(h, 1, x_noisy);

% Afficher les signaux


t = (0:N-1)/Fs; % Echelle de temps en secondes

figure;
subplot(3,1,1);
plot(t, polar_nrz);
xlabel('Temps (s)');
ylabel('Amplitude');
title('Signal modulant');

subplot(3,1,2);
plot(t, x_noisy);
xlabel('Temps (s)');
ylabel('Amplitude');
title('Signal transmis avec bruit');

subplot(3,1,3);
plot(t, y);
xlabel('Temps (s)');
ylabel('Amplitude');
title('Signal récupéré avec filtre adapté');

12 | P a g e
Rapport du TP

Remarque

On peut remarquer que le rôle du filtre est d’éliminer un peu le bruit et il nous aide à récupérer le signal
original.

13 | P a g e

Vous aimerez peut-être aussi