Qu'est-ce que CRC (contrôle de redondance cyclique) ?

Méthode de détection d'erreurs qui traite les bits de données comme un polynôme, y ajoute le reste de sa division par un polynôme générateur et laisse le récepteur refaire le calcul pour détecter les erreurs. Elle est très utilisée dans Ethernet, PCI Express, l'USB et les formats de fichiers.

Nom japonais: CRC(巡回冗長検査)

« CRC (contrôle de redondance cyclique) » apparaît dans 8 questions d'entraînement réparties sur 3 thèmes, dont Bases de la théorie de l'information et du codage, Circuits logiques, Interfaces d'E/S et bus.

Domaine: Interfaces d'E/S et bus

Principe

Un CRC traite les bits de données comme les coefficients d'un polynôme en arithmétique modulo 2 et calcule le reste de sa division par un polynôme générateur. En arithmétique modulo 2, l'addition comme la soustraction sont des XOR, si bien que la division consiste à répéter « si le bit de tête vaut 1, appliquer un XOR avec le générateur puis décaler d'un rang ». Pour un CRC de w bits, le reste de w bits obtenu après avoir ajouté w zéros est envoyé avec les données, et le récepteur refait le calcul pour vérifier qu'il correspond. Les normes réelles ajoutent des conventions comme une valeur initiale, l'inversion de l'ordre des bits de chaque octet et un XOR final.

Erreurs détectées et usages

Un CRC de w bits détecte toute erreur en rafale de longueur inférieure ou égale à w, et la probabilité de laisser passer d'autres erreurs aléatoires est d'environ 2⁻ʷ. Il ne fait cependant que détecter les erreurs sans pouvoir les corriger : les systèmes se rétablissent donc par retransmission. Les CRC sont utilisés dans le FCS d'Ethernet (CRC-32), les paquets PCI Express, l'USB, le bus CAN, les commandes de stockage et des formats de fichiers comme ZIP et PNG ; en matériel, on peut les calculer avec un registre à décalage à rétroaction linéaire composé d'étages à bascule et de portes XOR.

S'entraîner : questions sur CRC (contrôle de redondance cyclique)

On veut ajouter aux données 1101 les 3 bits de contrôle d'un CRC de polynôme générateur x³ + x + 1 (suite de bits 1011). Les bits de contrôle sont le reste de la division de 1101000, les données suivies de trois 0, par 1011, en utilisant le OU exclusif au lieu de la soustraction dans la division. Quels sont les bits de contrôle ?

  1. A001
  2. B101
  3. C110
Afficher la réponse et l'explication

Réponse : A. 001

On divise 1101000 par 1011. Le OU exclusif des 1101 de tête et de 1011 donne 0110 ; en abaissant le bit suivant, on obtient 1100, dont le OU exclusif avec 1011 donne 0111 ; 1110 avec 1011 donne 0101 ; et enfin 1010 avec 1011 donne 0001 : le reste est donc 001. On envoie 1101001, et le récepteur juge qu'il n'y a pas d'erreur si le reste de la division par 1011 vaut 0.

Quelle description d'un CRC dont le polynôme générateur est de degré r (r bits de contrôle) et a un terme constant égal à 1 est correcte ?

  1. APour une erreur sur 1 bit, son usage principal est d'identifier le bit erroné et de le corriger
  2. BIl détecte toute erreur en rafale (erreur confinée dans une zone contiguë) de longueur inférieure ou égale à r bits
  3. CAvec un polynôme générateur bien choisi, il détecte tous les motifs d'erreur possibles
Afficher la réponse et l'explication

Réponse : B. Il détecte toute erreur en rafale (erreur confinée dans une zone contiguë) de longueur inférieure ou égale à r bits

Si l'on représente le motif d'erreur par un polynôme E(x), un CRC ne manque une erreur que lorsque E(x) est divisible par le polynôme générateur G(x). Une erreur en rafale de longueur r ou moins peut s'écrire x^i × B(x) (B(x) de degré r − 1 ou moins avec un terme constant égal à 1), qui n'est pas divisible par un G(x) de degré r ayant un terme constant égal à 1 : elle est donc toujours détectée. En revanche, les motifs divisibles, comme une erreur ayant la même forme que G(x) lui-même, ne sont pas détectés. Les CRC servent surtout à détecter les erreurs, et lorsqu'une erreur est trouvée, les données sont renvoyées.

Questions fréquentes

En quoi un CRC diffère-t-il d'une somme de contrôle ?

Une somme de contrôle utilise une opération simple comme l'addition des octets et laisse facilement passer des données permutées ou des erreurs qui se compensent, alors qu'un CRC repose sur la division de polynômes, distingue la position des bits et détecte de façon fiable les erreurs en rafale.

Un CRC peut-il corriger des erreurs ?

En général, non. Un CRC détecte si une erreur s'est produite, mais pas quel bit est erroné : les mémoires qui ont besoin de correction utilisent donc un ECC comme un code de Hamming.

« CRC (contrôle de redondance cyclique) » dans les explications

Questions mentionnant « CRC (contrôle de redondance cyclique) » (8)

  1. On veut ajouter aux données 1101 les 3 bits de contrôle d'un CRC de polynôme générateur x³ + x + 1 (suite de bits 1011). Les bits de contrôle sont le reste de la division de 1101000, les données suivies de trois 0, par 1011, en utilisant le OU exclusif au lieu de la soustraction dans la division. Quels sont les bits de contrôle ?
  2. Quelle description d'un CRC dont le polynôme générateur est de degré r (r bits de contrôle) et a un terme constant égal à 1 est correcte ?
  3. Dans quel cas la sortie d'une porte XOR (OU exclusif) à 2 entrées vaut-elle 1 ?
  4. Quelle est l'utilisation typique du registre à décalage à rétroaction linéaire (LFSR), qui réinjecte en entrée le XOR de certaines sorties du registre à décalage ?
  5. On additionne les données octet par octet et on envoie avec elles les 8 bits de poids faible de la somme comme valeur de contrôle (somme de contrôle). Laquelle des erreurs suivantes ce contrôle ne peut-il pas détecter ?
  6. Quelle description de l'ARQ (demande de répétition automatique) et de la FEC (correction d'erreurs directe), méthodes de traitement des erreurs dans les communications, est correcte ?
  7. Que fait la couche liaison de données de PCI Express face aux erreurs binaires survenant en transmission ?
  8. En PCI Express, l'envoi de nombreux paquets d'écriture de petites données de 64 octets réduit nettement la bande passante utile par rapport à la valeur théorique. Quelle en est la principale raison ?

Termes associés

PCI Express Bit de parité Registre à décalage BIST (autotest intégré) Correction d'erreurs directe (FEC) AXI Branchement à chaud (hot plug) Codage 128b/130b Codage 8b/10b Complexe racine (root complex)

Retour au glossaire