Brevet FR2944660A1 — publié le 20101022

B9284 - 07-GR1-123 1 DECODEUR LDPC Domaine de l'invention La présente invention concerne un décodeur à vérification de parité à faible densité (LDPC ou low density parity check) et un procédé pour réaliser un décodage LDPC et en parti- culier un décodeur LDPC et un procédé utilisant un algorithme à propagation de croyance par couches (LBP ou layered belief propagation). Arrière plan de l'invention Des codes de correction d'erreur directe (rBC ou forward error correction) ajoutent de la redondance à des paquets de données à transmettre sur un canal de transmission, de sorte que des erreurs induites par du bruit dans le canal de transmission peuvent être corrigées par le circuit de réception. Les codes LDPC sont un type de code de correction d'erreur directe et sont à base de blocs, le codage et le décodage étant réalisés à partir d'une matrice de vérification de parité. La matrice est clairsemée, ce qui implique qu'elle comprend un faible nombre de "1" par rapport au nombre de "0" ; c'est pourquoi de tels codes sont appelés codes à faible densité. Côté émetteur, des blocs de N bits de données sont émis, dont K bits correspondent à des informations et N-K bits B9284 - 07-GR1-123 2 correspondent à la redondance. La matrice de vérification de parité comprend N-K rangées et N colonnes. Côté récepteur, pour décoder des codes LDPC, des valeurs de logarithmes de rapports de vraisemblance LLR des ensembles de symboles reçus par le circuit de réception sont déterminées et fournies au décodeur LDPC. Une technique de décodage LDPC implique une mise à jour itérative des valeurs LLR initiales en fonction de la matrice de vérification de parité H, réalisée rangée par rangée puis colonne par colonne. On a proposé une technique plus rapide qui utilise un algorithme appelé propagation de croyance par couches (BP par couches) selon laquelle la matrice H est divisée en couches, chaque couche comprenant n rangées de la matrice H. En outre, chaque couche est divisée par colonnes en sous- matrices, chacune comprenant par exemple n par n valeurs. Le décodage est réalisé couche par couche en fonction des sous-matrices non nulles dans chaque couche, et les valeurs LLR mises à jour sont directement utilisées pour traiter la couche sui-vante, ce qui conduit à une convergence plus rapide de l'algo- rithme. Les décodeurs LDPC basés sur un algorithme BP par couches utilisent généralement une mémoire pour mémoriser des valeurs LLR mises à jour de façon itérative. En outre, pour accélérer le débit du décodeur, on a proposé des architectures en pipeline. Toutefois, en raison du nombre d'accès mémoire requis pour récupérer les valeurs LLR, les solutions existantes tendent à ne pas être optimales. Il existe donc un besoin d'une architecture améliorée de décodeur LDPC. Résumé de l'invention Un objet de modes de réalisation de la présente invention est de traiter au moins partiellement un ou plusieurs des besoins de l'état de la technique. Ainsi, un mode de réalisation de la présente invention prévoit un décodeur à vérification de parité à faible densité, LDPC, pour réaliser un décodage LDPC à partir d'un algorithme B9284 - 07-GR1-123 3 par couches appliqué à une matrice de vérification de parité, le décodeur comprenant une mémoire de canal agencée pour mémoriser des valeurs de canal correspondant initialement à des logarithmes de rapports de vraisemblance de symboles reçus par un canal de transmission ; une mémoire de métriques agencée pour mémoriser des valeurs de métriques ; des premier et second trajets de fourniture d'opérandes dont chacun est agencé pour fournir des opérandes en fonction des valeurs de canal et des valeurs de métriques ; un bloc de traitement comprenant une plu- ralité de modules de traitement en parallèle et agencé pour recevoir des opérandes à partir du premier trajet de fourniture et pour déterminer des valeurs de métriques mises à jour en fonction desdits opérandes ; un tampon agencé pour mémoriser au moins un des opérandes en provenance du premier trajet de fourniture ; et un additionneur couplé à une sortie du bloc de traitement et agencé pour produire des valeurs de canal mises à jour en ajoutant les valeurs de métriques mises à jour à des opérandes en provenance de l'un sélectionné du tampon et du second trajet de fourniture. Selon un mode de réalisation de la présente invention, le premier trajet de fourniture comprend un premier bloc sous-tracteur ayant une première entrée couplée à l'une sélectionnée de la mémoire de canal et de la sortie de l'additionneur et une seconde entrée couplée à une première sortie de la mémoire de métriques. Selon un mode de réalisation de la présente invention, le premier trajet de fourniture comprend un premier multiplexeur ayant une première entrée couplée à une sortie de la mémoire de canal et une seconde entrée couplée à la sortie d'un étage pipeline couplée à la sortie de l'additionneur, et une sortie couplée à l'entrée du premier bloc soustracteur. Selon un mode de réalisation de la présente invention, le second trajet de fourniture comprend un second bloc sous-tracteur ayant une première entrée couplée pour recevoir une B9284 - 07-GR1-123 4 sortie de la mémoire de canal et une seconde entrée couplée à une seconde sortie de la mémoire de métriques. Selon un mode de réalisation de la présente invention, les premier et second soustracteurs ont leurs premières entrées couplées à la même sortie de la mémoire de canal. Selon un mode de réalisation de la présente invention, le décodeur LDPC comprend un second multiplexeur ayant une première entrée couplée au premier trajet de fourniture et une seconde entrée couplée à la sortie du tampon, et une sortie couplée à une entrée de l'additionneur. Selon un mode de réalisation de la présente invention, le décodeur LDPC comprend un bloc de commande agencé pour commander le tampon pour mémoriser sélectivement certains des opérandes en provenance du premier trajet de fourniture. Selon un mode de réalisation de la présente invention, les opérandes sélectionnés comprennent des opérandes correspondant à des valeurs de canal à mettre à jour en relation avec une couche courante et non pas en relation avec une couche suivante de la matrice de vérification de parité. Selon un mode de réalisation de la présente invention, les opérandes sélectionnés comprennent au moins un opérande correspondant à une valeur de canal à mettre à jour en relation avec une couche courante et également à mettre à jour en relation avec une couche suivante de la matrice de vérification de parité. Selon un mode de réalisation de la présente invention, le tampon a une dimension qui correspond à pas plus de dix des opérandes. Selon un mode de réalisation de la présente invention, le tampon est un tampon de type premier entré-premier sorti comprenant une pluralité d'éléments de retard couplés en série et un moyen de sélection permettant à une sortie de l'un sélectionné des éléments de retard d'être fournie à partir du tampon. B9284 - 07-GR1-123 Selon un mode de réalisation de la présente invention, le décodeur LDPC comprend en outre un registre à décalage en anneau couplé à la sortie du bloc de traitement. Selon un autre aspect de la présente invention, il est 5 prévu un dispositif électronique comprenant un circuit de réception pour fournir des valeurs de logarithmes de rapports de vraisemblance concernant des symboles de données reçus à partir d'un canal de transmission, et le décodeur LDPC dessus agencé pour mémoriser des valeurs LLR dans la mémoire de canal. Selon un autre aspect de la présente invention, il est prévu un procédé de réalisation d'un décodage à vérification de parité à faible densité LDPC à partir d'un algorithme par couches appliqué à une matrice de vérification de parité, le procédé comprenant : mémoriser dans une mémoire de canal des valeurs de canal correspondant initialement à des logarithmes de rapports de vraisemblance de symboles reçus par un canal de transmission ; mémoriser dans une mémoire de métriques des valeurs de métriques ; fournir des opérandes en fonction des valeurs de canal et des valeurs de métriques par un premier trajet de fourniture à : un bloc de traitement comprenant une pluralité de modules de traitement en parallèle et agencé pour déterminer des valeurs de métriques mises à jour en fonction desdits opérandes, et un tampon agencé pour mémoriser au moins un des opérandes ; et produire des valeurs de canal mises à jour en ajoutant les valeurs de métriques mises à jour à des opérandes en provenance de l'un sélectionné du tampon et d'un second trajet de fourniture. Selon un mode de réalisation de la présente invention, le procédé comprend la commande du tampon pour mémoriser certains sélectionnés des opérandes correspondant à des valeurs de canal à mettre à jour en relation avec une couche courante et pas en relation avec une couche suivante de la matrice de vérification de parité. B9284 - 07-GR1-123 6 Brève description des dessins Ces objets, caractéristiques et avantages, ainsi que d'autres seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente un système de transmission de données selon un mode de réalisation de la présente invention la figure 2 représente un décodeur LDPC ; la figure 3 représente un exemple de matrice de véri-10 fication de parité selon un mode de réalisation de la présente invention ; la figure 4 représente un décodeur LDPC selon un mode de réalisation de la présente invention ; les figures 5 et 6 sont des chronogrammes illustrant 15 des opérations réalisées lors de cycles successifs du décodeur de la figure 4 selon des modes de réalisation de la présente invention ; la figure 7 représente un décodeur LDPC selon un autre mode de réalisation de la présente invention ; 20 la figure 8 est un organigramme illustrant des étapes d'un procédé de réalisation de décodage LDPC selon un mode de réalisation de la présente invention ; et la figure 9 représente plus en détail la mémoire de la figure 4 selon un mode de réalisation de la présente invention. 25 Description détaillée La figure 1 représente un système de transmission de données 100 comprenant un émetteur 102 et un récepteur 104. L'émetteur 102 comprend une source de données 106 qui est par exemple une mémoire ou dispositif d'entrée pour recevoir des 30 données à émettre par le système d'émission. Un codeur de données 108 comprime les données en provenance de la source de données 106 pour augmenter le débit de données, par exemple selon la norme MPEG ou H264. Les données codées sont alors fournies à un codeur de canal 110 qui réalise un codage LDPC sur 35 les données comprimées et produit des symboles de données en B9284 - 07-GR1-123 7 fonction d'une matrice de vérification de parité H. Un bloc de modulation 112 module alors les symboles de données en provenance du codeur LDPC de sorte qu'elles sont adaptées à être émises sur un canal d'émission 114. Le canal d'émission 114 est par exemple un canal sans fils tel qu'un canal de diffusion par satellite, un canal WLAN (réseau local sans fil), un canal de télévision numérique terrestre ou un canal de réseau mobile. A titre de variante, le canal peut être câblé, par exemple un câble ou une interface ADSL (ligne d'abonné numérique asymétrique). Quel que soit le type de canal, du bruit NS est introduit sur le signal de données modulées. Le récepteur 104 comprend un bloc démodulateur 116 qui reçoit le signal du canal 114 et démodule le signal pour déter- miner des valeurs de logarithme de rapport de vraisemblance (LLR) correspondant aux symboles de données reçues. Les valeurs LLR sont fournies à un décodeur de canal 118 qui réalise un décodage LDPC pour récupérer les données comprimées initiale-ment. Les données comprimées sont alors ou bien mémorisées ou bien traitées par un décodeur de données 120 pour récupérer les données initiales, qui peuvent être fournies à un circuit de sortie 122 qui est par exemple une mémoire, un affichage ou autre dispositif de sortie. Le récepteur 104 est par exemple un décodeur apte à recevoir un signal par voie câblée, terrestre ou satellite. La figure 2 représente un exemple du décodeur de canal 118 de la figure 1. Le décodeur de canal 118 comprend des lignes d'entrée 202 pour recevoir des logarithmes de rapports de vraisemblance (LLR) correspondant aux symboles reçus. Pour un signal reçu y correspondant à un bit de données émis d avec addition de bruit, le LLR du bit d par rapport au signal y est défini par exemple comme suit : LLR (y) =LLR (dly) =ln (P (d=OIy) /P (d=1ly) où P(d=xly) est la probabilité pour qu'un bit émis d soit égal à 35 x pour une valeur donnée de y. B9284 - 07-GR1-123 8 Les valeurs LLR sont par exemple reçues par blocs de R valeurs, R correspondant à la largeur des lignes de la matrice de vérification de parité H. Chaque valeur LLR est par exemple une valeur binaire signée à 6 bits comprise entre -31 et +31, bien que d'autres formats soient possibles. Une mémoire de canal 204 reçoit les valeurs LLR et les mémorise sous forme de V vecteurs de P valeurs. V est par exemple compris entre 2 et plusieurs centaines et P est par exemple compris entre 1 et plusieurs centaines et correspond au parallélisme du décodeur. Dans un exemple conforme à la norme 802.11n, V est égal à 24, et P est égal à 27, 54 ou 81 suivant le mode utilisé. Chacun des vecteurs V forme une valeur de canal Ci initialement mémorisée dans la mémoire qui est ensuite mise à jour par itérations successives. Les lignes de sortie 206 de la mémoire de canal 204 sont couplées à un bloc soustracteur 208, comprenant par exemple P soustracteurs en parallèle qui soustraient des valeurs de canal Ci une valeur de métrique correspondante Eij reçue sur des lignes 210 à partir d'une mémoire de métriques 212. Le bloc soustracteur 208 fournit sur des lignes 214 la valeur résultante Di j, qui est utilisée comme opérande pour mettre à jour les valeurs de métriques et de canal. Les lignes 214 sont couplées à un bloc de traitement 216 comprenant P processeurs PROC1 à PROCP couplés en parallèle. Le bloc de traitement 216 produit des valeurs de métriques modifiées qui sont fournies sur des lignes 218. Les valeurs de métriques modifiées Eij' sont fournies à la mémoire de métriques 212 et à un bloc additionneur 220 qui comprend par exemple P additionneurs en parallèle. Le bloc additionneur 220 reçoit également l'opérande de sortie Dij du bloc soustracteur 208 sur des lignes 222 et ajoute cette valeur à la sortie du processeur 218 pour fournir sur des lignes 224 une sortie constituant une valeur de canal modifiée Ci'. Les lignes 224 sont couplées à un registre à décalage en anneau 226 (en anglais "barrel shifter") qui place la valeur B9284 - 07-GR1-123 9 de canal modifiée dans un ordre approprié pour la mémoriser à nouveau dans la mémoire de canal 204. Un étage pipeline 230 est par exemple prévu entre le registre à décalage en anneau 226 et la mémoire de canal 204 et synchronise la sortie de la valeur de canal modifiée lors d'un cycle suivant. Une fois que N itérations ont été réalisées, chaque itération correspondant à un unique traitement de chaque couche, les signes des valeurs de canal modifiées représentant les décisions dures, qui sont fournis à une mémoire de décision dure 232 à partir de laquelle ils peuvent être fournis sur les lignes 234 en tant que valeurs de données de sortie. Les valeurs de canal sont par exemple des valeurs signées, et les décisions dures sont par exemple déterminées par le signe de chaque valeur de canal, un signe positif correspondant à un bit "0", et un signe négatif correspondant à un bit "1". Un bloc de commande 236 est par exemple prévu pour commander les blocs mémoire 204, 212 et 232, ainsi que les processeurs 216 pour réaliser les opérations désirées. Le fonctionnement du décodeur de la figure 2 va main- tenant être décrit en fonction des valeurs de canal et d'une matrice de vérification de parité représentée en figure 3. La figure 3 représente un bloc 300 de valeurs de canal Cl à C8 et d'une matrice de vérification de parité correspondante H 302. Comme cela a été décrit ci-dessus, chaque valeur de canal Ci est un vecteur comprenant P valeurs qui sont initialement fixées en tant que valeurs LLR reçues. La matrice de vérification de parité 302 comprend V colonnes et N rangées de sous-matrices. Dans l'exemple de la figure 3, V est égal à 8 bien que d'autres valeurs soient possibles. Chaque sous-matrice est par exemple à p par P bits. Bien que certaines matrices de vérification de parité puissent être complètement aléatoires, de préférence, pour permettre un certain parallélisme quand elles sont traitées, on utilise une matrice pseudo-aléatoire. Certaines des sous-matrices sont nulles, comme cela est indiqué par des "0" en figure 3, ce qui implique qu'elles contiennent B9284 - 07-GR1-123 10 seulement des zéros. Des sous-matrices non nulles, appelées Eij dans la matrice 302, sont disposées de façon aléatoire dans la matrice H et chacune comprend par exemple la matrice identité, avec des "1" en diagonale décalés vers la droite d'une valeur aléatoire x de sorte qu'il y a un seul bit "1" dans chaque colonne de chaque sous matrice non nulle. Pour réaliser un décodage LDPC par couches sur la base de la matrice de vérification de parité 302, chaque rangée de sous-matrices forme une couche et les couches sont traitées l'une après l'autre en commençant par la première. On calcule d'abord, une nouvelle valeur de métrique correspondant à chaque sous-matrice non nulle dans la couche. Par souci de simplicité, ces valeurs de métriques seront désignées par la même référence que les sous-matrices non nulles auxquelles elles correspondent. Ainsi, pour la première couche de matrice 302, de nouvelles valeurs E11', E13', E14', E16' et E17' seront calculées. Les nouvelles valeurs de métriques sont déterminées pour j égal à chaque valeur de l'ensemble Wi tel que : Eij'=g(Ck-Eik), kj (1) où Ck sont des valeurs de canal, g() est une fonction, k est un élément de l'ensemble Wi, et l'ensemble Wi correspond à l'ensemble des indices des sous-matrices non nulles dans la couche. Ainsi, pour la nouvelle valeur de métrique E11' dans la première couche de la matrice 302, Wi est égal à 1, 3, 4, 6 et 7. Pour un ensemble donné de valeurs d'un canal Ci, initialement, toutes les valeurs de métriques Eij sont mises à zéro. La fonction g ( ) selon un mode de réalisation simple peut être la fonction minimum min(). Cependant, comme cela apparaîtra à l'homme de l'art, de nombreuses fonctions alternatives peuvent être utilisées. En utilisant les nouvelles valeurs de métriques Eij' chacune des valeurs de canal correspondant aux sous-matrices non nulles est alors mise à jour en se basant sur l'équation suivante, pour j égal à chaque valeur de l'ensemble Wi : Cj'=Cj-Eij+Eij' (2) B9284 - 07-GR1-123 11 Ainsi, quand on agit sur la matrice de vérification de parité 302, le circuit de la figure 2 détermine initialement des valeurs de métriques mises à jour Eij' pour la première couche, en récupérant chacune des valeurs de canal correspondante Ci à partir de la mémoire de canal 204 et les anciennes valeurs de métriques correspondante Eij à partir de la mémoire de métriques 212. Le chargement de ces valeurs nécessite par exemple un cycle d'horloge par valeur de canal et il faut donc 5 cycles pour charger les valeurs de la première couche. Les nouvelles valeurs de métriques sont alors fournies tour à tour pendant les cinq cycles suivants et, en même temps, les valeurs de canal et les valeurs de métriques correspondantes sont à nouveau lues dans la mémoire de canal 204 et la mémoire de métriques 212 et fournies par l'intermédiaire du chemin 222 de sorte qu'elles peuvent être ajoutées par l'additionneur 220 pour produire les nouvelles valeurs de canal. De façon générale, en supposant qu'il y a M sous-matrices non nulles dans une couche, le circuit de la figure 2 utilise 2M cycles avant que la couche suivante puisse être traitée, ce qui conduit à un débit relativement lent. Une option pour augmenter le débit du circuit de la figure 2 serait d'ajouter une mémoire aux lignes 222, de sorte que les valeurs d'opérandes Ck-Eik utilisées pour déterminer les nouvelles valeurs de métriques selon la formule (1) ci-dessus peuvent être utilisées à nouveau pour déterminer les valeurs de canal mises à jour correspondantes selon la formule (2) ci-dessus, sans accès supplémentaire en mémoire. Toutefois, une telle mémoire devrait être très grande. En fait, pour certaines matrices de vérification de parité dans lesquelles le nombre de sous-matrices non nulles est élevé, la mémoire devrait être sensiblement aussi grande que la mémoire de canal. En outre, s'il y a des valeurs de canal communes utilisées dans une couche et la suivante, par exemple les valeurs de canal C3, C6 et C7 utilisées par les première et deuxième couches dans la matrice 302 de la figure 3, ces valeurs de canal ne peuvent pas être récupérées dans la mémoire de canal 204 tant qu'elles n'ont pas B9284 - 07-GR1-123 12 été mises à jour et donc des cycles sont perdus, ce qui réduit encore le débit global. Une solution à ce problème serait d'éviter la réutilisation des mêmes valeurs de canal dans des couches successives, en réordonnant les données. Toutefois, ceci n'est pas possible si la matrice utilisée contient un nombre élevé de sous-matrices non-nulles par couche. La figure 4 représente un circuit décodeur 118 selon une variante de réalisation. Des éléments communs avec ceux du circuit de la figure 2 sont désignés par les mêmes références et ne sont pas décrits à nouveau en détail. Dans ce mode de réalisation, la sortie de la mémoire de canal sur les lignes 206 est fournie à l'entrée d'un multiplexeur 402 qui a une seconde entrée couplée par des lignes 404 à la sortie du registre à décalage en anneau sur la ligne 228. La sortie du multiplexeur 402 est fournie sur des lignes 406 au bloc soustracteur 208. La sortie de la mémoire de canal sur la ligne 206 est également fournie à un bloc soustracteur 410 qui comprend par exemple P soustracteurs en parallèle. Le bloc soustracteur 410 est égale-ment couplé pour recevoir des valeurs de métriques de la mémoire de métriques 212 sur des lignes 412, qui sont couplées à la sortie 210 de la mémoire de métriques 212 par l'intermédiaire d'un tampon 413 qui, par exemple, introduit un retard à la sortie de la mémoire de métriques d'un certain nombre de cycles de sorte que des valeurs lues dans la mémoire peuvent être utilisés pour mettre à jour les valeurs de canal dans la couche suivante. En d'autres termes, les lignes 210 fournissent des valeurs de métrique Eij de la couche en cours, en même temps que les lignes 412 fournissent des valeurs de métrique Eij de la couche précédente. Le bloc soustracteur 410 fournit le résultat de la soustraction sur des lignes de sortie 414. Un tampon 418 est couplé par des lignes 222 à la sortie du soustracteur 208 pour mémoriser certains des opérandes sélectionnés Di j, produits par le bloc soustracteur 208. Un multiplexeur 416 a une entrée couplée à la sortie du tampon par des lignes 420 et une autre entrée couplée à la sortie du bloc B9284 - 07-GR1-123 13 soustracteur 410 par les lignes 414. La sortie du multiplexeur 416 sur des lignes 422 est couplée au bloc additionneur 220 qui ajoute la valeur de métrique mise à jour en provenance du bloc de traitement 216 à ou bien un opérande en provenance du tampon 418 ou bien un opérande en provenance du bloc soustracteur 410 selon la sélection du multiplexeur 416. Le résultat de cette addition est fourni sur des lignes 224 au registre à décalage en anneau 226. Un bloc de commande 424 fournit des signaux de commande sur des lignes de sortie 426 pour commander la mémoire de canal 204, la mémoire de métriques 212, la mémoire de décision dure 232, le tampon 418, les multiplexeurs 402 et 416 et le bloc de traitement 216. Le tampon 418 est par exemple un tampon FIFO (premier- entré-premier-sorti), bien que d'autres types de mémoire soient possibles. Il est de relativement petite taille, mémorisant par exemple moins de 10 opérandes, de préférence entre 3 et 6, cette taille étant déterminée indépendamment du nombre de sous-matrices non-nulles dans chaque couche, mais sur la base du nombre de sous-matrices non-nulles non-utilisées d'une couche à la suivante. Les lignes interconnectant les divers éléments de la figure 4 sont par exemple des voies de données en parallèle. Les valeurs de canal comprennent par exemple 81 valeurs, chacune représentée par 8 bits, et ainsi les lignes 206, 408, 214, 222, 224, 228 et 404 permettent par exemple à 81x8=648 bits d'être transmis en parallèle. Les valeurs de métriques comprennent par exemple 81 valeurs, chacune représentée par 6 bits, et ainsi les lignes 210 et 218 permettent par exemple à 81x6=486 bits d'être transmis en parallèle. Un exemple de fonctionnement du circuit de la figure 4 pour traiter des valeurs sur la base de la matrice de vérification de parité 302 de la figure 3 va maintenant être décrit en faisant référence au chronogramme de la figure 5. B9284 - 07-GR1-123 14 La figure 5 représente dans des lignes respectives l'opérande de sortie du bloc soustracteur 208 (SUBI), les valeurs de métriques de sortie du bloc de traitement 216 (PROC OUT), l'opérande de sortie du tampon 418 (FROM BUFFER), l'opérande de sortie du bloc soustracteur 410 (SUB2) et la valeur du canal de sortie de l'étage en pipeline 230 sur les lignes 228 (BS OUT). Lors des cinq premiers cycles, les valeurs de canal Cl, C3, C4, C6 et C7 correspondant aux sous-matrices non nulles de la première couche de la matrice 302 sont récupérées successivement à partir de la mémoire de canal 204 et des valeurs de métriques correspondantes en provenance de la mémoire de métriques 212 en sont soustraites. La sortie du bloc soustracteur 208 lors de cycles successifs est donc C1-E11, C3- E13, C4-E14, C6-E16 et C7-E17. Les valeurs de C1-E11 et C4-E14 sont mémorisées dans le tampon 418 dans cet exemple. Ces valeurs sont chargées dans le bloc de traitement 216, et lors du cycle 6, le bloc de traitement 216 fournit la première valeur de métrique mise à jour E11'. Cette valeur est ajoutée à la valeur C1-E11 en provenance du tampon 418, et le résultat est la valeur de canal mise à jour Cl', qui est fournie à la sortie de l'étage en pipeline 230 lors du cycle suivant. Les valeurs de canal C2 et C8 utilisées dans la seconde couche L2 de la matrice de vérification de parité 302 ne sont pas mises à jour pendant le traitement de la première couche L1 et donc celles-ci peuvent être récupérées à partir de la mémoire lors des cycles 6 et 7, respectivement, avant que les autres valeurs de canal aient été mises à jour. La valeur de canal C3 est toutefois réutilisée dans la couche L2. La valeur de canal modifiée C3' est fournie à partir de l'étage en pipeline 228 lors du cycle 9. Le multiplexeur 406 est commandé pour sélectionner l'entrée correspondant aux lignes 404 dans ce cycle, de sorte que cette valeur C3' est immédiatement fournie au bloc soustracteur 208 et donc un seul cycle est perdu. Egalement, lors du cycle 9, la mémoire de canal 204 fournit la B9284 - 07-GR1-123 15 valeur de canal C6 au bloc soustracteur 410, de sorte que cette valeur de canal peut être mise à jour. Dans l'exemple de la figure 5, le tampon 418 est par exemple commandé pour mémoriser tous les opérandes Dij fournis par le soustracteur 208 et correspondant aux valeurs de canal qui ne sont pas réutilisées dans la couche suivante. Le chronogramme de la figure 6 est similaire à celui de la figure 5 mais illustre un mode de fonctionnement différent dans lequel le cycle perdu 8 de la figure 5, dans lequel aucune lecture en provenance de la mémoire de canal 204 ne survient, peut être évité. Dans cet exemple, quand une ou plusieurs valeurs de canal sont nécessaires dans des couches successives, plutôt que de mémoriser le dernier opérande correspondant à une valeur de canal non utilisée dans la couche suivante, on mémorise à la place une valeur qui est réutilisée. Ainsi, dans l'exemple de la couche 15, l'opérande C3-E13 est mémorisé dans le tampon 418 plutôt que l'opérande C4-E14. Alors, lors du cycle 7, cette valeur peut être utilisée avec la valeur de métrique E13' pour produire la valeur de canal mise à jour C3', un cycle plus tôt que dans l'exemple de la figure 5, évitant ainsi le cycle perdu dans la mémoire de canal 204. La figure 7 représente un autre mode de réalisation du décodeur 118, qui est similaire à celui de la figure 4, et les éléments identiques à ceux de la figure 4 sont désignés par les mêmes références, et ne seront pas décrits à nouveau en détail. Le décodeur LDPC 118 de la figure 7 ne comprend pas le trajet de dérivation 404, mais, à la place, la mémoire de canal 204 est une mémoire à multiple accès, permettant la lecture de deux valeurs de canal en un seul cycle. Optionnellement, la mémoire de métriques 212 est aussi un mémoire à double accès. Par exemple, les mémoires 204 et 212 sont des mémoires RAM à triple accès, un accès pour l'écriture et deux accès pour la lecture. La sortie de la mémoire de canal 204 sur les lignes 206 est couplée au bloc soustracteur 208. Une autre sortie de la mémoire 204 sur des lignes 702 est couplée au bloc soustracteur 410. De B9284 - 07-GR1-123 16 façon similaire, la sortie de la mémoire 212 sur les lignes 210 est couplée au bloc soustracteur 208, et une autre sortie de la mémoire 212 sur les lignes 412 est couplée au bloc soustracteur 410. Le fonctionnement du circuit de la figure 7 est similaire à celui du circuit de la figure 4, sauf qu'il existe plus de liberté dans les accès mémoire qui peuvent être implémentés dans les mémoires 204 et 212. Il peut bien sûr exister un retard d'un ou deux cycles entre l'écriture d'une valeur de canal modifiée dans la mémoire de canal 204, et la lecture de cette valeur modifiée dans la mémoire de canal 204. La figure 8 est un organigramme illustrant des étapes d'un procédé de réalisation d'un décodage LDPC pour un bloc de valeurs LLR. Dans une première étape S0, les valeurs de canal Ci sont initialisées aux valeurs de LLR, les valeurs de métrique sont initialisées à 0, et une valeur de comptage d'itération "i" est initialisé à 1. A l'étape suivante S1, une valeur de comptage de 20 couche "L" est initialisée à 1. Les étapes suivantes sont S2A et S2B. A l'étape S2A, les valeurs de canal et de métriques Ci et Eij qui ne sont pas communes à la couche précédente L-1 sont lues et chargées en mémoire. Dans la première couche, il n'y a 25 pas de couche précédente et donc les valeurs de canal et de métriques sont par exemple chargées dans l'ordre où elles arrivent. En même temps, des valeurs de métriques mises à jour sont fournies par le bloc de traitement 216 et des valeurs de canal mises à jour sont déterminées à partir des opérandes du 30 tampon 418. Après l'étape S2A, à l'étape S3, les valeurs de canal et de métriques Ci et Eij qui sont communes à la couche précédente L-1 sont chargées, par exemple directement à partir de l'étage pipeline 230. En même temps, les valeurs de métriques 35 sont fournies par le bloc de traitement 216 et les opérandes B9284 - 07-GR1-123 17 correspondant sont fournis par le soustracteur 410 à l'additionneur 220 pour fournir les valeurs de canal correspondantes mises à jour. A l'étape S4 suivante, toutes les valeurs de canal et de métriques restantes pour la couche L sont chargées dans le bloc de traitement 216. En même temps, les valeurs de métriques mises à jour restantes continuent à être fournies par le bloc de traitement 216 et les valeurs de canal correspondantes sont mises à jour. De façon parallèle aux étapes S2A, S3 et S4, l'étape S2B est mise en oeuvre au cours de laquelle les opérandes en provenance du bloc soustracteur 208 qui ne seront pas réutilisés dans la couche suivante L+1 sont mémorisés dans le tampon 418. Toutefois, s'il y a des valeurs de canal réutilisées dans la couche L+1, la dernière valeur devrait normalement être mémorisée et de préférence remplacée par la valeur réutilisée non chargée suivante. A l'étape S5 suivante, on détermine si L=N, N étant le nombre total de couches dans la matrice de vérification de parité. Sinon, l'étape suivante est l'étape S6 au cours de laquelle l'entier L est incrémenté et ensuite le processus revient aux étapes S2A et S2B. Si L est égal à N, l'étape suivante est l'étape S7. A l'étape S7, on détermine si i=Q, Q étant le nombre d'itérations à implémenter avant de fournir les décisions dures. La valeur de Q dépend par exemple de la quantité de bruit dans le canal et/ou des besoins du système. Par exemple, Q peut être compris entre 1 et plusieurs dizaines. Si à l'étape S7 i n'est pas égal à Q, l'étape suivante est S8, et la valeur de i est incrémentée, puis le processus revient à l'étape S1. Si i est égal à Q, l'étape suivante est S9, et les décisions dures basées sur les valeurs de canal modifiées sont mémorisées dans la mémoire de décision dure 232, prêtes à être fournies. B9284 - 07-GR1-123 18 La figure 9 représente plus en détail un mode de réalisation du tampon 418 dans lequel le tampon est une mémoire FIFO comprenant des éléments de retard 902, 904, 906, 908 et 910 couplés en série entre les lignes d'entrée 222 et une entrée d'un multiplexeur 912. En même temps que la sortie de l'élément de retard 910, les sorties des éléments de retard 906 et 908 et l'entrée 222 sont par exemple également fournies en tant qu'entrées séparées au multiplexeur 912. Le multiplexeur 912 comprend une entrée de commande pour recevoir les signaux de commande sur les lignes 426 en provenance du bloc de commande 424. Chacun des éléments de retard retarde par exemple l'opérande d'un cycle, et un signal de validation est par exemple également fourni sur les lignes de commande 426 vers chacun des éléments de retard 902 à 910 leur permettant d'être activés ou désactivés individuellement. Quand un élément de retard est activé, l'opérande contenu dans cet élément de retard est fourni après un retard d'un cycle. Quand un élément de retard est désactivé, l'opérande contenu dans cet élément de retard est mémorisé jusqu'à une prochaine activation.. La structure du FIFO 418 permet de mémoriser un total de 5 opérandes, chacun avec un retard variable ou sans retard, et avec un certain réglage dans l'ordre des opérandes. Il sera clair pour l'homme de l'art que le nombre d'éléments de retard et la quantité dont le nombre de cycles de retard peut être réglée peuvent être choisis en fonction des applications, par exemple en fonction des caractéristiques de la matrice de vérification de parité. Un avantage du décodeur LDPC des figures 4 et 7 est que, étant donné qu'il y a deux trajets de fourniture d'opé- randes qui peuvent fournir des opérandes à l'additionneur 220, le tampon 418 peut avoir une petite dimension. Un trajet de fourniture comprend le bloc soustracteur 208 et le tampon 418, et l'autre trajet de fourniture comprend le bloc soustracteur 410. En outre, les performances sont très améliorées, étant donné que, quand de nouvelles valeurs pour les couches suivantes B9284 - 07-GR1-123 19 sont chargées et mémorisées dans le bloc de traitement 216 et le tampon 418, des opérandes pour mettre à jour les valeurs de canal de la présente couche peuvent être fournies par le bloc soustracteur 410. En outre, en prévoyant un trajet de dérivation 404 pour les valeurs de canal déterminées dans une couche précédente, non seulement la valeur mise à jour est disponible par exemple deux cycles plus tôt que si elle était d'abord mémorisée dans la mémoire de canal 204 mais en outre un accès à la mémoire de canal 204, n'est pas requis lors de ce cycle, ce qui laisse la mémoire de canal 204 libre de fournir une valeur au bloc soustracteur 410. On a décrit un exemple de réalisation de la présente invention. Toutefois diverses variantes et modifications et 15 améliorations apparaîtront à l'homme de l'art. Par exemple, il sera clair pour l'homme de l'art que le circuit de la figure 4 ne constitue qu'un exemple et que des modifications peuvent être apportées. Par exemple, alors que le registre à décalage en anneau 226 est disposé à la sortie de 20 l'additionneur 220, il pourrait être disposé ailleurs, par exemple à la sortie de la mémoire de canal 204. En outre, bien que le tampon 418 mémorise l'opérande résultant de la soustraction d'une valeur de métrique et d'une valeur de canal, à titre de variante, il pourrait mémoriser des paires d'opérandes et un 25 autre bloc soustracteur pourrait être prévu pour réaliser la soustraction après le tampon 418. En outre, l'étage pipeline 230 pourrait être positionné ailleurs, par exemple à l'entrée du registre à décalage en anneau 226, et un ou plusieurs étages pipeline additionnels pourraient être utilisés. 30 En outre, il sera clair pour l'homme de l'art que divers algorithmes de mise à jour des valeurs de métriques tels que mis en oeuvre par le bloc de traitement 216 pourraient être utilisés tout en conservant les mêmes avantages. REVENDICATIONS1. Décodeur à vérification de parité à faible densité, LDPC, pour réaliser un décodage LDPC à partir d'un algorithme par couches appliqué à une matrice de vérification de parité, le décodeur comprenant : une mémoire de canal (204) agencée pour mémoriser des valeurs de canal (Ci) correspondant initialement à des logarithmes de rapports de vraisemblance de symboles reçus par un canal de transmission ; une mémoire de métriques (212) agencée pour mémoriser 10 des valeurs de métriques (Eij) ; des premier et second trajets de fourniture d'opérandes (404, 206, 406, 210, 208, 214, 408, 410, 412, 414) dont chacun est agencé pour fournir des opérandes (Dij) en fonction des valeurs de canal et des valeurs de métriques ; 15 un bloc de traitement (216) comprenant une pluralité de modules de traitement en parallèle et agencé pour recevoir des opérandes (Ci-Eij) à partir du premier trajet de fourniture et pour déterminer des valeurs de métriques mises à jour (Eij') en fonction desdits opérandes ; 20 un tampon (418) agencé pour mémoriser au moins un des opérandes en provenance du premier trajet de fourniture ; et un additionneur (220) couplé à une sortie du bloc de traitement et agencé pour produire des valeurs de canal mises à jour en ajoutant les valeurs de métriques mises à jour à des 25 opérandes en provenance de l'un sélectionné du tampon et du second trajet de fourniture. 2. Décodeur LDPC selon la revendication 1, dans lequel le premier trajet de fourniture comprend un premier bloc soustracteur (208) ayant une première entrée couplée à l'une 30 sélectionnée de la mémoire de canal et de la sortie de l'additionneur et une seconde entrée couplée à une première sortie de la mémoire de métrique. 3. Décodeur LDPC selon la revendication 2, dans lequel le premier trajet de fourniture comprend un premier multiplexeurB9284 - 07-GR1-123 21 (402) ayant une première entrée couplée à une sortie de la mémoire de canal et une seconde entrée couplée à la sortie d'un étage pipeline (230) couplée à la sortie de l'additionneur (220), et une sortie couplée à l'entrée du premier bloc sous- tracteur. 4. Décodeur LDPC selon l'une quelconque des revendications 1 à 3, dans lequel le second trajet de fourniture comprend un second bloc soustracteur (410) ayant une première entrée couplée pour recevoir une sortie de la mémoire de canal et une seconde entrée couplée à une seconde sortie de la mémoire de métriques. 5. Décodeur LDPC selon la revendication 4 prise dans sa dépendance de la revendication 2 ou 3, dans lequel les premier et second soustracteurs ont leurs premières entrées couplées à la même sortie de la mémoire de canal. 6. Décodeur LDPC selon l'une quelconque des revendications 1 à 5, comprenant un second multiplexeur (416) ayant une première entrée couplée au premier trajet de fourniture et une seconde entrée couplée à la sortie du tampon (418), et une sortie couplée à une entrée de l'additionneur. 7. Décodeur LDPC selon l'une quelconque des revendications 1 à 6, comprenant un bloc de commande (424) agencé pour commander le tampon pour mémoriser sélectivement certains des opérandes en provenance du premier trajet de fourniture. 8. Décodeur LDPC selon la revendication 7, dans lequel les opérandes sélectionnés comprennent des opérandes correspondant à des valeurs de canal à mettre à jour en relation avec une couche courante (L) et non pas en relation avec une couche suivante (L+1) de la matrice de vérification de parité. 9. Décodeur LDPC selon la revendication 7 ou 8, dans lequel les opérandes sélectionnés comprennent au moins un opérande correspondant à une valeur de canal à mettre à jour en relation avec une couche courante (L) et également à mettre à jour en relation avec une couche suivante (L+1) de la matrice de vérification de parité.B9284 - 07-GR1-123 22 10. Décodeur LDPC selon l'une quelconque des revendications 1 à 9, dans lequel le tampon a une dimension qui correspond à pas plus de dix des opérandes. 11. Décodeur LDPC selon l'une quelconque des revendica- tions 1 à 10, dans lequel le tampon est un tampon de type premier entré-premier sorti (FIFO) (418) comprenant une pluralité d'éléments de retard (806-810) couplés en série et un moyen de sélection (812) permettant à une sortie de l'un sélectionné des éléments de retard d'être fournie à partir du tampon. 12. Décodeur LDPC selon l'une quelconque des revendications 1 à 11, comprenant en outre un registre à décalage en anneau (226) couplé à la sortie du bloc de traitement (216). 13. Dispositif électronique comprenant un circuit de réception (116) pour fournir des valeurs de logarithmes de rap- ports de vraisemblance (LLR) concernant des symboles de données reçus à partir d'un canal de transmission, et le décodeur LDPC selon l'une quelconque des revendications précédentes agencé pour mémoriser des valeurs LLR dans la mémoire de canal. 14. Procédé de réalisation d'un décodage à vérification de parité à faible densité LDPC à partir d'un algorithme par couches appliqué à une matrice de vérification de parité, le procédé comprenant : mémoriser dans une mémoire de canal des valeurs de canal (Ci) correspondant initialement à des logarithmes de rapports de vraisemblance de symboles reçus par un canal de transmission ; mémoriser dans une mémoire de métriques (212) des valeurs de métriques (Eij) ; fournir des opérandes (Dij) en fonction des valeurs de 30 canal et des valeurs de métriques par un premier trajet de fourniture à : un bloc de traitement (216) comprenant une pluralité de modules de traitement en parallèle et agencé pour déterminer des valeurs de métriques mises à jour (Eij ') en fonction desdits 35 opérandes, etB9284 - 07-GR1-123 23 un tampon (418) agencé pour mémoriser au moins un des opérandes ; et produire des valeurs de canal mises à jour en ajoutant les valeurs de métriques mises à jour à des opérandes en prove- nance de l'un sélectionné du tampon et d'un second trajet de fourniture. 15. Procédé selon la revendication 14, comprenant la commande du tampon pour mémoriser certains sélectionnés des opérandes correspondant à des valeurs de canal à mettre à jour en relation avec une couche courante (L) et pas en relation avec une couche suivante (L+1) de la matrice de vérification de parité.