FR2900294A1 - Chargement de la memoire d'entree d'un decodeur ldpc avec des donnees a decoder - Google Patents

Chargement de la memoire d'entree d'un decodeur ldpc avec des donnees a decoder Download PDF

Info

Publication number
FR2900294A1
FR2900294A1 FR0603456A FR0603456A FR2900294A1 FR 2900294 A1 FR2900294 A1 FR 2900294A1 FR 0603456 A FR0603456 A FR 0603456A FR 0603456 A FR0603456 A FR 0603456A FR 2900294 A1 FR2900294 A1 FR 2900294A1
Authority
FR
France
Prior art keywords
llrs
memory
type
binary words
fifo
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR0603456A
Other languages
English (en)
Other versions
FR2900294B1 (fr
Inventor
Laurent Paumier
Pascal Urard
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics SA
Original Assignee
STMicroelectronics SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics SA filed Critical STMicroelectronics SA
Priority to FR0603456A priority Critical patent/FR2900294B1/fr
Priority to US11/737,442 priority patent/US7966544B2/en
Publication of FR2900294A1 publication Critical patent/FR2900294A1/fr
Application granted granted Critical
Publication of FR2900294B1 publication Critical patent/FR2900294B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • H03M13/1165QC-LDPC codes as defined for the digital video broadcasting [DVB] specifications, e.g. DVB-Satellite [DVB-S2]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1134Full parallel processing, i.e. all bit nodes or check nodes are processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2757Interleaver with an interleaving rule not provided for in the subgroups H03M13/2703 - H03M13/2753
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2792Interleaver wherein interleaving is performed jointly with another technique such as puncturing, multiplexing or routing

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Error Detection And Correction (AREA)

Abstract

Une mémoire d'entrée d'un décodeur LDPC est chargée avec des données correspondant à une trame LDPC à décoder et comprenant N de LLRs, dont K de LLRs d'information et N-K de LLRs de parité. On forme au moins un flux de mots binaires d'un premier type, correspondant chacun à une pluralité de LLRs d'information, à l'aide d'un module de conversion série/parallèle, ainsi qu'au moins un flux de mots binaires d'un second type, correspondant chacun à une pluralité de LLRs de parité, à l'aide d'un dispositif d'entrelacement lignes-colonnes comprenant une mémoire tampon de type "premier entré premier sorti", ou FIFO, à deux dimensions bouclée. Par ailleurs, on effectue des premiers accès mémoire en mode page pour écrire les mots binaires du premier type dans une première zone de la mémoire d'entrée, et on effectue des seconds accès mémoire en mode page pour écrire les mots binaires du second type dans une seconde zone de la mémoire d'entrée.

Description

CHARGEMENT DE LA MÉMOIRE D'ENTRÉE D'UN DÉCODEUR LDPC AVEC DES DONNÉES À
DÉCODER La présente invention se rapporte de manière générale au décodage d'informations codées selon un code à contrôle de parité à faible densité ou code LDPC ("Low Density Parity Check"), et concerne plus particulièrement le chargement de la mémoire d'entrée d'un décodeur LDPC avec des données à décoder. Elle trouve des applications, en particulier, dans les appareils de réception de signaux transmis par satellite, par exemple suivant la norme de télédiffusion numérique par satellite DVB-S2, laquelle prescrit l'utilisation d'un code LDPC pour la protection de la transmission des données descendantes.
Les codes LDPC sont une classe de codes correcteurs d'erreurs inventée en 1960 par Robert Gallager du MIT ("Massachussets Institute of Technology"), qui constitue une alternative aux codes de Viterbi, ainsi qu'aux turbocodes plus récents. Les codes LDPC sont des codes par blocs qui permettent de s'approcher de la limite de Shannon. La première norme commerciale prescrivant l'utilisation d'un code LDPC est la norme DVB-S2, à savoir la norme de deuxième génération pour la télédiffusion numérique par satellite, de l'ETSI ("European Telecommunication Standardization Institute"). Le codage LDPC y est prévu en tant que codage de canal, pour protéger les informations descendantes contre le bruit affectant le canal de transmission.
En référence à la figure 1, une chaîne de transmission générique contient, du côté de l'émetteur 10, une source de données 11 (notée DAT_SRC à la figure), suivie d'un encodeur de source 12 (noté SCR_ENC à la figure), d'un encodeur de canal 13 (noté CH_ENC à la figure), et enfin d'un modulateur 14 (noté MOD à la figure). L'encodeur de source 12 compresse les données (par exemple selon l'une des normes MPEG, H264, ...) de manière à réduire le débit des données à transmettre. L'encodeur de canal ajoute de la redondance (par exemple en utilisant un code LDPC) pour permettre, du côté du récepteur 30, de corriger les erreurs potentielles dues au bruit No introduit sur le canal de transmission 20. Le modulateur 14 adapte le signal au canal de transmission (par exemple, canal de transmission par satellite, canal de transmission radio, ...). Du côté du récepteur 30, un démodulateur 34 (noté DEMOD à la figure), suivi d'un décodeur de canal 33 (noté CH_DEC à la figure), et d'un décodeur de source 32 (noté SRC_DEC à la figure), effectuent les opérations duales de celles assurées par le modulateur 14, l'encodeur 13 et l'encodeur 12, respectivement. Les données démodulées et décodées sont ensuite restituées à l'entité utilisant les données 31 (notée DAT U à la figure).
Les codes LDPC sont des codes par blocs. Du côté de l'émetteur, l'encodeur LDPC traite des blocs de K bits d'information, et délivre en sortie des mots de code de N bits, aussi appelés trames LDPC, avec N>K. Dit autrement, il ajoute N-K bits de redondance qui permettent, côté récepteur, de corriger les erreurs de transmission. Ces N-K bits sont appelés bits de parité.
Le taux de codage est défini comme le rapport r=K/N. Plus r est petit, plus la redondance est élevée, et donc plus la protection contre le bruit du canal de transmission est élevée. Les N-K bits ajoutés à chaque bloc de K bits d'information sont calculés grâce à une matrice H, appelée matrice de contrôle de parité. Cette matrice H a N-K lignes et N colonnes. Elle contient des "0" et des "1", ces derniers en faible proportion, et c'est pourquoi les codes basés sur une telle matrice de parité sont appelés codes à contrôle de parité à faible densité. En référence à la figure 2, une trame LDPC de N bits, dont les K bits de poids faibles correspondent aux bits d'information et dont les N-K bits de poids fort correspondent aux bits de parité, est le mot de code C délivré par un encodeur LDPC qui satisfait la relation: HxCt =0 (1) On appelle degré de noeuds de parité ("check nocies" en anglais) d'une ligne de la matrice H le nombre de "1" de la ligne, et degré de noeuds de bits ("bit nodes" en anglais) d'une colonne de la matrice H le nombre de "1" de la colonne. II existe deux types de code LDPC, à savoir les codes réguliers et les codes irréguliers. La matrice H d'un code régulier a un nombre de "1" constant par ligne et par colonne, c'est-à-dire que les degrés de noeuds de parité et les degrés de noeuds de bits sont constants. A l'inverse, la matrice H d'un code irrégulier n'a pas de degrés de noeuds de parité et/ou de degrés de noeuds de bits constants, et a donc un caractère plus aléatoire. C'est pour des codes irréguliers qu'on obtient les meilleures performances, mais le décodage peut alors être plus difficile. La norme DVB-S2 préconise l'utilisation d'une matrice H qui a des degrés de noeuds de parité constants, entre 4 et 30 (si bien qu'on parle du degré de noeuds de parité de la matrice, par raccourci), et des degrés de noeuds de bits pouvant prendre trois valeurs, entre 2 et 13. Du côté du récepteur, le décodeur LDPC effectue la correction des bits erronés en utilisant les relations entre les bits des trames LDPC reçues à travers le canal de transmission, correspondant à un bloc de bits C'. Ces relations sont données par la matrice H de contrôle de parité, laquelle est également connue du décodeur. A cet effet, les erreurs dans le bloc de bits C' reçu sont corrigées selon un algorithme itératif afin que le bloc de bits C' corrigé satisfasse la relation: C'x Ht =0 (2) Plus particulièrement, le décodeur LDPC traite des rapports de vraisemblance, par exemple des rapports de vraisemblance logarithmique ou LLRs (de l'anglais "Log-Likelihood Ratio"). Du côté du récepteur, on a un LLR pour chacun des N bits d'une trame LDPC qui a été émise côté émetteur. Pour un bit d émis auquel correspond un signal x reçu par le décodeur LDPC après l'ajout d'un bruit au niveau du canal de transmission, le rapport LLR du bit d par rapport au signal x est défini par: LLR(x) = LLR(d/x)= In P(d = 0/x) P(d=1/x) où P(d = 0/x) est la probabilité que le bit d émis soit égal à 0 en fonction de la valeur x reçue, et P(d =1/x) est la probabilité que le bit d émis soit égal à 1 en fonction de la valeur x reçue. Chaque LLR est codé sur un nombre m de bits. Un LLR prend par exemple des valeurs négatives ou positives, qui sont d'autant plus grandes en valeur absolue que la probabilité que le bit reçu auquel il est associé soit égal, par exemple, à 0 ou à 1, respectivement. On distingue les LLRs d'information et les LLRs de parité, correspondant respectivement à des bits d'information et à des bits de parité de la trame LDPC. Le décodeur LDPC utilise des métriques internes, en nombre égal au 30 nombre de "1" dans la matrice H. Ces métriques sont codées chacune sur un nombre t de bits. Le décodeur les met à jour selon un algorithme itératif.
En référence à la figure 3, chaque itération comprend des étapes de mise à jour effectuées par lignes, consistant à déterminer pour chaque ligne des premières nouvelles valeurs des métriques internes de la ligne en fonction des autres métriques internes de la ligne (mise à jour des noeuds de parité û "check node update" en anglais), puis des étapes de mise à jour effectuées par colonnes, consistant à déterminer pour chaque colonne des secondes nouvelles valeurs des métriques internes de la colonne en fonction des autres métriques internes de la colonne et du LLR correspondant à cette colonne (mise à jour des noeuds de bits û "bit-node update" en anglais). Pour décoder une trame LDPC reçue, afin de récupérer un bloc de N informations émises, le décodeur effectue plusieurs itérations. Les bits décodés, appelés bits de décision ferme ("hard decision" en anglais), sont ensuite obtenus en additionnant les métriques internes par colonnes avec les LLRs du bloc C' reçu, et en prenant le signe du résultat.
Dans les équipements se conformant à la norme DVB-S2, la matrice H se décompose en une première sous matrice A qui peut être parallélisée par blocs de noeuds de bits, et d'une seconde sous matrice 13 qui est une matrice bi-diagonale. Cette forme de la matrice H implique une certaine façon de charger les données dans la mémoire d'entrée du décodeur LDPC.
Cette contrainte d'écriture est exposée ci-après en référence au schéma de la figure 4. Sur cette figure, on a représenté le plan mémoire d'un élément de mémorisation de la mémoire d'entrée du décodeur LDPC, dans lequel sont chargées des données qui sont reçues en entrée du décodeur et qui doivent être mémorisées en vue de leur décodage. On rappelle que ces données correspondent aux N LLRs respectivement associés aux N bits d'une trame LDPC reçue par l'équipement. En principe, un LLR est reçu à chaque cycle d'un signal d'horloge du décodeur. En notant P un indice de parallélisme du décodeur LDPC, c'est-à-dire le nombre de processeurs qui effectuent des opérations de décodage en parallèle les uns avec les autres, le plan mémoire a un nombre P x m de colonnes et un nombre P de lignes. Lors d'opérations de lecture en mode page, les colonnes peuvent être lues simultanément, en sorte de délivrer un jeu de P LLRs codés sur m bits chacun, correspondant donc à P x m bits. Les P lignes se décomposent en deux groupes : un nombre entier Wa de lignes, par exemple en partie haute du plan mémoire (au dessus du trait en pointillés), pour stocker les bits correspondant aux LLRs d'information, d'une part; et un nombre entier Wb de lignes, par exemple en partie basse du plan mémoire (au dessous du trait en pointillés), pour stocker les bits correspondant aux LLRs de parité, d'autre part. Les nombres Wa et Wb satisfont respectivement les relations Wa = P et Wb = N P K Dans l'exemple représenté, l'indice de parallélisme P est égal à 6.
Les P premiers mots de m bits qui sont reçus en entrée du décodeur, correspondant chacun à un LLR d'information, sont écrits côte à côte sur la première ligne du plan mémoire (par exemple celle située en haut de la partie haute 410a du plan mémoire), par exemple de la droite vers la gauche. Les P mots de m bits suivants, qui correspondent aussi chacun à un LLR d'information, sont écrits côte à côte sur la deuxième ligne, toujours de la droite vers la gauche. Et ainsi de suite, comme montré par les flèches horizontales à la figure, jusqu'à ce que les P derniers mots de m bits correspondant chacun à un LLR d'information reçus pour la trame concernée aient été écrits sur la Waième ligne du plan mémoire.
Les Wb mots de m bits qui sont ensuite reçus en entrée du décodeur, et qui correspondent chacun à un LLR de parité, sont successivement écrits les uns au dessous des autres sur les Wb lignes en partie basse du plan mémoire, par exemple de haut en bas, dans un groupe de m colonnes situées par exemple dans la partie la plus à droite de la partie basse du plan mémoire. Les Wb mots de m bits suivants, qui correspondent aussi chacun à un LLR de parité, sont ensuite écrits, toujours de haut en bas, sur les Wb lignes de la partie basse 410b du plan mémoire dans un autre groupe de m colonnes, situé immédiatement à gauche du groupe précédent. Et ainsi de suite, comme montré par les flèches verticales à la figure, jusqu'à ce que les Wb derniers mots de m bits correspondant aux derniers LLRs de parité reçus pour la trame en question aient été écrits sur les Wb lignes de la partie basse du plan mémoire, dans le pierre groupe de m colonnes le plus à gauche du plan mémoire. L'invention vise à réduire le nombre d'accès en écriture à la mémoire d'entrée d'un décodeur LDPC, lors du chargement de cette mémoire avec les 5 données correspondant à une trame LDPC à décoder. Ce but est atteint, conformément à un premier aspect de l'invention, grâce à un procédé de chargement d'une mémoire d'entrée d'un décodeur LDPC avec des données correspondant à une trame LDPC à décoder et comprenant un nombre N de rapports de vraisemblance logarithmique, ou 10 LLRs, dont un nombre K de LLRs d'information et un nombre N-K de LLRs de parité, où N et K sont des nombres entiers, dans lequel: - on forme au moins un flux de mots binaires d'un premier type, correspondant chacun à une pluralité de LLRs d'information, à l'aide d'un module de conversion série/parallèle, ainsi qu'au moins un flux de mots 15 binaires d'un second type, correspondant chacun à une pluralité de LLRs de parité, à l'aide d'un dispositif d'entrelacement lignes-colonnes comprenant une mémoire tampon de type "premier entré premier sorti", ou FIFO, à deux dimensions bouclée; et, - on effectue des premiers accès mémoire en mode page pour écrire 20 les mots binaires du premier type dans une première zone de la mémoire d'entrée, et on effectue des seconds accès mémoire en mode page pour écrire les mots binaires du second type dans une seconde zone de la mémoire d'entrée. Le dispositif d'entrelacement lignes-colonnes est un cas particulier de 25 convertisseur série/parallèle. II permet ici de générer des mots correspondant chacun à une pluralité de LLRs de parité, lesquels mots peuvent alors être écrits en mode page dans la mémoire, via un nombre réduit d'accès mémoire en mode page, et tout en respectant la contrainte de chargement des LLRs de parité dans la mémoire d'entrée présentée en introduction en regard du 30 schéma de la figure 4. On peut en effet considérer que cette contrainte se traduit par un entrelacement lignes-colonnes des LLRs de parité lors de leur chargement dans la mémoire d'entrée.
Grâce à l'invention, on réussit à charger des blocs de données de 64800 bits (correspondant chacun à une trame LDPC) dans la mémoire d'entrée d'un décodeur DVB-S2, avec seulement 4320 opérations d'écriture. La surface de silicium occupée par le module de conversion série/parallèle et la mémoire tampon de type FIFO est petite. Elle ne représente que 3% environ de la surface totale de la mémoire d'entrée. Cela signifie que la mise en oeuvre de l'invention ne se fait pas au détriment d'une augmentation rédhibitoire de la surface de silicium nécessaire. Un deuxième aspect de l'invention se rapporte à un dispositif de chargement d'une mémoire d'entrée d'un décodeur LDPC avec des données correspondant à une trame LDPC à décoder et comprenant un nombre N de rapports de vraisemblance logarithmique, ou LLRs, dont un nombre K de LLRs d'information et un nombre N-K de LLRs de parité, où N et K sont des nombres entiers. Le dispositif comprend: - au moins un module de conversion série/parallèle configuré pour former un flux de mots binaires d'un premier type correspondant chacun à une pluralité de LLRs d'information, ainsi qu'au moins un dispositif d'entrelacement lignes-colonnes qui comprend une mémoire tampon de type "premier entré premier sorti", ou FIFO, à deux dimensions bouclée et qui est configuré pour former un flux de mots binaires d'un second type correspondant chacun à une pluralité de LLRs de parité; ainsi que, - une unité de commande des accès mémoire, configurée pour écrire en mode page les mots binaires du premier type dans une première zone de la mémoire d'entrée, et pour écrire les mots binaires du second type dans une seconde zone de la mémoire d'entrée. Un troisième aspect de l'invention propose un décodeur LDPC incorporant un dispositif selon le deuxième aspect. Ce décodeur peut par exemple être réalisé sous la forme d'un circuit intégré, tel qu'un SoC ("Systemon-Chip").
Enfin, un quatrième aspect de l'invention propose un appareil incorporant un décodeur LDPC selon le troisième aspect. Un tel appareil peut être un décodeur numérique de signaux satellitaires appelé "Set-Top-Box", ou autre.
Par ailleurs, le principe de chargement de la mémoire d'entrée selon la présente invention permet d'incorporer un dispositif de désentrelacement dans le décodeur LDPC. L'entrelacement/désentrelacement des bits d'un bloc de N bits émis côté émetteur peut être prévu pour renforcer la robustesse du codage de canal. Il est recommandé, dans la norme DVB-S2, pour les modulations d'ordre élevé, par exemple les modulations 8-PSK ("Phase Shift Keying") ou 16-APSK ("Amplitude and Phase Shift Keying") et 32-APSK. En principe un dispositif d'entrelacement est prévu dans la chaîne d'émission, entre l'encodeur de canal 13 et le modulateur 14, et un dispositif de désentrelacement est prévu dans la chaîne de réception entre le démodulateur 34 et le décodeur de canal 33 (figure 1). Un tel dispositif de désentrelacement comprend une mémoire, qui augmente la surface de silicium occupée par le circuit, ainsi que sa consommation. En outre, la gestion de cette mémoire pose des problèmes lorsque les LLRs sont reçus au rythme du signal d'horloge du décodeur LDPC, et qu'il n'y a donc pas de temps de latence permettant les opérations d'écriture et de lecture dans cette mémoire qui sont nécessaires au désentrelacement. Pour pallier ces inconvénients, il est prévu des modes de réalisation de l'invention dans lesquels, les LLRs étant reçus sous la forme d'un flux de LLRs entrelacés avec une profondeur d'entrelacement correspondant à un nombre Q de LLRs, on effectue un désentrelacement en formant parallèlement un nombre Q1 de flux de mots binaires du premier type au moyen de QI modules de conversion série/parallèle respectifs, et un nombre Q2 de flux de mots binaires du second type au moyen de Q2 dispositifs d'entrelacement lignes- colonnes respectifs comprenant chacun une FIFO à deux dimensions bouclée, où QI et Q2 sont des nombres entiers déterminés qui dépendent du taux r = N du codage LDPC et qui sont tels que Q1 + Q2 Q . Ainsi il suffit d'argumenter le nombre de dispositifs de conversion série/parallèle et/ou le nombre de dispositifs d'entrelacement lignes-colonnes (dans une mesure qui dépend de la profondeur de l'entrelacement des bits des trames LDPC et dans un rapport qui dépend du taux r = N du codage LDPC) pour intégrer ainsi la fonction de désentrelacement des bits des trames LDPC à l'intérieur du décodeur LDPC. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit 5 être lue en regard des dessins annexés sur lesquels: - la figure 1, déjà décrite, est un schéma illustrant une chaîne de transmission de données générique; - la figure 2, également déjà décrite, donne un exemple de matrice de contrôle de parité et illustre son application à une trame LDPC; 10 - la figure 3, également déjà décrite, illustre les calculs de mise à jour des noeuds de parité et des noeuds de bits effectués à l'aide de la matrice de contrôle de parité de la figure 2; - la figure 4, est un schéma illustrant le mode de chargement de la mémoire d'entrée du décodeur LDPC; 15 - la figure 5, est un schéma de l'architecture d'un décodeur itératif selon des modes de réalisation de la présente invention; - la figure 6, est un schéma illustrant le mode de chargement de la mémoire d'entrée du décodeur LDPC lorsque celle-ci est réalisée sous la forme d'un agencement de mémoires RAM en parallèle; 20 - la figure 7 est un schéma fonctionnel d'un exemple de réalisation d'un dispositif selon l'invention; - la figure 8 est un schéma illustrant le principe de fonctionnement d'un dispositif d'entrelacement lignes- colonnes comprenant une FIFO à deux dimensions bouclée; 25 - la figure 9 est un schéma illustrant la constitution de mots binaires du premier et du second type à partir d'un flux de LLRs correspondant à un exemple de trame LDPC; - la figure 10 donne des chronogrammes de signaux pour illustrer le fonctionnement du dispositif de la figure 8; 30 - les figures 11 a-11 d sont des schémas illustrant le chargement de la mémoire d'entrée d'un décodeur LDPC dans le contexte de l'exemple conforme aux figures 9 et 10 ; - la figure 12 est un schéma illustrant le principe général de l'entrelacement de bits de type lignes-colonnes; - la figure 13 illustre le chargement de la mémoire d'entrée du décodeur LDPC dans le cas d'un flux de LLRs entrelacés, avec une profondeur d'entrelacement correspondant à trois LLRs; - la figure 14 est un schéma montrant le chargement de la mémoire d'entrée du décodeur LDPC dans le cas du flux de LLRs de la figure 9, lorsque ce flux est un flux de LLRs entrelacés; - la figure 15 est un schéma d'un exemple de dispositif selon l'invention, adapté pour le désentrelacement d'un flux de LLRs entrelacés simultanément à son chargement en mémoire; - la figure 16 donne des chronogrammes de signaux pour illustrer le fonctionnement du dispositif de la figure 15; et, - les figures 17a à 17e illustrent le chargement de la mémoire dans le contexte de l'exemple conforme aux figures 15 et 16. Dans les dessins, les mêmes éléments ou des éléments similaires portent des références identiques d'une figure à l'autre.
Exemple d'architecture du décodeur LDPC En référence à la figure 5, un exemple d'architecture d'un décodeur LDPC selon des modes de réalisation de la présente invention comprend une mémoire d'entrée ou mémoire de canal 41 (notée CI-I_MEM à la figure), pouvant stocker des blocs de bits d'information à décoder correspondant à deux trames LDPC émises côté émetteur. Ces bits d'information correspondent en fait à un nombre 2x N de LLRs.
Plus particulièrement, la mémoire 41 comprend par exemple deux éléments de mémorisation à accès unique 41_1 et 41_2. Chacun de ces deux éléments de mémorisation est adapté pour stocker un bloc de bits d'information à décoder, un tel bloc désignant ici l'unité d'information traitée par l'algorithme de décodage itératif. Dit autrement, chacun des éléments de mémorisation 41 1 et 41 2 est adapté pour stocker un bloc de N x m bits correspondant aux N LLRs associés à un mot de code préalablement reçu et qui est en cours de décodage, ou un bloc de N x m bits correspondant aux N LLRs associés à un mot de code en cours de réception. Par exemple, les éléments de mémorisation 41_1 et 41_2 comprennent une (ou plusieurs) mémoire(s) mémoire RAM à accès unique ("single port RAM", ou SPRAM), formant chacune un registre tampon, ou tampon ("buffer" en anglais). En variante, les éléments 41_1 et 41_2 peuvent être réalisés sous la forme d'une (ou plusieurs) mémoire(s) RAM à double accès ("double port RAM", ou DPRAM), qui occupe généralement plus de place mais dont la gestion est un peu plus complexe.
Afin d'accélérer les calculs liés au décodage, l'unité de décodage comprend un banc 42 de processeurs, ayant un nombre P de processeurs en parallèle (notés Proc1 à ProcP à la figure), qui effectuent en parallèle les calculs des noeuds de parité et des noeuds de bits. Le nombre P est appelé indice de parallélisme. Le banc de processeurs 42 peut accéder en lecture à la mémoire d'entrée 41 via un bus de m x P fils, pour lire simultanément un jeu de P LLRs. Au cours de l'exécution du processus itératif, les processeurs délivrent des valeurs mises à jour de métriques internes, codées chacune sur t bits. Les métriques internes sont stockées dans une mémoire de métriques 43 (notée MET MEM à la figure), dont la capacité est égale à t fois le nombre de métriques (c'est-à-dire t fois le nombre de "1" dans la matrice H). Les métriques internes stockées dans la mémoire 43 sont délivrées au banc de processeurs 42 par l'intermédiaire d'un mélangeur à P voies, tel qu'un dispositif de décalage en anneau 44 ("barrel shifter" en anglais, noté BS à la figure) dans le cas de la norme DVB-S2. La mémoire 43 est accessible en écriture et en lecture via des bus respectifs de t x P fils. Après la dernière itération, le banc de processeurs 42 délivre aussi, de façon connue en soi, des bits de décision ferme, qui prennent la valeur "1" ou "0" selon le signe de la somme sur les colonnes de la matrice H et les LLRs du mot C' de rang correspondant. Ces bits de décision ferme sont stockés de façon temporaire dans une mémoire de sortie, ou mémoire de décision ferme 45 ("hard decision memory" en anglais, notée HD_MIEM à la figure), en principe (c'est-à-dire dans les décodeurs standards) jusqu'à ce qu'ils soient écrasés par les bits de décision ferme résultant du décodage de la trame suivante. La capacité de la mémoire 45 est égale à N, c'est-à-dire la taille d'une trame LDPC. La mémoire 45 est accessible en écriture par le banc de processeurs 42, via un bus de P fils.
Les éléments 42, 43, 44 et 45 forment une unité de décodage du décodeur, ici une unité de décodage LDPC, qui est adaptée pour traiter les informations mémorisées dans la mémoire d'entrée 41.
Partage du plan mémoire entre plusieurs mémoires RAM Lorsque le plan mémoire offre une fonctionnalité d'accès en mode page, il peut être adressable par mots binaires correspondant chacun à un nombre P de LLRs en parallèle. Il s'ensuit que chaque mot correspondant à un nombre P de LLRs d'information qui doivent être stockés de façon juxtaposée sur l'une respective des Wa lignes en partie haute 410a du plan mémoire (figure 4, commentée en introduction), peut être écrit dans le plan mémoire lors d'un unique accès en écriture. Ainsi, on écrit une ligne entière de la partie 410a en une seule fois. On a donc un accès en écriture tous les P LLRs d'information reçus. Pour un indice de parallélisme P élevé, il peut ne pas exister de mémoires RAMs pouvant contenir Pxm bits par ligne (contrainte technologique). Dans ce cas notamment, mais pas uniquement, on peut prévoir d'agencer une pluralité de mémoires RAMs moins larges en parallèle. L'agencement de mémoire en parallèle permet en outre de diminuer les dispositifs permettant d'écrire un nombre entier L de LLRs juxtaposés sur une même ligne. La contrepartie est de multiplier le nombre d'accès en écriture par rapport au cas où on utilise une seule mémoire RAM (si existante) contenant Pxm bits par ligne. Techniquement, on choisi les RAMs les plus larges possible pour diminuer la consommation totale. Dit autrement, en particulier, lorsque l'indice de parallélisme P est grand (par exemple P=360, comme recommandé dans le standard DVB-S2), le plan mémoire peut être réalisé sous la forme d'un agencement de plusieurs mémoires RAM, ayant chacune un nombre n de colonnes et un nombre Wa + Wb de lignes, où m < n < P x m. Chacune de ces mémoires RAM peut stocker un nombre entier L de LLRs juxtaposés sur une même ligne, où 1 < L < P . Le plan mémoire est alors implémenté sous la forme d'un nombre P de mémoires RAM agencées en parallèle. Le plan mémoire est donc adressable par mots binaires correspondant chacun à un nombre L de LLRs en parallèle. Par l'expression "agencement de mémoires RAM en parallèle", il faut comprendre que les mémoires RAM sont par exemple disposées côte à côte sur le silicium. Fonctionnellement, une ligne d'indice i déterminé du plan mémoire correspond à une ligne de même indice dans chacune des mémoires RAM, et chaque colonne du plan mémoire correspond à une colonne spécifique dans l'une donnée des mémoires RAM. Un mécanisme d'adressage ad hoc permet de sélectionner l'une seulement des mémoires RAM composant le plan mémoire, lors d'un accès en écriture ou en lecture. Cet agencement, connu en soi, permet de réduire la longueur des lignes qui sont effectivement adressées lors d'un accès en écriture en mode page, et donc de réduire la consommation de courant pour chaque accès en écriture. Dans l'exemple illustré par la figure 6, où P==6, on a ainsi trois mémoires RAM, référencées respectivement 41a, 41b et 41c, pouvant stocker chacune deux LLRs (c'est-à-dire que, ici, L=2). Résumé des notations utilisées Par souci de clarté, on rappelle ou introduit pour la première fois dans le tableau I ci-dessous, les principales notations qui sont utilisés dans laprésente description.
N taille d'une trame LDPC en nombre de LLRs K nombre de LLRs d'information par trame LDPC N-K nombre de LLRs de parité par trame LDPC m nombre de bits codant un LLR P indice de parallélisme du décodeur LDPC P x m nombre total de colonnes (bits) de la mémoire d'entrée K nombre de lignes de la mémoire d'entrée (et donc de wa = chacune des mémoires RAM la composant) pour stocker les P LLRs d'information N K nombre de lignes de la mémoire d'entrée (et donc de wb = chacune des mémoires RAM la composant) pour stocker les LLRs de parité P K = wa taux de codage de l'algorithme de codage LDPC r = N wa+wb L nombre de LLRs sur une même ligne d'une des mémoires RAM composant la mémoire d'entrée P nombre de mémoires RAM composant la mémoire d'entrée L n = L x m nombre de colonnes (bits) de chacune des mémoires RAM composant la mémoire d'entrée Tableau I Dans un mode de réalisation préféré, K=16200, N=64800, P=360, m=6, t=6, L=15, n=90, P= 24 , et Px m= 2160 .
Exemple de dispositif sans entrelacement En référence à la figure 7, un mode de réalisation du dispositif de chargement de la mémoire d'entrée 41 comprend les éléments qui vont maintenant être décrits, dans le cas où les LLRs reçus par le décodeur LDPC ne sont pas entrelacés. Un tel cas correspond soit à une transmission de trames LDPC sans entrelacement des bits, soit à une transmission des trames LDPC avec entrelacement des bits lorsqu'un dispositif de désentrelacement est prévu en amont du décodeur LDPC. Dans l'exemple représenté, le plan mémoire de la mémoire d'entrée 41 est réalisé par sept mémoires RAM en parallèle, respectivement 41a à 41g. Le dispositif de chargement de la mémoire d'entrée 41 comprend un module 71 de conversion série/parallèle ou SPM (de l'anglais "Serial-Parallel Module"), une mémoire tampon 72 de type "premier entré premier sorti" ou FIFO (de l'anglais "Firt-In, First-Out") à deux dimensions bouclée, un module de commande 73, et un multiplexeur 74. Ces moyens permettent le chargement de l'élément de mémorisation 41_1 (ou 41_2) de la mémoire d'entrée 41 avec les données correspondant aux LLRs d'une trame LDPC à décoder. Le fonctionnement du dispositif est synchrone avec le signal d'horloge CLK du décodeur LDPC.
Des moyens de commutation tels qu'un démultiplexeur non représenté (opérant au niveau du noeud fonctionnel 75), permettent en outre de fournir les K LLRs d'information en entrée du SPM et d'orienter les N-K LLRs de parité vers la FIFO, à partir de l'entrée de la mémoire 41. En fait, les Wb derniers LLRs de parité sont, en outre, directement transmis vers la sortie de la FIFO 72 par des moyens non représentés (opérant au niveau du noeud fonctionnel 76). Chacun de ces Wb derniers LLRs est concaténé, par des moyens non représentés (opérant au niveau du noeud fonctionnel 77, correspondant à la sortie de la FIFO), avec un mot binaire correspondant à un nombre L-1 de LLRs de parité lu dans la FIFO 72, en rythme avec VVb fronts d'activation successifs du signal CLK. La FIFO est en effet agencée pour délivrer en sortie des mots binaires correspondant à L-1 LLRs de parité en parallèle, ainsi qu'il sera explicité plus loin. Le SPM 71 reçoit en entrée les LLRs d'information en série, à raison par exemple de un LLR à chaque cycle du signal CLK, et délivre en sortie un flux de ce que l'on appelle des mots binaires d'un premier type. Ces mots binaires correspondent à un nombre L de LLRs d'information en parallèle (c'est-à-dire juxtaposés par concaténation). Dit autrement, les mots binaires de ce premier type sont codés sur un nombre n = L x m de bits. La réalisation du SPM n'appelle pas ici de commentaire particulier, l'homme du métier pouvant le réaliser à l'aide de ses seules connaissances générales, sur la base des caractéristiques fonctionnelles données ci-dessus. Au niveau du noeud fonctionnel 77, il est délivré un flux de ce que l'on appelle des mots binaires d'un second type. Ces mots binaires du second type sont des mots binaires correspondant à un nombre L de LLRs de parité en parallèle, et sont aussi codés sur n bits. Les mots binaires stockés dans la FIFO 72 étant des mots binaires correspondant à un nombre L-1 de LLRs de parité en parallèle, ils sont codés sur un nombre n ûm de bits.
La sortie du SPM et le noeud fonctionnel 77 sont couplés à des entrées respectives du multiplexeur 74, qui multiplexe les flux de mots binaires du premier type et du second type respectivement, juste en amont des circuits d'écriture dans la mémoire. En référence à la figure 8, la FIFO 72 est en effet adaptée pour stocker un nombre Wb de mots binaires correspondant chacun à L-1 LLRs (en l'occurrence des LLRs de parité), eux-mêmes codés sur m bits chacun. En pratique, la FIFO peut se concevoir comme une matrice de Wb lignes et (L -1)x m colonnes, comprenant donc Wb 4û1) -1) éléments de mémorisation adaptés chacun pour stocker un LLR codé sur m bits. Ces éléments de mémorisation sont par exemple agencés sous la forme de L-1 registres à décalage (ici disposés verticalement) de Wb éléments chacun. Chaque élément de mémorisation de la FIFO, que l'on repérera par ses coordonnées {i,j}, où la lettre i désigne le numéro de ligne et l'indice j désigne le numéro de colonne dans la matrice, peut mémoriser un LLR codé sur m bits. Le parcours des LLRs dans la FIFO 72 est adapté pour assurer l'entrelacement lignes-colonnes souhaité. Dans l'illustration donnée à titre d'exemple à la figure 8, l'entrée des LLRs dans la FIFO, qui s'effectue par exemple au rythme d'un LLR par cycle du signal d'horloge lors de la réception des LLRs de parité, se fait par l'élément de coordonnées {1,1}, en haut à gauche de la matrice. A chaque entrée d'un nouveau LLR, le premier LLR reçu progresse vers le bas de la matrice suivant la première colonne (i.e., la plus à gauche), comme indiqué par les petites flèches dans cette colonne. L'entrée du LLR qui suit les Wb premiers LLRs reçus par la FIFO provoque le passage du premier LLR reçu depuis l'élément de mémorisation de coordonnées {Wb,1 } vers l'élément de mémorisation de coordonnées {1,2}, qui est le premier élément de mémorisation (pour lequel i=1) de la deuxième colonne (pour laquelle j=2). L'entrée des LLRs suivants fait progresser le premier LLR reçu vers le bas de la matrice suivant la deuxième colonne, comme indiqué par les petites flèches dans cette colonne. L'entrée du LLR qui suit les 2x Wb premiers LLRs reçus par la FIFO provoque le passage du premier LLR reçu par la FIFO de l'élément de mémorisation de coordonnées {Wb,2} vers l'élément de mémorisation de coordonnées {1,3}, et provoque aussi le passage du Wb1ème LLR reçu par la FIFO de l'élément de mémorisation de coordonnées {Wb,1} vers l'élément de mémorisation de coordonnées {1,2}. Et ainsi de suite, comme indiqué par les liaisons entre le bas et le haut de la matrice. La FIFO est complètement chargée lorsque Wb x (L -1) LLRs de parité ont été reçus. La formation des Wb mots du second type commence à la réception du LLRs de parité suivant, un tel mot étant formé à la réception de chacun des Wb LLRs de parité suivants. L'entrée du {Wb x (L -1)}'eme LLR de parité dans la FIFO provoque la perte du premier LLR reçu par la FIFO. Pour désigner un tel fonctionnement de la FIFOä on dira que la FIFO est une FIFO à deux dimensions bouclée, en l'occurrence à Wb mots de L-1 LLRs chacun, qui assure une fonction d'entrelacement lignes-colonnes. Une fois que la FIFO est complètement chargée, on lit en effet successivement Wb mots de L-1 LLRs dans cette FIFO, à chaque fois le mot stocké dans la Wbième ligne (celle du bas), sous la comrnande du module 73. Chacun des mots de L-1 LLRs ainsi lus est concaténé à un L1ème LLR de parité, à savoir le LLR de parité reçu à chacun des Wb fronts suivants du signal CLK, et qui est transmis du noeud fonctionnel 76 au noeud fonctionnel 77, pour former le flux de mots binaires du second type. La réalisation de la FIFO n'appelle pas ici d'autre commentaire, l'homme du métier pouvant la réaliser à l'aide de ses seules connaissances générales, sur la base des caractéristiques fonctionnelles données ci-dessus. On peut en particulier utiliser un agencement de bascules ("Flip-Flops"), une DPRAM de Wb mots, ou deux SPRAM de Wb/2 mots chacune.
Exemple de fonctionnement sans entrelacement Le fonctionnement du dispositif de chargement de la mémoire d'entrée du décodeur lors de la réception des N LLRs correspondant à une trame LDPC donnée est expliqué ci-après dans le cadre de l'exemple du dispositif présenté ci-dessus en regard du schéma de la figure 7. Sous la commande du module 73, on forme un flux de P x Wa mots L
binaires du premier type, correspondant chacun à un nombre L de LLRs d'information à l'aide du SPM, ainsi qu'un flux de P x Wb mots binaires du second type, correspondant chacun à un nombre L de LLRs de parité à l'aide de la FIFO. A cet effet, le module 73 délivre des signaux d'autorisation de fonctionnement SPM EN et FIFO EN, respectivement au SPM et à la FIFO.
Toujours sous la commande du module 73, on effectue par ailleurs des premiers accès à la mémoire pour écrire les mots binaires du premier type dans une première zone de la mémoire d'entrée correspondant à la partie haute (les Wa lignes supérieures) du plan mémoire, et on effectue des seconds accès à la mémoire pour écrire les mots binaires du second type dans une seconde zone de la mémoire d'entrée correspondant à la partie basse (les Wb lignes inférieures) du plan mémoire. A cet effet, le module 73 pilote le multiplexeur 74 à travers lequel ces accès au plan mémoire sont réalisés. Il applique en outre à l'élément de mémorisation 41_1 (ou 41_2) un signal d'adresse @, un signal de sélection de circuit CS, et un signal d'autorisation d'écriture WEN. L'écriture est alors réalisée à un emplacement mémoire déterminé, de largeur correspondant à un nombre L de LLRs, dans l'une déterminée des mémoires RAM, ici au nombre de 7 et référencées 41a à 41g, qui forment le plan mémoire. En fait, les signaux WEN et CS se déclinent en 7 signaux chacun, à raison de un pour chaque mémoire RAM composant le plan mémoire, mais cette déclinaison n'est pas représentée pour ne pas alourdir la figure.
Ce fonctionnement va maintenant être illustré à l'aide des figures 9, 30 10a-10d, et 11, dans un exemple où N=12, K=6, Wa=2, Wb=2, P=L=3 (pour simplifier, on considère en effet dans cet exemple que la mémoire d'entrée comprend une unique mémoire RAM). En référence à la figure 9, la trame LDPC à décoder est une trame de 12 bits en sorte que les informations à décoder correspondent à 12 LLRs notés LLR;, avec i compris entre 1 et 12, dont 6 LLRs d'information (notés L; pour i compris entre 1 et 6) et 6 LLRs de parité (notés L; pour i compris entre 7 et 12). Le parallélisme (d'indice P=3) du traitement effectué par le décodeur LDPC impose de former quatre jeux de 3 LLRs chacun. Du fait de la forme de la matrice H préconisée dans la norme DVB-S2, un premier et un deuxième jeux de LLRs comprennent respectivement les LLRs d'indice respectif 1, 2, et 3 et les LLRs d'indice respectif 4, 5, et 6 (LLRs d'information), alors qu'un troisième et un quatrième jeux de LLRs comprennent respectivement les LLRs d'indice respectif 7, 9, et 11 et les LLRs d'indice respectif 8, 10, et 12 (LLRs de parité). Le chargement de la mémoire d'entrée du décodeur LDPC, qui est ici une matrice ayant 4 lignes et une largeur correspondant à 3 LLRs, se fait en quatre opérations d'écriture dans la mémoire, c'est-à-dire en quatre accès mémoire. On forme en effet un flux de 2 mots de 3 LLRs d'information chacun (mots binaires du premier type), à savoir les mots L3L2L1 et L6L5L4 respectivement, et un flux de 2 mots de 3 LLRs de parité chacun (mots binaires du second type), à savoir les mots L11L9L7 et L12L10Lg respectivement. Le premier flux est formé à l'aide du SPM, et le second est formé à l'aide de la FIFO. Le déroulement du procédé de chargement de la mémoire d'entrée va maintenant être exposé en détails en référence aux chronogrammes de la 25 figure 10 et aux schémas des figures 11 a-11 d. A la figure 10, les flèches verticales sur la ligne du haut représentent les fronts d'activation du signal d'horloge CLK du décodeur LDPC. Ainsi que le montre la deuxième ligne immédiatement en dessous, un LLR est reçu à chaque front d'activation du signal CLK. Sur cette ligne, on n'a représenté que 30 les 12 LLRs correspondant à une trame dans l'exemple considéré ici, à savoir les LLRs notés L; avec i compris entre 1 et 12. La sixième ligne indique les cycles d'horloge où des données sont écrites dans le plan mémoire, en provenance du SPM 71 (évènements notés "sortie SPM") et de la FIFO 73 (évènements notés "sortie FIFO"). La formation du flux de mots binaires du premier type commence à la réception du premier LLR d'information, à savoir LI. A cet effet le module de commande 73 fait passer le signal SPM_EN à l'état actif, par exemple ici l'état logique haut (3ème ligne de la figure 10). Après la réception des trois premiers LLRs d'information, à savoir LI, L2 et L3, le module 73 active le signal WEN d'autorisation d'écriture dans la mémoire d'entrée (5ème ligne de la figure 10), par exemple ici en le faisant passer de l'état logique haut à l'état logique bas, pendant un cycle d'horloge. Le mot binaire L3L2L1 est alors écrit sur la première ligne en partie haute 410a de la mémoire. On obtient ainsi l'état de chargement de la mémoire d'entrée du décodeur LDPC qui est illustré par le schéma de la figure 11a. Lorsque le signal WEN repasse à l'état logique haut, le signal SPM_EN reste à l'état actif, afin de recevoir les trois LLRs d'information suivants, à savoir L4, L5 et L6. Après la réception du dernier LLR du second jeu de LLRs d'information, à savoir L6, le signal WEN est à nouveau activé, et le mot binaire L6L5L4 est écrit sur la seconde ligne de la partie haute 410a de la mémoire d'entrée. On obtient ainsi l'état de chargement de la mémoire d'entrée du décodeur LDPC qui est illustré par le schéma de la figure 11 b. Le signal SPM_EN est quant à lui désactivé après la réception de L6. La formation du flux de mots binaires du second type commence à la réception du premier LLR de parité, à savoir L7. A cet effet le module de commande 73 fait passer le signal FIFO_EN à l'état actif, par exemple ici l'état logique haut (4ème ligne de la figure 10). Les LLRs de parité sont dès lors orientés, non plus vers le SPM, mais vers la FIFO, dans laquelle ils sont chargés comme expliqué plus haut en référence au schéma de la figure 8. Après la réception des quatre premiers LLRs de parité, à savoir L7, L8, L9 et Lao, l'état de chargement de la FIFO est celui illustré en bas à gauche de la figure 10. Le cadre désigné par une flèche correspond au mot de L-1 (i.e., 2) LLRs de parité, à savoir le mot binaire L9L7, qui est stocké sur la ligne du bas de la FIFO. A ce mot, on ajoute par concaténation du côté des bits de poids fort le LLR de parité suivant, à savoir Li1, qui entre dans la FIFO mais passe également à coté de la FIFO, pour former le mot binaire L11L9L7. Ce mot, qui est un mot du second type, correspond au troisième jeu de LLRs (de parité) identifié plus haut en regard du schéma de la figure 9. Cette formation a lieu à réception de L11. Le mot L11L9L7 est alors écrit sur la première ligne de la partie basse 410b de la mémoire d'entrée. A cet effet, le module de commande 73 fait passer le signal WEN à l'état actif (l'état logique bas). On obtient ainsi l'état de chargement de la mémoire d'entrée du décodeur LDPC, qui est illustré par le schéma de la figure 11 c. Dans la FIFO, on obtient simultanément la configuration de chargement illustrée en bas à droite de la figure 10. A réception par la FIFO du LLR de parité suivant, à savoir L12 qui passe également à coté de la FIFO, le premier LLR de parité qui avait été reçu, à savoir L7, est perdu. Le cadre désigné par une flèche correspond au mot de L-1 (i.e., 2) LLRs de parité, à savoir le mot binaire L10L8, qui est stocké sur la ligne du bas de la FIFO. A ce mot, on ajoute au front suivant du signal CLK, par concaténation du côté des bits de poids fort, le LLR L12 qui rentre dans la FIFO mais passe également à côté de celle-ci, pour former le mot binaire L12L10L8. Ce mot du second type correspond au quatrième jeu de LLRs (de parité) identifié plus haut en regard du schéma de la figure 9. Le module 73 maintient actif le signal WEN d'autorisation d'écriture dans la mémoire d'entrée (5eme ligne de la figure 10) pendant un cycle d'horloge supplémentaire. Le mot binaire L12L10L8 est alors écrit sur la seconde ligne en partie basse 410b de la mémoire. On obtient ainsi l'état de chargement de la mémoire d'entrée du décodeur LDPC qui est illustré par le schéma de la figure 11 d. On peut observer à l'aide de l'exemple ci-dessus, que, à l'issue du chargement de la mémoire selon le procédé de l'invention, on obtient une répartition des LLRs de la trame LDPC conforme à ce qui a été décrit en introduction en référence au schéma de la figure 4. On notera surtout que le chargement de la mémoire d'entrée conforme aux spécifications de la norme DVB-S2 ne nécessite dans l'exemple que 4 accès en écriture à la mémoire d'entrée, alors que, si l'on effectuait un chargement selon la méthode de l'art antérieur décrite en référence au schéma de la figure 4, on devrait effectuer 12 accès en écriture à la mémoire (dont en particulier 6 accès à la mémoire effectué pour écrire pour les 6 LLRs de parité en rythme avec le signal d'horloge CLK au moment de la réception de ces LLRs). L'invention permet donc de réduire substantiellement le nombre d'opérations d'écriture dans la mémoire d'entrée. La surface de silicium supplémentaire occupée par le SPM et par la 5 FIFO reste acceptable. L'agencement de la mémoire d'entrée du décodeur sous la forme de P mémoires RAM en parallèle contribue aussi à rendre cette surface supplémentaire acceptable puisque plus la taille des mots du premier et du second type est petite, et moins le SPM et la FIFO occupent de place.
Chargement de la mémoire d'entrée avec désentrelacement 10 On va maintenant décrire des modes de réalisation dans lesquels le chargement de la mémoire d'entrée donne lieu, en outre, à la réalisation d'un désentrelacement des bits de la trame LDPC reçue par le décodeur. On se place donc ici dans le cas où les bits des trames LDPC transmises à travers le canal sont entrelacées côté émetteur. Les présents modes de réalisation sont 15 avantageux car dans ces modes de réalisation le récepteur n'a pas besoin de dispositif de désentrelacement dédié. L'entrelacement des bits d'une trame LDPC reçue par le décodeur se traduit par un entrelacement correspondant des LLRs à charger dans la mémoire interne du décodeur LDPC. C'est pourquoi, dans la suite, on 20 considère que les LLRs sont reçus en entrée du dispositif de chargement de la mémoire d'entrée du décodeur LDPC, sous la forme d'un flux de LLRs entrelacés. Il s'agit d'un entrelacement de type lignes-colonnes. La profondeur d'entrelacement correspond à un nombre Q de LLRs, où Q est un nombre entier déterminé. Dans un tel cas, on utilise selon l'art antérieur une mémoire à 25 Q colonnes pour le désentrelacement. Le principe général du désentrelacement est montré sur le schéma de la figure 12, dans le cas d'un entrelacement dont la profondeur correspond à 3 LLRs (c'est-à-dire avec Q=3). Ainsi qu'il est illustré par les flèches en partie gauche de la figure, les LLRs sont tout d'abord écrits en lignes dans une 30 mémoire à 3 colonnes. Les LLRs sont ensuite lus en colonnes dans cette mémoire, c'est-à-dire qu'on lit tous les LLRs d'une colonne, colonne après colonne, comme illustré par les flèches en partie droite de la figure. Ici, la mémoire que l'on utilise est directement la mémoire d'entrée du décodeur LDPC. Dit autrement, le désentrelacement est opéré en même temps que le chargement des LLRs dans la mémoire d'entrée du décodeur LDPC, au cours d'un processus unique. A cet effet, on forme au moins Q flux distincts de LLRs désentrelacés, à partir du flux de LLRs entrelacés reçu en entrée. Le principe du désentrelacement combiné au chargement de la mémoire d'entrée du décodeur LDPC selon des modes de réalisation est explicité en référence au schéma de la figure 13, toujours dans le cas d'un entrelacement de profondeur correspondant à 3 LLRs (c'est-à-dire avec Q=3). On forme en parallèle 3 flux de LLRs, alimentés chacun par un LLR reçu sur trois. Par exemple, en considérant un indice entier prenant les valeurs ordonnées 0,1,2,3,4, etc. pour désigner l'ordre des LLRs dans le flux de LLRs entrelacés, on forme en parallèle un premier flux de LLRs (Flux 1) qui contient les LLRs d'indice 0,3,6, etc., un deuxième flux de LLRs (Flux 2) qui contient les LLRs d'indice 1,4,7,etc., et un troisième flux de LLRs (Flux 3) qui contient les LLRs d'indice 2,5,8,etc. Ces trois flux distincts de LLRs doivent être écrits dans la mémoire d'entrée du décodeur LDPC ainsi qu'il est indiqué par les flèches à la figure 13. Mais on rappellera que, selon le principe du chargement de la mémoire d'entrée du décodeur LDPC qui a été exposé plus haut, un flux de LLRs d'information et un flux de LLRs de parité sont formés par des moyens distincts pour leur chargement dans la mémoire d'entrée, à savoir un SPM et une FIFO à deux dimensions bouclée, respectivement. Et c'est pourquoi on peut avoir besoin de former plus de Q tels flux de LLRs désentrelacés, selon les valeurs respectives de la profondeur Q de l'entrelacement des LI_Rs et du taux r = N du codage LDPC. Au plus, on peut avoir besoin de former Q flux de LLRs d'information désentrelacés, et Q flux de LLRs de parité désentrelacés, compte tenu de toutes les valeurs possibles entre 0 et 1 que peut prendre le taux de codage r = N Dit autrement, le nombre maximum de SPM et le nombre maximum de FIFO à deux dimensions bouclées qui sont nécessaires pour la mise en oeuvre du désentrelacament dans le cadre du principe de chargement de la mémoire d'entrée du décodeur LDPC proposé, sont tous deux égaux à Q. Pour une valeur donnée du taux de codage r = N , on effectue un désentrelacement en formant parallèlement un nombre Q1 de flux de mots binaires du premier type au moyen de Q1 modules de conversion série/parallèle (SPM) respectifs, et un nombre Q2 de flux de mots binaires du second type au moyen de Q2 dispositifs d'entrelacement lignes-colonnes respectifs comprenant chacun une FIFO à deux dimensions bouclée, où QI et Q2 sont des nombres entiers déterminés (qui dépendent du taux de codage N ). Ces nombres sont tels que QI + Q2 >_ Q Q. Ainsi, il suffit d'augmenter le nombre de dispositifs de conversion série/parallèle et/ou le nombre de dispositifs d'entrelacement lignes-colonnes (dans une mesure qui dépend de la profondeur de l'entrelacement des bits des trames LDPC, et dans un rapport qui dépend du taux de codage N du codage LDPC) pour pouvoir intégrer la fonction de désentrelacement des bits des trames LDPC à l'intérieur du décodeur LDPC. Avantageusement, la surface de silicium occupée par les SPM et les FIFO supplémentaires qui sont nécessaires pour ce faire, reste très inférieure à celle qu'occuperait un dispositif dédié à la fonction de désentrelacement comprenant une mémoire spécifique.
Exemple pour P=3, Q=3, N=12 et N = 1/2 Dans ce qui suit, l'indice i désigne le numéro d'ordre d'un LLR dans le flux de LLRs entrelacés, et l'indice j désigne le numéro d'ordre du même LLR dans le flux de LLRs désentrelacés. On note par exemple L; le LLR d'indice i.
Le premier LLR du flux de LLRs entrelacé est Li. On peut montrer que le rang j dans le flux de LLRs désentrelacés du i1ème LLR du flux de LLRs entrelacés reçu, est donné par la relation suivante: j=mod(i-1,Q)xQ+floor/~i-1~+1 (1) Q,/ où "mod(A,B)" désigne le reste de la division euclidienne du nombre A 10 par le nombre B; et, où "floor" est la fonction mathématique qui retourne le plus grand nombre entier inférieur au nombre passé en argument. II va être présenté un exemple de chargement de la mémoire d'entrée pour P=3, Q=3, N=12 et N =1/2, en référence au schéma de la figure 12. 15 Sur la figure 12, les LLRs du flux de LLRs entrelacés, notés L; pour i compris entre 1 et N, sont présentés dans les N éléments de mémorisation du plan mémoire, aux emplacements déterminés par les règles de chargement, en tenant compte du désentrelacement. L'indice j, pour j compris entre 1 et N, qui correspond au rang des LLRs correspondant dans le flux de LLRs 20 désentrelacé, est noté dans le coin en haut à droite de l'élément de mémorisation, en tenant compte des règles de chargement de la mémoire résultant de la forme de la matrice H. La relation (1) ci-dessus donne: 25 30 pour LI, pour lequel i-1 = 0 pour L2, pour lequel i-1 = 1 pour L3, pour lequel i-1 = 2 - pour L4, pour lequel i-1 = 3 - pour L5, pour lequel i-1 = 4 pour L6, pour lequel i-1 = 5 - pour L7, pour lequel i-1 = 6 => j=0x4 + 0 + 1 = 1; => j=1x4 + 0 + 1 = 5; => j=2x4 + 0 + 1 = 9; => j=0x4 + 1 + 1 = 2; => j=1x4 + 1 + 1 = 6; => j=2x4 + 1 + 1 = 10; => j=0x4 + 2 + 1 = 3; 26 pour L8, pour lequel i-1 = 7 => j=1x4 + 2 + 1 = 7; pour L9, pour lequel i-1 = 8 => j=2x4 + 2 + 1 = 11; pour L10, pour lequel i-1 = 9 => j=0x4 + 3 + 1 = 4; pour L11, pour lequel i-1 = 10 => j=1x4 + 3 + 1 = 8; - pour L12, pour lequel i-1 = 11 => j=2x4 + 3 + 1 = 12 Réception des LLRs au rythme du signal d'horloge Lorsque les LLRs sont reçus en entrée du dispositif de chargement de la mémoire d'entrée au rythme d'un LLR par cycle du signal d'horloge CLK, on ne dispose pas de temps de latence pour le chargement de la mémoire d'entrée. Il est donc souhaitable de pouvoir écrire, en moyenne, un LLR par cycle du signal d'horloge, afin de couvrir les applications dans lesquelles les LLRs sont reçus au rythme d'un LLR par cycle du signal CLK. Cette condition doit être remplie en moyenne seulement, puisqu'on écrit en réalité des mots binaires, du premier ou du second type, correspondant chacun à un nombre L de LLRs. Il s'ensuit des conditions sur le nombre L, propres au cas des LLRs d'information et à celui des LLRs de parité, respectivement. Ces conditions vont maintenant être explicitées.
Pour les LLRs d'information, pour lesquels l'indice i vérifie la relation i <K , on veut que les LLRs du flux de LLRs entrelacés d'indices respectifs i, i+Q, i+2.Q, ..., i+(L-1).Q, appartiennent au même mot binaire du premier type. Ainsi les LLRs d'information de ce mot seront chargés dans la même mémoire RAM du plan mémoire de la mémoire d'entrée. Pour que cette condition soit réalisée, on peut montrer qu'il suffit que le nombre qui est égal à QN L soit un x
nombre entier.
Pour les LLRs de parité, pour lesquels l'indice i vérifie la relation i > K , on veut que les LLRs du flux de LLRs entrelacés d'indices respectifs i, i+ P •(NùK), i+2• P .(NùK), ..., i+(Lù1)• P •(NùK) appartiennent au même
mot binaire du second type. Ainsi les LLRs de parité de ce mot seront chargés dans la même mémoire RAM du plan mémoire de la mémoire d'entrée. Pour que cette condition soit réalisée, on peut montrer qu'il suffit que le nombre qui N est égal à Q L soit un nombre entier. (N-K)x P Nombre de SPM et de FIFO nécessaires En notant "floor" la fonction mathématique qui retourne le plus grand nombre entier inférieur au nombre passé en argument, le nombre Q1 de flux de mots binaires du premier type, et donc le nombre QI de SPMs nécessaires, est égal à Q x K si le nombre Q x K est entier, ou égal à floor Q x N) +1 sinon. J De même , le nombre Q2 de fluxde mots binaires du second type, et 10 donc le nombre Q2 de FIFOs à deux dimensions bouclées qui sont nécessaires, est égal à Q x 1- N, si le nombre Q x K est entier, ou égal à Q -floor r K Qx sinon. N, Par exemple: si Q = 3 et N = 3/5 , alors Q1= 2 et Q2 = 2; 15 - si Q = 4 et N =1/2, alors Q1= 2 et Q2 = 2; si Q = 5 et N =1/2, alors Q1= 3 et Q2 = 3; si Q = 5 et N = 3/4, alors Q1= 4 et Q2 = 2; et, si Q = 4 et N = 2/3 , alors Q1= 3 et Q2 = 2. Les SPMs reçoivent en entrée les LLRs d'information en série, au 20 rythme du signal d'horloge CLK. Ils délivrent en sortie des mots de L LLRs d'information en parallèle (mots du second type), à un rythme L fois plus faible. Les FIFOs à deux dimensions bouclées ont un nombre Wb de lignes et chaque ligne a une largeur correspondant à un nombre L-1 de LLRs de parité, pour stocker des mots binaires correspondants (lesquels, après concaténation d'un LLR supplémentaire, forment des mots du second type).
Exemple de dispositif avec entrelacement En référence à la figure 15, le dispositif de chargement de la mémoire d'entrée du décodeur LDPC comprend, dans le cas du présent exemple deux SPMs (car ici Q1=2) et deux FIFOs (car ici Q2=2). On nomme ici SPM1, SPM2, FIFO1 et FIFO2 ces quatre éléments, et on les désigne à la figure par les références 71a, 71b, 72a et 72b, respectivement. D'un point de vue structurel, le dispositif dans un tel cas se distingue de celui décrit plus haut en référence au schéma de la figure 7 (pour le cas sans désentrelacement), uniquement en ce qu'il comprend les deux SPMs 71a et 71 b en parallèle entre le noeud fonctionnel 75 et le multiplexeur 74, et les deux FIFOs 72a et 72b en parallèle entre le noeud fonctionnel 76 et le multiplexeur 74. Il s'ensuit que le multiplexeur comprend quatre entrée respectivement couplées à la sortie du SPM 71a, à la sortie du SPM 71b, à un noeud fonctionnel 77a correspondant à la sortie de la FIFO 72a, et à un noeud fonctionnel 77b correspondant à la sortie de la FIFO 72b. De même, le module de commande 73 génère des signaux d'autorisation de fonctionnement SPM1_EN, SPM2_EN, FIF01_EN et FIF02_EN appliqués, respectivement, au SPM 71a, au SPM 71b, à la FIFO 72a et à la FIFO 72b. Pour le reste, le dispositif est semblable à celui de la figure 7, et n'est donc pas décrit en détails à nouveau ici.
Exemple de fonctionnement avec entrelacement En référence aux chronogrammes de la figure 16, le fonctionnement du 25 dispositif va maintenant être décrit pour la réception et le chargement dans le plan mémoire des LLRs d'un flux de LLRs entrelacés correspondant à une trame LDPC. Dans cet exemple, N=18, P=6, L=3, P = 2, r = N =1/3, Wa=1, Wb=2 et Q=3. Dans cet exemple, le plan mémoire de la mémoire d'entrée du 30 décodeur LDPC est formé de deux mémoires RAM, respectivement 41 a et 41 b.
De plus, le nombre QI de SPMs est égal à l'unité, et le nombre Q2 de FIFOs est égal à 2. Cet exemple correspond donc au cas d'un dispositif selon la figure 15 dont le second SPM 71b serait absent. C'est pour des raisons de clarté de la figure que l'on a procédé à cette simplification supplémentaire de l'exemple ici décrit. Dit autrement, on génère dans cet exemple un unique flux de mots binaires du premier type (avec des LLRs d'information), et deux flux de mots binaires du second type (avec des LLRs de parité).
La 1 ère ligne donne les fronts d'activation du signal CLK. La 2ème ligne indique les LLRs reçus, notés L1, L2, ..., ..., L18,... Il s'agit d'un flux de LLRs entrelacés. Les 3eme, 4ème et 5ème lignes les signaux WEN donnent les signaux d'activation SPM1_EN, FIFOI_EN et FIFO2_EN, du SPM 71a, de la FIFO 72a, et de la FIFO 72b, respectivement. Les 6ème et 7ème lignes donnent les signaux RAMa_WEN et RAMb_WEN d'autorisation d'écriture dans les mémoires RAM 41a et 41b, respectivement. Ces signaux sont des déclinaisons du signal noté WEN à la figure 15 (voir plus haut). Ils sont actifs (à l'état logique bas) pour autoriser l'écriture en mode page d'un mot binaire dans la mémoire RAM associée. La sème ligne indique les cycles d'horloge où des données sont écrites dans le plan mémoire, en provenance du SPM 71a (évènements notés "sortie SPM1 ") et des FIFOs 72a et 72b (évènements notés "sortie FIFO1" et "sortie FIFO2", respectivement).
Au dessus de la 8ème ligne, on a représenté symboliquement l'évolution du contenu de la FIFO 72a, qui sert à générer le premier flux de mots binaires du second type. De même, au dessous de cette 8ème ligne, on a représenté symboliquement l'évolution du contenu de la FIFO 72b, qui sert à générer le second flux de mots binaires du second type. Sous la commande du module 73, on forme un flux de P x Wa =2 L
mots binaires du premier type, correspondant chacun à un nombre L=3 de LLRs d'information à l'aide du SPM 71a, ainsi que deux flux de P x Wb = 4 mots binaires du second type au total (deux tels mots par tel flux), correspondant chacun à un nombre L=3 de LLRs de parité à l'aide des FIFO 72a et 72b, respectivement. A cet effet, le module 73 délivre les signaux d'autorisation de fonctionnement SPM1_EN, FIFO2._EN et FIFO1_EN, respectivement au SPM 71a, à la FIFO 72a et à la FIFO 72b. Toujours sous la commande du module de commande, un LLR du flux de LLRs entrelacés reçus sur trois, à compter de L1, est orienté vers le SPM 71a, un tel LLR sur trois à compter de L2 est orienté vers la FIFO 72a, et un tel LLR sur trois à compter de L3 est orienté vers la seconde FIFO 72b. Les deux mots L7L4L1 et L16L13L10 composent l'unique flux de mots binaires du premier type, correspondant aux 6 LLRs d'information, qui est formé à l'aide du SPM 71a. Après la réception de L7, le mot binaire L7L4L1 est écrit dans la mémoire RAM 41a en sorte qu'on obtient la configuration de chargement de la mémoire conforme à la figure 17a. Après la réception de L16, le mot binaire L16L13L10 est écrit dans la mémoire RAM 41b, à côté du précédent, en sorte qu'on obtient la configuration de chargement de la mémoire conforme à la figure 17d.
Les deux mots L14L8L2 et L17L11L5 composent le premier flux de mots binaires du second type, correspondant à 6 des 12 LLRs de parité, qui est formé à l'aide de la FIFO 72a. Après la réception de L14, le mot binaire L14L8L2 est écrit dans la mémoire RAM 41a en sorte qu'on obtient la configuration de chargement de la mémoire conforme à la figure 17b. Après la réception de L17, pour le mot binaire L17L11L5 est écrit également dans la mémoire RAM 41a, en dessous du précédent, en sorte qu'on obtient la configuration de chargement de la mémoire conforme à la figure 17e. Les deux mots L15L9L3 et L18L12L6 composent le second flux de mots binaires du second type, correspondant aux 6 autres des 12 LLRs de parité, qui est formé à l'aide de la FIFO 72b. Après la réception de L15, le mot binaire L15L13L3 est écrit dans la mémoire RAM 41b en sorte qu'on obtient la configuration de chargement de la mémoire conforme à la figure 17c. Après la réception de L18, pour le mot binaire L18L12L6 est écrit également dans la mémoire RAM 41b, en dessous du précédent, en sorte qu'on obtient la configuration de chargement de la mémoire conforme à la figure 17f. Ainsi qu'on le comprend mieux à l'aide de l'exemple ci-dessus, le désentrelacement du flux des LLRs entrelacés reçus en entrée du dispositif, qui conduit à la formation des flux de LLRs désentrelacés, puis le chargement des LLRs désentrelacés en respectant la contrainte de chargement de la mémoire qui résulte de la forme de la matrice H, sont effectués en même temps. Par ailleurs, ce mécanisme fonctionne parfaitement bien même lorsque les LLRs sont reçus au rythme du signal d'horloge du décodeur LDPC, et qu'il n'y a donc aucune latence susceptible d'être mise à profit.

Claims (18)

REVENDICATIONS
1. Procédé de chargement d'une mémoire d'entrée d'un décodeur LDPC avec des données correspondant à une trame LDPC à décoder et comprenant un nombre N de rapports de vraisemblance logarithmique, ou LLRs, dont un nombre K de LLRs d'information et un nombre N-K de LLRs de parité, où N et K sont des nombres entiers, dans lequel: - on forme au moins un flux de mots binaires d'un premier type, correspondant chacun à une pluralité de LLRs d'information, à l'aide d'un module de conversion série/parallèle, ainsi qu'au moins un flux de mots binaires d'un second type, correspondant chacun à une pluralité de LL.Rs de parité, à l'aide d'un dispositif d'entrelacement lignes-colonnes comprenant une mémoire tampon de type "premier entré premier sorti", ou FIFO, à deux dimensions bouclée; et, on effectue des premiers accès mémoire en mode page pour écrire les mots binaires du premier type dans une première zone de la mémoire d'entrée, et on effectue des seconds accès mémoire en mode page pour écrire les mots binaires du second type dans une seconde zone de la mémoire d'entrée.
2. Procédé selon la revendication 1 dans lequel, la seconde zone de la mémoire d'entrée comprenant un nombre déterminé Wb de lignes, la FIFO a 20 une capacité de Wb mots binaires.
3. Procédé selon la revendication 1 ou la revendication 2 dans lequel, la première zone de la mémoire d'entrée étant adressable par mots binaires correspondant chacun à un nombre L de LLRs en parallèle, où L est un 25 nombre entier déterminé, le convertisseur série/parallèle délivre en sortie les mots binaires du premier type en tant que mots binaires correspondant à un nombre L de LLRs d'information en parallèle.
4. Procédé selon l'une quelconque des revendications 1 à 3 dans lequel, la seconde zone de la mémoire d'entrée étant adressable par mots binaires correspondant chacun à un nombre L de LLRs en parallèle, où L est un nombre entier déterminé, les mots binaires du second type sont des mots binaires correspondant à un nombre L de LLRs de parité en parallèle, et les mots binaires stockés dans la FIFO sont des mots binaires correspondant à un nombre L-1 de LLRs de parité en parallèle, chaque tel mot délivré par la FIFO étant complété par un LLR de parité pour former un mot binaire du second type.
5. Procédé selon l'une quelconque des revendications précédentes dans lequel, les LLRs étant reçus sous la forme d'un flux de LLRs entrelacés avec une profondeur d'entrelacement correspondant à un nombre Q de LLRs, on effectue un désentrelacement en formant parallèlement un nombre QI de flux de mots binaires du premier type au moyen de QI modules de conversion série/parallèle respectifs, et un nombre Q2 de flux de mots binaires du second type au moyen de Q2 dispositifs d'entrelacement lignes-colonnes respectifs comprenant chacun une FIFO à deux dimensions bouclée, où QI et Q2 sont des nombres entiers déterminés qui dépendent du taux K du codage LDPC et 20 qui sont tels que Q1 + Q2 Q .
6. Procédé selon la revendication 5 dans lequel: - le nombre QI de flux de mots binaires du premier type est égal à Q x N si le nombre QxN est entier, ou égal à flood Q x N 1 + 1 sinon; et, i 25 - le nombre Q2 de flux de mots binaires du second type égal à Q x 1 ù NJ si le nombre QxN est entier, ou égal à Q ù floor QxN sinon,où "floor" désigne la fonction mathématique qui retourne le plus grand nombre entier inférieur au nombre passé en argument.
7. Procédé selon l'une quelconque des revendications 5 et 6, dans lequel le nombre qui est égal à QN L est un nombre entier. x
8. Procédé selon l'une quelconque des revendications 5 à 7, dans lequel le N nombre qui est égal à Q L est un nombre entier, où P désigne un indice (N-K)xP de parallélisme du décodeur LDPC.
9. Dispositif de chargement d'une mémoire d'entrée d'un décodeur LDPC avec des données correspondant à une trame LDPC à décoder et comprenant un nombre N de rapports de vraisemblance logarithmique, ou LLRs, dont un nombre K de LLRs d'information et un nombre N-K de LL.Rs de parité, où N et K sont des nombres entiers, comprenant: - au moins un module de conversion série/parallèle (71) configuré pour former un flux de mots binaires d'un premier type correspondant chacun à une pluralité de LLRs d'information, ainsi qu'au moins un dispositif d'entrelacement lignes-colonnes qui comprend une mémoire tampon de type "premier entré premier sorti" (72), ou FIFO, à deux dimensions bouclée et qui est configuré pour former un flux de mots binaires d'un second type correspondant chacun à une pluralité de LLRs de parité; ainsi que, - une unité de commande (73) des accès mémoire, configurée pour écrire en mode page les mots binaires du premier type dans une première zone de la mémoire d'entrée, et pour écrire les mots binaires du second type dans une seconde zone de la mémoire d'entrée.
10. Dispositif selon la revendication 9 dans lequel, la seconde zone de la mémoire d'entrée comprenant un nombre déterminé Wb de lignes, la FIFO a une capacité de Wb mots binaires.
11. Dispositif selon la revendication 9 ou la revendication 10 dans lequel, la première zone de la mémoire d'entrée étant adressable par mots binaires correspondant chacun à un nombre L de LLRs en parallèle, où L est un nombre entier déterminé, le convertisseur série/parallèle est adapté pour délivrer en sortie les mots binaires du premier type en tant que mots binaires correspondant à un nombre L de LLRs d'information en parallèle.
12. Dispositif selon l'une quelconque des revendications 9 à 11 dans lequel, la seconde zone de la mémoire d'entrée étant adressable par mots binaires correspondant chacun à un nombre L de LLRs en parallèle, où L est un nombre entier déterminé, les mots binaires du second type sont des mots binaires correspondant à un nombre L de LLRs de parité en parallèle, et les mots binaires stockés dans la FIFO sont des mots binaires correspondant à un nombre L-1 de LLRs de parité en parallèle, le dispositif étant adapté pour compléter chaque tel mot délivré par la FIFO par un LLR de parité pour former un mot binaire du second type.
13. Dispositif selon l'une quelconque des revendications 9 à 13 dans lequel, les LLRs étant reçus sous la forme d'un flux de LLRs entrelacés avec une profondeur d'entrelacement correspondant à un nombre Q de LLRs, le dispositif est adapté pour effectuer un désentrelacement des LLRs et comprend à cet effet un nombre de QI modules de conversion série/parallèle pour former parallèlement Q1 de flux de mots binaires du premier type respectifs, et un nombre Q2 de dispositifs d'entrelacement lignes-colonnes pour former Q2 flux de mots binaires du second type respectifs, lesdits Q1 et Q2 dispositifs d'entrelacement lignes-colonnes comprenant chacun une FIFO àdeux dimensions bouclée, où QI et Q2 sont des nombres entiers déterminés qui dépendent du taux du codage LDPC et qui sont tels que Q1 + Q2 Q .
14. Dispositif selon la revendication 13 dans lequel: - le nombre Q1 de flux de mots binaires du premier type est égal à Q x N si le K i nombre Q x est entier, ou égal à floor Q x K 1+ 1 sinon; et, J l - le nombre Q2 de flux de mots binaires du second type égal à Q x 1û N si le i nombre Q x K est entier, ou égal à Q û floor Q x N J sinon, où "floor" désigne la fonction mathématique qui retourne le plus grand nombre 10 entier inférieur au nombre passé en argument.
15. Dispositif selon l'une quelconque des revendications 13 et 14, dans lequel le nombre qui est égal à QN L est un nombre entier. x 15
16. Dispositif selon l'une quelconque des revendications 13 à 15, dans N lequel le nombre qui est égal à Q L est un nombre entier, où P désigne (NûK)xP un indice de parallélisme du décodeur LDPC.
17. Décodeur LDPC comprenant un dispositif selon l'une quelconque des 20 revendications 9 à 16.
18. Appareil comprenant un décodeur LDPC selon la revendication 17.
FR0603456A 2006-04-19 2006-04-19 Chargement de la memoire d'entree d'un decodeur ldpc avec des donnees a decoder Expired - Fee Related FR2900294B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR0603456A FR2900294B1 (fr) 2006-04-19 2006-04-19 Chargement de la memoire d'entree d'un decodeur ldpc avec des donnees a decoder
US11/737,442 US7966544B2 (en) 2006-04-19 2007-04-19 Loading the input memory of an LDPC decoder with data for decoding

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0603456A FR2900294B1 (fr) 2006-04-19 2006-04-19 Chargement de la memoire d'entree d'un decodeur ldpc avec des donnees a decoder

Publications (2)

Publication Number Publication Date
FR2900294A1 true FR2900294A1 (fr) 2007-10-26
FR2900294B1 FR2900294B1 (fr) 2008-07-04

Family

ID=37671963

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0603456A Expired - Fee Related FR2900294B1 (fr) 2006-04-19 2006-04-19 Chargement de la memoire d'entree d'un decodeur ldpc avec des donnees a decoder

Country Status (2)

Country Link
US (1) US7966544B2 (fr)
FR (1) FR2900294B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9454333B2 (en) 2014-10-27 2016-09-27 International Business Machines Corporation Parity logs for RAID systems with variable capacity media

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100996030B1 (ko) * 2007-03-06 2010-11-22 삼성전자주식회사 통신 시스템에서 신호 송수신 장치 및 방법
US8873671B2 (en) * 2008-03-26 2014-10-28 Qualcomm Incorporated Method and system for LLR buffer reduction in a wireless communication modem
US8151160B1 (en) * 2008-05-09 2012-04-03 Lsi Corporation Configurable low-density parity-check decoder for LDPC codes of arbitrary block size and method of configuring the same
KR20100058260A (ko) * 2008-11-24 2010-06-03 삼성전자주식회사 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 채널부호/복호 장치 및 방법
JP4867980B2 (ja) * 2008-11-26 2012-02-01 住友電気工業株式会社 誤り訂正復号装置
JP2012244305A (ja) * 2011-05-17 2012-12-10 Toshiba Corp メモリコントローラ、半導体メモリ装置、および復号方法
EP2858249A1 (fr) * 2013-10-07 2015-04-08 Electronics and Telecommunications Research Institute Codeur pour code de contrôle de parité à faible densité (LDPC)
CA2864635C (fr) * 2014-08-14 2017-06-27 Sung-Ik Park Codeur de verification de parite a faible densite ayant une longueur de 16 200 bits et un taux de code de 3/15 et procede de codage de verification de parite a faible densite employant ledit codeur
US20160336968A1 (en) * 2015-05-11 2016-11-17 Comtech Ef Data Corp. System and method for encoding and decoding using a plurality of constellations within a single fec block

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040093458A1 (en) * 1999-02-18 2004-05-13 Hitachi, Ltd. Information processing apparatus using index and TAG addresses for cache
US20050223305A1 (en) * 2004-03-31 2005-10-06 Shachar Kons Method and apparatus for efficient computation of check equations in periodical low density parity check (LDPC) codes
US20050262421A1 (en) * 2002-05-31 2005-11-24 Tran Hau T Efficient front end memory arrangement to support parallel bit node and check node processing in LDPC (Low Density Parity Check) decoders
US20050262424A1 (en) * 2002-08-15 2005-11-24 Tran Hau T Efficient design to implement LDPC (Low Density Parity Check) decoder
US20050268206A1 (en) * 2002-08-15 2005-12-01 Hau Thien Tran Common circuitry supporting both bit node and check node processing in LDPC (Low Density Parity Check) decoder
FR2871975A1 (fr) * 2004-06-22 2005-12-23 St Microelectronics Sa Decodeur ldpc
FR2871976A1 (fr) * 2004-06-22 2005-12-23 St Microelectronics Sa Decodeur ldpc

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0452223A3 (en) * 1990-04-13 1994-06-08 Digital Equipment Corp Telecommunications network with plesiochronous transfer mode
US5359468A (en) * 1991-08-06 1994-10-25 R-Byte, Inc. Digital data storage tape formatter
US5940863A (en) * 1996-07-26 1999-08-17 Zenith Electronics Corporation Apparatus for de-rotating and de-interleaving data including plural memory devices and plural modulo memory address generators
US6647428B1 (en) * 2000-05-05 2003-11-11 Luminous Networks, Inc. Architecture for transport of multiple services in connectionless packet-based communication networks
US7000136B1 (en) * 2002-06-21 2006-02-14 Pmc-Sierra, Inc. Efficient variably-channelized SONET multiplexer and payload mapper
US6957375B2 (en) * 2003-02-26 2005-10-18 Flarion Technologies, Inc. Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation
KR100630177B1 (ko) * 2004-02-06 2006-09-29 삼성전자주식회사 최대 다이버시티 이득을 가지는 시공간 저밀도 패리티검사 부호 부호화/복호화 장치 및 방법

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040093458A1 (en) * 1999-02-18 2004-05-13 Hitachi, Ltd. Information processing apparatus using index and TAG addresses for cache
US20050262421A1 (en) * 2002-05-31 2005-11-24 Tran Hau T Efficient front end memory arrangement to support parallel bit node and check node processing in LDPC (Low Density Parity Check) decoders
US20050262424A1 (en) * 2002-08-15 2005-11-24 Tran Hau T Efficient design to implement LDPC (Low Density Parity Check) decoder
US20050268206A1 (en) * 2002-08-15 2005-12-01 Hau Thien Tran Common circuitry supporting both bit node and check node processing in LDPC (Low Density Parity Check) decoder
US20050223305A1 (en) * 2004-03-31 2005-10-06 Shachar Kons Method and apparatus for efficient computation of check equations in periodical low density parity check (LDPC) codes
FR2871975A1 (fr) * 2004-06-22 2005-12-23 St Microelectronics Sa Decodeur ldpc
FR2871976A1 (fr) * 2004-06-22 2005-12-23 St Microelectronics Sa Decodeur ldpc

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
URARD P ET AL: "A 135Mb/s DVB-S2 compliant codec based on 64800b LDPC and BCH codes", SOLID-STATE CIRCUITS CONFERENCE, 2005. DIGEST OF TECHNICAL PAPERS. ISSCC. 2005 IEEE INTERNATIONAL SAN FRANCISCO, CA, USA FEB. 6-10, 2005, PISCATAWAY, NJ, USA,IEEE, 6 February 2005 (2005-02-06), pages 446 - 448, XP010830898, ISBN: 0-7803-8904-2 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9454333B2 (en) 2014-10-27 2016-09-27 International Business Machines Corporation Parity logs for RAID systems with variable capacity media

Also Published As

Publication number Publication date
US7966544B2 (en) 2011-06-21
US20070283209A1 (en) 2007-12-06
FR2900294B1 (fr) 2008-07-04

Similar Documents

Publication Publication Date Title
FR2900294A1 (fr) Chargement de la memoire d&#39;entree d&#39;un decodeur ldpc avec des donnees a decoder
EP0511141B1 (fr) Procédé de codage correcteur d&#39;erreurs à au moins deux codages convolutifs systématiques en parallèle, procédé de décodage itératif, module de décodage et décodeur correspondants
US8127199B2 (en) SDRAM convolutional interleaver with two paths
EP1841078B1 (fr) Circuit de réception double canaux
FR2905210A1 (fr) Procede et dispositif de decodage par couches d&#39;une succession de blocs encodes avec un code ldpc
EP0848501B1 (fr) Système et procédé de transmission numérique comportant un code produit combiné à une modulation multidimensionnelle
FR2512568A1 (fr) Systeme pour transferer des donnees binaires par une pluralite de canaux au moyen d&#39;un codeur operant par convolution
EP0108655A1 (fr) Système de détection et de correction d&#39;erreurs de transmission d&#39;un message binaire utilisant un code cyclique détecteur et correcteur d&#39;erreurs de type Reed-Solomon entrelacé
FR2905209A1 (fr) Procede et dispositif de decodage de blocs encodes avec un code ldpc
EP1332557B1 (fr) Module, dispositif et procede de decodage a haut debit, d&#39;un code concatene
FR2785743A1 (fr) Dispositif et procede d&#39;adaptation des turbocodeurs et des decodeurs associes a des sequences de longueur variable
EP0848524A1 (fr) MAQ à codage perforé en trellis, avec décodage itératif
FR2540690A1 (fr) Verificateur de codeur
EP2343811A1 (fr) Procédé et dispositif d&#39;entrelacement en ligne et en colonne pour blocs de taille variable
WO2007083066A1 (fr) Procedes d&#39;encodage et de decodage rapides et dispositifs associes
EP0204635B1 (fr) Procédé de transmission en blocs de mots d&#39;information numérique
FR2891419A1 (fr) Decodage d&#39;une pluralite de flux d&#39;informations codees selon un algorithme de codage par blocs.
FR2871976A1 (fr) Decodeur ldpc
EP0204612B1 (fr) Procédé de transmission, avec possibilité de correction de paquets d&#39;erreurs, de messages d&#39;information et dispositifs de codage et de décodage pour la mise en oeuvre de ce procédé
EP2415193B1 (fr) Procédé et dispositif de modulation mettant en oeuvre une modulation différentielle, procédé et dispositif de démodulation, signal et produits programme d&#39;ordinateur correspondants
EP0463598A1 (fr) Circuit de décodage de codes convolutionnels pour l&#39;exécution de l&#39;étape de stockage et d&#39;exploration inverse des chemins survivants d&#39;un algorithme de viterbi
FR2914447A1 (fr) Dispositif electronique de decalage de donnees en particulier pour du codage/decodage avec un code ldpc
FR2838581A1 (fr) Procede de codage et/ou de decodage de codes correcteurs d&#39;erreurs, dispositifs et signal correspondants
FR2890804A1 (fr) Traitement de blocs dans un dispositif de decodage par blocs
FR2922699A1 (fr) Decodage iteratif dans un reseau maille, procede et systeme correspondants

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20131231