Académique Documents
Professionnel Documents
Culture Documents
En langage C :
Les codes de redondance cyclique font partie des meilleures sommes de contrôle disponibles pour
détecter et / ou corriger les erreurs dans la communication et transmissions. Malheureusement,
l'arithmétique modulo-2 utilisée pour calculer les CRC ne correspond pas facilement au logiciel.
Un CRC est un type de somme de contrôle puissant capable de détecter la corruption de données
stockées et / ou transmises entre ordinateurs. De manière générale, les CRC sont calculés plus
efficacement dans du matériel dédié. Cependant, vous devez parfois calculer un CRC dans un logiciel,
par exemple dans un programme C ou C ++ qui s'exécutera dans un système intégré.
Avant d'écrire une seule ligne de code, examinons d'abord les mécanismes de la division binaire
modulo-2. Nous utiliserons l'exemple suivant pour nous guider. Le nombre à diviser est le message
augmenté de zéros à la fin. Le nombre de bits nuls ajoutés au message est identique à la largeur de la
somme de contrôle, dans ce cas, quatre bits ont été ajoutés. Le diviseur est un nombre de c + 1 bits
appelé polynôme générateur.
Le CRCGenerator génère des bits de code de redondance cyclique (CRC) pour chaque trame de données
d'entrée et les ajoute à la trame. L'objet s'attend à ce que l'entrée soit un vecteur de colonne binaire. Le type de
données doit être double ou logique. Si le type de données en entrée est double, le bit le moins significatif est
utilisé comme valeur binaire.
Pour générer des bits de code de redondance cyclique et les ajouter aux données d'entrée:
% Initialisation du ‘Reminder’a 0
rem = zeros(32,1);
% Boucle de calcul principale pour le CRC32
for i = 1:length(bits)
rem = [rem; bits(i)];
if rem(1) == 1
rem = mod(rem + poly, 2);
end
rem = rem(2:33);
end