FR 3064138 A1 20180921 FR 1752273 A 20170320 1 Procédés et dispositifs de codage à rendement compatible Domaine de l'invention Le domaine de l'invention est celui du codage et du décodage d'un message numérique d'entrée mettant en oeuvre un code correcteur d'erreurs à rendement compatible. L'invention se rapporte plus particulièrement aux techniques de codage d'un message numérique source délivrant des mots codés comprenant les symboles d'information et des symboles de redondance, destiné(s) à être transmis sur un canal de transmission (par exemple aérien ou filaire de type hertzien, optique ou électrique), ou stocké(s) dans un support matériel. L'invention se rapporte également aux techniques de décodage correspondantes, permettant notamment de corriger les erreurs de transmission inhérentes au canal de transmission. L'invention trouve notamment des applications dans les domaines suivants : la transmission d'information par télécommunications filaires électriques, comme dans les normes ADSL, ou optiques, sur fibres optiques ou en espace libre ; la transmission d'information dans les communications radios spatiales et terrestres sans fil (« wireless » en anglais), comme dans les systèmes de télévision numérique TNT, de radio numérique DAB, de téléphonie GSM ou UMTS, de réseau radio WiFi, et aussi dans les futurs systèmes de télécommunications, comme les futures normes pour des applications de télévision, de diffusion radio, de voix, de vidéo et de données (DVB, LTE, 4G, 5G, etc), ou entre véhicules, l'Internet des objets ou machines communicants « IOT : Internet Of Things », ; la compression et la décompression de source d'informations par exemple de type vidéo ; la génération et la détection de séquences dites d'embrouillage (« scrambling » en anglais) dans les systèmes CDMA ; - le stockage d'informations dans des mémoires de masse magnétiques, optiques, mécaniques ou électriques pour constituer des disques durs, ou des mémoires vives d'ordinateurs, ou des clés mémoire à interface de type USB... ; la correction d'informations lors des calculs dans un circuit intégré d'un microprocesseur ou dans un ordinateur ; la reconnaissance de formes : images, sons, etc ; la robotique commandée par une intelligence artificielle à base de réseaux de neurones. Un code correcteur d'erreurs est classiquement défini par : une longueur n, correspondant à la séquence en sortie du codeur (ou mot de code de longueur n formé de K symboles d'information et de (n - K) symboles de redondance), un nombre K de bits ou de données d'information utiles, correspondant aux données en entrée du codeur, encore appelées symboles d'information, et une distance minimale dmin. Le rendement est alors défini par R = K ln. Art antérieur 3064138 2 Les turbocodes sont des codes correcteurs d'erreurs dont les performances approchent la limite de Shannon, comme décrit dans le livre de C. Berrou (cd.), Codes et turbocodes, "Chapitre 7: Turbocodes convolutifs", Collection IRIS, Springer, 2007. La structure conventionnelle d'un turbo-encodeur D, représentée à la figure 1, comprend la concaténation parallèle de deux codes 5 convolutifs systématiques récursifs Cl et C2 (CSR) séparés par un entrelaceur INT. Le message numérique d'entrée de longueur K est encodé dans son ordre d'arrivée, dit ordre naturel, par l'encodeur Cl, et dans l'ordre entrelacé, ou permuté, par l'encodeur C2. Les symboles transmis comprennent les symboles d'information X dits systématiques et les symboles de redondance Y1, Y2. 10 Des méthodes d'entrelacement de turbocodes sont connues des demandes WO 2000/035103, WO 2000/010257, WO 2006/069392, US 2007/0288834, WO 2007/047472, WO 2008/057041, et WO 2010/148763. En réception, comme représenté à la figure 2, le décodage de ce code fait appel à deux décodeurs à entrées et sorties pondérées ou SISO (« Soft-In Soft-Out » en anglais). A partir des 15 informations relatives aux symboles d'information Lcys, et aux symboles de redondance Lcyri et /07,2, disponibles en sortie du canal, chaque décodeur calcule une information dite extrinsèque Lei et Le2 sur les symboles d'information décodés, qu'il échange avec l'autre décodeur suivant un processus itératif. Les décodeurs convergent ainsi vers une décision commune L1. Le rendement de codage global R du turbocode de la figure 1 est égal à 1/3 (avant 20 poinçonnage). Pour augmenter le rendement de codage d'un turbocode, la technique la plus utilisée consiste à poinçonner les symboles transmis suivant un motif périodique. Avec cette technique, le même codeur et le même décodeur peuvent être utilisés pour tous les rendements de codage. D'autre part, il est admis qu'il est préférable de poinçonner les symboles de redondance Y1 et Y2 plutôt que les symboles d'information, comme expliqué dans les articles de O. Acikel et W. Ryan, 25 "Punctured turbo-codes for BPSK/QPSK channels" IEEE Trans. Commun, vol. 47, no. 9, pp. 1315-1323, Sept. 1999, et de F. Mo et al., "Analysis of puncturing pattern for high rate turbo codes", Proc. IEEE Conference on Military Communications (MIL-COM 1999), vol. 1, Sep. 1999, pp. 547-550. En effet, en réception, les symboles d'information sont utilisés pour le décodage des deux codes élémentaires Cl et C2, tandis que chaque redondance n'est utilisée que pour le 30 décodage d'un seul des codes. L'absence d'un symbole d'information est par conséquent a priori plus pénalisant que l'absence d'un symbole de redondance. Un poinçonnage des symboles d'information est décrit dans la demande US 2008/0256424. Un code correcteur d'erreurs à rendement compatible (« rate-compatible code » selon la terminologie anglo-saxonne) est un code qui garantit que les symboles codés transmis pour un 35 rendement de codage R1 sont également transmis pour tout rendement de codage R2 tel que R2 R1. On parle encore de rendements incrémentaux ou de codage à redondance incrémentale. L'utilisation d'un code correcteur d'erreurs à rendement compatible se déroule selon le 3064138 3 principe suivant : - une première transmission avec le rendement de codage le plus élevé (R1). Si ce rendement est proche de 1, peu de redondances sont transmises et la transmission est très efficace en termes d'efficacité spectrale. Toutefois, il est nécessaire que le canal de transmission ne soit pas trop 5 perturbé (par exemple, le rapport signal/bruit doit être élevé dans le cas d'un canal à bruit additif gaussien) pour pouvoir décoder l'information avec succès en réception. - une deuxième transmission où seuls les bits supplémentaires pour atteindre un rendement inférieur (R2) sont transmis s'il reste des erreurs résiduelles après décodage. L'ensemble des bits transmis lors des deux transmissions est alors utilisé pour décoder le 10 code au rendement inférieur (R2). Ce processus peut être réitéré en diminuant progressivement le rendement jusqu'à ce que les données soient correctement décodées ou que le rendement le plus bas du code soit atteint. Au fur et à mesure que des bits codés additionnels sont transmis et que le rendement de codage diminue, le code devient plus puissant et la probabilité de corriger les erreurs augmente. 15 Une transmission des données codées selon le principe précédent est avantageuse par rapport à des transmissions indépendantes à rendements incrémentaux. En effet, la deuxième étape de transmission et les suivantes ne requièrent que la transmission des bits additionnels pour passer d'un rendement à celui juste inférieur, le décodeur bénéficiant à chaque étape de décodage de tous les bits transmis depuis la première étape. 20 Ce principe a été étendu aux turbocodes pour des entrelacements structurés. Un entrelaceur structuré, par opposition à un entrelaceur tiré de manière aléatoire, présente une certaine régularité dans sa structure ; il peut être décrit sous la forme d'une expression analytique. Parmi les familles d'entrelaceurs structurés connues de la littérature, on peut citer les trois familles suivantes. L' entrelaceur QPP (Quadratic Polynomial Permutation) [5T05] standardisé dans le standard LTE, 25 1' entrelaceur ARP (Almost Regular Permutation) [BSD04] standardisé dans le standard WiMAX et 1' entrelaceur DRP (Dithered Relative Prime) [CG03]. Les auteurs de [BMV05] étendent le principe d'utilisation d'un code correcteur d'erreurs à rendement compatible à un turbocode à entrelacement structuré. Les auteurs commencent par construire l'entrelacement (optimisé) pour le rendement mère (rendement le plus faible c'est-à-dire sans poinçonnage). Cet entrelacement est 30 ensuite conservé pour tous les autres rendements (supérieurs au rendement mère). Pour passer d'un rendement R1 au rendement R2 juste supérieur, les auteurs choisissent de poinçonner le bit codé qui pénalise le moins la distance minimale du code de rendement R2 résultant (c'est-à-dire que le code résultant doit avoir la distance minimale la plus grande possible). Les auteurs de [BMV05] préconisent ainsi d'optimiser l'entrelacement pour le rendement mère (c'est-à-dire pour le 35 rendement le plus faible) sans poinçonnage puis de choisir, de manière incrémentale et au fur et à mesure que le rendement de codage augmente, le poinçonnage qui réduit le moins la distance minimale du code. 3064138 4 Exposé de l'invention L'invention propose un procédé de codage de type turbocode à rendements compatibles pour le codage de messages de taille K, c'est-à-dire permettant la transmission des bits codés de manière incrémentale pour un rendement pouvant varier entre deux extrêmes, un rendement R1 le 5 plus faible et un rendement R, le plus élevé. Selon le procédé proposé, l'entrelacement et le poinçonnage du turbocode sont d'abord optimisés pour le rendement R, le plus élevé. C'est-à-dire que la combinaison entrelacement/poinçonnage choisie est celle qui confere au turbocode de rendement R, le spectre de distance le plus favorable. Ensuite, la diminution incrémentale du rendement est obtenue en 10 enlevant une par une les positions poinçonnées ou de manière équivalente en ajoutant une par une des positions non poinçonnées dans le motif de poinçonnage. L'ajout de positions non poinçonnées est donc effectué de manière incrémentale. Le poinçonnage selon l'invention est conditionné par la loi de connexion déterminée pour le rendement le plus élevé et cette loi est conservée pour toute variation du rendement jusqu'au rendement mère (sans poinçonnage). 15 La position non poinçonnée, systématique ou parité (redondance), ajoutée pour chaque variation du rendement est choisie pour conférer au turbocode résultant le meilleur spectre de distance (c'est-à-dire la distance minimale de Hamming la plus grande) pour le rendement recherché. Si deux ou plusieurs positions donnent des distances minimales de Hamming égales, le procédé choisit celle qui présente la multiplicité (nombre de mots de codes à la distance minimale 20 de Hamming) minimale. En cas d'égalité, le procédé considère la distance suivante dans le spectre, et ainsi de suite. Ce procédé permet ainsi d'obtenir des turbocodes extrêmement flexibles puisque le rendement peut varier entre R, et R1 avec une granularité fine du rendement. Le procédé proposé va à l'encontre des préconisations dans le domaine en ce qu'il 25 considère le rendement du plus élevé au plus faible et non pas du plus faible au plus élevé comme préconisé. En effet, l'état de l'art préconise d'optimiser l'entrelacement du turbo-codeur au rendement le plus faible (en général sans poinçonnage) puis de poinçonner de manière incrémentale pour augmenter le rendement de façon à obtenir des codes dont la distance minimale soit la plus grande 30 possible pour chaque rendement. Alors que l'invention impose d'optimiser conjointement l'entrelacement et le poinçonnage du turbo-codeur pour le rendement R, le plus élevé et, seulement ensuite d'ajuster de manière incrémentale le rendement. L'entrelaceur ainsi obtenu n'a aucune raison d'être identique à l'entrelaceur qui résulterait d'une optimisation du spectre des distances du code de rendement le plus faible. 35 Cette différence a un effet surprenant puisque le résultat obtenu n'est pas équivalent à celui obtenu avec l'état de l'art ; les performances sont nettement supérieures avec un procédé de codage selon l'invention. 3064138 5 Plus particulièrement, l'invention a pour objet un procédé de codage d'un message numérique d'entrée, portant K symboles d'information, mettant en oeuvre un turbo-codeur formant un turbocode, le turbo-codeur comportant un entrelaceur et des premier et deuxième encodeurs à encodage selon au moins un code élémentaire, et délivrant les symboles d'information dits 5 systématiques et des symboles de redondance, un poinçonnage des symboles délivrés par le turbo- codeur étant effectué suivant au moins un motif de poinçonnage de longueur N, L = KIN définissant le nombre de périodes de poinçonnage. Le turbocode permet le codage du message avec un rendement variable pouvant varier entre un premier rendement R1, dit le plus faible et un second rendement R,, dit le plus élevé. Le procédé est tel qu'il comprend : 10 une optimisation conjointe de l'entrelacement et du poinçonnage pour le rendement le plus élevé R, et ensuite un ajout d'une position non poinçonnée dans au moins un motif de poinçonnage pour au moins une période du au moins un motif pour une variation du rendement. Le poinçonnage des symboles délivrés intervient sur les symboles systématiques et/ou sur 15 les symboles de redondance. Lorsque les symboles systématiques sont poinçonnés alors le poinçonnage intervient selon un motif M_S. Lorsque les symboles de redondance sont poinçonnés alors le poinçonnage intervient selon au moins un motif M_P. Dans le cas où le turbo-codeur fournit plusieurs sorties systématiques et/ou de redondance, il peut y avoir un motif pour les symboles systématiques et il peut y avoir autant de motifs que de sorties pour les symboles de 20 redondance. Le masque de poinçonnage (constitué du ou des motifs s'il y en a plusieurs) du rendement recherché est obtenu après répétition autant que nécessaire de l'étape d'ajout d'une position non poinçonnée à partir du rendement le plus élevé. Selon certains modes, les motifs se répètent à l'identique tous les KIN périodes, les motifs sont alors totalement périodiques. Selon d'autres modes, l'ajout d'une position non poinçonnée n'intervient pas pour toutes les périodes 25 d'un ou plusieurs motifs mais pour certaines d'entre elles i.e pour p périodes prises parmi toutes les périodes. Selon un mode de réalisation particulier, le poinçonnage est effectué selon n motifs de poinçonnage de longueur N, n 2. Selon un mode de réalisation particulier, l'ajout intervient pour p périodes parmi les L 30 périodes d'au moins le motif, 1 pL. Selon un mode de réalisation particulier, l' ajout intervient pour p périodes parmi toutes les périodes de plusieurs des n motifs, 1 p'11,) 1/3 et R > 1/5. Un turbo-codeur selon l'invention est tel que l'entrelacement interne du turbocode est identique pour tous les rendements admissibles pour que la propriété de compatibilité de rendement 30 soit respectée. S'il n'était pas identique, les bits de redondance (parités) générés ne seraient pas les mêmes d'un rendement à l'autre et la compatibilité de rendement ne pourrait pas être assurée. Le turbo-codeur illustré en figure 3A comprend un entrelaceur ENT et deux encodeurs, par exemple de type convolutifs systématiques récursifs (Cl, C2). Seul l'encodeur Cl produit une sortie systématique, symboles d'information X dans l'ordre naturel. Chaque encodeur produit une 35 sortie de redondance (symboles de redondance Y1 pour le premier encodeur Cl et symboles de redondance Y2 pour le deuxième encodeur C2). Le message numérique d'entrée, comprenant K 3064138 10 symboles d'information, est encodé dans son ordre d'arrivée, dit ordre naturel, par l'encodeur Cl, et dans l'ordre entrelacé, ou permuté, par l'encodeur C2. Le message numérique de sortie, comprenant la sortie systématique (symboles d'information X) et la sortie de redondance (symboles de redondance Y1 et Y2), peut être 5 poinçonné par un dispositif de poinçonnage suivant au moins un motif périodique de poinçonnage de longueur N. Par exemple, pour chaque rendement de codage supérieur à 1/3, trois motifs de poinçonnage périodiques de longueur N sont utilisés, exprimés par exemple chacun sous la forme d'un vecteur binaire : un premier motif de poinçonnage utilisé pour le poinçonnage des symboles d'information X, un deuxième motif de poinçonnage utilisé pour le poinçonnage des symboles de 10 redondance Yl, et un troisième motif de poinçonnage utilisé pour le poinçonnage des symboles de redondance Y2. Si les codes élémentaires des premier et deuxième encodeurs (Cl, C2) du turbo-codeur sont identiques, le même motif de poinçonnage peut être appliqué aux symboles de redondance Y1 et aux symboles de redondance Y2. Le turbo-codeur illustré en figure 3B comprend un entrelaceur ENT et deux encodeurs, par 15 exemple de type convolutifs systématiques récursifs (Cl, C2), produisant chacun une sortie systématique (symboles d'information X dans l'ordre naturel pour le premier encodeur Cl, ou symboles d'information X' dans l'ordre entrelacé pour le deuxième encodeur C2) et une sortie de redondance (symboles de redondance Y1 pour le premier encodeur Cl et symboles de redondance Y2 pour le deuxième encodeur C2). Le message numérique d'entrée, comprenant K symboles 20 d'information, est encodé dans son ordre d'arrivée, dit ordre naturel, par l'encodeur Cl et dans l'ordre entrelacé, ou permuté, par l'encodeur C2. Le message numérique de sortie, comprenant la sortie systématique (symboles d'information X ou bien symboles d'information X') et la sortie de redondance (symboles de redondance Y1 et Y2), peut être poinçonné par un dispositif de poinçonnage suivant au moins un 25 motif périodique de poinçonnage de longueur N. Par exemple, pour chaque rendement de codage supérieur à 1/3, trois motifs de poinçonnage périodiques de longueur N sont utilisés, exprimés par exemple chacun sous la forme d'un vecteur binaire : un premier motif de poinçonnage utilisé pour le poinçonnage des symboles d'information X ou X', un deuxième motif de poinçonnage utilisé pour le poinçonnage des symboles de redondance Yl, et un troisième motif de poinçonnage utilisé 30 pour le poinçonnage des symboles de redondance Y2. Si les codes élémentaires des premier et deuxième encodeurs (Cl, C2) du turbo-codeur sont identiques, le même motif de poinçonnage peut être appliqué aux symboles de redondance Y1 et aux symboles de redondance Y2. Le turbo-codeur illustré en figure 3C comprend un entrelaceur ENT et deux encodeurs, par exemple de type convolutifs systématiques récursifs (Cl, C2), produisant chacun une sortie 35 systématique (symboles d'information X dans l'ordre naturel pour le premier encodeur Cl ou symboles d'information X' dans l'ordre entrelacé pour le deuxième encodeur C2) et deux sorties de redondance (symboles de redondance Y1 et W1 pour le premier encodeur Cl et symboles de 3064138 11 redondance Y2 et W2 pour le deuxième encodeur C2). Le message numérique d'entrée, comprenant k symboles d'information, est encodé dans son ordre d'arrivée, dit ordre naturel, par l'encodeur Cl et dans l'ordre entrelacé, ou permuté, par l'encodeur C2. Le message numérique de sortie comprenant la sortie systématique (symboles 5 d'information X ou bien symboles d'information X') et les deux sorties de redondance (symboles de redondance Y1 et W1 obtenus à partir du premier encodeur et symboles de redondance Y2 et W2 obtenus à partir du deuxième encodeur) peut être poinçonné par un dispositif de poinçonnage suivant au moins un motif périodique de poinçonnage de longueur N. Par exemple, pour chaque rendement de codage supérieur ou égal à 1/5, cinq motifs de poinçonnage périodiques de longueur 10 N sont utilisés, exprimés par exemple chacun sous la forme d'un vecteur binaire : un premier motif de poinçonnage utilisé pour le poinçonnage des symboles d'information X ou X', un deuxième motif de poinçonnage utilisé pour le poinçonnage des symboles de redondance Y1, un troisième motif de poinçonnage utilisé pour le poinçonnage des symboles de redondance Y2, un quatrième motif de poinçonnage utilisé pour le poinçonnage des symboles de redondance W1 et un cinquième 15 motif de poinçonnage utilisé pour le poinçonnage des symboles de redondance W2. Si les codes élémentaires des premier et deuxième encodeurs (Cl, C2) du turbo-codeur sont identiques, le même motif de poinçonnage peut être appliqué aux symboles de redondance Y1 et aux symboles de redondance Y2. De la même façon, le même motif de poinçonnage peut être appliqué aux symboles de redondance W1 et aux symboles de redondance W2. 20 Chacun des turbo-codeurs TC des figures 3A, 3B et 3C comprend un processeur ,uP pour mettre en oeuvre une optimisation conjointe de l'entrelacement et du poinçonnage pour le rendement le plus élevé R, et pour ensuite ajouter au moins une position non poinçonnée dans au moins un motif de poinçonnage pour au moins une période du au moins un motif pour une variation du rendement. Le processeur pilote l'entrelaceur et le dispositif de poinçonnage. Les 25 turbo-codeurs TC peuvent comprendre le dispositif de poinçonnage. L'organigramme de la figure 4 représente les principales étapes mises en oeuvre par un codeur selon l'invention. Un procédé 1 de codage de type turbocode à rendements compatibles selon l'invention permet de coder un message de taille K avec un rendement pouvant varier entre deux rendements extrêmes considérés, le rendement le plus faible R1 et le rendement le plus élevé 30 R. Prenons pour exemple un turbo-codeur illustré par la figure 3A de rendement mère 1/3, une taille de message K = 4000 bits, une longueur N = 16 du motif M_S de poinçonnage des symboles systématiques et du motif M_P des symboles de redondances issus d'un code élémentaire, un rendement le plus élevé R, = 8/9. 35 Dans une première étape 2, le procédé effectue une optimisation Optim. conjointe de l'entrelacement et du poinçonnage pour le rendement le plus élevé R. Cette optimisation 2 3064138 12 conjointe du poinçonnage et de l'entrelacement est réalisée selon un mode de réalisation en mettant en oeuvre le procédé décrit dans la demande de brevet WO W02016203039. Selon cette réalisation, et pour l'exemple illustré, le motif M de poinçonnage optimisé est illustré à la figure 5. Ce motif périodique comprend le motif M_S et deux motifs M_P identiques. M_S représente le motif de 5 poinçonnage pour les symboles d'information X, M_P représente le motif de poinçonnage pour chacun des symboles de redondance Y1 et Y2. Un 0 représente un bit poinçonné, un 1 représente un bit transmis. Ainsi, il y a deux symboles d'information poinçonnés et 2 x 14 symboles de 4000x3 redondance poinçonnés par période N = 16 soit au total (28 + 2) x = 30 x 250 =7500 16x3 symboles poinçonnés. On retrouve bien le rendement : 4000 4000 40 8/9 R= = - = - = 45 z (4000x3-7500) 4500 Si deux ou plusieurs combinaisons d'entrelacement et poinçonnage conduisent à des spectres de distance très proches, typiquement les distances minimales de Hamming sont égales pour ces combinaisons, pour le rendement le plus élevé, le procédé choisit l'entrelacement qui favorise le plus le rendement mère (sans poinçonnage) en termes de spectre de distances. Pour 15 comparer deux ou plusieurs spectres de distances, le procédé compare tout d'abord le terme de distance le plus faible de chacun des spectres (distance minimale de Hamming) et choisit le spectre qui a la distance minimale de Hamming la plus élevée. En cas d'égalité des distances minimales, le procédé choisit le spectre avec la multiplicité (nombre de mots de codes à la distance minimale de Hamming) la plus faible. En cas d'égalité de ces deux grandeurs pour deux ou plusieurs 20 combinaisons, le procédé considère la distance suivante dans le spectre et choisit la combinaison correspondant à la plus grande valeur de la distance et, en cas d'égalité, à la plus petite multiplicité. Dans une deuxième étape 3, impérativement postérieure à la première étape, le procédé ajoute une position non poinçonnée dans le motif de poinçonnage M_P selon l'illustration, pour obtenir une diminution incrémentale du rendement. Les positions non poinçonnées ajoutées à 25 chaque itération de l'étape 3 sont celles qui confèrent au turbocode tc résultant le meilleur spectre de distance, c'est-à-dire la distance minimale de Hamming la plus grande pour le rendement recherché R. La position ajoutée à chaque étape 3 est ajoutée dans le motif M_S uniquement, dans un des motifs M_P uniquement ou dans plusieurs des motifs pris parmi le motif M_S et les motifs M_P. Les positions ajoutées concernent donc un ou plusieurs symboles d'information et/ou un ou 30 plusieurs symboles de redondance. Selon l'exemple illustré pour lequel le motif M de la figure 5 est optimisé pour un rendement R, = 8/9, l'ajout d'une seule position non poinçonnée dans chaque motif de parité M_P permet d'obtenir un rendement Rz_1 = 4/5 comme illustré par la figure 6. En outre, compte tenu que le motif M de la figure 5 est optimisé lors de la première étape 2 alors la meilleure position 35 Pos_4/5 à ajouter est la 121ème position dans chaque motif M_P de poinçonnage. En ajoutant une seule autre position non poinçonnée dans chaque motif de parité le rendement obtenu est Rz_2 = 10 3064138 13 8/11. La meilleure position Pos_8/11 est la 111ème position dans chaque motif M_P de poinçonnage. De nouveau, en ajoutant une seule autre position non poinçonnée dans chaque motif de parité le rendement obtenu est Rz_3 = 2/3. La meilleure position Pos_2/3 est la 61ème position dans chaque motif M_P de poinçonnage. Et ainsi de suite jusqu'au rendement mère R1 = 1/ 5 3 obtenu en l'absence de poinçonnage ; aucune position n'est poinçonnée. Selon l'exemple illustré, l'ajout de positions non poinçonnées pour les symboles d'information intervient en dernier, après l'ajout de positions non poinçonnées pour les symboles de redondance. On note Ni?, le nombre de bits à transmettre pour atteindre le rendement R. On définit la granularité comme étant le rapport entre le nombre x de bits supplémentaires à transmettre et la (NR _ -NR,) 10 taille du message pour passer d'un rendement Ri au rendement juste inférieur R1_1 : xIK, K étant la taille du message à l'entrée du turbo-codeur avant poinçonnage (rapport normalisé). Selon l'exemple précédent, lorsque la période de poinçonnage est de N pour un turbo- codeur de rendement mère 1/3, la granularité est de 2IN pour l'obtention d'autres rendements. Dit 15 autrement, la granularité de 2/N correspond à l'ajout d'un bit tous les N bits dans chacun des motifs M_P de poinçonnage des bits de parité. Selon une autre réalisation, une variation plus fine du rendement est obtenue en ajoutant une seule position dans un seul des deux motifs de parité ou dans le motif des symboles d'information. Ceci permet d'obtenir un rendement R = 16/19 intermédiaire entre les rendements 20 Rz = 8/9 et R = 4/5, ainsi qu'un rendement R = 16/21 intermédiaire entre les rendements R = 4/5 et R = 8/11 et qu'un rendement R = 16/23 intermédiaire entre les rendements R = 8/11 et R = 2/3. Ainsi, lorsque la période de poinçonnage est de N pour un turbo-codeur de rendement mère 1/3, la granularité est de 1/N pour l'obtention d'autres rendements. Dit autrement, la granularité de 1/N correspond à l'ajout d'un bit tous les N bits soit dans le motif de poinçonnage 25 des bits d'information (partie systématique) soit dans un des motifs de poinçonnage des bits de redondance (parité). Le procédé décrit précédemment permet avantageusement d'identifier la position à ajouter dans le masque de poinçonnage pour passer de manière incrémentale avec une granularité de 1/N, d'un rendement Ri au rendement juste inférieur R1_1. Ainsi, si la trame d'information à transmettre 30 contient L périodes de longueur N (L = [K/ND, le procédé ajoute L bits sur la longueur de la trame pour passer du rendement Ri au rendement R1_1. Comme vu précédemment pour l'exemple de motif de la figure 5 qui correspond à Rz = 8/9 pour N = 16, l'ajout d'une position non poinçonnée dans un des motifs M_P de poinçonnage des parités ou dans le motif M_S de poinçonnage des systématiques pour toutes les périodes du motif M permet d'obtenir un rendement 35 Rz-i - 16/19. 3064138 14 Il s'avère que l'organisme de normalisation 3GPP au sein duquel interviennent les travaux pour les futures générations de téléphonie mobile (LTE adv, 5G, etc.) requiert des granularités du rendement plus fines que 1/N. Or, il n'y a pas de méthode connue qui adresse ce problème de construction de codes à rendements compatibles avec une granularité quelconque. Le mécanisme 5 de rate matching du standard LTE (3GPP) apporte une solution à ce problème mais il est déconnecté de la construction de l'entrelacement et entraîne de mauvaises performances pour certains rendements. Il est ainsi possible de trouver des cas où les courbes de taux d'erreurs pour un rendement R2 sont moins bonnes que celles avec un rendement R1 alors que R2 REVENDICATIONS1. Procédé (1) de codage d'un message numérique d'entrée, portant K symboles d'information, mettant en oeuvre un turbo-codeur formant un turbocode, le turbo-codeur comportant un entrelaceur (ENT) et des premier et deuxième encodeurs (Cl, C2) à encodage selon au moins un code élémentaire, et délivrant les symboles d'information dits systématiques et des symboles de redondance, un poinçonnage des symboles délivrés par le turbo-codeur étant effectué suivant au moins un motif (M_S, M_P) de poinçonnage de longueur N, L = K/N définissant le nombre de périodes de poinçonnage, caractérisé en ce que, le turbocode permettant le codage du message avec un rendement variable pouvant varier entre un premier rendement R1, dit le plus faible et un second rendement R,, dit le plus élevé, le procédé est tel qu'il comprend : une optimisation conjointe (2) de l'entrelacement et du poinçonnage pour le rendement le plus élevé R, et ensuite un ajout (3) d'une position non poinçonnée dans au moins un motif de poinçonnage pour au moins une période du au moins un motif pour une variation du rendement. 2. Procédé (1) de codage selon la revendication 1 selon lequel le poinçonnage est effectué selon n motifs de poinçonnage (M_S, M_P) de longueur N, n 2. 3. Procédé (1) de codage selon l'une des revendications 1 et 2 selon lequel l'ajout intervient pour p périodes parmi les L périodes d'au moins le motif, 1 4. Procédé (1) de codage selon la revendication 2 selon lequel l'ajout intervient pour p périodes parmi toutes les périodes de plusieurs des n motifs, 1 p'11,) 5. Procédé (1) de codage selon la revendication 3 selon lequel le poinçonnage comprend un poinçonnage des symboles de redondance effectué selon m motifs (M_P) de longueur N et selon lequel l'ajout est d'une seule position non poinçonnée dans au moins un des m motifs de poinçonnage des symboles de redondance, m > 2. 6. Procédé (1) de codage selon la revendication 3 selon lequel le poinçonnage comprend un poinçonnage des symboles systématiques effectué selon un motif (M_S) de longueur N et selon lequel l'ajout est d'une seule position non poinçonnée dans ce motif de poinçonnage des symboles systématiques. 7. Procédé (1) de codage selon l'une des revendications 1 à 6 selon lequel l'ajout d'une position dans au moins le motif est effectuée à une position déterminée parmi différentes positions possibles dans ce motif, cette position étant déterminée comme étant celle qui conduit à la distance minimale de Hamming la plus grande pour le rendement obtenu à l'issu de la variation de rendement. 3064138 22 8. Procédé (1) de codage selon l'une des revendications 1 à 7 selon lequel l'entrelaceur répartit les symboles d'information du message d'entrée dans Q couches du message d'entrée entrelacé en respectant une fonction d'entrelacement définie à partir du au moins un motif de poinçonnage, selon la relation : n-(i) = (Pi + S(i mod Q)) mod K = (Pi + (TI + 111Q)) mod K 5 avec : i = 0, ..., K - 1 la position d'un symbole d'information dans le message d'entrée entrelacé, dans l'ordre entrelacé, et n-(i) la position du symbole d'information dans le message d'entrée, dans l'ordre naturel ; P une valeur entière première avec la longueur K du message d'entrée, dite période de 10 l' entrelaceur ; S(i mod Q) = S(1) = TI + ALQ les paramètres d'ajustement de la fonction d'entrelacement, avec / = 0, ..., Q - 1 le numéro de la couche ; Q degré de désordre inséré dans l'entrelaceur, correspondant au nombre de couches, tel que Q = qN , avec q 1 un entier, et Q un diviseur de k; 15 TI une valeur d'ajustement inter-couches définie à partir du au moins un motif de poinçonnage ; et Al une valeur d'ajustement intra-couche. 9. Procédé (1) de codage selon la revendication précédente selon lequel la valeur d'ajustement 20 inter-couches TI fait correspondre les positions des symboles d'information non poinçonnés les plus fragiles aux positions des symboles d'information non poinçonnés les moins fragiles, le degré de fragilité des positions étant déterminé en comparant les spectres des distances des codes élémentaires obtenus en poinçonnant un par un chacun des symboles d'information non poinçonnés, la position la moins fragile correspondant au spectre ayant 25 la distance minimale de Hamming la plus grande et la multiplicité la plus faible, et la position la plus fragile correspondant au spectre ayant la distance minimale de Hamming la plus faible et la multiplicité la plus grande, la multiplicité correspondant au nombre de mots d'un code élémentaire à une distance d. 30 10. Procédé de codage selon la revendication précédente ou la revendication 8 selon lequel le procédé choisit l'entrelacement qui favorise le plus le rendement mère en termes de spectre de distances si deux ou plusieurs combinaisons d'entrelacement et poinçonnage conduisent à des spectres très proches pour le rendement le plus élevé. 3064138 23 11. Codeur (TC) de rendement compatible permettant le codage d'un message numérique d'entrée, portant K symboles d'information, mettant en oeuvre un turbo-codeur formant un turbocode, le turbo-codeur comportant un entrelaceur (ENT) et des premier et deuxième encodeurs (Cl, C2) à encodage selon au moins un code élémentaire, et délivrant les symboles 5 d'information dits systématiques et des symboles de redondance, un poinçonnage des symboles délivrés par le turbo-codeur étant effectué suivant au moins un motif (M_S, M_P) de poinçonnage de longueur N, L = KIN définissant le nombre de périodes de poinçonnage, caractérisé en ce que, le codeur permettant le codage du message avec un rendement variable pouvant varier entre un premier rendement R1, dit le plus faible et un second rendement Rp, dit le 10 plus élevé, le codeur est tel qu'il comprend : un processeur pour mettre en oeuvre une optimisation conjointe (2) de l'entrelacement et du poinçonnage pour le rendement le plus élevé R, et un processeur pour ensuite ajouter (3) une position non poinçonnée dans au moins un motif de poinçonnage pour au moins une période du au moins un motif pour une 15 variation du rendement.