Brevet FR2801744A1 — publié le 20010601

La présente invention concerne un procédé permettant d'améliorer les techniques de transmission de bits d'information avec codage correcteur d'erreur. Ce procédé est basé sur l'utilisation d'informations a priori pour augmenter les performances de ces techniques de transmission. Dans ce but, un émetteur exécute les étapes suivantes : Introduction de bits d'information a priori de façon pertinente dans les données d'entrée du codeur de canal. Codage par le code correcteur d'erreurs retenu. Suppression éventuelle de bits d'information a priori dans les bits de données codées. Emission vers un canal des bits restants Et un récepteur exécute les étapes suivantes : Constitution de données reçues à partir d'un signal reçu selon ledit canal par rajout dont le signe représente une estimation initiale des bits d'information et dont la valeur absolue mesure la confiance associée à la dite estimation initiale. Rajout des données d'information supprimées dont le signe correspond au bit initial supprimé avant émission et dont la mesure de confiance associée est maximale. Décodage en accord avec le code correcteur d'erreur retenu. Suppression des bits d'information a priori contenus dans les bits décodés. En matière de transmission numérique de l'information, on distingue habituellement le codage de source du codage de canal. Le codage de source forme la représentation binaire du signal à transmettre. Beaucoup d'efforts ont été effectués ces dernières années en matière de codage de source pour réduire le débit numérique tout en conservant une bonne qualité de transmission. Un exemple parlant est le vocodage utilisé dans les téléphones cellulaires. Mais ces nouvelles techniques de codage de source nécessitent une meilleure protection des bits vis-à-vis des perturbations lors de la transmission. D'autres part les contraintes physiques et économiques ainsi que la réglementation des puissances limitent la portée des systèmes de transmission numérique. Beaucoup de travaux ont été effectués, en matière de codage de canal, en particulier dans une nouvelle classe de codages que représentent les codes à décodage itératif. Ces codes ont bien sûr permis de nets progrès dans ce domaine mais, les solutions pour obtenir des performances variables en fonction de l'état de la liaison entre l'émetteur et le récepteur en termes d'atténuation du signal sont très peu nombreuses pour ne pas dire unique. La solution habituellement utilisée est ce que l'on appelle le poinçonnage. La technique décrite ici représente une alternative intéressante dans la mesure de sa simplicité et de son universalité tout au moins pour les codes déjà connus. Plaçons-nous dans le cadre de l'utilisation d'un code dit systématique. Si l'on considère les données d'entrée à coder comme un vecteur de k éléments [E] et les données de sortie du codeur comme un vecteur de n éléments [c] , les codes systématiques représentent les codes dont le vecteur de sortie [c] contient les k composantes du vecteur É\ appelée partie systématique. Les bits a priori insérés avant codage vont donc se retrouver tels qu'ils étaient avant codage et l'on pourra aisément les supprimer après codage et avant émission permettant ainsi d'améliorer le rendement après modification du code. Bien sûr, l'emploi de codes systématiques n'est pas obligatoire, mais il permet de supprimer les bits d'informations a priori après codage et du même coup d'améliorer le rendement du code modifié comme on l'a vu le précédemment. Lors du décodage, il faut compléter les bits reçu avec les bits a priori supprimés. On ré obtient alors les n bits avant émission. Il faut modifier aussi [R] le vecteur des confiances des bits dont le signe dépend du bit reçu et dont la valeur absolue est une estimation de la confiance accordée au bit reçu. En effet, il faut attribuer aux bits d'information a priori une confiance maximale dans le sens où nous sommes sûre de leur valeur. En outre, les composantes de [R] peuvent ne comprendre que deux valeurs, l'une pour signifier une certaine incertitude sur le bit reçu et une autre pour signifier que nous sommes sûr de la donnée qui est connue a priori. En résumé, la seule nécessité au décodage est d'utiliser un décodeur sachant faire la différence entre bits reçus et bits connus a priori. Enfin, après décodage, il faut bien sûr supprimer les informations a priori qui ne font pas partie des données à transmettre. On voit donc que ceci peut s'appliquer à n'importe quel code, systématique ou non, pour peu que l'on utilise un décodeur sachant tirer parti de l'information a priori. Ceci est donc a fortiori vrai pour l'utilisation de tout décodeur à entrée souple. De plus, il est possible de faire varier la quantité de bits d'informations a priori, lors de l'émission et donc de faire évoluer les performances et le rendement de codage. L'utilisation de cette technique d'amélioration des codes correcteurs d'erreur est particulièrement avantageuse avec les codes à décodage itératif utilisant des codes en blocs. La conjonction des particularités de ce code et de l'invention permet plus qu'avec n'importe lequel des codes utilisables d'en améliorer les performances. En effet, dans le cas des codes en blocs à décodage itératif, tels que ceux qui sont décrits dans le brevet européen 0 654 910, Les améliorations des performances en codeur et du décodeur tels que nous allons les présenter permettent de tirer le plus grand profit des informations a priori tout en dégradant le moins possible le temps de traitement par nombres de bits utiles traités et le rendement du code. Dans le cas qui nous occupe, le code utilisé est un code produit qui correspond à la concaténation de deux ou plusieurs codes en blocs. L'intérêt particulier de ce code concaténé est d'avoir une distance de Hamming égale au produit des distances de Hamming des codes le constituant. Dans l'invention qui nous préoccupe, les informations a priori peuvent être placées n'importe où mais si nous les plaçons selon une ou plusieurs lignes complètes et/ou selon une ou plusieurs colonnes complètes, nous pouvons savoir ce que va donner le codage de ces lignes et/ou colonnes. La solution la plus simple mais tout aussi efficace consiste à insérer dans la matrice avant codage des lignes et/ou des colonnes de 0. Après codage, cela nous donnera des lignes et/ou des colonnes complètes de 0 (la partie codée y compris). Ainsi, des lignes et/ou des colonnes complètes pourront être supprimées avant émission, améliorant ainsi d'autant le rendement de codage en émettant que le strict minimum des bits de la matrice. L'invention tire un autre avantage du fait que l'on connaisse a priori ce que donne le codage des lignes et des colonnes complètes de bits d'information a priori. En effet, il est inutile de recoder à chaque nouvelle matrice de données la totalité de la matrice mais seulement les lignes et les colonnes ne contenant pas que des bits d'informations a priori. Ainsi, comme indiqué précédemment, le codage est presque aussi rapide en termes de temps de traitement pour un même nombre de bits. Le code produit est donc très intéressant, mais le décodage suivant le MVP est généralement trop complexe, sauf dans le cas de codes en bloc court. Un procédé tel que décrit dans la demande de brevet européen 0 654 910 permet un décodage suffisamment rapide pour décoder tous les codes produits qui sont construits à partir de codes en blocs linéaires et pour lesquels ont dispose d'un décodeur algébrique. Les performances sont quasi-optimales (voir R.Pyndiah et al Near optimum decoding of product codes , Proc. IEEE GLOBECOM'94 Conférence, Vol. 1/3, San Fransisco, pages 339-343). En effet, il permet d'obtenir pour un code produit donné et en quatre itérations, un TEB égal à 10 pour un rapport signal à bruit qui se situe à environ 2,5dB au-dessus de la limite théorique de Shannon pour le code produit considéré. La complexité de ce procédé est beaucoup plus faible que toutes les solutions proposées. On est ainsi en mesure de décoder des codes produits de très grande dimension. L'invention telle qu'elle a été décrite dans le cas général permet dans le cas de ce procédé de décodage itératif de tirer parti des spécificités de ce procédé pour en améliorer les performances en termes de temps de décodage par unité de données. Soient n,k et d les paramètres du code produit, de la forme : n = \ni,k = Y\ki,d = [di[iota]=l ;=1 [iota]=l Où L est le nombre de codes élémentaires dont les paramètres respectifs sont ^k^dj) (dans la suite on considérera le cas L=2 sans limiter la généralité). L'invention permet d'adapter les performances et le rendement en fonction du nombre de lignes ou de colonnes de bits d'information a priori. Si on considère la matrice {D'} de k', lignes et k'2colonnes, on obtient une deuxième matrice {[pound]>} de C lignes et k2colonnes en rajoutant k, -k lignes de bits connus et k2- k'2colonnes de bits connus (on peut tous les prendre nuls sans perte de généralité et de performances, ceci grâce au fait que les codes utilisés sont linéaires). Après codage avec le code produit, on obtient une matrice de n, lignes et n, colonnes où l'on retrouve dans la partie systématique les k, -k', lignes de 0 et les k2-k'2colonnes de 0. De plus comme on l'a vu, les parties codées sont nulles pour ces lignes et l'on peut aussi omettre de les transmettre. Au final, de la matrice n, [chi]2on ne transmet que n, [chi] n2- (k, - k', )[chi] n2-(k2- k'2)[chi] n, bits au lieu de n, [chi]n2-(kt-k', )[chi] k2- (k2-k'2)[chi] k, sans utiliser cette particularité. A la réception, il faut reconstituer les matrices de confiance et de l'estimation des bits reçus respectivement {/?} et {D } qui doivent avoir bien sûr une taille de n, n2. Pour cela, on replace les lignes et les colonnes de 0 supprimées à l'émission dans la matrice de décision {[upsilon]} en remplissant les composantes correspondantes aux bits d'information a priori par l'estimation correspondante au 0 et dans la matrice de fiabilité {R], on leur attribue une valeur de confiance maximale. Dans le cas d'une application concrète, les données sont quantifiées et il existe une valeur maximale qui correspond à l'amplitude maximale de la quantification des valeurs de confiance. Il est essentiel que les confiances soient bornées pour posséder un maximum atteignable. Ceci est dû au fait que si on ne borne pas la confiance, dans le cas pratique d'un calculateur l'infini n'est pas représentée et si l'on donne une confiance très élevée mais pas maximale au sens stricte cette valeur sera dépassée donnant lieu à des confiances supérieures à la confiance des bits d'informations a priori ce qui contredit le fait que ce sont ces bits dont nous sommes le plus sûr. La conséquence directe de ceci est la détérioration des performances. Bien sûr dans le cas d'une application sur ASIC où les données sont quantifiées, il n'y a pas de problème sachant que cette valeur maximale existe par le nombre de valeurs maximales que peuvent prendre les valeurs des confiances sur les bits reçus. Dans le cas d'une simulation sur ordinateur, cette notion de confiance maximale reste indispensable mais devient plus artificielle. De plus, certaines améliorations visent à multiplier les valeurs de confiance par un nombre positif inférieur à 1 , appelé facteur d'échelle, pour éviter la saturation du décodeur. Dans notre cas, cette amélioration se révèle indispensable dans la mesure où l'ajout d'information à forte confiance augmente d'autant plus ces risques de saturation. Conjointement au choix du nombre de lignes et de colonnes d'information a priori à utiliser, il faut en même temps faire varier ce facteur d'échelle. Cette tâche peut bien sûr être confiée à un petit processeur en même temps qu'il modifie les paramètres du décodeur. Le décodage des matrices {R.} et {[theta]} reconstituées peut être fait notamment grâce au procédé décrit dans EP-A-0 654 910. Le décodage se fait de façon itérative d'abord les lignes puis les colonnes puis les lignes, etc ... A chaque itération les matrices [R] et {D} sont ré estimées II comporte alors les étapes suivantes avec chaque ligne ou chaque colonne : Détermination d'un nombre p d'indices pour lesquels les composantes du vecteur de données sont les moins fiables ; Construction d'un nombre que mots binaires à décoder à partir desdits p indices et du vecteur de décision ; Obtention de q' mots de code sur la base de décodages algébriques du vecteur de décision et des q mots binaires à décoder ; Sélection, parmi les q' mots de code obtenus, de celui ayant la plus faible distance euclidienne avec le vecteur de données ; Calcul d'un vecteur de correction w], chaque composante W- du vecteur de correction étant respectivement calculée en déterminant un éventuel mot ayant sa j -ième composante différente de celle du mot de code sélectionné, et en appliquant la formule : W; M -M" "d' " -C '.R, ,.c: V ^ ) Lorsqu'un mot concurrent a été déterminé, M et M désignant respectivement les distances euclidiennes, par rapport au vecteur de données, du mot de code sélectionné et du mot concurrent, et C et Rjdésignant respectivement les y -ièmes composantes du mot de code sélectionné et du vecteur de données contenant une ligne ou une colonne de la matrice {R} ; Approximation de Wjquand le mot de code concurrent ne peut être trouvé par Wj= [beta] - CJ .RJcJ où [beta] est une approximation du MVP qui croît avec le nombre d'itérations ; Obtention d'un nouveau vecteur [D] de décision pris égal audit mot de code sélectionné ; Et calcul du nouveau vecteur de données en ajoutant le vecteur de correction }V] multiplié par un second coefficient de confiance au vecteur d'entrée correspondant extrait de la matrice d'entrée. Une fois le décodage de la matrice terminé, on récupère dans la matrice de décision {D} les bits décodés. Bien sûr cette matrice contient des lignes et des colonnes de bits à 0 qui sont les informations a priori. Il faut donc réaliser, l'opération inverse de celle réalisée avant codage pour extraire les bits d'information a priori et reconstituer le flot de données émis. Le second aspect de l'invention est de pouvoir moduler les performances grâce à l'ajout plus ou moins grand de lignes et/ou de colonnes d'information a priori. Il suffit pour cela qu'un dispositif extérieur au codeur et au décodeur leur fournissent le nombre de lignes et de colonnes d'information a priori, la valeur du facteur d'échelle dans le cas du décodeur et les coefficients de confiance utilisés lors du décodage. Une autre amélioration du décodage se situe dans le fait que nous ne sommes pas obligé de décoder les lignes et/ou les colonnes complètes de bits d'informations a priori du fait que nous connaissons déjà le résultat du décodage et que même si ces valeurs servent lors du décodage, elle ne seront ni modifiées dans la matrice des données ni dans la matrice de décision. Il n'est pas non plus utile de recalculer les valeurs des confiances et des bits de décision associés aux bits d'information a priori, lors du décodage des lignes et des colonnes, dans la mesure où leurs valeurs sont connues et ne varient pas lors du décodage. Ceci permet notamment d'améliorer la vitesse de décodage et d'obtenir une vitesse de décodage quasi-constante en terme de nombre de bits d'informations utiles traités par unité de temps quelque soit la quantité d'information a priori qui a été rajoutée. Ces particularités et avantages apparaîtront de façon plus précise dans la description ci-après d'exemples de réalisation non limitatifs, lue conjointement aux dessins annexés dans lesquels : La figure 1 présente l'architecture générale d'un système de transmission La figure 2 présente le fonctionnement du codeur de canal utilisé dans le cas de l'invention du brevet européen 0 654 910 La figure 3 présente le fonctionnement du décodeur de canal utilisé dans le cas de l'invention du brevet européen 0 654 910 La figure 4 présente le décodage d'une ligne dans le cas du brevet européen 0 654 910 La figure 5 présente le fonctionnement du codeur de canal dans le cas de l'invention décrite dans ce document La figure 6 présente le fonctionnement du décodeur de canal dans le cas de l'invention décrite dans ce document La figure 7 présente l'architecture d'un décodeur dans le cas de l'invention décrite dans ce document La figure 8 présente l'architecture d'un codeur dans le cas de l'invention décrite dans ce document La figure 9 présente des résultats obtenus avec l'invention décrite dans ce document Dans la chaîne de transmission illustrée sur la figure 1 , les bits d'information à transmettre a}sont contenus dans le signal X( = [sum]ajh(t - jT) j adressé à l'entrée du codeur de canal 12 de l'émetteur 10. Ce signal (?) est formé par le codeur source à partir d'un signal S(t) . Le codeur de source 11 est classiquement tel que les ax soient indépendants et prennent de manière équiprobable la valeur 0 oui . h(t) désigne une porte temporelle de durée T qui est l'intervalle de temps séparant deux bits successifs. Le codeur de canal 12 applique un codage en bloc pour produire un signal r(/) = [sum] ,[Lambda](f -7T) j où les Cjsont les bits codés et est l'intervalle de temps séparant deux bits codés (T' E(t) =jeJh(t - jTs)sm(2Uf0t) j où f0est la fréquence de l'onde porteuse et e)= 2cj-\ . Le signal reçu au niveau de l'antenne du récepteur 15 est atténué par un coefficient a . Le démodulateur 16 élabore le rapport de vraisemblance de chaque bit qui peut s'écrire : Rj= [beta]j+ Bjoù les échantillons 5, sont les échantillons de bruit induits par le canal de propagation, indépendants des bits c . , et non-corrélés entre eux, de moyenne nulle et d'écart type [sigma] , fonction du rapport signal à bruit. Le signal à la sortie du démodulateur 16 est alors égal à : R(t) = [sum]RJh(t - jT ) J Le décodeur de canal 17 prend ensuite la décision concernant les bits émis en exploitant le codage de canal utilisé à l'émission pour minimiser les erreurs. Son signal de sortie est donné par : Z(t) = [sum]â^t -jT) j où les bits âjsont les décisions prises par le décodeur de canal. Le décodeur de source 18 reconstruit ensuite le signal S(t) à partir des bits fournis par le décodeur de canal 17. L'invention réside essentiellement dans des améliorations du codeur 12 et du décodeur 17 de canal. On comprendra donc qu'elle est compatible avec les divers types de codage/décodage de source, de modulation/démodulation et de canaux de propagation. Dans le cas sans amélioration, le code en bloc appliqué par le codeur de canal 12 est un code produit obtenu à partir de codes élémentaires systématiques. Dans le mode de réalisation décrit ci-après, c'est le produit de deux codes en blocs linéaires C, et C2de paramètres respectifs (nx, kx, dx) et (n2,k2,d2) . La procédure de codage, réalisée avec des circuits de codage classiques, est illustrée sur la figure 2. Les bits a}reçus successivement du codeur de source 11 sont d'abord rangés, par groupe de k x k2bits, selon une matrice {a} à kxlignes et k2colonnes (étape 21). Le code en bloc C2est alors appliqué à chacune des k lignes de la matrice {a}, ce qui fournit la matrice {b} à kxlignes et n2colonnes (étape 22). Comme le code C2est systématique k2des n2colonnes de la matrice {b} sont identiques à la matrice {a}, par exemple les k2premières colonnes. Ensuite (étape 23), le code en blocs C est appliqué à chacune des n2colonnes de la matrice {b} , ce qui fournit une matrice {c à nxlignes et n2colonnes dont les composantes c}sont transmises successivement au modulateur 13 sous la forme du signal Y(t) (étape 24). Comme le code C, est systématique, k des nxlignes de la matrice {c sont identiques à la matrice [b] , par exemple les kxpremières lignes. Ainsi, la partie supérieure gauche, de k lignes et k2colonnes, de la matrice {c est identique à la matrice {a}, les autres composantes de la matrice {c étant des bits de redondance. Toutes les colonnes de la matrice {c sont des mots de code du code C . De même, toutes les lignes de la matrice {c sont des mots de code du code C2, étant donné que les codes élémentaires sont linéaires. Dans le cas de l'invention, l'amélioration nous amène à la procédure de codage suivante illustrée à la figure 5. Les bits a}reçus successivement du codeur de source 11 sont d'abord rangés, par groupe de k [chi]k bits, selon une matrice {a} à k\ lignes et k colonnes (étape 71). Une matrice {a'} est formée en rajoutant kx-k lignes de zéros et/ou k2-k colonnes de zéros (étape 72). Le code en bloc C2est alors appliqué à chacune des k lignes de la matrice {a'} autres que celles contenant les zéros et les kx- k lignes de zéros sont rallongées avec des zéro, ce qui fournit la matrice {b} à k lignes et n2colonnes (étape 73). Comme le code C2est systématique k2des n2colonnes de la matrice {b} sont identiques à la matrice {a'}, par exemple les k2premières colonnes. Ensuite (étape 74), le code en blocs C, est appliqué à chacune des n2- k2+ k'2colonnes de la matrice {b} autres que celles contenant les zéro et les k2-k colonnes de zéro sont rallongées avec des zéros, ce qui fournit une matrice {c à , lignes et n2colonnes dont les composantes cJsont transmises successivement au modulateur 13 sous la forme du signal Y(t) (étape 75) à l'exception des kx-k lignes de n2zéros et des k -k colonnes de nxzéros. Comme le code C, est systématique, k des nxlignes de la matrice {c sont identiques à la matrice {b} , par exemple les kxpremières lignes. Ainsi, la partie supérieure gauche, de k lignes et k2colonnes, de la matrice {c est identique à la matrice {a'} , les autres composantes de la matrice {c étant des bits de redondance. Toutes les colonnes de la matrice {c sont des mots de code du code C, . De même, toutes les lignes de la matrice {c sont des mots de code du code C2, étant donné que les codes élémentaires sont linéaires. Dans le cas d'un décodage classique sans information a priori le décodeur de canal 17 applique une procédure de décodage itératif dont l'organigramme général est présenté sur la figure 3. Après réception d'un bloc de nxn2échantillons Rj l j2 (l ≤jx≤ nl,\ ≤ j2≤ n2) du signal R(t) reçu du démodulateur 16, qui correspond à l'émission d'un bloc codé formé par le codeur canal 12, ces échantillons sont rangés dans une matrice d'entrée {R} à nxlignes et n2colonnes (étape 30). Le décodage de ce bloc nxx n2échantillons est initialisé (étape 31 ) en initialisant à 0 la variable de comptage , en formant une matrice de données {7?'} à nxlignes et n2colonnes dont les composantes sont initialement les mêmes que celles de la matrice d'entrée {R}, et en formant une matrice de décision {D} à nxlignes et n2colonnes dont les composantes sont binaires (-1 ou +1) et, initialement, représentent chacune le signe de la composante correspondante de la matrice d'entrée {R} : DÀ ,j2= sign(R[Alpha] J[iota]) = ±l Après cette initialisation, le décodage itératif comporte un nombre m de cycles de décodage. Chaque cycle de décodage comporte successivement une étape 32 de recherche de mots du code C dans les colonnes de la matrice de données, et une étape 33 de recherche de mots du code C2dans les lignes de la matrice de données. A chaque étape de recherche 32 ou 33, on calcule de nouvelles valeurs des composantes de la matrice de décision {D} et de la matrice de données {R'} qui sont utilisées pour l'étape de recherche suivante. Chaque étape de recherche 32 ou 33 peut être vu comme un filtrage appliqué à la matrice de donnée {/?'} pour réduire l'incidence des échantillons de bruit BJ[iota] hsur les composantes R' de cette matrice. Les étapes 32 et 33 sont essentiellement identiques si on permute le rôle des lignes et des colonnes des matrices. A l'initialisation 36 de l'étape de recherche 32, la variable de comptage i est incrémentée d'une unité, et l'indice de colonne y 2est initialisé à 1. On effectue un décodage, selon le code C, , du mot de données correspondant à la y 2-ième colonne de la matrice {R'} (étape 37), ce qui fournit de nouvelles valeurs des composantes D2et [Lambda]' des matrices {D} et {R'} (l ≤y ≤ n, . L'étape de décodage 37 est suivie par une comparaison 38 entre l'indice de colonne y2et le nombre de colonnes n2- Lorsque j2reste inférieur à n2, l'indice j2est incrémenté d'une unité (étape 39), puis l'étape de décodage 37 est répétée. Lorsque y2devient égal à n2 ltoutes les colonnes ayant été traitées, on commence l'autre étape 33 de recherche de mots de code du cycle de décodage en cours. A l'initialisation 41 de l'étape de recherche 33, la variable de comptage i est incrémentée d'une unité, et l'indice de ligne y, est initialisé à 1. On effectue un décodage, selon le code C2, du mot de données correspondant à la y^ -ième ligne de la matrice {R'} (étape 42), ce qui fournit de nouvelles valeurs des composantes D[Lambda] Jet R' des matrices {D} et { ?'} .L'étape de décodage 42 est suivie par une comparaison 43 entre l'indice de ligne y, et le paramètre nxdu code C, . Lorsque y , devient égal à n , l'étape 33 de recherche de mots de code est terminée, et la variable de comptage i est comparée à 2m (test 45). Lorsque i reste inférieur à 2m, on revient à l'étape de recherche 32 pour commencer le cycle de décodage suivant. Lorsque i devient égal à 2m, les m cycles de décodage ayant été accomplis, on extrait (étape 46) les kxx k2bits d'information décodés â de la matrice de décision {D} produite lors de la dernière étape 33 de recherche de mots de code. Avec les codes systématiques CX,C2appliqués de la façon décrite plus haut en référence à la figure 2, les â peuvent être simplement récupérés dans les k premières lignes et les k2premières colonnes de la matrice {D} : âh j2= (l L'étape 37 de décodage d'un mot de données correspondant à une colonne de la matrice de données, dans un premier mode d'exécution de l'invention, est détaillée sur l'organigramme de la figure 4. Lors de cette étape 37, on traite un vecteur de données [R'] et un vecteur de décision [D] , de longueur , , constituant respectivement des subdivisions de la matrice de données {R'} et de la matrice de décision {D} : R'j= /?' et Dj=j(l ≤ j ≤ nx). On repère d'abord (étape 51) les p composantes les moins fiables du vecteur [/.'], c'est à dire les composantes de [R'] qui sont le plus proche du seuil de décision binaire (zéro). Les indices correspondant à ces p composantes les moins fiables sont notés rx,r2, ,r , avec : \R \ Vy <> n hN -/-<> etc Ayant identifié ces p indices, on construit q séquences binaires de test [r'Jfr ], ,[[tau] ] de longueur , , puis q mots binaires à décoder [f/'Hc/ ], ,[u ] de longueur nxen chacune des q séquences binaires de test avec le vecteur de décision [D] (étape 52). On construit chaque mot \U \ de façon à ce que toutes ses composantes autres que celles correspondantes aux p indices r,,r2, ,r soient égales aux composantes correspondantes du vecteur de décision [D] : U = Dfpour j <> rx,...,rp. Il suffit de prendre en compte des mots [[upsilon]l/ Jqui n'ont qu'une ou deux composantes différentes des composantes correspondantes du vecteur [D] . Tous ces mots sont pris en compte lorsque q = p(p + \)l2. A titre d'exemple, lorsque p = 6 et q = 21 ,on peut construire les séquences T \ et \U j (l \ ont un bit égal à +1 en position rset des bits égaux à -1 aux autres positions : 7^J= +1 et 7 j = -l pour 1 ri; [[Gamma] ]=[[Gamma] ][Theta][7' [[Gamma] ]=[[Gamma]'][Phi][[Gamma] [[Gamma] ]=[[Gamma] ][Theta][[Gamma] [T ]=[[Gamma] ][Phi][[Gamma] [[Gamma] ]=[[Gamma] ][Theta][[Gamma] [r,5 = [[Gamma] ][Theta][[Gamma] ] [[Gamma]16- = [[Gamma] ][Theta][[Gamma] ] [[Gamma].7- = [y; ][theta][r ] [[Gamma],8- = [[Gamma] ][Theta][[Gamma] ] [[Gamma].9 ] [T ][Theta][[Gamma] ] V ][Theta][[Gamma] ] où [theta] désigne l'opération OU EXCLUSIF, composante par composante, entre les deux vecteurs ; . [c/ ]= [:r][theta] [D] pour l ≤ s ≤ q A l'étape suivante 53, on effectue un décodage algébrique du vecteur de décision [D] et des q mots \u \. Pour ce décodage algébrique, on utilise par exemple, dans le cas de codes BCH, un décodeur de Berlekamp, qui est bien connu dans le domaine des codes en blocs (voir E.R, Algebric Coding Theory , Me Graw-Hill, New- York, 1968). Les q + \ décodages élémentaires fournissent q' mots de code C J,....,[c J du code C, . Dans le cas général q'≤ q + \ , car d'une part certains mots de code peuvent apparaître plusieurs fois dans les résultats des décodages, et d'autre part le décodeur algébrique peut ne pas trouver certains mots de code si le signal est très perturbé. Les mots fournis comme résultats du décodage algébrique doivent donc être vérifiés pour déterminer ou non s'ils constituent des mots de code du code C, . Cette vérification peut s'effectuer simplement en multipliant chaque mot obtenu par la matrice de vérification de parité relative au code C, et en éliminant le mot si le résultat n'est pas nul. Toutefois dans le cas où le code C, est parfait (c'est à dire tel qu'aucun mot de n bits n'est éloigné de tous les mots de code possible de plus de (dx-l)/2 , ce qui est le cas notamment pour les codes de Hamming), l'étape de vérification des résultats du décodeur algébrique est inutile. Parmi les q' mots de code trouvés, on sélectionne (étape 54) le vecteur [C \ qui présente la plus faible distance euclidienne M J- [i?'J avec le vecteur de données [i? ]. Ce mot [c \ constituera le prochain vecteur de décision. On sélectionne également comme mot de code candidat [C \, celui qui, parmi les q' mots de code trouvés à l'exception du mot [C \ , présente la plus faible distance euclidienne M \ . On effectue ensuite une boucle de calcul des composantes W d'un vecteur de correction fV] (l \ est différente de celle du mot de code sélectionné [C \ C <> C ) . Dans l'affirmative, le mot de code candidat [C \ est un mot concurrent relativement à la y -ième composante. La composante W est alors calculée à l'étape 58 selon la formule : M - M w; -C .R'j[pound] On observera que la quantité M -M intervenant dans cette formule est toujours positive de sorte que M -M -M \ . Si l'étape de test 56 indique que C Wj, l'indice de composante y est comparé à la longueur nxdu vecteur [R'] (étape 60). Lorsque y reste inférieur à , , l'indice y est incrémenté d'une unité (étape 61), et l'itération suivante est effectuée en commençant par le test 56. Lorsque y devient égal à o, , la boucle est terminée, et l'étape de décodage 37 se termine par la mise à jour 62 du vecteur de données [R'] et du vecteur de décision [D] . Le nouveau vecteur [i? ] est pris égal à la somme du vecteur d'entrée [R] (dont chaque composante R est extraite de la matrice {R} : R . = Rj), et du vecteur de correction w] multiplié par un autre coefficient de confiance positif at: [i?'] = [i?]+, [P ]. Le nouveau vecteur de décision [D] est pris égal au mot de code [Crf] sélectionné à l'étape 54. Dans une variante d'exécution, la formule de calcul de W}dans le cas où l'on ne peut déterminer de mot de code concurrent, appliqué le cas échéant à l'étape 59, est remplacé par : Qui procure une correction W}directement proportionnelle au signe de la nouvelle décision C . D'autres formules faisant intervenir un coefficient de confiance pourraient encore être utilisées lorsqu'un mot concurrent n'est identifié. Les étapes 42 de décodage de mots de données correspondant à des lignes de la matrice de données sont semblables aux étapes 37 détaillées ci-dessus en référence à la figure 4, en remplaçant le code Cxpar le code C2, et la longueur n par la longueur n2, et en divisant les matrices (fi'} , {D}, {R} non pas en vecteurs colonnes [R'], [D] , [R] , mais en vecteurs lignes. Les coefficients de confiance [alpha], et [beta]jsont affectés d'un indice qui correspond à la variable de comptage i de l'organigramme de la figure 3. En effet, ces coefficients atet [beta]ipeuvent varier d'une étape de recherche 32,33 à une autre. De préférences, les . et /?, croissent au fur et à mesure des étapes de recherche de mots de code 32, 33, pour tenir compte de la fiabilité croissante du décodage. Dans le cas de l'invention, la figure 6 présente la version améliorée de la procédure de décodage itératif. La formation de la matrice {R} à n lignes et n2colonnes se fait de la façon suivante (étape 80) : Les kx~k lignes et k2-k colonnes de zéros supprimées juste avant l'émission sont remplies avec une valeur négative de valeur absolue maximale pour représenter une confiance maximale et les lignes et les colonnes restantes sont remplies comme dans le cas classique avec les échantillons Rj. mais sont multipliées par une facteur d'échelle fepositif et inférieur à 1 avant ou après seuillage en valeur absolue par une valeur cmaxreprésentant la confiance maximale. Ce seuillage est réalisé en comparant ?, , avec cm" : Si R, , >cmr[iota]valors R, ,. = cr . Le décodage des lignes (88) et des colonnes (87) différent aussi. Le reste des étapes sont identiques à celle du brevet européen déjà cité sauf les étapes 82 et 83 où y, et y2ne sont plus initialisées à 1 mais respectivement à kx-k +\ et k2- k +\ , et les étapes 84 et 85 où l'on multiplie toutes les composantes ne correspondant par à des bits d'information a priori et à leur partie codée de {/?'} par feet l'on seuille de la même manière qu'à l'étape 80, la totalité des composantes de {R'} . Il est à noter que, lors du décodage des lignes et des colonnes ne contenant pas que de l'information a priori, il n'est pas indispensable de recalculer les valeurs des bits de décision et des valeurs des confiances associés aux bits d'information a priori. Lors du calcul des Djet des R'jà l'étape 84 kl-k +\ ≤ j ≤ n et lors du calcul des D[lambda] Jet des R'ÀJà l'étape 85 k2-k +l ≤ j ≤ n2, si l'on ne veut pas recalculer ces valeurs, sinon 1 ligne et la 1 colonne mais respectivement à la kx- &',+l -ième ligne et à la k2- &'2+l -ième colonne. Le second point important de l'invention est la possibilité de moduler dynamiquement les performances en modifiant les valeurs de k , k'2, fe, a. et [beta]iavant le codage et le décodage d'une matrice. La figure 7 montre le décodeur de canal 17. La première étape (100) de formation de la matrice, crée la matrice {R} en fonction des valeurs de k' , k et du facteur d'échelle fe. En partant d'une matrice {R} de dimension nxx2ne contenant que des estimations correspondant à des 0 de confiance maximale, la matrice est formée en introduisant les échantillons R(t) multipliés par le facteur d'échelle feet limitées en valeur absolue au maximum de confiance cmaxdans une sous matrice à l'intérieur de la matrice {R} correspondant à la matrice {R} à laquelle on a ôté les kx- kxlignes et les k2- K2colonnes d'informations a priori. La matrice {R} est sauvegardée dans la mémoire (101) et recopiée dans {R'} . {D} est initialisé avec les signes des composantes respectives de {R} . Après chaque itération de décodage (102), les composantes de la matrice {R'} sont multipliées par le facteur d'échelle fepour les composantes ne contenant pas uniquement de l'information a priori et limitées en valeur absolue à la confiance maximale cmaxpour toutes les composantes. Le décodeur reçoit en plus des 3 matrices les valeurs des a [beta]:et de k et k qui peuvent changer en fonction des performances désirées. Il ne reste plus qu'à reformer les échantillons en sortie du décodeur, en ne prenant que les bits d'informations utiles, c'est à dire toutes les composantes de la matrice {D} à l'exception des k - k lignes et des k2- k2colonnes de bits d'information à priori. Lors du codage, figure 8, par le codeur de canal 12, la première étape 104 est la formation de la matrice {a} (étapes 72) à partir de la matrice {a' } qui dépend des valeurs de k et k . Elle est ensuite insérée dans la mémoire (105) qui contient la matrice {c} initialisée avec des 0. Après codage par le codeur élémentaire 106, les données à émettre sont récupérées dans la matrice {c} (étape 75 et 107) en omettant de prendre les composantes appartenant aux lignes et aux colonnes de bits d'information a priori ainsi que leur partie codée. Pour illustrer le fonctionnement de l'invention la figure 9 présente des résultats de simulation utilisant la présente invention. Le code produit est de dimension deux et les deux codes en bloc sont des codes BCH(127,120) concaténés avec un bit de parité. Ceci nous donne un code produit (128,120)x(128,120) aussi appelé dans le cas d'un décodage itératif : turbo code en bloc ou TCB. Les performances des codes raccourcis TCB (128,120)(64,56) (91) et TCB(64,56)(64,56) (92 et 93) sont représentées ainsi que celles du code non raccourci TCB (128,120)x(128,120) (90). Pour TCB(64,56)(64,56) (92 et 93) la valeur du facteur d'échelle a été modifiée et nous avons une courbe avec fe= 0.9 (92) et une autre avec fe= 0.8 (93). Les valeurs des a, et des [beta]:sont identiques pour toutes ces simulations. Cet exemple illustre bien les possibilités de variation dynamique des performances en fonction de la quantité d'information a priori. L'invention peut donc très bien être utilisée à la place ou en même temps qu'un poinçonnage classique pour induire une variation des performances du code de canal en fonction du fading ou des dégradations du rapport signal à bruit. Tout cela sans faire varier significativement le nombre de bits utiles traités par unité de temps quelque soit le rendement du code ainsi modifié. Revendications 1. Procédé pour améliorer les techniques de transmission de bit d'information, dans lequel un émetteur (10) exécute les étapes suivantes : Formation d'une matrice de bits d'informations issue d'un codeur de source (1 1 ) complétées par des bits d'informations a priori ; Codage de cette matrice par un code produit seulement pour les bits d'information à émettre ; Suppression de bits d'information a priori dans les données codées avant émission des bits codés restants ; Émission des bits extraits de la matrice codée vers un canal (13) ; Et un récepteur (15) exécute les étapes suivantes après démodulation (16) : Formation d'une matrice d'entrée à partir des données reçues selon ledit canal, la matrice d'entrée ayant la même taille que la matrice avant la suppression des bits d'information a priori et se composant d'échantillons numériques dont les signes représentent des estimations initiales respectives de la matrice avant suppression et dent les valeurs absolues mesurent respectivement des confiances associées auxdites estimations initiales avec une confiance maximale toujours assignée aux bits d'informations a priori reconstitués pour reformer la matrice avant suppression ; Décodage itératif de cette matrice pour les lignes ne contenant pas que des bits d'information a priori ; Suppression des bits d'information correspondant à ceux qui sont ajoutés dans la matrice formée avant codage de canal à l'émission. 2. Procédé selon la revendication 1 , utilisant un code produit pour le codage de canal et un codeur caractérisé par les modifications suivantes pour tirer pleinement partie du procédé de la revendication 1 dans lequel l'émetteur exécute les étapes suivantes : Formation d'une matrice {a} à d dimensions à partir de ks- k lignes de bits d'information a priori pour chaque dimension s (l ≤ s ≤ d) et de bits d'informations à émettre pour le reste de la matrice ; Ajout des bits du code en bloc systématique Cscorrespondant pour les lignes de bits d'informations a priori dans les d dimensions de la matrice et obtention d'une nouvelle matrice {b} ; Codage des lignes restantes dans les d dimensions par le code en bloc systématique correspondant et selon une méthode identique utilisée pour le codage des codes produits et obtention d'une matrice {c} ; Suppression des ks-k'slignes de bits d'information a priori et de leur partie codée dans les d dimensions de la matrice {c}et obtention d'une nouvelle matrice {d} ; Émission vers un canal de bits extraits de la matrice {d} , 3. Procédé selon la revendication 1 et 2 utilisant un décodeur itératif de codes produits modifié pour tirer pleinement partie du procédé des revendications 1 et 2 et caractérisé par les modifications suivantes: Formation de la matrice {R} en réintroduisant les ks- k'slignes dans les d dimensions de cette matrice ' Limitation à une valeur absolue maximale cmaxdes confiances sur les estimations des bits reçus pour obtenir une confiance maximale atteignable avant ou après multiplication des confiances des estimations des bits reçus par un facteur d'échelle compris entre 0 et 1 avant de les introduire dans la matrice {R} ; Décodage par les codes Csdes lignes ne contenant pas uniquement des bits d'informations dans les d dimensions des matrices {R'} et {D} a priori ; Multiplication des composantes de la matrice { ?'} par un facteur d'échelle compris entre 0 et 1 à l'exception de celles des [pound]s- A;' ignes de bits d'information a priori dans les d dimensions avant ou après limitation à une valeur absolue maximale c^de l'ensemble des composantes de la matrice {i?'} à chaque itération de décodage ; Recalcul éventuel des bits de décision et des confiances correspondant aux bits d'informations a priori lors du décodage, dans les d dimensions, des lignes ne contenant pas que des bits d'information a priori ; Restitution des estimations des bits d'informations utiles émis, c'est à dire des composantes de {D} qui ne sont pas contenues dans les ks- k'slignes dans les d dimensions de cette matrice. 4. Procédé selon les revendications 1 , 2 et 3, caractérisé par la possibilité de choisir dynamiquement les valeurs des k'sdans toutes les dimensions des matrices que ce soit à l'émission et à la réception et les valeurs du facteur d'échelle feainsi que des coefficientstet [beta]tqui sont utilisés au cours des itérations successives pour faire varier les performances du codage et décodage en cours de fonctionnement.