Brevet FR2712760A1 — publié le 19950524

PROCEDE POUR TRANSMETTRE DES BITS D'INFORMATION EN APPLIQUANT DES CODES EN BLOCS CONCATENES La présente invention concerne les transmissions numériques, dans lesquelles on utilise un codage en blocs pour corriger des erreurs de transmission. En matière de transmission numérique de l'information (parole, image, données...), on distingue habituellement entre le codage source et le codage canal. Le codage source forme la représentation binaire du signal à transmettre. Il est normalement conçu en fonction de la nature du signal à transmettre. Beaucoup d'efforts ont été effectués ces dernières années en matière de codage source pour réduire le débit numérique tout en conservant une bonne qualité de transmission. Mais ces nouvelles techniques de codage source nécessitent une meilleure protection des bits vis-à-vis des perturbations lors de la transmission. D'autre part, les limitations physiques et économiques des composants haute fréquence (facteur de bruit, saturation de la puissance) ainsi que la réglementation sur le niveau de puissance autorisé à l'émission limitent la portée des systèmes de transmission numérique. C'est pourquoi beaucoup de travaux ont été effectués en matière de codage canal, en particulier en matière de codage en blocs. Ce type de codage correcteur d'erreurs consiste à ajouter, à k bits d'information issus du codage source, n-k bits de redondance, et à utiliser ces bits de redondance à la réception pour corriger certaines erreurs de transmission. On appelle rendement du code le rapport R=k/n, et on définit le gain de codage G comme le rapport, exprimé en décibels, entre les énergies par bit d'information Eb nécessaires à l'entrée du récepteur sans codage et avec codage pour atteindre un taux d'erreur binaire (TEB) donné. Un objectif typique est de réaliser des codeurs et surtout les décodeurs associés de façon que: (i) le gain de codage G soit le plus élevé (G > 5 dB pour TEB = 10-5), (ii) le rendement du code soit le plus élevé (R > 0, 6), et (iii) la complexité de décodage soit la plus faible. Il est connu d'améliorer les performances des codes correcteurs d'erreurs en utilisant des techniques de concaténation. En particulier, la technique des codes produits, qui est plus précisément concernée par la présente invention, permet d'obtenir à partir de deux codes en blocs simples (c'est-à-dire ayant une faible distance de Hamming minimale d), un code dont la distance de Hamming minimale est égale au produit des distances de Hamming des codes élémentaires utilisés. Si on désigne par C1 un code en blocs de paramètres (n1,kl,dl) et par C2 un code en blocs de paramètres (n2,k2,d2), l'application du code produit de C1 par C2 consiste à ordon- ner les kl x k2 bits d'information successifs dans une matrice, et à coder les kl lignes de la matrice par le code C2, puis les n2 colonnes de la matrice résultante par le code C1. Les paramètres du code produit P sont alors donnés par (n = n1 x n2; k = k1 x k2; d = d1 x d2). Le rendement R du code P est égal à R1 x R2. Le décodage du code P suivant le maximum de vraisemblance a posteriori (MVP) permet d'atteindre les performances optimales. Le gain de codage asymptotique maximal peut alors être approché par la relation G 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 blocs courts. Dans l'article "On decoding iterated codes", IEEE Trans. on Information theory, Vol. IT-16, N' 5, Septembre 1970, pages 624-627, S.M. Reddy, propose un algorithme de décodage d'un code produit construit à partir de codes élémentaires décodables par un décodeur algébrique, qui peut se résumer en trois étapes: - décoder les colonnes de la matrice de codage en utilisant un décodeur algébrique, - générer, pour chaque colonne, une estimation de la fiabilité des bits décodés basée sur le nombre de bits corrigés, et - décoder les lignes par un décodeur algébrique en exploitant la fiabilité déterminée lors du décodage des colonnes. Cet algorithme de décodage est sous optimal par rapport au MVP, et ne permet pas d'exploiter pleinement toutes les ressources du code produit. Dans leur article "Separable MAP filters for the decoding of product and concatenated codes", Proc. ICC'93, Genève, Pages 1740-1745, Mai 1993, J. Lodge et al. ont proposé un algorithme itératif de décodage comprenant les étapes suivantes: - décoder les colonnes en utilisant l'algorithme de Bahl (voir L.R.Bahl et al, "Optimal decoding of linear codes for minimizing symbol error rate", IEEE Trans. on Information Theory, Vol. IT-20, pages 248-287, Mars 1974) qui fournit les rapports logarithmiques de vraisemblance (LLR pour "Log- Likelihood-Ratio") des bits, - décoder les lignes en utilisant l'algorithme de Bahl et en prenant comme données d'entrée les vraisemblances (LLR) calculées lors du décodage des colonnes, et - recommencer le décodage des colonnes avec pour données d'entrée les vraisemblances (LLR) calculées lors du décodage des lignes. On réitère plusieurs fois le décodage des colonnes suivi par le décodage des lignes. Cet algorithme, bien qu'il conduise à des performances supérieures à celles de l'algorithme de Reddy, n'est applicable que pour des codes de longueur faible, par exemple le code de Hamming (16,11,3). Ceci est dû au fait que l'algorithme de Bahl utilise le treillis associé aux codes en blocs, qui croît exponentiellement en fonction de n-k. Cet algorithme n'est donc pas utilisable en pratique pour des codes de rendement élevés tels que le code BCH (63,51,5). Un but de la présente invention est de proposer un procédé de transmission de bits d'information faisant appel à un mode de décodage des codes produits qui soit bien adapté au cas des codes de rendement élevé. L'invention propose ainsi un procédé pour détecter des bits d'information dans un signal numérique codé, au niveau d'un récepteur, le codage dudit signal numérique ayant été effectué au niveau d'un émetteur en appliquant à des bits d'information à transmettre un code en blocs correspondant au produit d'au moins deux codes en blocs systématiques élémentaires, le procédé comprenant une phase de décodage itératif incluant un nombre m de cycles de décodage, chaque cycle de décodage comportant successivement des étapes de recherche de mots de code pour chaque code en blocs élémentaire utilisé dans le code produit, caractérisé en ce que, à chaque étape de recherche de mots de code, on reçoit une matrice de données et une matrice de décision à composantes binaires qui, avant la première étape de recherche de la phase de décodage itératif, sont respectivement constituées par une matrice d'entrée composée d'échantillons du signal reçu et par une matrice dont les composantes sont celles de la matrice d'entrée mises sous forme binaire, et on produit une nouvelle matrice de décision et une nouvelle matrice de données pour l'étape de recherche suivante, en ce que les bits d'information décodés sont extraits de la matrice de décision produite lors de la dernière étape de recherche de mots de codes, et en ce que chaque étape de recherche de mots de code comporte une division de la matrice de données reçue en vecteurs de données correspondant chacun à un mot de code du code élémentaire et une division correspondante de la matrice de décision reçue en vecteurs de décision, et les sous-étapes suivantes pour le traitement de chacun des couples vecteur de données/vecteur de décision: - 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 q de mots binaires à décoder à partir desdits p indices et du vecteur de décision; - décodage algébrique du vecteur de décision et des q mots binaires à décoder pour déterminer q' mots de code; - sélection, parmi les q' mots de code déterminés, de celui ayant la plus faible distance euclidienne avec le vecteur de données, le nouveau vecteur de décision étant pris égal à ce mot de code sélectionné; - détermination d'un vecteur de correction, chaque composante W3 du vecteur de correction étant de préférence calculée selon la formule: W ( (MC-Md)j lorsqu'il existe, parmi les q' mots de code déterminés, au moins un mot de code ayant sa j- ième composante différente de celle du mot de code sélectionné, M: et Mc désignant respectivement les distances euclidiennes, par rapport au vecteur de données, du mot de code sélectionné et du mot de code déterminé qui, parmi ceux ayant leur j-ième composante différente de celle du mot de code sélectionné, présente la plus petite distance euclidienne avec le vecteur de données, et Cd et R', désignant respectivement les j-ièmes composantes du mot de code sélectionné et du vecteur de données, et selon la formule: (pi C. R'j)cf lorsque tous les q' mots de codes déterminés ont leur j-ième composante identique à celle du mot de code sélectionné, Pi désignant alors un premier coefficient de confiance.; et - détermination du nouveau vecteur de données en ajoutant le vecteur de correction multiplié par un second coefficient de confiance au vecteur d'entrée correspondant obtenu à partir de la matrice d'entrée. L'invention vise également un procédé pour transmettre des bits d'information, comprenant: une phase de codage dans laquelle on applique aux bits d'information à transmettre un code en blocs correspondant au produit d'au moins deux codes en blocs systématiques élémentaires; une phase de modulation et d'émission d'un signal obtenu à partir des bits d'information codés; une phase de réception du signal émis après propagation et de démodulation; et une phase de décodage itératif, dans lequel la phase de décodage itératif est exécutée conformément au procédé ci-dessus, pour détecter les bits d'information dans le signal reçu après démodulation. D'autres particularités et avantages de la présente invention apparaîtront dans la description ci-après d'un exemple de réalisation préféré mais non limitatif, lue conjointement aux dessins annexés, dans lesquels: - la figure 1 est un schéma synoptique d'une chaîne de transmission numérique utilisable pour mettre en oeuvre le procédé selon l'invention; - la figure 2 est un organigramme illustrant l'application d'un code produit; - la figure 3 est un organigramme général d'une phase de décodage itératif selon l'invention; - la figure 4 est un organigramme détaillant une étape de décodage de ligne ou de colonne de l'organigramme de la figure 3; et - les figures 5 à 7 sont des graphiques illustrant des performances du décodage itératif dans trois exemples de codes produits. Dans la chaîne de transmission illustrée sur la figure 1, les bits d'information à transmettre a, sont contenus dans un signal X(t) =E ah (t-jT) adressé à l'entrée du codeur canal 12 de l'émetteur 10. Ce signal X(t) est formé par le codeur source 11 à partir d'un signal analogique S(t). Le codeur source 11 est classiquement tel que les a, soient indépendants et prennent de manière équiprobable la valeur 0 ou 1. h(t) désigne une porte temporelle de durée T qui est l'intervalle de temps séparant deux bits successifs. Le codeur canal 12 applique un codage en blocs pour produire un signal Y(t) = cjh (t-jT') o les cj sont les bits codés et T' est l'intervalle de temps séparant deux bits codés (T' canal 17. L'invention réside principalement dans le codeur canal 12 et le décodeur canal 17. On comprendra donc qu'elle est compatible avec divers types de codage/décodage source, de modulation/démodulation et de canaux de propagation. En particulier, l'invention peut s'appliquer dans le cadre de la télévision numérique. Le codeur 11 et le décodeur 18 peuvent alors être réalisés selon une norme MPEG (moving picture expert group), par exemple, et le modulateur 13 et le démodulateur 16 sont adaptés au canal de propagation utilisé (hertzien, filaire....). Un autre exemple d'application est la transmission de télécopies. Le code en blocs appliqué par le codeur 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 C1, C2 de paramètres respectifs (n1,kl,dl) 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 aj reçus successivement du codeur source 11 sont d'abord rangés, par groupes de k1 x k2 bits, selon une matrice {a} à k1 lignes et k2 colonnes (étape 21). Le code en blocs C2 est alors appliqué à chacune des k1 lignes de la matrice (a}, ce qui fournit une matrice {b} à k1 lignes et n2 colonnes (étape 22). Comme le code C2 est systématique, k2 des n2 colonnes de la matrice {b} sont identiques à la matrice {a}, par exemple les k2 premières colonnes. Ensuite (étape 23), le code en blocs C1 est appliqué à chacune des n2 colonnes de la matrice {b}, ce qui fournit une matrice {c} à n1 lignes et n2 colonnes dont les composantes Cj sont les bits transmis successivement au modulateur 13 sous la forme du signal Y(t) (étape 24). Comme le code C1 est systématique, k1 des n1 lignes de la matrice {c} sont identiques à la matrice (b}, par exemple les k1 premières lignes. Ainsi, la partie supérieure gauche, de k1 lignes et k2 colonnes, 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 C1. Les k1 premières lignes de la matrice {c} sont des mots de code du code C2. Lorsque les codes C1 et C2 sont identiques, les n1-k1 dernières lignes de la matrice {c} sont également des mots de code du code C2. Le décodeur 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 n1 x n2 échantillons Rjl, j2 (1 colonnes (étape 30). Le décodage de ce bloc de ni x n2 échantillons est initialisé (étape 31) en initialisant à 0 la variable de comptage i, en formant une matrice de données (R'} à n1 lignes et n2 colonnes 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} à n1 lignes et n2 colonnes 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}: Djlj2 = sgn (Rjlj2) = 1. 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 Ci dans les colonnes de la matrice de données, et une étape 33 de recherche de mots du code C2 dans 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 vue comme un filtrage appliqué à la matrice de données (R'} pour réduire l'incidence des échantillons de bruit Blj2 sur les composantes R'jlj2 de cette matrice. Les étapes 32 et 33 sont essentiellement identiques si on permute le rôle de 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 j2 est initialisé à 1. On effectue un décodage, selon le code Cl, du mot de données correspondant à la j2-ième colonne de la matrice {R'} (étape 37), ce qui fournit de nouvelles valeurs des composantes Djj2 et Rjj2 des matrices {D} et {R'} (1 (étape 39), puis l'étape de décodage 37 est répétée. Lorsque j2 devient égal à n2, toutes 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 jl est initialisé à 1. On effectue un décodage, selon le code C2, du mot de données correspondant à la jl-ième ligne de la matrice {R'} (étape 42), ce qui fournit de nouvelles valeurs des composantes Djlj et R'jlj des matrices {D} et {R'}. L'étape de décodage 42 est suivie par une comparaison 43 entre l'indice de ligne jl et le paramètre k1 du code C1. Lorsque jl reste inférieur à kl, l'indice jl est incrémenté d'une unité (étape 44), puis l'étape de décodage 42 est répétée. Lorsque jl devient égal à kl, 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 k1 x k2 bits d'information décodés ajl,j2 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 C1, C, appliqués de la façon décrite plus haut en référence à la figure 2, les âjlj2 peuvent être simplement récupérés dans les k1 premières lignes et les k2 premières colonnes de la matrice {D}: âjl,j2 = Djlj2 (1 valeurs O ou 1. Lorsque les deux codes élémentaires C1 et C2 sont identiques, on a vu que toutes les lignes de la matrice {c) codée par le codeur canal 12 sont des mots de codes du code C2. Dans ce cas, les étapes 33 de recherche de mots du code C2 dans les lignes de la matrice de données peuvent comprendre un décodage 42 selon le code C2 de toutes les lignes de la matrice de données. Dans le cas de l'organigramme de la figure 3, ceci revient, dans l'étape de comparaison 43, à comparer l'indice jl à n1 plutôt qu'à k1. Les performances optimales de l'invention sont donc obtenues lorsque les codes élémentaires sont les mêmes, car la recherche itérative des mots de codes peut alors être effectuée à la fois sur toutes les lignes et sur toutes les colonnes de la matrice de données {R'}. L'étape 37 de décodage d'un mot de données correspondant à une colonne de la matrice de données 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 n1, constituant respectivement des subdivisions de la matrice de données {R'} et de la matrice de décision {D}: R'j = R'j,j2 et Dj = Djj2 (1 P/rA Ayant identifié ces p indices, on construit q séquences binaires de test [Tl],..., [Tq] de longueur n1, puis q mots binaires à décoder [U1],. , [U'q] de longueur n, en combinant chacune des q séquences de test avec le vecteur de décision [D] (étape 52). On construit chaque mot [US] de façon que toutes ses composantes autres que celles correspondant aux p indices rl,...,rp soient égales aux composantes correspondantes du vecteur de décision [D]: U/ = D3 pour j X rl,...,rp. Il suffit généralement de prendre en compte des mots [Us] qui 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+l)/2. A titre d'exemple, lorsque p = 6 et q = 21, on peut construire les séquences [Ts] et [US] (1 [Tl3] = [T] [T] [T4 T21] = [T5] @ [T6] [Tt4] = [T2] Ed [T5] o @ désigne l'opération OU exclusif, composante par composante, entre deux vecteurs; * [Us] = [Ts] @ [D] pour 1 algébrique du vecteur de décision [D] et des q mots [Us]. Pour ce décodage algébrique, on utilise de préférence un décodeur de Berlekamp, qui est bien connu dans le domaine du codage par blocs (voir E.R. Berlekamp, NAlgebric Coding Theory", MW Graw-Hill, New-York, 1968). Les q + 1 décodages élémentaires fournissent q' mots de codes [C1],.. ., [Cq] du code C1. Dans le cas général, q' le mot si le résultat de la multiplication n'est pas nul. Toutefois, dans le cas o le code C1 est parfait (c'est-à- dire tel qu'aucun mot de n1 bits n'est éloigné de tous les mots de codes possibles de plus de (d1 - 1)/2, ce qui est le cas notamment pour les codes de Hamming), l'étape de vérification des résultats du décodeur de Berlekamp est inutile. Parmi les q' mots de codes trouvés, on sélectionne (étape 54) celui [Cd] qui présente la plus faible distance euclidienne Md = Il [Cd] - [R'] Il2 avec le vecteur de données [R']. Le nouveau vecteur de décision [D] est pris égal à ce mot de code [Cd]. Ayant ainsi déterminé le nouveau vecteur de décision, on effectue une boucle de calcul des composantes Wj d'un vecteur de correction [W] (1 ai [w]. 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 C1 par le code C2, et la longueur n1 par la longueur n2, et en divisant les matrices {R'}, {D}, {R} non pas en vecteurs colonnes [R'], [D], [R], mais en vecteurs lignes. Les coefficients de confiance ai et Pi sont affectés d'un indice qui correspond à la variable de comptage i de l'organigramme de la figure 3. En effet, ces coefficients ai, Pi peuvent varier d'une étape de recherche 32, 33 à une autre. De préférence, les ai et Ai croissent au fur et à mesure des étapes de recherche de mots de code 32, 33, pour tenir compte de la fiabilité de plus en plus grande du décodage. La demanderesse a essayé le procédé décrit ci-dessus pour différents codes produits dans le cadre de simulations numériques. La modulation considérée pour le signal émis était une modulation de phase à deux états (MDP2), et le canal de propagation était modélisé par un canal à bruit blanc additif gaussien. Les séquences de test [Ts] et les mots à décoder [Us] étaient déterminés à l'étape 52 de la façon détaillée plus haut, avec p = 6 et q = 21. Des résultats sont exposés ci-après dans le cas de trois codes produits de rendements élevés, obtenus à partir de codes systématiques élémentaires de type Bose-Chaudhuri- Hocquenghem (BCH). Exemple 1: C1 = C2 = BCH (63,57,3) Le code BCH (63,57,3) est un code de Hamming et est donc parfait. Le code produit présente alors les propriétés suivantes: - distance de Hamming minimale d = 9 - rendement de codage R = 0,82 - gain de codage G la même façon que dans l'exemple 2. Dans chacun des trois exemples, on a estimé la dépendance entre le taux d'erreur binaire (TEB) et le rapport Eb/N0, exprimé en décibels, entre l'énergie Eb du signal émis par bit d'information et la densité spectrale NO de la puissance du bruit induit lors de la propagation. Les résultats pour les exemples 1, 2 et 3 sont illustrés respectivement sur les graphiques des figures 5, 6 et 7. Dans chacun de ces graphiques, la courbe A correspond au cas o le codage par blocs n'est pas appliqué, à des fins de comparaison, la courbe B correspond au cas o on réalise m = 1 cycles de décodage (c'est-à-dire 2m = 2 étapes de recherche de mots de code 32, 33), la courbe C correspond au cas o on réalise m = 3 cycles de décodage, et la courbe D correspond au cas o on réalise m = 5 cycles de décodage. On peut ainsi apprécier l'amélioration sur le taux d'erreur binaire procurée par la procédure itérative de décodage. Bien entendu, la procédure de décodage du procédé selon l'invention peut être exécutée selon un organigramme qui diffère quelque peu de celui illustré aux figures 3 et 4. Par exemple, au lieu de transmettre la matrice {R'} d'une étape de recherche de mots de code 32, 33 à la suivante, il est possible de transmettre une matrice de correction {W} dont les composantes sont calculées, pour chaque colonne ou ligne, comme indiqué aux étapes 58 et 59 sur la figure 4. Dans ce cas, la dernière étape 62 de l'organigramme de la figure 4 ne fait pas partie des étapes de décodage 37 ou 42. Les vecteurs de données [R'] sont formés au début de chaque étape de décodage 37 ou 42 en ajoutant à un vecteur ligne ou colonne [R] de la matrice d'entrée, le vecteur ligne ou colonne correspondant de la matrice (W}, multiplié par le coefficient ai-1. Les matrices {R'}, {R} et {W} étant liées, il est équivalent, pour transmettre la matrice de données, de mémoriser {R} et {R'} comme illustré aux figures 3 et 4, ou de mémoriser {R} et {W}. Les décodages de Berlekamp effectués aux étapes 53 peuvent être réalisés au moyen de circuits décodeurs classiques. Un seul circuit décodeur est d'ailleurs nécessaire lorsque les codes élémentaires sont les mêmes. Le reste de la procédure de décodage itératif peut aisément être effectué en programmant un processeur approprié, ou encore en utilisant un circuit spécifique. On notera que le procédé selon l'invention est applicable au cas o le code produit résulte de produit de plus de deux codes élémentaires. Les matrices traitées sont alors à plus que deux dimensions, et chaque cycle de décodage comporte un nombre correspondant d'étapes de recherche de mots de code. REVENDICATIONS 1. Procédé pour détecter des bits d'information (â,j) dans un signal numérique codé (R(t)), au niveau d'un récepteur (15), le codage dudit signal numérique ayant été effectué au niveau d'un émetteur (10) en appliquant à des bits d'information à transmettre (aj) un code en blocs correspondant au produit d'au moins deux codes en blocs systématiques élémentaires (C1, C2), le procédé comprenant une phase de décodage itératif incluant un nombre m de cycles de décodage, chaque cycle de décodage comportant successivement des étapes (32,33) de recherche de mots de code pour chaque code en blocs élémentaire utilisé dans le code produit, caractérisé en ce que, à chaque étape (32,33) de recherche de mots de code, on reçoit une matrice de données ({R'}) et une matrice de décision ({D}) à composantes binaires qui, avant la première étape de recherche de la phase de décodage itératif, sont respectivement constituées par une matrice d'entrée ({R}) composée d'échantillons du signal reçu (R(t)) et par une matrice dont les composantes sont celles de la matrice d'entrée ({R}) mises sous forme binaire, et on produit une nouvelle matrice de décision ({D}) et une nouvelle matrice de données ({R'}) pour l'étape de recherche suivante, en ce que les bits d'information décodés (âj) sont extraits de la matrice de décision produite lors de la dernière étape de recherche de mots de code, et en ce que chaque étape (32,33) de recherche de mots de code comporte une division de la matrice de données reçue en vecteurs de données ([R']) correspondant chacun à un mot de code du code élémentaire et une division correspondante de la matrice de décision reçue en vecteurs de décision ([D]), et les sous-étapes suivantes pour le traitement de chacun des couples vecteur de données/vecteur de décision: - détermination d'un nombre p d'indices (rl,..., rp) pour lesquels les composantes du vecteur de données ([R']) sont les moins fiables; - construction d'un nombre q de mots binaires à décoder ([Us]) à partir desdits p indices et du vecteur de décision ([D]); - décodage algébrique du vecteur de décision et des q mots binaires à décoder pour déterminer q' mots de code ([CIS]); - sélection, parmi les q' mots de code déterminés, de celui ([Cd]) ayant la plus faible distance euclidienne avec le vecteur de données, le nouveau vecteur de décision ([D]) étant pris égal à ce mot de code sélectionné; détermination d'un vecteur de correction ([W]), chaque composante Wj du vecteur de correction étant calculée selon la formule: Wj=((MCMd) -c3. Rlj)cd lorsqu'il existe, parmi les q' mots de code déter- minés, au moins un mot de code ayant sa j-ième composante différente de celle du mot de code sélectionné ([Cd]), Md et Mc désignant respectivement les distances euclidiennes, par rapport au vecteur de données ([R']), du mot de code sélectionné ([Cd]) et du mot de code déterminé ([CC]) qui, parmi ceux ayant leur j-ième composante différente de celle du mot de code sélectionné, présente la plus petite distance euclidienne avec le vecteur de données, et C]d et R', désignant respectivement les j-ièmes composantes du mot de code sélectionné et du vecteur de données, et selon la formule: Wj (fi d * R'j)cf lorsque tous les q' mots de codes déterminés ont leur j-ième composante identique à celle du mot de code sélectionné, Di désignant alors un premier coefficient de confiance; et - détermination du nouveau vecteur de données ([R']) en ajoutant le vecteur de correction ([W]) multiplié par un second coefficient de confiance (ai) au vecteur d'entrée correspondant ([R]) obtenu à partir de la matrice d'entrée ({R}). 2. Procédé selon la revendication 1, caractérisé en ce que les premiers et seconds coefficients de confiance (pi,ai) sont croissants au fur et à mesure des étapes de recherche de mots de code (32,33). 3. Procédé selon la revendication 1 ou 2, caractérisé en ce que chacun des q mots binaires à décoder ([Us]) est construit de façon que toutes ses composantes autres que celles correspondant aux p indices (rl,... ,rp) pour lesquels les composantes du vecteur de données ([R']) sont les moins fiables soient égales aux composantes correspondantes du vecteur de décision ([D]). 4. Procédé selon la revendication 3, caractérisé en ce que chacun des q mots binaires à décoder ([Us]) est construit de façon à avoir une ou deux composantes différentes des composantes correspondantes du vecteur de décision ([D]). 5. Procédé selon la revendication 4, caractérisé en ce que q = p(p+l)/2. 6. Procédé selon l'une quelconque des revendication 1 à 5, caractérisé en ce que les codes en blocs élémentaires (Cl, C2) utilisés dans le code produit sont identiques. 7. Procédé pour transmettre des bits d'information (aj), comprenant: - une phase de codage dans laquelle on applique aux bits d'information à transmettre un code en blocs correspondant au produit d'au moins deux codes en blocs systématiques élémentaires (C1, C2); - une phase de modulation et d'émission d'un signal (E(t)) obtenu à partir des bits d'information codés (cj); - une phase de réception du signal émis après propagation et de démodulation; et - une phase de décodage itératif, caractérisé en ce que la phase de décodage itératif est exécutée conformément à un procédé selon l'une quelconque des revendications 1 à 6, pour détecter les bits d'information (âj) dans le signal reçu après démodulation (R(t)).