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