Professional Documents
Culture Documents
Codage de canal
Le principe de base du codage de canal consiste à remplacer le message à transmettre par un
message plus long qui contient de la redondance. Sans redondance, chaque donnée du
message est indispensable à la compréhension du message entier. Toute erreur dans une partie
du message est donc susceptible de changer la signification du message. L'objectif de la
redondance est de faire en sorte que les erreurs ne compromettent pas la compréhension
globale du message.
Du fait de l'adjonction d'une redondance, le message effectivement transmis est plus long. Un
code se caractérise par son rendement R. Si le codeur génère N bits à partir de K bits
d'information, le rendement R vaut K/N.
Les données générées par le codeur sont appelées des symboles. Lors du décodage, les
symboles reçus peuvent être des bits ou des mots binaires. Dans le premier cas, le système est
dit à décision dure, dans le second à décision douce. Un système à décision douce présente de
meilleures performances qu'un système à décision dure, mais au détriment d'une complexité
plus grande du décodeur de Viterbi.
Les codes convolutifs permettent une correction grossière en atteignant des taux d'erreurs de
10-6. Par contre les codes en blocs permettent une correction plus fine en atteignant pour
certaines applications des taux d'erreurs de 10-9. Ces deux codes sont souvent associés pour
obtenir de très bons taux d'erreurs. Le code en bloc constitue un complément idéal au code
convolutif dans les transmissions par satellite par exemple.
Codage convolutif
Chaque bloc de N éléments binaires transmis (aussi appelés symboles) dépend non seulement
du bloc de K éléments présents à son entrée mais aussi des m blocs précédents.
figure ici
Par exemple le code de rendement 3/4 est obtenu comme suit: soient A et B, les deux
symboles générés à partir d'une donnée D par un code standard R=1/2 et la matrice de
dépoinçonnage suivante:
A:110
B:101
"0" signifiant que le symbole n'est pas pris en compte.
Pour trois bits consécutifs "Dn, Dn+1, Dn+2", le codeur standard génère six symboles dont
seulement quatre sont transmis ( An, Bn, An+1, Bn+2).
Le pouvoir de correction d'un code convolutif est défini par son gain de codage par rapport à
un système non codé. Il dépend à la fois du type de canal de transmission et du type de
modulation utilisée. La figure suivante donne une courbe de gain de codage type:
Algorithme de Viterbi
Pour expliquer l'algorithme nous allons prendre un exemple simple:
Il existe trois méthodes principales pour représenter les code convolutifs : diagramme en
arbre, en treillis et diagramme d'états.
La représentation en treillis est la plus utilisée car elle tient compte du temps et du fait que le
fonctionnement du codeur est périodique, c'est à dire que quelque soit l'état initial du codeur,
le motif se répète après m+1 décalages.
Figure 5: Treillis, K =3
Chaque noeud représente un état des bits In/In-1 et chaque arc une transition entre un état et
un autre. Une flèche pointillée correspond à In+1='0' et une flèche pleine à In+1='1'. Les deux
nombres entre parenthèses sont les symboles (AB) associés à l'état du registre. Une suite de
branches passant par les différents noeuds du treillis définit un chemin. Dans le treillis pour
aller d'un noeud de départ à un noeud d'arrivée, il existe une infinité de chemins mais une
séquence S(i) ne décrit qu'un seul chemin C(i). Si la séquence reçue S'(i) est perturbée et
contient quelques erreurs le chemin C'(i) sera différent du chemin attendu C(i). Ce chemin
C'(i) sera d'autant plus proche du chemin C(i) que le nombre d'erreurs sera faible.
L'algorithme de Viterbi est une méthode qui permet d'estimer la séquence émise en mesurant
l'écart du chemin associé aux symboles reçus par rapport à chaque chemin possible. Le
chemin ayant le plus faible écart sera considéré comme le plus représentatif de la séquence
émise réellement et permettra de la reconstituer.
Décodage de Viterbi
Le décodage de Viterbi se décompose en trois opérations.
soit
La métrique la plus faible est MB10, ce qui signifie que le couple de symboles (10) est
le plus probable. Cela correspond à l'intuition car A représentant un '1' correct et B un
'0' bruité.
• Le calcul des métriques de chemin. Cette opération permet de calculer quel état du
registre à décalage (quel noeud) est le plus probable. Pour chacun des 2k-1 noeuds du
treillis, une nouvelle métrique Métrique de Chemin est calculée en tenant compte des
métriques de chemin du cycle précédent et des métriques de branches courantes. Cela
représente les probabilités cumulées pour chaque noeud de faire partie de la séquence
émise.
En effet, à chaque noeud arrive deux branches venant de deux noeuds antécédents. En
reprenant le treillis plus avant, le noeud (01) à T=3 possède deux antécédents: (10) par
la branche a et (11) par la branche b. A chacune de ces branches correspond une
métrique de branche MB(a) et MB(b) et à chacun des noeuds correspond deux
métriques de chemin MC10 et MC11 calculées à T=2. On supposera que toutes les
métriques de chemin sont mises à 0, à T=0. La métrique de chemin MC01 aura pour
valeur la plus petite des deux valeurs suivantes:
MC11(T=2) + MB(a) et MC11(T=2) + MB(b)
Avant de sélectionner cette métrique la plus faible, il nous faut faire l'addition des
métriques de chemin et des métriques de branche puis la comparaison des deux
métriques. D'où le nom d'ACS ( Addition Comparaison et Sélection) pour ce bloc.
La décision prise lors du choix entre les deux branches est conservées dans une mémoire.
Cette décision se réduit à un bit appelé survivant. Ce survivant servira à reconstituer la
séquence émise.
• La remonté des survivants. Cette opération consiste à effectuer la sortie des bits
décodés en "remontant" la mémoire des survivants par une méthode de chaînage
arrière. Cette remonté permet, en partant d'un noeud de référence, de retrouver tous
les survivants ayant abouti à ce noeud, et ainsi de reconstituer la séquence émise. Ce
troisième processus peut se dérouler en parallèle avec les deux premiers.
Une perturbation provoque un écart du chemin estimé par rapport au chemin réel. Si l'on
décode le bit correspondant aux symboles entrés au même cycle, il sera erroné. Il est donc
nécessaire d'attendre que l'influence du bruit sur les métriques de chemin soit atténuée, ce qui
est possible car le bruit n'est pas corrélé. En d'autres termes, il faut attendre que tous les
chemins aboutissant aux noeuds traités à un instant donné aient convergé vers le chemin
correct. En théorie le délai d'attente est infinie. En pratique, il est tronqué à une valeur appelée
Longueur de Troncature (LT) qui dépend du rendement du code et du type de canal. Ainsi,
à l'instant T=n est décodée la donnée correspondant aux symboles entrés à T=n-LT.
Le code convolutif
• longueur de contrainte : 7
• rendement : 1/2
• polynômes générateurs : A = 133(1011011); B=171(1111001)
Les rendements poinçonnés les plus utilisés ( 2/3, 3/4, 5/6, 7/8 ) sont dérivés du rendement
1/2.
Fréquence de fonctionnement
Le débit à traiter est un paramètre fondamental car il fixe en grande partie l'architecture du
décodeur de Viterbi et dépendra de l'application. Des applications couvrent différentes
gammes de débit:
La technologie
Les technologies actuelles de 0.5 micron voir 0.25 micron nous permettent sans problème de
faire fonctionner un circuit à des fréquences de l'ordre de 100 Mhz.
Paramètres à évaluer
Champ des symboles d'entrée
La quantification des symboles en entrée du Viterbi (e bits) si elle est trop importante fait
augmenter la complexité du Viterbi. Des résultats satisfaisants sont obtenus avec des
symboles de 4 bits en entrée. Lorsque l'on passe à 3 bits on perd environ 0,5 dB (simulation
sur un canal gaussien et rendement 1/2).
Le champ des métriques de branche est fonction de celui des symboles en entrée mais on peut
le réduire par compression. Cela est intéressant pour certain cas, car permet de limiter la taille
des ACS et de conserver de bonnes performances. On essaie de rester pour des échantillons
d'entrée sur 4 bits à des métriques de branches sur 4 bits. Pour cela suivant le canal on pourra
générer une ROM optimale.
Directement lié au champ des métriques de branches, le champ des métriques de chemin peut
être réduit durant le calcul dans les ACS sans altérer les performances. Par exemple, pour b=4
bits (champ des MB), si l'on passe de c= 6 à 5 bits (champ des MC), on perd 0.2 dB en
rendement 1/2.
Longueur de troncature
Sa longueur dépend de la façon dont on choisit le noeud de départ (optimal ou non), et elle
devra aussi être augmentée pour les codes poinçonnés. Là aussi les valeurs adoptées
dépendent des performances recherchées. Il pourra être utile de rendre programmable ce
paramètre, par exemple plusieurs valeurs de longueur de troncature pour des rendements
différents.
Ce bloc, qui constitue la majeure partie du décodeur, demande une étude optimale de son
architecture. Dans un premier temps en fonction de la fréquence de fonctionnement une mise
en parallèle des processeurs élémentaires ACS sera nécessaire pour implémenter les calculs.
Les traitements séries sont possibles pour de faible fréquences et par la suite 16 ou 32 ACS
double en parallèle permettent de traiter les fréquences plus élevées.
Ensuite suivant le nombre d'ACS choisi il faut les placer de manière optimale pour limiter la
longueur des fils d'interconnexions.