FR 2756996 A1 19980612 FR 9615159 A 19961210 DESCRIPTION L'invention concerne un système de transmission numérique à protection de données d'entrée, comportant des moyens de codage desdites données et des moyens de décodage itératif, les moyens de codage comportant un premier sous-ensemble pour effectuer un codage convolutif systématique en treillis permettant le décodage itératif et un second sous-ensemble pour attribuer les données codées à des symboles d'une modulation numérique. L'invention concerne également un procédé de protection de données d'entrée mis en oeuvre dans un tel système de transmission numérique. Le système peut être utilisé pour la transmission numérique pour la télévision par câble, par satellite, pour la diffusion terrestre, pour la transmission sur lignes téléphoniques ou autres. On connaît des systèmes de protection sélective combinant un codage convolutif avec une modulation numérique. En particulier, pour augmenter les performances d'un tel système en termes de taux d'erreurs binaires, une nouvelle classe de codes convolutifs appelés turbo-codes a été décrite dans le document intitulé: "Near Shannon limit error-correcting coding and decoding: Turbo-codes (1), C. BERROU, A. GLAVIEUX, P. THITIMAJSHIMA, Proceeding of ICC'93, Genève, Mai 1993, pages 1064-1071. Ces turbo-codes ont des performances, exprimées en taux d'erreurs binaires, proches des limites théoriques prévues par Shannon. Il s'agit de codes convolutifs concaténés en parallèle. Ces codes convolutifs sont basés sur des codes récursifs perforés systématiques c'est-à-dire qu'ils découlent de codes de rendement 1/2 pour lesquels un bit d'entrée donne naissance à deux bits de sortie, la perforation étant appliquée aux bits eux-mêmes. La concaténation quant à elle, est réalisée par un entrelacement approprié des données renfermant l'information. A la réception, le décodage itératif dit décodage turbo, consiste à décoder plusieurs fois les symboles reçus pour améliorer les performances du système en termes de taux d'erreurs binaires. Les décodages itératifs successifs sont effectués par un unique décodeur de Viterbi à décision douce. Ce décodeur est différent d'un décodeur de Viterbi classique qui effectue une décision dure. Dans ce document les décisions douces en sortie du décodeur délivrent un taux de fiabilité d'une décision dure c'est-à-dire une probabilité de décision correcte. Le décodeur est ensuite suivi d'un désentrelacement des données de sortie. Mais l'utilisation de turbo-codes suivis d'un décodage itératif révélée dans ce document ne supprime pas les limitations des codes systématiques perforés issus de codes de rendement 1/2 surtout lorsque ces derniers sont appliqués séparément de la modulation numérique avec laquelle ils coopèrent. En particulier, un inconvénient de ces codes est qu'ils ne sont adaptés qu'à des modulations à faible efficacité spectrale (inférieure ou égale à deux bits/s/Hz) comme les modulations de phase MDP2 et MDP4. Il leur correspond un débit binaire égal au maximum à deux fois la bande utilisée. Pour augmenter le débit pour une bande occupée fixée, on pourrait chercher à utiliser des modulations à grande efficacité spectrale du type modulation d'amplitude en quadrature (MAQ). Mais l'utilisation des codes convolutifs perforés décrits, juxtaposés à des modulations MAQ, ne donne pas des performances optimales, car ces codes ont été conçus indépendamment de la modulation. Le but de l'invention est donc d'accroître les performances de tels systèmes de transmission numérique en garantissant un fonctionnement correct du système avec un rapport signal/bruit minimal tout en améliorant leur efficacité spectrale. Ce but est atteint avec un système dans lequel le premier sous- ensemble met en oeuvre un codage convolutif systématique en treillis de rendement de codage P/(Q.M), M, P et Q étant des entiers avec Q et M supérieurs à 1, le code convolutif systématique étant utilisé pour générer un code produit en blocs avec fermeture du treillis par ajout de données redondantes comportant au moins un bit d'un code de parité, le code produit étant formé de composantes générées par codage de lignes et de colonnes d'une matrice groupant les données codées par le code convolutif systématique, le second sous-ensemble combinant le code produit avec une modulation d'amplitude multidimensionnelle de dimension Q comportant 2M états, le décodage itératif étant un décodage en blocs. Pour générer, à partir des codes convolutifs systématiques, le code produit ainsi que la redondance ajoutée, les moyens de codage peuvent comporter des moyens, dits machine d'états, définissant des états de sortie, des symboles de redondance à partir d'états d'entrée et des symboles d'information. Préférentiellement la machine d'états est couplée à une table de lecture pour déterminer les symboles de redondance du code convolutif systématique et les symboles servant à la fermeture du treillis. Selon l'invention, le système est également caractérisé en ce que les moyens de décodage itératifs comportent au moins deux voies opérant successivement: - sur une première voie, le système met en oeuvre, à chaque itération de la voie, un premier décodage itératif avec: a) des moyens pour calculer des décisions dures se rapportant au code convolutif systématique, b) des moyens pour calculer des premières fiabilités des décisions dures associées à chaque sous- ensemble de la modulation multidimensionnelle, et des secondes fiabilités associées au treillis du code convolutif systématique, c) des moyens pour sélectionner des fiabilités minimales entre les premières et secondes fiabilités de chaque décision, d) des moyens pour calculer des décisions douces servant à l'itération suivante de la première voie en fonction des fiabilités minimales sélectionnées et des décisions dures, et sur une seconde voie, le système met en oeuvre, à chaque itération de la voie: a) des moyens pour calculer des décisions dures se rapportant au code de parité, b) des moyens pour calculer des troisièmes fiabilités pour chaque décision dure de la seconde voie en fonction des décisions dures de la première voie, c) des moyens pour calculer des décisions douces en fonction des troisièmes fiabilités, des décisions douces issues de l'itération précédente de la seconde voie et des décisions dures de la première voie. L'invention concerne aussi un procédé de protection de données d'entrée mis en oeuvre dans un système de transmission numérique, le procédé comportant une phase de codage desdites données et une phase de décodage itératif, la phase de codage comportant une première étape de codage convolutif systématique en treillis permettant le décodage itératif combinée à une seconde étape d'attribution des données codées à des symboles d'une modulation numérique, caractérisé en ce que lors de la première étape, le codage systématique en treillis présente un rendement de codage P/(Q.M), M, P et Q étant des entiers avec Q et M supérieurs à 1, le code convolutif systématique étant utilisé pour générer un code produit en blocs avec fermeture du treillis par ajout de données redondantes, le code produit étant formé de composantes générées par codage de lignes et de colonnes d'une matrice groupant les données codées par le code convolutif systématique, la seconde étape combinant le code produit avec une modulation d'amplitude multidimensionnelle de dimension Q comportant 2M états, le décodage itératif étant un décodage en blocs. Il s'agit d'un codage convolutif systématique de rendement P/(Q.M) préférentiellement de rendement 7/8. Ce codage est combiné avec une modulation numérique multidimensionnelle à 2M états (préférentiellement à 4 états) pour fournir des performances optimales. Selon cet exemple (M=2, Q=8, P=14, rendement =14/16 =7/8), un tel codage est obtenu en traitant un train binaire dans lequel on prend 14 bits ou 7 symboles (dits symboles d'entrée) pour les coder en huit symboles (dits symboles de sortie). Les Q symboles (respectivement les huit symboles) de sortie sélectionnent deux symboles à 2M niveaux (respectivement à quatre niveaux {+1, -1, +3, -3}) c'est-à-dire Q symboles réels de la modulation d'amplitude à 2M niveaux avec M bits de sortie par symbole (respectivement à quatre niveaux 4-AM avec deux bits de sortie par symbole). Le codage produit est réalisé en appliquant le codage convolutif systématique aux lignes et aux colonnes d'une matrice contenant les bits d'information avec fermeture du treillis pour chaque ligne et chaque colonne. Ensuite, les symboles 2M -AM (par exemple 4-AM) issus de la matrice après le codage produit sont combinés 2 par 2 pour générer des symboles MAQ 22M (par exemple MAQ16). Les données codées sont ensuite transmises par une porteuse selon les techniques habituelles. Pour permettre d'effectuer le décodage turbo à la réception, le codage produit doit être systématique. Pour cela, il faut utiliser des codes convolutifs systématiques c'est-à-dire qu'après codage les symboles d'information en entrée se retrouvent sans changement en sortie. Les codes convolutifs de rendement P/(Q.M), par exemple 7/8, décrits ciaprès, sont conçus de telle façon qu'ils donnent le taux d'erreurs le plus faible pour un rapport signal/bruit donné et ceci spécifiquement pour la modulation 4-AM ou MAQ16. On obtient ainsi un système ayant les performances optimales à la fois en rapport signal/bruit et en efficacité spectrale en combinant une structure de codeur réalisant de manière optimale le codage convolutif systématique de rendement 7/8 avec la modulation multidimensionnelle. Selon l'invention, il s'agit bien d'un codage produit utilisant un codage convolutif systématique combiné avec une modulation d'amplitude en quadrature et non pas d'une juxtaposition. Ce système comporte plusieurs avantages. Par rapport au système de l'art antérieur utilisant des codes perforés binaires avec une modulation de phase MDP4, on dispose d'une capacité de transmission deux fois plus élevée (efficacité spectrale entre deux et quatre bits/s/Hz); Le système a une complexité matérielle faible puisqu'un seul décodeur à décision douce est nécessaire pour effectuer le décodage itératif du code produit. Les codes utilisés sont préférentiellement des codes convolutifs systématiques de rendement 7/8, avec 14 bits en entrée et 16 bits en sortie. La fonction qui génère les 16 bits de sortie en fonction des bits d'entrée et de l'état (mémoire) du codeur a été optimisée en présence de la modulation MAQ16. Les codes convolutifs systématiques, ayant préférentiellement un rendement 7/8, sont choisis de telle manière que la distance euclidienne minimale de ces codes combinés avec la modulation MAQ16 soit maximale afin d'améliorer les performances. Ceci fait ressortir la combinaison du codage avec la modulation. Ces différents aspects de l'invention et d'autres encore seront apparents et élucidés à partir des modes de réalisation décrits ci-après. L'invention sera mieux comprise à l'aide des figures suivantes données à titre d'exemples non limitatifs qui représentent: Figure 1: un schéma d'un système de transmission numérique en bande de base selon l'invention. Figure 2: un arbre de partition de A0 en sous-ensembles. Figure 3: un schéma général d'un codeur de ligne ou de colonne permettant de générer le code produit. Figure 4: un schéma d'un système de transmission numérique muni d'un codeur pour coder aussi les symboles de redondance. Figure 5: une représentation de l'arbre de partition de la constellation 8-D. Figure 6: une représentation du treillis d'un code de rendement 7/8. Figure 7: un schéma général d'un codeur convolutif systématique de rendement 7/8 combiné avec un modulation 4-AM 8-D. Figure 8: une représentation de l'affectation binaire des symboles 4-AM. Figure 9: un schéma montrant un codeur convolutif systématique pour un code à 8 états. Figure 10: un schéma montrant un codeur convolutif systématique pour un code à 16 états. Figure 11: un schéma d'un exemple particulier de réalisation du codeur représenté sur la figure 7 pour un code de rendement 3/4. Figure 12: un schéma pour le calcul des symboles de fermeture du treillis. Figure 13: un schéma des moyens de décodage du premier étage selon l'invention. Figure 14: une représentation en treillis des sous-ensembles S0,0 et S0o.1. Figure 15: un organigramme des différentes étapes du décodage effectué dans le premier étage. Figure 16: un schéma des moyens de décodage du second étage selon l'invention. Figure 17: une représentation en treillis du code de parité. La figure 1 représente un schéma d'un système de transmission numérique en bande de base selon l'invention. Les données d'entrée à protéger issues d'une source 5 sont organisées en matrice par exemple en les stockant dans une mémoire 10 formée de lignes et de colonnes qui peuvent être adressées séparément. Le système comporte des moyens 12 de codage de lignes et des moyens 14 de codage de colonnes. Les deux moyens délivrent des données qui sont affectées à des symboles d'une modulation numérique 4-AM. Un organe d'attribution 16 transforme les symboles 4-AM en symboles MAQ16. Il s'agit d'un groupement 2 par 2 des symboles 4-AM en sortie du codage produit. Ces symboles sont transmis selon les techniques habituelles à travers un canal 19 vers des moyens de réception. Les données reçues passent dans des moyens 20 de stockage temporaire qui permettent d'effectuer le traitement en boucle décrit ci-après. Le décodeur comporte deux voies opérant successivement, une voie 1 qui se rapporte aux décisions sur les bits les moins significatifs des symboles émis (indice i) et une seconde voie qui se rapporte aux décisions sur les bits les plus significatifs des symboles émis (indice j). Sur la voie 1, en sortie des moyens de stockage 20, les données entrent dans un décodeur de Viterbi 221 qui présente deux sorties, une sortie 211 à décision dure qui délivre les symboles estimés et les bits i estimés obtenus pour chaque itération et une sortie 231 à décision douce qui est rebouclée sur la mémoire 20 à travers un entrelaceur de données 241. Sur la voie 2, en sortie des moyens de stockage 20, les données entrent dans un décodeur de code de parité 222 qui présente deux sorties, une sortie 212 à décision dure qui délivre les bits j estimés obtenus pour chaque itération et une sortie 232 à décision douce qui est rebouclée sur la mémoire 20 à travers un entrelaceur de données 242. Le décodage de la voie 2 est effectué après le décodage de la voie 1, à partir des symboles reçus et des bits i estimés par le décodeur de la voie 1. Les symboles estimés sont de plus en plus fiables au fur et à mesure que le traitement itératif est répété. En moyenne, cette amélioration, mesurée en taux d'erreurs, est obtenue après 4 à 5 itérations pour la voie 1 et après 2 à 3 itérations pour la voie 2. Pour former le code produit, le codage d'une ligne de la matrice est effectué de la façon suivante par le codeur de ligne. Les données sont traitées bloc par bloc, un bloc comportant 2 x (7N + 4)2 bits pour un code systématique de rendement 7/8 pris ici à titre d'exemple. La mémoire 10 stocke une matrice [I] d'information de dimensions (7N + 4) x (7N + 4). La matrice contient des symboles d'information quaternaires {+1, -1, +3, -3}. Chaque symbole correspond à 2 bits. Ensuite chaque ligne de la matrice [I] (1 ligne = 7N + 4 symboles) est codée par un codeur convolutif systématique de ligne 122 (figure 3) générant à la fois les symboles d'information (qui sont les symboles à 4 niveaux 4-AM {+1,-1,+3,-3} correspondant aux symboles quaternaires de la matrice [I] avant codage) et les symboles de redondance. Pour chaque ligne, il y a N symboles 4-AM de redondance générés par le codeur convolutif 7/8 (N symboles de redondance pour 7N symboles d'information) et 4 symboles 4-AM de redondance pour fermer le treillis du code. Ces 4 symboles sont générés avec les 4 derniers symboles de la ligne de la matrice d'information. La même opération est effectuée pour les colonnes de la matrice. Considérons à titre d'exemple le code convolutif systématique de rendement 7/8 (codeur 122). Avec 7 symboles d'information utile on génère 8 symboles comportant les 7 symboles utiles (code convolutif systématique) plus un symbole de redondance. Considérons la première ligne de la matrice constituée de N +1 blocs (un bloc ayant 7 symboles d'information soit 14 bits) qui sont: (Il, 1À. I1,7),(I1,8,.i,14),À.., I1, 7N-6... I1,7N), (I1,7N+1,... I1,7N+4) Un symbole par exemple Il. comporte deux bits j11 et il1. Le codage produit, réalisé suivant le schéma de la figure 3, donne une matrice représentée sur le tableau I. Ii, '1 Il, 7N+4 R1l,. 'Rl,N TR,1. TR1,4 Im,1 'm,7N+4 R. R TRm,i *TRm,4 I7N+4, 1I7N+4,7N+4 7N+4,1 R7N+4,N TR7 N+4, 1... TR7N4,4 Ci, C... | N,1,7N+4 TC,, l TCl, 7 N+4 TC4,1... TC4, 7 N+4 TABLEAU I Pour chaque bloc, on calcule le symbole de redondance (soit 2 bits) du code convolutif systématique, le bloc 1 fournit R1.1, le bloc 2 fournit R1.2, et ainsi de suite jusqu'au bloc N qui fournit R1,N' On suppose que l'état initial du codeur est égal à zéro. Après avoir généré R1,N le codeur 122 est à l'état o(N). A l'aide des moyens 128 de fermeture du treillis, on ferme le treillis, en forçant l'état du treillis à zéro en générant 4 symboles TR11, TR1,2, TR1,3, TR1. (pour un code à 8 états) correspondant à une transition dans le treillis du code convolutif à 8 états de telle façon qu'après cette transition on arrive à l'état o=0. Pour un code ayant plus d'états, il faut utiliser plus de symboles de fermeture du treillis. Les symboles TRl, TR1,2, TR1,3, TR1, sont fonction des 4 symboles d'information (I,7N+1,.. I1,7N.4) et de l'état du treillis a(N) après le codage d'une ligne et sont générés par une table adressée par o(N) décrite ci-après. Après le codage, on obtient la matrice de symboles 4-AM représentée dans le tableau I dans lequel: I", est une matrice de dimensions (7N+4) x (7N+4) comportant les symboles 4-AM d'information. Rm, est une matrice de dimensions (7 N+4) x N comportant les symboles 4AM correspondant aux symboles de redondance ligne générés par le code 7/8. TRmn est une matrice de dimensions (7N+4) x 4 comportant les symboles 4-AM de redondance de ligne de fermeture du treillis. Cm,n est une matrice de dimensions (N x 7N+4) comportant les symboles de redondance colonne. TCmn est une matrice de dimensions (4 x 7N+4) comportant les symboles de redondance colonne de fermeture du treillis. Le codeur de ligne 12 opère de la manière suivante (figure 3). Les symboles d'entrée Im,n entrent dans le buffer 120 puis dans le codeur 122 de rendement 7/8 qui délivre un symbole de redondance pour un bloc de 7 symboles d'information. Un multiplexeur 124 effectue en sortie la mise en série des symboles. Pour cela, il délivre sur sa sortie 131, dans l'ordre, des groupes de 8 symboles, chaque groupe étant formé par les 7 symboles d'information et le symbole de redondance correspondant à ce bloc. Le multiplexeur délivre ensuite tous les groupes de 8 symboles consécutifs. Lorsque tous les groupes sont extraient, il extrait les 4 derniers symboles d'information de la ligne puis les 4 symboles de fermeture du treillis délivrés par l'organe 128 de détermination des symboles de fermeture. Un contrôleur 17 gère les opérations. Le même traitement est effectué pour les autres lignes. De la même manière, un traitement semblable est réalisé pour les colonnes (codeur de colonnes 14). Le premier bloc de la première colonne est formé des symboles: I1 1, I2 1. '...I7N+4 1. A chaque bloc de 7 symboles va correspondre un symbole de redondance, par exemple au premier bloc va correspondre le symbole C,11 et au dernier bloc va correspondre le symbole CN1. Les symboles de redondance de fermeture du treillis vont être pour la première colonne les symboles TC1,, TC2,1, TC3,1, TC4,1 générés à partir des symboles I7N+l1, 1... I7N+4,1. L'ensemble des données formées par les symboles d'information initiale, les symboles de redondance de codage ligne et de codage colonne et les symboles de fermeture du treillis forment le code produit. Une ligne de ce code produit va former un bloc de symboles qui sert à coder des symboles d'une modulation 4-AM. Comme les symboles d'information initiale restent les mêmes dans le code produit qu'ils soient lus en ligne ou en colonne, pour utiliser les colonnes du code produit il est inutile d'utiliser une seconde fois les symboles d'information initiale. Seuls donc les symboles de redondance des colonnes du code produit sont utilisés pour coder (codeur de colonnes 14) des symboles d'une modulation 4-AM. Les symboles 4-AM issus des lignes et des colonnes du code produit servent à coder une modulation MAQ16 dans l'organe d'attribution 16. Pour accroître les performances du système, il est possible de coder aussi les symboles de redondance qui viennent d'être calculés. Ainsi on peut coder les colonnes des matrices Rm,n et TRmn (codage en colonne de la redondance ligne) pour générer les matrices RCm.n, TRC,,,, n, RCTm,n et TRCTm,n de dimensions (N x N), (N x 4), (4 x N) et (4 x 4) respectivement (tableau II). On code aussi en ligne la redondance colonne (matrices C.mn et TC.,mn) pour générer les matrices CR.,,, CRTmn, TCRm,n et TCRTm,n de dimensions (N x N), (N x 4), (4 x N) et (4 x 4) respectivement. Dans ce cas, on code la matrice d'information de dimensions (7N+4)x(7N+ 4) suivant les lignes et les colonnes pour obtenir la redondance de ligne (symboles Rm,n et TR.,n) et la redondance colonne (symboles C,,, n et TC,,.n) de la même manière que cela vient d'être décrit. Puis on code en colonne la redondance ligne et en ligne la redondance colonne afin d'accroître les performances du système. Ainsi par exemple, on va coder le bloc de 7N+4 symboles (R 1,... R7N.4, I) pour générer d'abord les N symboles de redondance colonne (RC11,.... RCN.1) provenant de la redondance du code 7/8 puis les quatre symboles de redondance (RCT11 à RCT4,1) de fermeture du treillis. On fait de même pour les autres colonnes de la redondance ligne (R1*,... R7N+4,n) pour n=l,...N et pour les 4 colonnes (TR1i 1...TR7N.41.) jusqu'à (TR1. 4,... TR7N.4,4). On code aussi les lignes de la redondance colonne c'est-à- dire les lignes (Cm.1.... Cm 7N+4) pour m=l,...N et les 4 lignes (TC.1,... TCl.7N+4) à (TC4,1... TC4 7N+4). On obtient ainsi la matrice suivante: IN,1 * ' ÀI1,n.' '* ÀI1,N4. | R1. 17 *. R1, X N TR1,1... TR1, C,. l. C,...... Cm,4 RCi,.... RCN TRC,1.... TRC1,4 17N-4. 1-.. *7N+4,n... I7M-4,7,V+4 R7 y+ 41 *.. * N+4, N Cl,.... Cl,'*C1,7N,4 RCT,,j...RCTN TRCT,,,.. . TRCI,4 CN, 1- *CN CN 7M4 |R N,. R CN Ar| TRC;-, *.. TR C. ^ TC1. 1...TC1,.n À. TC,7N+4 RCT,1. À. RCTL N TR CT1 1,.. TR CT, 4 TC4,. . TC4', n..TC4. 7 N-4 RCT4,,... RCT4N, TRCT4,1,... TRCT,44 CR,, 1.. CR,N CRT,, lCRT,,4 CRN,... CRN, CRTN,,... CRTN.4 TCR1,.... TCRIN TCRTl, 1**TCRT,4 TCR4...TCR4 N | TCRT4 1... TCRT,,4 TABLEAU II Dans ce tableau: - la matrice [I] contient les symboles d'informations d'entrée. - la matrice [R] est la matrice de redondance ligne de la matrice [I]. - la matrice [C] est la matrice de redondance colonne de la matrice [I]. - la matrice [TR] est la matrice de redondance de fermeture du treillis pour les lignes de la matrice [I]. - la matrice [TC] est la matrice de redondance de fermeture du treillis pour les colonnes de la matrice [I]. - la matrice [RC] est la matrice de redondance colonne de la matrice [R]. - la matrice [CR] est la matrice de redondance ligne de la matrice [C]. - la matrice [TCR] est la matrice de redondance ligne de la matrice [TC]. - la matrice [RCT] est la matrice de redondance de fermeture du treillis pour les colonnes de la matrice [R]. - la matrice [TRC] est la matrice de redondance colonne de la matrice [TR]. - la matrice [TRCT] est la matrice de fermeture du treillis pour les colonnes de la matrice [TR]. - la matrice [CRT] est la matrice de fermeture du treillis des lignes de la matrice [C]. - la matrice [TCRT] est la matrice de fermeture du treillis du codage en ligne de la matrice [TC]. Considérons plus en détail le fonctionnement du codeur de ligne 12 représenté sur la figure 3 pour coder une ligne de la matrice. On stocke dans le buffer 120 la ligne qu'on veut coder. Une ligne comporte (14N + 8) bits ou (7N+4) symboles quaternaires d'information. Par exemple pour le bloc d'ordre k, le buffer stocke N blocs (i,(k), j1(k),..., i7(k), j7(k)) ayant 14 bits (soit 7 symboles) et 1 bloc de 8 bits (soit 4 symboles): il(N+l),jl(N+l) i2(N+l),j2(N+1) i3(N+l),j3(N+ 1) !(+.., j!(N1T Les N blocs de 14 bits sont soumis successivement à un codage convolutif systématique de rendement 7/8 (codeur 122). Pour chaque bloc (k-ème bloc), le codeur 122 génère 7 symboles 4-AM d'information Ul(k) à U7(k) correspondant aux 14 bits d'information du bloc et 1 symbole de redondance U8(k), pour k = 1,...,N, (connexion 123) en réalisant une affectation binaire décrite sur la figure 8. Chaque bloc de 14 bits d'information correspond à une transition dans le treillis du code 7/8. Le dernier bloc, d'ordre N+1, correspond à la transition qui ferme le treillis. A partir des 8 bits d'information {il(N+l), jl(N+l), i2(N+1), j2(N+1), i3(N+l), j3(N+1),i5(N+1), j5(N+1)}, (4 symboles quaternaires) qui sont les 8 derniers bits de la ligne, on génère les symboles 4-AM, c'est-à- dire U1(N+1), U2(N+1), U3(N+1), U5(N+1) d'après l'affectation binaire donnée par la figure 8, puis on calcule les 4 symboles de redondance U4(N+1), U6(N+1), U7(N+1) et U8(N+1) permettant de fermer le treillis. Ces symboles sont fonction à la fois de l'état du codeur aN.l après le codage du N-ème bloc et des 8 bits {il(N+l), jl(N+l), i2(N+l), j2(N+1), i3(N+l), j3(N+1),i5(N+l), j5(N+1)}. Ils sont déterminés par l'organe 128. Le codeur des colonnes est le même sauf qu'en sortie du codage systématique convolutif 7/8, on a seulement les symboles de redondance. Le schéma du codeur permettant de faire le double codage de la redondance est représenté sur la figure 4. Les mêmes éléments que ceux de la figure 1 sont représentés avec les mêmes repères. Dans le cas de l'exemple considéré, la mémoire M 10 contient (7N+4)2 symboles. Une autre mémoire MR contient les (7N+4)(N+4) symboles de redondance ligne (symboles Rmn,, TRmn). Une autre mémoire MC contient les (N+4)(7N+4) symboles de redondance colonne (symboles Cm,n et TCmn). Les mémoires MR et MC sont chargées après avoir fini le codage en ligne et en colonne de M. Ensuite, on effectue le codage du contenu de MR suivant les colonnes et le codage du contenu de MC suivant les lignes pour générer les (N+4)2 symboles 4-AM (RCm,,, TRC,,, RCT,,n et TRCT,,,n) et les (N+4)2 symboles 4-AM (CRm,n, CRTmn TCRmn, et TCRTm.n) respectivement. Des permutateurs 13 et 15 assurent le déroulement des opérations sous le contrôle d'un contrôleur 17. Finalement tous les symboles 4-AM formés pour chaque matrice du codeproduit des tableaux I ou II sont regroupés 2 par 2 et transmis sur le canal sous la forme de symboles complexes de la constellation MAQ16 (suivant un ordre bien défini). Le rendement du code produit sans codage de la redondance est égal à: Pl= (7N+4)2. Pour N=20, le rendement est de 0,765 (7N+4)2+2 (7N2+32N+16) et l'efficacité spectrale est alors égale à 4 fois ce rendement, soit 3,06 bits/s/Hz. Avec un double codage de la redondance le rendement du code produit devient égal à: (7N+4)2 P2= 16 (N+4) (N+1)+(7N+4)2 Ainsi avec N=20 on obtient un rendement de 0,72 et une efficacité spectrale de 2,88 bits/s/Hz. Il y a une perte d'efficacité spectrale à coder la redondance de 0,18 bit/s/Hz mais on accroît les performances du système. La figure 8 représente l'affectation binaire des bits i,j aux symboles de la constellation 4-AM. La constellation 4-AM à une dimension 1-D est représentée par l'ensemble Ao ={-3,-1,+1,+3}. Le premier niveau de partition de Ao comporte deux sous-ensembles B0 et B1 avec Bo= {3,-1} et B1= {1,-3} (figure 2). Un symbole, par exemple I11, comporte deux bits i.1 et j1l.. Le bit i est affecté à ce premier niveau avec i=0 pour Bo et i=1 pour B1. Le second niveau de partition de A0 comporte quatre sous- ensembles Co, CI, C2 et C3, avec C0= {+3}, Ci= {+1}, C2= {-1} et C3= {-3}. L'indice j est affecté à ce second niveau avec j=0 pour Co ou C1 et j=1 pour C2 ou C3. L'indice des ensembles C est égal à la valeur décimale des indices j,i, soit 2j+i, affectés à la partition qui les génère. Une constellation 8-D est définie comme étant l'ensemble des blocs de 8 symboles appartenant chacun à Ao. La figure 5 représente l'arbre de partition de la constellation 8-D (Ao)8 o Ao est la constellation (1-D) à une dimension 4-AM. L'ensemble (Ao)8 a pour distance euclidienne minimale (au carré) do2. Cet ensemble est partitionné en 2 sous-ensembles de distance minimale 2do2. A chaque sous-ensemble, on affecte un bit Yo valant 0 ou 1. Y0 = 0 pour le sous-ensemble constitué par tous les blocs appartenant à Bil... Bi8 avec_ ik = 0 mod2; k=l Y0 = 1 pour le sous-ensemble constitué par tous les blocs appartenant à Bil... Bi8 avec_ ik = 1 mod2 k-1 Donc Y0 = 0 correspond à l'ensemble de tous les blocs de symboles 4- AM (U1...U8) contenant un nombre pair de composantes dans le sous-ensemble 1-D soit B1 = {+1,-3}. De même, Y0 = 1 correspond à l'ensemble de tous les blocs de symboles 4AM (U1...U8) contenant un nombre impair de composantes dans le sous-ensemble 1-D soit B1 = {-1,+3}. Puis chaque sous-ensemble 8-D est à son tour partitionné en 2 autres sous-ensembles 8-D et ainsi de suite. A chaque niveau de partition on affecte un bit: -Y0 est affecté au ler niveau; -Y1 est affecté au 2ème niveau; -Y2 est affecté au 3ème niveau; -Y3 est affecté au 4ème niveau. Dans la suite, on va décrire seulement les sous-ensembles correspondant à Y0 = O. Après le 4ème niveau de partition, on obtient les 8 sous- ensembles: SO, S2, S4, S6, S8, S10, S12, S14 (Si, i pair). L'indice i d'un sous-ensemble Si est la valeur décimale des 4 bits Y3, Y2, Y1, Yo affectés à Si. Chaque sous-ensemble est de la forme U(B1j...BI,) (union des sousensembles) et est défini par des relations de parité sur les indices (i1,... i8). La distance minimale (carré) dans chaque sous- ensemble Si est 4do2. Chaque sous-ensemble contient 212 = 4096 blocs de 8 symboles 4-AM. Chaque sous-ensemble Si contient 16 sous-ensembles (Bil...Bi,) et chaque sous-ensemble (Bil...Bi) contient 28 = 256 blocs 8-D. Finalement, chaque sous-ensemble Si est partitionné en 2 sous- ensembles Si.0 et Si.l1 o: - Sio est le sous-ensemble des blocs de Si dont le dernier symbole 4-AM du bloc est positif (donc appartenant à CO ou C1). - Sil est le sous-ensemble des blocs de Si dont le dernier symbole 4-AM du bloc est négatif (donc appartenant à C2 ou C3). Donc Si.0 correspond à l'ensemble des blocs 8-D de Si dont le dernier symbole U8 est dans CO ou C1, c'est-à-dire que le dernier symbole correspond au bit i8 = 0. SiO contient 211 éléments. Si', = {(U1...U8) de Si tel que j8 = 1}. Par exemple, le sous-ensemble S6,1 est défini par l'ensemble des blocs (U1, U2,... U8) de (A0)8 vérifiant j8 = 1 et les 4 relations de parité sur les bits i1 à i8: i1 oe i3 E) i5 E$ i, = O, i1 @ i2) i5 @ i6 = 1 il f) i2 ' i3 i4 = 1, ip= O p-1 o (ip, jp) sont les bits affectés au symbole 4-AM Up (figure 8). Dans le cas général, pour i pair, Si, est l'ensemble des blocs U =(U1,... ,U8) de symboles 4-AM vérifiant les relations de parité suivantes: il E i3 S i 75)i =Y3 il i2 3 i5 i6 =Y2 il i 2 i 3 i4 =Y il E D2 * 13 * i * 15 f 16 1 7 * i8 = YI0 j8 =j o (Y3 Y2 Y1 Y0) est la représentation binaire de i, c'est-à-dire: i = 8Y3 + 4Y2 + 2Y1 + Y0, avec Y0 = 0 et (ip, jp) est l'affectation è= 0 si up= 3 ou -1 binaire du p-ème symbole du bloc Up:p=1 si U = 1 ou -3 ip isupiou- {jp = o si up= 1 ou 3 pp= 1 si Up -1 ou -3 Donc pour générer tous les blocs de Sij (21 blocs), il suffit de balayer toutes les combinaisons possibles des 11 bits i1, i2, i3, i5 Jl$ ij2' i3 j4, i5, i6 et j7. Pour une combinaison donnée, les autres bits (i4, i6, i7, i8, i8) sont calculés à partir des relations de parité du sous-ensemble Sij définis ci-dessus. Le code convolutif systématique de rendement 7/8 est construit de la façcon suivante: - Les sous-ensembles Sij sont affectés aux branches parallèles du treillis. De plus, les sous-ensembles Sij avec i pair sont utilisés. Ceci assure une distance minimale (le carré) égale à 4do2 o do est la distance minimale de la constellation 4-AM. - Pour avoir un code de rendement 7/8, on doit avoir 8 transitions distinctes provenant d'un état donné du codeur, ce qui correspond à 14 bits d'entrée (dont 3 bits codés et 11 bits non codés) pour 8 symboles 4-AM (soit 16 bits) transmis. Par conséquent, le treillis d'un code à 8 états est entièrement connecté. - Pour avoir un code systématique, c'est-à-dire faire que les 7 premiers symboles 4-AM du bloc 8-D transmis soient les 7 symboles (ou 14 bits) d'information, il faut que les 2'4 transitions provenant d'un état génèrent 214 blocs de 8 symboles 4-AM, les 7 premiers prenant les 214 combinaisons possibles. Pour cela, il suffit d'affecter aux 8 branches distinctes provenant d'un état, 8 sous-ensembles Sij, i= O, 2, 4., 6. 8, 10, 12, 14 et j quelconque. La figure 6 donne le treillis du code convolutif systématique 7/8 optimal. Dans cette figure ak est l'état du codeur à l'instant k et k.1 est état du codeur à l'instant k+1, l'état étant défini par les 3 bits en mémoire du codeur (3 registres à décalage). Cette figure donne aussi l'affectation des sous-ensembles Sij aux différentes transitions du treillis. Le treillis s'analyse de la façon suivante. A partir de l'état o(k) à l'instant kT: ak=(akak,ok), le codeur va transiter vers un autre état a(k+1) à un instant (k+l)T: ak+l=(ok akJ+, ak o1) Ainsi de l'état [111] le codeur peut transiter vers un des 8 états [000] [001] [010] [011] [100] [101] [110] [111]. On observe par exemple que la 3-ème transition provenant de l'état 001, c'est-à-dire la transition 001 - 010, correspond à S101. L'ensemble du treillis s'analyse de la même manière. La figure 7 donne le schéma bloc du codeur 122 de rendement 7/8 (figure 3). Les 14 bits à l'entrée du codeur à l'instant k, (il(k), jl(k), 1= 1.. .7, sélectionnent les 7 premiers symboles du bloc transmis U1(k),.... U7(k) d'après la figure 8. Pour calculer le symbole de redondance U8(k), soit (i8(k), j8(k)), on calcule tout d'abord l'indice i (i pair) du sousensemble Si correspondant ou d'une façon équivalente les 3 bits Y3(k), Y2(k), Y1(k) avec i = 8Y3 + 4Y2 + 2Y1 + Y0, Y0 = O. On calcule aussi i8(k) soit le bit de parité des bits i1(k),... i7(k). Le bit j8(k) est le bit de redondance d'un codeur convolutif systématique 230 de rendement 3/4 ayant pour entrées les bits Y1, Y2, et Y3. Les bits (i8. i8) sélectionnent le symbole U8(k). En sortie du code 3/4, on a l'état suivant du codeur k*r. qui va servir à la fermeture du treillis à la fin d'une ligne ou d'une colonne (k = N). Le calcul des bits Y1(k), Y2(k), Y3(k) et i8(k) en fonction des bits i1(k), i2(k),... i7(k) est donné par les équations suivantes: Y1 (k) =il (k) EDi2 (k) Ei3 (k) (Di4 (k) Y2 (k) =il (k) i2 (k) Ei5 (k) Ei6 (k) Y3 (k) =il (k) ei3 (k) ei5 (k) i7 (k) i8 (k) =il (k) ffi2 (k) Ei3 (k) (i4 (k) Ei5 (k) (i6 (k) ei7 (k) Ces équations sont déduites de l'affectation binaire des sous- ensembles Si aux bits Y0, Y1, Y2, et Y3 (figure 5) qui est réalisée dans l'organe 210. * Cette structure du codeur (figure 7) permet d'affecter tous les blocs 8- D de Sij8 avec i = 8Y3 + 4Y2 + 2Y1 aux transitions parallèles du treillis d'un état a vers un autre état. Le codeur convolutif de la figure 7 peut-être réalisé soit par une table (figure 11), soit par des registres à décalage (figures 9 et 10) soit par programmation d'un calculateur. Sur la figure 11 la table 220 (mémoire) donne le bit de redondance j8(k) ainsi que l'état futur ak.,(V bits pour un code à 2v états), en fonction de ac, Y (k), 2 (k), Y3 (k). La table 220 reçoit y1, Y2, Y3 ainsi que sa sortie ak.. qui est rebouclée en entrée à travers une cellule de retard 222. Les figures 9 et 10 donnent les schémas des codes optimaux à 8 états (v= 3) et à 16 états (v= 4). Pour un code à 8 états, on dispose d'une chaine formée d'une cellule d'addition 3121, d'une cellule de retard 3101, d'une cellule d'addition 3122, d'une cellule de retard 3102, d'une cellule d'addition 3123, d'une cellule de retard 3103, d'une cellule d'addition 3124, la sortie de la chaîne délivrant j8(k). La cellule d'addition 3121 reçoit Yl(k), la cellule d'addition 3122 reçoit Y3(k), la cellule d'addition 3123 reçoit Y2(k) et Y3(k), la cellule d'addition 3124 reçoit Y1(k), Y2(k) et Y3(k), Pour un code à 16 états (figure 10), on dispose d'une chaine formée des mêmes éléments que pour la chaine à 8 états avec en plus une cellule de retard 3104 et une cellule d'addition 3125. La figure 12 concerne le dispositif de fermeture du treillis. Considérons l'état o du codeur et les sous-ensembles Sij8 (sous- ensembles 8-D) affectés à la transition (21 branches parallèles) qui ferme le treillis. i = 8Y3 + 4Y2 + 2Y1 Comme il y a 21 branches qui permettent de fermer le treillis, on va choisir la branche en fonction des 4 symboles d'information Ul, U2, U3 et U5, c'est-à-dire les 8 bits d'information il, j1i, i2, j2, i3, j3' i5 et j5. - Durant la transition de fermeture du treillis, on transmet 4 symboles d'information U1, U2, U3 et U5 correspondant aux bits (il,jl), (i2,j2), (i3,j3) et (i5,j5) respectivement. Le calcul est fait en 2 étapes (figure 12): A partir de l'état aN,1 du codeur à la fin du codage d'une ligne ou d'une colonne, on génère les bits Y,(N+1), Y2(N+1), Y3(N+1) et j8(N+1) à partir de la table 210 contenant le tableau III. 0 0 1 1 S6,1 0 1 1 1 0 1 0 2 S21 0 0 1 1 0 1 1 3 S4.o 0 1 0 0 1 0 0 4 S120 1 1 0 0 1 0 1 5 S1o.1 1 0 1 1 1 1 0 6 S14,1 1 1 1 1 1 1 7 S8o 1 0 0 0 Tableau III A partir des bits Y,(N+1), Y2(N+1), Y3(N+1) et j8(N+1), on calcule les bits (i4, ja), (i6, j6), (i7? j7) et (i8, j8)(N+1) permettant de générer les symboles U4(N+1), U6(N+1), U7(N+1) et U8(N+i) dans des moyens de calculs 240. Ces bits sont calculés par: i4 (N+1) =i1 (N+l) fi2 (N+1)(i3 (N+l)eY1 (N+1) i6 (N+i) =il (N+i) 3i 2(N+) (Di5 (N+1) EDY2 (N+1) i7(N+l) =i1(N+l) Di3(N+l) Ei5 (N+l) eY3 (N+l) i8 (N+l) =i2 (N+1) @i3 (N+1) Di5 (N+l) Y1 (N+Il) Y2 (N+1) (Y3 (N+I) Les bits jh et j6 peuvent prendre n'importe quelle valeur. On les fixe par exemple à 0, (j4 =j6 =0). Le bit j7 est le bit de parité de tous les bits (j1,... j7) des transitions précédentes: N 7 6 j7 (N+1) =E E l k il 1(N+ 1) k=l 1=1 1-1 Ceci est effectué dans des moyens de calcul représentés sur la figure 12. Préférentiellement, les calculs sont réalisés par programmation d'un calculateur. Les moyens de décodage sont représentés sur la figure 1. Le décodage est effectué par étapes dans deux étages différents. Dans le premier étage, on effectue un décodage itératif des bits les moins significatifs (LSB) des symboles émis (bits i). On stocke dans une mémoire 20 la matrice des symboles reçus après le canal et correspondant à la matrice des symboles émis (la dimension de la matrice est la même que celle de la matrice codée à l'émission). On décode successivement les lignes, puis les colonnes indépendamment. A chaque itération, on génère la décision (connexion 211) sur les bits i (matrice des bits) et une matrice de symboles réels (fiabilité de la décision) qui sera utilisée pendant l'itération suivante est stockée dans la mémoire 20 (connexion 231). Un désentrelaceur 241 retarde les données. - Pour le décodage d'une ligne ou d'une colonne, on utilise un décodeur de Viterbi 221 à décisions souples, correspondant au code convolutif 7/8 à 8-D pour l'exemple concerné. Dans le second étage, après un certain nombre d'itérations pour la lère étape (3 ou 4 en général), on passe (connexion 25) à l'étape 2 pour décoder les bits j, c'est-à-dire les bits les plus significatifs (MSB) des symboles émis. On effectue le décodage itératif des lignes puis des colonnes en utilisant la matrice de symboles réels stockés en mémoire 20 ainsi que la matrice des bits i détectés par le ler étage. - Le décodeur 222 d'une ligne ou d'une colonne est un décodeur à décisions souples du code de parité utilisé lors de la fermeture du treillis du code convolutif 7/8 pour chaque ligne et colonne du code produit. Premièrement, considérons le fonctionnement du premier étage (voie 1). La figure 13 représente le schéma général d'un étage des moyens 221 de décodage de Viterbi à double décision des bits LSB des symboles 4-AM émis (bits i). Ils comprennent: - un sous-ensemble 220 de calcul des métriques, - un décodeur de Viterbi 222 proprement dit qui délivre des décisions dures, - un sous-ensemble 224 de calcul de fiabilité des décisions, - un sous-ensemble 226 de calcul de décisions douces. Le décodage de codes convolutifs systématiques va consister à appliquer un algorithme de décodage à décision douce. Pour simplifier l'exposé, on prendra pour exemple le code convolutif systématique de rendement 7/8. Selon l'exemple particulier décrit pour la ligne d'indice 1 du tableau I, une rangée du code produit est formée par les symboles suivants qui ont été émis à l'émission (pour simplifier l'écriture, l'indice de ligne, ici i=l, est omis dans ce qui suit): - 7N+4 symboles d'information: I= I1....''I 7N+4 - N symboles de redondance de code: R= R1,....RN - 4 symboles de fermeture de treillis: TR= TR1, TR2, TR3 TR4. A cause des imperfections du canal de transmission, les symboles reius ( )(O)n( ) symboles reçus D( ) = (D (),...,D8N+8) vont présenter des différences par rapport aux symboles émis. A la réception, on reçoit des symboles complexes correspondant aux symboles MAQ 16 émis après passage dans le canal. Chaque symbole complexe étant considéré comme la suite de 2 symboles réels. Ensuite, on stocke ces symboles réels dans la mémoire 20 (figure 1) suivant une matrice ayant la même structure que la matrice définie à l'émission. Les symboles réels reçus sont rangés dans la matrice en respectant le même ordre que celui utilisé à l'émission. Le processus de décodage des bits i est itératif, c'est-à-dire que l'on décode les lignes de la matrice puis les colonnes. Le nombre de lignes ou de colonnes à décoder à chaque itération est égal à 7N+4 dans le cas du tableau I (cas sans codage de la redondance) ou à 8N+8 dans le cas o la redondance est codée. (Tableau II). Tout d'abord, considérons le décodage itératif à la v-ème itération pour une ligne de la matrice c'est-à-dire un bloc de symboles réels: D(v)=(D(v-l)..,Ds(8)). L'indice v est un entier correspondant au numéro de l'itération. Le décodage fournit le bloc: D(v) =DV,..,D8SN+,8) de 8N+8 symboles réels (sortie douce) qui seront appliqués à l'itération suivante ainsi que la décision optimale des bits (v) (()... () correspondant aux bits émis i= (il,...., i8+8) qui sont les bits du premier niveau de partition (bits LSB) des symboles 4-AM émis (I1... I7N+ 4, R1,... RN, TR1,... TR4) respectivement. On suppose que les 7N+4 symboles D(v -i) D7(NV+4) correspondent aux symboles d'information, et les N symboles D7(NV+5)..,D8(N+4) correspondent aux symboles de redondance du code 7/8 et les 4 symboles (V-1) (v-l) D8N+5. .,D.N+8 sont les symboles redondants de fermeture du treillis. Les symboles sont traités dans l'ordre suivant: Dl(V-1) D (V-1) v-1 Di D.7,D7N+S; (v- l) (v-l) (V-l) D8,..D14, D7N+6; -. .., ,(V-1)(v-l). D7N-6 t D7N tDiN+4; (-1) (V-1) (v-l) (v-1) D7N+1 # D7N+4 t D,... D(N+v D7N+l1.. DN+4 N+5 8+ Le décodage est effectué en six étapes. L'exposé suivant indique la manière de déduire D(v) de D(v-l). La première étape concerne le calcul des métriques. Le sous-ensemble 220 de calcul des métriques (Figure 13) réalise pour chaque bloc de 8 symboles (1-è'e bloc, 1=0,...N-l) ( (v-1), ___ (1), L(VN±1)) la détection et le calcul de métriques dans chaque sous-ensemble 8-D Si., ainsi que pour le bloc ____ (-1 (v-i) V1 (D7 N+1 -(7N+4 DS(N+5. . D(N+8)) correspondant à la transition fermant le treillis à la fin du codage d'une ligne ou d'une colonne..DTD: du code produit. Pour simplifier, on note par (rl,---r8) le bloc 8- D. Le calcul des métriques est effectué en plusieurs étapes. Tout d'abord considérons le calcul des métriques dans la constellation 1D. Pour k=l,... 7 (7 premiers symboles du bloc), on détecte le symbole 4-AM le plus proche dans chacun des sous- ensembles Bo = {3, -1} et B1 = {1,-3} et on calcule la métrique correspondante: Mko et Mkl respectivement, o Mki est égal au carré de la distance Euclidienne entre rk et le symbole le plus proche dans Bi. Pour k=8, on calcule les métriques M8,0, M8,1, M8,2 et M8,3 du symbole r8 dans chaque sous-ensemble Ci, i = 0, 1, 2, 3 respectivement, o Ci contient le point 4-AM correspondant à la valeur i en décimale des 2 bits affectés à la constellation 4-AM. Ensuite on calcule les métriques dans la constellation 2-D. Pour les 3 premiers blocs 2-D (couples de symboles), c'est-à-dire (rl, r2) (r3, r4) et (r5, r6), on fait la détection et on calcule les (2) métriques Mk;, pour k =1, 3, 5 dans les 4 sous-ensembles 2-D Ej(2) = BiBi, avec 1= 2i + i', i = 0, 1 et i'= 0, 1. La métrique 2-D est définie comme étant la somme des 2 métriques 1-D des 2 symboles du bloc 2-D. On obtient la métrique de (rk, rk.1) dans E(2), pour k = 1, 3, 5: Mk, = Mki + Mk.l, i/ pour 1 = O, 1, 2, 3 avec 1 = 2i + i' Pour le dernier bloc 2-D r7,r8, on calcule les métriques M7(2), j (2) dans les 8 sous-ensembles 2-D E1,j = Bi C2j.i, pour i = O, 1, i' = O, 1, j = O, 1 avec 1 = 2i + i': (2) M7y,1,, = M,i + M2.j+i' Puis on calcule les métriques dans la constellation 4-D. On (4) détecte et on calcule les métriques Ml,1 du bloc 4-D (ri r2 r3 r4) dans les 8 sous-ensembles à quatre dimensions E(4) avec 1= O, 1,...7: E (4) - EO(2)Eo(2)U E(2)>E (2) E'(4) = E(2) E1(2) U E3(2) E (2) E2 (4)= Eo(2) 2E(2) U E3(2)>E (2) -( =s E 3 EO E (4). E E(2) (2) U E(2) 2) Pour chaque sous-ensemble, on calcule 2 métriques 14-D et on (4) E(4)(4 prend la métrique minimale. Par exemple, pour E0(4 on calcule: - la métrique M(2).+M3 dans E (4) (2) (2) (2) (2) L min[M1(2o) + M3(2) M1(2) + M3(32] Pour le bloc (r5 r6 r7 r8), on détecte et on calcule les (4) (4) métriques M5,1,j dans les sous-ensembles E(,j pour l=0,1,...7 et (4) j=0,1. Les sous-ensembles El,j sont définis de la même façon que E(4) sauf que le dernier symbole est positif pour j=0 et qu'il est négatif pour j=1. Par exemple EOj = Eo(2)EojU E3(2) E3(,2j Donc il suffit de remplacer l'indice k du deuxième sous-ensemble 2-D par (4) k,j. La métrique dans Eo,j est: M5(4) (2) +,, (2) M (()(2)J] M, 0,min [Mo0 + 7, + 3,3,7, Enfin on calcule les métriques dans les 16 sous-ensembles 8-D. Le sous-ensemble Sij pour i pair est l'union des 4 sous-ensembles 8-D, chacun étant la concaténation de 2 sous-ensembles 4-D: Si, j =U Ej(4)E(4)lj avec i2=0,1 et i3=O,1 et: i= 8Y3 + 4Y2 + 2Y1; l= 4i2 + 2i3 + i4; 1'= 4i6 + 2i7 + i8; i4 =i2qi3WY i6 =i2Y2 i7=i3BY3 i8 =i2ffi3ffi4fi6fi7 Le calcul de la métrique de r1...r8 dans Sij nécessite le calcul de métriques dans les 4 sous- ensembles 8-D E (4)E(4) (Somme de la métrique de (r1 r2 r3 r4) dans E(4) et celle de (r5 r6 r7 r8) dans E14). Le minimum de ces 4 métriques donne la métrique 8-D dans Si.j, M/,8) Pour chaque bloc 8-D, on fait la détection et on calcule les métriques dans chaque sous- ensemble Si.j qui seront fournies au décodeur de Viterbi. Ces métriques sont aussi les métriques des branches du treillis pendant les transitions 1, 2,..., N+1. Toujours dans le premier étage, on effectue la deuxième étape du décodage. Le sous-ensemble 222 réalise un décodage conventionnel de Viterbi sur les séquences de symboles reçus. On obtient ainsi la séquence optimale décodée (décision dure) de la ligne: (v)=(v)... 7(Nv+)4 7(Nv+.(8 ainsi que la séquence des bits LSB décodés: V)=(V). 18)N+ et la séquence des sous-ensembles 8-D correspondants. La séquence des états correspondants aux états décodés est: )-5 = ("... (+) ce qui correspond à N+1 transitions ou branches, avec (+, état initial et état final nuls. On mémorise le vecteur de la métrique d'état MJi) (c)pour chaque état a= 0,...7 et pour chaque instant j= 1,...N+1. Finalement on stocke les chemins survivants dans une table. Toutes ces résultats délivrés10 par le décodeur de Viterbi 222 sont utilisés pour le calcul de la fiabilité. Durant la troisième étape, on calcule la fiabilité de chaque miv) symbole Ik ou de chaque bit k) de la séquence décodée f() avec k=1,....8N+8 dans le sous-ensemble 224. La fiabilité caractérise la qualité des symboles décodés (probabilité d'exactitude). Cette fiabilité peut s'écrire: F(1) F (i) (i) = 1.. 'F8N+À La fiabilité d'un symbole d'ordre k s'écrit: F (V) =log[ (c( v)) Prob(D (v-1) C) k L Prob (D (v-1) I| (v) o D (v-l) est la séquence de symboles d'entrée et o C(Ikv)) est le jeu de mots-codes correspondant à un symbole 4-AM adjacent à kv). La fiabilité F V)peut s'écrire: Fv) =log[ (,v' exp d2 (D (v-1), (v)) -d2 (D(v-1) C) E k) No En prenant le terme principal de la somme, on peut écrire: k;_ - minc(V) [d(C, D (v-1) _d ((v), D (v-1))] Ce minimum correspond au plus proche chemin d'erreur fournissant un symbole 4-AM décodé adjacent au symbole IV). Cette définition de la fiabilité est aussi celle des bits i kV). En effet, un symbole adjacent à IV) correspond à un bit i qui est le complément de t v). Le calcul de la fiabilité s'opère selon l'algorithme suivant. La séquence décodée par le décodeur de Viterbi IV) correspond à un chemin dans le treillis de longueur N+1. L'algorithme de calcul de la fiabilité FV) de la décision I pour k=1,...8N+8 est le suivant: La fiabilité de la décision Ik pour k = 1,---8N+8 ou du bit t v) pour k = 1,---8N+8 est effectuée en 2 étapes. La première consiste à calculer la fiabilité par rapport aux chemins d'erreurs correspondants aux transitions parallèles et la deuxième consiste à calculer la fiabilité par rapport aux chemins d'erreurs du treillis. La fiabilité finale est le minimum des deux. On calcule d'abord la fiabilité FP due aux branches parallèles. Le traitement est effectué bloc par bloc sur la séquence des symboles Dv-l) et I. Chaque traitement permet de calculer les fiabilités dues aux branches parallèles des 8 symboles ( (v-fl tne (D7,---, D71+7, D7N+5+1) correspondant à la 1-me transition (1 = O,...,N-1) et les 8 symboles (D7..N+'. t* * D7+4 1)D8 t...,D8N>)) correspondant à la (N+l)-éme transition (celle qui ferme le treillis). Comme les branches parallèles du treillis sont affectées aux sous-ensembles 8-D Si.j, cette fiabilité est aussi la fiabilité de la décision (v) dans le sous-ensemble 8-D contenant le bloc décodé correspondant à fv) (la séquence des sous-ensembles 8-D décodés est fournie par le décodeur de Viterbi). Si (rl,...r8) est le bloc (Dvl)...,D7(v), D7N+)) par exemple et Sij le sous-ensemble 8-D décodé correspondant aux symboles 4-AM détectés (dl,... d8) = (,(v), V(V), 7(v5), on peut montrer que le calcul des fiabilités de rk montrer que le calcul des fiabilités de rk (pour k = 1,...8) dans Si.j revient à calculer les fiabilités de (rl, r2, r3, (1- 2Y1)r4, r5, (1-2Y2)r6, (1-2Y3)r7, (1-2(Yl1Y2eY3))I8) dans le sous- ensemble So.,. avec j! = j @ Y1 (D Y2 D Y3, et i = 8Y3 + 4Y2 + 2Y1. Ainsi on se ramène dans tous les cas à calculer les fiabilités dans So. o ou So.1, ce qui rend l'algorithme plus simple. La figure 14 donne une représentation en treillis des sous-ensembles S0.o et So.1 o chaque chemin dans le treillis correspond à un sous-ensemble de la forme Bil Bi2... Bi7 C2j8+i8 Nous allons décrire l'algorithme pour S0, c'est-à-dire Sij = So,0, afin de calculer les fiabilités des décisions dk pour k = i,....8: On réalise tout d'abord le calcul des métriques 2-D: Mi.j (1) = M.i + M2.j i = 0,1; j = 0,1 Mij (2) = M31i + M4j i = 0,1; j = 0,1 Mi.j (3) = M5i + M6.j i = 0,1; j = 0,1 Mij (4) = M7i + M8j i = 0,1; j = 0,1 o Mki est la métrique de rk dans Bi pour k = 1,...7; et M8,i est la métrique de r8 dans Ci. Dans le cas o le calcul des fiabilités est effectué pour Sol, M8,i est calculé dans C2 et C3 (i = 2, 3). - On opère alors une recherche du chemin le plus proche de (r1,...r8) dans So. 0: On considère séparément la partie supérieure et la partie inférieure du treillis de S0o0o. Dans le treillis supérieur on calcule M(O,k) = min (Mo.0 o(k), Ml.l1(k)) pour k = 1, 2, 3 M(0,4) = min (Mo0o(4), Ml1(4)). On stocke les bits (i,1...i8) donnant le minimum, avec i1 = i2, i3 = i4, i5 = i6, i7 = i8, dans la table [i(O,1),... i(0,8)] et on calcule: MET (0) = E M(O,k) k-l Dans le treillis inférieur on calcule M(1,k) = min (Mo.l(k), Ml0(k)) pour k = 1, 2, 3, M (1,4) = min (MO.,(4), M1.0(4)). MET (1) = > M(1,k) k-1 On stocke les bits il... i8 correspondant au minimum dans [i(1,1),---i(1,8)] avec il=i2,i3=i4 i5=i6 i7=i8 On vérifie si les séquences [i(O,1),...i(0,8)] et [i(1,1),...i(1, 8)] sont 2 séquences valides. On calcule les bits de parité p(O) et p(1) pour les séquences [i(O,1), i(O,3), i(O,5), i(O,7)] et [i(1,1), i(1,3), i(1,5), i(1,7)] respectivement. Pour k = O, 1, si p(k) = O, la séquence correspondante appartient au treillis (ou à So.o), sinon la séquence sera modifiée. On calcule des différences de métriques 2-D: 6(O,k) = | Moo(k) - M.1 (k), k = 1, 2, 3 6(O,k) =] M0.o(k) - Ml,l(k)], k = 4 6(1,k) = I M01(k) Ml.o(k) |, k = 1, 2, 3 6(1,k) = | Mo. 1(k) - M1.o(k), k = 4 Puis on calcule le minimum des 4 métriques pour chacun des 2 treillis supérieurs et inférieurs (q = O, 1 respectivement): (q) = k=,---4 (q, k), q = 0,1A()=k=l, ---, 4 On stocke l'indice k donnant le minimum dans kmin(q) et on calcule le second minimum A2(q). - Si le bit de parité p(q) = 1, on complémente les bits i(q, 2 kmin,(q)1), i(q, 2kmin(q)) et on incrémente la métrique MET(q) de A (q). Cette opération est faite pour q = O (treillis supérieur) et q = 1 (treillis inférieur). Puis on calcule Amin = |MET(O) - MET(1) et on mémorise l'indice c (O ou 1) donnant le minimum de MET(O) et MET(1). On initialise les fiabilités FP(1),...,.FP(8) de (d1...d8) dans Soo: FP(2k-1) = FP(2k) = 6(c,k) + (1 - 2p(c)) A (c) pour K - Kmin (c) FP(2k- 1) = FP(2k) = A2(C) + (1 - 2p(c)) A (c) pour k = kmin (c) o FP(k) est la fiabilité de dk dans So,. Puis on met à jour les fiabilités FP(k), k = 1,....8: Pour k = 1,...8 avec i(c,k) P i (1-c, k): FP(k) = min [FP(k), Amin] 5. Pour k = 1, 2, 3, 4: FP(2k-1) = min [FP(2k-1), Ak] si i(O, 2k-1) = i(1, 2k-1) FP(2k-1) = min [FP(2k), Ak] si i (0,2k) = i(1,2k) avec Ak = Amin+ 6(1-c, k) + [1 2p(1-c)] A (1-c) si k - kmin (1-c) Ak = Amin + A2 (l-c) + [1 - 2p(1-c)] A (1-c) si k = kmin (1-c). On détermine la fiabilité due aux chemins d'erreur du treillis (Figure 15). Considérons le décodage d'une ligne (étape 300). On part de: - f,_v) qui est la séquence de symboles 4-AM décodés par le décodeur de Viterbi pour k = 1,...8N+8; - M(v) (o) = qui est la métrique de l'état o à l'instant k (k- me transition) pour k =1,...N+1. - Dk(v-l) qui sont les symboles d'entrée (fournis par le décodeur à l'itération précédente) pour k = 1,...8N+8, et on initialise le tableau des fiabilités F(v) = (Fk(v), k= 1,...8N+8) à FP(v) = (FPk(V), k = 1,... 8N+8) ou FPk(V) est la fiabilité de >() due aux transitions parallèles (étape 301 figure ). - pour k=N+1,....2 o k correspond à un instant (indice de la transition) on effectue les opérations suivantes: a) à partir de l'état du codeur après la k-ième transition dans le chemin décodé â(v) on détermine l'état 0V-) après la (k-1)-ième transition du chemin décodé et les 7 autres états 4v) j=.7(tae30))Pu précurseurs de k(v) c'est-à-dire a(jvk1, j1...7 (étape 304). Pour cela, les valeurs de ôk(v) pour k variant de 1 A N+1, sont fournies (v) par le décodeur de Viterbi tandis que les valeurs de ajk_1 peuvent être stockées dans une mémoire. A partir des métriques des états (v) (v) (y) a(Vk-' l, 2.k-l.. . CV k-1 et ( calculées et stockées dans le décodeur de Viterbi pour k = 2,... N+1, et qui sont notées: M(V (V)) M;-1 (0lk-1) M(V> (a (V) Mk- (2, k-1) chemins provenant des 7 états jk1, .7.Ces 7 métriques Mk)(.a (v) cumulées sont:8 (j)=M _(j,_l,)+MET( jk_ l (ci) o _ (v) MET(co calcule) est la métrique de la transition de l'état V),k1 vers l'état 8(v) qui est aussi la métrique du sous-ensemble 8-D affecté à cette transition. Ces métriques sont stockées dans une..DTD: mémoire au cours du décodage de Viterbi (étape 306). On calcule la différence entre la métrique optimale et chacune des métriques cumulées: A (j) =o(j) -MR() (O(dv)), j=l,...7 (c)(muv))essot: a())+E())o o (c&fV)) est s la métrique optimale de l'état 8(v) Ensuite on examine les 7 survivants précurseurs à l'état a(v). _ (v) (v) On remonte au survivant d'ordre j de vk vers ojk-1 Puis on 1)= j-vj,... 7v) examine chaque survivant d'ordre j de l'état jk_ 1 jusqu'à l'état initial o=O, ce qui consiste à faire varier l'indice de la transition de k à 1. Pour réduire la complexité, on peut examiner les 7 survivants de l'état av) jusqu'à l'état du survivant à l'instant k-L au lieu de l'état 0j, k-1.jusqu'à l'état du survivant à l'instant k-L au lieu de l'instant 1, donc un nombre fixe de transitions. Pour L=3 la dégradation des performances est négligeable. On compare les 8 symboles 4-AM affectés à la k'-ème transition du survivant d'ordre j aux 8 symboles décodés pour k' variant de k jusqu'à 1 ou de k à (k-L) dans le second cas. Si le symbole décodé et le symbole de la k'-ème transition du survivant j de même rang sont adjacents, on remplace la fiabilité du symbole décodé par A (j) si ce dernier est inférieur à cette fiabilité (étape 312). -(V) - (v) On calcule la table des symboles v) adjacents à Ik correspondant au minimum, pour k variant de 1 à 8N+8, et, à chaque mise à jour de la fiabilité d'un symbole, on met à jour son symbole adjacent en le remplaçant par le symbole 4-AM correspondant relatif à la transition d'ordre k' du survivant j. A la fin, on obtient les fiabilités F(V) du symbole déc8dé tkv) ainsi que le symbole adjacent Iv) correspondant pour k=1,...8N+8 (étape 326). La fiabilité est ensuite normalisée durant la quatrième étape pour permettre de calculer la décision douce Dv) pour k = 1...8N+8. Trois méthodes sont utilisables pour calculer la norm (V) fiabilité normalisée Fk m. On peut calculer: soit Ff rm(v) =F(v)/ soit Fkorv) F(V+ F soit norm(v) (F V>/3 sot Fk kl + I -F norm (v) Mv soit Fk =Fk /91) +0p2 o F est égale à la moyenne de Fv) calculée sur toute la matrice des fiabilités, 5, et 2 étant des constantes vérifiant Y=O1 (1-02) À On calcule ensuite, au cours de la cinquième étape, des décisions douces non pondérées (sous-ensemble 226, figure 13). La décision douce DXv) est calculée à partir de la décision optimale v) fournie par le décodeur de Viterbi, de sa fiabilité normalise F rm(V) et de la squence des symboles 4-AM v) obtenue normalisée Fk et de la séquence des symboles 4--AM kv) obtenue précédemment. Le symbole 4-AM f(V) est un symbole adjacent du symbole kI c'est-à-dire que iv)-(v)=2. Il correspond au symbole 4-AM le plus probable après le symbole (V). Le symbole (v) est donné par: -5 DJV =1/2( >(>+I_( t)+ g (V) Vn)Fknorm(V) L;k. -k r4 o la fonction sgn est définie par: 1 si x>0 sgn(x) = 0 si x=0. -1 si x symboles 4-AM. Pour améliorer les performances, au cours d'une sixième étape, on pondère D (v) avec les symboles D( ) reçus après le canal qui sont conservés dans la mémoire 20 pour calculer Dk: D(V)=v D(v)+(1- av)D( ) o av est un coefficient de pondération. Par exemple: a1 =0,6; a2 = 0,9; av =1 pour v supérieur à 2. Le but est de réduire l'effet de propagation d'erreurs durant les premières itérations. Les étapes 5 et 6 sont effectuées ensembles dans le sous-ensemble 226. Deuxièmement, considérons le fonctionnement du second étage (voie 2) pour le décodage des bits j. Les bits j, donc les bits MSB des symboles 4-AM sont codés par le code de parité appliqué à chaque ligne et à chaque colonne de la matrice du code produit. Ceci est réalisé lors de la fermeture du treillis. Le décodage est un décodage itératif comme pour les bits i. La figure 16 représente le schéma général d'un étage des moyens 221 de décodage du code de parité des bits MSB des symboles 4-AM émis. Ils comprennent: - un décodeur 322 de code de parité qui délivre des décisions dures; - un sous-ensemble 324 de calcul de fiabilité des décisions; - un sous-ensemble 326 de calcul des décisions douces. (O) Pour la première itération (m=l), les symboles Xk) sont les symboles reçus en sortie du canal c'est-à-dire: (D( ) n( ) (o) n (o) 1.-DN+4tD8N+5,. ' '8N+7 À La figure 17 donne une représentation en treillis des 7N+7 bits (il *... j7N+4J 8N+5J s8N+6 jS8N+7) codés par le code de parité. Dans ce treillis, tout chemin du point I au point F correspond à un mot de code de longueur 7N+7. Le décodage d'un bloc de 7N+7 symboles xk-) pour l'itération de rang m est effectuée en 3 étapes. Au cours de la première étape ( étape 322), on effectue un (M-1) décodage à décisions dures de Xkm 1). On applique une décision à seuil, symbole par symbole, sur ces symboles dans le sous-ensemble B., o 1k pour k = 1,.... 7N+4, 8N+5, 8N+6, 8N+7 est la séquence des bits LSB des symboles 4-AM estimés par le décodage itératif du premier étage après la convergence. Cette décision à seuil fournit une première estimation des bits (m), avec m) jk, avec Jk) (respectivement 1) si la décision dans BIk est positive (respectivement négative). Ensuite on calcule pour chaque symbole xm-) la valeur absolue de la distance d (xm-1), tm-l)) séparant ce symbole du seuil de décision t (m-1) dans le sous-ensemble BI, o le seuil dans B0= {3,-1} (respectivement Bu= {1,-3}) est égal à +1 (respectivement -1) et on calcule le minimum A sur k de la distance d(x(m-1), t m-l)) ainsi que le deuxième minimum A2. Enfin, on vérifie le bit de parité p des bits Jm). Si la parité est satisfaite (p=O), la séquence des bits Jm) est la séquence optimale. Sinon, on complémente le bit (m) o kminest Ofl kmin okmin est l'indice donnant le minimum A de d(x(m-l), tk(-l)). Au cours de la seconde étape, on effectue le calcul des fiabilités (étape 324). La fiabilité de la décision 3(m) est donnée Jk par: FJk() = (1-2p) A+d(xk(m-l) t(m-l)) kkmin FJm)= (1-2p) +A2, k=kmin Ensuite on normalise la fiabilité selon: FJkorm o FJ est la moyenne des fiabilités FJ(m). Au cours de la troisième étape, on effectue le calcul de la (m) décision douce Xk(m) (étape 326). Cette décision est obtenue en fonction de t (m),(m) FJorm'(m) par: Xk =tt (+2 sgn(1 -2 (m)) X FJkr(m) o sgn(.) est la fonction signe. L'invention vient d'être décrite dans le cas d'un code convolutif systématique de rendement 7/8. L'homme du métier peut appliquer les mêmes principes de codage et de décodage à d'autres codes convolutifs systématiques de rendement P/(Q.M) combinés à d'autres modulations d'amplitude multidimensionnelles ayant pour dimension Q et disposant de 2M états. REVENDICATIONS 1. Procédé de protection de données d'entrée mis en oeuvre dans un système de transmission numérique, le procédé comportant une phase de codage desdites données et une phase de décodage itératif, la phase de codage comportant une première étape de codage convolutif systématique en treillis permettant le décodage itératif combinée à une seconde étape d'attribution des données codées à des symboles d'une modulation numérique, caractérisé en ce que lors de la première étape, le codage systématique en treillis présente un rendement de codage P/(Q.M), M, P et Q étant des entiers avec Q et M supérieurs à 1, le code convolutif systématique étant utilisé pour générer un code produit en blocs avec fermeture du treillis par ajout de données redondantes, le code produit étant formé de composantes générées par codage de lignes et de colonnes d'une matrice groupant les données codées par le code convolutif systématique, la seconde étape combinant le code produit avec une modulation d'amplitude multidimensionnelle de dimension Q comportant 2M états, le décodage itératif étant un décodage en blocs. 2. Procédé selon la revendication 1 caractérisé en ce que le rendement est égal à 7/8, la modulation étant une modulation 8-D à 8 dimensions. 3. Système de transmission numérique à protection de données d'entrée, comportant des moyens de codage desdites données et des moyens de décodage itératif, les moyens de codage comportant: - un premier sous- ensemble pour effectuer un codage convolutif systématique en treillis permettant le décodage itératif, - un second sous-ensemble pour attribuer les données codées à des symboles d'une modulation numérique, caractérisé en ce que le premier sous-ensemble met en oeuvre un codage convolutif systématique en treillis de rendement de codage P/(Q.M), M, P et Q étant des entiers avec Q et M supérieurs à 1, le code convolutif systématique étant utilisé pour générer un code produit en blocs avec fermeture du treillis par ajout de données redondantes comportant au moins un bit d'un code de parité, le code produit étant formé de composantes générées par codage de lignes et de colonnes d'une matrice groupant les données codées par le code convolutif systématique, le second sous-ensemble combinant le code produit avec une modulation d'amplitude multidimensionnelle de dimension Q comportant 2M états, le décodage itératif étant un décodage en blocs. 4. Système selon la revendication 3 caractérisé en ce que les moyens de codage comportent des moyens, dits machine d'états, pour définir des états successifs du codeur et délivrer les symboles de redondance de fermeture du treillis. 5. Système selon la revendication 3 caractérisé en ce que le rendement est égal à 7/8, la modulation étant une modulation 8-D à 8 dimensions, les moyens de codage convolutif systématique codant sept symboles d'entrée en huit symboles de sortie en ajoutant un bit de redondance. 6. Système selon la revendication 5 caractérisé en ce que les moyens de codage convolutifs systématiques comportent deux étages de cellules à décalage, les symboles de sortie étant obtenus en combinant linéairement les données issues des cellules à décalage. 7. Système selon une des revendications 3 à 6 caractérisé en ce que les moyens de décodage itératifs comportent au moins deux voies opérant successivement: - sur une première voie, le système met en oeuvre, à chaque itération de la voie, un premier décodage itératif avec: a) des moyens pour calculer des décisions dures se rapportant au code convolutif systématique, b) des moyens pour calculer des premières fiabilités des décisions dures associées à chaque sous- ensemble de la modulation multidimensionnelle, et des secondes fiabilités associées au treillis du code convolutif systématique, c) des moyens pour sélectionner des fiabilités minimales entre les premières et secondes fiabilités de chaque décision, d) des moyens pour calculer des décisions douces servant à l'itération suivante de la première voie en fonction des fiabilités minimales sélectionnées et des décisions dures, - et sur une seconde voie, le système met en oeuvre, à chaque itération de la voie: 4o a) des moyens pour calculer des décisions dures se rapportant au code de parité, b) des moyens pour calculer des troisièmes fiabilités pour chaque décision dure de la seconde voie en fonction des décisions dures de la première voie, c) des moyens pour calculer des décisions douces en fonction des troisièmes fiabilités, des décisions douces issues de l'itération précédente de la seconde voie et des décisions dures de la première voie.