l'algorithme de viterbi

13
L'algorithme de Viterbi Modélisation d'une transmission numérique Codage de canal Codage convolutif Algorithme de Viterbi Étude de la généricité de l'algorithme de Viterbi Modélisation d'une transmission numérique Dans les systèmes de transmission de données, la probabilité d'erreur est fonction du rapport signal à bruit Eb/N0 du canal à l'entrée du récepteur. L'évolution des télécommunications s'accompagne d'une demande toujours plus grande de la qualité de transmission. Il faut pour cela diminuer le taux d'erreur et par conséquent accroître le rapport signal à bruit. L'augmentation de la puissance du signal d'émission et/ou la diminution du facteur de bruit du canal sont des solutions envisageables. Elles engendrent cependant des problèmes de coût ou de technologie. L'autre solution est basée sur l'utilisation des codes correcteurs qui permettent d'augmenter les performances de transmission tout en conservant le meilleurs compromis possible entre la bande passante occupée et la puissance émise. Un système de transmission numérique peut être schématisé de la façon suivante : Figure 1: Communication numérique

Upload: dammakhajer

Post on 24-Jun-2015

229 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: L'Algorithme de Viterbi

L'algorithme de Viterbi Modélisation d'une transmission numérique Codage de canal Codage convolutif Algorithme de Viterbi Étude de la généricité de l'algorithme de Viterbi

 

Modélisation d'une transmission numérique

Dans les systèmes de transmission de données, la probabilité d'erreur est fonction du rapport signal à bruit Eb/N0 du canal à l'entrée du récepteur.  L'évolution des télécommunications s'accompagne d'une demande toujours plus grande de  la qualité de transmission.  Il faut pour cela diminuer le taux d'erreur et par conséquent accroître le rapport signal à bruit. L'augmentation de la puissance du signal d'émission et/ou la diminution du facteur de bruit du canal sont des solutions envisageables. Elles engendrent cependant des problèmes de coût ou de technologie. L'autre solution est basée sur l'utilisation des codes correcteurs qui permettent d'augmenter les performances de transmission tout en conservant le meilleurs compromis possible entre la bande passante occupée et la puissance émise.

Un système de transmission numérique peut être schématisé de la façon suivante :  

   Figure 1: Communication numérique

Page 2: L'Algorithme de Viterbi

Trois opérations sont  à effectuer à l'émission.

Le codage de source permet de minimiser la quantité d'information nécessaire pour la transmission du message. La compression de données est un exemple de codage de source.

Le codage de canal sert  à lutter contre les perturbations apportées par le support de la transmission en remplaçant le message à transmettre par un message moins vulnérable, en codant ce message par un code convolutif par exemple. L'algorithme de Viterbi est une technique utilisée pour le décodage de ces codes.

La modulation permet d'adapter les caractéristiques du signal à celles d'un canal. Les modulations les plus couramment utilisées sont de type modulation de fréquence ou modulation de phase.

Le canal définit le support de transmission. Son imperfection provoque l'apparition d'erreurs sur le message transmis. Par exemple pour les communications par satellite le canal est modélisé par un processus gaussien caractérisé par sa densité spectrale de bruit N0.

À  la réception les opérations inverses sont à effectuer avant de fournir le message au destinataire.  

Codage de canal

Page 3: L'Algorithme de Viterbi

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.

Il y a deux grandes familles de code.

le codage en bloc.  Le message décomposé en blocs de K bits, est remplacé par un bloc de N bits comprenant directement les K bits d'information et N-K bits de redondance calculés à partir des bits d'information, le codage d'un bloc se faisant indépendamment des précédents.

le codage convolutif.  À K bits d'information, le codeur associe N bits codés, mais contrairement au cas précédent. le codage d'un bloc de K bits dépend non seulement de ce bloc mais également des blocs précédents.  

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.

Le codeur est constitué de m registres à décalage de K éléments binaires. Une logique combinatoire constituée de N générateurs linéaires de fonctions algébriques génère les blocs de N éléments binaires fournis par le codeur.

figure ici

La longueur du registre à décalage (m+1) définit la longueur de contrainte. Ce paramètre correspond au degré de mémoire introduit sur les bits de données. Plus ce paramètre est grand, plus le code est puissant, mais plus le décodeur est complexe. La logique combinatoire est

Page 4: L'Algorithme de Viterbi

caractérisée par ses polynômes générateurs qui explicitent les positions du registre à décalage prises en compte dans le calcul des symboles. Les principaux codes utilisés sont de la forme R=1/N (K=1). Ce type de code présente un rendement assez faible. Des codes de rendement plus important en sont dérivés; ces codes sont dits poinçonnés car ils sont obtenus en supprimant certains symboles générés par le code 1/N. La loi de dépoinçonnage se synthétise par une matrice de dépoinçonnage.

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 : 1 1 0B : 1 0 1

"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:  

Page 5: L'Algorithme de Viterbi

 Algorithme de Viterbi

Pour expliquer l'algorithme nous allons prendre un exemple simple: longueur de contrainte, K=3 rendement : r = 1/N = 1/2 polynômes générateurs : A = 7, B=5

   Figure 4: Codeur convolutif, K =3

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

Page 6: L'Algorithme de Viterbi

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

Page 7: L'Algorithme de Viterbi

Le décodage de Viterbi se décompose en trois opérations.  

Le calcul des métriques de branches consiste à calculer à la réception de n symboles (pour un rendement de 1/n)  un nombre représentant la vraisemblance des symboles reçus par rapport aux 2n symboles possibles. Ces 2n nombres sont les Métriques de Branches. La vraisemblance s'exprime en général par le calcul de la distance de Hamming (nombres de bits différents bit à bit). En reprenant l'exemple précédent (K=3, r=1/2) avec des symboles exprimés sur 3 bits en décision douce: les symboles reçus A=6 et B=3, les 4 Métriques de Branches s'exprime par la formule suivante:

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

Page 8: L'Algorithme de Viterbi

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.  

Paramètre de l'algorithme de Viterbi

Caractéristiques fixées

Le code convolutif

Un des codes convolutifs décrit précédemment est devenu un standard: 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:

faible débit en dessous de 2 Mbits/sec moyen débit environ 10 Mbits/sec haut débit au dessus de 10 Mbits/sec

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

Page 9: L'Algorithme de Viterbi

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).  

Champs des métriques de branche

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.

Champs des métriques de chemin

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.

Renormalisation et choix du noeud de départ

Plusieurs possibilités pour effectuer la renormalisation:  

renormaliser lorsque les métriques dépasse un seuil fixe, en soustrayant ce seuil renormaliser à chaque calcul des métriques de branche, en soustrayant la métrique

minimale d'autres méthodes sont envisageables

Suivant la fréquence de fonctionnement désirée il est possible ou non d'implémenter le calcul de la métrique minimale (64 comparaisons entre 2 nombres). Sinon on impose un noeud optimal de départ.

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.

Architecture du bloc ACS

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.

Page 10: L'Algorithme de Viterbi

Ensuite suivant le nombre d'ACS choisi il faut les placer de manière optimale pour limiter la longueur des fils d'interconnexions.

Choix de la technique de remontée des survivants

Plusieurs techniques sont possibles suivant la fréquence de fonctionnement désirée: Register Exchange, échange de registres, qui nécessite de nombreux échanges de

données entre les registres et ne peut donc s'appliquer que pour des fréquences peu élevées et nécessite une surface d'implémentation importante dès que la fréquence augmente.

Trace-Back, chaînage arrière, son intérêt est sa faible complexité de par l'utilisation d'une RAM. Mais le nombre de lectures écritures séquentielles important limite, là encore, la fréquence de fonctionnement à des fréquences intermédiaires de l'ordre de 20Mhz.

Combinaison des deux méthodes précédentes, ce mode permet de traiter de fréquences plus importantes tout en limitant la surface.

 

Généricité de l'algorithme de Viterbi