Cours EN312 2
Cours EN312 2
Cours EN312 2
bande de base
Camille Leroux
Département Electronique
camille.leroux@enseirb-matmeca.fr
Pourquoi ?
• Quasiment toutes les chaînes de communications numériques
contiennent des traitements numériques en bande de base
• Le codage de canal en est le maillon clef
• Le codage de canal améliore significativement la qualité/efficacité
d’une transmission
• Le codage de canal demande beaucoup de puissance de calculs
=> Objectif : Comprendre les grands principes du codage de canal
et être sensibilisé aux problématiques liées à l’implantation de
systèmes de com. num.
Plan du cours
• Cours 1 et 2 : Introduction au codage de canal
• Cours 3 et 4 : Etude de l’algorithme de Viterbi et
définition de l’architecture du décodeur
• TP 1, 2 et 3 : Implantation de la chaîne d’émission de la
norme DVB-S (scrambler, entrelaceur, codeur RS, codeur
convolutif)
• TP 4 : Implantation de l’algorithme de Viterbi (simu
seulement)
Evaluation
• Examen écrit :
➔ Durée 1h sans documents
➔ portant sur la partie cours seulement
➔ 50% de la note
• Contrôle continu:
➔ code source commenté et documenté
➔ assiduité, comportement
➔ 50% de la note
TP / Projet
• Interaction forte avec le module EN310 (G. Ferré et R.
Tajan)
• Déporter certains traitements de Matlab sur FPGA
(Co-Simulation / prototypage)
• Objectif final : interfacer FPGA + Matlab + GNU Radio
Plan
• La couche physique d’un système de communications
numériques
• Le codage de canal
• Paramètres élémentaires d’un code correcteur d’erreurs
• Le code de Hamming
• Les codes non-binaires
• Les codes convolutifs et l’algorithme de Viterbi
• Autres fonctions en bande de base
Les systèmes de communications
numériques, quelques standards
• Téléphonie cellulaire 3GPP-LTE, 5G
• Réseaux d’accès large bande sans fil WIMAX
• Modems ADSL DSLforum
• Réseaux locaux sans fil WIFI
• Télévision numérique par satellite DVB-S
• Télévision numérique terrestre DVB-T
• Connexion sans fil Bluetooth
• Réseaux de capteur ZigBee
Contexte : le modèle de communication
entre les systèmes
Le modèle OSI (Open System Interconnection) Interconnexion des Systèmes Ouverts
développé par l’ISO (International Standard Organization)
Hôte A Hôte B
données
Couche 7 : Application Couche 7 : Application
couches
Couche 6 : Présentation données Couche 6 : Présentation
hautes dites
applicatives Couche 5 : Session données
Couche 5 : Session
segments
Couche 4 : Transport Couche 4 : Transport
couches Couche 3 : Réseau paquets
Couche 3 : Réseau
basses dites
de transport Couche 2 : Liaison trames Couche 2 : Liaison
Transmission
8
Contexte : la couche physique
Définition de la couche physique :
Ensemble des moyens mécaniques, électriques, fonctionnels et procéduraux nécessaires à
l’activation/désactivation et au maintien des connexions physiques (transmission de bits entre deux entités
de liaison de données).
9
Éléments d’une chaîne
de communications numériques
Schéma de principe d’une transmission numérique point à point
Emetteur
Canal de
transmission
10
Éléments d’une chaîne
de communications numériques
La chaîne d’émission: mise en forme de l’information
Emetteur
émission
Codeur Chiffreme Codeur Modulate
du signal
de source nt de canal ur
physique
Transformation Transformation du
cryptologique du message
message en signal
Compression de Ajout de la temporel/fréquentiel
l’information redondance pour
utile fiabiliser la
transmission
Éléments d’une chaîne
de communications numériques
Le canal de transmission: support physique de la transmission
12
Éléments d’une chaîne
de communications numériques
Le canal de transmission: différents types de transmission
13
Éléments d’une chaîne
de communications numériques
La chaîne de réception : récupération de l’information
Dé-
Décodeur Dechiffreme Décodeur réception
nt
modulate
de source de canal signal
ur
Récepteur
15
Plan
• La couche physique d’un système de communications
numériques
• Le codage de canal
• Paramètres élémentaires d’un code correcteur d’erreurs
• Le code de Hamming
• Les codes non-binaires
• Les codes convolutifs et l’algorithme de Viterbi
• Autres fonctions en bande de base
Qualité d’une transmission numérique
A la réception, le signal reçu est différent du signal émis car :
• Le canal déforme le signal émis (réponse fréquentielle non constante)
• Le bruit ajoute des perturbations sur le signal reçu
La qualité d’une transmission est mesurée par le Taux d’Erreur Binaire (TEB)
TEB
17
Qualité d’une transmission numérique
18
Types d’erreurs
19
Le codage de canal
Solutions:
1/ Augmenter la puissance d’émission (énergivore)
2/ Réduire le bruit sur le canal de transmission (pas toujours possible)
3/ Rajouter de l’information numérique avant de transmettre le message: codage de
canal
Questions:
• Quel type d’information ajouter ? Comment ajouter de l’information ? Encodage
• Combien d’information faut-il ajouter ? Rendement de codage
• Comment tirer bénéfice de l’encodage à la réception ? Algorithmes de décodage
• …
20
Exemple : Communications optiques
L’ajout d’un code correcteur d’erreur permet de « gagner » 3dB (Gain de codage).
Comment les dépenser ?
• Réduire la puissance d’émission par deux tout en conservant le même Taux
d’erreur binaire
• Réduire le nombre de répéteurs sur la transmissions (réseaux de transports)
• …
21
Autre exemple le codage convolutif
23
Schéma classique de codage de canal
Encodeur en
Encodeur
bloc Entrelacement
convolutif
Reed-Solomon
Canal
Depuis les années 90: Avénement du décodage itératif: Turbo codes, Codes
LDPC
24
Emetteur norme DVB-T
Codage Entrelaceur
Scrambler Codeur RS
source symboles
(LFSR)
Codeur
convolutif
Entrelaceur
bits
Code BCH
pour
protéger les
pilotes
25
Emetteur norme DVB-S
26
Quel schéma de codage de canal ?
27
Décision dure versus décision souple
Canal Gaussien + BPSK:
28
Détection ou correction ?
29
Type de codes: les codes en blocs
Binaires ou non-binaires
K N K : dimension du code
Codeur en bloc N : taille du code
R=K/N :rendement du code
d : distance minimum du code
t : pouvoir de correction du code
Les données sont encodées par bloc de K données.
Il n’y a pas d’effet mémoire entre blocs. L’encodage de chaque bloc de données est
indépendant des autres.
Exemple:
Code de Hamming (7,4,1) : Code binaire N=7, K=4, t=1, R=0,57
RS(255,239,8) : Code non-binaire N=255, K=239, R=0.937, t=8
Code à répétition (3,1): on répète le message à envoyer 3 fois. A la réception on
effectue un vote à majorité pour chaque bit: R=1/3, t=1
30
Type de codes: les codes convolutifs
Codes convolutifs
Pour chaque bit d’information (ici data input), on génère 1 ou plusieurs bits en
sorties (ici X et Y). Les sorties dépendent du bit d’information courant et des L-1 bits
d’information précédents. L est appelé la longueur de contrainte du code. Ici, L=7.
31
Quizz time !
http://www.socrative.com/
Student login
Exemples:
• B={0,1} est l’alphabet binaire
• T={-1,0,+1} est l’alphabet ternaire
• X={00,01,…,FF} est un alphabet M-aire à 8bits par symbole.
• Les ECC sont habituellement définis sur un alphabet binaire ou bien sur un
alphabet M-aire avec M=2Q . Q est le nombre de bits par symbole.
Exemples :
• Le code de Hamming (7,4) est défini sur l’alphabet binaire. Il contient 2 4=16
mots de codes.
• Le code Reed-Solomon (15,13) est défini sur un alphabet à 16 éléments. Ce
code contient donc 1613=4,5.1015 mots de codes
34
Rendement de codage
Définition: Le rendement est le rapport entre la quantité d’information utile et la
quantité d’information transmise.
Exemple :
• R=2/3 signifie que pour transmettre 2 bits d’information utile, on transmet
effectivement 3 bits sur le canal.
Exemple:
• Rendement du code BCH(127,120) ?
• Rendement du code RS(255,239) ?
35
Encodage systématique
Définition: L’encodage est l’opération qui consiste à associer un mot de code c à
un message m.
NB: La capacité de correction d’un code dépend de l’ensemble des mots de codes
et non pas de la manière dont on associe un vecteur d’information à un mot de
code.
• C={000, 111}
Code à répétition, n=3, R=1/3.
• C={000,011,101,110}
Code de parité. n=3, R=2/3.
37
Distance de Hamming et distance minimale
38
Capacité de détection d’un code
Supposons qu’un code en bloc est utilisé pour faire de la détection
d’erreurs.
• Si le mot reçu n’est pas un mot de code, il est possible de détecter
l’erreur.
• Si le mot reçu est un mot de code mais n’est pas celui qui a été
transmis, il est impossible de détecter l’erreur.
39
Capacité de correction d’un code
40
Le décodage
41
Quizz time !
http://www.socrative.com/
Student login
Les équations de parités peuvent être décrites sous la forme d’une matrice de parité:
44
Code de Hamming: encodage
45
Code de Hamming: décodage
Chaque bit du mot de code est présent dans une ou plusieurs
équations, donc tous les erreurs de 1 bit sont détectables.
Chaque bit est vérifié par un ensemble unique d’équation,
donc la position de l’erreur est déterminée en regardant quelle
équation de parité n’est pas respectée.
Exemple: Une erreur sur c6 induit une parité fausse sur les équations 2 et 3.
Définition: le syndrome S=[s0 s1 s2] d’un vecteur reçu r est le vecteur binaire qui spécifie
quelles équations de parités ne sont pas respectées.
Si S=0, le décodeur suppose qu’il n’y a pas eu d’erreur. C’est la conclusion la plus
probable mais cela ne veut pas dire qu’il n’y a pas eu d’erreurs de transmissions.
Dans le cas contraire, le syndrome permet d’identifier la position de l’erreur.
46 Exemple: décoder le mot r=[1 0 1 0 1 0 0]
Code de Hamming: distance minimum
Le pouvoir de correction des codes de Hamming est t=1.
Quelle est la distance minimale de ces codes de Hamming ?
Quel est la capacité de détections des codes de Hamming ?
47
Plan
• La couche physique d’un système de communications
numériques
• Le codage de canal
• Paramètres élémentaires d’un code correcteur d’erreurs
• Le code de Hamming
• Les codes non-binaires
• Les codes convolutifs et l’algorithme de Viterbi
• Autres fonctions en bande de base
Code de parité non-binaire
L’équation de parité non-binaire suivante permet de détecter une seule erreur dans un mot
de n symboles:
Le syndrome indique donc l’amplitude de la valeur qui doit être retranchée pour obtenir le
mot de code.
49
Code de parité non-binaire
Une deuxième équation est nécessaire pour identifier la position de l’erreur.
Un choix d’équation qui fonctionne:
Exemple: Supposons que nous travaillons sur des symboes sur 4 bits avec l’addition modulo
16. Pour n=15, la matrice de parité est:
50
Décodage d’un code non binaire
Supposons que le canal introduit une erreur unique de magnitude ei à la position i. Le
syndrome S=[s0,s1] peut s’exprimer de la façon suivante:
Rappel:
Les codes de Reed-Solomon ont des symboles dans GF(Q) et ont une taille n=Q-1.
Chaque ligne de H représente les puissances successives d’éléments du corps GF(Q).
Quand les éléments sont choisis soigneusement, chaque équation de parité supplémentaire
augmente la distance du code de 1.
Exercice:
1. Quelle est la capacité de correction d’un code RS(n,k) ?
2. On souhaite utiliser un code RS capable de corriger 4 symboles pour un rendement de
codage supérieur à 0,9. Déterminer sa dimension k et sa taille n.
3. Combien de bits sont nécessaires pour représenter les symboles d’un code RS(n,k)
4. Combien de bits peut corriger un code RS(255,239) ?
5. Avec une modulation BPSK, combien de symboles canal sont nécessaires pour
transmettre un mot de code RS(255,239).
52
Encodeur Reed-Solomon
53
Plan
• La couche physique d’un système de communications
numériques
• Le codage de canal
• Paramètres élémentaires d’un code correcteur d’erreurs
• Le code de Hamming
• Les codes non-binaires
• Les codes convolutifs et l’algorithme de Viterbi
• Autres fonctions en bande de base
Code convolutif
Longueur de contrainte K=3 (1
Bit à bit à transmettre + 2 bits d’
0 1
transmettre état)
55
Code convolutif
Longueur de contrainte K=3 (1
Bit à bit à transmettre + 2 bits d’
0 1
transmettre état)
56
Code convolutif
X1
Les sorties X1 et X2
représentent la signature des
Bit à transmettre 0 1 transitions du bit à transmettre
(redondance => rendement
1/2)
X2
00 0 0
0 0 0 0
11
11 0 1
0 1 00 0 1
1 0
10
1 0 01 1 0 1 1
01
10 X1 X2: 00 10 11
1 1 1 1
BIT 1 0 0
57
Entrée pondérée (souple, soft)
58
Métriques de branche
Instant t Instant t+1
00 Distance Euclidienne
00 00
11 Distance de Manhattan
11
01 00 01
10
10 01 10
01
10
11 11
59
Décodage de Viterbi
• La recherche de la séquence émise nécessite le calcul des
métriques de branches et métriques de noeuds
Métrique de branche
= Distance(Y1Y2 reçue; Y1Y2 attendu)
MNA 00 0 MNC
2
11
MNB
Y1Y2 reçu = 00 Métrique de nœud
= Min(MNA+0,MNB+2°
60
Exemple
• Séquence d’information U=10000… Instant t Instant t+
• Séquence encodée X=00,10,11,00,00,00,…
• Séquence reçue Y=(5,1); (7,2); (6,7); (1,2); (2,3); 00
00 00
11
t=1 11
01 00 01
(y1,y2)=(5,1)
10
M00=6 10 01 10
M01=11 01
M10=3 10
M11=8 11 11
0 6 6
8
0 8 3
6
3
0 6
11 11
0 3 3
61
Exemple
• Séquence d’information U=10000…
• Séquence encodée X=00,10,11,00,00,00,…
• Séquence reçue Y=(5,1); (7,2); (6,7); (1,2); (2,3);
t=1 t=2
(y1,y2)=(5,1) (y1,y2)=(7,2)
M00=6 M00=9
M01=11 M01=12
M10=3 M10=2
M11=8 M11=6
0 6 6 9 9
8 6
0 8 3 6 8
6 9
3 2
0 6 12
11 11 12 12
0 3 3 2 5
62
Exemple
• Séquence d’information U=10000…
• Séquence encodée X=00,10,11,00,00,00,…
• Séquence reçue Y=(5,1); (7,2); (6,7); (1,2); (2,3);
t=1 t=2 t=3
(y1,y2)=(5,1) (y1,y2)=(7,2) (y1,y2)=(6,7)
0 6 6 9 9 13 14
8 6 6
0 8 3 6 8 6 11
6 9 13
3 2 8
0 6 12 15
11 11 12 12 6 6
0 3 3 2 5 8 13
63
Exemple
• Séquence d’information U=10000…
• Séquence encodée X=00,10,11,00,00,00,…
• Séquence reçue Y=(5,1); (7,2); (6,7); (1,2); (2,3);
t=1 t=2 t=3 t=4
(y1,y2)=(5,1) (y1,y2)=(7,2) (y1,y2)=(6,7) (y1,y2)=(1,2)
0 6 6 9 9 13 14 3 17
8 6 6 11
0 8 3 6 8 6 11 11 19
6 9 13 3
3 2 8 8
0 6 12 15 14
11 11 12 12 6 6 6 6
0 3 3 2 5 8 13 8 21
64
Exemple
A chaque mise à jour des métriques d’états on ne conserve que la décision
(branche la plus probable).
N N S S N S N N N
S N N S S S S N N
S S S N N S N N N
65
Exemple
Pour retrouver la séquence la plus probable, il suffit de remonter le chemin à partir
de la destination, en considérant les décisions aux niveau des noeuds
N N S S N S N
S N N S S S S
S S S N N S N
A T+6, nous n’avons pas encore assez d’information pour prendre une
décision sur les premiers bits transmis.
66
Exemple
Une fois que le chemin à convergé vers un chemin unique on peut décoder à l’aide
du trellis
N N S S N S N N N
S N N S S S S N N
S S S N N S N N N
1 0 0 0 0 0 0 ? ?
Etat (t) Etat (t+1)
0 0 0 0 Bit à transmettre
0 1 0 1 à0
1 0 1 0 Bit à transmettre
1 1 1 1 à1
67
Architecture du décodeur
Symboles Bits
d’entrée décodés
Métriques de Métriques de Gestion du
branches noeuds chemin survivant
Points critiques:
Puissance de calcul pour les métriques de nœuds
Accroissement infini des métriques de nœuds
Gestion de la mémoire survivante
68
Calcul des métriques de branches
(distance Euclidienne)
69
Calcul des métriques de branches
(distance de Manhattan)
Additionneurs uniquement !
Performances de décodage équivalentes
70
Calcul des métriques de noeuds
MN0
MB00 MN0
10 2 Additionneurs
MB 1 Comparateurs
Opérateur
MB ACS
MN1 MB 0 MN1 1 Sélecteur (MUX)
12 2
1
MB2 31
MN2 B MN2
M
MB
23
MB33 MN3=Min(MN2+MB23; MN3+MB33)
MN3 MN3
71
Opérateurs ACS
Additionneurs Comparateur
MNA
+
MBAC
MNB
+
MBBC
MNC
Sélectionneur
72
Interconnection des ACS
ACS0 Reg
MN0 MN0
ACS1 Reg
MN1 MN1
MN2 MN2
ACS2 Reg
MN3 MN3
ACS3 Reg
73
Dynamique des métriques de noeuds
X ≤ MN ≤ X + 3M
X ≤ MN ≤ X+2M X ≤ MN ≤ X + 3M
X ≤ MN ≤ X+M X ≤ MN ≤ X + 3M
X ≤ MN ≤ X+2M X ≤ MN ≤ X + 3M
X ≤ MN ≤ X + 3M
X X ≤ MN ≤ X+2M X ≤ MN ≤ X + 3M
X ≤ MN ≤ X+M X ≤ MN ≤ X + 3M
X ≤ MN ≤ X+2M X ≤ MN ≤ X + 3M
74
Rééchelonnage
Exemple: M=15 => Max-Min=45
La métrique de nœud est codée sur 7 bits. Quand les
MSBs sont à 1 ils sont tous remis à 0 (rééchelonnage)
128
45 max
64
75
Gestion du chemin survivant
Après une remontée sur une longueur L (typiquement 6xK), le chemin
parcouru devient indépendant du nœud initial: c’est le chemin survivant
Bit 0
t=L
Bit 1
t=L+1
Bit 2
t=L+2
76
Echange de registres
• L’idée est de mémoriser les chemins survivants dans des
bancs de registres.
• Chaque registre a une profondeur de L.
• On dispose d’un registre par état.
• Le registre Ri contient le chemin survivant partant du
nœud i
77
Echange de registres
• L’idée est de mémoriser les chemins survivants dans des
bancs de registres.
• Chaque registre a une profondeur de L.
• On dispose d’un registre par état.
• Le registre Ri contient le chemin survivant partant du
nœud i
0 1 1 0 1
Résultats
0 0 0 1 0
identiques
0 1 1 0 1
0 1 1 1 1
80
Algorithmes de décodage des codes
convolutifs
81
Autres codes
Codes BCH (protection des pilotes dans DVB)
- version binaire des codes RS
- extension du code de Hamming
- faible complexité d’encodage et de décodage
82
Plan
• La couche physique d’un système de communications
numériques
• Le codage de canal
• Paramètres élémentaires d’un code correcteur d’erreurs
• Le code de Hamming
• Les codes non-binaires
• Les codes convolutifs et l’algorithme de Viterbi
• Autres fonctions en bande de base
Entrelacement
ThisIsAnExampleOfInterleaving... ThisIsAnExampleOfInterleaving...
ThisIs______pleOfInterleaving... TIEpfeaghsxlIrv.iAaenli.snmoten.
TIEpfe_____Irv.iAaenli.snmoten.
T_isI_AnE_amp_eOfInterle_vin_...
Entrelacement:
- Permet de disperser les erreurs
- Permet de compenser en partie les effacements et évanouissement
- Augmente la latence du système
84
Comment corriger des bursts d’erreurs
• Une solution est d’utiliser le principe d’entrelacement. Ceci permet de répartir l’impact
d’un burst d’erreurs sur plusieurs mots de code:
Un burst de 45bits affecte au plus 5 bits de chacun des 10 mots de code. On peut donc
corriger ce type d’erreurs avec un code t=5.Ce code requiert 50 bits de parités pour
chacun des mots de 1000 bits donc 500 bits de parité au total.
L’alternative est d’utiliser un code non binaire qui corrige des symboles contenant
plusieurs bits. A code RS avec 10 bits par symboles fait une taille n=210-1 symboles soit
10230 bits. Avec 500 bits de parités, on peut corriger n’importe quel motif de 25 erreurs.
En particulier, un burst de 45 bits affecte au plus 6 symboles donc le code peut corriger
jusqu’à 4 bursts dans le même mot de code.
85
Linear Feedback Shift Registers (LFSR)
• Génération efficace de vecteurs de test
• Flip-Flops + quelques XORs
• Plus efficace qu’un compteur (moins de portes, fréquence plus élevée)
• CRC
• Encodeur Reed-Solomon / BCH
• Génération de séquences pseudo-aléatoire