Brevet FR2888061A1 — publié le 20070105

Domaine technique de l'invention L'invention se rapporte au domaine des communications numériques et concerne un procédé de construction d'un code LDPC pour l'encodage et le décodage d'une séquence de données ainsi que des dispositifs d'encodage et de décodage. Arrière-plan de l'invention Actuellement, les systèmes de communication numérique les plus performants s'appuient sur des systèmes où les donnés sont protégées par un codage de canal très performant et décodées itérativement par un décodeur à sortie pondérée. Dans le domaine des transmissions numériques, et plus particulièrement lorsque le canal est de type hertzien, la fonction principale de ces codes correcteurs est de permettre la levée des ambiguïtés apportées par le canal sur le message transmis. Le gain en performance apporté par ces codes peut être affecté à la réduction de consommation des terminaux ou à l'augmentation du volume d'informations transmis. Récemment, de nombreux travaux ont été réalisés dans le domaine d'encodage et de décodage en utilisant des codes correcteurs dit codes LDPC (Low Density Parity Check). Des codes LDPC sont proposés par exemple dans le cadre de la normalisation du IEEE 802.11n WLAN haut débit et ont été adoptés dans la norme IEEE 802.16.e (Wimax mobile). Les techniques de codage de canal mettant en oeuvre des codes LDPC sont nombreuses. Cependant un inconvénient majeur des codes LDPC est leur complexité d'encodage. Toutefois, plusieurs familles de codes LDPC permettent une simplification du processus d'encodage. 2888061 2 Tous ces codes ont en commun une matrice de contrôle de parité notée H de forme triangulaire. De plus il a été montré que pour des tailles de blocs de l'ordre de quelques Kilo bits, les constructions déterministes ou pseudo déterministes des matrices de contrôle de parités définissant un code LDPC donnent de meilleures performances que les constructions aléatoires. Dans la suite, on notera N la taille d'un mot de code x composé de m bits de parité formant le vecteur de parité P et de K bits d'informations ou de données formant le vecteur de données c. Le rendement R du code est donné par la formule suivante: R=-N La matrice H de contrôle de parité du code est de taille m xN et chaque équation de parité est composée de d, variables, et chaque variable est connectée à d, équations. Par ailleurs, un code est dit régulier si chaque variable est connecté au même nombre d'équation et si chaque équation a le même nombre de variable, ce qui correspond à une matrice de contrôle de parité comportant le même nombre de "1" par ligne et le même nombre de "1" par colonne. En outre, cette matrice de contrôle de parité H peut être 20 définie par deux sous matrices telles que: H=[H, Hp] Hp est une matrice carrée de taille m x m associée aux bits de parité du vecteur de parité P, et H, est une matrice de taille MxK associée aux bits d'informations du vecteur de données c. Ainsi, un mot x décomposé en bits d'informations et bits de parité de la façon suivante x = [C P] est un mot de code si et seulement si: CT HxT = [H, H p I T K = 0T 2888061 3 xT, CT, et pT étant les transposées des vecteurs x, C, et P. Par ailleurs, on appelle vecteur de projection v, le vecteur définit par la relation suivante: VT =H,CT Le document de Michael Yang, W.E. Ryan, and Yan Li, intitulé "Design of efficiently encodable moderate-length high-rate irregular LDPC codes" (IEEE Transactions on Communications, avril 2004) décrit la construction d'un code LDPC par une matrice de contrôle de parité de la forme H = [H, Hl]. Cette matrice H est pseudo déterministe et permet un calcul rapide des bits de redondance. La matrice H, est une matrice générée aléatoirement et la matrice H p est une matrice de forme diagonale. Les bits de parité du vecteur de parité P sont calculés à partir des bits d'informations du vecteur de données c suivant la relation suivante: P=Hp'H,C Du fait de la forme triangulaire de la matrice Hp, son inverse HP-' a une forme particulièrement intéressante qui permet un calcul simple des bits de parités à partir du produit HIC. En effet, la figure 10 illustre schématiquement un dispositif 20 d'encodage comportant un moyen de contrôle 131 et un moyen de codage 125 traduisant le calcul des bits de parités suivant la relation P = HP'H,C. Cependant, en dépit du caractère pseudo déterministe du code construit à partir des matrices de ce type, la matrice de contrôle de parité H est très peu structurée. Le manque de structure de la matrice H, générée aléatoirement rend le calcul du produit HIC très complexe. De plus, dans cette configuration il est nécessaire de stocker à l'émission, la matrice H, ce qui est très coûteux d'un point de vue de réalisation pratique. 2888061 4 Afin de simplifier le calcul, S.J. Johnson et S.R. Welter proposent dans leur publication "Quasi-cyclic LDPC codes from differences familles" (3rd Australian Communications Theory Worshop, Canberra, Australia, février 2002), un code construit à partir d'une matrice de contrôle de parité déterministe et quasi cyclique. Cette matrice H est décomposée en plusieurs sous matrices. Chaque sous matrice est une matrice identité dont les colonnes sont permutées circulairement k fois vers la gauche ou vers la droite. Cette forme de matrice permet une paramétrisation simple d'un code LDPC. Cette structure permet également une réduction de la complexité d'encodage. De même, R.Echard et S-C Chang proposent dans leur publication "The pi rotation Low Density Parity Check Codes", (GLOBECOM 2001, novembre 2001, pp. 980-984), un code construit à partir d'une matrice de contrôle de parité déterministe suivant une technique des matrices Pi-rotation. Cette matrice de contrôle de parité H est divisée en deux sous matrices, Hf et H p telles que H = [H, H p j où H p est une matrice de forme bi diagonale. L'originalité de cette construction provient de la forme de la matrice H, , qui permet un calcul rapide et peu coûteux d'un point de vue implémentation du produit H,C. Les codes générés à partir des matrices déterministes du type quasi cyclique ou Pi-rotation sont structurés ce qui permet une réduction de la complexité d'encodage. Cependant, ce genre de matrices génère des codes ayant une distance minimale faible. Notamment pour un nombre donné de "1" par colonne la distance minimale n'augmente pas avec la taille des blocs. Ainsi, ces codes peuvent présenter des dégradations de performance pour des taux d'erreurs faibles sachant que la distance minimale est directement reliée à la performance d'un code. Objet et résumé de l'invention 2888061 5 L'invention a pour but de remédier à ces inconvénients, et de simplifier le processus d'encodage. Ces buts sont atteints grâce à un procédé de construction d'un code LDPC par une matrice de contrôle de parité, chaque colonne de ladite matrice de contrôle de parité définissant un nombre déterminé de bits codés et chaque ligne définissant une équation de parité, caractérisé en ce que ladite matrice de contrôle de parité comporte deux zones matricielles, chaque zone matricielle comprenant au moins une matrice de traitement, une matrice de liaison comportant un unique 1 par colonne et un unique 1 par ligne, et une matrice triangulaire. Ainsi, la matrice de contrôle de parité est une matrice structurée qui simplifie le processus d'encodage tout en générant des codes ayant une distance minimale suffisamment grande pour permettre de bonnes performances pour ces codes. L'invention vise aussi un procédé d'encodage d'une séquence de données suivant un code LDPC défini par la matrice de contrôle de parité, comportant les étapes suivantes: -décomposer la séquence de données en un ensemble de vecteurs de données; -détermination de vecteurs de parité correspondant aux vecteurs de données respectant l'ensemble des équations de parité définis par ladite matrice de contrôle de parité, et -associer l'ensemble de vecteurs de données avec les vecteurs de parité pour former un mot de code comportant une pluralité de bits de données 25 et une pluralité de bits de parité. Ainsi, l'encodage d'une séquence de données est réalisé avec une complexité réduite à partir de la matrice de contrôle de parité. La détermination desdits vecteurs de parité comporte les étapes suivantes: 2888061 6 -transformer par un ensemble de projections en parallèle ledit ensemble de vecteurs de données en vecteurs de projection; -multiplier chacun des vecteurs de projection par l'inverse d'une matrice triangulaire de ladite matrice de contrôle de parité pour former lesdits 5 vecteurs de parité. Ainsi, le traitement en parallèle des vecteurs de données permet d'augmenter la rapidité de l'encodage et par conséquent d'augmenter le débit des mots codés. Dans le cas où le nombre déterminé de vecteurs de données 10 est égal à deux, ladite étape de transformation par projections en parallèle comporte les étapes suivantes: -réaliser des opérations en parallèle comportant des opérations de contrôle et de permutation sur lesdits deux vecteurs de données pour former deux vecteurs de contrôle et deux vecteurs de permutation, -additionner lesdits deux vecteurs de contrôle auxdits deux vecteurs de permutation pour former un ensemble de vecteurs de projection constitué desdits deux vecteurs de projection de telle sorte qu'un vecteur de contrôle en sortie d'une opération de contrôle d'un vecteur de données est additionné à un vecteur de permutation en sortie d'une opération de permutation de l'autre vecteur de données. Ceci permet un brassage de différents codes encodés en parallèle de façon à obtenir un bon niveau de performance sans trop augmenter la complexité du processus d'encodage. Par ailleurs, dans le cas où le nombre déterminé de vecteurs de 25 données est supérieur à deux, ladite étape de transformation par projections en parallèle comporte les étapes suivantes: -réaliser des opérations en parallèle comportant des opérations de contrôle et de permutation sur ledit ensemble de vecteurs de données pour former un ensemble de vecteurs de contrôle et un ensemble de vecteurs de permutation, 2888061 7 -additionner ledit ensemble de vecteurs de contrôle audit ensemble de vecteurs de permutation pour former un ensemble de vecteurs de projection de telle sorte qu'un vecteur de contrôle en sortie d'une opération de contrôle d'un vecteur de données quelconque est additionné à un vecteur de permutation en sortie d'une opération de permutation d'un autre vecteur de données, et -additionner deux-à-deux les vecteurs de projection dudit ensemble de vecteurs de projection pour former un autre ensemble de vecteurs de projections, l'addition étant réalisée entre deux vecteurs de projection ne dépendant pas des mêmes vecteurs de données, et -si l'autre ensemble de vecteurs de projection comporte plus que deux vecteurs de projection, alors recommencer l'étape précédente jusqu'à l'obtention de deux vecteurs de projection. Ceci permet un brassage entre les différents codes encodés en 15 parallèle de façon à améliorer le niveau de performance. Lors de la formation dudit ensemble de vecteurs de projection, chaque vecteur de permutation dudit ensemble de vecteurs de permutation est utilisé de manière unique. Ceci permet d'optimiser le traitement parallèle et d'augmenter 20 le brassage améliorant la performance du codage. Avantageusement, ladite opération de contrôle comporte la multiplication de chaque vecteur de données par une matrice de traitement de ladite matrice de contrôle de parité et en ce que ladite opération de permutation comporte la multiplication de chaque vecteur de données par une matrice de liaison de ladite matrice de contrôle de parité. Ainsi, les structures des matrices de liaison et de traitement diminuent la complexité tout en permettant un encodage simple à réaliser. Les matrices de liaison de ladite matrice de contrôle de parité peuvent être identiques. Ceci permet le stockage d'un nombre réduit de données facilitant ainsi le procédé d'encodage. 2888061 8 Avantageusement, lesdites matrices de liaison peuvent être des matrices identité permettant ainsi de réduire encore davantage le nombre de données à stocker. Selon un mode de réalisation de la présente invention, la matrice triangulaire est une matrice bi-diagonale comportant deux diagonales de 1 espacées par un nombre donné n de diagonales de 0 . Ainsi, ce type de matrice de parité est inversible et permet de produire des bits de parité de manière simple et rapide. Avantageusement, le procédé d'encodage peut comporter en outre une étape de poinçonnage des bits de parités dudit mot de code. Le poinçonnage permet d'élargir la gamme de rendements du code. L'invention vise aussi un procédé de décodage d'un signal de réception comportant des bits codés, ledit signal de réception étant issu d'un ensemble de mots de code codés suivant le code LDPC construit selon la matrice de contrôle de parité et comportant les étapes suivantes résolution de chacune desdites équations de parité associées à ladite matrice de contrôle de parité pour calculer des estimations probabilistes sur les valeurs des bits codés participant à chacune desdites équations de parité, - envoi desdites estimations probabilistes à l'ensemble des bits codés participant à chacune desdites équations de parité, - calcul pour chaque bit codé d'une nouvelle estimation probabiliste à partir des estimations probabilistes provenant des équations de parité associées 25 à chaque bit codé, -mises à jour des estimations probabilistes au niveau des équations de parité, et - réitération des étapes précédentes jusqu'à ce qu'une condition d'arrêt prédéterminée soit respectée. 2888061 9 Ainsi, le décodage est réalisé de manière itérative à partir de la matrice de contrôle de parité. La condition d'arrêt prédéterminée peut être définie par un nombre déterminé d'itérations, et/ou par une convergence du décodage 5 vers un mot de code. Ainsi, selon la condition d'arrêt choisi, on peut augmenter la rapidité ou la performance du décodage. L'invention vise aussi un système de communication comportant une première entité comprenant une source d'information et un dispositif encodeur, connectée via un canal de transmission de données à une seconde entité comportant un dispositif décodeur, le dispositif encodeur étant destiné à encoder une séquence de données émise par la source d'information pour former un ensemble de mots de code à partir d'une matrice de contrôle de parité comportant au-moins deux zones matricielles, chaque zone matricielle comprenant au moins une matrice de traitement, une matrice de liaison comportant un unique 1 par colonne et un unique 1 par ligne, et une matrice triangulaire; et le dispositif décodeur étant destiné à décoder un signal codé de réception reçu par la seconde entité, ledit signal codé de réception étant issu de l'ensemble de mots de code construit selon ladite matrice de contrôle de parité. L'invention vise également un dispositif d'encodage d'une séquence de données, comportant: -un moyen de décomposition de la séquence de données en un ensemble de vecteurs de données; -un moyen de transformation transformant par un ensemble de projections en parallèle ledit ensemble de vecteurs de données en vecteurs de projection; -un moyen de codage multipliant chacun des vecteurs de projection par l'inverse d'une matrice triangulaire de ladite matrice de contrôle de parité 30 pour former des vecteurs de parité ; et 2888061 10 -un moyen d'association associant l'ensemble de vecteurs de données avec lesdits vecteurs de parité pour former un mot de code comportant une pluralité de bits de données et une pluralité de bits de parité. Ainsi, le dispositif d'encodage présente une réalisation simple de génération de mots de code. Dans le cas où le nombre déterminé de vecteurs de données est égal à deux, le moyen de transformation du dispositif d'encodage comporte: -des moyens de contrôle multipliant en parallèle chacun des deux vecteurs 10 de données par une matrice de traitement de ladite matrice de contrôle de parité formant deux vecteurs de contrôle; - des moyens de permutation multipliant en parallèle chacun des deux vecteurs de données par une matrice de liaison de ladite matrice de contrôle de parité formant deux vecteurs de permutation; et -des moyens d'addition additionnant lesdits deux vecteurs de contrôle auxdits deux vecteurs de permutation pour former lesdits deux vecteurs de projection de telle sorte qu'un vecteur de contrôle en sortie d'un moyen de contrôle agissant sur un vecteur de données est additionné à un vecteur de permutation en sortie d'un moyen de permutation agissant sur l'autre vecteur de données. Par ailleurs, dans le cas où le nombre déterminé de vecteurs de données est supérieur à deux, le moyen de transformation du dispositif d'encodage comporte: - des moyens de contrôle multipliant en parallèle chaque vecteur de 25 données par une matrice de traitement de ladite matrice de contrôle de parité formant un ensemble de vecteurs de contrôle; - des moyens de permutation multipliant en parallèle chaque vecteur de données par une matrice de liaison de ladite matrice de contrôle de parité formant un ensemble de vecteurs de permutation; et 2888061 11 -des premiers moyens d'addition additionnant ledit ensemble de vecteurs de contrôle audit ensemble de vecteurs de permutation pour former un ensemble de vecteurs de projection de telle sorte qu'un vecteur de contrôle en sortie d'un moyen de contrôle agissant sur un vecteur de données quelconque est additionné à un vecteur de permutation en sortie d'un moyen de permutation agissant sur un autre vecteur de données, et - des seconds moyens d'addition additionnant de manière successive deuxà- deux les vecteurs de projection de l'ensemble de vecteurs de projection jusqu'à l'obtention de deux vecteurs de projection. Ainsi, le dispositif réalise des calculs en parallèle permettant d'augmenter le débit des mots de code. L'invention vise aussi un dispositif de décodage d'un signal de réception comportant des bits codés, ledit signal de réception étant issu d'un ensemble de mots de code construit selon la matrice de contrôle de parité, le dispositif comportant: -des moyens de traitement destiné à résoudre chacune desdites équations de parité associées à ladite matrice de contrôle de parité pour calculer des estimations probabilistes sur les valeurs des bits codés participant à chacune desdites équations de parité, -des modules de contrôle de parité, chaque module traitant de manière itérative les bits codés, et communicant avec les autres modules pour échanger les estimations probabilistes permettant aux moyens de traitement de calculer à chaque itération et pour chaque bit codé une nouvelle estimation probabiliste jusqu'à ce qu'une condition d'arrêt prédéterminée soit respectée. Ainsi, le dispositif de décodage permet de réaliser un décodage rapide et très fiable. L'invention vise aussi un programme d'ordinateur mis en oeuvre dans un système informatique, comportant des instructions nécessaires à 30 la réalisation du procédé d'encodage ci-dessus. 2888061 12 L'invention vise également un programme d'ordinateur mis en oeuvre dans un système informatique, comportant des instructions nécessaires à la réalisation du procédé de décodage ci-dessus. Brève description des dessins D'autres particularités et avantages de l'invention ressortiront à la lecture de la description faite, ci-après, à titre indicatif mais non limitatif, en référence aux dessins annexés, sur lesquels: -la figure 1 illustre schématiquement un système de 10 communication comportant aux moins deux entités connectées entre elles via un canal de transmission de données, selon l'invention; - la figure 2 illustre schématiquement un dispositif d'encodage utilisant une matrice de contrôle de parité, selon l'invention; - la figure 3 illustre schématiquement un système informatique; -les figures 4A et 4B illustrent des exemples schématiques d'une matrice triangulaire et de son inverse associées à des bits de parité de la matrice de contrôle de parité, selon l'invention; -la figure 5 illustre schématiquement un dispositif d'encodage selon la figure 2 dans lequel le nombre déterminé de vecteurs de données 20 est égal à deux; -la figure 6 illustre schématiquement un moyen de codage de la figure 5; - la figure 7 montre une variante du dispositif d'encodage de la figure 5; -la figure 8 illustre schématiquement un dispositif d'encodage selon la figure 2 dans lequel le nombre déterminé de vecteurs de données est égal à quatre; -la figure 9 illustre schématiquement un dispositif de décodage utilisant la matrice de contrôle de parité, selon l'invention; et 2888061 13 -la figure 10 illustre schématiquement un dispositif d'encodage, selon l'art antérieur. Description détaillée de modes de réalisation Conformément à l'invention, la figure 1 illustre un exemple schématique d'un système de communication 1 comportant aux moins deux entités 3 et 5 connectées entre elles via un canal 7 de transmission de données. L'exemple de cette figure montre une première entité 3 comportant une source d'information 9 et un dispositif encodeur 11. La première entité 3 est connectée via le canal 7 de transmission de données à une seconde entité 5 comportant un dispositif décodeur 13 et un récepteur d'information 15. La source d'information 9 délivre un signal d'information S9 comportant un ensemble de séquences de données c. Le dispositif encodeur 11 délivre un signal codé de transmission S11 comportant un ensemble de mots de code {x} correspondant à un codage de l'ensemble de séquences de données. Chaque mot de code x étant une association entre des vecteurs de données C; comportant des bits de données et des vecteurs de parité P,. comportant des bits de parité pi. En effet, pour chaque séquence de données du signal d'information S9 émise par la source d'information 9, le dispositif encodeur 11 encode la séquence de données pour former un mot de code x suivant un code LDPC généré à partir d'une matrice de contrôle de parité H. Cette matrice de contrôle de parité H comporte deux zones matricielles, chaque zone matricielle comprenant au moins une matrice de traitement H;, une matrice de liaison A; , et une matrice triangulaire H,. Le signal codé de transmission S11 comportant l'ensemble de mots de code est envoyé au moyen du canal 7 de transmission de 2888061 14 données à destination de la seconde entité 5. Cette dernière reçoit alors un signal codé de réception S7 composé d'une version déformée du signal codé de transmission S11. En effet, à cause des phénomènes de propagation, les mots de code subissent d'importantes distorsions. Dans ce cas, le canal 7 de transmission de données se comporte comme une application déformante non déterministe entre le signal codé de transmission S11 à l'entrée du canal 7 et le signal codé de réception S7 à la sortie du canal 7. Afin de compenser les effets dus à la propagation, le dispositif décodeur 13 calcul une meilleur estimation de l'ensemble de mots de code pour former un signal de code estimé S17 comportant un ensemble de mots de code estimés. En effet, le dispositif décodeur 13 peut comporter un premier moyen de décodage 17 destiné à décoder le signal codé de réception S7 issu du signal codé de transmission S11 comportant l'ensemble de mots codés suivant le code LDPC construit selon la matrice de contrôle de parité H pour former le signal de code estimé 517. Eventuellement, le dispositif décodeur 13 comporte un second moyen de décodage 19 destiné à calculer à partir de l'ensemble de mots de code estimés une meilleure évaluation de l'ensemble de séquences de données émise par la source d'information 9 de sorte que le récepteur 15 reçoive un signal estimé d'information S19 le plus proche possible du signal d'information S9 émise par la source d'information 9. On s'intéressera plus particulièrement, dans la description qui va suivre à la construction de la matrice de contrôle de parité H et à l'utilisation de cette matrice dans les processus d'encodage et de décodage et de leurs mises en oeuvres. Conformément à l'invention, la matrice de contrôle de parité H comporte deux zones matricielles qui peuvent être deux lignes 30 matricielles. Ainsi et à titre d'exemple, la matrice de contrôle de parité H 2888061 15 peut être divisée en deux lignes matricielles et plusieurs colonnes matricielles de sorte que chaque élément est lui même une matrice (plus précisément une sous-matrice). Dans ce cas, chaque ligne matricielle comporte au moins une matrice de traitement Hi, une matrice de liaison Ai, une matrice nulle 0 et une matrice triangulaire H p. En particulier, sur une première partie de ces deux lignes matricielles, les matrices de traitement Hi et de liaison A. sont disposées d'une manière alternée formant un bloc ou une matrice de projection correspondant aux bits d'informations. Par ailleurs, sur l'autre partie de ces deux lignes matricielles, les matrice nulles 0 et triangulaires Hp forment un autre bloc correspondant aux bits de parité. Ainsi, cette matrice de contrôle de parité H peut être définie de la manière suivante: H; A. H p 0 Ai_1 Hi 0 H Cette configuration permet aux matrices de traitement Hi d'encoder la séquence de données de manière le plus parallèle possible. De préférence, chaque matrice de traitement H. possède une forme structurée permettant un calcul rapide. On notera que les matrices de traitement H. peuvent être identiques. En outre, les matrices de liaisons Ai permettent de coupler les différents codes réalisés en parallèle afin de les brasser et par conséquent augmenter la performance du code. On notera que chaque matrice de liaisons A; comporte un unique 1 par colonne et un unique 1 par ligne. Par ailleurs, ces matrices de liaison Ai peuvent être identiques. De plus, et afin de réduire le nombre de données de la matrice de contrôle de parité H, les matrices de liaison A. peuvent être des matrices identité. On notera que si les matrices de liaisons Ai sont des matrices nulles, on peut toujours obtenir un calcul des bits de parité de manière [AI Hi H= 2888061 16 parallèle. Dans ce cas, le décodage du code global peut se voir comme le décodage indépendant de plusieurs sous codes de tailles inférieures. Or, plus la taille du code est importante plus les performances sont bonnes. Ainsi, le fait de rendre dépendant les différents sous codes permet d'augmenter la performance. Finalement, les formes triangulaires des matrices Hp associées aux bits de parité permettent un calcul rapide de ces bits de parité. De préférence, ces matrices triangulaires Hp sont des matrices bi-diagonales. Ainsi, en développant la matrice de contrôle de parité H, 10 chaque colonne de cette matrice définit un nombre déterminé de bits codés et chaque ligne définit une équation de parité. La matrice de contrôle de parité H définie ci-dessus peut être réalisée en concaténant un bloc de projection correspondant aux bits d'informations comportant à l'origine deux matrices de traitement et deux matrices de liaison permettant ainsi d'étendre la taille du bloc d'information pour un même nombre de bits de parité. Cette structure originale permet ainsi une flexibilité au niveau des tailles de bloc concernant la longueur du code ou le niveau de rendement.Par ailleurs, on notera que pour obtenir un code plus court il suffit d'utiliser un des deux sous codes définis par des matrices H = [H, Hp j ou H = [H2 Hp] seul. En terme de performance, la structure de la matrice de contrôle de parité H définie ci-dessus peut dépasser les performance d'autres code LDPC de taille égale et à complexité de décodage proche. Pour arriver à de telles performances il est avantageux de bien choisir chaque matrice de traitement et de trouver une bonne fonction ou matrice de liaison. Des techniques basées sur la suppression de cycles courts dans le graphe défini par la matrice de contrôle de parité H et sur la maximisation de la distance minimale peuvent être mises en oeuvre. 2888061 17 De plus, on peut augmenter le rendement en utilisant un poinçonnage sur les bits de parités. On notera qu'une condition nécessaire pour ne pas avoir une perte excessive de performance est de poinçonner les bits de parité de façon à ce qu'au maximum une seule des variables d'une équation de parité soit inconnue. En outre, on peut élargir la taille de bloc de codage ou de mot de code pour un rendement donné en utilisant une expansion de la matrice de contrôle de parité. Autrement dit, chaque "1" de la matrice de contrôle de parité est remplacé par une matrice identité permutée. On peut aussi utiliser une expansion récursive de la matrice de contrôle de parité, c'est-à-dire que chaque matrice de traitement constituante d'un bloc de projection d'ordre m est remplacée par une matrice de projection d'ordre m-1. Alors conformément à l'invention, pour encoder une séquence de données c, cette dernière est décomposée en un ensemble de vecteurs de données composé d'un nombre déterminé N de vecteurs de données C,,...,CN. Le nombre de bits de la séquence de données est un multiple du nombre déterminé N de vecteurs de données de sorte que tous les vecteurs de données comportent le même nombre de bits. Cette 20 décomposition peut être réalisée par blocs ou de manière alternée ou d'une toute autre manière. Ensuite, on détermine les vecteurs de parité P correspondant aux vecteurs de données C, respectant l'ensemble des équations de parité HxT = 0T définis par la matrice de contrôle de parité H, sachant que xT correspond au transposé du mot de code x formé des vecteurs de données C. et de parité J. En particulier, l'exemple de la matrice de contrôle de parité H décrit ci-dessus permet la détermination de deux vecteurs de parité P, et P2. 2888061 18 Finalement, on associe l'ensemble de vecteurs de données C,,... ,CN avec les vecteurs de parité P, et P2 pour former un mot de code x comportant une pluralité de bits de données et une pluralité de bits de parités. En effet, la figure 2 montre de manière schématique un dispositif d'encodage 11 d'une séquence de données comportant un moyen de décomposition 21, un moyen de transformation 23, un moyen de codage 25 et un moyen d'association 27. Le moyen de décomposition 21 est destiné à décomposer la 10 séquence de données C en un ensemble de vecteurs de données C,,...,CN Les moyens de transformation 23 et de codage 25 sont destinés à déterminer les vecteurs de parité. En effet, le moyen de transformation 23 est destiné à transformer par un ensemble de projections en parallèle l'ensemble de vecteurs de données C1, ...,CN en un ensemble de vecteurs de projection, plus particulièrement en deux vecteurs de projection V, et V2. Le moyen de codage 25 est destiné à multiplier chacun des vecteurs de projection V, et V2 par l'inverse d'une matrice triangulaire Hp de la matrice de contrôle de parité H pour former en particulier les deux vecteurs de parité P, et P2. Finalement le moyen d'association 27 est destiné à associer l'ensemble de vecteurs de données C,,...,C, avec les vecteurs de parité p et P2 pour former le mot de code x. On notera que le dispositif d'encodage 11 peut être mis en oeuvre par un système informatique S (voir figure 3) comportant de manière classique une unité centrale de traitement S1 commandant par des signaux S2 une mémoire S3, une unité d'entrée S4 et une unité de sortie S5. Tous les éléments S1, S3, S4 et S5 sont raccordés entre eux par 2888061 19 des bus de données S6. De plus, ce système informatique peut être utilisé pour exécuter un programme d'ordinateur comportant des instructions pour la mise en oeuvre du procédé d'encodage selon l'invention. A titre d'exemple, dans le cas où la séquence de données est décomposée en seulement deux vecteurs de données (des premier et second vecteurs de données C, et C2), la matrice de contrôle de parité H comporte alors des première et seconde matrices de traitement H1 et H2, des première et seconde matrices de liaison A, et A2 et deux matrices triangulaires Hp disposées de la manière suivante: H, A, Hp 0 Cette matrice de contrôle de parité H permet de calculer les premier et second vecteurs de parité P, et P2 associés aux premier et second vecteurs de données C1 et C2 formant ainsi un mot de code x=(CI,C2,P,P2) . En effet, en calculant les solutions des équations Hx = 0, on obtient les deux vecteurs de parité P, et P2 définissant le mot de code x. Plus précisément, les premier et second vecteurs de parité Pl et P2 peuvent être calculés selon les équations ci-dessous en trois étapes: P1T = H;i.(H1.C; + A2.CZ l P,T =HP'.(H,.C2 +A1.C1 La première étape consiste à réaliser des première et seconde opérations de traitement et des première et seconde opérations de permutation sur les deux vecteurs de données C1 et C2. Ainsi, la première opération de traitement consiste à multiplier 25 le premier vecteur de données C1 par la première matrice de traitement H1 pour former un premier vecteur de contrôle H1.C1. De même et en parallèle la seconde opération de traitement consiste à multiplier le second H= _Al H2 0 Hp_ 2888061 20 vecteur de données C2 par la seconde matrice de traitement H2 pour former un second vecteur de contrôle H2.C2. La première opération de permutation consiste à permuter le premier vecteur de données Cl par la première matrice de liaison Al pour former un premier vecteur de permutation AI.C; . De même, la seconde opération de permutation consiste à permuter le second vecteur de données C2 par la seconde matrice de liaison A2 pour former un second vecteur de permutation A2.C2. La seconde étape consiste d'une part à additionner le premier 10 vecteur de contrôle H1.C; en sortie de la première opération de traitement au second vecteur de permutation A2.C2 en sortie de la seconde opération de permutation pour former un premier vecteur de projection V, et d'autre part à additionner le second vecteur de contrôle H2.C2T en sortie de la seconde opération de traitement au premier vecteur 15 de permutation A,. CT en sortie de la première opération de permutation pour former un second vecteur de projection V2. La troisième étape consiste à multiplier chacun des premier et second vecteurs de projections VI et V2 par l'inverse d'une matrice triangulaire H p-' pour former en particulier les deux vecteurs de parité 20 P, = H;'V, T et P2 = H;'v2T A titre d'exemple, la figure 4A montre que cette matrice triangulaire associée aux bits de parité est avantageusement une matrice bi-diagonale composée de deux diagonales de "1" espacées par n diagonales de "0" de la forme suivante: 1 0 0 0 1 0 0 1 0 ÉÉÉ 0 1 Les traits obliques de la figure 4A représentent les diagonales de "1", le reste de la matrice étant égal à "0". Cette matrice Hp est inversible et son inverse est représenté sur la figure 4B. Ce type de matrice a une forme remarquable qui permet un calcul rapide des bits de parité p, d'un vecteur de parité Pi et qui est facile à mettre en oeuvre (voir figure 6). En effet, les bits de parité pi sont calculés à partir d'une somme cumulée des éléments vj d'un vecteur de projection v de la manière suivante: V. 1 n+ l La construction bi diagonale permet également une flexibilité de rendement par poinçonnage. Les codes LDPC en général se comportent très mal une fois poinçonnés. Le fait de poinçonner le code a pour conséquence d'ajouter des inconnues dans les équations de parités. Ainsi si une équation de parité a plus d'un terme inconnu, elle ne peut être résolue. Les matrices bi diagonales permettent un poinçonnage efficace sans perte excessive de performance. Ainsi, il est important de poinçonner les bits de parité de façon à ce qu'au maximum une seule des variables de l'équation soit inconnue. A titre d'exemple si n=O, un poinçonnage efficace consiste à effacer un bit de parité sur deux. 2888061 22 Le poinçonnage P1 peut être réalisé en poinçonnant un bit de parité sur deux ou de manière aléatoire. D'une manière générale, un poinçonnage structuré et convenablement choisit permet d'augmenter la performance du code. La figure 5 montre un exemple particulier d'un dispositif d'encodage 11 dans lequel le nombre déterminé de vecteurs de données est égal à deux. Ce dispositif réalise ainsi les trois étapes ci-dessus et montre de manière schématique que le moyen de transformation comporte des moyens de contrôle 31a et 31b, des moyens de permutation 33a et 33b et des moyens d'addition 35a et 35b. De plus, les différents moyens de décomposition 21, de contrôle 31a, 31b, de permutation 33a, 33b, d'addition 35a, 35b et d'association 27 sont organisés selon deux branches parallèles 37a et 37b. Ainsi, selon cet exemple, la séquence de données C est décomposée par le moyen de décomposition 21 en les premier et second vecteurs de données C, et C2 divergeant respectivement dans les première et seconde branches parallèles 37a et 37b. Les moyens de contrôle 31a, 31b et de permutation 33a, 33b sont destinés à réaliser des opérations en parallèle comportant des opérations de contrôle et de permutation sur les premier et second vecteurs de données C, et C2 pour former les premier et second vecteurs de contrôle H1C1 et H2C2 et les premier et second vecteurs de permutation A,C, et A2C2. En effet, les moyens de contrôle 31a, 31b, réalisant des opérations de contrôle, sont destinés à multiplier en parallèle sur les deux branches 37a et 37b, chacun des premier et second vecteurs de données C, et C2 par une matrice de traitement de la matrice de contrôle de parité pour former les premier et second vecteurs de contrôle H1C1 et H2C2 respectivement. 2888061 23 En outre, les moyens de permutation 33a, 33b, réalisant des opérations de permutation, sont destinés à multiplier en parallèle sur les deux branches 37a et 37b, chacun des premier et second vecteurs de données C1 et C2 par une matrice de liaison de la matrice de contrôle de parité pour former les premier et second vecteurs de permutation A,C1 et A2C2 respectivement. Les moyens d'addition 35a, 35b sont destinés à additionner les deux vecteurs de contrôle H1C, et H2C2 aux deux vecteurs de permutation A2C2 et A1C1 pour former les deux vecteurs de projection V1 10 et V2 de telle sorte qu'un vecteur de contrôle H1C1 en sortie d'un moyen de contrôle 31a agissant sur un vecteur de données C1 est additionné à un vecteur de permutation A2C2 en sortie d'un moyen de permutation 33b agissant sur l'autre vecteur de données C2. Autrement dit, le premier vecteur de projection V, est le résultat d'une addition entre le premier vecteur de contrôle H1C1 et le second vecteur de permutation A2C2 et le second vecteur de projection V2 est le résultat d'une addition entre le second vecteur de contrôle H2C2 et le premier vecteur de permutation A1C1. Ainsi, chacun des vecteurs de contrôle et de permutation est utilisé une seule fois. Le moyen de codage 25 comporte des premier et second codages différentiels 39a et 39b destinés à multiplier chacun des premier et second vecteurs de projections V, et V2 par l'inverse d'une matrice bi- diagonale H p pour former les premier et second vecteurs de parité P et P2. La figure 6 montre que chacun des premier et second codages différentiels 39a et 39b peut comporter un convertisseur série parallèle 41a, et n+1 codeurs différentiels 41b (n étant l'espace entre les deux diagonales de "1" de la matrice bi-diagonale) et d'un convertisseur 2888061 24 parallèle série 43 permettant ainsi de calculer de manière simple les bits de parité p, d'un vecteur de parité à partir d'une somme cumulée des éléments vi d'un vecteur de projection y. Finalement, le moyen d'association 27 est destiné à associer les 5 premier et second vecteurs de données CI et C2 aux premier et second vecteurs de parité P, et P2 pour former le mot de code x. Ainsi, cet exemple montre bien que par exemple à chaque coup d'horloge deux bits de parités sont calculés en même temps au lieu d'un bit pour les structures classiques. Un choix judicieux de la matrice de liaison A permet de réduire d'avantage l'espace mémoire nécessaire. La figure 7 montre une variante du dispositif d'encodage de la figure 5 permettant de réduire significativement la complexité à l'encodage tout en réalisant de très bonnes performances. En effet, selon cet exemple, la matrice de contrôle de parité H possède la structure suivante: A H2 0 Hp Les matrices de traitement HI et H2 peuvent être des matrices de la famille des Pi-rotation proposées par R. Echard et S-C Chang dans leur publication "The pi rotation Low Density Parity Check Codes", (GLOBECOM 2001, novembre 2001, pp. 980-984). Ainsi, une matrice de traitement HI peut être une matrice H,r ayant la forme suivante: HI A H p 0 H= H,,, = Ir A B Ir C_ IrA B C 2t D B e'C rD C lr D n'A Ir A Ir B 2rB, 'cc, et 'rD sont directement obtenues par rotation de la matrice JTA. La matrice 'rB est obtenue par rotation de 90 de 'rA dans le sens 2888061 25 trigonométrique. La matrice ne est obtenue par une rotation dans le sens trigonométrique de r3 de 90 etc. La matrice nA est définie par un vecteur donnant la position des "1" dans chaque colonne. Par exemple on peut construire H, à partir du vecteur v = [1 3 2] indexant la position du "1" dans chaque colonne, en partant du bas, les sous matrices sont donc: 0 1 0 100 nA = 0 0 1 nD 0 0 1 1 0 0 1 0_ 0 1 0 0 0 1 nB = 1 0 0 ne = 1 0 0 0 0 1 0 1 0 Il en résulte que le simple fait de connaître IrA permet de reconstruire toute la matrice H,r. En outre, la matrice triangulaire Hp peut être choisie bi 10 diagonale avec le paramètre n égal à zéro, c'est-à-dire de la forme: 1 1 Enfin on peut utiliser des matrices de liaison identité A=I pour obtenir le schéma d'encodage le plus simple possible. Le calcul des bits de parités se déroule alors suivant les équations suivantes: FIT = HP'.(H1.C; + c2 P,T =HP'.(H2.C2 +C, Ces deux équations sont réalisées par les deux branches parallèles 37a et 37b du dispositif d'encodage. On notera que les matrices de la famille des Pi-rotation 20 simplifient au maximum le calcul des produits H1.CI et H2.C2 et permettent de réduire l'espace de stockage des matrices. Hp = 2888061 26 Ainsi, on peut paramétrer le code en utilisant le vecteur [m,a, b,c,d], m correspond à la taille de la sous matrice génératrice %rA, [a,b] aux paramètres de la matrice Pi-rotation H, et [c,d] aux paramètres de la matrice Pi-rotation H2. La taille des sous matrices étant fixée le paramètre m relatif à la taille de la sous matrice génératrice;t'A en est déduit directement. Afin d'obtenir un bon code on peut alors utiliser l'algorithme suivant: Etape 1: Recherche de l'ensemble c, des couples [a,b] et [c,d] tel que le graphe défini par les matrices de contrôle de parité H = [H, H p j et H == [H2 Hi] n'ont pas de cycles courts et plus particulièrement les cycles d'ordre 4. Pour cela on utilise par exemple un algorithme de recherche de code sans cycle d'ordre 4. Etape 2: Recherche de l'ensemble c des quadruplets [a,b,c,d] dont les couples [a,b] et [c,d] sont inclus dans c4, et tels que le graphe défini par la matrice: [H, 1 1 H 2 n'ait pas de cycles courts et plus particulièrement de cycles d'ordre 4. Pour cela on utilise par exemple l'algorithme de recherche de code sans cycle 20 d'ordre 4. Etape 3: Recherche parmi les quadruplets de c,,, de ceux qui maximisent la distance minimale du code associé à la matrice de contrôle de parité. Pour cela on utilise par exemple l'algorithme de recherche de distance minimale présenté dans la publication de Xiao-Yu Hu et al. intitulée "On the computation of the minimum distance of low-density parity-check codes", (ICC 2004 - IEEE International Conference on Communications, vol. 27, no. 1, juin 2004, pp. 767 771). 2888061 27 La taille du mot d'information est par exemple fixée à 60 octets. Le rendement minimum est fixé à 0.5. La taille maximum du bloc est donc de 120 octets soit 960 bits; Hp est de taille 480x480; H1 et H2 de taille 240x240. En appliquant la technique de poinçonnage, il est possible de couvrir un très grand nombre de rendements allant de 0.5 jusqu'à 0.67. Le paramètre m est donc fixé à 60 (960 = 2 x 8 x m). Ainsi, en utilisant l'algorithme présenté ci-dessus on peut obtenir un code dont les paramètres sont donnés par [a=13,b=14,c=59,d=52]. On rappelle que l'avantage de cette construction est l'encodage simple et rapide au niveau de la première entité 3 (l'émettrice) permettant une augmentation du débit d'information. L'extension de la structure qui permet aussi une augmentation du rendement offre moins de pertes. Cependant l'extension augmente la complexité d'encodage et de décodage. Une technique basée à la fois sur du poinçonnage et sur l'extension de la structure est le meilleur compromis entre performance et complexité. D'une manière générale, lorsque le nombre déterminé de vecteurs de données est supérieur à deux, le procédé d'encodage comporte la formation d'un ensemble de vecteurs de contrôle et d'un ensemble de vecteurs de permutation. Dans ce cas, l'ensemble de vecteurs de contrôle est additionné à l'ensemble de vecteurs de permutation pour former un ensemble de vecteurs de projection. Ensuite, les vecteurs de projection de cet ensemble de vecteurs de projection sont additionnés deux-à-deux pour former un autre ensemble de vecteurs de projections. On notera que chaque addition entre deux vecteurs de projection est réalisée entre des vecteurs de projection ne dépendant pas des mêmes vecteurs de données. En outre, si cet autre ensemble de vecteurs de projection comporte toujours plus que deux vecteurs de projection, alors on 2888061 28 recommence l'addition deux-à-deux des vecteurs de projection de cet autre ensemble de vecteurs de projection de manière itérative jusqu'à l'obtention des deux vecteurs de projection. En effet, la figure 8 montre un autre exemple d'un dispositif d'encodage 11 dans lequel le nombre déterminé de vecteurs de données est égal à quatre (c'est-à-dire un premier vecteur de données Cl, un deuxième vecteur de données C2, un troisième vecteur de données C3 et un quatrième vecteur de données C4). Dans ce cas, les équations de parité sont données par la résolution de l'équation matricielle suivante: A, H2 A3 H4 Hp 0 LH' A2 H3 A4 0 Hp_ Cl C2 C3 C4 P =0 Cet exemple montre que le moyen de transformation 23 du dispositif encodeur comporte des moyens de contrôles 31a à 31d, des moyens de permutation 33a à 33d, des premiers moyens d'addition 35a à 35d, et des seconds moyens d'addition 45a et 45b. Les moyens de contrôles 31a à 31d, réalisant des opérations de contrôle, sont destinés à multiplier en parallèle chaque vecteur de données C. par une matrice de traitement Hp de la matrice de contrôle de parité pour former un ensemble de vecteurs de contrôle (c'est-à-dire un premier vecteur de contrôle H1C1, un deuxième vecteur de contrôle H2C2, un troisième vecteur de contrôle H3C3 et un quatrième vecteur de contrôle H4C4). Les moyens de permutation 33a à 33d, réalisant des opérations de permutation, sont destinés à multiplier en parallèle chaque vecteur de données C. par une matrice de liaison 4 de la matrice de contrôle de 2888061 29 parité H pour former un ensemble de vecteurs de permutation (c'est-à-dire un premier vecteur de permutation, un deuxième vecteur de permutation A2C2, un troisième vecteur de permutation A3C3 et un quatrième vecteur de permutation A4C4). Les premiers moyens d'addition 35a à 35d sont destinés à additionner l'ensemble de vecteurs de contrôle à l'ensemble de vecteurs de permutation pour former un ensemble de vecteurs de projection de telle sorte qu'un vecteur de contrôle en sortie d'un moyen de contrôle agissant sur un vecteur de données quelconque est additionné à un vecteur de permutation en sortie d'un moyen de permutation agissant sur un autre vecteur de données. On notera que lors de la formation de l'ensemble de vecteurs de projection, chaque vecteur de permutation de l'ensemble de vecteurs de permutations est utilisé de manière unique. Autrement dit, le premier vecteur de contrôle H1C1 est additionné avec le deuxième vecteur de permutation A2C2 pour former un premier vecteur de projection V12 dépendant des premier et deuxième vecteurs de données. Le deuxième vecteur de contrôle H2C2 est additionné avec le premier vecteur de permutation A1C, pour former un deuxième vecteur de projection V21 dépendant des premier et deuxième vecteurs de données. Le troisième vecteur de contrôle H3C3 est additionné avec le quatrième vecteur de permutation A4C4 pour former un troisième vecteur de projection V34 dépendant des troisième et quatrième vecteurs de données. Finalement, le quatrième vecteur de contrôle H4C4 est additionné avec le troisième vecteur de permutation A3C3 pour former un quatrième vecteur de projection V43 dépendant des troisième et quatrième vecteurs de données. Enfin, les seconds moyens d'addition 45a et 45b additionnent le premier vecteur de projection V12 avec le troisième vecteur de projection 2888061 30 V34 et le deuxième vecteur de projection V21 avec le quatrième vecteur de projection V43 pour former uniquement les deux vecteurs de projection V, et V2 qui vont être utilisés par le moyen de codage 25 pour former les deux vecteurs de parité P, et P2. Bien entendu, lorsque le nombre déterminé de vecteurs de données est supérieur à quatre, d'autres seconds moyens d'addition additionnent de manière successive deux-à-deux les vecteurs de projection de l'ensemble de vecteurs de projection jusqu'à l'obtention de seulement deux vecteurs de projection. Ainsi, le dispositif d'encodage selon l'invention, réalise la détermination des vecteurs de parité respectant les équations de parité définies par la matrice de contrôle de parité. En particulier, un programme d'ordinateur comportant des instructions nécessaires à la réalisation du procédé d'encodage peut être mise en oeuvre dans les moyens de décomposition et/ou de transformation et/ou de codage et/ou d'association du dispositif d'encodage. Conformément à l'invention, la figure 9 montre un dispositif de décodage 13 d'un signal codé de réception S7 comportant des bits codés. Ce signal codé de réception S7 est issu d'un ensemble de mots de code construit selon la matrice de contrôle de parité H. Le dispositif de décodage 13 comporte des moyens de traitement 41, connectés à des modules 43 de contrôle de parité par des premier et second moyens de bouclage 45a et 45b. Le premier moyen de bouclage 45a réalise une fonction de permutation et le second moyen de bouclage 45b réalise une fonction de permutation inverse permettant ainsi la propagation d'information entre les moyens de traitement 41 et les modules 43 de contrôle de parité de manière itérative. Les moyens de traitement 41 reçoivent les valeurs des bits 30 codés constituant le signal codé de réception S7. En effet, ces moyens de 2888061 31 traitement 41 sont destinés à résoudre les équations de parité associées à la matrice de contrôle de parité pour calculer des estimations probabilistes sur les valeurs des bits codés participant à chacune de ces équations de parité. On notera que, la résolution des équations de parité permet d'établir des relations entre ces équations de parité et les bits codés sous la forme d'un graphe de Tanner. Ainsi, le décodage peut être réalisée de manière itérative en propageant des messages entre différents niveaux d'un arbre formé par le processus d'itération agissant sur le graphe de Tanner. En effet, les estimations probabilistes calculées par les moyens de traitement 41 sont envoyées aux modules 43 de contrôle de parité à travers le premier moyen de bouclage 45a. Chacun des modules 43 de contrôle de parité traite de manière itérative les bits codés, et communique avec les autres modules 43 pour échanger les messages ou estimations probabilistes permettant ainsi aux moyens de traitement 41 de calculer à chaque itération et pour chaque bit codé une nouvelle estimation probabiliste et à mettre à jour les estimations probabilistes au niveau des équations de parité jusqu'à ce qu'une condition d'arrêt prédéterminée soit respectée. Lorsque la condition d'arrêt est respectée, les moyens de traitement 41 émettent un signal comportant les mots de code estimés. On notera que cette condition d'arrêt peut être définie par un nombre déterminé d'itérations et/ou par une convergence du décodage vers un mot de code. On notera que le dispositif de décodage 13 peut être mis en oeuvre par un système informatique S comme celui de la figure 3. De plus, ce système informatique peut être utilisé pour exécuter un programme d'ordinateur comportant des instructions pour la mise en oeuvre du procédé de décodage selon l'invention. 2888061 32 A titre d'exemple, l'algorithme de décodage peut être décomposé de manière itérative en trois étapes. La première étape concerne la résolution des équations de parité. En effet, chaque ligne de la matrice de contrôle de parité H définie une équation de parité tel que H.Z T =0, où c sont les estimations pondérées reçues au décodeur. La résolution de chaque équation donne une information sur les variables participant à celle-ci. Les variables participant à l'équation de parité i sont données par les éléments non nuls de H(i, j), où H(i, j) est l'élément de la i ième ligne et j ième colonne de la matrice de contrôle de parité H. La résolution de la i ième ligne permet le calcul des messages m,,j envoyés à l'ensemble des variables connectées à cette équation de la façon suivante: m. j = 2 tank- ' 11 tanh nEW/jv n,j 2 où vn j représente le message de la variable n à l'équation de contrôle de parité i. La deuxième étape de l'algorithme consiste pour chaque variable j à collecter les informations provenant des différentes équations de contrôle de parité. La valeur à posteriori de chaque variable est égale à la somme de tous les messages provenant des différentes équations de parités. L'ensemble des équations de parité E faisant intervenir la variable j est donnée par les éléments non nul de H(i, j) . Cette somme est égale à: vj =u +n j ne E/ 2888061 33 Où u est le rapport de vraisemblance de la variable j observé en sortie de canal. En utilisant cette valeur à posteriori v,, une décision sur la valeur binaire de chaque variable est prise: - 1 sign(v; ) V = en considérant une mise en constellation de la forme 0 >1 et 1 -1. La troisième étape consiste à calculer les messages envoyés à chaque équation de parité où intervient cette variable. Chaque message v de la variable j vers l'équation i est calculé en utilisant la relation suivante: 10 Ces trois étapes sont répétées jusqu'à ce que la conditiond'arrêt soit respectée. C'est-à-dire, le nombre d'itération maximum est atteint ou le décodage a convergé vers un mot de code et la relation H É cT = 0 est vérifiée. On notera que le décodage des codes LDPC peut être également effectué par d'autres algorithmes itératifs basés sur des approximations de l'algorithme ci-dessus, par exemple le BP-based algorithm (ou min-sum algorithm), l'APP algorithm, l'APP-based algorithm, le À-min algorithm, Amin* algorithm etc. Ainsi, la structure de la matrice de contrôle de parité de l'invention permet un encodage simple et rapide grâce à la parallélisation des calculs et permet aussi un décodage simple. De plus, en terme de performances, le code ainsi construit permet des performances en terme de taux d'erreur binaire comparables voir supérieures à d'autres codes LDPC classiques. Enfin il faut noter la flexibilité en terme de taille et de rendement offerte cette construction. 34 REVENDICATIONS 1.Procédé de construction d'un code LDPC par une matrice de contrôle de parité, chaque colonne de ladite matrice de contrôle de parité définissant un nombre déterminé de bits codés et chaque ligne définissant une équation de parité, caractérisé en ce que ladite matrice de contrôle de parité comporte au-moins deux zones matricielles, chaque zone matricielle comprenant au moins une matrice de traitement, une matrice de liaison comportant un unique 1 par colonne et un unique 1 par ligne, et une matrice triangulaire. 2.Procédé d'encodage d'une séquence de données suivant un code LDPC construit selon la revendication 1, caractérisé en ce qu'il comporte les 15 étapes suivantes: -décomposer la séquence de données en un ensemble de vecteurs de données, -détermination de vecteurs de parité correspondant aux vecteurs de données respectant l'ensemble des équations de parité définis par ladite 20 matrice de contrôle de parité, et -associer l'ensemble de vecteurs de données avec les vecteurs de parité pour former un mot de code comportant une pluralité de bits de données et une pluralité de bits de parité. 3.Procédé d'encodage selon la revendication 2, caractérisé en ce que la détermination desdits vecteurs de parité comporte les étapes suivantes: transformer par un ensemble de projections en parallèle ledit ensemble de vecteurs de données en vecteurs de projection, 2888061 35 -multiplier chacun des vecteurs de projection par l'inverse d'une matrice triangulaire de ladite matrice de contrôle de parité pour former lesdits vecteurs de parité. 4.Procédé selon la revendication 3 dans lequel le nombre déterminé de vecteurs de données est égal à deux, caractérisé en ce que ladite étape de transformation par projections en parallèle comporte les étapes suivantes: -réaliser des opérations en parallèle comportant des opérations de contrôle et de permutation sur lesdits deux vecteurs de données pour former deux vecteurs de contrôle et deux vecteurs de permutation, -additionner lesdits deux vecteurs de contrôle auxdits deux vecteurs de permutation pour former un ensemble de vecteurs de projection constitué desdits deux vecteurs de projection de telle sorte qu'un vecteur de contrôle en sortie d'une opération de contrôle d'un vecteur de données est additionné à un vecteur de permutation en sortie d'une opération de permutation de l'autre vecteur de données. 5.Procédé selon la revendication 3 dans lequel le nombre déterminé de vecteurs de données est supérieur à deux, caractérisé en ce que ladite étape de transformation par projections en parallèle comporte les étapes suivantes: -réaliser des opérations en parallèle comportant des opérations de contrôle et de permutation sur ledit ensemble de vecteurs de données pour former un ensemble de vecteurs de contrôle et un ensemble de vecteurs de permutation, -additionner ledit ensemble de vecteurs de contrôle audit ensemble de vecteurs de permutation pour former un ensemble de vecteurs de projection de telle sorte qu'un vecteur de contrôle en sortie d'une opération de contrôle d'un vecteur de données quelconque est additionné 2888061 36 à un vecteur de permutation en sortie d'une opération de permutation d'un autre vecteur de données, et - additionner deux-à-deux les vecteurs de projection dudit ensemble de vecteurs de projection pour former un autre ensemble de vecteurs de projections, l'addition étant réalisée entre deux vecteurs de projection ne dépendant pas des mêmes vecteurs de données, et - si l'autre ensemble de vecteurs de projection comporte plus que deux vecteurs de projection, alors recommencer l'étape précédente jusqu'à l'obtention desdits deux vecteurs de projection. 6.Procédé selon l'une quelconque des revendication 4 et 5, caractérisé en ce que lors de la formation dudit ensemble de vecteurs de projection, chaque vecteur de permutation dudit ensemble de vecteurs de permutation est utilisé de manière unique. 7.Procédé selon l'une quelconque des revendications 4 et 5, caractérisé en ce que ladite opération de contrôle comporte la multiplication de chaque vecteur de données par une matrice de traitement de ladite matrice de contrôle de parité et en ce que ladite opération de permutation comporte la multiplication de chaque vecteur de données par une matrice de liaison de ladite matrice de contrôle de parité. 8.Procédé selon la revendication 7, caractérisé en ce que les matrices de liaison de ladite matrice de contrôle de parité sont identiques. 9.Procédé selon la revendication 8, caractérisé en ce que lesdites matrices de liaison sont des matrices identité. 2888061 37 10.Procédé selon la revendication 1, caractérisé en ce que la matrice triangulaire est une matrice bi-diagonale comportant deux diagonales de 1 espacées par un nombre donné n de diagonales de 0 . 11.Procédé selon l'une quelconque des revendications 2 à 10, caractérisé en ce qu'il comporte en outre une étape de poinçonnage des bits de parités dudit mot de code. 12.Procédé de décodage d'un signal de réception comportant des bits codés, ledit signal de réception étant issu d'un ensemble de mots de code codés suivant le code LDPC construit selon la revendication 1, caractérisé en ce qu'il comporte les étapes suivantes: -résolution de chacune desdites équations de parité associées à ladite matrice de contrôle de parité pour calculer des estimations probabilistes sur les valeurs des bits codés participant à chacune desdites équations de parité, - envoi desdites estimations probabilistes à l'ensemble des bits codés participant à chacune desdites équations de parité, -calcul pour chaque bit codé d'une nouvelle estimation probabiliste à partir 20 des estimations probabilistes provenant des équations de parité associées à chaque bit codé, - mises à jour des estimations probabilistes au niveau des équations de parité, et réitération des étapes précédentes jusqu'à ce qu'une condition d'arrêt 25 prédéterminée soit respectée. 13.Procédé de décodage selon la revendication 12, caractérisé en ce que la condition d'arrêt prédéterminée est définie par un nombre déterminé d'itérations, et/ou par une convergence du décodage vers un mot de code. 2888061 38 14.Système de communication comportant une première entité (3) comprenant une source d'information (9) et un dispositif encodeur (11), connectée via un canal (7) de transmission de données à une seconde entité (5) comportant un dispositif décodeur (13), caractérisé en ce que le dispositif encodeur (11) est destiné à encoder une séquence de données émise par la source d'information (9) pour former un ensemble de mots de code à partir d'une matrice de contrôle de parité comportant deux zones matricielles, chaque zone matricielle comprenant au moins une matrice de traitement, une matrice de liaison comportant un unique 1 par colonne et un unique 1 par ligne, et une matrice triangulaire; et en ce que le dispositif décodeur (13) est destiné à décoder un signal codé de réception reçu par la seconde entité, ledit signal codé de réception étant issu de l'ensemble de mots de code construit selon ladite matrice de contrôle de parité. 15.Dispositif d'encodage d'une séquence de données suivant un code LDPC construit selon la revendication 1, caractérisé en ce qu'il comporte: -un moyen de décomposition (21) de la séquence de données en un ensemble de vecteurs de données, -un moyen de transformation (23) transformant par un ensemble de projections en parallèle ledit ensemble de vecteurs de données en vecteurs de projection, -un moyen de codage (25) multipliant chacun des vecteurs de projection par l'inverse de ladite matrice triangulaire de ladite matrice de contrôle de 25 parité pour former deux vecteurs de parité, et -un moyen d'association (27) associant l'ensemble de vecteurs de données avec lesdits vecteurs de parité pour former un mot de code comportant une pluralité de bits de données et une pluralité de bits de parité. 2888061 39 16.Dispositif selon la revendication 15 dans lequel le nombre déterminé de vecteurs de données est égal à deux, caractérisé en ce que le moyen de transformation (23) comporte: -des moyens de contrôle (31a, 31b) multipliant en parallèle chacun des 5 deux vecteurs de données par une matrice de traitement de ladite matrice de contrôle de parité formant deux vecteurs de contrôle, -des moyens de permutation (33a, 33b) multipliant en parallèle chacun des deux vecteurs de données par une matrice de liaison de ladite matrice de contrôle de parité formant deux vecteurs de permutation, et -des moyens d'addition (35a, 35b) additionnant lesdits deux vecteurs de contrôle auxdits deux vecteurs de permutation pour former lesdits deux vecteurs de projection de telle sorte qu'un vecteur de contrôle en sortie d'un moyen de contrôle agissant sur un vecteur de données est additionné à un vecteur de permutation en sortie d'un moyen de permutation agissant sur l'autre vecteur de données. 17.Dispositif selon la revendication 15 dans lequel le nombre déterminé de vecteurs de données est supérieur à deux, caractérisé en ce que le moyen de transformation (23) comporte: -des moyens de contrôle (31a à 31d) multipliant en parallèle chaque vecteur de données par une matrice de traitement de ladite matrice de contrôle de parité formant un ensemble de vecteurs de contrôle, -des moyens de permutation (33a à 33d) multipliant en parallèle chaque vecteur de données par une matrice de liaison de ladite matrice de contrôle de parité formant un ensemble de vecteurs de permutation, et -des premiers moyens d'addition (35a à 35d) additionnant ledit ensemble de vecteurs de contrôle audit ensemble de vecteurs de permutation pour former un ensemble de vecteurs de projection de telle sorte qu'un vecteur de contrôle en sortie d'un moyen de contrôle agissant sur un vecteur de 2888061 40 données quelconque est additionné à un vecteur de permutation en sortie d'un moyen de permutation agissant sur un autre vecteur de données, et -des seconds moyens d'addition (45a, 45b) additionnant de manière successive deux-à-deux les vecteurs de projection de l'ensemble de vecteurs de projection jusqu'à l'obtention de deux vecteurs de projection. 18.Dispositif de décodage d'un signal de réception comportant des bits codés, ledit signal de réception étant issu d'un ensemble de mots de code construit selon la revendication 1, caractérisé en ce qu'il comporte: des moyens de traitement (41) destiné à résoudre chacune desdites équations de parité associées à ladite matrice de contrôle de parité pour calculer des estimations probabilistes sur les valeurs des bits codés participant à chacune desdites équations de parité, -des modules (43) de contrôle de parité, chaque module traitant de manière itérative les bits codés, et communicant avec les autres modules pour échanger les estimations probabilistes permettant aux moyens de traitement (41) de calculer à chaque itération et pour chaque bit codé une nouvelle estimation probabiliste jusqu'à ce qu'une condition d'arrêt prédéterminée soit respectée. 19.Programme d'ordinateur mis en oeuvre dans un système informatique, comportant des instructions nécessaires à la réalisation du procédé d'encodage selon l'une quelconque des revendications 2 à 11. 20.Programme d'ordinateur mis en oeuvre dans un système informatique, comportant des instructions nécessaires à la réalisation du procédé de décodage selon l'une quelconque des revendications 12 et 13.