Brevet FR2829636A1 — publié le 20030314

Procédé de qualification de codes correcteurs d'erreurs, procédé d'optimisation, codeur, décodeur et application correspondants. Le domaine de l'invention est celui du codage de données numériques appartenant à une, ou plusieurs, séquences de données sources destinées à être transmises, ou diffusées, notamment en présence de bruits d'origines diverses, et du décodage des données codées ainsi transmises. Plus précisément, l'invention concerne la qualification d'un code correcteur d'erreurs, afin notamment de déterminer le ou les codes les plus efficaces, en termes de correction d'erreurs, parmi un ensemble de codes possibles. Cette qualification concerne notamment, tous les codes qui peuvent être décodés par un décodeur à entrées pondérées (par exemple, les codes convolutifs ou encore les codes concaténés décodés itérativement notamment les codes connus sous le nom de turbo-code (marque déposée)). La transmission de l'information (données, image, parole,...) repose de plus en plus sur les techniques numériques de transmission. De nombreux efforts ont été faits en matière de codage de source pour réduire le débit numérique, tout en conservant une bonne qualité. Ces techniques nécessitent bien sûr une meilleure protection des éléments binaires vis-à-vis des perturbations liées à la transmission. L'utilisation de codes correcteurs d'erreurs puissants dans ces systèmes de transmission se révélait indispensable. C'est notamment dans ce but qu'a été proposée la technique des turbo-codes . Le principe général des turbo-codes est notamment présenté dans le brevet français n FR-91 05280, ayant pour titre Procédé de codage correcteur d'erreurs à au moins deux codages convolutifs systématiques parallèles, procédé de décodage itératif, module de décodage et décodeur correspondants , et dans l'article de C. Berrou, A. Glavieux et P. Thitimajshima intitulé Near Shannon limit error-correcting coding and decoding : Turbo-codes publié dans IEEE International conference on Communication, ICC'93, vol2/3, pages 1064 à 1071 en mai 1993. Un état de l'art est rappelé dans l'article de C. Berrou et A. Glavieux Near Optimum Error Correcting Coding and Decoding : Turbo-Codes (IEEE Transactions on Communications, Volume 44, n 10, pages 1261-1271, Octobre 1996). Selon cette technique, on propose la mise en ouvre d'un codage à concaténation parallèle , s'appuyant sur l'utilisation d'au moins deux codeurs élémentaires. Cela permet de disposer, lors du décodage, de deux symboles de redondance issus de deux codeurs distincts. Entre les deux codeurs élémentaires, on met en ouvre des moyens de permutation, de façon que chacun de ces codeurs élémentaires soit alimenté par les mêmes données numériques source, mais prises dans des ordres différents. Un complément à ce type de technique, permettant d'obtenir des codes appelés turbo-codes algébriques, est destiné au codage algébrique (codes concaténés). Cette technique améliorée est décrite dans l'article de R Pyndiah, A. Glavieux, A. Picart et S. Jacq Near optimum decoding of product code (publié dans IEEE Transactions on Communications, vol 46, n 8 pages 1003 à 1010 en août 1998), dans le brevet FR-93 13858, ayant pour titre Procédé pour transmettre des bits d'information en appliquant des codes en blocs concaténés , ainsi que dans l'article de O. Aitsab et R. Pyndiah Performance of Reed Solomon block turbo-code (IEEE Globecom'96 Conference, Vol. 1/3, pages 121-125, Londres, Novembre 1996). Pour décoder les turbo-codes en blocs qu'ils soient du type ( involutif ou algébrique, on a envisagé d'utiliser des moyens de décodage à entrées et sorties douces, c'est-à-dire qu'un décodeur élémentaire de codes accepte en entrée et fournit en sortie des éléments non binaires, pondérés en fonction de leur vraisemblance. Afin d'optimiser le choix d'un code en fonction de critères tels que, par exemple, le niveau de performance recherché à un niveau de bruit donné, il est nécessaire de qualifier le code. On connaît déjà plusieurs techniques de qualification de codes correcteurs d'erreurs, notamment par simulations des performances à faibles taux d'erreurs. Cependant, un inconvénient de ces techniques est qu'elles nécessitent une puissance de calcul importante. Un autre inconvénient de ces techniques est qu'elles entraînent des temps de calcul prohibitifs. Encore un autre inconvénient de ces techniques est qu'elles ne permettent pas d'estimer des taux d'erreurs très faibles (par exemple inférieur à 10-12). n est théoriquement possible d'estimer ces performances à faible taux d'erreurs lorsque la distance minimale du code est connue. Néanmoins, l'évaluation de la distance minimale d'un code n'est en général pas simple, sauf si le nombre de mots du code est suffisamment petit pour pouvoir en dresser une liste exhaustive. Dans ce cas, il suffit de rechercher le mot non nul de poids de Hamming le plus faible pour connaître la distance minimale du code. Ainsi, l'évaluation de la distance minimale des codes reste généralement complexe et aucune méthode dans l'état de la technique ne permet de déterminer les distances minimales de certains codes correcteurs et notamment des turbo codes convolutifs, rapidement et/ou avec une puissance de calcul raisonnable. On connaît notamment dans l'état de la technique, un document An algorithm to compute the free distance of turbo codes (ou en français un algorithme pour calculer la distance libre des turbo codes ) écrit par R. Garello, P. Pierleoni, S. Benedetto et G. Montorsi, et publié dans le compte-rendu Proceedings of the International Symposium on Information Theory 2000 à la page 287. Ce document décrit notamment une méthode permettant de déterminer la distance minimale des turbocodes convolutifs sans être obligé de dresser la liste exhaustive des mots de code. La méthode décrite dans ce document est relativement efficace mais présente l'inconvénient d'être coûteuse en temps de calcul. Les mêmes problèmes peuvent également se poser avec d'autres types de codes que les turbo-codes . L'invention selon ses différents aspects a notamment pour objectif de pallier ces inconvénients de l'art antérieur. Plus précisément, un objectif de l'invention est d'optimiser le codage à l'aide de codes correcteurs d'erreurs, notamment à de faibles taux d'erreurs ; et donc de fournir de tels codes offrant une efficacité optimisée, selon des critères déterminés. Un autre objectif de l'invention est de fournir une telle technique permettant de qualifier simplement et efficacement des codes correcteurs d'erreurs, avec une puissance de calcul raisonnable. Encore un autre objectif de l'invention est de fournir une telle technique permettant de qualifier des codes correcteurs d'erreurs en un temps relativement court. L'invention a également pour objectif de fournir une telle technique, permettant de comparer efficacement et rapidement une grande quantité de codes. Ces objectifs, ainsi que d'autres qui apparaîtront par la suite, sont atteints à l'aide d'un procédé de qualification d'un code correcteur d'erreurs, délivrant des mots de code, formés chacun d'au moins un symbole, remarquable en ce qu'il associe au code une première information de qualification, représentative de la capacité d'un décodeur correspondant à corriger des erreurs, obtenue à l'aide d'un processus d'estimation mettant en ouvre les étapes suivantes : - insertion d'une impulsion d'erreur prédéterminée, introduisant une perturbation sur un ensemble d'au moins un symbole d'un mot de code de référence préalablement codé sans erreur ; - décodage, à l'aide d'un décodeur à entrées pondérées, du mot de code modifié par l'impulsion d'erreur, et analyse du résultat du décodage, délivrant la première information de qualification. Selon une caractéristique particulière, le procédé de qualification d'un dz code correcteur d'erreurs est remarquable en ce que l'ensemble contient un seul symbole. Ainsi, l'invention permettant notamment la détermination de la première information de qualification du code est relativement simple à mettre en cavre. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce que l'ensemble contient au moins deux symboles. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce que tous les symboles de l'ensemble appartiennent à un mot de code concurrent du mot de code de référence. On note que, par définition, un symbole appartient à un mot de code concurrent du mot de code de référence si sa position correspond à celle d'un symbole qui a une valeur différente dans le mot de code concurrent et le mot de code de référence. Ainsi, lorsque l'ensemble contient au moins deux symboles, on choisit préférentiellement ces symboles parmi les symboles appartenant à un mot de code concurrent du mot de code de référence et qui est en outre à une faible distance du mot de code de référence. Ceci permet au procédé de converger plus rapidement lorsque le décodage d'un mot de code est itératif (cas notamment du décodage des turbo-codes). Dans ce cas, on note également que l'impulsion d'erreur peut être répartie uniformément ou non sur tout ou une partie de l'ensemble de symboles. On peut notamment affecter une part importante de l'impulsion d'erreur à un symbole particulier appartenant à l'ensemble, dit symbole de base et le reliquat de l'impulsion d'erreur àtout ou une partie des autres symboles de l'ensemble. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce qu'on associe à l'ensemble d'au moins un symbole affecté par l'impulsion d'erreur une donnée intermédiaire de qualification, fonction d'une amplitude maximale de l'impulsion d'erreur affectant l'ensemble et ne perturbant pas le décodage du mot de code, dite distance impulsionnelle. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce que le processus d'estimation est répété au moins deux fois introduisant une perturbation sur le même ensemble d'au moins un symbole avec des amplitudes de l'impulsion d'erreur variables, de façon à déterminer la distance impulsionnelle. Ainsi, pour chaque symbole du mot de code de référence ou pour des symboles choisis, on peut déterminer la distance impulsionnelle associée à ce symbole et ainsi, obtenir de manière fiable la sensibilité de ce symbole à une erreur pour une utilisation d'un décodeur donné. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce que la distance impulsionnelle est égale au plus grand entier J tel que le mot de code affecté de l'impulsion d'erreur d'amplitude égale à l'entier J soit décodé correctement. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce que le processus d'estimation est répété pour au moins deux ensembles distincts de symboles du mot de code de référence. Ainsi, l'invention permet de déterminer simplement la distance impulsionnelle associée plusieurs symboles du mot de code de référence. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce que la première information de qualification est la distance impulsionnelle minimale, parmi la ou les distances impulsionnelles déterminées. Ainsi, on détermine simplement la distance impulsionnelle minimale qui permet de qualifier de manière très fiable le code testé. On note que l'on prend en compte avantageusement les propriétés du code pour les symboles dont on détermine la distance impulsionnelle associée afin de déterminer la distance impulsionnelle minimale du code. En effet, on peut notamment tenir compte des périodicités du code. On note, en particulier, que pour un code invariant par translation, la détermination d'une seule distance impulsionnelle associée à un symbole quelconque du mot de code de référence suffit à déterminer la distance impulsionnelle minimale du code. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce qu'il affecte au code une seconde information de qualification, représentative du nombre des ensembles les plus sensibles à une impulsion d'erreur, dans le mot de code de référence. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce que la seconde information de qualification, dite multiplicité, est le rapport : - du nombre des ensembles pour lesquels la distance impulsionnelle est égale à la distance impulsionnelle minimale ; - sur le nombre total de symboles dans un mot de code. Ainsi, l'invention permet d'affiner la qualification du code en tenant compte de la seconde information de qualification. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce que le ou les ensembles sur lequel ou lesquels est appliqué le processus d'estimation est ou sont sélectionnés en tenant compte des éventuelles propriétés de périodicité du code. On note ainsi que le nombre des ensembles pour lesquels la distance impulsionnelle est égale à la distance impulsionnelle minimale est obtenu par : - une estimation directe lorsque l'on a effectué la détermination de la distance impulsionnelle associée à chacun des symboles susceptibles de fournir une distance impulsionnelle égale à la distance impulsionnelle minimale ; ou - par extrapolation de ce nombre d'ensembles au vu de la détermination d'un nombre restreint de distances minimales associées à un symboles, cette extrapolation tenant compte notamment des propriétés du code (ce qui simplifie avantageusement le procédé). Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce que le mot de code de référence est un mot dont tous les symboles prennent la valeur binaire 0. Le choix du mot tout O comme mot de code de référence permet notamment d'avoir un procédé particulièrement simple à mettre en ouvre en tenant compte de la linéarité du code. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce que le mot de code de référence subit une modulation, avant l'insertion d'une impulsion d'erreur. Ainsi, l'invention permet d'obtenir une qualification du code en tenant compte non seulement du code lui-même et, le cas échéant, du décodeur mais aussi du type de modulation utilisé. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce qu'il comprend une étape d'estimation d'un gain, dit gain asymptotique, représentatif de l'efficacité du code correcteur d'erreurs par rapport à l'absence de codage, en fonction d'au moins une de la première information de qualification. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce que le gain asymptotique est approché par : Ga = 101og (R. ) où : R est le rendement du code correcteur d'erreurs ; dmin est la distance impulsionnelle minimale. Ainsi, on l'invention permet d'assimiler la notion de distance impulsionnelle minimale du code à la notion de distance libre du code, notamment pour la notion de gain asymptotique. On note que l'on peut aussi définir le gain asymptotique non seulement en fonction de la distance impulsionnelle minimale mais aussi de la multiplicité associée à cette distance. Ainsi, on peut obtenir une bonne estimation des performances du code notamment dans un canal très faiblement bruité. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce qu'il comprend les étapes suivantes : - génération du mot de code de référence ; - sélection d'au moins un ensemble d'au moins un symbole du mot de code de référence ; - affectation d'une impulsion d'erreur d'une amplitude déterminée au (x) ensemble (s) sélectionné (s) pour former un mot erroné ; - décodage du mot erroné, prenant en compte des entrées pondérées, et délivrant un mot décodé ; - comparaison du mot décodé avec le mot de code initial On note que le mot de code de référence peut être modulé ou non. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce qu'on fait varier l'amplitude de l'impulsion d'erreur selon une règle déterminée, appartenant au groupe comprenant : - une première règle selon laquelle, lors de la première itération, l'amplitude de l'impulsion d'erreur est affectée d'une faible valeur et est incrémentée lors des itérations suivantes jusqu'à ce que le mot décodé soit différent du mot de code initial ; - une seconde règle selon laquelle, lors de la première itération, l'amplitude de l'impulsion d'erreur est affectée d'une forte valeur et est décrémentée lors des itérations suivantes jusqu'à ce que le mot décodé soit égal au mot de code initial ; une troisième règle selon laquelle, lors des premières itérations, l'amplitude de l'impulsion d'erreur est affectée de deux valeurs extrêmes et, lors des itérations suivantes, on procède par dichotomie, la valeur de l'amplitude de l'erreur étant choisie en fonction de la sous- étape de comparaison ; et - une combinaison des première et seconde règles avec la troisième règle. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce que le code fait partie du groupe comprenant : - des codes convolutifs ; - des turbo codes convolutifs ; des turbo codes algébriques ; des codes concaténés parallèles ; - des codes concaténés séries ; et - des combinaisons des codes précédents. Ainsi, l'invention est particulièrement bien adaptée à la qualification de nombreux codes qui sont notamment utilisés dans beaucoup de domaines notamment dans celui des communications mobiles, de la transmission de données et/ou d'images,... Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce qu'il comprend, en outre, une étape de détermination d'au moins un symbole de mot de code le plus sensible aux erreurs. Selon une caractéristique particulière, le procédé de qualification d'un code correcteur d'erreurs est remarquable en ce qu'il comprend, en outre, une étape de comparaison de la sensibilité des symboles de mot de code aux erreurs et de construction d'un code à protection inégale en fonction du résultat de l'étape de comparaison. L'invention concerne également un procédé d'optimisation d'un codage de canal, remarquable en ce qu'il met en oevre le procédé de qualification d'un code correcteur d'erreurs sur au moins deux codes candidats d une étape de sélection pour le codage de canal d'un des codes candidats, en fonction d'une analyse des premières informations de qualification affectées à chacun des codes candidats. Selon une caractéristique particulière, le procédé d'optimisation d'un codage de canal est remarquable en ce que chacun des codes est associé à une modulation prédéterminée, et en ce que l'étape de sélection tient compte de l'association code/modulation. Selon une caractéristique particulière, le procédé d'optimisation d'un codage de canal est remarquable en ce que l'étape de sélection tient compte de également de la seconde information de qualification et/ou du gain asymptotique. L'invention concerne aussi un codeur permettant la correction d'erreurs, remarquable en ce que le code correspondant est sélectionné selon un procédé de qualification de codes et/ou un procédé d'optimisation d'un codage de canal tel que précédemment décrit. L'invention concerne en outre un décodeur permettant un décodage de données codées à l'aide d'un code correcteur d'erreurs et une correction d'erreurs correspondante, remarquable en ce que le code correcteur d'erreurs est sélectionné selon un procédé de qualification de codes et/ou d'optimisation d'un codage de canal tel que précédemment décrit. Ainsi, les codeurs et les décodeurs sont basés sur un code très efficace et permettent d'obtenir de bonnes performances notamment dans des conditions de canal de transmission faiblement bruité et peuvent être mis en cuivre avantageusement dans des applications variées notamment dans le domaine des communications mobiles, de la transmission de données et/ou d'images,.... L'invention concerne également une application du procédé de qualification d'un code correcteur d'erreurs et/ou du procédé d'optimisation d'un codage de canal à - la transmission de données sur un canal bruité ; l'optimisation de codage de canal avec protection inégale ; - l'estimation de la distance libre d'un code ; et/ou - l'estimation des performances d'un code. Les avantages un procédé d'optimisation d'un codage de canal et des applications des procédés de qualification et/ou d'optimisation sont les mêmes que ceux du procédé qualification d'un code correcteur d'erreurs, ils ne sont pas détaillés plus amplement D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation préférentiel, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : - la figure 1 présente des courbes de taux d'erreurs connues en soi ; - la figure 2 illustre un algorithme d'estimation de distance minimale d'un code correcteur d'erreurs, selon l'invention ; - la figure 3 décrit une étape de génération d'une séquence de symboles, mise en carre dans l'algorithme de la figure 2 ; et - la figure 4 décrit une étape de calcul de distance impulsionnelle, mise en ouvre dans l'algorithme de la figure 2. On rappelle qu'une procédure optimale de décodage conduirait à choisir le mot de code le plus proche du mot reçu. Plus la distance entre mots de code est importante et plus le décodage peut être efficace à faible taux d'erreurs. La distance de Hamming minimale entre ces mots, qui est le nombre minimal de valeurs binaires différentes, dans ces mots, est appelée distance minimale du code . Elle est notée dmin. La détermination de cette distance permet d'estimer les performances du code pour les faibles taux d'erreurs. Cette estimation permet d'éviter des simulations longues et coûteuses. La figure 1 illustre trois courbes de taux d'erreurs bit, TEB, représenté sur l'axe des ordonnées 11, en fonction du rapport signal à bruit, EbVo, représenté sur l'axe des abscisses 10 : une première courbe non codée, 12, est obtenue pour une transmission de données binaires à l'aide d'une modulation QPSK sans utilisation de code d'erreurs ; une deuxième courbe 13 est obtenue pour une transmission de données binaires avec utilisation d'un code correcteur d'erreur (on note que cette courbe permet un gain, G, de plusieurs décibels, par exemple, pour un taux d'erreurs bit de l'ordre de 10-6) ; et une troisième courbe représente la limite théorique qui peut être obtenue en utilisant un code idéal associé à un algorithme de décodage idéal ; cette limite est fonction du rendement, R, du code (qui est le rapport du nombre de bits non codés sur le nombre de bits codés) et de la taille du bloc. Plus le taux d'erreurs est faible à un rapport signal à bruit donné, plus l'écart entre ces courbes est grand. H est possible de démontrer qu'il y a m lien entre la distance minimale du code et le gain maximal obtenu par celui-ci. Ce gain est appelé gain asymptotique , Ga, mesuré en décibels, et on peut écrire en première approximation la relation suivante : Ga &num; lOlog (. M). Ainsi, par exemple, un code de rendement, R, égal à 1/2 capable de travailler aux environs de la limite théorique pour un taux d'erreurs binaires de 10-8 doit posséder une distance minimale d'environ 32. Selon l'état de l'art, l'estimation de la distance minimale d'un code a toujours été associée à une recherche plus ou moins exhaustive des mots de codes en utilisant certaines propriétés pour éviter au maximum les calculs inutiles. Le principe général de l'invention repose, quant à lui, sur l'algorithme de décodage associé au code et non pas sur l'utilisation des propriétés du code. Ainsi, selon l'invention, on prend en compte les limitations du décodeur. L'information qui en est extraite n'est pas, au sens habituel, la distance minimale du code, min, mais une grandeur, appelée distance impulsionnelle du code , impulse, représentative du pouvoir de correction du code et du décodeur associé. On peut vérifier que pour de nombreux codes linéaires, la distance impulsionnelle du code, impulse est égale à la distance du code, dmm. Selon une variante de l'invention, on détermine également la multiplicité, m, associée à la distance du code, c'est-à-dire le rapport du nombre de symboles auquel est associée la distance impulsionnelle du code, dmin, sur le nombre total de symboles dans un mot La prise en compte de la multiplicité permet notamment d'estimer plus finement le gain asymptotique ou de prévoir une protection inégale des symboles à coder. La figure 2 illustre un algorithme d'estimation de distance minimale d'un code correcteur d'erreurs, selon l'invention. Au cours d'une première étape d'initialisation 20, les différentes variables utilisées par l'algorithme sont initialisées. Puis, au cours d'une étape 21, on initialise les paramètres de codage et de modulation en définissant notamment : - le code dont on veut estimer la distance libre (par exemple, codes élémentaires et entrelacement pour turbo codes, motif de poinçonnage,...) produisant des mots de codes de longueurs n (soit k valeurs binaires d'information et (n-k) valeurs binaires de redondances) ; et - la modulation associée (par exemple, BPSK, QPSK, FSK,...). Puis, au cours d'une étape 22, on génère un mot de code initial (en fonction du code défini lors de l'étape 21) qui pour un code linéaire ne contient que des 0 . Ce net de code est ensuite modulé (selon la modulation définie à l'étape 21) pour produire une séquence (vl, V2,.... vn). Pour une modulation binaire, on associe un symbole de valeur -1 à chaque O émis par le codeur (des symboles +1 seraient associés aux 1 émis par le codeur). On note que cette succession de symboles égaux à -1 était transmise au décodeur correspondant au code choisi, celui-ci convergerait sans aucune difficulté vers le mot tout 0 contenant k valeurs binaires nulles. On note également que l'étape 22 est illustrée plus en détail en regard de la figure 3. Ensuite, au cours d'une étape 23, on initialise une variable i à 1. Puis, au cours d'une étape 24, on détermine une distance impulsionnelle, dimpulse, i associée à une erreur injectée au lé symbole de la séquence (VI, V2,.... Vn). Ainsi, on transforme le lme symbole de la séquence (VI, V2,.... Vn) en un symbole ayant une valeur positive. On fait croître l'amplitude de cette erreur jusqu'à ce que le décodeur ne converge pas vers le mot tout 0 . L'association codeur/décodeur est alors mise en défaut. En appliquant cette méthode, la capacité de correction du code n'est pas évaluée sur des erreurs réparties sur le mot présenté au décodeur (selon des techniques connues en soi) mais sur un seul symbole. L'expérience montre que la capacité de correction reste la même. La valeur minimale de l'impulsion ne mettant pas en défaut le système de correction est directement liée à la distance impulsionnelle, dllpulse i, associée à la valeur binaire affectée par l'erreur. La distance impulsionnelle, d1mpulse, i, est ainsi déterminée et sauvegardée. On note également que l'étape 24 est illustrée plus en détail en regard de la figure 4. Ensuite, au cours d'un test 25, on détermine si la valeur de i est égale àk. Dans la négative, au cours d'une étape 26, la valeur de i est incrémentée d'une unité et l'étape 24 est réitérée. On note qu'ainsi, on détermine la distance impulsionnelle associée à chacun des k symboles d'information de la séquence (va, V2,.... Vk). Selon une variante du test 25 et de l'étape 26, on détermine la distance impulsionnelle associée à chaque symbole appartenant à une sous-séquence de la séquence (vi, .... ), cette sous-séquence contenant un nombre de symboles inférieur strictement à k. Cette variante est avantageusement mise en ouvre lorsque, notamment, le code correcteur d'erreurs présente des propriétés de périodicité qui sont telles que beaucoup de positions de symboles d'information dans la séquence (VI, V2,.... Vk) correspondent. à la même distance impulsionnelle et que le sous-ensemble est choisi en fonction de ces propriétés. On note que dans le cas des turbo codes convolutifs, ces périodicités dépendent de la fonction d'entrelacement et du motif de poinçonnage éventuel. Si le résultat du test est positif, au cours d'une étape 27, on détermine la distance impulsionnelle minimale du code en retenant la plus petite des distances impulsionnelles associées aux valeurs binaires examinées et déterminées lors de l'étape 24. En variante, lors de l'étape 27, on détermine également la multiplicité, m, associée à la distance impulsionnelle minimale. La multiplicité, m, est, par définition, le rapport du nombre de symboles auquel est associée la distance impulsionnelle du code, dmin, sur le nombre total de symboles dans un mot. On note que le nombre d'erreurs que peut corriger un code ayant une distance minimale dmm est strictement inférieur à dmin/2 erreurs. Soit A erreur, l'amplitude de l'impulsion d'erreur ajoutée à la valeur nominale-1 (l'amplitude du symbole appliqué à l'entrée du décodeur A est donc égale à Aerreur-1). Une erreur binaire pleine correspond à une impulsion d'erreur d'amplitude 2 (passage de-1 à +1). Le nombre d'erreurs binaires équivalentes à une amplitude Aerreur est donc e valant Aerreu/2. Si l'impulsion d'erreur est corrigée, alors le nombre e est strictement inférieur à dmin/2. Ainsi, en assimilant exactement distance minimale et distance impulsionnelle, Aerreur est strictement inférieur àdmm et àdimpri ! se. Puis, au cours d'une étape 28, on détermine s'il est nécessaire de déterminer la distance impulsionnelle minimale associé à nouveau code. Dans l'affirmative, l'étape 21 est réitérée. Dans la négative, au cours d'une étape 29, un code est choisi en onction de sa distance impulsionnelle minimale. Selon une variante, au cours de l'étape 29, d'autres paramètres tels que, par exemple, la multiplicité associée à la distance impulsionnelle minimale du code et/ou la complexité du code sont, en outre, pris en compte pour le choix du code. La figure 3 décrit l'étape 22 de génération d'une séquence de symboles, illustrée en regard de la figure 2. On suppose que le code dont les paramètres ont été initialisés lors de l'étape 21 est un code linéaire adapté à la transmission de paquets, associant k bits d'information utile à des mots de n bits après codage (le rendement, R, du code étant égal au rapport kin). Au cours d'une étape 30, on traduit le mot tout 0 dans le code étudié. Le code étant linéaire, les n bits du mot de code (ul, U2,... un) sont tous nuls. (Ici, le choix du mot tout 0 répond à un souci de simplicité : puisque le message d'information est tout 0 , le code étant linéaire, la redondance est tout 0 aussi et on n'a pas à se préoccuper du codage ; en d'autres termes, selon une variante de l'étape 30, on peut choisir un mot du code différent du mot tout 0 ). Ensuite, au cours d'une étape 31, on définit les symboles telles qu'ils auraient été émis par un modulateur NRZ (ou Non Retour à Zéro ). Ainsi, au cours de l'étape 31, on associe : - un symbole -1 à chaque valeur binaire du mot de code (ui, U2,... un) égal àO ; et - un symbole +1 à chaque valeur binaire du mot de code (M], M2, ..-un) égal à 1 ; On forme ainsi une séquence de symboles (vol, V2,... vn) correspondant au mot de code (U), U2,... un) modulé. Après l'étape 31, l'étape 23 illustrée en regard de la figure 2 est effectuée. La figure 4 décrit l'étape 24 de calcul de distance impulsionnelle, illustrée en regard de la figure 2. Au cours d'une étape 40, on initialise : - une variable Y aune valeur égale à2 ; et - une séquence w de n symboles égale à la séquence v. Selon une variante, on initialise la variable J à une valeur supérieure à 2, en fonction d'une borne inférieure (a priori connue) de la distance impulsionnelle minimale. Puis, au cours d'une étape 41, on initialise une erreur, Aerreur, à une valeur égale à J-ê, où e est un nombre réel quelconque, compris entre 0 et 1 strictement (e est égal, par exemple, à 0,5) ; ainsi, l'erreur, Verrez est égale à une valeur comprise strictement entre (J-1) et J. Au cours de l'étape 41, on sélectionne le lé symbole de w, wi, qu'on affecte de la valeur Aerreur moins la valeur de Vs soit get Ensuite, au cours d'une étape 42, on décode la séquence w avec un algorithme de décodage adapté au code choisi lors de l'étape 21 et apte à prendre en compte les amplitudes des symboles à décoder (le décodeur est à entrées pondérées). Si le code est de type turbo code, l'algorithme de décodage sera, par exemple, un algorithme de décodage itératif tel que décrit dans les brevets EP0511141 (dont le titre est 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 correspondants ) ou EP735696 (dont le titre est Procédé de décodage itératif, module de décodage et décodeur correspondant ). Le nombre d'itérations nécessaire dépend de la distance à déterminer. Plus la distance est grande, plus il faut d'itérations. Le nombre d'itérations peut être de plusieurs centaines. Les résultats obtenus sont très dépendants de la qualité du décodage. L'algorithme à entrées et sorties douces doit pouvoir fonctionner sans la connaissance de la variance. On peut notamment utiliser des algorithmes de décodage élémentaires de type : - Max-Log-MAP (SUB-MAP) décrit notamment dans le document de P. Robertson, P. Hoeher et E. Villebrun,"Optimal and suboptimal maximum a posteriori algorithms suitable for turbo decoding", paru dans la revue European Trans. Telecommun., vol. 8, pp. 119-125, March-Apr. 1997, l'algorithme Max-Log-MAP étant dérivé de l'algorithme MAP décrit dans le document de L. R. Bahl, J. Cocke, F. Jelinek et J. Raviv"Optimal decoding of linear codes for minimizing symbol error rate", paru dans la revue IEEE Trans. Inform. Theory, rr-20, pp. 248-287, Mar. 1974.) ; ou SOVA ( Algorithme de Viterbi à sorties douces de langlais Soft Output Viterbi Algorithm ) décrit notamment dans les articles : de G. Battail,"Pondération des symboles décodés par l'algorithme de Viterbi", dans la revue Ann. Télécommun., Fr., 42, NO 1-2, pp. 31-38, en Janvier 1987 ; - de J. Hagenauer and P. Hoeher,"A Viterbi algorithm with soft- decision outputs and its applications", dans les comptes-rendus de conférence Proc. of Globecom'89, Dallas, Texas, pp. 47.11- 47-17, en Novembre 1989 et de C. Berrou, P. Adde, E. Angui and S. Faudeil,"A low complexity soft-output Viterbi decoder architecture",", dans les comptes-rendus de conférence Proc. of ICC'93, Geneva, pp. 737-740, en Mai 1993. qui ne requièrent pas la connaissance de la variance. On peut montrer que le décodeur idéal pour l'invention proposée serait un décodeur s'appuyant sur la recherche du produit scalaire minimal. Puis, au cours d'un test 43, on détermine si l'algorithme de décodage converge vers le mot tout 0 . Dans l'affirmative, la limite n'est pas dépassée et au cours d'une étape 45, on incrémente d'une unité la variable J et l'étape 41 est réitérée. Selon une variante de l'étape 45, lorsque la modulation utilisée est telle que la protection des valeurs binaires est inégale, la distance minimale équivalente du couple codage-modulation, particulière à chaque valeur binaire, est elle-même inégale et n'est généralement pas une valeur entière. Dans ce cas, au cours de l'étape 45, on incrémente la variable J d'une valeur strictement inférieure à 1, afin de déterminer une distance impulsionnelle réelle. Selon une variante de l'étape 24, la variable J est affectée d'une valeur correspondant à une borne supérieure de la distance impulsionnelle augmentée de 1 lors de l'étape 40. L'étape 43 est suivie de l'étape 44 si le mot décodé est égal au mot de code initial, la distance impulsionnelle est alors affectée de la valeur de J. L'étape 43 est suivie de l'étape 45 si le mot décodé n'est pas égal au mot de code initial, et J est décrémenté lors de l'étape de 45. Selon encore une autre variante de l'étape 24, on procède par dichotomie : lors de la première itération, la variable J est initialisée avec une valeur correspondant à une borne inférieure, Jmin, de la distance impulsionnelle ; puis lors d'une deuxième itération, la variable J est initialisée avec une valeur correspondant à une borne supérieure, Jmax, de la distance impulsionnelle augmentée de 1 ; puis - lors des itérations suivantes, on affecte à J une valeur égale à la moitié de la somme de Jmin et de Jmax et, à l'issue du test 43 : si le mot décodé est égal au mot initial, on affecte à Jmax la valeur de J courante ; et - si le mot décodé n'est pas égal au mot initial, on affecte à Jmin la valeur de J courante. Selon cette dernière variante, on arrête les itérations lorsque l'écart entre les valeurs de Jmin et de Jmax est suffisamment faible. On note que cette variante basée sur une connaissance a priori d'un encadrement de J et l'utilisation de la méthode de dichotomie est particulièrement avantageuse lorsque la protection des symboles d'un mot de code est inégale. Si le résultat du test 43 est négatif, l'algorithme de décodage ne converge pas vers le mot tout O et l'amplitude de l'impulsion d'erreur est suffisante pour perturber le décodage. Dans ce cas, au cours d'une étape 44, la valeur de la distance impulsionnelle, dimp, ; associée à une erreur injectée au l : me symbole de la séquence (VI, V2,.... Vn) est égale à la valeur courante de J diminuée de 1. En effet, la valeur courante de Aerre J M/.i > -i-&num; soit encore : me, ; + &num; > Y-1 > K/, t-I + &num; (J-1) et dintpulse i étant des entiers, on en déduit leur égalité. Après l'étape 44, le test 25 illustré en regard de la figure 2 est effectué. Bien entendu, l'invention n'est pas limitée aux exemples de réalisation mentionnés ci-dessus. En particulier, l'homme du métier pourra apporter toute variante dans les paramètres à considérer pour le choix d'un code. L'homme du métier pourra notamment prendre en compte le taux d'erreur trame, FER, (ou Frame Error Rate en anglais) estimé selon la relation suivante : FER = mk Erf-Eb N.) R. d.,,,) = f. j où : - m représente la multiplicité associée à la distance impulsionnelle du code ; - k, le nombre de bits d'information d'un mot de code ; - / ? Vo, le rapport signal à bruit ; - R, le rendement du code ; - dmm J la distance impulsionnelle du code ; et - Erfc, la fonction d'erreur complémentaire, bien connue suivant la relation : r/e () =-y=-F exp (-) - V7r'"=" Par différence avec la courbe non codée, on peut en déduire une formule approchée du gain asymptotique, suivant, par exemple, la relation : Ga&num;10log(R.dmin). On note que l'invention ne se limite pas à l'estimation d'une distance minimale, mais permet aussi de déterminer les symboles les plus sensibles et donc de proposer des schémas de codage avec des protections multi-niveaux ou à rendement de codage inégal. En outre, selon l'invention, lorsque l'on détermine la distance impulsionnelle du code, on peut répartir l'erreur sur plusieurs symboles, à condition d'être sûr que ces symboles appartiendront tous à un mot de code concurrent retenu (ce qui signifie que ces symboles sont choisis à des positions où les symboles du mot de code de référence et les positions du mot de code concurrent diffèrent), en cas de défaillance du décodeur. On fera préférentiellement porter l'impulsion d'erreur sur des mots de codes concurrent qui sont à une faible distance du mot de code de référence. C'est le cas, par exemple, si l'impulsion d'erreur est répartie sur un symbole d'information et le symbole de redondance correspondant, qui s'écrit comme la somme (modulo 2) du symbole d'information et d'une autre information (l'état du codeur pour un code convolutif, par exemple). Ainsi, si le bit d'information change, le bit de redondance aussi et ces deux bits font partie du mot de code concurrent. D'une manière générale, la répartition de l'impulsion d'erreur se fait préférentiellement en considérant une base qui est le symbole à tester. Ce symbole reçoit une fraction de l'impulsion d'erreur et d'autres symboles, éventuellement le reliquat On pourra ainsi déterminer la distance impulsionnelle associée à chaque symbole de base testé. On note qu'ainsi, lorsqu'on répartit l'erreur sur plusieurs symboles, la multiplicité, m, est alors, le rapport du nombre de symboles de base auquel est associée la distance impulsionnelle d1 code, dmin, sur le nombre total de symboles dans un mot. On note également que l'invention permet de déterminer également le traitement de codes à message infini. Dans ce cas, on considère un message suffisamment long pour éviter les problèmes de bord (début et fin de message) et on recherche uniquement les distances sur les symboles suffisamment éloignés du début et de la fin du message. On note aussi que l'invention est applicable non seulement aux turbocodes convolutifs (concaténation parallèle) mais est aussi applicable aux codes convolutifs simple ou aux codes construits à partir d'une concaténation série, et plus généralement à tous les codes dont le décodeur sait tirer profit d'échantillons d'entrée pondérés (en anglais soft input ), notamment ceux qui utilisent l'algorithme de Viterbi ou l'algorithme MAP (de l'anglais Maximum a Posteriori ) ou ses versions simplifiées. On note que l'invention ne se limite pas à une implantation purement matérielle mais qu'elle peut aussi être mise en ouvre sous la forme d'une séquence d'instructions d'un programme informatique ou toute forme mixant une partie matérielle et une partie logicielle. Dans le cas où l'invention est implantée partiellement ou totalement sous forme logicielle, la séquence d'instructions correspondante pourra être stockée dans un moyen de stockage amovible (tel que par exemple une disquette, un CD-ROM ou un DVD-ROM) ou non, ce moyen de stockage étant lisible partiellement ou totalement par un ordinateur ou un microprocesseur. On note en outre, que l'invention ne se limite pas aux procédés de qualification ou d'optimisation de code précédemment décrits mais s'étend aux codes obtenus par l'un au moins de ces procédés, au codeur (respectivement au décodeur) permettant de coder (respectivement décoder) des données selon ce code. REVENDICATIONS 1. Procédé de qualification d'un code correcteur d'erreurs, délivrant des mots de code, formés chacun d'au moins un symbole, caractérisé en ce qu'il associe audit code une première information de qualification, représentative de la capacité d'un décodeur correspondant à corriger des erreurs, obtenue à l'aide d'un processus d'estimation mettant en ouvre les étapes suivantes : - insertion (41) d'une impulsion d'erreur (terreur) prédéterminée, introduisant une perturbation sur un ensemble d'au moins un symbole (w,) d'un mot de code de référence (v) préalablement codé sans erreur ; - décodage (42), à l'aide d'un décodeur à entrées pondérées, du mot de code modifié (w) par ladite impulsion d'erreur, et analyse du résultat dudit décodage, délivrant ladite première information de qualification (impulse,)). 2. Procédé de qualification d'un code correcteur d'erreurs selon la revendication 1, caractérisé en ce que ledit ensemble contient un seul symbole. 3. Procédé de qualification d'un code correcteur d'erreurs selon la revendication 1, caractérisé en ce que ledit ensemble contient au moins deux symboles. 4. Procédé de qualification d'un code correcteur d'erreurs selon la revendication 3, caractérisé en ce que tous les symboles dudit ensemble appartiennent à un mot de code concurrent dudit mot de code de référence. 5. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 1 à 5, caractérisé en ce qu'on associe audit ensemble d'au moins un symbole affecté par ladite impulsion d'erreur une donnée intermédiaire de qualification, fonction d'une amplitude maximale de ladite impulsion d'erreur affectant ledit ensemble et ne perturbant pas le décodage du mot de code, dite distance impulsionnelle. 6. Procédé de qualification d'un code correcteur d'erreurs selon la revendication 5, caractérisé en ce que ledit processus d'estimation est répété (26) au moins deux fois introduisant une perturbation sur le même ensemble d'au moins un symbole avec des amplitudes de ladite impulsion d'erreur variables, de façon à déterminer ladite distance impulsionnelle. 7. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 5 et 6, caractérisé en ce que ladite distance impulsionnelle est égale au plus grand entier J tel que ledit mot de code contenant ledit ensemble affecté de ladite impulsion d'erreur d'amplitude égale audit entier J soit décodé correctement. 8. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 5 à 7, caractérisé en ce que ledit processus d'estimation est répété (28) pour au moins deux ensembles distincts de symboles dudit mot de code de référence. 9. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 5 à 8, caractérisé en ce que ladite première information de qualification est la distance impulsionnelle minimale (impulse) parmi la ou les distances impulsionnelles déterminées. 10. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 5 à 9, caractérisé en ce qu'il affecte (27) audit code une seconde information de qualification (m), représentative du nombre desdits ensembles les plus sensibles à une impulsion d'erreur, dans ledit mot de code de référence. 11. Procédé de qualification d'un code correcteur d'erreurs selon les revendications 9 et 10, caractérisé en ce que ladite seconde information de qualification, dite multiplicité, est le rapport : - du nombre desdits ensembles pour lesquels ladite distance impulsionnelle est 12. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 1 à 11, caractérisé en ce que ledit ensemble ou lesdits ensembles selon la revendication 8 sur lequel ou lesquels est appliqué ledit processus d'estimation est ou sont sélectionnés en tenant compte des éventuelles propriétés de périodicité dudit code. 13. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 1 à 12, caractérisé en ce que ledit mot de code de référence est un mot dont tous lesdits symboles prennent la valeur binaire 0. 14. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 1 à 13, caractérisé en ce que ledit mot de code de référence subit une modulation (31), avant ladite insertion d'une impulsion d'erreur. 15. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 1 à 14, caractérisé en ce qu'il comprend une étape d'estimation d'un gain, dit gain asymptotique (Ga), représentatif de l'efficacité dudit code correcteur d'erreurs par rapport à absence de codage, en fonction de ladite première information de qualification. 16. Procédé de qualification d'un code correcteur d'erreurs selon la revendication 15, caractérisé en ce que ledit gain asymptotique est approché par : Ga = 101og (R. ) où : R est le rendement dudit code correcteur d'erreurs ; dmin est la distance impulsionnelle minimale, telle que définie à la revendication 9. 17. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 1 à 16, caractérisé en ce qu'il comprend les étapes suivantes : - génération et modulation (22) dudit mot de code de référence ; - sélection (23,26) d'au moins un ensemble d'au moins un symbole dudit mot de code de référence ; - affectation (41) d'une impulsion d'erreur d'une amplitude déterminée audit (ou audits) ensemble (s) sélectionné (s) pour former un mot erroné ; - décodage (42) dudit mot erroné, prenant en compte des entrées pondérées, et délivrant un mot décodé ; - comparaison dudit mot décodé avec ledit mot de code initial. 18. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 1 à 17, caractérisé en ce qu'on fait varier l'amplitude de ladite impulsion d'erreur selon une règle déterminée, appartenant au groupe comprenant : - une première règle selon laquelle, lors de la première itération, l'amplitude de ladite impulsion d'erreur est affectée d'une faible valeur et est incrémentée lors des itérations suivantes jusqu'à ce que ledit mot décodé soit différent dudit mot de code initial ; - une seconde règle selon laquelle, lors de la première itération, l'amplitude de ladite impulsion d'erreur est affectée d'une forte valeur et est décrémentée lors des itérations suivantes jusqu'à ce que ledit mot décodé soit égal audit mot de code initial ; - une troisième règle selon laquelle, lors des premières itérations, l'amplitude de ladite impulsion d'erreur est affectée de deux valeurs extrêmes et, lors des itérations suivantes, on procède par dichotomie, la valeur de l'amplitude de ladite erreur étant choisie en fonction de ladite sous-étape de comparaison ; et - une combinaison desdites première et seconde règles avec ladite troisième règle. 19. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 1 à 18, caractérisé en ce que ledit code fait partie du groupe comprenant : des codes convolutifs ; des turbo codes convolutifs ; des turbo codes algébriques ; des codes concaténés parallèles ; des codes concaténés séries ; et des combinaisons des codes précédents. 20. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 1 à 19, caractérisé en ce qu'il comprend, en outre, une étape de détermination d'au moins un symbole de mot de code le plus sensible aux erreurs. 21. Procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 1 à 20, caractérisé en ce qu'il comprend, en outre, une étape de comparaison de la sensibilité des symboles de mot de code aux erreurs et de construction d'un code à protection inégale en fonction du résultat de ladite étape de comparaison. 22. Procédé d'optimisation d'un codage de canal, caractérisé en ce qu'il met en ouvre le procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 1 à 21 sur au moins deux codes candidats et une étape de sélection pour ledit codage de canal d'un desdits codes candidats, en fonction d'une analyse desdites premières informations de qualification affectées à chacun desdits codes candidats. 23. Procédé d'optimisation d'un codage de canal selon la revendication 22, caractérisé en ce que chacun desdits codes est associé à une modulation prédéterminée, et en ce que ladite étape de sélection tient compte de l'association code/modulation. 24. Procédé d'optimisation d'un codage de canal selon l'une quelconque des revendications 22 et 23, caractérisé en ce que ladite étape de sélection tient compte de également de ladite seconde information de qualification selon l'une quelconque des revendication 10 et 11 et/ou dudit gain asymptotique selon l'une quelconque des revendications 15 et 16. 25. Codeur permettant la correction d'erreurs, caractérisé en ce que le code correspondant est sélectionné selon un procédé de qualification selon l'une quelconque des revendications 1 à 21 et/ou selon un procédé d'optimisation d'un codage de canal selon l'une quelconque des revendications 22 à 24. 26. Décodeur permettant un décodage de données codées à l'aide d'un code correcteur d'erreurs et une correction d'erreurs correspondante, caractérisé en ce que ledit code correcteur d'erreurs est sélectionné selon l'une quelconque des revendications 1 à 21 et/ou selon un procédé d'optimisation d'un codage de canal selon l'une quelconque des revendications 22 à 24. 27. Application du procédé de qualification d'un code correcteur d'erreurs selon l'une quelconque des revendications 1 à 21 et/ou du procédé d'optimisation d'un codage de canal selon l'une quelconque des revendications 22 à 24, caractérisé en ce que ladite application appartient au groupe comprenant : - la transmission de données sur un canal bruité ; - l'optimisation de codage de canal avec protection inégale ; - l'estimation de la distance libre d'un code ; et l'estimation des performances d'un code.