L5: Exemple de calcul du code CRC
Transcription
L5: Exemple de calcul du code CRC
Digital Communication Laboratories P. Bakowski [email protected] P. Bakowski 1 DigiCom Labs Il y a 5 laboratoires liés à la communication numérique 1. Etude des paramètres de câbles métalliques, y compris: de l'impédance caractéristique, l'atténuation et de débit de base de données 2. Étude d'un système de transmission numérique avec détection d'erreur et de correction 3. Étude des codes en ligne avec la bande de base (partie 1) et modulation analogique (partie 2) 4. Etude d'un système de modulation QPSK et de communication basée sur le modèle SIMULINK 5. Étude du code CRC et du système de communication basé sur le modèle SIMULINK P. Bakowski 2 L5: étude du code CRC Le code CRC (Cyclic Redundancy Check) est utilisé pour la détection des erreurs dans des longues séquences binaires. Un CRC est une courte séquence binaire de taille fixe, connue comme valeur de test. Elle est ajoutée à la fin d'une séquence de données. L'ensemble donne un codeword. A la réception d'un codeword, on effectue le calcul de CRC sur le codeword et on compare le resulat avec une constante. Si on trouve une correspondance la transmission est sans erreur (?). P. Bakowski 3 L5: étude du code CRC Typiquement, un code CRC sur n bits appliqué sur un bloc de données de taille quelconque va détecter toutes les suites d'erreurs plus courtes que n. Il va détecter la fraction 1−2−n des suites d'erreurs plus longues. n bits erreurs P. Bakowski 4 L5: étude du code CRC La création du code CRC implique l'utilisation d'un code: generateur polynomial. Ce polynomial est un diviseur et les données (message) sont le dividende, le reste de la division et le résulat. La longueur du reste est inférieure à la longueur du générateur; elle détermine la longueur du résultat. Le plus simple CRC sur un bit est généré par x+1 . P. Bakowski 5 L5: calcul du code CRC Le message à encoder: 11010011101100 Ce message doit être completé par n zéros où n est le longueur code CRC (ici 3 bits). Ci dessous le premier pas de calcul avec le polynomial: x3+x +1 : 11010011101100 000 1011 -----------------01100011101100 000 P. Bakowski <- décalage de 3 bits <- diviseur (4 bits) <- résultat 6 L5: calcul du code CRC 11010011101100 000 1011 01100011101100 000 1011 00111011101100 000 1011 00010111101100 000 1011 00000001101100 000 1011 00000000110100 000 1011 00000000011000 000 1011 00000000001110 000 1011 00000000000101 000 101 1 ----------------00000000000000 100 P. Bakowski <--<--<--<--- décalage de 3 bits à gauche diviseur résultat diviseur ... code CRC à ajouter au message <--- reste (3 bits) 7 L5: calcul du code CRC La validité du message en réception peut être facilement vérifiée par le même calcul avec les derniers bits complétés par le code CRC. Pour une transmission sans erreur le reste de la division doit être égale à zéro. P. Bakowski 8 L5: Exemple de calcul du code CRC Nous allons calculer un CRC à 8 bits pour un message de 8 bits fait à partir d'un caractère ASCII - "W", en décimal 87 ou héxadecimal 0x57. Pour illustration, nous prénons le code polynomial CRC8-ATM (HEC): x8 + x2 + x + 1. Ce code correspond à la suite de 9 bits: "100000111". P. Bakowski 9 L5: Exemple de calcul du code CRC Le generateur est un registre à décalage avec portes xor placées selon les puissances dans le générateur polynomial. Le message peut être de taille quelconque. Après le décalage du message complet avec 8 zéros ajoutés , le résultat dans le registre est le CRC. P. Bakowski 10 L5: Exemple de calcul du code CRC Le message reçu est décalé par le même registre avec le code CRC attaché au message (à la place de zéros). Les données correctement réçues fournissent le résulat de zéro (00000000). La présence d'une erreur de transmission donne un résultat différent de zéro. P. Bakowski 11 L5: modèle SIMULINK x3 + x +1 message+CRC message 0s ajoutés P. Bakowski 12 L5: modèle SIMULINK P. Bakowski 13 L5: modèle SIMULINK result must be zero (remainder) P. Bakowski 14 L5: modèle SIMULINKl - simulation Tb=1, n=7, k=3 er=0.001 motinfo (4 bits): 0110 motinfo+CRC : 0110001 erreurs sur ligne Message réçu+CRC erreurs détectées P. Bakowski 15 L5: modèle SIMULINK - simulation Tb=1, n=7, k=3 er=0.1 motinfo (4 bits): 0110 motinfo+CRC : 0110001 erreurs sur ligne message réçu+CRC erreurs détectées P. Bakowski 16 L5: nouvel générateur CRC temps de simulation: 14*Tb Tb=1, n=7, k=3 P. Bakowski 17 L5: générateur pséudo-aléatoire Utilisez le circuit suivant pour la génération du signal d'entrée: Attention: Q1, Q2 doivent être initalisés à 1 P. Bakowski 18