Brevet FR3108813A1 — publié le 20211001

Procédé de codage d’un message numérique d’entrée Procédé de codage d’un message numérique d’entrée, utilisant au moins un encodeur, notamment destiné à former un code correcteur d’erreurs, en particulier un turbocode, ledit encodeur formant, à partir du message d’entrée, une séquence principale de symboles codés non binaires, chaque symbole codé étant un symbole systématique ou un symbole de parité, le procédé comportant les étapes suivantes : convertir chaque symbole codé en un groupe de bits, pour au moins un symbole codé, en particulier pour un ou plusieurs symboles de parité, poinçonner sélectivement certains bits du groupe de bits correspondant de sorte à minimiser le nombre de symboles de parités de la séquence principale situés à une distance nulle d’un symbole de parité appartenant à au moins une séquence concurrente de symboles codés non binaires, et regrouper les bits non poinçonnés des symboles codés pour former le message codé de sortie. Figure pour l’abrégé : Fig. 4 Procédé de codage d’un message numérique d’entrée La présente invention concerne les procédés et produits programmes d’ordinateur pour le codage et la transmission d’un message numérique d’entrée non binaire, utilisant un encodeur formant un code correcteur d’erreurs, notamment un turbocode ou un code convolutif. L'invention se rapporte plus particulièrement aux techniques de codage d'un message numérique d’entrée délivrant une séquence de symboles codés, notamment des symboles systématiques et des symboles de parité, destinée à être transmise sur un canal de transmission, par exemple aérien ou filaire de type hertzien, optique ou électrique, ou stockée sur un support matériel. 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 systèmes de télécommunications, comme les 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, ou pour les objets et machines communicants (l'Internet des objets, ou IOT pour « Internet Of Things » en anglais) ; 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 ; ou la correction d'informations lors des calculs dans un circuit intégré d'un microprocesseur ou dans un ordinateur. 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 (ed.), Codes et turbocodes , "Chapitre 7 : Turbocodes convolutifs", Collection IRIS, Springer, 2007. Les codes correcteurs d’erreurs classiquement utilisés dans les systèmes de communications numériques sont binaires. En d’autres termes, les symboles du message numérique en entrée de l’encodeur, et les symboles systématiques et de parité obtenus en sortie de l’encodeur, sont des éléments binaires, par exemple appartenant au corps de Galois GF(2). La structure conventionnelle d’un turbo-encodeur binaire 1, représentée à la figure 1, comprend la concaténation parallèle de deux codes convolutifs systématiques récursifs RSC0 et RSC1 (CSR) séparés par un entrelaceur 2. Le message numérique d’entrée 3 de longueur K est encodé dans son ordre d’arrivée, dit ordre naturel, par l’encodeur RSC0, et dans l’ordre entrelacé, ou permuté, par l’encodeur RSC1. Le rendement de codage global R du turbocode de la figure 1 est égal à 1/5. Pour augmenter le rendement de codage d’un turbocode binaire, la technique la plus utilisée consiste à poinçonner les symboles transmis suivant un motif périodique. Des codes correcteurs d’erreurs peuvent également être définis sur des corps de Galois de cardinal q plus élevé que 2, GF(q). Il peut s’agir de codeur convolutif récursif non binaire, dont la structure est par exemple représentée à la figure 2. Dans ce cas, le message numérique d’entrée d est formé de K symboles d’entrée définis sur GF(q), et le message numérique de sortie est formé de symboles systématiques s , correspondant aux K symboles d’entrée, et de symboles de parité p , définis sur GF(q). La structure d’un turbo-encodeur non binaire, représentée à la figure 3, est similaire à la structure d’un turbo-encodeur binaire tel que celui représenté à la figure 1. Dans ce cas, le message numérique d’entrée d est formée de K symboles d’entrée définis sur GF(q), et le message numérique de sortie est formé de symboles systématiques s , correspondant aux K symboles d’entrée, et de symboles de parité p 0 et p 1 , définis sur GF(q). Ces codes correcteurs d’erreurs non binaires peuvent être associés à une modulation d’ordre p égal à q (par exemple une modulation d’amplitude en quadrature q-QAM ou q-APSK) ou à une modulation d’ordre différent. En particulier, le pouvoir de correction des codes non binaires est supérieur au pouvoir de correction des codes binaires lorsque ces codes sont associés à une modulation de même ordre, p égal à q (par exemple q-QAM). Une différence entre les codes binaires et non binaires du point de vue du pouvoir de correction est que les performances à faible taux d’erreur d’un code binaire sont dictées par sa distance minimale de Hamming, tandis que les performances à faible taux d’erreur d’un code non binaire sont dictées par la distance euclidienne cumulée minimale entre deux séquences concurrentes, correspondant à deux messages concurrents en sortie du turbo-codeur, qui tient compte de la constellation de modulation utilisée dans le cas d’une transmission sur un canal. On évalue le spectre de la distance euclidienne d’un code en énumérant toutes les séquences concurrentes d’une séquence principale, codées par l’encodeur, et en compilant les distances euclidiennes minimales cumulées obtenues entre ces séquences. Pour une transmission sur canal gaussien, la probabilité d’erreur d’un code convolutif ou d’un turbocode non binaire, c’est-à-dire sa performance de correction, est directement liée au spectre de sa distance euclidienne. Le taux d’erreurs paquets P f (TEP ou FER pour « Frame Error Rate » en anglais) est majoré de la manière suivante : , où C représente un jeu de séquences codées et |C| son cardinal. Les distances euclidiennes cumulées sont représentées par le vecteur d, avec d min = d 1 imax , n(d i ) est le nombre d’occurrence de la séquence principale codée à la distance d i , σ est la variance du bruit gaussien et Q(x) est la queue de la distribution (en anglais « tail distribution » ) normale définie par : Le taux d’erreur paquets est mieux approximé par le majorant de l’inégalité ci-dessus pour des rapports signal à bruit élevés (« Signal to Noise Ratio » en anglais ou SNR). En pratique, la connaissance des termes les plus faibles du spectre de la distance est suffisante pour obtenir une estimation correcte du majorant. C’est pourquoi, pour minimiser le taux d’erreurs paquets à haut SNR, on cherche à concevoir des codes dont la distance euclidienne cumulée minimale est élevée et qui ont un faible nombre d’occurrences. Tout comme pour les codes correcteurs binaires, on peut, pour augmenter le rendement de codage d’un encodeur non binaire, poinçonner les symboles transmis suivant un motif périodique. L’inconvénient d’une telle méthode est que le poinçonnage d’un symbole transmis non binaire diminue fortement la distance euclidienne cumulée minimale entre deux séquences concurrentes et accroit donc le risque de mauvais décodage du message transmis. Lorsqu'on poinçonne l’ensemble d'un symbole, les termes de distances euclidiennes entre symboles poinçonnés deviennent nuls. La distance cumulée minimale entre deux séquences concurrentes est par conséquent fortement diminuée par rapport à un procédé de codage ne mettant pas en œuvre d’étape de poinçonnage. Ceci a pour conséquence d’augmenter le risque d’erreur de transmission : en effet, plus la distance euclidienne cumulée minimale entre la séquence principale correspondante au message d’entrée et les séquences concurrentes est faible, plus le taux d’erreur est élevé. Il existe un besoin pour améliorer les performances, notamment minimiser le taux d’erreur, des codes correcteurs d’erreurs, en particulier des turbocodes, formés à partir d’un message numérique d’entrée non binaire. En particulier, il existe un besoin pour une nouvelle méthode de poinçonnage des symboles non binaires avec un taux d’erreur plus faible que celui des méthodes de l’art antérieur présentées ci-dessus, à rendement équivalent. Procédé de codage d’un message numérique L’invention a pour but de répondre à ce besoin et elle y parvient, selon l’un de ses aspects, grâce à un procédé de codage d’un message numérique d’entrée, utilisant au moins un encodeur, notamment destiné à former un code correcteur d’erreurs, en particulier un turbocode, ledit encodeur formant, à partir du message d’entrée, une séquence principale de symboles codés non binaires, chaque symbole codé étant un symbole systématique ou un symbole de parité, le procédé comportant les étapes suivantes : convertir chaque symbole codé en un groupe de bits, pour au moins un symbole codé, en particulier pour un ou plusieurs symboles de parité, poinçonner sélectivement certains bits du groupe de bits correspondant de sorte à minimiser le nombre de symboles de parités de la séquence principale situés à une distance nulle d’un symbole de parité appartenant à au moins une séquence concurrente de symboles codés non binaires, et regrouper les bits non poinçonnés des symboles codés pour former le message codé de sortie. Ce procédé offre une plus grande flexibilité que le poinçonnage de symboles utilisé dans l’art antérieur. L’invention permet de poinçonner partiellement un symbole codé en poinçonnant sélectivement certains bits le composant. Ceci permet d’augmenter le taux de codage de l’encodeur en minimisant le risque de perte d’informations. Grâce à l’invention, la valeur de la distance cumulée minimale entre deux séquences est maintenue suffisamment élevée pour que le décodeur puisse détecter et/ou corriger une éventuelle erreur à la réception du message. L’invention offre ainsi un meilleur taux de correction d’erreurs que les procédés de codage utilisés par les encodeurs de l’art antérieur. Par ailleurs, sa complexité de mise en place est faible et n’augmente pas de manière exagérée le décodage du message non binaire transmis. Lorsqu'on réalise un poinçonnage sélectif de bits dans un symbole, la distance euclidienne entre les symboles poinçonnés de deux séquences concurrentes n'est pas nécessairement nulle comme dans le cas d'un poinçonnage de symbole, mais correspond à la distance minimale entre les deux groupes de points correspondants aux symboles poinçonnés de la constellation. Le procédé selon l'invention permet donc de limiter la diminution de la distance minimale euclidienne entre deux séquences concurrentes liée à l'étape de poinçonnage. La mise en œuvre de cette étape de poinçonnage sélectif permet d’améliorer les performances de correction des codes correcteurs d’erreurs non binaires, en particulier des turbocodes. De préférence, les bits poinçonnés sont uniquement les bits des groupes de bits correspondant aux symboles de parité. De préférence, on applique ainsi une stratégie de poinçonnage dans laquelle on ne poinçonne pas les bits correspondants aux symboles systématiques de la séquence principale de symboles codés. Une telle stratégie permet de transmettre un maximum d’informations utiles puisque seuls les symboles de parité, qui contiennent des informations redondantes, sont poinçonnés. Par « séquence concurrente », il faut comprendre une séquence de symboles codés formée à partir du même encodeur que la séquence dite principale mais à partir d’un autre message d’entrée potentiel, conduisant à un message concurrent en sortie de l’encodeur. Préférentiellement ce sont les séquences concurrentes proches, en termes de distance, de la séquence principale transmise qui sont considérées. En théorie, chaque séquence a un très grand nombre de séquences concurrentes, q K -1, avec K la longueur de la séquence et q l’ordre du code. On peut considérer comme séquences concurrentes proches les séquences qui diffèrent de la séquence principale d’au moins deux symboles systématiques, par exemple deux ou trois symboles systématiques. Des distances d’ sont avantageusement calculées entre chaque symbole codé de la séquence principale et chaque symbole correspondant de ladite au moins une séquence concurrente, ces distances étant comparées pour réaliser le poinçonnage sélectif des bits. De préférence, on poinçonne sélectivement les bits des symboles de parités de la séquence principale de sorte à réduire l’occurrence de distances d’ nulles. Une pluralité de séquences concurrentes de symboles codés non binaires est de préférence formée par ledit encodeur, des distances étant calculées entre chaque symbole codé de la séquence principale et chaque symbole correspondant de chaque séquence concurrente, afin de réaliser le poinçonnage sélectif des bits. Les distances sont avantageusement calculées à partir de symboles correspondant à des groupes de bits dans lesquels des bits ont été sélectivement poinçonnés. De préférence, la distance utilisée dans le procédé objet de l’invention est la distance euclidienne. En variante, on peut utiliser la distance de Manhattan pour déterminer la distance entre deux séquences codées. Les symboles codés non binaires peuvent appartenir à un corps de Galois de cardinal q, noté GF( q ), avec q > 2, notamment q = 64. Pour des corps de Galois de cardinal bas, il est possible de tester toutes les stratégies de poinçonnage et de choisir la meilleure, c’est-à-dire celle qui aboutit au plus faible taux d’erreurs dans la transmission et le décodage du message numérique d’entrée. On entend par corps de Galois de cardinal bas un corps de Galois de cardinal inférieur à 8. En revanche, pour des grandes valeurs de cardinal de corps de Galois, par exemple pour GF(64), la détermination de la meilleure stratégie de poinçonnage est particulièrement complexe. Il apparait comme quasiment impossible en pratique de tester toutes les stratégies de poinçonnage possible pour choisir la meilleure. La méthode selon l’invention permet de simplifier la détermination de la meilleure stratégie de poinçonnage. Dans un mode de réalisation, le code correcteur d’erreurs est formé par un encodeur dont le taux de codage est de 1/2 avant poinçonnage, la distance euclidienne au carré cumulée entre la séquence principale et une séquence concurrente peut être définie, après l’étape de poinçonnage, par l’équation suivante : s b (k) et p b (k) étant les valeurs des symboles systématiques et de parité d’un nœud k des séquences principale et concurrente X punct b avec b=1,2 et d’ étant la distance euclidienne entre les symboles concernés. Dans une variante, le code correcteur d’erreurs est formé par un encodeur dont le taux de codage est de 1/3 avant poinçonnage, la distance euclidienne au carré cumulée entre la séquence principale et une séquence concurrente peut être définie, après l’étape de poinçonnage, par l’équation suivante : s b (k), p 0 b (k) et p 1 b (k) étant les valeurs des symboles systématiques et de parité d’un nœud k des séquences principale et concurrente X punct b avec b=1,2 et d’ étant la distance euclidienne entre les symboles concernés. Dans un mode de réalisation, l’encodeur est un encodeur convolutif. L’avantage de tels encodeurs est qu’ils possèdent une grande flexibilité en termes de taille de message codés et de taux de codage. Dans une variante, l’encodeur est un turbo-encodeur. Les turbocodes en résultant présentent l’avantage d’être très performants en termes de taux de correction d’erreurs. Dans ce mode de réalisation, les symboles de parité peuvent être obtenus par les étapes suivantes : - un codage par un premier encodeur des symboles systématiques obtenus à partir du message numérique d’entrée, délivrant un premier ensemble de symboles de parité, - un entrelacement desdits symboles systématiques, délivrant un ensemble de symboles systématiques entrelacés, et - un codage dudit ensemble de symboles systématiques entrelacés par un deuxième encodeur, délivrant un deuxième ensemble de symboles de parité. Dans ce cas, une transformation bijective peut être appliquée auxdits symboles systématiques, avant et/ou après ledit entrelacement, ladite transformation modifiant la valeur d’au moins deux desdits symboles systématiques préalablement au codage desdits symboles systématiques par le premier et/ou le deuxième encodeur. Une telle transformation bijective permet la transformation des symboles systématiques avant le codage du message d’entrée par le premier ou le deuxième encodeur, et est mise en œuvre indifféremment avant ou après l’entrelacement. De cette façon, on change d’une part l’ordre des symboles systématiques entrant sur les deux encodeurs, grâce à l’entrelacement, et d’autre part leur valeur, grâce à la transformation. Les séquences codées obtenues en sortie des deux encodeurs ne sont donc pas constituées des mêmes symboles systématiques et de parité. La transformation considérée est avantageusement une bijection sur l’ensemble des symboles du corps de Galois GF(q) considéré, le cas échéant : chaque symbole de GF(q) a une image unique dans GF(q) par cette transformation et tout élément de GF(q) a un antécédent unique dans GF(q). Cette transformation a pour objectif global d’augmenter la distance cumulée minimale entre deux séquences codées, par exemple la distance euclidienne cumulée, par rapport à un turbo-encodeur sans transformation, indépendamment de la nature des codes élémentaires mis en œuvre par les premier et deuxième encodeurs et de l’entrelaceur utilisé. Ceci améliore encore les performances du procédé selon l’invention. Le message numérique d’entrée codé en utilisant le procédé de codage selon l’invention est avantageusement destiné à être transmis via un canal de transmission. Au moment de la transmission sur le canal, une constellation comportant plusieurs régions est formée avec les symboles codés, en fonction de la modulation du canal, comme par exemple une constellation de modulation 64-QAM, les différents bits du groupe de bits correspondant à un symbole systématique non binaire n’ont pas tous le même niveau de protection. Certains bits sont mieux protégés, considérés comme les bits de poids fort (en anglais « Most Significant Bit » ou MSB), alors que d’autres sont considérés comme les bits de poids faible (en anglais « Less Significant Bit » ou LSB). Ce niveau de protection est lié à la disposition des régions de la constellation représentant les variations possibles des bits de chaque symbole. De préférence, les bits d’un groupe de bits correspondant à un symbole de parité sont disposés dans le message codé de sortie aux positions bénéficiant du plus bas niveau de protection. De préférence, les bits d’un groupe de bits correspondant à un symbole systématique sont disposés dans le message codé de sortie aux positions bénéficiant du plus haut niveau de protection. On entend par « région » un ensemble de points de la constellation dont les symboles en binaire ont un nombre n de bits en commun. Par exemple, les points correspondant aux symboles en binaire 010000, 010001, 010101, 010100, 010010, 010011, 010111, 010110 appartiennent à une même région, les trois premiers bits « 010 » étant communs. Dans le cas où le message codé de sortie est destiné à être transmis via un canal de transmission sur une constellation de modulation, le code formé par l’encodeur peut être tel qu’à chaque symbole systématique de la séquence principale correspond au moins un symbole de parité, ce dernier étant éloigné dans la constellation des symboles de parité correspondant aux symboles systématiques concurrents, c’est à dire appartenant à des séquences concurrentes, voisins dudit symbole systématique. Ainsi, dans deux séquences concurrentes proches, les symboles systématiques issus du même instant de codage sont voisins dans la constellation. De préférence, le code est construit de telle sorte que les symboles de parités issus du même instant de codage sont éloignés dans la constellation. Par « symboles voisins d’un symbole », il faut comprendre ses plus proches voisins, c’est-à-dire les symboles situés aux positions adjacentes à la position dudit symbole, et au moins un voisin desdits plus proches voisins. Cela permet de réduire l’ambiguïté créée par le poinçonnage des bits des symboles de parité lors du décodage des symboles transmis par le décodeur. En effet, quand l bits sont poinçonnés, le niveau d’ambigüité est de 2 l , c’est-à-dire que le décodeur considère que le symbole reçu peut correspondre à 2 l symboles qui sont voisins. Le procédé selon l’invention peut ainsi mettre en œuvre une étape de mappage des symboles systématiques et de parité sur des symboles de modulation associés à une constellation d’ordre p comportant plusieurs régions de symboles. De préférence, le procédé selon l’invention est mis en œuvre de sorte à former un code mappant chaque symbole systématique et ses voisins sur des symboles de modulation de telle sorte que les symboles de modulation des symboles de parité correspondants au symbole systématique et à ses voisins sont dans des régions distinctes de la constellation. Cela permet d’éviter que les symboles de parité correspondants à un symbole systématique et à ses voisins soient dans une même région. De préférence, au moins 10%, plus préférentiellement au moins 20%, par exemple de l’ordre de 30%, mieux de l'ordre de 75% des symboles de parité correspondants à un symbole systématique et à ses voisins sont équitablement répartis entre les différentes régions de la constellation. Produit programme d’ordinateur L’invention a également pour objet un produit programme d’ordinateur pour la mise en œuvre du procédé de codage d’un message numérique d’entrée selon l’invention et utilisant au moins un encodeur, notamment destiné à former un code correcteur d’erreurs, en particulier un turbocode, ledit encodeur formant, à partir du message d’entrée, une séquence principale de symboles codés non binaires, chaque symbole codé étant un symbole systématique ou un symbole de parité, le produit programme d’ordinateur comportant un support et enregistrées sur ce support des instructions lisibles par un processeur pour, lorsqu’exécutées : chaque symbole codé est converti en un groupe de bits, pour au moins un symbole codé, en particulier pour un ou plusieurs symboles de parité, certains bits du groupe de bits correspondant sont poinçonnés sélectivement de sorte à minimiser le nombre de symboles de parités de la séquence principale situés à une distance nulle d’un symbole de parité appartenant à au moins une séquence concurrente de symboles codés non binaires, et les bits non poinçonnés des symboles codés sont regroupés pour former le message codé de sortie. Les caractéristiques énoncées ci-dessus pour le procédé s’appliquent au produit programme d’ordinateur. L’invention concerne aussi un support d’information lisible par un ordinateur, et comportant des instructions d’un produit programme d’ordinateur tel que mentionné ci-dessus. Dispositif de codage L’invention a également pour objet, un dispositif de codage d’un message numérique d’entrée, comportant au moins un encodeur, notamment destiné à former un code correcteur d’erreurs, en particulier un turbocode ou un code convolutif, ledit encodeur étant configuré pour former, à partir du message d’entrée, une séquence principale de symboles codés non binaires, chaque symbole codé étant un symbole systématique ou un symbole de parité, le dispositif étant configuré pour : - convertir chaque symbole codé en un groupe de bits, - pour au moins un symbole codé, en particulier pour un ou plusieurs symboles de parité, poinçonner sélectivement certains bits du groupe de bits correspondant de sorte à minimiser le nombre de symboles de parités de la séquence principale situés à une distance nulle d’un symbole de parité appartenant à au moins une séquence concurrente de symboles codés non binaires, et - regrouper les bits non poinçonnés des symboles codés pour former le message codé de sortie. Les caractéristiques énoncées ci-dessus pour le procédé s’appliquent au dispositif de codage. Dans un mode de réalisation privilégié, l’encodeur peut comporter des premier et deuxième encodeurs à encodage selon au moins un code élémentaire, et un entrelaceur, le premier encodeur formant, à partir du message d’entrée, un premier ensemble de symboles systématiques et de symboles de parité, le deuxième encodeur formant, à partir du message d’entrée entrelacé par l’entrelaceur, un deuxième ensemble de symboles systématiques et de symboles de parité. Dans ce mode de réalisation, l’encodeur est un turbo-encodeur. En variante, l’encodeur peut être configuré pour former un code convolutif, notamment un code systématique récursif. Procédé de transmission d’un message numérique L’invention a également pour objet un procédé de transmission d’un message numérique d’entrée codé en utilisant un procédé de codage selon l’invention et destiné à être transmis via un canal de transmission. Le procédé selon l’invention permet d’obtenir des performances de correction identiques à l’état de l’art antérieur avec un rapport Signal à Bruit plus faible. L’invention pourra être mieux comprise à la lecture de la description détaillée qui va suivre, d’exemples de mise en œuvre non limitatifs de celle-ci, et à l’examen du dessin annexé, sur lequel : la figure 1, précédemment décrite, représente la structure d’un turbo-encodeur binaire selon l’art antérieur, la figure 2, précédemment décrite, représente la structure d’un encodeur convolutif récursif qui peut être utilisé pour la mise en œuvre du procédé selon l’invention, la figure 3, précédemment décrite, représente la structure d’un turbo-encodeur qui peut être utilisé pour la mise en œuvre du procédé selon l’invention, la figure 4 schématise les étapes d’un exemple de mise en œuvre du procédé objet de l’invention, la figure 5a illustre la structure générique d’un codeur convolutif à un élément de mémoire sur GF(q), la figure 5b est un exemple de treillis du codeur convolutif à un élément de mémoire sur GF(q) de la figure 5a, la figure 6a est une représentation d’un symbole systématique et de ses voisins les plus proches dans une constellation 64-QAM, la figure 6b est une représentation des symboles de parité associés au symbole systématique de la figure 6a et à ses voisins dans une constellation 64-QAM, et la figure 7 est une courbe mettant en avant les performances de correction d’un dispositif de codage selon l’invention. Description détaillée On a illustré à la figure 4 un exemple de mise en œuvre du procédé de codage objet de l’invention. Dans cet exemple, on cherche à transmettre un message numérique d’entrée D non binaire. Le message numérique d’entrée D est encodé au cours de l’étape d’encodage 4. Dans l’exemple considéré, l’encodage est réalisé par un turbo-encodeur, par exemple un turbo-encodeur ayant une structure telle que celle représentée à la figure 3 et ayant un taux de codage égal à 1/3. En sortie du turbo-encodeur, on récupère une séquence principale 5 de symboles codés non binaires comprenant un symbole systématique S et deux symboles de parité P 0 et P 1 , appartenant tous par exemple à GF(64). Puis, chaque symbole de la séquence principale 5 est converti en un groupe de bits au cours d’une étape de conversion en binaire 6. Dans l’exemple représenté, chaque symbole codé est converti pour être représenté par un groupe de six bits. Après l’étape 6 de conversion en binaire, les bits sont poinçonnés sélectivement selon l’invention au cours d’une étape 7 de poinçonnage. Par exemple, les bits de poids faibles P 0,2 , P 0,1 , P 0,0 , P 1,2 , P 1,1 , P 1,0 de chacun des symboles de parité P 1 et P 2 sont poinçonnés. Puis, l’étape de regroupement 8 amène à regrouper les bits non poinçonnés pour former deux nouveaux symboles à transmettre Y et Z. Les bits S 0 , S 1 , S 2 , S 3 , S 4 , S 5 correspondant à l’origine au symbole systématique S sont placés aux positions les mieux protégées, c’est-à-dire le plus à gauche dans les symboles à transmettre Y et Z, pour être transmis avant les bits correspondant à l’origine aux symboles de parité P 0,5 , P 0,4 , P 0,3 , P 1,5 , P 1,4 , et P 1,3 . Le message de sortie composé des symboles Y et Z peut ensuite être transmis sur un canal de communication pour être reçu et décodé par un décodeur. Le procédé de codage schématisé à la figure 4 revient à un taux de codage de 1/2. Le taux de codage est donc augmenté par rapport à un procédé ne mettant pas en œuvre une étape de poinçonnage sélectif des bits et utilisant un turbo-encodeur avec un taux de codage de 1/3. Afin de déterminer quels sont les bits à poinçonner préférentiellement pour transmettre le message avec un taux d’erreur correct, on calcule la distance cumulée entre la séquence principale de symboles codés correspondante au message d’entrée et une ou plusieurs séquences concurrentes, en particulier une ou plusieurs séquences concurrentes proches. On peut par exemple calculer les distances euclidiennes cumulées minimales entre la séquence principale correspondante au message d’entrée et certaines séquences concurrentes formées par l’encodeur, en particulier une ou plusieurs séquences concurrentes proches, conformément à la formule suivante : avec s b (k), p 0 b (k) et p 1 b (k) les valeurs des symboles systématiques et de parité d’un nœud k des séquences principale et concurrente X punct b avec b=1,2 et d’ la distance euclidienne entre les symboles concernés. Dans l’exemple de la figure 4, les symboles de parité P 0 et P 1 ont été partiellement poinçonnés, les distances d’(p 0 1 (k), p 0 2 (k)) et d’(p 1 1 (k), p 1 2 (k)) ne correspondent donc plus à la distance euclidienne entre deux points d’une constellation, mais correspondent à la distance minimale entre deux groupes de points dans la constellation. Ainsi, la distance euclidienne cumulée minimale entre deux symboles poinçonnés appartenant à la même région est nulle puisqu’ils ne peuvent pas être distingués. Dans le cadre de l’invention, afin de limiter la diminution de la distance euclidienne cumulée minimale due au poinçonnage, on cherche à minimiser le nombre de termes d’(p 0 1 (k), p 0 2 (k)) et d’(p 1 1 (k), p 1 2 (k)) nuls dans la somme ci-dessus. Poinçonner sélectivement les bits en se basant sur ce critère permet de conserver une distance euclidienne cumulée minimale entre la séquence principale et les séquences concurrentes relativement élevée. La figure 5a illustre la structure générique d’un codeur convolutif à un élément de mémoire sur GF(q), avec a 1 , a 2 et a 3 des paramètres de réglage du code, D un élément de mémoire, d le message numérique d’entrée, s les symboles systématiques et p les symboles de parité sortants. Le code mis en œuvre par un tel codeur a pour avantage d’avoir un treillis totalement connecté, comme visible à la figure 5b. Comme décrit précédemment, les distances euclidiennes cumulées minimales entre la séquence principale et chacune des séquences concurrentes sont calculées conformément à la formule suivante : L'invention profite de la propriété de certains codeurs selon laquelle la distance euclidienne cumulée entre deux séquences est minimale quand les deux séquences ne diffèrent que par deux ou trois symboles systématiques et quand les symboles de parité correspondant aux symboles systématiques de position correspondante dans chacune des séquences concurrentes sont éloignés dans la constellation considérée. On a représenté à la figure 6a un symbole systématique 10 à transmettre dans une constellation 64-QAM 20. On utilise par exemple un code C défini sur GF(64) ayant les paramètres suivants : a 1 = 31, a 2 = 5 et a 3 = 18 et le polynôme générateur est P 64 (x) = 1 + x 2 + x 3 + x 5 + x 6 . Les symboles disposés à l’intérieur du cercle 11 sont les symboles voisins 12 du symbole systématique 10 dans une séquence concurrente de la séquence principale ne différant de cette séquence que de deux ou trois symboles systématiques. Le résultat du mappage du symbole systématique et de ses voisins par le codeur mettant en œuvre le code C est représenté à la figure 6b. Le symbole de parité du symbole systématique 10’ est éloigné dans la constellation des symboles de parité 12’ des symboles voisins. Les symboles de parité du symbole systématique et de ses voisins sont avantageusement disposés dans des régions distinctes. Dans l’exemple représenté, la constellation est subdivisée en huit régions 13, et chacune des régions 13 regroupe huit points. Seul le symbole de parité 121 correspondant à un symbole voisin du symbole de systématique 10 est disposé dans la région occupée par le symbole de parité 10’ du symbole systématique considéré. Dans le cas illustré, il n’y a ainsi que pour une seule séquence concurrente où le terme de distance d’(p 1 (k), p 2 (k)) est nul. Si le symbole de parité reçu par le décodeur n’est pas 18 ou 23, il pourra en déduire qu’il y a eu une erreur lors de la transmission et pourra éventuellement la corriger. On considère un codeur non binaire obtenu à partir d’un turbocode tel que celui de la figure 3 et utilisant le code RSC de la figure 5a. Le taux de codage de cet encodeur sans étape de poinçonnage est R = 1/3. On cherche à comparer les résultats obtenus en utilisant un procédé connu de codage mettant en œuvre une étape de poinçonnage de symboles avec ceux obtenus en mettant en œuvre le procédé de codage selon l’invention. On compare ces deux méthodes de poinçonnage qui permettent de monter le taux de codage à 1/2. La comparaison est réalisée pour K s = 30 symboles de GF(64) mappés sur une constellation 64-QAM et codés avec un codeur ayant un taux de codage R = 1/2. La transmission est réalisée sur un canal à bruit additif blanc gaussien (« Additive White Gaussian Noise » en anglais ou AWGN). En référence à la figure 7, la courbe 14 représente l’évolution des performances de correction d’un dispositif de codage mettant en œuvre une étape de poinçonnage de symboles dans lequel on poinçonne un symbole de parité sur deux. La courbe 15 représente l’évolution des performances de correction d’un dispositif de codage selon l’invention poinçonnant sélectivement les bits de plus faible poids des symboles de parité. Quel que soit le Rapport Signal à Bruit, le taux d’erreur du dispositif de codage selon l’invention est inférieur à celui d’un dispositif selon l’art antérieur mettant en œuvre un poinçonnage au niveau des symboles et non des bits. L’invention n’est pas limitée aux exemples qui viennent d’être décrits. D’autres types de distances, de codes et/ou de taux de codage peuvent être utilisés. Procédé de codage d’un message numérique d’entrée, utilisant au moins un encodeur, notamment destiné à former un code correcteur d’erreurs, en particulier un turbocode, ledit encodeur formant, à partir du message d’entrée, une séquence principale de symboles codés non binaires, chaque symbole codé étant un symbole systématique ou un symbole de parité, le procédé comportant les étapes suivantes : convertir chaque symbole codé en un groupe de bits, pour au moins un symbole codé, en particulier pour un ou plusieurs symboles de parité, poinçonner sélectivement certains bits du groupe de bits correspondant de sorte à minimiser le nombre de symboles de parités de la séquence principale situés à une distance nulle d’un symbole de parité appartenant à au moins une séquence concurrente de symboles codés non binaires, et regrouper les bits non poinçonnés des symboles codés pour former le message codé de sortie. Procédé selon la revendication 1, dans lequel les bits poinçonnés sont uniquement les bits des groupes de bits correspondant aux symboles de parité. Procédé selon la revendication 1 ou 2, dans lequel des distances sont calculées entre chaque symbole codé de la séquence principale et chaque symbole correspondant de ladite au moins une séquence concurrente, ces distances étant comparées pour réaliser le poinçonnage sélectif des bits. Procédé selon la revendication précédente, dans lequel une pluralité de séquences concurrentes de symboles codés non binaires est formée par ledit encodeur, des distances étant calculées entre chaque symbole codé de la séquence principale et chaque symbole correspondant de chaque séquence concurrente, afin de réaliser le poinçonnage sélectif des bits. Procédé selon l’une quelconque des revendications précédentes, dans lequel les distances sont calculées à partir de symboles correspondant à des groupes de bits dans lesquels des bits ont été sélectivement poinçonnés. Procédé selon l’une quelconque des revendications précédentes, dans lequel la distance utilisée est la distance euclidienne ou la distance de Manhattan. Procédé selon l’une quelconque des revendications précédentes, dans lequel lesdits symboles codés non binaires appartiennent à un corps de Galois de cardinal q, noté GF( q ), avec q > 2, notamment q = 64. Procédé selon l’une quelconque des revendications précédentes, dans lequel, le taux de codage de l’encodeur étant de 1/2 avant poinçonnage, la distance euclidienne au carré cumulée entre la séquence principale et une séquence concurrente est définie, après l’étape de poinçonnage, par l’équation suivante : s b (k) et p b (k) étant les valeurs des symboles systématiques et de parité d’un nœud k des séquences principale et concurrente X punct b avec b=1,2 et d’ étant la distance euclidienne entre les symboles concernés. Procédé selon l’une quelconque des revendications 1 à 7, dans lequel, le taux de codage de l’encodeur étant de 1/3 avant poinçonnage, la distance euclidienne au carré cumulée entre la séquence principale et une séquence concurrente est définie, après l’étape de poinçonnage, par l’équation suivante : s b (k), p 0 b (k) et p 1 b (k) étant les valeurs des symboles systématiques et de parité, d’un nœud k des séquences principale et concurrente X punct b avec b=1,2 et d’ étant la distance euclidienne entre les symboles concernés. Procédé selon l’une quelconque des revendications précédentes, dans lequel les symboles de parité sont obtenus par les étapes suivantes : - un codage par un premier encodeur des symboles systématiques obtenus à partir du message numérique d’entrée, délivrant un premier ensemble de symboles de parité, - un entrelacement desdits symboles systématiques, délivrant un ensemble de symboles systématiques entrelacés, et - un codage dudit ensemble de symboles systématiques entrelacés par un deuxième encodeur, délivrant un deuxième ensemble de symboles de parité. Procédé selon la revendication précédente, dans lequel une transformation bijective est appliquée auxdits symboles systématiques, avant et/ou après ledit entrelacement, ladite transformation modifiant la valeur d’au moins deux desdits symboles systématiques préalablement au codage desdits symboles systématiques par le premier et/ou le deuxième encodeur. Procédé selon l’une quelconque des revendications précédentes, dans lequel, le message codé de sortie étant destiné à être transmis via un canal de transmission, les bits d’un groupe de bits correspondant à un symbole systématique sont disposés dans le message codé de sortie aux positions bénéficiant du plus haut niveau de protection. Procédé selon l’une quelconque des revendications précédentes, dans lequel, le message codé de sortie étant destiné à être transmis via un canal de transmission, les bits d’un groupe de bits correspondant à un symbole de parité sont disposés dans le message codé de sortie aux positions bénéficiant du plus bas niveau de protection. Procédé selon l’une quelconque des revendications précédentes, dans lequel, le message codé de sortie étant destiné à être transmis via un canal de transmission sur une constellation de modulation, le code formé par l’encodeur étant tel qu’à chaque symbole systématique de la séquence principale correspond un symbole de parité, ce dernier étant éloigné dans la constellation des symboles de parité correspondant aux symboles systématiques concurrents. Produit programme d’ordinateur pour la mise en œuvre du procédé de codage d’un message numérique d’entrée tel que défini à l’une quelconque des revendications précédentes et utilisant au moins un encodeur, notamment destiné à former un code correcteur d’erreurs, en particulier un turbocode, ledit encodeur formant, à partir du message d’entrée, une séquence principale de symboles codés non binaires, chaque symbole codé étant un symbole systématique ou un symbole de parité, le produit programme d’ordinateur comportant un support et enregistrées sur ce support des instructions lisibles par un processeur pour, lorsqu’exécutées : chaque symbole codé est converti en un groupe de bits, pour au moins un symbole codé, en particulier pour un ou plusieurs symboles de parité, certains bits du groupe de bits correspondant sont poinçonnés sélectivement de sorte à minimiser le nombre de symboles de parités de la séquence principale situés à une distance nulle d’un symbole de parité appartenant à au moins une séquence concurrente de symboles codés non binaires, et les bits non poinçonnés des symboles codés sont regroupés pour former le message codé de sortie. Dispositif de codage d’un message numérique d’entrée, comportant au moins un encodeur, notamment destiné à former un code correcteur d’erreurs, en particulier un turbocode ou un code convolutif, ledit encodeur étant configuré pour former, à partir du message d’entrée, une séquence principale de symboles codés non binaires, chaque symbole codé étant un symbole systématique ou un symbole de parité, le dispositif étant configuré pour : convertir chaque symbole codé en un groupe de bits, pour au moins un symbole codé, en particulier pour un ou plusieurs symboles de parité, poinçonner sélectivement certains bits du groupe de bits correspondant de sorte à minimiser le nombre de symboles de parités de la séquence principale situés à une distance nulle d’un symbole de parité appartenant à au moins une séquence concurrente de symboles codés non binaires, et regrouper les bits non poinçonnés des symboles codés pour former le message codé de sortie. Dispositif selon la revendication précédente, dans lequel l’encodeur comporte des premier et deuxième encodeurs à encodage selon au moins un code élémentaire, et un entrelaceur, le premier encodeur formant, à partir du message d’entrée, un premier ensemble de symboles systématiques et de symboles de parité, le deuxième encodeur formant, à partir du message d’entrée entrelacé par l’entrelaceur, un deuxième ensemble de symboles systématique et de symboles de parité. Dispositif selon la revendication 16, dans lequel l’encodeur est configuré pour former un code convolutif, notamment un code systématique récursif. Procédé de transmission d’un message numérique d’entrée codé en utilisant un procédé de codage selon l’une quelconque des revendications 1 à 14 et destiné à être transmis via un canal de transmission.