FR 2787263 A1 20000616 FR 9815779 A 19981214 Procédé de transmission avec codage de canal à entrelacement efficace et modulaire pour turbo codes La présente invention a pour objet un procédé de transmission avec codage de canal c'est-à-dire avec une préparation de bits à transmettre qui tienne compte des performances de transmission d'un canal de telle façon que la qualité de transmission soit la plus parfaite possible, malgré des défauts physiques inévitables inhérents à ce canal. Le but de l'invention est de proposer un procédé dans lequel une mise en oeuvre pratique d'une solution théorique et éprouvée soit simple à réaliser avec des équipements de traitement de signal à puissance limitée. Ces équipements sont en particulier des téléphones mobiles. L'invention a donc pour principal domaine d'application celui de la téléphonie mobile. Cependant l'invention pourrait être utilisée également dans des liaisons avec des satellites. D'une façon générale, I'invention est utilisable chaque fois qu'on voudra mettre en oeuvre un turbo code pour lequel est recherché un entrelacement efficace et modulaire. En matière de transmission numérique de l'information (parole, image, données, etc.), on distingue le codage de source et le codage de canal. Le codage de source a pour objet de compresser les informations numériques à transmettre, de façon à ce qu'elles occupent le moins de volume possible, de façon à ce que le débit utile soit maximal. Par opposition, le codage de canal consiste à ajouter de la redondance à l'information à transmettre afin que l'information reçue soit plus robuste face aux erreurs apportées par le canal. En agissant ainsi on transforme une redondance inutile, celle de l'information initiale, en une redondance utile, celle permettant de résister aux bruits de transmission. Le codage de canal revêt donc une importance capitale. Une large panoplie de codages de canal est disponible depuis les années 60. On y connaît ainsi les codages convolutifs, les codages BCH, les codages de Reed-Solomon, etc.... Les codages de canal utilisés diffèrent suivant les applications visées. Dans la demande de brevet français 91 05280 intitulée "Procédé de codage correcteur d'erreurs à au moins deux codages convolutifs systématiques en parallèle, procédé de décodage itératif, module de décodage et décodeur correspondant", ainsi que dans le document "Near Shannon limit error-correcting coding and decoding: Turbo Codes" Proc.1993 International Conference on Communications, dû à C. Berrou, A. Glavieux and P. Thitimajshima, on a proposé un nouveau schéma de codage baptisé turbo code dont les performances s'approchent de la limite théorique de la capacité d'un canal tel que le décrit le théorème de C. Shannon. Dans un exemple o le taux de codage vaut 1/3, on transmet avec un tel codage un flot X de données à coder sous la forme de trois flots Y1, Y2, et Y3 de données codées. Dans un exemple le flot Y1 est le même que le flot X. Le flot Y2 résulte du codage du flot X par un premier codeur convolutif récursif. Le flot Y3 résulte du codage d'une permutation, on parle improprement d'un entrelacement, des bits du flot X par un deuxième codeur convolutif récursif. Un encodeur turbo utilise ainsi au moins deux codeurs convolutifs, de préférence récursifs systématiques, le deuxième étant précédé d'un entrelaceur temporel opérant sur des blocs de taille fixée. Le permutateur-entrelaceur est une composante essentielle des turbo codes. Une interprétation conceptuelle de leur mode de fonctionnement est donnée dans l'article de G. Battail "A conceptual framework for understanding Turbo Codes" IEEE Journal on Selected Areas in Communications, Vol.16, No 2, February 1998. Très brièvement, on peut rappeler qu'un entrelacement permet, s'il est bien fait, d'imiter un codage aléatoire. On doit également rappeler que le rôle d'un codage aléatoire dans la démonstration du théorème de la capacité de C. Shannon est central. On s'accorde généralement à dire qu'il y a deux facteurs très importants pour la conception d'un tel entrelaceur. Le premier facteur est la profondeur de cet entrelaceur. La profondeur est la taille de l'entrelaceur, en clair le nombre n de bits qu'il est susceptible de permuter. Plus la profondeur est grande, mieux c'est, c'est-à-dire plus le caractère aléatoire sera effectif. Le second facteur est le degré d'aléatoire que peut introduire l'entrelaceur sur un bloc donné. Un entrelaceur idéal est alors un entrelaceur purement aléatoire, mais ceci n'existe pas dans la pratique. En effet un entrelaceur a pour but de casser les mots de codes de poids faibles qui sont les plus nombreux à transmettre. Il est par ailleurs possible de concevoir des entrelaceurs non aléatoires qui combattent efficacement les mots de codes de poids faibles. Mais malheureusement, ces derniers entrelaceurs ont tendance à amplifier les effets des mots de code de poids forts, ce qui n'est pas souhaitable non plus. Le critère permettant de choisir un entrelaceur optimal doit considérer les codes de tous les poids simultanément, et obtenir un optimum global. La détermination de ce critère est encore un problème non résolu. Les techniques d'entrelacements utilisés dans les systèmes réels de l'état de la technique utilisent des matrices. Ces matrices sont mises en ceuvre avec des circuits matériels. Dans de tels circuits matériels, les données, ou bits, d'un bloc sont entrées en ligne, ligne de la matrice après ligne de la matrice. Elles sont ensuite lues en colonne. Des simulations montrent cependant que les performances obtenues avec de tels entrelaceurs matriciels sont inférieures à celles obtenues avec des entrelaceurs produits par des programmes d'ordinateur imitant l'aléatoire. D'autre part, les communications radiomobiles cellulaire de troisième génération, notamment dans le cadre de la recommandation IMT 2000, nécessitent d'utiliser une large variété de services associés à des débits et des contraintes temporelles différents les uns des autres. Compte tenu des performances des turbo codes, il est vraisemblable de les utiliser pour des services qui réclament une forte protection contre les erreurs mais qui supportent un certain retard (celui de l'entrelaceur). Le problème non résolu par les systèmes matriciels est alors le caractère figé de la dimension des blocs de données susceptibles d'être traités. Ces dimensions figées résultent de la dimension des matrices choisies et de leur système d'écriturelecture. Ainsi, si on suppose d'avoir k services différents, supportant chacun des retards temporels de rl, r2,..., rk bits, le but est de chercher, pour chaque service, à faire un entrelaceur de profondeur maximale, sachant que les performances de l'entrelacement reposent sur la taille de l'entrelaceur. Une difficulté dans la mise en oeuvre matricielle classiquement proposée est de devoir spécifier d'une manière rigide les différents entrelaceurs pour les différentes tailles de blocs. La présente invention a pour objet de remédier à ces problèmes. Elle propose de concevoir un entrelaceur réalisé de façon logicielle, qui ne nécessite en outre que très peu de paramètres en mémoire. Dans l'invention, pour un bloc de n bits à entrelacer, avec des rangs k numérotés de 1 à n dans la chaîne des bits à transmettre, on crée par permutation un autre bloc de n bits d'une chaîne entrelacée. Les rangs des bits dans la chaîne entrelacée sont alors des rang h, tels que h = f ( k). La fonction f doit être une permutation de { 1,..., n} c'est-à-dire une application bijective de { 1,.. n} dans lui-même. Dans l'invention pour réaliser la fonction f, on applique une équation de congruence linéaire. On peut montrer alors que le choix d'une telle solution a pour effet de se passer de circuits spécifiques, et de ne nécessiter en outre que des ressources faibles en matière logicielle. Le caractère aléatoire n'est ainsi pas théoriquement parfait mais son approximation par un algorithme simple, de congruence, est tout à fait efficace vis-à-vis du problème d'amélioration des performances du codage de canal recherché. L'invention a donc pour objet un procédé de transmission avec codage de canal, entre un émetteur et un récepteur, dans lequel - on code une chaîne binaire de n bits à transmettre avec un premier codeur pour obtenir une première chaîne codée, - on permute des bits de la chaîne binaire à transmettre pour obtenir une autre chaîne binaire dite entrelacée, - on code la chaîne entrelacée avec un deuxième codeur pour obtenir une deuxième chaîne codée, - on transmet de l'émetteur au récepteur la chaîne binaire à transmettre et ou la première et ou la deuxième chaînes codées, - et on reçoit et on décode en correspondance les chaînes transmises côté récepteur pour reconstituer la chaîne binaire à transmettre, caractérisé en ce que - pour permuter les bits de la chaîne binaire de n bits à transmettre, on attribue à un bit de rang k de la chaîne binaire à transmettre un rang hk dans la chaîne entrelacée, qui dépend d'un rang hk-, attribué à un bit de rang k - 1 de la chaîne binaire à transmettre, de telle façon que le rang hk attribué soit du type: hk = a.hk 1 + b modulo m, a, b et m étant des entiers L'invention sera mieux comprise à la lecture de la description qui suit et à l'examen des figures qui l'accompagnent. Celles-ci ne sont présentées qu'à titre indicatif et nullement limitatif de l'invention. Les figures montrent: - Figure 1: la représentation fonctionnelle d'un dispositif de codage utilisable pour mettre en oeuvre le procédé de l'invention; Figure 2: un organigramme d'étapes du procédé d'entrelacement de ---l'invention - Le tableau 1, faisant partie explicitement de la description, comporte des valeurs préférées de paramètres souscrivant à des variantes préférées de mise en oeuvre de l'algorithme de l'invention. La figure 1 montre une représentation fonctionnelle de moyens de mettre en oeuvre un procédé de transmission selon l'invention. Ce procédé est destiné à être mis en oeuvre entre un émetteur 1 et un récepteur 2. L'émetteur 1 et le récepteur 2 sont symboliquement montrés et sont reliés entre eux par un canal 3. Le procédé de transmission avec codage de canal de l'invention est du type transformant un flot de données X produit par l'émetteur 1 en plusieurs flots de données Y1, Y2, Y3, Yi transmis par le canal 3. Le canal 3 sera la plupart du temps un canal radioélectrique, un circuit de codage 4 mettant en oeuvre le procédé de l'invention, et interposé entre l'émetteur 1 et le récepteur 2, comportant par ailleurs un circuit non représenté d'émission radioélectrique associé. En réception, des circuits sont adaptés à décoder et recevoir en correspondance les chaînes Y1, Y2, Y3, Yi et à reconstituer la chaîne X transmise. Le circuit de codage de canal 4 comporte un premier codeur convolutif qui produit une chaîne de bits Y2 à partir d'une chaîne à coder X. Dans un exemple ce codeur convolutif est un codeur convolutif récursif. Il comporte dans son principe un certain nombre de circuits de retard 6 à 9, en cascade les uns des autres, et dont les sorties sont reliés à des additionneurs ou plus généralement à des opérateurs 10 à 13. Les opérateurs 10 à 13 ont pour but de combiner ensemble des bits de la chaîne X disponibles à une date donnée avec des bits de cette même chaîne, ou d'une transformation de cette chaîne, disponibles à une date ultérieure. Le codeur convolutif 5 représenté est dit récursif parce que les produits de convolution, notamment ceux issus de l'opérateur 12 sont combinée en entrée du système, dans un opérateur 13, avec des bits non encore traités de la chaîne X des bits à coder. Comme indiqué ci- dessus la réalisation d'un codeur convolutif récursif est préférée parce qu'à complexité de codage égale (et à efficacité de protection égale) un tel codeur récursif nécessite moins d'opérateurs et de circuits de retard qu'un codeur non récursif qui réaliserait une même transformation. Ceci étant, dans l'invention il n'est donc pas à priori nécessaire que le codeur 5 soit un codeur convolutif récursif. Il pourrait être un codeur convolutif simple, voire un autre système de codage du type BCH ou Reed SOLOMON, ou autre, mais les performances seraient différentes. En plus d'être transmise telle quelle dans la chaîne Y1, ou sous une forme convoluée dans la chaîne Y2, dans l'invention la chaîne de bits à traiter X est transmise sous la forme d'une troisième chaîne codée Y3 par un autre codeur 14 qui reçoit également la chaîne X de bits à coder. La particularité de la chaîne Y3 est qu'elle est produite à partir d'une permutation de la chaîne X des bits à coder. Cette permutation est réalisée par un circuit de permutation, dit aussi entrelaceur 15, interposé entre l'entrée du codeur 14 et l'entrée du circuit de codage 4. La gauche de la figure 1 montre dans un exemple dans une chaîne X de 12 bits, le traitement effectué bit à bit par l'entrelaceur 15 pour transformer la chaîne X en une chaîne X' permutée. L'entrelaceur 15 est de préférence un entrelaceur logiciel et son algorithme de transformation est montrée sur la figure 2. Conformément à ce qui a été évoqué précédemment, pour permuter les bits de la chaîne binaire de n bits à transmettre, ici douze bits dans l'exemple, on attribue à un bit de rang k de la chaîne binaire X à transmettre un rang hk dans la chaîne entrelacée X'. La particularité de l'invention est que le rang hk dans la chaîne X' dépend du rang hk.l attribué à un bit de rang k-1 de la chaîne binaire X de bits à transmettre. La dépendance est telle que hk = a.hk- 1 + b modulo m Dans cette formule a, b et m sont des entiers, paramètres de la transformation. Pour être complet un paramètre complémentaire, essentiel de l'invention, est le nombre n de bits de la chaîne X à coder. En effet comme ceci a été indiqué en préambule, l'invention permet d'adapter le codage à la longueur des mots à transmettre. Par exemple, dans le cadre du GSM, on sait que sur une fenêtre utile de 156 bits, 142 seulement ont une signification informative. Parmi ces 142 bits, trois groupements sont constitués. Un premier et un troisième groupement représente des informations à transmettre. Un deuxième groupement, intermédiaire entre les deux autres comportent des informations de cohérence permettant à un circuit de décodage de canal, en réception, de retrouver les deux groupements de bits attendus, et d'améliorer les performances de transmission du canal. D'autres normes sont envisageables. Même en GSM il est possible d'adapter des protocoles de transmission à haut débit. Dans ces cas, la longueurs clé des mots a transmettre n'est plus de 142 bits mais peut être bien plus grande. Par exemple elle peut être de 1024 bits ou plus. Aussi, au cours d'une étape 16, définit-on dans le programme mis en oeuvre par l'entrelaceur 15 les valeurs des paramètres n, a, b et m. On verra par la suite quelles sont les contraintes qui pèsent sur des choix judicieux de ces paramètres, le non-respect de ces contraintes conduisant à un fonctionnement dégradé, quoique éventuellement acceptable de l'algorithme de codage de l'invention. Après l'étape 16, au cours d'une étape 17 on commence à scruter la chaîne X de bits à transmettre. Ceci est réalisé sous la forme de deux instructions 18 et 19, respectivement une instruction 18 k=1 et hk = 1 suivie d'une instruction 19 k = k + 1. L'instruction 18 signifie en fait qu'on va attribuer au bit de rang 1 dans la chaîne X à transmettre un rang hk=1 dans la chaîne X', avant son codage par le codeur 14. Ce n'est pas une obligation. Notamment il serait envisageable pour k = 1 de choisir un hk de départ différent de 1. Il suffirait tout simplement que hk soit inférieur à n. Le fait de choisir hk différent de 1 peut conduire comme évoqué ci-dessus à ne pénaliser ni avantager outre mesure les bits de poids faibles ou forts. Au besoin, on pourra prévoir que hk change de valeur pour chaque nouvelle chaîne X subissant une permutation. L'étape 17 est suivie d'un test 20 au cours duquel on regarde si le bit de rang k à traiter appartient bien à la chaîne X de n bits ou s'il appartient à une autre chaîne, consécutive à la chaîne X, elle aussi de n bits. Si ce n'est pas le cas, et au début ce n'est pas le cas, il est alors possible de trouver le rang hk en appliquant l'instruction 21 sachant qu'on connaît a, b et m. S'ils sont produits ainsi, les hk ne sont pas nécessairement répartis d'une façon bien aléatoire sur toute la chaîne X de bits. Par ailleurs, il est même possible dans certains cas que la transformation 21 ne soit pas une permutation de {1, 2,..., n}. Pour que ces derniers critères soient obtenus, il faut imposer certaines contraintes sur les paramètres a, b et m. En effet la suite (infinie) définie par la congruence linéaire de l'étape 21 a pour période m si, et seulement si, b est m sont premier entre eux; si pour tout nombre premier p divisant m, a - 1 est un multiple de p; et si a - 1 est un multiple de 4 quand m est un multiple de 4. Une justification de ces contraintes se trouve dans l'article de HULL et DOBELL, SIAM Review, 4 (1962), pages 230-254. En pratique, il suffit de prendre m = n + 1 pour produire une permutation. --r1 Dans l'exemple représenté sur la figure 1, on veut permuter douze bits. On peut alors prendre m = 13. Il est en effet important que m soit plus grand que n. On verra par la suite comment prendre m bien plus grand que n pour résoudre certaines difficultés de l'algorithme. Il reste à choisir a et b. Le choix de b différent de zéro revient à choisir hk différent de 1 pour k = 1. La plupart du temps on choisira b = 0. Cependant, pour passer d'une permutation à une autre, avec un seul algorithme mis en oeuvre selon l'étape 21, il suffira de rajouter b (modulo m) au rang de chaque bit produit par l'entrelaceur 15 dans lequel b aura valeur zéro. Ainsi, figure 1, le circuit de codage 4 peut comporter d'autres codeurs pour produire d'autres chaînes Yi de bits codés. Plutôt que de partir à chaque fois de la chaîne X et de prévoir un autre entrelaceur complexe 15, il peut être dans ce cas plus utile de partir de la chaîne X', de changer la valeur de b, et de constituer ainsi un entrelaceur supplémentaire à moindre frais, par une addition de b modulo m, pour attaquer un autre codeur. Il reste donc à choisir a. Dans un exemple, on peut choisir a arbitrairement de l'ordre de la moitié de n, ou de la moitié de n - 1. Par exemple ici on choisira a = 6. La mise en ceuvre de l'étape 21, avec a = 6 et b = 0 pour m = 13 donne alors les résultats suivants, la première ligne donnant les rang k des bits de la chaîne X, la deuxième ligne donnant les rangs attribués hk dans la chaîne X: 1 2 3 4 5 6 7 8 9 10 11 12 1 6 10 8 9 2 12 7 3 5 4 11 Cet exemple est par ailleurs représenté en marge à gauche de la figure 1. La première ligne représente les rangs k des bits de la chaîne X de bits à traiter, la deuxième chaîne représentant les rangs hk qui ont été attribué en application de l'étape 21 à ces bits de rang k de la chaîne X. Comme évoqué à l'étape 18, le bit de rang k = I se trouve rangé au rang hk=1 dans la chaîne X' de bits le codage. Pour le bit de rang k = 2, on applique la formule 21. Ceci donne un rang h2 = 6 x 1 + 0 modulo 13 en prenant b = 0. L'opération 6 x 1 + 0 donne 6, modulo 13 ne changeant pas le résultat. Ceci conduit à attribuer au bit de rang k = 2 un rang hk = 6 dans la chaîne X'. Pour le bit de rang k = 3, I'application de la formule donne h3=6x6+0 modulo 13. Ceci donne 36 modulo 13, soit 10. Ainsi de suite, tous les rangs hk sont attribués. Sachant que des bits de la chaîne X peuvent être produits par le générateur I au fur et à mesure, l'entrelaceur 15 comporte alors un registre 22 dans lequel, selon une étape 23, on range, au fur et à mesure de leur production par le générateur 1, les bits de la chaîne X' en fonction de la place qui leur aura été attribué par l'étape 21. Les flèches montrées sur le registre 22 sont relatives à ce rangement 23. Si on veut permuter un nombre n fixé de bits et que m = n + 1 ne peut pas vérifier les contraintes (ce qui est rarement le cas), on peut trouver un m' supérieur à m, faire la permutation à l'aide d'une congruence linéaire en m', et ensuite rayer les nombre supérieur à m. Par exemple, si on veut permuter dix bits, on peut prendre comme ci- dessus m = 13, a = 6, b = 0 et hl = 1. On obtient alors 1 2 3 4 5 6 7 8 9 10 11 12 I 6 10 8 9 2 4-2 7 3 5 4 14 On raye ensuite le12 et le 11 et on obtient une suite organisée aléatoirement. 1 2 3 4 5 6 7 8 9 10 1 6 10 8 9 2 7 3 5 4 En agissant ainsi, pour m supérieur strictement à n + 1, on attribue bien un rang hk+î dans la chaîne entrelacée à un bit de rang k de la chaîne binaire à transmettre, lorsque le rang hk normalement attribuable dans la chaîne entrelacée est supérieur à n, et ce pour tous les bits de rang plus grand que k de la chaîne binaire à transmettre. En effet, on a attribué un rang 7 dans la chaîne entrelacée au bit de rang 7 dans la chaîne binaire à transmettre alors que le rang 12 normalement attribuable dans la chaîne entrelacée était supérieur à 10. On a réalisé un tel décalage pour tous les bits de rang plus grand que 7, c'est-à- dire les bits de rang 8, 9 et 10, de la chaîne binaire à transmettre. Dans l'exemple montré, bien entendu la suppression du rang 11 n'a pas d'influence puisque ce rang était le dernier attribué. Néanmoins le principe de décalage ainsi évoqué peut être appliqué plusieurs fois. L'étape 23 est suivie d'une itération par branchement entre les instructions 18 et 19. Lorsque au test 20 le rang du bit produit par le générateur 1 devient supérieur à k, alors on lit dans une étape 24 le mot contenu dans le registre 22, on le fait coder par le codeur 14. La chaîne Y3 de bits traités est ensuite émise dans une étape 25 par le circuit d'émission et est envoyé dans le canal 3. Pour rendre plus fluide le traitement par le codeur 14, il est possible de prévoir un deuxième registre 26. Le deuxième registre 26 appartient aussi à l'entrelaceur 15. Dans ce cas, au cours de la lecture de la chaîne X', du codage et de l'émission des bits contenus dans le registre 22, l'entrelaceur 15 se charge de constituer une autre chaîne X' de bits permutés. Dans ce cas, simultanément à l'étape 24, I'algorithme de la figure 2 comporte un branchement 27 à un mot de n bits suivant, à une chaîne X suivante à traiter. On donne ci-après dans le tableau TABLEAU 1 suivant des exemples de valeurs des paramètres a, b et m. TABLEAU 1 a b m 6 0 13 0 17 7 0 257 206 7 1025 En pratique le choix des paramètres a, b et m est effectué, par une approche pragmatique, en comparant les performances globales du codage avec différentes permutations. Il serait toutefois possible de prévoir un algorithme automatique qui calculerait ces paramètres à partir d'un nombre n donné. Dans ce calcul, dans une première étape, on choisit m = n + 1. Puis on choisit a de l'ordre de la moitié de m ou de n. La condition de b et m premiers entre eux est alors naturellement obtenue en choisissant b = 0. Ensuite, on recherche tous les nombres premiers p divisant m. Et on cherche a pour que a - 1 soit un multiple de p, quel que soit p. Par exemple sur une chaîne X de n = 1024 bits, on essaye m = 1025 qui n'est pas premier. On réduit ensuite m en facteur premier. On peut ainsi écrire 1025 = 5 x 5 x 41. Ceci conduit à choisir, pour a, la valeur 5 x 41 + 1. Soit a = 206. On vérifie ensuite que m - a est un multiple de 5 et de 41. On peut ensuite définir b en fonction du rang de l'entrelaceur 15 dans l'ensemble des entrelaceurs utilisés dans le circuit de codage 4. S'il n'y en a qu'un b vaudra 0. S'il y en a deux, pour le premier b vaudra 0 pour le second b aura une autre valeur, par exemple a/2. La mise en oeuvre de l'algorithme de l'invention nécessite la multiplication des rangs hk-1 par a. Ceci ne présente pas de difficultés compte tenu de la rapidité des opérateurs actuellement disponibles dans les circuits de traitement. L'addition de b est une opération qui en général n'utilise qu'un temps de cycle. La congruence, modulo m, peut être réalisée avec un simple décalage de la lecture du résultat produit par l'additionneur qui ajoute b ou du multiplieur par a. Le fait de choisir b = 0 a bien entendu l'avantage de supprimer une opération, le décalage étant réalisé dans ce cas sur le résultat de la multiplication. Les avantages de la solution de l'invention par rapport à l'état de l'art sont: - une très grande simplicité de réalisation de l'entrelaceur 15 (conception, coût...); - de meilleures performances dans les cas o des débits et des contraintes temporelles spécifiques sont à respecter; - une gestion purement logicielle et nécessitant très peu de mémoire, seulement celle du registre 22 très rarement supérieur à 10 Kbits; - une adaptabilité aux différents services existant lors d'une mise en oeuvre initiale ainsi qu'une adaptabilité à d'éventuelles modifications ultérieures. Il suffit en effet de modifier le programme représenté par la figure 2. Si le caractère aléatoire doit être modifié, comme expliqué ci-dessus, on peut rajouter b aux rangs hk calculés. En variante, il est possible d'effectuer une itération du procédé sur les hk trouvés. Dans cette itération a, b et m peuvent être les mêmes ou être changés. On attribue alors des nouveaux rangs hl aux rangs hk précédents. REVENDICATIONS 1 - Procédé de transmission avec codage (4) de canal, entre un émetteur (1) et un récepteur (2), dans lequel - on code (5) une chaîne binaire (X) de n bits à transmettre avec un premier codeur pour obtenir une première chaîne codée (Y2), - on permute (15) des bits de la chaîne binaire à transmettre pour obtenir une autre chaîne (X') binaire dite entrelacée, on code (14) la chaîne entrelacée avec un deuxième codeur pour obtenir une deuxième chaîne codée (Y3), - on transmet (3) de l'émetteur au récepteur la chaîne binaire à transmettre et ou la première et ou la deuxième chaînes codées, - et on reçoit et on décode en correspondance les chaînes transmises côté récepteur pour reconstituer la chaîne binaire à transmettre, caractérisé en ce que - pour permuter les bits de la chaîne binaire de n bits à transmettre, on attribue (21) à un bit de rang k de la chaîne binaire à transmettre un rang hk dans la chaîne entrelacée, qui dépend d'un rang hk-1 attribué à un bit de rang k- 1 de la chaîne binaire à transmettre, de telle façon que le rang hk attribué soit du type: hk = a.hk- 1 + b modulo m, a, b et m étant des entiers 2 - Procédé selon la revendication 1, caractérisé en ce que m = n + 1. 3 - Procédé selon la revendication 1, modifié en ce que m est supérieur à n + 1 et en ce qu'on attribue un rang hk + 1 dans la chaîne entrelacée à un bit de rang k de la chaîne binaire à transmettre lorsque le rang hk normalement attribuable dans la chaîne entrelacée est supérieur à n, et ce pour tous les bits de rang plus grand que k de la chaîne binaire à transmettre. 4 - Procédé selon l'une des revendications 1 à 3, caractérisé en ce que b et m sont premiers entre eux, en ce que, pour tout nombre premier p qui divise m, m - a est un multiple de p, et en ce que a - 1 est un multiple de 4 si m est un multiple de 4. - Procédé selon l'une des revendications 1 à 4, caractérisé en ce que b vaut 0. 6 - Procédé selon l'une des revendications 1 à 5, caractérisé en ce que le codage est un codage convolutif récursif. 7 - Procédé selon l'une des revendications 1 à 5, caractérisé en ce qu'on donne aux paramètre a b et m des valeurs correspondant à l'une des lignes du tableau suivant:5 a b m 6 0 13 O0T 17 7 0 257 206 7 1025 8 - Procédé selon l'une des revendications 1 à 7 caractérisé en ce qu'on réitère l'attribution des rangs en attribuant des nouveaux rangs (hi) aux rangs (hk) déjà attribués.