Brevet FR2616986A1 — publié le 19881223

Dispositif de décodage par svndromes de messages en code convolutionnel L'invention, à laquelle a collaboré Le Laboratoire A.A.E.C.C./LSI de l'Université Paul Sabatier, concerne les dispositifs de restitution de messages codés suivant un code convolutionnel non systématique et elle trouve une application particulièrement importante dans les systèmes de diffusion de données par satellite, dont l'émetteur envoie le même message sous la même forme vers des stations réceptrices réparties dans une zone de couverture étendue. Une norme a été établie pour la diffusion de messages par satellite suivant un code convolutionnel non systématique ayant une longueur de contrainte K = 7 et un rendement de codage (ou taux de redondance) r = 1/2. Pour trouver une définition d'autres termes employés ici, on pourra se reporter aux ouvrages traitant des codes K et r et convolutionnels, par exemple à l'article "Convolutional Codes" dans "Error Control Coding - Fundamentals and applications" par Shu Lin et autres, Prentice Hall, 1979. La diffusion s'effectue avec modulation de phase à quatre états, souvent désignée par l'abréviation MDP4 ou QPSK, d'une porteuse. Les paramètres de diffusion sont choisis de façon que les stations de réception situées en bord de la zone de couverture permettent de restituer les messages de façon satisfaisante à condition qu'elles utilisent un décodeur performant, ayant un fort gain de codage. On utilise notamment dans ce but des décodeurs utilisant un algorithme faisant appel à la distance libre minimum dfreet c'est-à-dire l'algorithme de Viterbi ou un algorithme séquentiel. En contrepartie de leur gain de décodage élevé, supérieur à 5 dB pour pe = 10-5 les décodeurs mettant en oeuvre ces algorithmes sont très complexes. L'invention vise à fournir un dispositif de décodage permettant de restituer les messages codés suivant un code convolutionnel non systématique avec des performances réduites par rapport aux précédentes, mais parfaitement acceptables en dehors des limites de zone de couverture, ayant l'avantage d'une constitution beaucoup plus simple. Dans ce but, l'invention propose d'utiliser un algorithme basé sur la distance minimum dmin du code convolutionnel, avantageusement associé à une décision douce, à maximum de vraisemblance. Pour que le dispositif de décodage ait une constitution simple, il est fractionné en plusieurs décodeurs disposés en cascade sans rétroaction d'un décodeur sur l'autre, les décodeurs traitant des blocs de même longueur de N bits et comprenant au moins - un premier décodeur de calcul de N/2 syndromes de configuration d'erreur, opérant le découpage du message en blocs de N bits en cas de détection d'erreur et effectuant la correction des erreurs en tête de bloc par consultation de table, - un second décodeur de correction des erreurs résiduelles sur l'ensemble de la longueur des blocs, - les blocs de N bits étant disjoints et statistiquement décorrélés en termes d'erreur par inhibition de chaque décodeur entre deux décodages successifs de blocs comportant des erreurs. Pour réduire les temps d'attente pendant lesquels, par suite de l'inhibition, il n'y a pas correction, un décodeur d'erreur isolée (c'est-à-dire d'erreur unique dans un bloc quelconque de N bits) est avantageusement placé dans la cascade en amont dudit premier décodeur ; ce décodeur supplémentaire est prévu pour calculer les syndromes représentatifs d'une erreur isolée, corriger les erreurs isolées et laisser transiter, sans modification, les groupes de N blocs comportant plusieurs erreurs. Un tel décodeur d'erreur isolée peut etre de constitution très simple, puisqu'il n'a pas à comporter de table de correction. Le premier décodeur mentionné ci-dessus peut, de son côté, être dédoublé en deux circuits successifs, ce qui se traduit par la présence de deux tables dont la complexité totale est nettement inférieure à celle d'une table unique permettant d'arriver au même résultat. La décomposition des décodeurs peut être encore accrue. Dans chaque cas, une étude d'optimisation permettra de déterminer, pour un code convolutionnel donné, la longueur des blocs, qui fixe à son tour le nombre d'étages d'éléments de retard dans les décodeurs. Souvent, dans le cas du code convolutionnel avec K = 7, r = 1/2 et n (nombre de sorties du codeur) = 2, il sera avantageux d'adopter des décodeurs à deux cubaines parallèles, dont le circuit de décision comporte douze éléments de retard. La durée d'inhibition correspondra généralement à un nombre de syndromes nuls consécutifs entre deux blocs au moins égal à un bloc et, généralement, à trois ou quatre blocs. L'invention sera mieux comprise à la lecture de la description qui suit d'un mode particulier d'exécution de l'invention, donné à titre d-'exemple non limitatif. La description se réfère aux dessins qui l'accompagnent, dans lesquels - la Figure 1 est un schéma de principe d'un dispositif de décodage à trois décodeurs de correction précédés d'un décodeur de correction d'erreur isolée, fonctionnant tous par calcul de syndromes - la Figure 2 est un synoptique montrant une constitution possible du décodeur d'erreur isolée, utilisable dans le dispositif de la Figure 1 dans le cas d'un codeur à deux sorties et d'une longueur de contrainte K = 7 - la Figure 3 est un schéma donnant la constitution du circuit P de la Figure 2, pour un codage particulier - la Figure 4 est un synoptique utilisable pour les décodeurs de correction d'erreurs multiples dans le dispositif de la Figure I - la Figure 5 est un logigramme illustrant le fonctionnement des décodeurs de correction d'erreurs multiples. Le dispositif de décodage dont la constitution de principe est montrée en Figure 1 est prévu pour être placé en aval d'un circuit de démodulation classique à deux sorties et d'un convertisseur analogique/numérique numérisant chacune de ces deux sorties sur trois bits. Le dispositif doit comporter également un circuit de récupération d'horloge, non représenté, qui fournira un signal de décalage d'un élément à retard à un autre. On peut notamment envisager une cadence de 50 kBits/s. Les composants du dispositif comportent deux voies en parallèle, affectées chacune à une des sorties de codeur. Le premier composant est constitué par un détecteur DO d'erreur isolée. Ce composant attaque ensuite un détecteur d'erreurs multiples et de correction des erreurs siutées dans la première moitié de blocs de N bits. Ce détecteur est constitué de deux décodeurs élémentaires D11 et D12 placés en cascade. Un second décodeur D2, prévu pour compléter la correction, traite l'ensemble de la longueur des blocs. Un décodeur final 10 de restitution des données, constituant l'inverse du codeur d'émission, restitue le message S d'origine. Dans le cas illustré sur la Figure 1, un circuit 12 de décision douce, utilisant les informations de qualité fournies par les deux bits les moins significatifs sur chaque voie, est interposé entre le décodeur D2 et le décodeur de restitution 10. L'algorithme de correction et de décision douce mis. en oeuvre par le circuit 12 peut être l'algorithme décrit dans l'article de R. F. Goodman "Algebric coding theory and applications", 1979, Springer Verlag. Le circuit 12 peut être omis, au prix d'une perte sur le gain de codage. Dans ce cas, il n'est plus nécessaire de disposer d'une quantification sur trois bits et il est possible d'omettre les trajets de transfert des bits les moins significatifs dans les décodeurs DO, Dli, D12 et D2 qui seront décrits maintenant. L'analyse des résultats a montré que le dispositif représenté en Figure 1 permet de corriger, pour chacun des blocs décorrélés qui est effectivement traité, toutes les erreurs de poids inférieur ou égal à 4 et la majorité des erreurs de poids 5. Ce résultat est atteint, du fait que la puissance de correction est répartie entre les trois décodeurs DO, D11-D12 et D2, avec une constitution-relativement simple des décodeurs d'erreurs multiples. Pratiquement, les quatre décodeurs élémentaires peuvent être constitués d'un microcontrôleur à 8 koctects de mémoire, de bascules et de portes logiques à deux entrées. Une étude montre que les erreurs résiduelles dans les blocs non traités par Dli- D12 et D2 sont très peu nombreuses. Décodeur de correction d'erreur isolée Le décodeur Do montré en Figure 2 comporte un circuit P de calcul de syndromes qui reçoit, sur ses entrées eA et eB, les bits les plus significatifs des entrées EA et EB du dispositif. On supposera par la suite que le circuit P, utilisé dans chacun des déco durs, est à- six étages. Le nombre de ces étages est directement lié à la longueur de contrainte K et sera optimisé en fonction du code. Les bits d'entrée eA et e B circulent dans les étages du circuit P, constitués chacun d'un élément à retard tel qu'une bascule, au rythme de l'horloge. Ils apparaissent, sans modification sur les sorties OA et OB, avec un retard de sept coups d'horloge.Sur une sortie s du circuit P de calcul de syndromes apparaît, à chaque coup d'horloge, un bit provenant de la comparaison du contenu des étages, constituant le syndrome sur la base duquel un circuit de décision 16 détermine les corrections éventuelles à effectuer sur l'une et/ou l'autre des deux voies. Dans le mode de réalisation montré en Figure 2, où le dispositif de décodage comprend un circuit de décision douce, les corrections éventuelles sont à effectuer sur des entrées EA et EB de trois bits. Chacun des bits de poids faible circule dans une cascade de douze éléments à retard A et QB' constitués généralement par les bascules d'un registre, et la correction éventuelle est effectuée sur tous les bits à la fois pour fournir les sorties SA et SB du décodeur D,. Le circuit P de calcul de syndromes montré en Figure 3, comprend, sur chacune de deux voies correspondantes, six éléments de retard, respectivement au,..., a5 et bol...l b5, constitués par les bascules de registres à décalage. - A chacun de ces registres est associée une série de portes OU EXCLUSIF 15A ou 15B en cascade présentant des bouclages caractéristiques des polynômes générateurs du code convolutionnel qui, dans le cas illustré, sont 171 (en octal) pour la voie A et 133 (en octal) pour la voie B. La sortie de chacune des deux séries de portes est appliquée à l'une des entrées d'une porte OU EXCLUSIF 17 qui fournit la sortie a. Les bouclages sont tels qu'une erreur isolée (c'est-à-dire une erreur unique sur un groupe de six bits successifs) est décelée sur la première voie ou voie A par l'apparition, sur la sortie s, de la suite de syndromes Seq1 = 11110010.... O La présence d'une erreur isolée sur la seconde voie ou voie B est caractérisée de son côté par la suite de syndromes Seq2 = 10110110... O. Les bits successifs apparaissant sur la sortie a du circuit P de calcul des syndromes circulent dans les treize étages successifs SOI'''' 512 d'un registre 18. Deux réseaux de portes permettent de détecter, l'un, l'apparition de la séquence de syndromes révélant une erreur isolée sur la première voie A, l'autre, l'apparition de la séquence révélant une erreur isolée sur la voie B. Le premier jeu de bascules comporte six portes OU 20 (dont les deux extrêmes seulement apparaissent sur les Figures), un inverseur (représenté combiné à la dernière porte OU) et cinq portes ET 22. Les portes OU ont toutes le même montage en cascade. Les portes ET sont montées de façon que, lorsque la séquence de syndromes SEQ1 apparaît, elle se traduit par une sortie égale à 1 sur la dernière porte 22, qui provoque une correction. Les portes 20 et l'inverseur sont communes au premier réseau de portes et au second. Ce dernier comportera encore un jeu de six portes ET 24, mais avec un montage différent, qui dépend encore de l'algorithme de codage. Lorsqu'une erreur isolée est détectée sur une voie, une correction est effectuée sur cette voie par modification à la sortie de registres. Si le décodeur Do comporte des trajets de transmission de bits de poids faible, ces derniers doivent être corrigés en même temps que le bit de poids fort. Le bit de poids fort est corrigé à l'aide d'une porte OU EXCLUSIF 26 ou 28 placée à la sortie d'un registre à sept positions a6,..., a12 dans lequel la durée de circulation est la même que dans les étages 56 à 512 : la correction ainsi effectuée consiste en une complémentation. La correction à effectuer sur les bits de poids faible, qui circulent dans les étages de registres respectifs, 30A pour la première voie ou voie A et 30B pour la seconde voie ou voie B, consiste à faire passer à zéro la sortie du dernier étage. Ce résultat est atteint à l'aide de portes ET, désignées par 32 sur la voie A, qui reçoivent le signal de sortie de la dernière porte ET 22, inversé par un inverseur 34 sur une entrée et la sortie du registre 30A correspondant sur l'autre entrée. Le montage est le même pour la voie B. On obtient ainsi, sur les sorties SA et SB des deux voies du décodeur Do, une séquence de mots de trois bits où les erreurs isolées ont été corrigées. Décodeur de correction d'erreurs multiPles en en-tête de bloc Le décodeur D11, dont le schéma de principe est donné en Figure 4, reçoit les sorties SA et SB du décodeur Do. Il comporte encore deux voies fonctionnant de façon indépendante. Le mode de réalisation illustré, prévu pour un dispositif ayant un circuit de décision douce, réalise la correction d'erreur par complémentation des bits de poids fort et remise à zéro des bits de qualité (bits de poids faible). Le décodeur D11 peut être considéré comme comprenant successivement un circuit tampon 36 et un circuit de décision ou de correction 38, dont l'élément de base est un microcontrôleur ou microprocesseur, éventuellement complété par des registres et des réseaux de portes supplémentaires. Le circuit tampon 36 comporte un circuit d'entrée P de calcul de syndrome qui peut être celui de la Figure 3, dont les sorties 0A et OB circulent dans une cascade de douze éléments de retard, respectivement 17 a17 t b61.., b17. Les bits de poids faible circulent de leur côté dans des cascades de dix-huit éléments de retard C1OA rr et QOB'---' Q17B. Tous ces éléments de retard, qui peuvent être constitués par les étages successifs d'un registre à décalage, jouent un rôle de stockage. Les opérations de correction n'interviennent pas sur eux. Le circuit de décision et de correction 38 comporte une cascade d'éléments de retard constituée par un registre 40 à vingt étages So,..., S19 qui reçoit la sortie s du circuit P et joue un rôle similaire à celui du registre 18 de la Figure 2. Mais le circuit de décision ne comporte pas de réseau de portes 20, 22, 24. Il est en effet nécessaire, si l'on souhaite corriger différents types d'erreurs, de disposer d'une table permettant, en réponse à de nombreuses configurations différentes de syndromes représentant des erreurs multiples différentes, d'effectuer les corrections correspondantes. Pour cela, le circuit 38 comporte une mémoire morte 42 dont on supposera qu'elle comporte 2600 mots, avec un adressage sur treize bits. L'adresse en mémoire est donnée par les bits de sortie de certains des étages du registre 40. Chaque mot contenu en mémoire comprend une instruction de correction correspondant à la correction des erreurs révélées par la séquence de syndromes appliquée au circuit d'adressage 44 de la mémoire morte.Un multiplet de six bits appartenant au mot contenu dans la position mémoire constitue un mot de comparaison avec six des vingt bits de la séquence de syndromes représentant une configuration d'erreur donnée. Ce multiplet est stocké dans un tampon 48 qui maintient la configuration appliquée à un comparateur 50 d'inhibition de correction. Pour plus de clarté, la Figure 4 ne montre pas les liaisons entre les étages du registre 40, le circuit d'adressage 44 et le comparateur 50 : ces liaisons seront choisies dans chaque cas en fonction des erreurs que l'on souhaite corriger. L'instruction de correction fournie par un circuit tampon 52 provoquera le rétablissement de la configuration correcte par - complémentation du contenu de certaines des bascules, a18,..., a25 pour la voie A, b18,..., b25 pour la voie B, - mise à zéro de. certaines des bascules A et contenant des bits de qualité. Le calcul de syndrome s'effectue de façon glissante sur les ensembles successifs de bits provenant des sorties SA et SB jusqu'à ce qu'une erreur soit décelée, la détermination de la nature de l'erreur s'effectue sur la base de la séquence complète de N syndromes 19 Mais la correction éventuelle ne porte que sur N/2 bits de l'une ou l'autre des voies, par complémentation ou remise à zéro des seules bascules d'ordre 18 à 25. Le rôle du comparateur 50 est de n'autoriser la corection d'erreur que sur des blocs de N bits disjoints et donc décorrélés. Pour cela, treize bits seulement parmi les vingt bits représentatifs d'une séquence de syndromes sont utilisés comme adresse pour accéder à un mot dans la mémoire morte 46 tandis que six des sept bits restants sont comparés au contenu du tampon 48. En cas d'identité entre les deux multiplets de six bits, le comparateur 50 fournit un bit de validation d'un réseau 54 de portes de transmission de l'instruction de correction aux diverses bascules. L'ensemble des éléments de D11 peut être regroupé et utiliser un microcontrôleur du commerce. Le fonctionnement de D11 peut être schématisé par le logigramme de la Figure 5, correspondant au cas où les éléments du circuit de décision appartiennent à un microprocesseur ou un microcontrôleur. Initialement, le compteur de- syndromes est mis à zéro et un drapeau est baissé. Le premier couple de valeurs a et b passe dans les registres en aO et bo. Un premier syndrome significatif est obtenu dès que les valeurs a successives sont contenues dans les étages du circuit P. Aussi longtemps que le drapeau est baissé, un test sur la valeur du syndrome est effectué : si le syndrome ffi est nul, la boucle est parcourue de nouveau sans modification. Si le syndrome s est égal à 1, le drapeau est levé et le compteur est incrémenté de 1. A partir de ce moment, le contenu du compteur est testé pour chaque nouveau couple a, b. S'il est au plus égal à 20 (le chiffre de 20 étant un exemple, correspondant aux résultats d'une analyse statistique des erreurs de poids 1,..., 5 dans un cas particulier), il y a incrémentation du compteur. Si la nouvelle valeur du compteur est égale à 20, l'instruction de correction requise est lue dans la mémoire morte 42, puis exécutée. Après exécution de l'instruction parce que la valeur est égale à 20 ou si l'égalité n'est pas respectée parce que le contenu du compteur dépasse 20, un test est fait sur la valeur des six derniers syndromes reçus. S'ils sont nuls, la boucle est parcourue de nouveau avec un couple de bits supplémentaires a,b introduits dans le circuit. Dans le cas contraire, le drapeau est baissé.et le compteur est remis à zéro avant introduction du nouveau couple. On voit que, pour toute configuration d'erreur, on détermine vingt syndromes. A partir de ces vingt syndromes, la configuration d'erreur la plus probable est déterminée par consultation de la table en mémoire morte 42. Le décodeur D12 a exactement la même constitution que le décodeur Dli, mais peut etre prévu pour corriger d'autres erreurs. Il peut également etre utilisé pour traiter ceux des blocs qui sont transmis sans modification par D11, du fait de l'inhibition entre blocs corrigés. Décodeur D2 de détection d'erreurs multiples Le décodeur D2 ne se différencie de celui montré en Figure 4 que par le contenu de la mémoire 42 et le fait que les instructions de correction sont appliquées à l'ensemble des bascules a6,..., a25 ; b6,..., b25 6 Q,25 ; et Q86 25. La correction doit en effet alors s'effectuer sur l'ensemble du bloc sur lequel une séquence de syndromes représentatifs d'une configuration d'terreur a été relevée. Dans une configuration qu'on peut considérer comme représentative, la mémoire morte 42 devra comporter moins de 1308 mots, c'est-à-dire moins de 2k mots. Cependant, un adressage sur douze bits restera nécessaire pour déterminer les séquences de syndromes à relever. REVENDICATIONS 1. Dispositif de décodage permettant de restituer les messages codés selon un code convolutionnel non systématique, caractérisé en ce qu'il comprend plusieurs décodeurs disposés en cascade et sans rétroaction des décodeurs l'un sur l'autre, les décodeurs comprenant au moins - un premier décodeur (li., D12) de calcul de N/2 syndromes de configuration d'erreur, opérant un découpage du message en blocs de N bits en cas de détection d'erreur et effectuant la correction des erreurs en tête de bloc par consultation de table (42), et - un second décodeur (D2) de correction des erreurs résiduelles sur l'ensemble de la longueur des blocs, effectuant également la correction des erreurs par consultation de table, - les blocs de N bits étant disjoints et statistiquement décorrélés en termes d'erreur par inhibition de chaque décodeur entre deux décodages successifs de blocs comportant des erreurs. 2. Dispositif de décodage selon la revendication 1, caractérisé en ce qu'un décodeur d'erreur isolée (Do) est placé dans la cascade en amont du premier décodeur. 3. Dispositif de décodage selon la revendication 2, caractérisé en ce que le décodeur d'erreur isolée (Do) comporte une cascade d'éléments à retard s12) et un réseau logique de portes (20, 22, 24) permettant de détecter les séquences de syndromes représentatives d'erreurs isolées sans consultation de table. 4. Dispositif de décodage selon la revendication 1, 2 ou 3, caractérisé en ce que le premier décodeur est dédoublé en deux circuits successifs (D11, D12) munis chacun d'une table de correction (42). 5. Dispositif de décodage selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comporte deux voies de traitement indépendantes de deux sorties de codage, le code convolutionnel ayant un rendement de codage de 1/2. 6. Dispositif de décodage selon l'une quelconque des revendications précédentes, destiné à être alimenté par des moyens convertisseurs analogique-numérique sur plusieurs bits, caractérisé en ce qu'il est prévu pour effectuer les calculs de syndromes sur les bits de poids fort et effectuer les corrections sur l'ensemble des bits. 7. Dispositif de décodage selon la revendication 6, caractérisé en ce qu'il comporte également un décodeur à décision douce (12) en aval du second décodeur.