FR2871975A1 - Decodeur ldpc - Google Patents

Decodeur ldpc Download PDF

Info

Publication number
FR2871975A1
FR2871975A1 FR0451307A FR0451307A FR2871975A1 FR 2871975 A1 FR2871975 A1 FR 2871975A1 FR 0451307 A FR0451307 A FR 0451307A FR 0451307 A FR0451307 A FR 0451307A FR 2871975 A1 FR2871975 A1 FR 2871975A1
Authority
FR
France
Prior art keywords
word
type
message
storage means
messages
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
FR0451307A
Other languages
English (en)
Other versions
FR2871975B1 (fr
Inventor
Pascal Urard
Laurent Paumier
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 FR0451307A priority Critical patent/FR2871975B1/fr
Priority to US11/158,516 priority patent/US7685502B2/en
Publication of FR2871975A1 publication Critical patent/FR2871975A1/fr
Application granted granted Critical
Publication of FR2871975B1 publication Critical patent/FR2871975B1/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/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/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

Abstract

L'invention concerne un décodeur (45) LDPC comprenant un nombre déterminé de modules de traitement (24) fonctionnant en parallèle, un moyen de mémorisation (26) adapté à contenir des premiers mots contenant une juxtaposition de messages d'un premier type, et des seconds mots contenant une juxtaposition de messages d'un second type, un module de fourniture de messages (46) adapté à fournir à chaque module de traitement un message du premier type ou un message du second type, et un module d'écriture de messages adapté à écrire, dans le moyen de mémorisation, des premiers mots ou des seconds mots. Le module de fourniture de messages est adapté à fournir un message à une position dans un mot qui dépend du mot, ou, le module d'écriture de messages est adapté à écrire chaque message à une position dans le mot qui dépend du mot.

Description

DÉCODEUR LDPC
La présente invention concerne un décodeur LDPC (Law Density Parity Check) ou décodeur à contrôle de parité à faible densité.
Le codage LDPC permet d'obtenir des performances très proches de la limite théorique de Shannon. Les décodeurs LDPC ont généralement des performances supérieures à celle des décodeurs à turbocodes et sont actuellement utilisés dans des systèmes de diffusion, par exemple des systèmes de diffusion de télé-vision numérique par satellite.
Le codage LDPC consiste, pour un mot donné s contenant k bits, à émettre un mot u contenant n bits, dont n-k bits supplémentaires appelés bits de parité qui satisfont n-k équations de parité. On appelle matrice de contrôle du code la matrice H ayant n-k lignes et n colonnes vérifiant la relation suivante: H*tu=0 (1) La taille des matrices H généralement utilisées est importante puisqu'elles peuvent comporter plus de 60000 colonnes et 50000 lignes. En outre, de telles matrices sont pratiquement vides et peuvent comporter un "1" pour environ 10000 "0". C'est pour cela qu'elles sont appelées matrices à faible densité.
On appelle degré de noeud de parité (de l'anglais "check node") d'une ligne, le nombre de "1" de la ligne et degré de noeud de bit (de l'anglais "bit node") d'une colonne le nombre de "1" de la colonne. Il existe deux types de code LDPC: 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. Les degrés de noeud de parité et de noeud de bit sont alors constants. Un code irrégulier n'a pas de degrés de noeud de parité et/ou de degrés de noeud de bit constants et a un caractère plus aléatoire. Toutefois, c'est pour des codes irréguliers qu'on obtient les meilleures performances. Le problème d'une matrice irrégulière est qu'elle est aléatoire. Le décodage peut alors être difficile. La norme DVB-S2 européenne de télé-vision numérique par satellite préconise l'utilisation d'une matrice H qui a un degré de noeud de parité constant, et un degré de noeud de bit pouvant prendre trois valeurs.
La figure 1 représente un graphe correspondant à une représentation équivalente d'une matrice H d'un code LDPC. Chaque cercle 10 représente un noeud de bit. A titre d'exemple six noeuds de bit BNi, i variant de 0 à 5, sont représentés. Chaque carré 12 représente un noeud de parité. A titre d'exemple, quatre noeuds de parité CNj, j variant de 0 à 3, sont représentés. Des branches 14 relient certains noeuds de bit BNi à certains noeuds de parité CNj. La présence d'une branche 14 entre un noeud de bit d'indice i et un noeud de parité d'indice j signifie que la matrice H équivalente comporte un "1" à la ligne j et à la colonne i. On note Ne le nombre total de branches 14 du graphe. Le nombre Ne correspond donc au nombre de "1" de la matrice H. La matrice H équivalente au graphe représenté à la figure 1 est la suivante: (1 1 0 0 1 0S" 1 0 1 0 0 1 H 0 1 0 1 1 0 (2) \0 0 1 1 0 1) Une telle matrice H a un degré de noeud de bit constant égal à 2 et un degré de noeud de parité constant égal à 3.
Le décodage LDPC utilise des rapports de vraisemblance logarithmique (LogLikelyhood Ratio ou LLR). Pour un bit d d'information émis auquel correspond un signal y reçu par le décodeur après l'ajout du bruit du canal de transmission, le rapport LLR du bit d par rapport au signal y est défini de la façon suivante: P (d=01y) LLR(y)=LLR(d'y)=lnP(d-1ly) (3) où P (d = 0 y) est la probabilité que le bit émis d soit égal à 0 en fonction de la valeur y reçue et P(d = l y) est la probabilité que le bit émis d soit égal à 1 en fonction de la valeur y reçue. De telles probabilités dépendent notamment des caracté- ristiques du canal de transmission. Plus LLR(y) est grand, plus la probabilité que le bit émis d est égal à "0" est grande. A titre d'exemple, on peut décider, pour un signal y reçu, que si LLR(y) est négatif, alors le bit d émis est un "1", et que, sinon, le bit d émis est un "0".
Le décodage LDPC est basé sur un algorithme appelé algorithme d'échange de messages (de l'anglais "Message Passing"). Un tel algorithme consiste à associer à chaque noeud de bit un signal reçu auquel correspond un rapport LLR initial, et à échanger, de façon itérative, des messages entre les noeuds de bit 10 et les noeuds de parité 12, le long des branches 14 du graphe correspondant à la matrice H. Les messages échangés sont des rapports de probabilité logarithmiques et permettent de déterminer, après plusieurs itérations, pour chaque signal reçu un rapport LLR corrigé à partir duquel est finalement déterminé quel bit a été émis.
Une itération d'un tel algorithme comprend principalement deux étapes: une étape de "détermination des noeuds de bit" qui consiste, pour chaque noeud de bit, à réunir les messages trans- mis au noeud de bit par les noeuds de parité auxquels le noeud de bit est lié et à renvoyer un nouveau message à chaque noeud de parité auquel le noeud de bit est lié ; et une étape de "détermination de noeud de parité" qui est l'opération symétrique et qui consiste, pour chaque noeud de parité, à réunir les messages transmis au noeud de parité par les noeuds de bit auxquels le noeud de parité est lié et à renvoyer un nouveau message à chaque noeud de bit auquel le noeud de parité est lié.
On peut en fait considérer que chaque branche 14 correspond à un élément de mémoire dans lequel on lit un message avant chaque étape de détermination de noeuds de bit ou de parité et dans lequel on écrit un message après chaque étape de détermination de noeuds de bit ou de parité.
L'algorithme de décodage LDPC va maintenant être décrit plus précisément pour un graphe ayant dbn noeuds de bits BNi, i variant de 0 à dbn-1, et dcn noeuds de parité CNj, j variant de 0 à dcn-1. Pour la première itération, l'étape de détermination des noeuds de bit est réalisée en utilisant, pour chaque noeud de bit BNi, la valeur LLR (yi) où yi est le signal reçu associé au noeud de bit BNi. Les valeurs LLR(yi) sont obtenues à partir des caractéristiques du canal de transmission. Le message vi_ j, appelé message de noeud de bit transmis par le noeud de bit BNi vers le noeud de parité CNj, est initialisé de la façon suivante: vi j =LLR (yi) (4) L'étape de détermination des noeuds de parité suivante consiste, pour chaque noeud de parité CNj, à transmettre un message wj_>i, appelé message de noeud de parité, à chaque noeud de bit BNi relié au noeud de parité CNj. Chaque message wj+i est déterminé à partir de l'équation de parité associée au noeud de parité CNj. Pour cela, on utilise simplement les messages vk_*j fournis par les noeuds de bit BNk reliés au noeud de parité CNj à l'exception du noeud de bit BNi auquel le message wj_>i est transmis et on obtient le message wj_>i en vérifiant l'équation de parité. Soit S1j le sous-ensemble de [0,dbn-1] contenant les indices k tel que les noeuds de bit Bnk sont reliés au noeud de parité CNj. L'expression de wj>i est donnée par la relation suivante: 1 + HkES1 j,k i tanh(vk->j/2) (5) 5 = n 1_ HkeSl j,k i tanh(vk_* j/2) Pour les itérations suivantes, l'étape de détermination des noeuds de bit est réalisée, pour chaque noeud de bit BNi, à partir des messages fournis par les noeuds de parité CNj reliés au noeud de bit BNi. On fournit, à chaque noeud de parité CNj relié au noeud de bit BNi, un message correspondant à la somaae de la valeur initiale LLR(yi) et de tous les messages reçus depuis les noeuds de parité reliés au noeud de bit BNi à l'exception du message émis par le noeud CNj. Soit S2i le sous ensemble de [0,dcn-l] contenant les indices k tel que les noeuds de parité Cnk sont reliés au noeud de bit BNi. L'expression de vi_3j est donc la suivante: vi_>j = LLR(yi) + EkES2i,k j W k- i (6) Une fois qu'un nombre déterminé d'itérations a été réalisé, on détermine, pour chaque noeud de bit BNi, une valeur 20 Li correspondant à un rapport LLR corrigé. Li est déterminé par l'équation suivante: Li = LLR(yi) + EkES2i W k-*j (7) On décide alors, pour chaque noeud de bit BNi, à partir de la valeur Li, quelle est la valeur du bit associé au signal yi reçu. Par exemple, si Li est négatif ou nul, on peut décider que le bit est égal à 1 et si Li est strictement positif, on peut décider que le bit est égal à 0.
La figure 2 représente schématiquement un exemple de réalisation d'un décodeur LDPC 20 mettant en oeuvre l'algorithme 30 précédemment décrit.
Le décodeur 20 comprend un module de traitement 22 comportant NB modules de traitement élémentaire distinct 24 (Modj, j variant de 1 à NB) adaptés à réaliser en parallèle des opérations de calcul pour fournir les messages de noeud de bit et de parité.
Le décodeur 20 comprend une mémoire vive 26 dans laquelle sont stockés les messages de noeud de bit fournis par les modules 24 après une étape de détermination des noeuds de bit et des messages de noeud de parité fournis par les modules 24 après une étape de détermination des noeuds de parité. La mémoire 26 comprend Ne/NB lignes. A chaque ligne de la mémoire 26 est stocké un mot contenant un nombre de bits égal au produit du nombre NB de modules 24 par le nombre de bits pouvant être traités par un module 24. Chaque mot correspond à la juxtaposition de NB messages de noeud de bit ou de NB messages de noeud de parité.
Le décodeur 20 comprend une mémoire d'entrée 28 dans laquelle sont stockées les valeurs initiales LLR(yi), i variant de 0 à dbn-1. Le décodeur 20 comprend également une mémoire de sortie 30 dans laquelle sont stockées les valeurs Li, i variant de 0 à dbn-l.
Le module de traitement 22 est relié à un multiplexeur 32, commandé par un signal de commande S1, qui, selon la valeur du signal de commande S1, fournit au module de traitement 22, un mot de la mémoire d'entrée 28, un mot directement lu dans la mémoire 26, ou un mot fourni par un module de réarrangement 34 et qui correspond à un mot de la mémoire 26 dans lequel l'ordre des messages constituant le mot a été modifié. Plus précisément, lorsqu'un mot est transmis au module de traitement 22, le message à la première position du mot est transmis au premier module de traitement élémentaire Mod1, etc., et le message à la NBième position du mot est transmis au NBi e module de traitement élémentaire Modem.
Le module de traitement 22 est adapté à fournir suc- cessivement des mots correspondant à la juxtaposition de NB messages de noeud de bit ou de NB messages de noeud de parité.
Plus précisément, lorsqu'un mot est transmis au module de trai- tement 22, le message à la première position du mot est fourni par premier module de traitement élémentaire Mod1, etc., et le message à la NBième position du mot est fourni par le NBième module de traitement élémentaire ModNB. Les mots fournis par le module de traitement 22 peuvent être transmis à la mémoire de sortie 30 ou à un module de réarrangement 38 adapté à fournir un nouveau mot à partir d'un mot reçu et correspondant au mot reçu dans lequel l'ordre des NB messages de noeud de bit ou des NB messages de noeud de parité est modifié.
Le module de réarrangement 38 attaque une première entrée d'un multiplexeur 40, commandé par un signal S3. Le module de traitement 22 attaque une seconde entrée du multiplexeur 40. Selon la valeur de S3, le multiplexeur 40 fournit à la mémoire 26 le mot issu du module de réarrangement 38 ou du module de traitement 22.
Le décodeur 20 comprend un module de fourniture d'adresse 42, comprenant par exemple une mémoire morte, à chaque ligne de laquelle étant stockées une adresse de la mémoire 26 et une donnée de réarrangement. Les modules de réarrangement 34 ou 38 sont adaptés à modifier l'ordre des messages dans un mot à partir d'une donnée de réarrangement. La donnée de réarrangement peut correspondre à un nombre de positions de décalage. En lisant successivement les lignes du module de fourniture d'adresse 42, on obtient une suite d'adresses de la mémoire 26 dans un ordre différent de l'ordre régulier de lecture des lignes de la mémoire 26.
Lors du fonctionnement du décodeur 20, pour une étape de détermination d'un noeud de bit ou pour une étape de détermination d'un noeud de parité, un module élémentaire 24 est amené à utiliser des messages de noeud de bit ou de parité qui se trouvent à des emplacements différents dans la mémoire 26.
Généralement, on répartit les messages dans la mémoire 26 de sorte que, lors d'une étape de détermination des noeuds de parité, les mots puissent être lus successivement selon l'ordre de lecture régulier de la mémoire 26, le message de noeud de bit placé à la première position de chaque mot de la mémoire 26 étant utilisé par le premier module élémentaire MOD1, etc., et le message placé à la NB.àme position étant utilisé par le NBième module élémentaire MODNB. Après une étape de détermination des noeuds de parité, chaque message de noeud de parité est stocké à la même position que le message de noeud de bit précédemment associé à la même branche.
Lors de l'étape de détermination des noeuds de bit suivante, le module de réarrangement lit les mots de la mémoire 26 dans l'ordre de lecture fourni par le module de fourniture d'adresse 42. Pour chaque mot lu, le module de réarrangement 34 fournit un nouveau mot correspondant au mot lu dans lequel l'ordre des messages est modifié à partir de la donnée de réarrangement du module de fourniture d'adresse 42. Les messages sont, par exemple, décalés vers la gauche d'un nombre de positions égal au nombre de positions de décalage stocké dans le module de fourniture d'adresse 42 pour l'adresse lue. Le message à la première position du nouveau mot est alors fourni au premier module élémentaire Mod1, etc., et le message à la NBieme position du nouveau mot est fourni au NBième module de traiterrent élémentaire ModNB.
A partir d'un mot transmis par le module de traitement 22, le module de réarrangement 38 fournit un nouveau mot qu'il stocke dans la mémoire 26 selon un ordre fourni par le module de fourniture d'adresse 42 de sorte que chaque message de noeud de bit soit stocké au même emplacement que le message de noeud de parité précédent associé à la même branche. Par exemple, chaque nouveau mot correspond au mot reçu dans lequel les messages de noeud de bit sont décalés vers la droite d'un nombre de positions de décalage stocké dans le module de fourniture d'adresse 42.
La mémoire 26 est généralement de grande taille puisque Ne peut être supérieur à 200 000. A titre d'exemple, un module de traitement 22 peut contenir plusieurs centaines de modules de traitement élémentaires 24 fonctionnant en parallèle.
Si chaque message est codé sur une dizaine de bits, chaque mot manipulé par les modules de réarrangement 34, 38 comprend plusieurs milliers de bits. Un circuit de réarrangement adapté à effectuer des opérations de décalage circulaire sur de tels mots peut occuper plusieurs millimètres carré lorsqu'il est réalisé sur un circuit intégré selon une technologie de semiconducteur classique. Ceci correspond à une portion non négligeable de la surface totale du décodeur.
La présente invention vise à obtenir un décodeur LDPC réalisé sur un circuit intégré ayant une surface réduite.
La présente invention vise également à obtenir un décodeur LDPC réalisé sur un circuit intégré ayant une structure simple.
Pour atteindre ces objets, la présente invention pré- voit un décodeur LDPC comprenant un nombre déterminé de modules de traitement fonctionnant en parallèle, chaque module de trai- tement étant adapté à recevoir successivement des messages d'un premier type et à fournir successivement des messages d'un second type à partir d'un premier traitement des messages du premier type et à recevoir des messages du second type et à fournir des messages du premier type à partir d'un second trai- tement des messages du second type, le second traitement étant différent du premier traitement; un moyen de mémorisation adapté à contenir des premiers mots et des seconds mots, chaque premier mot contenant une juxtaposition de messages du premier type en nombre égal audit nombre déterminé, et chaque second mot contenant une juxtaposition de messages du second type en nombre égal audit nombre déterminé ; un module de fourniture de messages adapté à lire des premiers mots ou des seconds mots dans le moyen de mémorisation; à fournir à chaque module de traitement, pour chaque premier mot lu, un message du premier type à une position dans le premier mot qui dépend du module de traitement; et à fournir à chaque module de traitement, pour chaque second mot lu, un message du second type à une position dans le second mot qui dépend du module de traitement; et à un module d'écriture de messages adapté à écrire, dans le moyen de mémorisation, des premiers mots, chaque premier mot contenant des messages du premier type fournis chacun par un module de traitement différent, chaque message du premier type étant à une position dans le premier mot qui dépend du module de traitement associé ; et à écrire, dans le moyen de mémorisation, des seconds mots, chaque second mot contenant des messages du second type fournis chacun par un module de traitement différent, chaque message du second type étant à une position dans le second mot qui dépend du module de traitement associé, le module de fourniture de messages étant, en outre, adapté à fournir ledit message du premier type à une position dans le premier mot qui dépend du premier mot et ledit message du second type à une position dans le second mot qui dépend du second mot, ou, le module d'écriture de messages étant, en outre, adapté à écrire chaque message du premier type à une position dans le premier mot qui dépend du premier mot et chaque message du second type à une position dans le second mot qui dépend du second mot.
Selon un mode de réalisation de la présente invention, le moyen de fourniture de messages et le moyen d'écriture de messages sont adaptés, simultanément, à réaliser respectivement des opérations de lecture et d'écriture dans le moyen de mémorisation.
Selon un mode de réalisation de la présente invention, le moyen de mémorisation comprend des emplacement agencés selon un ordre déterminé, chaque emplacement étant adapté à contenir un premier mot ou un second mot, et le module de fourniture de messages est adapté à lire successivement les premiers mots dans le moyen de mémorisation selon l'ordre déterminé, et à lire successivement les seconds mots dans le moyen de mémorisation selon un ordre différent de l'ordre déterminé, ou, le module d'écriture de messages est adapté à écrire successivement les premiers mots dans le moyen de mémorisation selon l'ordre déterminé, et à écrire successivement les seconds mots dans le moyen de mémorisation selon un ordre différent de l'ordre déterminé.
Selon un mode de réalisation de la présente invention, les modules de traitement sont agencés selon un ordre déterminé, et le module de fourniture de messages est adapté à fournir ledit message du premier type à une position dans le premier mot qui dépend du premier mot, le module d'écriture de messages étant adapté à écrire dans le moyen de mémorisation un premier mot constitué de messages du premier type agencés selon ledit ordre déterminé, et à écrire dans le moyen de mémorisation un second mot constitué de messages du second type agencés selon ledit ordre déterminé.
Selon un mode de réalisation de la présente invention, les modules de traitement sont agencés selon un ordre déterminé, et le module d'écriture de messages est adapté à écrire chaque message du premier type à une position dans le premier mot qui dépend du premier mot et chaque message du second type à une position dans le second mot qui dépend du second mot, le module de fourniture de messages étant adapté à lire dans le moyen de mémorisation un premier mot et à fournir à chaque module de traitement un message du premier type contenu dans le premier mot lu, les messages du premier type étant agencés dans le premier mot selon ledit ordre déterminé, et à lire dans le moyen de mémorisation un second mot et à fournir à chaque module de traitement un message du second type contenu dans le second mot lu, les messages du second type étant agencés dans le second mot selon ledit ordre déterminé.
Selon un mode de réalisation de la présente invention, le moyen de mémorisation comprend des emplacements associés chacun à une adresse, le décodeur comprenant un moyen pour fournir une seconde adresse du moyen de mémorisation à partir d'une première adresse du moyen de mémorisation.
La présente invention prévoit également un procédé de décodage LDPC itératif, comprenant un nombre déterminé de modules de traitement fonctionnant en parallèle, et dans lequel une itération comprend les étapes suivantes: a) lire des premiers mots dans un moyen de mémorisation, chaque premier mot contenant une juxtaposition de messages d'un premier type en nombre égal au nombre déterminé ; b) fournir à chaque module de traitement, pour chaque premier mot lu, un message du premier type à une position dans le premier mot qui dépend du module de traitement; c) amener chaque module de traitement à fournir successivement des messages d'un second type à partir d'un premier traitement des messages du premier type; d) stocker dans le moyen de mémorisation des seconds mots, chaque second mot correspondant à une juxtaposition de messages du second type en nombre égal au nombre déterminé et fournis chacun par un module de traitement différent, chaque message du second type étant à une position dans le second mot qui dépend du module de traitement associé ; e) lire les seconds mots dans le moyen de mémori-sation; f) fournir à chaque module de traitement, pour chaque second mot lu, un message du second type à une position dans le 20 second mot qui dépend du module de traitement; g) amener chaque module de traitement à fournir successivement des nouveaux messages du premier type à partir d'un second traitement des messages du second type, le second traitement étant différent du premier traitement; h) stocker dans le moyen de mémorisation de nouveaux premiers mots, chaque nouveau premier mot correspondant à une juxtaposition de messages du premier type en nombre égal au nombre déterminé et fournis chacun par un module de traitement différent, chaque message du premier type étant à une position dans le nouveau premier mot qui dépend du module de traitement associé. De plus, à l'étape b), la position du message du premier type dans le premier mot dépend en outre du premier mot et, à l'étape f), la position du message du second type dans le second mot dépend en outre du second mot, ou, à l'étape d), chaque message du second type est à une position dans le second mot qui dépend du second mot et, à l'étape h), chaque message du premier type est à une position dans le nouveau premier mot qui dépend du nouveau premier mot.
Selon un mode de réalisation de la présente invention, les premiers mots sont lus dans le moyen de mémorisation selon un premier ordre de lecture du moyen de mémorisation, les seconds mots étant lus dans le moyen de mémorisation selon un second ordre de lecture du moyen de mémorisation différent du premier ordre.
Selon un mode de réalisation de la présente invention, les premiers mots sont stockés dans le moyen de mémorisation selon le premier ordre de lecture, les seconds mots étant stockés dans le moyen de mémorisation selon le second ordre de lecture.
Selon un mode de réalisation de la présente invention, le moyen de mémorisation comprend une mémoire adaptée à contenir à de mêmes emplacements alternativement des premiers mots ou des seconds mots, pour un premier mot et un second mot stockés à un même emplacement du module de mémorisation, et pour un même module de traitement, aux étapes b) et f), la position dans le second mot du message du second type fourni audit module de traitement étant égale à la différence, modulo le nombre déterminé, entre le nombre déterminé et la position dans le premier mot du message du premier type fourni audit module de trai- tement.
Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention 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, précédemment décrite, représente un graphe illustrant un exemple de décodage LDPC; la figure 2, précédemment décrite, représente schématiquement un exemple de réalisation d'un décodeur LDPC 35 classique; la figure 3 représente un exemple de réalisation d'un décodeur LDPC selon l'invention; la figure 4 représente un exemple de réalisation d'un élément du circuit de la figure 3; et la figure 5 représente un autre exemple de réalisation de l'élément de la figure 4.
Par souci de clarté, de mêmes éléments ont été désignés par de mêmes références aux différentes figures.
La présente invention consiste à supprimer l'un des modules de réarrangement 34, 38. Un message de noeud de parité "échangé" entre le noeud de parité NCj et le noeud de bit NBi, obtenu à une étape de détermination des noeuds de parité, ne sera alors pas écrit à la même "place" que le message de noeud de bit "échangé" entre le même noeud de bit NBi et le même noeud de parité NCj obtenu à une étape de détermination de noeuds de bit. Un réarrangement des messages de chaque mot lu doit alors être effectué lors de la lecture des mots dans la mémoire 26 à la fois lors d'une étape de détermination des noeuds de bit et une étape de détermination des noeuds de parité ou un réarrangement des messages de chaque mot issu du module de traitement 22 doit alors être effectué lors de l'écriture des mots dans la mémoire 26 à la fois lors d'une étape de détermination des noeuds de bit et une étape de détermination des noeuds de parité.
La figure 3 représente un exemple de réalisation d'un décodeur LDPC 45 selon l'invention. Contrairement au décodeur représenté en figure 2, le présent décodeur 45 comprend un seul module de réarrangement 46 adapté à lire des mots dans la mémoire 26, éventuellement selon un ordre différent de l'ordre de lecture régulier, et à effectuer un réarrangement des messages constituant le mot. Le module de réarrangement 46 est commandé par un module de commande de décalage 47 qui indique à partir de la donnée de réarrangement fournie par le module de fourniture d'adresse 42 de quelle façon doivent être réarrangés les messages du mot lu.
Un multiplexeur 48, commandé par un signal S4, est relié à une première entrée au module de réarrangement 46 et à une seconde entrée à la mémoire d'entrée 28. Selon la valeur de S4, le multiplexeur 48 fournit au module de traitement 22 successivement des mots mémorisés dans la mémoire d'entrée 28 ou des mots fournis par le module de réarrangement 46. Le module de traitement 22 attaque la mémoire de sortie 30 et la mémoire 26. Les mots fournis par le module de traitement 22 sont transmis à la mémoire de sortie 30 ou à la mémoire 26.
Une comparaison entre le fonctionnement du décodeur 20 représenté en figure 2 et du décodeur 45 selon la présente invention maintenant être suivante: va décrite pour la matrice H 1 0 1 0 1 0 0 0 1 1 1 0" 0 0 1 1 1 0 1 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0 1 1 H= (8) 1 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0j Le nombre Ne de "1" de lamatrice H est égal à 36. La matrice H est associée à un graphe à 12 noeuds de bit et à 6 noeuds de parité. On nomme ek, k variant de 0 à 35, un message (de noeud de bit ou de parité) échangé entre un noeud de bit et un noeud de parité. La numérotation des messages ek est réalisée selon l'ordre des lignes de la matrice H et est illustrée par la matrice H' suivante: r e0 0 el 0 e2 0 0 0 e3 e4 e5 0 l 0 0 e6 e7 e8 0 e9 e10 0 0 0 ell e12 e13 0 0 0 e14 e15 0 0 0 e16 e17 H'= e18 0 0 0 e19 e20 0 e21 e22 e23 0 0 (9) 0 e24 e25 e26 0 0 0 e27 0 e28 0 e29 0 e30 0 e31 0 e32 e33 0 e34 0 e35 0 A titre d'exemple, on considère que le nombre NB de modules de traitement élémentaires 24 est égal à 3. Pour le décodeur 20 représenté en figure 2, les messages ek, k variant de 0 à 35, peuvent être stockés dans la mémoire 26 selon une disposition correspondant à la matrice MEM suivante: e0 e13 e25 0 el e12 e24 1 e2 e14 e26 2 e3 e15 e27 3 e4 e16 e29 4 e5 e17 e28 5 MEM = (10) e6 e18 e30 6 e7 e19 e32 7 e8 e20 e31 8 e9 e21 e34 9 elO e22 e33 10 ell e23 e35 11 où la dernière colonne correspond aux lignes de la mémoire 26.
On notera des inversions entre les messages e12 et e13, e24 et e25, e28 et e29, e31 et e32, et e33 et e34. De telles inversions permettent d'éviter que des messages destinés à être utilisés par un même module de traitement élémentaire 24 ne soient dans un même mot. Par exemple, les messages e0 et e12 utilisés par le premier module de traitement élémentaire Modl lors d'une étape de détermination des noeuds de bit sont contenus dans deux mots différents.
Lors d'une étape de détermination des noeuds de parité, les mots de la mémoire 26 sont lus dans l'ordre régulier de lecture de la mémoire 26. Pour chaque mot lu, le message en première position est utilisé par le premier module élémentaire Mod1, le message en deuxième position par le deuxième module élémentaire Mod2, et le message en troisième position par le troisième module élémentaire Mod3. A titre d'exemple, le premier module élémentaire Modl reçoit donc successivement les messages de noeud de bit e0 à e5 à partir desquels il détermine des messages de noeud de parité e0 à e5 stockés respectivement à la même place que les messages e0 à e5 précédents. La répartition des messages ei, i variant de 0 à 35, dans la mémoire 26 correspond donc à nouveau à la matrice MEM de la relation (10).
Lors d'une étape de détermination des noeuds de bit, les modules de réarrangement 34, 38 utilisent les informations dans le module de fourniture d'adresse 42 pour lire et écrire les bons messages aux bonnes places.
A titre d'exemple, le module de fourniture d'adresse 42 comprend, à chaque ligne, un numéro de ligne de la mémoire 26 et un nombre de positions de décalage. Dans le présent exemple, le module de fourniture d'adresse 42 est constitué d'une mémoire dont la composition correspond à la matrice ROM suivante: 0 0- 1 1 6 1 7 0 2 2 8 2 ROM = (11) 9 0 3 1 2 4 0 11 1 2 où la première colonne correspond à des numéros de ligne de la mémoire 26 et la seconde colonne correspond à un nombre de 15 positions de décalage.
Lors d'une étape de détermination des noeuds de bit, le module de réarrangement 34 lit les mots de la mémoire 26 dans l'ordre indiqué par le module de fourniture d'adresse 42. A titre d'exemple, la détermination des noeuds de bit d'indice 0, 1 et 2 est obtenue à partir des lignes 0, 1, 2 du module de fourniture d'adresse 42 qui renvoient respectivement aux lignes 0, 1 et 6 de la mémoire 26. Le module de réarrangement 34 lit donc le mot stocké à la ligne 0 de la mémoire 26 et réalise un décalage vers la gauche des messages du mot lu d'un nombre 0 de position de décalage et fournit le message e0, à la première position du mot modifié, au premier module de traitement élémentaire Mod1, le message e13, à la deuxième position, au deuxième module de traitement élémentaire Mod2 et le message e25, à la troisième position, au troisième module de traitement élémentaire Mod3. Le module de réarrangement 34 lit ensuite le mot stocké à la ligne 1 de la mémoire 26 et réalise un décalage vers la gauche des messages du mot lu de 1 position de décalage. Enfin, le module de réarrangement 34 lit le mot stocké à la ligne 6 de la mémoire 26 et réalise un décalage vers la gauche des messages du mot lu de 1 position de décalage.
A la fin de la détermination des noeuds de bit n 0, 1 et 2, le module de réarrangement 38 reçoit successivement les trois mots suivants (e0, e13, e25), (e12, e24, el) (e18, e30, e6). Pour écrire correctement le mot (e18, e30, e6), le module de réarrangement 38 utilise la donnée de réarrangement stockée à la ligne n 2 du module de fourniture d'adresse 42 qui indique un nombre de position de décalage de 1. Le module de réarrangement 38 fournit alors un nouveau mot (e6, e18, e30) correspondant au mot initial décalé circulairement vers la droite d'une position de décalage. La ligne n 2 du module de fourniture d'adresse 42 renvoie à la ligne n 6 de la mémoire 26. Le module de réarrangement 38 écrit donc le nouveau mot (e6, e18, e30) à la ligne n 6 de la mémoire 26. La répartition de messages ei, i variant de 0 à 35, dans la mémoire 26 correspond donc à nouveau à la matrice MEM de la relation (10).
A la première itération, le module de traitement 22 lit les valeurs initiales ui, i variant de 0 à 1l stockées dans la mémoire 28 et correspondant aux valeurs initiales LLR(yi). Le module de réarrangement 38 initialise la mémoire 26 selon la matrice MEM suivante: uO ul u2 0 u2 uO ul 1 u4 u5 u3 2 u8 u6 u7 3 u9 ulO ul1 4 MEM = ulO ull u9 5 (12) u2 uO ul 6 u3 u4 u5 7 u4 u5 u3 8 u6 u7 u8 9 u7 u8 u6 10 ul1 u9 ulO 11 Dans la présente invention, les données ui sont écrites dans la mémoire 26 en utilisant l'ordre des lignes de la mémoire 26 fourni par le module de fourniture d'adresse 42 mais sans application d'un décalage, on obtient donc une disposition des données ui dans la mémoire 26 selon la matrice MEM suivante: uO ul u2 uO ul u2 u3 u4 u5 u6 u7 u8 u9 ulO ull MEM = u9 ulO ul1 (13) uO ul u2 u3 u4 u5 u3 u4 u5 u6 u7 u8 u6 u7 u8 u9 ulO ul1 Lors de l'étape de détermination des noeuds de parité suivante, le module de réarrangement 46 lit successivement, ligne après ligne, les mots de la mémoire 26 et effectue, pour un mot lu dans la mémoire 26 à un numéro de ligne déterminé, un décalage circulaire vers la droite, du nombre de position de décalage indiqué au même numéro de ligne du module de fourniture d'adresse 42. Les nouveaux messages obtenus fournis par le module de traitement 22 sont alors inscrits dans la mémoire 26 dans l'ordre normal des lignes de la mémoire 26 sans aucun décalage. On obtient alors une disposition des messages dans la mémoire 26 correspondant à la matrice MEM suivante: e0 e13 e25-0 el e12 e24 1 e2 e14 e26 2 e3 e15 e27 3 e4 e16 e29 4 e5 e17 e28 5 MEM = (14) e6 e18 e30 6 e7 e19 e32 7 e8 e20 e31 8 e9 e21 e34 9 elO e22 e33 10 ell e23 e35 11 Lors de l'étape de détermination des noeuds de bit suivante, le module de réarrangement 46 fournit des messages au module de traitement 22 en lisant les mots dans la mémoire 26 dans l'ordre indiqué par le module de fourniture d'adresse 42 et en réalisant, sur chaque mot lu, un décalage vers la gauche à partir du nombre de positions de décalage indiqué par le module de fourniture d'adresse 42. A titre d'exe le, le module de réarrangement 46 fournit successivement les trois mots (e0, e13, e25), (e12, e24, el) et (e18, e30, e6) à partir respectivement des lignes 0, 1 et 2 du module de fourniture d'adresse 42.
Les nouveaux mots obtenus fournis par le module de traitement 22 sont alors inscrits dans la mémoire 26 en suivant l'ordre indiqué par le module de fourniture d'adresse 42 mais sans effectuer de décalage. A titre d'exemple, le module de traitement 22 fournit successivement trois nouveaux mots (e0, e13, e25), (e12, e24, el) et (e18, e30, e6) qui sont respectivement écrits aux lignes n 0, 1 et 6 de la mémoire 26.
On obtient alors une disposition des messages dans la mémoire 26 qui correspond à la matrice MEM suivante: e0 e13 e25-0 e12 e24 el 1 e26 e2 e14 2 e15 e27 e3 3 e4 e16 e29 4 MEM = e28 e5 e17 5 (15) e18 e30 e6 6 e7 e19 e32 7 e31 e8 e20 8 e9 e21 e34 9 e33 el0 e22 10 e23 e35 ell 11 La disposition des messages dans la mémoire 26 est donc différente après une étape de détermination des noeuds de parité et après une étape de détermination des noeuds de bit.
Comme cela a été décrit précédemment en relation à la première itération, à l'étape de détermination des noeuds de parité suivante, le module de réarrangement 46 lit succes- sivement, ligne après ligne, les mots de la mémoire 26 et effectue, pour un mot lu dans la mémoire 26 à un numéro de ligne déterminé, un décalage circulaire vers la droite, du nombre de position de décalage indiqué au même numéro de ligne du module de fourniture d'adresse 42. Ainsi, le module de réarrangement 46 lit successivement les mots (e0, e13, e25), (e12, e24, el), etc, jusqu'à (e23, e35, e11) et fournit au module de traitement 22 successivement les mots (e0, e13, e25), (e1, e12, e24), etc. , jusqu'à (e11, e23, e35), c'est-à-dire en réalisant un décalage circulaire vers la droite des messages d'un nombre de positions égal aux nombres de positions de décalage 0, 1, etc. jusqu'à 2 stockés respectivement aux lignes n 0, 1, etc. jusqu'à 11 du module de fourniture d'adresse 42.
La direction du décalage (vers la droite ou vers la gauche) est obtenue à partir des données stockées dans la mémoire 42. Ainsi, lorsqu'une opération de décalage vers la gauche est à réaliser, les nombres de positions de décalage contenus dans la mémoire 42 sont utilisés directement. Lorsqu'une opération de décalage vers la droite est à réaliser, on détermine une valeur équivalente de décalage vers la gauche correspondant à la différence, modulo NB, entre NB et le nombre de positions de décalage fourni par la mémoire 42. Dans le présent exemple, un décalage circulaire de 2 positions vers la droite équivaut à un décalage circulaire de 1 position vers la gauche. Ceci permet d'utiliser un module de réarrangement 46 ne réalisant que des opérations de décalage vers la gauche.
La figure 4 représente un premier exemple de réali- sation du module de commande de décalage 47 et du module de fourniture d'adresse 42. Le module de fourniture d'adresse 42 comprend une mémoire 51, par exemple une mémoire morte, adaptée à recevoir un signal L1 représentatif d'un numéro de ligne initial de la mémoire 26 et à fournir un signal L2 représentatif d'un nouveau numéro de ligne de la mémoire 26, un signal D NB représentatif d'un nombre de positions de décalage (à gauche) à utiliser lors d'une étape de détermination des noeuds de bit et un signal D NC représentatif d'un nombre de positions de décalage (à droite) à utiliser lors d'une étape de détermination des noeuds de parité. Le module de fourniture d'adresse 42 comprend un multiplexeur 52, commandé par un signal de commande binaire BNO_CN1, recevant le signal L1 à une première entrée et le signal L2 à une seconde entrée et fournissant un signal Adresse à la mémoire 26. A titre d'exemple, lorsque le signal BNO_CN1 est à un état haut, ce qui indique qu'une étape de détermination des noeuds de parité est en cours, le signal Adresse est égal à Li. Les lignes de la mémoire 26 sont alors lues successivement. Lorsque le signal BNO_CN1 est à un état bas, ce qui indique qu'une étape de détermination des noeuds de bit est en cours, le signal Adresse est égal à L2. Les lignes de la mémoire 26 sont donc lues dans l'ordre fourni par le module de fourniture d'adresse 42. Le module de commande de décalage 47 comprend un multiplexeur 54, commandé par le signal BNO_CN1, recevant le signal DNB à une première entrée et le signal D_NC à une seconde entrée et fournissant un signal Decalage au module de réarrangement 46. A titre d'exemple, lorsque le signal BNO_CN1 est à un état haut, ce qui indique qu'une étape de détermination des noeuds de parité est en cours, le signal Decalage est égal à D NC et lorsque le signal BNO_CN1 est à un état bas, ce qui indique qu'une étape de détermination des noeuds de bit est en cours, le signal Decalage est égal à D_NB.
La figure 5 représente un second exemple de réalisation du module de commande de décalage 47 et du module de fourniture d'adresse 42. Le module de fourniture d'adresse 42 est composé de première et seconde mémoires distinctes 56, 58. La première mémoire 56 est adaptée à recevoir le signal L1 et à fournir le signal L2. Le module de fourniture d'adresse 42 comprend un multiplexeur 60, commandé par le signal de commande binaire BNO_CN1, recevant le signal L1 à une première entrée et le signal L2 à une seconde entrée et fournissant le signal Adresse à la mémoire 26 et à la seconde mémoire 58. La seconde mémoire 58 est adaptée à recevoir le signal Adresse et à fournir le nombre de positions de décalage D NB adapté pour la réalisation d'une étape de détermination des noeuds de bit. Le module 47 comprend un module 61 adapté à déterminer le nombre de décalage D NC à utiliser lors d'une étape de détermination des noeuds de parité à partir de D NB. Le module de commande de décalage 47 comprend un multiplexeur 62, commandé par le signal BNO_CN1, recevant le signal D NB à une première entrée et le signal D_NC à une seconde entrée et fournissant un signal Decalage au module de réarrangement 46. A titre d'exemple, lorsque le signal BNO_CN1 est à un état haut, ce qui indique qu'une étape de détermination des noeuds de parité est en cours, le signal Decalage est égal à D NC et lorsque le signal BNO_CN1 est à un état bas, ce qui indique qu'une étape de détermination des noeuds de bit est en cours, le signal Decalage est égal à D NB.
Le décodeur 45 selon l'invention ne comprend qu'un seul module de réarrangement 46 par rapport à un décodeur 20 classique qui en comporte deux. La surface nécessaire à la réalisation du module de commande de décalage 47 est négli- geable. On libère ainsi pratiquement complètement la surface d'un module de réarrangement. En outre, le module de réarrangement 46 du décodeur 45 selon l'invention peut avoir une structure identique à celle d'un module de réarrangement 34, 38 classique.
En outre, le module de réarrangement 46 n'est utilisé, dans le présent exemple de réalisation, que lors d'opérations de lecture dans la mémoire 26. Le décodeur 45 selon l'invention permet donc de réaliser simultanément des opérations de lecture et d'écriture dans la mémoire 26 et donc permet d'optimiser la durée d'une itération de l'algorithme de décodage.
Selon une variante de l'invention, le décodeur comprend un unique module de réarrangement 46 prévu entre le module de traitement 22 et la mémoire 26, en aval du module de traitement 22 selon le sens de circulation des données. Le module de réar- rangement 46 est alors adapté à écrire un mot dans la mémoire 26 à partir d'un mot fourni par le module de traitement 22 en modifiant la position des messages dans le mot fourni par le module de traitement 22. Lors d'une étape de détermination des noeuds de bit ou une étape de détermination des noeuds de parité, le message à la première position de chaque mot lu est fourni au premier module de traitement élémentaire 24, le message à la seconde position de chaque mot lu est fourni au second module de traitement élémentaire 24, etc., et le message à la dernière position de chaque mot lu est fourni au dernier module de traitement élémentaire 24. Le module de réarrangement 46 modifie alors la position des messages dans chaque mot fourni par le module de traitement 22 de façon que tous les messages devant être fournis à un même module de traitement élémentaire 24 à l'étape de détermination suivante se trouvent à la même position dans chaque mot. On obtient donc, comme pour le décodeur décrit précédemment à titre d'exemple, une répartition différente des messages de noeud de bit et des messages de noeud de parité dans la mémoire 26 respectivement après une étape de détermination des noeuds de bit ou une étape de détermination des noeuds de parité. Un tel module de réarrangement n'étant utilisé que lors d'opérations d'écriture dans la mémoire 26, on peut donc réaliser simultanément des opérations de lecture et d'écriture, ce qui permet d'optimiser la durée d'une itération de l'algorithme de décodage.
Selon une autre variante de la présente invention, la mémoire 26 est remplacée par des première et seconde mémoires, les messages de noeud de bit étant stockés dans la première mémoire et les messages de noeud de parité étant stockés dans la seconde mémoire. Avec une telle structure, lors d'une étape de détermination des noeuds de bit, les messages de noeud de parité sont lus dans la seconde mémoire tandis que les nouveaux messages de noeud de bit obtenus à partir des messages de noeud de parité lus sont écrits dans la première mémoire et, lors d'une étape de détermination des noeuds de parité, les messages de noeud de bits sont lus dans la première mémoire tandis que les nouveaux messages de noeud de parité obtenus à partir des messages de noeud de bits lus sont écrits dans la seconde mémoire.
Bien entendu, la présente invention est susceptible de diverses variantes et modifications qui apparaîtront à l'homme de l'art. En particulier, le module de réarrangement peut effectuer une autre opération qu'un décalage. Il peut s'agir de permutations par blocs.

Claims (10)

REVENDICATIONS
1. Décodeur (45) LDPC comprenant un nombre déterminé de modules de traitement (24) fonctionnant en parallèle, chaque module de traitement étant adapté à recevoir successivement des messages d'un premier type et à fournir successivement des messages d'un second type à partir d'un premier traitement des messages du premier type et à recevoir des messages du second type et à fournir des messages du premier type à partir d'un second traitement des messages du second type, le second traitement étant différent du premier traitement; un moyen de mémorisation (26) adapté à contenir des premiers mots et des seconds mots, chaque premier mot contenant une juxtaposition de messages du premier type en nombre égal audit nombre déterminé, et chaque second mot contenant une juxtaposition de messages du second type en nombre égal audit nombre déterminé ; un module de fourniture de messages (46) adapté à lire des premiers mots ou des seconds mots dans le moyen de mémorisation; fournir à chaque module de traitement, pour chaque premier mot lu, un message du premier type à une position dans le premier mot qui dépend du module de traitement; et fournir à chaque module de traitement, pour chaque second mot lu, un message du second type à une position dans le 25 second mot qui dépend du module de traitement; et un module d'écriture de messages adapté à écrire, dans le moyen de mémorisation, des premiers mots, chaque premier mot contenant des messages du premier type fournis chacun par un module de traitement différent, chaque 30 message du premier type étant à une position dans le premier mot qui dépend du module de traitement associé ; et écrire, dans le moyen de mémorisation, des seconds mots, chaque second mot contenant des messages du second type fournis chacun par un module de traitement différent, chaque message du second type étant à une position dans le second mot qui dépend du module de traitement associé, dans lequel le module de fourniture de messages est, en outre, adapté à fournir ledit message du premier type à une position dans le premier mot qui dépend du premier mot et ledit message du second type à une position dans le second mot qui dépend du second mot, ou, dans lequel le module d'écriture de messages est, en outre, adapté à écrire chaque message du premier type à une position dans le premier mot qui dépend du premier mot et chaque message du second type à une position dans le second mot qui dépend du second mot.
2. Décodeur selon la revendication 1, dans lequel le moyen de fourniture de messages (46) et le moyen d'écriture de messages sont adaptés, simultanément, à réaliser respectivement des opérations de lecture et d'écriture dans le moyen de mémorisation (26).
3. Décodeur selon la revendication 1, dans lequel le moyen de mémorisation (26) comprend des emplacement agencés selon un ordre déterminé, chaque emplacement étant adapté à contenir un premier mot ou un second mot, et dans lequel le module de fourniture de messages (46) est adapté à lire successivement les premiers mots dans le moyen de mémorisation selon l'ordre déterminé, et à lire successivement les seconds mots dans le moyen de mémorisation selon un ordre différent de l'ordre déterminé, ou, dans lequel le module d'écriture de mes-sages est adapté à écrire successivement les premiers mots dans le moyen de mémorisation selon l'ordre déterminé, et à écrire successivement les seconds mots dans le moyen de mémorisation selon un ordre différent de l'ordre déterminé.
4. Décodeur selon la revendication 1, dans lequel les modules de traitement (24) sont agencés selon un ordre déterminé, et dans lequel le module de fourniture de messages (46) est adapté à fournir ledit message du premier type à une position dans le premier mot qui dépend du premier mot, le module d'écriture de messages étant adapté à écrire dans le moyen de mémorisation (26) un premier mot constitué de messages du premier type agencés selon ledit ordre déterminé, et à écrire dans le moyen de mémorisation un second mot constitué de messages du second type agencés selon ledit ordre déterminé.
5. Décodeur selon la revendication 1, dans lequel les modules de traitement (24) sont agencés selon un ordre déterminé, et dans lequel le module d'écriture de messages est adapté à écrire chaque message du premier type à une position dans le premier mot qui dépend du premier mot et chaque message du second type à une position dans le second mot qui dépend du second mot, le module de fourniture de messages étant adapté à lire dans le moyen de mémorisation (26) un premier mot et à fournir à chaque module de traitement un message du premier type contenu dans le premier mot lu, les messages du premier type étant agencés dans le premier mot selon ledit ordre déterminé, et à lire dans le moyen de mémorisation un second mot et à fournir à chaque module de traitement un message du second type contenu dans le second mot lu, les messages du second type étant agencés dans le second mot selon ledit ordre déterminé.
6. Décodeur selon la revendication 1, dans lequel le moyen de mémorisation (26) comprend des emplacements associés chacun à une adresse, le décodeur comprenant un moyen (42, 56) pour fournir une seconde adresse du moyen de mémorisation à partir d'une première adresse du moyen de mémorisation.
7. Procédé de décodage LDPC itératif, comprenant un nombre déterminé de modules de traitement (24) fonctionnant en parallèle, et dans lequel une itération comprend les étapes suivantes: a) lire des premiers mots dans un moyen de mémorisation (26), chaque premier mot contenant une juxtaposition de messages d'un premier type en nombre égal au nombre déterminé ; b) fournir à chaque module de traitement, pour chaque premier mot lu, un message du premier type à une position dans 35 le premier mot qui dépend du module de traitement; c) amener chaque module de traitement à fournir successivement des messages d'un second type à partir d'un premier traitement des messages du premier type; d) stocker dans le moyen de mémorisation des seconds 5 mots, chaque second mot correspondant à une juxtaposition de messages du second type en nombre égal au nombre déterminé et fournis chacun par un module de traitement différent, chaque message du second type étant à une position dans le second mot qui dépend du module de traitement associé ; e) lire les seconds mots dans le moyen de mémorisation; f) fournir à chaque module de traitement, pour chaque second mot lu, un message du second type à une position dans le second mot qui dépend du module de traitement; g) amener chaque module de traitement à fournir successivement des nouveaux messages du premier type à partir d'un second traitement des messages du second type, le second traitement étant différent du premier traitement; h) stocker dans le moyen de mémorisation de nouveaux premiers mots, chaque nouveau premier mot correspondant à une juxtaposition de messages du premier type en nombre égal au nombre déterminé et fournis chacun par un module de traitement différent, chaque message du premier type étant à une position dans le nouveau premier mot qui dépend du module de traitement associé, dans lequel, à l'étape b), la position du message du premier type dans le premier mot dépend en outre du premier mot et, à l'étape f), la position du message du second type dans le second mot dépend en outre du second mot, ou dans lequel, à l'étape d), chaque message du second type est à une position dans le second mot qui dépend du second mot et, à l'étape h), chaque message du premier type est à une position dans le nouveau premier mot qui dépend du nouveau premier mot. 15
8. Procédé selon la revendication 7, dans lequel les premiers mots sont lus dans le moyen de mémorisation (26) selon un premier ordre de lecture du moyen de mémorisation, les seconds mots étant lus dans le moyen de mémorisation selon un second ordre de lecture du moyen de mémorisation différent du premier ordre.
9. Procédé selon la revendication 8, dans lequel les premiers mots sont stockés dans le moyen de mémorisation (26) selon le premier ordre de lecture, les seconds mots étant stockés dans le moyen de mémorisation selon le second ordre de lecture.
10. Procédé selon la revendication 7, dans lequel le moyen de mémorisation (26) comprend une mémoire adaptée à contenir à de mêmes emplacements alternativement des premiers mots ou des seconds mots, dans lequel pour un premier mot et un second mot stockés à un même emplacement du module de mémorisation (26), et pour un même module de traitement (24), aux étapes b) et f), la position dans le second mot du message du second type fourni audit module de traitement est égale à la différence, modulo le nombre déterminé, entre le nombre déterminé et la position dans le premier mot du message du premier type fourni audit module de traitement.
FR0451307A 2004-06-22 2004-06-22 Decodeur ldpc Expired - Fee Related FR2871975B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR0451307A FR2871975B1 (fr) 2004-06-22 2004-06-22 Decodeur ldpc
US11/158,516 US7685502B2 (en) 2004-06-22 2005-06-22 LDPC decoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0451307A FR2871975B1 (fr) 2004-06-22 2004-06-22 Decodeur ldpc

Publications (2)

Publication Number Publication Date
FR2871975A1 true FR2871975A1 (fr) 2005-12-23
FR2871975B1 FR2871975B1 (fr) 2006-08-11

Family

ID=34945696

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0451307A Expired - Fee Related FR2871975B1 (fr) 2004-06-22 2004-06-22 Decodeur ldpc

Country Status (2)

Country Link
US (1) US7685502B2 (fr)
FR (1) FR2871975B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2900294A1 (fr) * 2006-04-19 2007-10-26 St Microelectronics Sa Chargement de la memoire d'entree d'un decodeur ldpc avec des donnees a decoder

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI410055B (zh) * 2007-11-26 2013-09-21 Sony Corp Data processing device, data processing method and program product for performing data processing method on computer
TW200926612A (en) * 2007-12-07 2009-06-16 Univ Nat Chiao Tung Multi-mode parallelism data exchange method and its device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040034828A1 (en) * 2002-08-15 2004-02-19 Texas Instruments Incorporated Hardware-efficient low density parity check code for digital communications

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7120856B2 (en) * 2002-09-25 2006-10-10 Leanics Corporation LDPC code and encoder/decoder regarding same
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
US7139959B2 (en) * 2003-03-24 2006-11-21 Texas Instruments Incorporated Layered low density parity check decoding for digital communications
JP4225163B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号装置および復号方法、並びにプログラム
FR2871976B1 (fr) * 2004-06-22 2006-08-11 St Microelectronics Sa Decodeur ldpc

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040034828A1 (en) * 2002-08-15 2004-02-19 Texas Instruments Incorporated Hardware-efficient low density parity check code for digital communications

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
BLANKSBY A J ET AL: "A 690-mW 1-Gb/s 1024-b, rate-1/2 low-density parity-check code decoder", IEEE JOURNAL OF SOLID-STATE CIRCUITS IEEE USA, vol. 37, no. 3, March 2002 (2002-03-01), pages 404 - 412, XP002302867, ISSN: 0018-9200 *
COCCO M ET AL: "A scalable architecture for LDPC decoding", PROC., IEEE DESIGN, AUTOMATION AND TEST IN EUROPE CONF. AND EXHIBITION DESIGNERS' FORUM, DATE'04, vol. 3, 16 February 2004 (2004-02-16), pages 88 - 93, XP010685018 *
GUNNAM K ET AL: "An LDPC decoding schedule for memory access reduction", PROC., IEEE INTERNATIONAL CONFERENCE ON ACOUSTICS, SPEECH, AND SIGNAL PROCESSING, vol. 5, 17 May 2004 (2004-05-17), pages 173 - 176, XP002302865 *
KARKOOTI M ET AL: "Semi-parallel reconfigurable architectures for real-time LDPC decoding", PROC., IEEE CONFERENCE ON INFORMATION TECHNOLOGY COMPUTING, ITCC'04, vol. 1, 5 April 2004 (2004-04-05), pages 579 - 585, XP010696711 *
MANSOUR M M ET AL: "Architecture-aware low-density parity-check codes", PROC.,IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS, BANGKOK, THAILAND, vol. 2, 25 May 2003 (2003-05-25), pages II 57 - II 60, XP002302868, ISBN: 0-7803-7761-3 *
MANSOUR M M ET AL: "High-throughput LDPC decoders", IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS, vol. 11, no. 6, December 2003 (2003-12-01), pages 976 - 996, XP002302866, ISSN: 1063-8210 *
SELVARATHINAM A ET AL: "A massively scaleable decoder architecture for low-density parity-check codes", PROC, IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS, ISCAS 2003, BANGKOK, THAILAND, vol. 2 OF 5, 25 May 2003 (2003-05-25), pages 61 - 64, XP002260921, ISBN: 0-7803-7761-3 *
TONG ZHANG ET AL: "A 54 MBPS (3,6)-regular FPGA decoder", PROC., IEEE WORKSHOP ON SIGNAL PROCESSING SYSTEMS, SAN DIEGO, CA, 16 October 2002 (2002-10-16), pages 127 - 132, XP010616589 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2900294A1 (fr) * 2006-04-19 2007-10-26 St Microelectronics Sa Chargement de la memoire d'entree d'un decodeur ldpc avec des donnees a decoder
US7966544B2 (en) 2006-04-19 2011-06-21 STMicroelectroncis SA Loading the input memory of an LDPC decoder with data for decoding

Also Published As

Publication number Publication date
FR2871975B1 (fr) 2006-08-11
US20050283703A1 (en) 2005-12-22
US7685502B2 (en) 2010-03-23

Similar Documents

Publication Publication Date Title
EP0108655B1 (fr) Système de détection et de correction d'erreurs de transmission d'un message binaire utilisant un code cyclique détecteur et correcteur d'erreurs de type Reed-Solomon entrelacé
EP0654910B1 (fr) Procédé de décodage itératif de codes en blocs concaténés
EP0995272B1 (fr) Decodage iteratif de codes produits
EP0848501B1 (fr) Système et procédé de transmission numérique comportant un code produit combiné à une modulation multidimensionnelle
EP0827284A1 (fr) Procédé de transmission de bits d'information avec codage correcteur d'erreurs, codeur et décodeur pour la mise en oeuvre de ce procédé
FR2871976A1 (fr) Decodeur ldpc
FR2900294A1 (fr) Chargement de la memoire d'entree d'un decodeur ldpc avec des donnees a decoder
FR2981472A1 (fr) Dispositif et procede de production d'une sequence de bits
FR2849514A1 (fr) Code de geometrie algebrique adapte aux erreurs en rafale
EP0848524A1 (fr) MAQ à codage perforé en trellis, avec décodage itératif
WO2002039587A2 (fr) Module, dispositif et procede de decodage a haut debit, d'un code concatene
EP0329533B1 (fr) Procédé de codage et procédé de décodage à longueur variable, dispositif de codage et dispositif de décodage pour la mise en oeuvre de ce procédé
EP2092651B1 (fr) Codage et decodage d'un signal de donnees en fonction d'un code correcteur
FR2790621A1 (fr) Dispositif et procede d'entrelacement pour turbocodage et turbodecodage
FR2896359A1 (fr) Procede d'encodage et de decodage rapides et dispositifs associes.
FR2785744A1 (fr) Procede et dispositif de codage de sequences de donnees, procede et dispositif de decodage associes
EP2330745A1 (fr) Procédé et dispositif de décodage d'une succession de blocs encodés avec un code de correction d'erreur et corrélés par un canal de transmission
FR2673341A1 (fr) Agencement de circuit pour detecter et corriger des defauts dans des mots de donnees.
FR2871975A1 (fr) Decodeur ldpc
FR2891419A1 (fr) Decodage d'une pluralite de flux d'informations codees selon un algorithme de codage par blocs.
EP0463598A1 (fr) Circuit de décodage de codes convolutionnels pour l'exécution de l'étape de stockage et d'exploration inverse des chemins survivants d'un algorithme de viterbi
FR2834146A1 (fr) Turbo-decodeur compact a haute efficacite
EP0183610B1 (fr) Mémoire vive et circuit d'interpolation linéaire en comportant application
FR2838581A1 (fr) Procede de codage et/ou de decodage de codes correcteurs d'erreurs, dispositifs et signal correspondants
FR2914447A1 (fr) Dispositif electronique de decalage de donnees en particulier pour du codage/decodage avec un code ldpc

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20150227