0% ont trouvé ce document utile (0 vote)
18 vues6 pages

Contrôle de Redondance Cyclique (CRC)

Ce document présente le principe du contrôle de redondance cyclique (CRC) pour détecter les erreurs dans les données numériques transmises. Il décrit deux méthodes pour calculer le CRC avec MATLAB : une fonction et un script. Des exemples sont donnés pour illustrer que les deux méthodes donnent le même résultat.

Transféré par

mi do
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)
18 vues6 pages

Contrôle de Redondance Cyclique (CRC)

Ce document présente le principe du contrôle de redondance cyclique (CRC) pour détecter les erreurs dans les données numériques transmises. Il décrit deux méthodes pour calculer le CRC avec MATLAB : une fonction et un script. Des exemples sont donnés pour illustrer que les deux méthodes donnent le même résultat.

Transféré par

mi do
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

OCT 2022

ZITOUNI NOUR ELISLAM


SERAICH OUBADA
AII/g2
Introduction :
Le codage binaire est très pratique pour une utilisation dans des appareils
électroniques tels qu'un ordinateur, dans lesquels l'information peut être codée
grâce à la présence ou non d'un signal électrique.

Cependant le signal électrique peut subir des perturbations (distorsion, présence


de bruit), notamment lors du transport des données sur un long trajet. Ainsi, le
contrôle de la validité des données est nécessaire pour certaines applications
(professionnelles, bancaires, industrielles, confidentielles, relatives à la sécurité,
...).

C'est pourquoi il existe des mécanismes permettant de garantir un certain


niveau d'intégrité des données, c'est-à-dire de fournir au destinataire une
assurance que les données reçues sont bien similaires aux données émises. La
protection contre les erreurs peut se faire de deux façons :

• Soit en fiabilisant le support de transmission, c'est-à-dire en se basant sur


une protection physique. Une liaison conventionnelle a généralement un
taux d'erreur compris entre 10-5 et 10-7.
• Soit en mettant en place des mécanismes logiques de détection et
de correction des erreurs.

La plupart des systèmes de contrôle d'erreur au niveau logique sont basés sur
un ajout d'information (on parle de « redondance ») permettant de vérifier la
validité des données. On appelle somme de contrôle (en anglais checksum)
cette information supplémentaire.

Le contrôle de redondance cyclique consiste à protéger des blocs de


données, appelés trames (frames en anglais). A chaque trame est associé un
bloc de données, appelé code de contrôle (parfois CRC par abus de langage ou
FCS pour Frame Check Séquence dans le cas d’un code de 32 bits). Le code CRC
contient des éléments redondants vis-à-vis de la trame, permettant de détecter
les erreurs, mais aussi de les réparer
Code MATLAB :
Fonction CRC :
function resultat = crc(Polynome,Message)
% On calcule la taille du polynome
a=length(Polynome);
% on calcule le nombre du zéro à ajouter
m =a-1;
% on ajoute les zeros au vecteur
for i=1:m
M(i)=0;
end
Mn = [Message M];
%%%%%%%%%%%%%%%%% la division ecludienne %%%%%%%%%%ùù
% on recupere un vecteur de meme taille que le polynome
for i=1:a
D(i)=Mn(i);
end
while i<length(Mn)
% On verifie si le vecteur est devisible par le polynome ou pas

if D(1)~=Polynome(1)
% on décale le vecteur par un bit
for j=1:a-1
D(j)=D(j+1);
end
D(a)=Mn(i+1);
i=i+1;
end
if D(1)==1
D=xor(D,Polynome);
end
end
resultat=D;
end
Main code :
Polynome=input(' entrer le vecteur du polynome: ');
Message=input(' enterer le vecteur message: ');
s= length(Polynome);
T= input('entrer le type du CRC : ');
fprintf('\n')
format compact
if T <= s
resultat = crc(Polynome,Message)
n=length(resultat);
k= resultat( n-T+1 :n);
sprintf('Donc le CRC%d est ',T)
disp(k)
end
Affichage :

2 éme methode :
Dans un seul SCRIPT MATLAB :
message=input('entrer sequence Message :');
polynome=input('entrer polynome générateur :');
[M N]=size(polynome);
message=[msg zeros(1,N-1)];
[q r]=deconv(message,polynome);
%Déconvolution et division polynomiale
r=abs(r);
%valeur absolu
for i=1:length(r)
a=r(i);
if ( mod(a,2)== 0 )
%mode : Reste après division
r(i)=0;
else
r(i)=1;
end
end
crc=r(length(msg)+1:end)
frame = bitor(message,r)
%bitor faire l'opération logique OR
Affichage :

2 éme exemle :
Résultat avec l’utilisation de la fonction :

Résultat avec le code script :

Commentaire :
On a trouvé le méme résultat du CRC avec le code SCRIPT et la
fonction crc , en travaillant avec :
Message :[1 0 0 1 1] et un polynome générateur :[1 0 0 1]
CRC = 001
Et : Message :[1 0 0 1 1 1] polynome générateur :[1 0 0 1]……….
CRC= 011

Conclusion :
L’idée du CRC est de transmettre, conjointement aux données que l’on désire
envoyer, une valeur calculée par l’émetteur à partir des données à transmettre
(on applique un algorithme basé sur la division de polynômes binaires, celui du
CRC en question). Ensuite, on envoie les données et le CRC calculé sur la ligne.
A la réception, les données sont lues et le récepteur effectue le même calcul de
son côté avec le même algorithme. Si le résultat est identique à celui qui a été
transmis, alors on est sûr à plus de 99.9% (dépend des algorithmes employés)
que les données sont correctes et donc que le message n’a pas été altéré. Sinon,
il y a eu une ou plusieurs erreurs lors de la transmission

Vous aimerez peut-être aussi