0% ont trouvé ce document utile (0 vote)
6 vues4 pages

Codes Correcteurs d'Erreurs et Parité

Le document présente un TP sur les codes correcteurs d'erreurs, incluant la préparation de blocs de données et l'implémentation de codes de parité. Il explique les concepts de parité paire et impaire, ainsi que les fonctions pour calculer et insérer le bit de parité dans les blocs. Enfin, il décrit le processus de transmission et de réception des messages, ainsi que le calcul du taux d'erreur.

Transféré par

Chaima Mestiri
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues4 pages

Codes Correcteurs d'Erreurs et Parité

Le document présente un TP sur les codes correcteurs d'erreurs, incluant la préparation de blocs de données et l'implémentation de codes de parité. Il explique les concepts de parité paire et impaire, ainsi que les fonctions pour calculer et insérer le bit de parité dans les blocs. Enfin, il décrit le processus de transmission et de réception des messages, ainsi que le calcul du taux d'erreur.

Transféré par

Chaima Mestiri
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Amal Lazreg

1DNI1

TP4 :
Codes correcteurs d'erreurs

1. Préparation

message = [1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 ];
n = length(message);
k=4;
p=3;

peme_bloc = decouper_blocs(message, n, k, p);


disp(peme_bloc);
function peme_bloc = decouper_blocs(message, n, k, p)
if rem(n,k) ~= 0
error('le nombre total de bits n doit etre
divisible par la taille des blocs')
end

nb_blocs = n/k ;

if p <= 0 || p > nb_blocs


error('la valeur de p doit etre comprise entre i et
le nombre total de blocs');
end

debut = (p-1) * k +1 ;
fin = p* k ;
peme_bloc = message(debut:fin);
end

Affichage :

1
2. Code de parité

1/
Le principe d'un code de parité est une technique utilisée pour détecter et parfois corriger les
erreurs de transmission dans un ensemble de bits. L'idée fondamentale est d'ajouter un bit
supplémentaire, appelé bit de parité, à un groupe de bits (généralement un octet ou un mot de
données plus long) de manière à rendre le nombre total de bits égal à un nombre pair (dans le
cas de la parité paire) ou impair (dans le cas de la parité impaire).
Il existe deux types de parité principaux : la parité paire et la parité impaire.
1. Parité paire :
 Dans la parité paire, le bit de parité est choisi de manière à ce que le nombre
total de bits à 1 (y compris le bit de parité) soit pair.
 Si le nombre de bits à 1 dans le groupe est impair, le bit de parité est fixé à 1
pour rendre le total pair. Si le nombre de bits à 1 est déjà pair, le bit de parité
est fixé à 0.
 Par exemple, pour la séquence binaire "1101", la parité paire serait "11010" car
il y a trois bits à 1 dans la séquence d'origine, et en ajoutant un bit de parité (1),
le total devient pair.
2. Parité impaire :
 Dans la parité impaire, le bit de parité est choisi de manière à ce que le nombre
total de bits à 1 (y compris le bit de parité) soit impair.
 Si le nombre de bits à 1 dans le groupe est pair, le bit de parité est fixé à 1 pour
rendre le total impair. Si le nombre de bits à 1 est déjà impair, le bit de parité
est fixé à 0.
 Reprenant l'exemple précédent, la séquence binaire "1101" aurait une parité
impaire de "11011".

- La fonction calculer_bit_p :

function bit_p = calculer_bit_p(bloc)


if mod(sum(bloc), 2) == 0
bit_p = 0;
else
bit_p = 1;
end
end

2
- La fonction insere_bit_p :

function bloc_avec_p = insere_bit_p(bloc, bit_p)


bloc_avec_p = [bloc, bit_p];
end

- Le code Total :

n = 49 ;
message = randi([0, 1], 1, n)
k=7
nb_blocs = n / k;

message_avec_p = zeros(1, n + nb_blocs);

for p= 1:nb_blocs
bloc = decouper_blocs(message, n, k, p);
bit_p = calculer_bit_p(bloc);
message_avec_p(((p-1) * (k+1)) + 1:p * (k+1)) =
insere_bit_p(bloc, bit_p);
end

message_NRZ = 2* message_avec_p - 1 ;

message_recu = (message_NRZ + 1) / 2 ;

message_recu_8bits = reshape(message_recu, 8, []);

message_recu_8bits = message_recu_8bits';

nb_erreurs = sum(abs(message_recu - message_avec_p));

locallocalisation_erreurs = find(abs(message_recu -
message_avec_p) >0);

taux_erreur = nb_erreurs / length(message_avec_p) ;

3
- L’affichage :

Vous aimerez peut-être aussi