FR 2815199 A1 20020412 FR 0012939 A 20001010 La présente invention concerne les systèmes de communication dans lesquels, afin d'améliorer la fidélité de la transmission, les données à transmettre sont soumises à un codage de canal. Elle concerne plus particulièrement un procédé de turbocodage , ainsi que les dispositifs et appareils destinés à mettre en #uvre ce procédé. On rappelle que le codage dit de canal consiste, quand on forme les mots de code envoyés au récepteur, à introduire une certaine redondance dans les données à transmettre. Au niveau du récepteur, le procédé de décodage associé exploite alors judicieusement cette redondance pour détecter d'éventuelles erreurs de transmission et si possible les corriger. Plus précisément, on définit la distance de Hamming entre deux séquences binaires de même longueur comme étant le nombre d'emplacements où les deux séquences possèdent un élément binaire différent. Les mots de code obéissent à certaines règles définies par le procédé de codage considéré, ce qui permet au récepteur de remplacer le mot reçu par le mot de code légal situé à la distance de Hamming la plus courte de ce mot reçu. Il est clair que cette procédure de correction d'erreurs est d'autant plus fiable que la distance de Hamming minimale entre les divers mots de code est plus grande. On notera que la distance entre un mot de code donné et le mot de code nul (celui dont tous les éléments binaires sont nuls) est égale au nombre d'éléments binaires égaux à 1, appelé poids binaire , de ce mot de code donné. On en déduit qu'un procédé de codage est, toutes choses égales par ailleurs, d'autant meilleur que la distance minimale du code, c'est-à-dire, la valeur minimale du poids binaire de ses mots de code (à l'exclusion du mot nul) est élevée. Pour plus de détails, on se référera par exemple au livre Computer Networks de A. Tannenbaum, 3eme édition, Prentice-Hall International, New Jersey, 1996, page 184. On connaît en particulier les procédés de codage appelés codes cycliques redondants . Dans chacun d'eux, on a fait le choix d'un polynôme g (x), dit polynôme générateur , à coefficients binaires, de degré d et de terme constant égal à 1. On met chaque séquence d'informations à transmettre, éventuellement en la prolongeant avec des éléments nuls, sous la forme d'une séquence binaire u ayant une longueur k fixe. Puis on forme une séquence a en prolongeant la séquence u au moyen d'un nombre de bits égal à d, ces bits dits de bourrage ( padding bits en anglais) étant choisis de manière à ce que le polynôme k+d-1 a(x) = # a, x' l=0 associé à a soit divisible par g(x) (modulo 2). Ce sont les séquences a (de longueur p = k + d) qui sont envoyées au récepteur. Les erreurs de transmission sont alors détectées en examinant le reste de la division du mot de code reçu par le polynôme générateur (voir par exemple A. Tannenbaum, op. cit., pages 187-188). On a proposé récemment des procédés de codage très efficaces, appelés turbocodes , dans lesquels on accroît la redondance en transmettant, pour chaque séquence u de données initiales, non pas une seule, mais trois séquences binaires a, b et c, obtenues comme expliqué ci-après. Les turbocodes font partie des codes dits convolutifs , c'est-à-dire des codes dans lesquels chaque bit entrant dans un codeur est combiné à d'autres bits provisoirement enregistrés dans ce codeur, ces bits provisoirement enregistrés ayant été produits par le traitement, dans le codeur, des bits entrants précédents ; de ce fait, le résultat du codage d'une séquence entrant dans un codeur convolutif dépend en général des séquences traitées précédemment. La séquence b que l'on vient de mentionner est obtenue à l'aide d'un dispositif que nous appellerons le premier codeur , habituellement sur la base de la représentation polynomiale b (x) = a(x)#f1(x) / g(x), où a (x) estle polynôme associé à ladite séquence a, g (x) un premier polynôme prédéterminé à coefficients binaires de degré d et de terme constant égal à 1, et f1(x) un deuxième polynôme prédéterminé à coefficients binaires sans diviseur commun avec g (x). Lepolynôme g(x) est appelé polynôme de récurrence en raison de son apparition au dénominateur de l'expression ci- dessus. Quant à la séquence a, elle peut être prise identique à u, mais elle est souvent obtenue, comme dans les codes cycliques redondants , en prolongeant la séquence u au moyen de bits de bourrage choisis de manière à ce que a (x) divisible par g(x). En effet, comme il est connu de l'homme du métier, cette divisibilité est une condition nécessaire pour garantir la même qualité de décodage pour les derniers bits de chaque séquence que pour les autres bits. La séquence c, enfin, est obtenue à l'aide d'un dispositif que nous appellerons le second codeur , habituellement sur la base de la représentation polynomiale c (x) = a*(x)#f2(x) / g*(x), où g* (x) estun troisième polynôme prédéterminé à coefficients binaires de degré d et de terme constant égal à 1, où f2(x) est un quatrième polynôme prédéterminé à coefficients binaires, sans diviseur commun avec g* (x), où le polynôme a*(x) représente une séquence binaire a* qui résulte de manière prédéterminée d'une permutation des éléments binaires de u ou de a (opération appelée entrelaçage ). Le turbodécodage du message transmis fonctionne de la manière suivante :le décodeur reçoit trois séquences de nombres, notées a', b' et c', et qui ont été produites par l'action du bruit du canal de transmission sur les séquences émises a, b et c. Le turbodécodeur met alors en oeuvre un processus itératif (utilisant b' et c' en alternance) destiné à calculer une valeur estimée a de a avec une fiabilité qui croît avec le nombre d'itérations choisi. Si l'on a utilisé des bits de bourrage, il suffit évidemment, une fois la valeur finale de â obtenue, d'en supprimer les d derniers bits pour obtenir la valeur estimée û de u. Les remarques faites ci-dessus concernant l'utilité de la divisibilité des polynômes a (x) parle polynôme g (x) au niveau du premier codeur s'appliquent également au niveau du second codeur, pour lequel se pose le problème de la divisibilité des polynômes a* (x) parle polynôme de récurrence g* (x), ce problème devant être résolu dans le cadre où chacun de ces polynômes a* (x) issu d'un polynôme a (x) divisible par g(x). Une solution connue consiste, en premier lieu, à permuter de manière prédéterminée les éléments binaires de u pour obtenir une séquence u*, et, en second lieu, à former a* en prolongeant u* au moyen de d bits de bourrage de manière à ce que a*(x) soit divisible par g*(x) (on choisira alors de préférence g* (x) à g (x) souci de simplicité) ; mais un tel procédé de turbocodage présente l'inconvénient que l'efficacité du turbodécodage n'est pas idéale en raison du fait que a et a* contiennent des jeux de bits de bourrage choisis indépendamment l'un de l'autre ; il en résulte une certaine perte de fiabilité (mesurée en termes de taux d'erreurs) de la transmission. La demande de brevet EP 0 928 071, au nom de CANON, résout ce problème délicat grâce à des entrelaceurs dans lesquels la séquence a* est obtenue directement par permutation des éléments binaires de a. Plus précisément, on représente a* par le polynôme où #(i) appartient à une certaine classe de permutations des entiers i compris entre 0 et (p-1) ; pour chacun de ces entrelaceurs, on peut toujours trouver un polynôme g* (x) tel que, quel que soit le polynôme a (x) divisible par g(x), le polynôme a* (x) soit également divisible par g*(x). Ainsi, une fois la séquence a constituée, on n'a pas à ajouter de bits de bourrage supplémentaires pour obtenir a*. Outre une distance minimale élevée, une deuxième qualité recherchée pour un procédé de codage est évidemment sa simplicité de mise en #uvre, c'est à dire la simplicité de l'algorithme employé, tant au niveau du codage que du décodage associé. A cet effet, le document EP 0 928 071 mentionné ci-dessus présente un exemple particulier de permutation appartenant à ladite classe des permutations préservant la divisibilité : on y prend pour #(i) le résidu modulo p du produit (i.e.), où e est un nombre entier strictement positif prédéterminé, relativement premier avec p et congru à une puissance de 2 modulo p ; il en résulte que g* (x) simplement égal à g(x). Cet entrelaceur, qui a le mérite de la simplicité, présente toutefois l'inconvénient de requérir que la longueur p des séquences a et a* soit un multiple impair de la période du polynôme de récurrence (la période d'un polynôme g (x) est définie comme étant le plus petit entier positif N tel que ledit polynôme g (x) divise(xN + 1) modulo 2 ; pour d'autres propriétés déjà connues de ladite période, on pourra consulter l'ouvrage classique de F.J. Mc Williams et N. J.A. Sloane intitulé The Theory of Error-Correcting Codes , publié par North-Holland en 1977 et dont la septième édition a eu lieu en 1992). Afin de permettre un plus grand choix dans la longueur desdites séquences tout en préservant les avantages offerts par les entrelaceurs selon EP 0 928 071, l'invention propose un procédé de tubocodage pour la transmission d'informations dans lequel, un premier polynôme à coefficients binaires g (x) degré d et de terme constant égal à 1 ayant été prédéterminé, on présente d'abord lesdites informations sous la forme de séquences binaires u de longueur k=p - d, où p est un multiple prédéterminé de la période N dudit polynôme g (x), puisl'on produit pour chacune desdites séquences u un triplet v de séquences binaires (a,b,c) destinées à être transmises et obtenues comme suit : - ladite séquence a est de longueur p et obtenue en prolongeant la séquence u au moyen de d bits de bourrage de manière à ce que le polynôme associé à a soit divisible par g(x), - ladite séquence b est représentée par le polynôme b (x) = a(x)#f1(x) / g(x), où fi(x) est un deuxième polynôme à coefficients binaires prédéterminé, sans diviseur commun avec g (x), -ladite séquence c est représentée par le polynôme c (x) = a*(x)#f2(x) / g*(x), où où #(i) est une permutation prédéterminée des entiers i compris entre 0 et (p-1), où g* (x) estun troisième polynôme à coefficients binaires prédéterminé, de degré d et de terme constant égal à 1, #(i) et g* (x) choisis de manière à ce que, quel que soit le polynôme a(x) divisible par g(x), a* (x) soit divisible par g* (x), et où f2(x) est un quatrième polynôme à coefficients binaires prédéterminé, sans diviseur commun avec g*(x), caractérisé en ce que l'on prend pour #(i) le résidu modulo p du produit (i.e), où e est un nombre entier strictement positif prédéterminé, relativement premier avec p, congru à une puissance de 2 modulo N, et non congru à une puissance de 2 modulo p, d'où il résulte que g*(x) est identique à g(x). Corrélativement, l'invention concerne un procédé de turbodécodage, ledit procédé étant remarquable en ce qu'il permet de décoder des séquences reçues qui ont été émises après avoir été codées à l'aide d'un procédé de turbocodage selon l'invention. Ainsi, les procédés de turbocodage selon l'invention, bien que ne requérant pas de bits de bourrage supplémentaires pour obtenir la séquence entrelacée a*, sont applicables à une large gamme de longueurs p de séquences émises (puisque M=plN peut être pair ou impair), tout en restant relativement simples à mettre en oeuvre. De plus, les procédés de turbocodage selon la présente invention, tout en s'inscrivant dans le cadre général des permutations divulguées par EP 0 928 071, permettent à l'homme du métier d'accéder, dans le cas où il choisit M impair, à un plus grand réservoir de valeurs du nombre e parmi lesquelles il pourra choisir une valeur optimale e*, par comparaison avec l'exemple particulier de permutation divulgué par EP 0 928 071 et mentionné ci-dessus. En effet, cet exemple particulier de permutation offre déjà un ensemble assez large de valeurs possibles pour e, défini (entre autres critères) par le fait que chaque nombre e dans cet ensemble est congru à une puissance de 2 modulo p. Or des recherches ultérieures ont permis à l'inventeur d'accéder à un réservoir supplémentaire de valeurs de e définissant, ici encore, des permutations préservant la divisibilité : il s'agit (entre autres critères) des entiers congrus à une puissance de 2 modulo N qui ne sont pas congrus à une puissance de 2 modulo p. Non seulement les nouvelles valeurs de e ainsi mises en évidence permettent une mise en #uvre pratique d'un turbocodage avec les mêmes avantages qu'un turbocodage selon l'exemple divulgué par EP 0 928 071, mais en outre l'homme du métier pourra, en fonction des conditions concrètes de mise en oeuvre, rechercher ladite valeur optimale e* à la fois dans les valeurs de l'ensemble connu et dans les valeurs du réservoir supplémentaire fourni par la présente invention. Il est notamment souhaitable d'utiliser un code de grande distance minimale (comme on l'a expliqué en introduction, la distance minimale du code joue un rôle important dans l'aptitude du code à détecter et corriger les erreurs de transmission). Dans ce but, on procédera de la manière suivante pour déterminer une valeur optimale e* de e : a) on choisit un certain nombre de séquences u différentes pour former ce que l'on appellera l'ensemble représentatif , b) pour chaque nombre entier strictement positif e inférieur à p, congru à une puissance de 2 modulo N et relativement premier avec p : - on calcule le poids binaire PB total de tous lesdits triplets de séquences binaires v associés aux séquences u appartenant audit ensemble représentatif, et - on prend note de la valeur w(e), associée à cette valeur de e, du poids minimal parmi tous ces poids binaires PB, et c) on choisit, pour mettre en oeuvre le codage, la valeur e* de e qui est associée à la plus grande valeur de ce poids minimal w. Grâce à ces dispositions, les codes selon l'invention bénéficient d'un poids minimal relativement élevé, quels que soient lesdits polynômes prédéterminés choisis. Selon un autre de ses aspects, l'invention concerne divers dispositifs. Elle concerne ainsi un dispositif de codage de séquences de données destinées à être transmises à l'aide d'un procédé de turbocodage selon l'invention, ledit dispositif étant remarquable en ce qu'il comporte : - des moyens pour obtenir, pour chaque séquence de données u, ladite séquence a associée à u en prolongeant la séquence u au moyen desdits d bits de bourrage, et - au moins un turbocodeur comportant un entrelaceur #1 apte à réaliser la permutation prévue dans ledit procédé. Corrélativement, l'invention concerne un dispositif de décodage destiné à mettre en oeuvre un procédé de turbodécodage selon l'invention, ledit dispositif étant remarquable en ce qu'il comporte : - au moins un turbodécodeur comportant deux entrelaceurs #1 aptes à réaliser la permutation prévue dans ledit procédé, et un désentrelaceur #2 apte à inverser cette permutation, et - des moyens pour produire une séquence binaire û en ôtant les d derniers bits de la séquence estimée â obtenue à la fin du turbodécodage des séquences reçues a', b' et c' correspondant respectivement auxdites séquences émises a, b, et c. La présente invention vise également : - un appareil d'émission de signaux numériques codés, comportant un dispositif de codage tel que décrit succinctement ci-dessus, et comportant des moyens pour émettre lesdites séquences codées a, b, et c, - un appareil de réception de signaux numériques codés, comportant un dispositif de décodage tel que décrit succinctement ci-dessus, et comportant des moyens pour recevoir lesdites séquences a', b', et c', - un réseau de télécommunications, comportant au moins un appareil d'émission ou un appareil de réception de signaux numériques codés tels que décrits succinctement ci-dessus, - un moyen de stockage de données lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, permettant la mise en #uvre de l'un des procédés selon l'invention, - un moyen de stockage de données amovibles, partiellement ou totalement, lisible par un ordinateur et/ou un microprocesseur conservant des instructions d'un programme informatique, permettant la mise en oeuvre de l'un des procédés selon l'invention, et - un programme d'ordinateur, contenant des instructions telles que, lorsque ledit programme commande un dispositif de traitement de données programmable, lesdites instructions font que ledit dispositif de traitement de données met en #uvre l'un des procédés selon l'invention. Les avantages offerts par ces dispositifs, appareils de traitement de signaux numériques, réseaux de télécommunications, moyens de stockage de données et programmes d'ordinateur sont essentiellement les mêmes que ceux offerts par les procédés selon l'invention. D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description détaillée, que l'on trouvera ci-dessous, d'un mode de réalisation préféré donné à titre d'exemple non limitatif. Cette description se réfère aux dessins annexés, dans lesquels : - la figure 1 est un organigramme illustrant les étapes successives conduisant à la sélection d'un procédé de codage particulier selon l'invention, - la figure 2 représente de façon schématique un dispositif de codage selon l'invention, - la figure 3a représente de façon schématique le fonctionnement classique du premier codeur, - la figure 3b représente de façon schématique le fonctionnement classique du second codeur, - la figure 4 représente de façon schématique un appareil d'émission de signaux numériques selon l'invention, - la figure 5 représente de façon schématique un dispositif de turbodécodage selon l'invention, - la figure 6 représente de façon schématique un appareil de réception de signaux numériques selon l'invention, - la figure 7 représente de façon schématique un réseau de télécommunications sans fil susceptible de mettre en #uvre l'invention, et - la figure 8 est un graphique illustrant les résultats d'une simulation d'un procédé de codage et décodage selon l'invention. Pour commencer, on va expliquer, à l'aide d'exemples numériques, les principes mathématiques sur lesquels repose l'invention. Choisissons par exemple le polynôme g(x) = 1 + x + X3, de degré d = 3, comme polynôme de récurrence. Il divise (x7+1) (le quotient étant (1+x+x2+x4)), mais ne divise pas (xN + 1) pour N compris entre 1 et 6 : la période de ce polynôme g (x) est donc égale à 7. Prenons maintenant par exemple une longueur de séquences transmises égale à p = 14, soit: M = p/N = 2. Pour trouver les valeurs possibles de e, l'on recherche d'abord les entiers congrus à une puissance de 2 modulo 7 (N étant égal à 7), c'est-à-dire congrus à 1,2, ou 4, en se limitant aux valeurs inférieures à 14 (p étant égal à 14) qui sont les seules valeurs utiles puisque les différentes permutations se distinguent par les résidus de (i.e) modulo 14 ; les valeurs correspondantes sont: 1,2, 4,8, 9, et 11. Enfin, en éliminant les valeurs 2,4 et 8, qui ont chacune un diviseur commun avec 14 (et qui ne donneraient pas lieu, par conséquent, à une permutation des 14 indices concernés), on trouve que, pour cet exemple, les valeurs utiles de e sont 1, 9 et 11. L'exemple que nous venons d'étudier comporte une longueur de séquences qui est un multiple pair de N, longueur incompatible avec les procédés selon EP 0 928 071. On va montrer à présent, sur la base d'un deuxième exemple, que la présente invention est avantageuse par rapport à cet art antérieur, même dans le cas où M est impair. Considérons donc, avec le même g (x) ci-dessus, le cas p = 63 (soit : M = 9). On trouve aisément que les entiers e congrus à une puissance de 2 modulo 63 (et donc aussi congrus à une puissance de 2 modulo 7) utiles sont : e = 1, 2, 4, 8, 16,32. Or la présente invention permet de choisir e également parmi les valeurs : e = 11, 22, 23, 25, 29, 37, 43, 44, 46, 50,53, 58 correspondant aux entiers congrus à une puissance de 2 modulo 7, mais non congrus à une puissance de 2 modulo 63. Construisons à présent une permutation selon l'invention, par exemple dans le cas, étudié ci-dessus, où p = 14 et e = 9. En prenant les résidus de (9/) modulo 14 pour i compris entre 0 et 13, on trouve facilement : a* = ao, 3 = 9n. a*2 = a8, a*3 = as, a*4 = a2, 9 = a13, a*6 = 3-io, au = a7, a = a4, 89= ai, a*10 = al2, s 11 = 3g, a*,2 = a6, et a 13 = a3. (1) Examinons l'effet de cette permutation sur une séquence de données quelconque, par exemple : u = (1, 0, 0, 1,0,0,0, 1, 0, 0, 0). En prolongeant u avec les 3 (d étant égal à 3) bits (1,0, 1), on obtient a = (1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1 ), soit a (x) = 1 + x3 + x7 + x11 + x13, qui est bien divisible par g(x) (le quotient étant égal à (1 + x + x2 + x3 + x5 + x7 + x10)). A l'aide de l'équation (1), on obtient alors la séquence a* représentée par le polynôme a* (x) = 1 + x + x5 + x7 + x13, qui est bien divisible par g(x) (le quotient étant égal à (1 + x3 + x4 + x6 + x7 + x8 + x10)), conformément au but visé par l'invention. On peut montrer que, quelle que soit la permutation selon l'invention, le polynôme g* (x) n'est autre que g(x). On voit ainsi que le choix d'abord de g (x), de p conduit, en appliquant les règles ci-dessus, à un ensemble E de valeurs utiles de e. Il ne reste plus alors qu'à choisir les polynômes f1(x) et f2(x), et à fixer une valeur de e qui soit la plus efficace possible en termes de taux d'erreurs résiduelles après décodage, pour obtenir un procédé de turbocodage particulier conforme à l'invention. De manière générale, la procédure conduisant à la sélection d'un procédé selon l'invention comprendra de préférence les étapes suivantes, décrites en référence à la Figure 1. A l'étape 1201, on choisit un polynôme de récurrence g (x) ainsi que les polynômes f1(x) et f2(x), sur la base de critères bien connus du spécialiste des procédés de codage récursifs (on prend habituellement des polynômes fi(x) et f2(x) de même degré d que g(x)). A l'étape 1202, on calcule la période N du polynôme g (x). A l'étape 1203, on choisit la longueur p des séquences codées a à transmettre ; cette longueur doit, selon l'invention, être un multiple de N ; le respect des normes techniques associées au canal de transmission concerné limitera aussi, habituellement, les possibilités de choix. A l'étape 1204, on calcule toutes les valeurs utiles de e, c'est-à-dire l'ensemble E des entiers compris entre 1 et p qui sont congrus à une puissance de 2 modulo N et relativement premiers (c'est-à-dire, sans diviseur commun) avec p. A l'étape 1205, on détermine un ensemble U de séquences binaires u, chacune de longueur k = p - d, destiné à représenter la totalité des séquences de données possibles ; on peut ici, soit engendrer un tel ensemble d'après des règles préétablies, soit faire appel à une banque de données où un tel ensemble a déjà été enregistré. A l'étape 1206, on calcule, par bourrage (comme expliqué ci-dessus), toutes les séquences a correspondant aux séquences u contenues dans U, de façon à constituer un ensemble A . A l'étape 1207, on considère tour à tour toutes les valeurs de e contenues dans E ; pour chacune d'elles, on calcule d'abord la permutation associée, comme on l'a fait dans l'exemple numérique ci-dessus ; puis l'on calcule, par des multiplications et divisions de polynômes, tous les triplets v correspondant aux éléments de A , de façon à constituer un ensemble V ; puis l'on calcule le poids binaire PB de chaque élément de V ; enfin, l'on détermine le minimum w, parmi tous ces poids PB, associé à cette valeur particulière de e, et l'on enregistre la fonction w(e). La valeur de e optimale pour ce turbocode, c'est-à-dire, associée à la plus grande distance minimale possible, est finalement obtenue, à l'étape 1208, en identifiant la valeur de e qui fournit la valeur maximale du poids minimal w. La figure 2 représente un dispositif de codage selon l'invention, dans lequel le codage des données aux fins de transmission est effectué par un turbocodeur constitué de deux codeurs convolutifs et d'un entrelaceur #1 (système à deux parités). On rappelle qu'un turbocodeur classique est constitué de deux codeurs convolutifs récursifs systématiques (en anglais : RSC, Recursive Systematic Convolutional ) et d'un entrelaceur, disposés comme le montre la figure 2. Le turbocodeur fournit, en sortie, pour chaque séquence d'éléments binaires entrante a, trois séquences d'éléments binaires (a, b, c), où a est la sortie dite systématique du turbocodeur, c'est-à-dire n'ayant subi aucune modification par rapport au signal d'entrée, b est la sortie codée par le premier codeur (désigné par RSC1) et c est la sortie codée par le second codeur (désigné par RSC2) après passage dans l'entrelaceur #1. Dans le mode préféré de réalisation, le signal transportant la séquence de données u alimente un module de bourrage 30. Ce module 30 est chargé de prolonger la séquence u au moyen de bits de bourrage, comme expliqué ci-dessus, de manière à obtenir une séquence a dont la longueur p est un multiple de la période N du polynôme g(x), et dont le polynôme associé a(x) est divisible par g (x). Lesignal résultant alimente alors le turbocodeur 40. Ce dernier comporte un entrelaceur #1 selon l'invention, c'est-à-dire produisant, à partir de la séquence a, une permutation a* divisible par g(x). Les procédés selon l'invention ont ainsi pour conséquence que l'état final de chaque codeur (c'est-à-dire à la fin du codage d'une séquence quelconque) est identique à son état initial (au début du codage de ladite séquence), ce qui garantit une qualité de décodage uniforme pour tous les bits d'une même séquence. Lesdits états des codeurs sont représentés sur les figures 3a et 3b. La figure 3a est un schéma de fonctionnement du premier codeur RSC (celui produisant une séquence b à partir d'une séquence a), dans le cas où l'on prend, par exemple, f1(x) = 1 + x2 + x3, et g(x) = 1 + x + x3. Ce codeur porte en mémoire trois bits S1, S2, et S3. La figure 3b est un schéma de fonctionnement du second codeur RSC (celui produisant une séquence C à partir d'une séquence a*), dans le cas où l'on prend, par exemple, f2(x) 1 + x + x2 + x3, et g*(x) 1 + x + x3. Ce codeur porte en mémoire trois bits S*1, S*2, et s*3. Ces deux codeurs RSC sont illustrés sur les figures 3a et 3b sous la forme d'éléments de retard, tels que des bascules par exemple. Ces séquences d'éléments de retard réalisent les fonctions logiques représentées par des multiplications ou des divisions par des polynômes. Cette représentation est classique et bien connue de l'homme du métier. Enfin, le turbocodeur 40 envoie les trois séquences de données a, b, et c ainsi obtenues vers l'émetteur 906 (voir la figure 4). Pour plus de détails sur les turbocodes, on se reportera utilement - à l'article de C. Berrou, A. Glavieux et P. Thitimajshima intitulé Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-codes , ICC '93, Genève (édité par IEEE, Piscataway, NJ, USA, 1993), - à l'article de R. de Gaudenzi et M. Luise intitulé Audio and Video Digital Radio Broadcasting Systems and Techniques , Actes du Sixième Séminaire International de Tirrenia sur les Télécommunications Numériques, pages 215 à 226 (1993), - à l'article de J. Hagenauer, P. Robertson et L. Papke intitulé Itérative (Turbo) Decoding of Systematic Convolutional Codes with the MAP and SOVA Algorithms , Informationstechnische Gesellschaft (ITG) Fachbencht, pages 21 à 29 (octobre 1994), - à l'article de J. Hagenauer, E. Offer et L. Papke intitulé Iterative Decoding of Binary Block and Convolutional Codes , IEEE Transactions on Information Theory (édité par IEEE, Piscataway, NJ, USA, 1996), - à l'article de C. Berrou, S. Evano et G. Battail intitulé Turbo-block Codes , Actes du séminaire Turbo-Coding organisé par le Département d'électronique appliquée de l'Institut de Technologie de Lund, Suède) (août 1996), et - à l'article de C. Berrou et A. Glavieux intitulé Near Optimum ErrorCorrecting Coding and Decoding : Turbo-Codes , IEEE Transactions on Communications, vol. 44, n 10, pages 1261 à 1271 (édité par IEEE, Piscataway, NJ, USA, 1996). La figure 4 montre, de façon très schématique, un appareil d'émission de signaux numériques 48 selon l'invention. Ce dernier comprend, un clavier 911, un écran 909, une source d'informations externe 910, un émetteur hertzien 906, conjointement reliés à des ports d'entrée/sortie 903 d'un dispositif de codage 901 qui est réalisé ici sous la forme d'une unité logique. Le dispositif de codage 901 comporte, reliés entre eux par un bus d'adresses et de données 902 : - une unité centrale de traitement 900, - une mémoire vive RAM 904, - une mémoire morte 905, et - lesdits ports d'entrée/sortie 903. Chacun des éléments illustrés en figure 4 est bien connu de l'homme du métier des micro-ordinateurs et des systèmes de transmission et, plus généralement, des systèmes de traitement de l'information. Ces éléments connus ne sont donc pas décrits ici. On observe, cependant, que : - la source d'informations 910 pourrait être, par exemple, un périphérique d'interface, un capteur, un démodulateur, une mémoire externe ou un autre système de traitement de l'information (non représenté), et pourrait par exemple fournir des séquences de signaux représentatifs de parole, de messages de service ou de données multimédia notamment de type IP ou ATM, sous forme de séquences de données binaires, - l'émetteur hertzien 906 est adapté à mettre en #uvre un protocole de transmission par paquets sur un canal non filaire, et à transmettre ces paquets sur un tel canal. La mémoire vive 904 conserve des données, des variables et des résultats intermédiaires de traitement, dans des registres de mémoire portant, dans la description, les mêmes noms que les données dont ils conservent les valeurs. On observera, au passage, que le mot registre désigne, à travers la présente description, aussi bien une zone mémoire de faible capacité (quelques données binaires) qu'une zone mémoire de grande capacité (permettant de stocker un programme entier) au sein d'une mémoire vive ou d'une mémoire morte. La mémoire vive 904 comporte notamment les registres suivants : - un registre redonnées dans lequel est conservée la longueur k de la séquence de données u, - un registre a , dans lequel est conservée la séquence a obtenue en prolongeant u au moyen de bits de bourrage, - un registre a* dans lequel est conservée la séquence entrelacée a* - un registre a,b,c dans lesquels sont conservées les séquences a, b et c résultant du turbo codage, et - un registre trame radio dans lequel est conservée l'intégralité de la trame radio à émettre. La mémoire morte 905 est adaptée à conserver, dans des registres qui, par commodité, possèdent les mêmes noms que les données qu'ils conservent : - le programme de fonctionnement de l'unité centrale de traitement 900, dans un registre programme , - les coefficients du polynôme g(x), dans un registre g , - les coefficients du polynôme f,(x), dans un registre f, , - les coefficients du polynôme f2(x) , dans un registre f2 , - la longueur des séquences a et a* dans un registre p , - la permutation définissant l'entrelaceur (telle que l'équation (1) cidessus), dans un registre entrelaceur , et - la valeur N de la période de g dans un registre N . La figure 5 représente un dispositif de décodage 1101 apte à décoder des données fournies par un appareil tel que celui de la figure 4. Le décodage après réception est effectué par un turbodécodeur constitué de deux décodeurs, de deux entrelaceurs #1, d'un désentrelaceur #2, d'un additionneur 70 et d'une unité de décision 80 ; les décodeurs, qui sont désignés par Décodeur 1 et Décodeur 2 sur la figure 5, peuvent être par exemple du type BCJR, c'est-à-dire utilisant l'algorithme de Bahl, Cocke, Jelinek et Raviv, ou du type SOVA (en anglais : Soft Output Viterbi Algorithm ). Un turbodécodeur classique nécessite également un rebouclage de la sortie du désentrelaceur #2 sur l'entrée du premier décodeur afin de transmettre au premier décodeur l'information dite extrinsèque produite par le second décodeur. Le turbodécodeur 300 reçoit les séquences codées a', b' et c' en provenance d'un récepteur 1106 (voir la figure 6). Une fois le décodage terminé, la séquence â, qui est une estimation de la séquence a émise par l'émetteur 906, est envoyée à un module tronqueur 335 ; ce tronqueur 335, selon l'invention, produit une séquence Û en ôtant les d derniers bits de â (correspondant aux bits de bourrage placé par le module 30 de la figure 2) ; enfin, cette séquence û est envoyée vers un destinataire d'informations 1110. Le schéma synoptique de la figure 6 représente un appareil de réception de signaux numériques 333 selon l'invention. Ce dernier comprend un clavier 1111, un écran 1109, un destinataire d'informations externe 1110, un récepteur hertzien 1106, conjointement reliés à des ports d'entrée/sortie 1103 d'un dispositif de décodage 1101 qui est réalisé ici sous la forme d'une unité logique. Le dispositif de décodage 1101 comporte, reliés entre eux par un bus d'adresses et de données 1102 : - une unité centrale de traitement 1100, - une mémoire vive RAM 1104, - une mémoire morte 1105, et - lesdits ports d'entrée/sortie 1103. Chacun des éléments illustrés en figure 6 est bien connu de l'homme du métier des micro-ordinateurs et des systèmes de transmission et, plus généralement, des systèmes de traitement de l'information. Ces éléments connus ne sont donc pas décrits ici. On observe, cependant, que : - le destinataire d'informations 1110 pourrait être, par exemple, un périphérique d'interface, un afficheur, un modulateur, une mémoire externe ou un autre système de traitement de l'information (non représenté), et pourrait être adapté à recevoir des séquences de signaux représentatifs de parole, de messages de service ou de données multimédia notamment de type IP ou ATM, sous forme de séquences de données binaires, - le récepteur hertzien 1106 est adapté à mettre en #uvre un protocole de transmission par paquets sur un canal non filaire, et à transmettre ces paquets sur un tel canal. La mémoire vive 1104 conserve des données, des variables et des résultats intermédiaires de traitement, dans des registres de mémoire portant, dans la description, les mêmes noms que les données dont ils conservent les valeurs. La mémoire vive 1104 comporte notamment les registres suivants : - des registres données reçues , dans lesquels sont respectivement conservées les séquences reçues a', b', et c', - des registres inf extrinsèques , dans lesquels sont respectivement conservées les séquences intermédiaires de décodage en sortie du Décodeur 2 de la figure 5, - un registre données estimées , dans lequel sont conservées la séquence décodée â et la séquence entrelacée correspondante â*, - un registre nb~itérations , dans lequel est conservée la valeur du nombre d'itérations déjà effectuées par le turbodécodeur, - un registre nb~données dans lequel est conservée la longueur de la séquence Û issue du tronqueur 335, et - un registre trame radio dans lequel est conservée l'intégralité de la trame radio reçue. La mémoire morte 1105 est adaptée à conserver, dans des registres qui, par commodité, possèdent les mêmes noms que les données qu'ils conservent : - le programme de fonctionnement de l'unité centrale de traitement 1100, dans un registre programme , - les coefficients du polynôme g(x), dans un registre g , - les coefficients du polynôme f1(x), dans un registre f, , - les coefficients du polynôme f2(x), dans un registre f2 , - la longueur des séquences â et â*, dans un registre p , - la permutation définissant l'entrelaceur, dans un registre entrelaceur , - la valeur N de la période de g dans un registre N , et - le nombre maximal d'itérations dans un registre nb~iteration~max . On notera que, dans certaines applications, il sera commode d'utiliser le même dispositif informatique (fonctionnant en mode multi-tâches) pour l'émission et la réception de signaux selon l'invention ; dans ce cas, les unités 901 et 332 seront physiquement identiques. Les procédés selon l'invention peuvent être mis en #uvre au sein d'un réseau de télécommunications, comme le montre la figure 7. Le réseau représenté, qui peut par exemple être constitué par un des futurs réseaux de communication tels que les réseaux UMTS, est constitué d'une station dite station de base SB désignée par la référence 64, et de plusieurs stations périphériques SPi (i = 1, n, où n est un entier supérieur ou égal à 1), respectivement désignées par les références 661, 662, 66n. Les stations périphériques 661, 662, 66n sont éloignées de la station de base SB, reliées chacune par une liaison radio avec la station de base SB et susceptibles de se déplacer par rapport à cette dernière. La station de base SB et chaque station périphérique SPi peuvent comprendre un dispositif de codage 901 tel que décrit en référence aux figures 4,5 et 6, un bloc d'émission et un module radio muni d'un émetteur classique comportant un ou plusieurs modulateurs, des filtres et une antenne. La station de base SB et chaque station périphérique SPi selon l'invention peuvent comprendre également un dispositif de décodage 1101 tel que décrit en référence aux figures 5 et 6, un bloc de réception et un module radio avec son antenne. La station de base SB et les stations périphériques SPi peuvent comprendre de surcroît, selon les besoins, une caméra numérique, un ordinateur, une imprimante, un serveur, un télécopieur, un scanner ou un appareil photographique numérique. Pour terminer, on présente ci-dessous les résultats d'une simulation de codage et de décodage selon l'invention. On a donc d'abord cherché à obtenir la valeur de e offrant au code associé la plus grande distance minimale possible, dans le cas, pouvant être utile en pratique, où g(x) = 1 + x2 + x3, f,(x) = 1 + x + x3, f2(x) = 1 + x + x2 + x3, et p = 224 (M = 32). On désigne par wr (e) le poids minimal pour l'ensemble des séquences codées v = (a,b,ç) associées aux séquences a de poids r et telles que a (x) divisible par g(x). On a calculé, pour chaque valeur utile de e, les valeurs de wr (e) pour r = 2 et pour r = 3. Ces résultats sont donnés dans la Table 1. On peut considérer que la valeur e = 71, pour laquelle w2 = 38 et w3 = 28, est optimale. On a alors simulé les performances de ce turbocode sur un canal à bruit blanc gaussien, pour cette valeur optimale de e. Les résultats ont été exprimés en termes de probabilité d'erreurs résiduelles, par trame FER (en anglais, Frame Error Ratio ) d'une part, et par bit BER (en anglais, Bit Error Ratio ) d'autre part, en fonction du rapport Signal sur Bruit SNR (en anglais, Signal to Noise Ratio ) par bit d'information sur le canal. Ils sont représentés sur la figure 8. Pour mettre en #uvre cette simulation, on a étudié plusieurs valeurs de SNR comprises entre 0,8 et 2,8 dB. Pour chacune de ces valeurs de SNR, on a engendré de façon aléatoire un certain nombre de séquences u, et on a calculé, pour chacune de ces séquences, la séquence codée v = (a,b,ç) correspondante selon la présente invention. Sur chaque séquence bruitée (a',b',c') qui en a résulté, on a effectué des itérations doubles de décodage, au nombre de 8 au moins et de 50 au plus. Après les 8 premières itérations, la simulation était interrompue dès que deux itérations (doubles) consécutives donnaient le même résultat. Pour en déduire expérimentalement la valeur probable de la distance minimale du code, on a procédé de la manière suivante. Lorsque le décodage s'interrompait avant la 50eme itération, et lorsque la séquence estimée â n'était pas identique à la séquence a dont elle était issue, on a calculé leur différence binaire, ou séquence d'erreur d = a + â; puis on a calculé la séquence codée v = (d,b(d),c(d)) correspondante selon la présente invention ; enfin, on a calculé le poids binaire PB de cette séquence codée v, et cette valeur de PB associée à une estimation erronée a été enregistrée. Cette procédure a été répétée avec autant de séquences u qu'il s'avérait nécessaire pour obtenir 25 séquences â erronées pour chaque valeur étudiée du rapport Signal sur Bruit SNR. Une fois la simulation achevée, on a constaté qu'aucune de ces séquences v associées à une estimation erronée n'avait un poids PB inférieur à 28. Comme il est connu de l'homme du métier, ce résultat, combiné à la valeur relativement élevée de SNR atteinte (comme on peut le voir d'après la forme des graphiques illustrés sur la figure 8), est une forte indication que la distance minimale de ce turbocode doit être égale à 28. TABLE 1 e 1 9 11 15 23 25 29 37 39 43 51 53 w2(e) 14 38 22 22 38 38 22 30 38 22 30 22 w3(e) 10 22 26 34 24 26 28 18 26 30 26 32 e 57 65 67 71 79 81 85 93 95 99 107 109 w2(e) 38 14 22 38 22 22 22 22 14 22 22 30 w3(e) 18 62 26 28 34 32 30 30 62 32 28 24 e 113 121 123 127 135 137 141 149 151 155 163 165 w2(e) 22 38 30 14 38 38 30 22 38 30 22 30 w3(e) 14 28 26 62 20 22 26 14 20 26 26 22 e 169 177 179 183 191 193 197 205 207 211 219 221 w2(e) 38 22 30 38 14 14 30 30 22 30 30 22 w3(e) 18 34 18 24 60 96 26 22 32 24 16 12 REVENDICATIONS 1. Procédé de turbocodage pour la transmission d'informations, dans lequel, un premier polynôme à coefficients binaires g (x) degré d et de terme constant égal à 1 ayant été prédéterminé, on présente d'abord lesdites informations sous la forme de séquences binaires u de longueur k = p - d, où p est un multiple prédéterminé de la période N dudit polynôme g(x), puis l'on produit pour chacune desdites séquences u un triplet v de séquences binaires (a,b,c) destinées à être transmises et obtenues comme suit : - ladite séquence a est de longueur p et obtenue en prolongeant la séquence u au moyen de d bits de bourrage de manière à ce que le polynôme associé à a soit divisible par g(x), - ladite séquence b est représentée par le polynôme b (x) = a(x)#f1(x) / g(x), où f1(x) est un deuxième polynôme à coefficients binaires prédéterminé, sans diviseur commun avec g(x), et - ladite séquence c est représentée par le polynôme c (x) = a*(x)#f2(x) / g*(x), où où #(i) est une permutation prédéterminée des entiers i compris entre 0 et (p-1), où g* (x) estun troisième polynôme à coefficients binaires prédéterminé, de degré d et de terme constant égal à 1, #(i) et g*(x) étant choisis de manière à ce que, quel que soit le polynôme a (x) divisible par g (x) 2), a* (x) soitdivisible par g* (x) 2), et où f2(x) est un quatrième polynôme à coefficients binaires prédéterminé, sans diviseur commun avec g*(x), caractérisé en ce que l'on prend pour #(i) le résidu modulo p du produit (i.e), où e est un nombre entier strictement positif prédéterminé, relativement premier avec p, congru à une puissance de 2 modulo N, et non congru à une puissance de 2 modulo p, d'où il résulte que g* (x) identique à g(x). 2. Procédé de turbodécodage, caractérisé en ce qu'il permet de décoder des séquences reçues qui ont été émises après avoir été codées à l'aide d'un procédé de turbocodage selon la revendication 1. 3. Procédé pour déterminer un procédé de turbocodage dans lequel, un premier polynôme à coefficients binaires g (x) degré d et de terme constant égal à 1 ayant été prédéterminé, on présente d'abord lesdites informations sous la forme de séquences binaires u de longueur k = p - d, où p est un multiple prédéterminé de la période N dudit polynôme g (x), puis l'on produit pour chacune desdites séquences u un triplet v de séquences binaires (a,b,ç) destinées à être transmises et obtenues comme suit : - ladite séquence a est de longueur p et obtenue en prolongeant la séquence u au moyen de d bits de bourrage de manière à ce que le polynôme associé à a soit divisible par g(x), - ladite séquence b est représentée par le polynôme b(x) = a(x)#f1(x) / g(x), où fi(x) est un deuxième polynôme à coefficients binaires prédéterminé, sans diviseur commun avec g(x), et - ladite séquence c est représentée par le polynôme c (x) = a*(x)#f2(x) / g(x), où où f2(x) est un troisième polynôme à coefficients binaires prédéterminé, sans diviseur commun avec g (x), où #(i) est le résidu modulo p du produit (i.e*), où e* est un nombre déterminé de la manière suivante : a) on choisit un certain nombre de séquences u différentes pour former ce que l'on appellera l'ensemble représentatif , b) pour chaque nombre entier strictement positif e inférieur à p, congru à une puissance de 2 modulo N et relativement premier avec p : - on calcule le poids binaire PB total de tous lesdits triplets de séquences binaires v associés aux séquences u appartenant audit ensemble représentatif, et - on prend note de la valeur w(e), associée à cette valeur de e, de la valeur minimale parmi tous ces poids binaires PB, et c) on choisit, pour mettre en #uvre le codage, la valeur e* de e qui est associée à la plus grande valeur de ce poids minimal w. 4. Dispositif de codage (901) de séquences de données destinées à être transmises à l'aide d'un procédé de turbocodage selon la revendication 1, caractérisé en ce qu'il comporte : - des moyens (30) pour obtenir, pour chaque séquence de données u, ladite séquence a associée à u en prolongeant la séquence u au moyen desdits d bits de bourrage, et - au moins un turbocodeur (40) comportant un entrelaceur #1 apte à réaliser la permutation prévue dans ledit procédé. 5. Dispositif de décodage (1101) destiné à mettre en #uvre un procédé de turbodécodage selon la revendication 2, caractérisé en ce qu'il comporte : - au moins un turbodécodeur (300) comportant deux entrelaceurs #1 aptes à réaliser la permutation prévue dans ledit procédé, et un désentrelaceur #2 apte à inverser cette permutation, et - des moyens (335) pour produire une séquence binaire û en ôtant les d derniers bits de la séquence estimée â obtenue à la fin du turbodécodage des séquences reçues a', b' et c' correspondant respectivement auxdites séquences émises a, b, et c. 6. Appareil d'émission de signaux numériques codés (48), caractérisé en ce qu'il comporte un dispositif de codage selon la revendication 4, et en ce qu'il comporte des moyens (906) pour émettre lesdites séquences codées a, b, et c. 7. Appareil de réception de signaux numériques codés (333), caractérisé en ce qu'il comporte un dispositif de décodage selon la revendication 5, et en ce qu'il comporte des moyens (1106) pour recevoir lesdites séquences a', b', et c'. 8. Réseau de télécommunications, caractérisé en ce qu'il comporte au moins un appareil selon la revendication 6 ou la revendication 7. 9. Moyen de stockage de données lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre d'un procédé selon l'une quelconque des revendications 1 à 3. 10. Moyen de stockage de données amovibles, partiellement ou totalement, lisible par un ordinateur et/ou un microprocesseur conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en #uvre d'un procédé selon l'une quelconque des revendications 1 à 3.