FR2871976A1 - Decodeur ldpc - Google Patents
Decodeur ldpc Download PDFInfo
- Publication number
- FR2871976A1 FR2871976A1 FR0451308A FR0451308A FR2871976A1 FR 2871976 A1 FR2871976 A1 FR 2871976A1 FR 0451308 A FR0451308 A FR 0451308A FR 0451308 A FR0451308 A FR 0451308A FR 2871976 A1 FR2871976 A1 FR 2871976A1
- Authority
- FR
- France
- Prior art keywords
- word
- messages
- read
- message
- memory
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6566—Implementations concerning memory access contentions
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
- H03M13/1137—Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
L'invention concerne un décodeur (41, 60, 70) LDPC comprenant des modules de traitement (24) adaptés à recevoir des premiers messages et à fournir des seconds messages à partir des premiers messages reçus ; des première et seconde mémoires à accès unique (42, 44) ; et des moyens (32, 34, 38, 39 ; 62, 74) adaptés à lire des premiers mots dans les première et seconde mémoires, chaque premier mot contenant des premiers messages ; à fournir des premiers messages aux modules de traitement à partir des premiers mots lus ; à former des seconds mots, chaque second mot contenant des seconds messages fournis par les modules de traitement ; et à écrire les seconds mots dans les première et seconde mémoires, lesdits moyens étant adaptés à lire un premier (respectivement second) mot dans la première mémoire et simultanément à écrire un second (respectivement premier) mot dans la seconde mémoire.
Description
DÉCODEUR LDPC
La présente invention concerne un décodeur LDPC (Low 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 de Shannon. Les décodeurs LDPC ont généralement des performances supérieures à celles 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, entre 4 et 30, et un degré de noeud de bit pouvant prendre trois valeurs, entre 2 et 13.
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 0\ 1 0 1 0 0 1 H= (2) 0 1 0 1 1 0 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=0y) LLR(y)=LLR(dly)=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 =1y) 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 transmis 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-l. 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 de noeud de bit 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_3i 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: ln 1 + nkeS1 j,k i tanh(vk_*j/2) w (5) ii = ln HkEs1 j,k i tanh(vk_3j/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 de noeud de parité 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 vi>j correspondant à la soluune de la valeur initiale LLR(yi) et de tous les messages de noeud de parité 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-1] contenant les indices k tel que les noeuds de parité CNk sont reliés au noeud de bit BNi. L'expression de vi.j est donc la suivante: = LLR(yi) + EkES2i,k j wk*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 Li correspondant à un rapport LLR corrigé. Li est déterminé par l'équation suivante: Li = LLR(yi) + EkES2i wk_>i (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 précédemment décrit.
Le décodeur 20 comprend un module de traitement 22 comportant NB modules de traitement élémentaire distincts 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-l. 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-1.
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ème module de traitement élémentaire ModNB.
Le module de traitement 22 est adapté à fournir successivement 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 traitement 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 39, commandé par un signal S3. Le module de traitement 22 attaque une seconde entrée du multiplexeur 39. Selon la valeur de S3, le multiplexeur 39 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 40, comprenant par exemple une mémoire morte. A chaque ligne du module de fourniture d'adresse 40 sont stockées une adresse de la mémoire 26 et une donnée de réarrangement. Les modules de réarrangement 34 et 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 40, on obtient une suite d'adresses de la mémoire 26 dans un ordre différent de l'ordre régulier d'accès aux 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 d'accès régulier aux lignes 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 de noeud de bit placé à la NB1è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 34 lit les mots de la mémoire 26 selon l'ordre de lecture fourni par le module de fourniture d'adresse 40. 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 40. 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 40 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 NBiée position du nouveau mot est fourni au NBième module de traitement é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 40 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 40.
La mémoire 26 est généralement une mémoire de grande taille puisque Ne peut être supérieur à 200000. Il s'agit généralement d'une mémoire vive à double accès (DPRAM ou Dual Port Random Access Memory) qui permet notamment de réaliser simultanément une opération de lecture d'un premier mot et une opération d'écriture d'un second mot stockés à des lignes différentes de la mémoire. En effet, lors d'une étape de détermination des noeuds de bit ou d'une étape de détermination des noeuds de vérification, les opérations de lecture dans la mémoire 26 de mots transmis au module de traitement 22 sont réalisées simultanément aux opérations d'écriture dans la mémoire 26 de mots fournis par le module de traitement 22. Ceci permet de réduire au maximum la durée d'une itération de l'algorithme de décodage.
Toutefois, les mémoires à double accès ont certains inconvénients. La durée d'une opération de lecture ou d'écriture peut être un facteur limitant pour la durée totale d'une itéra- tion de l'algorithme de décodage. En outre, la puissance moyenne consommée par une telle mémoire représente une part non négligeable de la consommation du décodeur.
La présente invention vise à obtenir un décodeur LDPC ayant des caractéristiques améliorées de rapidité de réalisation 25 d'une itération de l'algorithme du décodage.
La présente invention vise également à obtenir un décodeur LDPC ayant des caractéristiques de consommation améliorées.
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 adaptés à recevoir des premiers messages et à fournir des seconds messages à partir d'un traitement des premiers messages reçus; des première et seconde mémoires à accès unique; et des moyens adaptés à lire des premiers mots à la fois dans la première mémoire à accès unique et dans la seconde mémoire à accès unique, chaque premier mot contenant une juxtaposition de premiers messages en nombre égal audit nombre déterminé ; à fournir des premiers messages aux modules de traitement à partir des premiers mots lus; à former des seconds mots, chaque second mot contenant une juxtaposition de seconds messages fournis par les modules de traitement en nombre égal audit nombre déterminé ; et à écrire les seconds mots dans les première et seconde mémoires à accès unique, lesdits moyens étant adaptés, pour au moins un premier mot et un second mot, à lire le premier mot dans la première mémoire à accès unique et simultanément à écrire le second mot dans la seconde mémoire à accès unique ou à lire le premier mot dans la seconde mémoire à accès unique et simultanément à écrire le second mot dans la première mémoire à accès unique.
Selon un mode de réalisation, les modules de traite-ment sont adaptés à recevoir des seconds messages et à fournir des nouveaux premiers messages à partir d'un traitement des seconds messages, le traitement des seconds messages étant différent du traitement des premiers messages, ledit décodeur comprenant en outre des moyens adaptés à lire des seconds mots à la fois dans la première mémoire à accès unique et dans la seconde mémoire à accès unique; à fournir des seconds messages aux modules de traitement à partir des seconds mots lus; à former des nouveaux premiers mots à partir des nouveaux premiers messages fournis par les modules de traitement; et à écrire les nouveaux premiers mots dans les première et seconde mémoires à accès unique, lesdits moyens étant adaptés, pour au moins un second mot et un nouveau premier mot, à lire le second mot dans la première mémoire à accès unique et simultanément à écrire le nouveau premier mot dans la seconde mémoire à accès unique ou à lire le second mot dans la seconde mémoire à accès unique et simultanément à écrire le nouveau premier mot dans la première mémoire à accès unique.
Selon un mode de réalisation, le décodeur comprend un 35 premier module de réarrangement adapté à fournir à chaque module de traitement pour chaque premier mots lu, un premier message à une position dans le premier mot qui dépend du premier mot lu et du module de traitement; et un second module de réarrangement pour former les seconds mots, la position d'un second message dans le second mot dépendant du second mot et du module de traitement ayant fourni le second message.
Selon un mode de réalisation, le décodeur comprend un module de réarrangement adapté à fournir à chaque module de traitement pour chaque premier mot lu, un premier message à une position dans le premier mot lu qui dépend du premier mot lu et du module de traitement, et adapté à fournir à chaque module de traitement pour chaque second mot lu, un second message à une position dans le second mot lu qui dépend du second mot lu et du module de traitement.
Selon un mode de réalisation, le décodeur comprend un module de réarrangement adapté à former les seconds mots, la position d'un second message dans un second mot dépendant du second mot et du module de traitement ayant fourni le second message, et adapté à former les nouveaux premiers mots, la position d'un nouveau premier message dans un nouveau premier mot dépendant du nouveau premier mot et du module de traitement ayant fourni le nouveau premier message.
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, ledit procédé comportant la lecture de premiers mots à la fois dans une première mémoire à accès unique et dans une seconde mémoire à accès unique, chaque premier mot contenant une juxtaposition de premiers messages en nombre égal au nombre déterminé ; la four- niture à chaque module de traitement, pour chaque premier mot lu, d'un premier message du premier mot; la fourniture, par chaque module de traitement, de seconds messages à partir d'un traitement des premiers messages; et l'écriture des seconds mots dans les première et seconde mémoires à accès unique, chaque second mot correspondant à une juxtaposition de seconds messages en nombre égal au nombre déterminé, pour au moins un premier mot et un second mot, la lecture du premier mot dans la première mémoire étant réalisée simultanément à l'écriture du second mot dans la seconde mémoire ou la lecture du premier mot dans la seconde mémoire étant réalisée simultanément à l'écriture du second mot dans la première mémoire.
Selon un mode de réalisation, le procédé comprend en outre les étapes comportant la lecture des seconds mots à la fois dans la première mémoire à accès unique et dans la seconde mémoire à accès unique; la fourniture à chaque module de traitement, pour chaque second mot lu, d'un second message du second mot; la fourniture, par chaque module de traitement, de nouveaux premiers messages à partir d'un traitement des seconds messages, le traitement des seconds messages étant différent du traitement des premiers messages; et l'écriture, dans les première et seconde mémoires, de nouveaux premiers mots obtenus à partir des nouveaux premiers messages, pour au moins un second mot et un nouveau premier mot, la lecture du second mot dans la première mémoire étant réalisée simultanément à l'écriture du nouveau premier mot dans la seconde mémoire ou la lecture du second mot dans la seconde mémoire étant réalisée simultanément à l'écriture du nouveau premier mot dans la première mémoire.
Selon un mode de réalisation, l'ordre de lecture des premiers mots dans les première et seconde mémoires à accès unique est différent de l'ordre de lecture des seconds mots dans les première et seconde mémoires à accès unique.
Selon un mode de réalisation, à l'étape de fourniture à chaque module de traitement, pour chaque premier mot lu, d'un premier message du premier mot lu, le premier message est à une position dans le premier mot lu qui dépend du premier mot lu et du module de traitement, et à l'étape d'écriture des seconds mots dans les première et seconde mémoires à accès unique, chaque second mot contient un second message à une position dans le second mot qui dépend du second mot et du module de traitement ayant fourni le second message.
Selon un mode de réalisation, à l'étape de fourniture à chaque module de traitement, pour chaque premier mot lu, d'un premier message du premier mot lu, le premier message est à une position dans le premier mot lu qui dépend du premier mot lu et du module de traitement, et à l'étape de fourniture à chaque module de traitement, pour chaque second mot lu, d'un second message du second mot lu, le second message est à une position dans le second mot lu qui dépend du second mot lu et du module de traitement.
Selon un mode de réalisation, à l'étape d'écriture des seconds mots dans les première et seconde mémoires à accès unique, chaque second mot contient un second message à une position dans le second mot qui dépend du second mot et du module de traitement ayant fourni le second message, et à l'étape d'écriture des nouveaux premiers mots dans les première et seconde mémoires à accès unique, chaque nouveau premier mot contient un nouveau premier message à une position dans le nouveau premier mot qui dépend du nouveau premier mot et du module de traitement ayant fourni le nouveau premier message.
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 classique; la figure 3 représente un premier exemple de réalisation d'un décodeur LDPC selon l'invention; la figure 4 représente un deuxième exemple de réalisation d'un décodeur LDPC selon l'invention; la figure 5 représente un troisième exemple de réali-35 sation d'un décodeur LDPC selon l'invention; 25 la figure 6 représente plus en détail certains éléments du décodeur de la figure 4; et la figure 7 représente plus en détail certains éléments du décodeur de la figure 5.
Par souci de clarté, de mêmes éléments ont été désignés par des mêmes références aux différentes figures.
La présente invention consiste à remplacer la mémoire à double accès par des première et seconde mémoires à accès unique (SPRAM acronyme anglais pour Single Port Random Access Memory). Dans la première mémoire est stockée une première partie (par exemple la moitié) des données habituellement stockées dans la mémoire à double accès et dans la seconde mémoire est stocké le reste (par exemple la seconde moitié) des données habituellement stockées dans la mémoire à double accès.
Pendant une opération de détermination de noeuds de bit ou des noeuds de parité, des mots sont lus dans la première mémoire et dans la seconde mémoire. Chaque mot lu est transmis (éventuellement sous une forme modifiée) au module de traitement 22. Simultanément, les mots fournis successivement par le module de traitement 22 sont écrits (éventuellement sous une forme modifiée) dans la première mémoire et dans la seconde mémoire. De façon plus détaillée, pour des raisons de rapidité d'exécution des itérations de décodage, les opérations de lecture et d'écriture peuvent être simultanées. Lorsqu'un mot est lu dans la première mémoire, un mot est alors écrit dans la seconde mémoire et réciproquement. La disposition des mots dans les première et seconde mémoires est telle que, lors d'une opération de détermination des noeuds de bit ou des noeuds de vérification, un mot n'est pas écrit à l'emplacement d'un mot devant être utilisé ultérieurement lors de la même étape de détermination des noeuds de bit ou de parité. Ceci peut être obtenu en tenant compte du temps d'attente nécessaire au module de traitement pour fournir de nouveaux mots à partir des mots qui lui sont transmis. En effet, lorsqu'on transmet au module de traitement des mots, celui-ci fournit simultanément des nouveaux mots obtenus à partir de mots qui lui ont été transmis précédemment.
Selon un premier avantage de la présente invention, la surface totale occupée par les première et seconde mémoires à accès unique est inférieure, voire largement inférieure à la surface de la mémoire à double accès 26. En effet, les première et seconde mémoires comprennent chacune un même nombre de lignes égal à la moitié du nombre de lignes de la mémoire 26, un mot stocké dans la première ou la seconde mémoire ayant le même nombre de bits qu'un mot stocké dans la mémoire 26. Pour une même quantité de données mémorisées, une mémoire à accès unique a une surface sensiblement inférieure, à la surface d'une mémoire à double accès. La saune des surfaces des première et seconde mémoires est donc sensiblement inférieure à celle de la mémoire 26. Selon un deuxième avantage de la présente invention, la durée d'une
itération de décodage du décodeur selon l'invention est réduite. En effet, la durée d'une opération d'écriture ou de lecture dans une mémoire à accès unique contenant un nombre déterminé de mots est inférieure à celle d'une mémoire à double accès contenant le double de mots généralement d'au moins 15 %. La durée nécessaire pour effectuer simultanément une opération de lecture dans l'une des première ou seconde mémoires à accès unique et une opération d'écriture dans l'autre des première ou seconde mémoires est donc inférieure à la durée nécessaire pour la réalisation des mêmes opérations de lecture et d'écriture simultanées pour une mémoire à double accès.
Selon un troisième avantage de la présente invention, la puissance moyenne du décodeur selon l'invention est réduite.
En effet, avec les technologies courantes, la puissance moyenne consonunée par une mémoire à accès unique couuportant moitié moins de données qu'une mémoire à double accès est divisée d'un facteur strictement supérieur à 2 par rapport à la puissance moyenne consommée par la mémoire à double accès. La puissance totale consouunée par les première et seconde mémoires mises en oeuvre dans la présente invention est donc inférieure à la puissance consommée par une mémoire à double accès.
La figure 3 représente un premier exemple de réalisation d'un décodeur LDPC 41 selon l'invention dont le fonction- nement général est similaire à celui du décodeur 20 représenté en figure 2. La mémoire 26 est remplacée par une première mémoire vive à accès unique 42, appelée par la suite mémoire RAM paire, et une seconde mémoire vive à accès unique 44, appelée par la suite mémoire RAM impaire. Les mémoires RAM paire 42 et impaire 44 contiennent chacune moitié moins de données que la mémoire 26. La mémoire RAM paire 42 attaque une première entrée d'un multiplexeur 45 et la mémoire RAM impaire 44 attaque une seconde entrée du multiplexeur 45. La sortie du multiplexeur 45 est reliée au module de réarrangement 34 et au multiplexeur 32.
Un module de commande 46 est adapté à fournir une adresse de lecture add_r sur une première sortie et une adresse d'écriture add w sur une seconde sortie correspondant à des adresses d'accès aux première et seconde mémoires 42, 44. Le multiplexeur 45 est commandé par un signal de commande SM1 fourni par le module de commande 46.
Le décodeur 41 comprend deux commutateurs 48, 49 commandés respectivement par des signaux de commande SC1, SC2 fournis par le module de commande 46 et recevant chacun, à une première entrée le signal d'adresse de lecture add_r et à une seconde entrée le signal d'adresse d'écriture add w. Chaque commutateur 48, 49 comprend deux sorties et est adapté à fournir sur une sortie l'un des signaux d'adresse et sur l'autre sortie l'autre signal d'adresse selon le signal de commande SC1, SC2 reçu.
Une sortie du commutateur 49 attaque une première entrée d'un multiplexeur 50, commandé par un signal SM2 fourni par le module de commande 46, et l'autre sortie du commutateur 49 attaque une première entrée d'un multiplexeur 51, commandé par un signal SM3 fourni par le module de commande 46. Une sortie du commutateur 48 attaque une première mémoire 52, 2871976 17 appelée par la suite mémoire ROM paire. L'autre sortie du couutuutateur 48 attaque une seconde mémoire 54, appelée par la suite mémoire ROM impaire. La mémoire ROM paire 52 est adaptée à réception d'une adresse add_r ou add w à fournir un signal even_out correspondant à une autre adresse de lecture ou d'écriture de la mémoire RAM paire 42 ou de la mémoire RAM impaire 44. La mémoire ROM impaire 54 est adaptée à réception d'une adresse add r ou add w à fournir un signal odd_out correspondant à une autre adresse de lecture ou d'écriture de la mémoire RAM ituupaire 44 ou de la mémoire paire 42.
Le signal even_out attaque une première entrée d'un cottunutateur 56. Le signal odddout attaque une seconde entrée du cottunutateur 56. Le commutateur 56, commandé par un signal SC3 fourni par le module de conunande 46, est adapté à fournir à une première sortie l'un des signaux even_out ou odd._out et à une seconde sortie l'autre signal even_out ou odd out. La première sortie du commutateur 56 attaque une seconde entrée du multiplexeur 50 et la seconde sortie du commutateur 56 attaque une seconde entrée du multiplexeur 51. La sortie du multiplexeur 50 attaque la mémoire RAM impaire 44 et la sortie du multiplexeur 51 attaque la mémoire RAM paire 42. Simultanément à la fourniture du signal even out, la mémoire ROM paire 52 fournit un signal shift_value_even représentatif d'une opération de réarrangement spécifique à effectuer à une première entrée d'un commutateur 58. Simultanément à la fourniture du signal odd out, la mémoire ROM 54 fournit un signal shift value_odd représentatif d'une opération de réarrangement spécifique à effectuer à une seconde entrée du commutateur 58. Le commutateur 58 est commandé par un signal SC4 fourni par le module de commande 46 et est adapté à fournir, selon le signal de commande SC4, au module de réarrangement 34 l'un des signaux shift_value_even ou shift value_odd et au module de réarrangement 38 l'autre des signaux shift_value_even ou shift value odd.
Le fonctionnement du décodeur 41 selon l'invention est 35 le suivant: A titre d'exemple, on supposera que suite à une étape de détermination des noeuds de bit, des messages de noeud de bit sont répartis dans les mémoires RAM paire 42 et impaire 44. A l'étape de détermination des noeuds de parité suivante, les messages de noeud de bit sont lus dans les mémoires RAM paire 42 et impaire 44 et pour chaque mémoire, selon un premier ordre de lecture fourni par le module de commande 46. Le module de commande 46 fournit, par l'intermédiaire du commutateur 49, les adresses de lecture add_r des mémoires RAM paire 42 et impaire 44. Au fur et à mesure que le module de traitement 22 reçoit les messages de noeud de bit, il fournit des messages de noeud de parité qui sont écrits dans les mémoires RAM paire 42 et impaire 44 selon un premier ordre d'écriture fourni par le module de commande 46 d'accès à ces mémoires. Le module de commande 46 est adapté à commander les commutateurs 48, 49, 56 et 58 et les multiplexeurs 50, 51 de sorte que, lorsque des opérations de lecture et d'écriture sont réalisées simultanément, il soit produit simultanément une adresse de lecture dans la mémoire RAM paire 42 et une adresse d'écriture dans la mémoire RAM impaire 44 ou simultanément une adresse d'écriture dans la mémoire RAM paire 42 et une adresse de lecture dans la mémoire RAM impaire 44.
A l'opération de détermination des noeuds de bit sui-vante, les messages de noeud de parité écrits dans les mémoires RAM paire 42 et impaire 44 sont successivement lus par l'inter- médiaire du module de réarrangement 34 selon un second ordre de lecture fourni par les mémoires ROM paire 52 et impaire 54. Pour ce faire, le module de commande 46 fournit successivement des adresses de lecture des mémoires RAM paire 42 et impaire 44 selon l'ordre régulier d'accès aux lignes des mémoires paire 42 et impaire 44 aux mémoires ROM paire 52 et impaire 54. Les mémoires ROM paire 52 et impaire 54 fournissent alors successivement de nouvelles adresses de lecture aux mémoires RAM paire 42 et impaire 44 et fournissent simultanément des valeurs de décalage shift_value_even et shift value_odd au module de réarrangement 34 par l'intermédiaire du commutateur 58. Au fur et à mesure que le module de traitement 22 reçoit les messages de noeud de parité, il fournit des messages de noeud de bit qui sont successivement écrits dans les mémoires RAM paire 42 et impaire 44 selon un second ordre d'écriture fourni par les mémoires ROM paire 52 et impaire 54. Pour ce faire, le module de commande 46 fournit successivement des adresses d'écriture des mémoires RAM paire 42 et impaire 44 selon l'ordre d'accès régulier aux lignes des mémoires RAM paire 42 et impaire 44, par l'intermédiaire du commutateur 48, qui attaque les mémoires ROM paire 52 et impaire 54. Les mémoires ROM paire 52 et impaire 54 alors fournissent successivement de nouvelles adresses d'écriture dans les mémoires RAM paire 42 et impaires 44 et fournis-sent simultanément successivement des valeurs de décalage shift_value_even et shift value_odd au module de réarrangement 38 par l'intermédiaire du commutateur 58.
Les étapes successives de détermination des noeuds de parité et de bit suivantes se déroulent de façon identique à ce qui a été décrit précédemment.
Pour un tel décodeur 41, selon l'exemple précédemment décrit, un message de noeud de parité "échangé" entre le noeud de parité CNj et le noeud de bit BNi, obtenu à une étape de détermination des noeuds de parité, est écrit à la même "place", dans l'une ou l'autre des mémoires RAM 42, 44, que le message de noeud de bit "échangé" entre le même noeud de bit BNi et le même noeud de parité CNj obtenu à une étape de détermination de noeuds de bit. Un réarrangement des messages de chaque mot lu et écrit doit alors être effectué seulement lors d'une étape de détermination de noeuds de bit.
Avec un système de contrôle différent, le réarran- gement des messages de chaque mot lu et écrit peut être effectué seulement lors d'une étape de détermination de noeuds de parité. De même, et indépendamment du constat précédent, les mémoires ROM paire 52 et impaire 54 peuvent être utilisées pour fournir l'adresse des mémoires RAM paire 42 et impaire 44 lors de l'étape de détermination des noeuds de parité seulement.
Un exemple plus détaillé du fonctionnement du décodeur 41 selon le premier exemple de réalisation de la présente invention va maintenant être décrit pour la matrice H suivante 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 Le nombre Ne de "1" de la matrice 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 0 0 e6 e7 e8 0 e9 elO 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 1 Dans le présent 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: eO 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 el1 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 eO et e12 utilisés par le premier module de traitement élémentaire Mod1 lors d'une étape de détermination des noeuds de bit sont contenus dans deux mots différents.
Pour le décodeur 41 représenté en figure 3, les messages ek, k variant de 0 à 35, sont, à titre d'exemple, stockés dans les mémoires RAM paire 42 et impaire 44 selon une disposition correspondant respectivement aux matrices MEN! PAIRE et MEM IMPAIRE suivantes: eO e13 e25' 0 (el e12 e24'0 e2 e14 e26 1 e3 e15 e27 1 MEM PAIRE = e4 e16 e29 2 MEM IMPAIRE = e5 e17 e28 2 (11) e6 e18 e30 3 e7 e19 e32 3 e8 e20 e31 4 e9 e2l e34 4 e10 e22 e331 5 e11 e23 e35) 5 la dernière colonne représentant les numéros de lignes des mémoires RAM paire 42 et impaire 44. On remarquera que les lignes de la mémoire RAM paire 42 correspondent aux lignes paires de la mémoire 26 et que les lignes de la mémoire RAM impaire 44 correspondent aux lignes impaires de la mémoire 26.
A titre d'exemple, pour le décodeur 20 représenté en figure 2, le module de fourniture d'adresse 40 comprend, à chaque ligne, un numéro de ligne de la mémoire 26 et un nombre de positions de décalage. Le module de fourniture d'adresse 40 comprend, par exemple, une mémoire dont la composition correspond à la matrice ROM suivante: ROM = 0 0- 1 1 6 1 7 0 2 2 8 2 2 9 0 3 1 2 4 0 11 1 (12) où la première colonne correspond à des numéros de lignes de la mémoire 26 et la seconde colonne correspond à un nombre de positions de décalage, la dernière colonne représentant les numéros de lignes de la mémoire.
Pour le premier exemple de décodeur 41 selon l'inven- tion, les mémoires ROM paire 52 et impaire 54 ont une composition correspondant respectivement aux matrices ROM PAIRE et ROM IMPAIRE suivantes: (0 0\0 (1 1\0 6 1 1 7 0 1 ROM PAIRE= 2 2 2 ROM IMPAIRE = 8 2 2 (13) 2 3 9 0 3 3 1 4 5 2 4 4 0 5 l 1 1) 5 où la dernière colonne représente les numéros de lignes des mémoires ROM paire 52 et impaire 54. On remarquera que les lignes de la mémoire ROM paire 52 correspondent aux lignes paires de la mémoire représentée par la matrice ROM définie à la relation (12) et que les lignes de la mémoire ROM impaire 54 correspondent aux lignes impaires de la mémoire représentée par la matrice ROM définie à la relation (12).
Un exemple de déroulement d'une étape de détermination des noeuds de parité est illustré par le tableau I suivant: 10 Tableau I Cycle add_r add w SC2 Adresse Adresse SM1 RAM paire RAM impaire 0 0 1 OR 1 1 1 0 OR 0 2 2 1 1R 1 3 3 0 1R 0 4 4 1 2R 1 5 0 2R 0 7 5 1 2W 8 4 0 2W 9 6 3 1 3R 1W 1 7 2 0 1W 3R 0 11 8 1 1 4R 0W 1 12 9 0 0 0W 4R 0 13 10 1 5R 1 14 11 0 5R 0 16 11 1 5W 17 10 0 5W 18 9 1 4W 19 8 0 4W 7 1 3W 21 6 0 3W Dans le tableau I, la première colonne représente des cycles successifs de l'horloge synchronisant les composants du décodeur 41. Le tableau I ne tient pas compte des délais en terme de cycles d'horloge de l'implémentation des différents composants du décodeur. Les signaux SC2 et SM1 sont obtenus à partir des signaux add_r et add w. Plus précisément, le signal SC2 est égal au bit de poids le plus faible du signal add w ou à l'inverse du bit de poids le plus faible du signal add_r et le signal SM1 est égal à l'inverse du bit de poids le plus faible du signal add_r. Pour obtenir le numéro de ligne de la mémoire RAM paire 42 ou de la mémoire RAM impaire 44 associé à un signal add_r ou un signal add._w, il suffit de retirer le bit de poids le plus faible du signal add_r ou du signal add w. Aux cinquième et sixième colonnes du tableau I, la lettre "R" signifie qu'une opération de lecture est réalisée dans la mémoire RAM considérée et la lettre "W" signifie qu'une opération d'écriture est réalisée dans la mémoire considérée. Le commutateur 49 fournit le signal add_r au multiplexeur 51 et le signal add w au multiplexeur 50 lorsque le signal de commande SC2 est à "1" et fournit le signal add_r au multiplexeur 50 et le signal add w au multiplexeur 51 lorsque le signal de commande SC2 est à "0". Pendant toute l'étape de détermination de noeuds de parité, les signaux de commande SM2 et SM3 sont constants et choisis de sorte que les multiplexeurs 50, 51 fournissent respectivement aux mémoires RAM impaire 44 et paire 42 les signaux addr ou adddw issus du commutateur 49. La valeur du signal SC4 est ici sans objet puisque les modules de réarrangement 34, 38 ne sont pas utilisés lors de l'étape de détermination des noeuds de parité.
Lors de l'étape de détermination des noeuds de parité, pour chaque mot lu dans la mémoire RAM paire 42 ou dans la mémoire RAM impaire 44, 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émen- taire Mod3. A titre d'exemple, aux cycles 0 à 5, le premier module élémentaire Modl reçoit 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 dans les mémoires RAM paire 42 ou impaire 44. Il est à noter, dans le présent exemple, si on lit successivement les messages de noeud de bit e0 à e5, le module de traitement élémentaire Modl fournit les messages de noeud de parité dans l'ordre inverse, c'est-à-dire que l'on écrit successivement e5, e4, e3, e2, el puis e0. La répartition des messages ei, i variant de 0 à 35, dans les mémoires RAM paire 42 ou impaire 44 correspond donc respectivement à nouveau aux matrices MEM_PAIRE et MEN! IMPAIRE définies à la relation (11).
o I â (n (D 0 lo Pi' w cD W C) I c F-' n I H â ç ) r o n (D m H - (D H- n (D H- û o m (D H- N n N n
N
K m
0 0 1 0 0 0 OR 1 0 0 1 1 0 0 1 0 OR 0 1 1 2 2 1 1 6 0 3R 1 0 1 4 2 0 1 6 0 3W 1 1 4 1 1 2 0 2 1 0 1R 0W 1 0 2 1 Lors d'une étape de détermination des noeuds de bit, 15 les modules de réarrangement 34, 38 utilisent les informations fournies par les mémoires ROM paire 52 et impaire 54 pour lire et écrire les bons messages aux bonnes places.
Un exemple de déroulement d'une étape de détermination des noeuds de bits est illustré par le tableau II suivant: 20 Tableau II 6 3 0 0 0 1 0 7 0 OW 3R 0 1 0 0 7 5 0 2 8 1 4R 1 1 2 9 5 1 2 8 1 4W 0 2 6 3 1 3 1 10 7 0 5R 3W 1 0 2 0 11 7 4 0 2 3 2 9 0 1W 4R 0 1 0 2 12 8 1 4 3 1 1R 0 0 1 14 8 0 4 3 1 1W 1 1 10 7 1 5 3 4 9 0 2R 4W 1 0 0 0 16 9 6 0 3 4 10 5 0 5W 2R 0 1 2 2 17 11 0 5 11 0 5R 0 1 1 19 11 1 5 11 0 5W 0 1 9 1 4 5 0 2W 0 2 21 10 0 5 4 0 2W 1 0 Dans le tableau II, on utilise les mêmes conventions que celles utilisées pour le tableau I, à l'exception que le signal SM1 est égal à l'inverse du bit de poids de plus faible du signal even_out ou odddout lorsque celui-ci est associé à une opération de lecture. En outre, le signal SC1 est égal au bit de poids le plus faible du signal add w ou à l'inverse du bit de poids le plus faible du signal add r, le signal SC3 est égal au bit de poids le plus faible du signal even_out ou à l'inverse du bit de poids le plus faible du signal odd_out, et le signal SC4 est égal au bit de poids le plus faible du signal add_r ou à l'inverse du bit de poids le plus faible du signal add w. Pour obtenir le numéro de ligne de la mémoire ROM paire ou impaire 52, 54 correspondant à un signal add_r ou un signal add w, il suffit de retirer le bit de poids le plus faible du signal add_r ou du signal add w. De même, pour obtenir le numéro de ligne de la mémoire RAM paire 42 ou impaire 44 correspondant à un signal odd_out ou à un signal even_out, il suffit de retirer le bit de poids le plus faible du signal odd_out ou du signal even_out.
Le commutateur 48 fournit le signal add_r à la mémoire odd_out au multiplexeur 51 lorsque le signal de commande SC3 est à "1". Le commutateur 58 fournit le signal shift value_even au module de réarrangement 38 et le signal shift value_odd au module de réarrangement 34 lorsque le signal de commande SC4 est à "1" et fournit le signal shift_value_even au module de réarrangement 34 et le signal shift value_odd au module de réarrangement 38 lorsque le signal de commande SC4 est à "0".
Lors de l'étape de détermination des noeuds de bit, les mots sont lus dans la mémoire RAM paire 42 ou dans la mémoire RAM impaire 44 dans l'ordre indiqué par les mémoires ROM paire 52 et impaire 54. A titre d'exemple, la détermination des noeuds de bit d'indice 0, 1 et 2 est obtenue à partir de la ligne n 0 de la mémoire ROM paire 52 qui renvoie le numéro de ligne 0 utilisé pour lire dans la mémoire paire 42, de la ligne n 0 de la mémoire ROM impaire 54 qui renvoie le numéro de ligne 1 utilisé pour lire dans la mémoire impaire 44, et de la ligne n 1 de la mémoire ROM paire 52 qui renvoie le numéro de ligne 6 utilisé pour lire dans la mémoire paire 42.
Le module de réarrangement 34 reçoit donc le mot stocké à la ligne n 0 de la mémoire RAM paire 42 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émen- taire 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émen- ROM paire 52 et le signal lorsque le signal de commande SC1 add_r à la mémoire ROM impaire mémoire ROM paire 52 lorsque le "0". Le commutateur 56 fournit plexeur 51 et le signal odd_out signal de commande SC3 est à "0" au multiplexeur 50 et le signal add w à la mémoire ROM impaire 54 est à "1" et fournit le signal 54 et le signal add w à la signal de commande SC1 est à le signal even_out au multiau multiplexeur 50 lorsque le et fournit le signal even_out taire Mod3. Le module de réarrangement 34 reçoit ensuite le mot stocké à la ligne n 0 de la mémoire RAM impaire 44, réalise un décalage vers la gauche des messages du mot lu de 1 position de décalage et fournit donc le message e12, à la première position du mot modifié, au premier module de traitement élémentaire Mod1, le message e24, à la deuxième position, au deuxième module de traitement élémentaire Mod2 et le message el, à la troisième position, au troisième module de traitement élémentaire Mod3. Enfin, le module de réarrangement 34 reçoit ensuite le mot stocké à la ligne n 3 de la mémoire RAM paire 42 et réalise un décalage vers la gauche des messages du mot lu de 1 position de décalage et fournit donc le message e18, à la première position du mot modifié, au premier module de traitement élémentaire Mod1, le message e30, à la deuxième position, au deuxième module de traitement élémentaire Mod2 et le message e6, à la troisième position, au troisième module de traitement élémentaire Mod3.
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 (e18, e30, e6), (el2, e24, el) et (e0, e13, e25). Pour écrire correctement le mot (e18, e30, e6), le module de réarrangement 38 utilise, au cycle 4, la donnée de réarrangement stockée à la ligne n 1 de la mémoire ROM paire 52 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 1 de la mémoire ROM paire 52 renvoie au numéro de ligne n 6. Le module de réarrangement 38 écrit donc le nouveau mot (e6, e18, e30) à la ligne n 3 de la mémoire RAM paire 42. La répartition des messages ei, i variant de 0 à 35, dans les mémoires RAM 42, 44 correspond donc, à la fin de l'étape de détermination des noeuds de bit, à nouveau aux matrices MEM PAIRE et MEM IMPAIRE définies à la relation (11).
La figure 4 représente un second exemple de réali-35 sation d'un décodeur 60 selon l'invention. Contrairement au décodeur 41 représenté en figure 3, le décodeur 60 comprend un seul module de réarrangement 62 adapté à lire des mots dans la mémoire RAM paire 42 ou la mémoire RAM impaire 44, éventuellement selon un ordre différent de l'ordre d'accès régulier aux lignes des mémoires paire 42 ou impaire 44, et à effectuer un réarrangement des messages constituant le mot lu. Le signal shift value_even, fourni par la mémoire ROM paire 52, attaque une première entrée d'un multiplexeur 63, commandé par un signal de commande SM4 fourni par le module de commande 46, et le signal shift value_odd, fourni par la mémoire ROM impaire 54, attaque une seconde entrée du multiplexeur 63. Le multiplexeur 63 fourni un signal shift value au module de réarrangement 62 indiquant de quelle façon doivent être réarrangés les messages du mot lu.
Un multiplexeur 64, commandé par un signal S4, est relié à une première entrée au module de réarrangement 62 et à une seconde entrée à la mémoire d'entrée 28. Selon la valeur du signal S4, le multiplexeur 64 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 62. Le module de traitement 22 est relié à une première sortie à la mémoire RAM paire 42 et à la mémoire RAM impaire 44 et à une seconde sortie à la mémoire de sortie 30. A la différence du décodeur 41 représenté en figure 3, le signal shift value est transmis seulement au module de réarrangement 62.
Pour le décodeur 60, un message de noeud de parité "échangé" entre le noeud de parité CNj et le noeud de bit BNi, obtenu à une étape de détermination des noeuds de parité, n'est pas écrit à la même "place", dans l'une ou l'autre des mémoires RAM 42, 44, que le message de noeud de bit "échangé" entre le même noeud de bit BNi et le même noeud de parité CNj 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 l'une ou l'autre des mémoires RAM 42, 44 à la fois lors d'une étape de détermination des noeuds de bit et d'une étape de détermination des noeuds de parité.
A titre d'exemple, l'opération de réarrangement effectuée par le module de réarrangement 62 est une opération de décalage des mots lus. Selon cet exemple, lors de l'étape de détermination des noeuds de parité, le module de réarrangement 62 fournit des messages au module de traitement 22 en lisant les mots dans les mémoires RAM paire 42 et impaire 44 en réalisant, sur chaque mot lu, un décalage vers la droite à partir d'un nombre de positions de décalage indiqué dans les mémoires ROM paire 52 et impaire 54.
Lors de l'étape de détermination des noeuds de bit suivante, le module de réarrangement 62 fournit des messages au module de traitement 22 en lisant les mots dans les mémoires RAM paire 42 et impaire 44 en réalisant, sur chaque mot lu, un décalage vers la gauche à partir d'un nombre de positions de décalage indiqué dans les mémoires ROM paire 52 et impaire 54.
Après une étape de détermination des noeuds de bit ou de parité, les nouveaux mots obtenus fournis par le module de traitement 22 sont inscrits dans les mémoires RAM paire 42 et iupaire 44 sans effectuer de décalage.
Selon le présent exemple, les nombres de positions de décalage vers la droite ou vers la gauche sont stockés dans les mémoires ROM 52, 54. Le module de réarrangement 62 réalisant un décalage circulaire sur les mots lus, un nombre de positions de décalage vers la droite peut être stocké dans les mémoires ROM 52, 54 sous la forme d'un nombre équivalent de positions de décalage vers la gauche. Ceci permet d'utiliser un module de réarrangement 62 ne réalisant que des opérations de décalage vers la gauche.
Un exemple plus détaillé du fonctionnement du décodeur 60 selon le deuxième exemple de réalisation selon la présente invention va maintenant être décrit pour la matrice H définie à la relation (9) et en supposant que les mémoires ROM paire 52 et impaire 54 correspondent respectivement aux matrices ROM PAIRE et ROM IMPAIRE définies à la relation (13).
On suppose qu'au début d'une étape de détermination des noeuds de bits, la répartition des messages dans les mémoires RAM paire 42 et impaire 44 correspond respectivement aux matrices MEM PAIRE et MEM IMPAIRE définies à la relation (11). A l'étape de détermination des noeuds de bit suivante, le module de
réarrangement 62 fournit des messages au module de traitement 22 en lisant les mots dans la mémoire RAM paire 42 ou la mémoire RAM impaire 44 dans l'ordre indiqué par les mémoires ROM paire et impaire 52, 54 et en réalisant, pour chaque mot lu, un décalage vers la gauche à partir du nombre de positions de décalage indiqué par les mémoires ROM paire et impaire 52, 54 comme cela a été décrit en relation au premier exemple de réalisation. A titre d'exemple, le module de réarrangement 62 fournit successivement les trois mots (eO, e13, e25), (e12, e24, el) et (e18, e30, e6) au module de traitement 22.
Les nouveaux mots obtenus fournis par le module de traitement 22 sont alors écrits dans la mémoire RAM paire 42 ou dans la mémoire RAM impaire 44 en suivant l'ordre indiqué par les mémoires ROM paire ou impaire 52, 54 mais sans effectuer de décalage. A titre d'exemple, le module de traitement 22 fournit successivement trois nouveaux mots (eO, e13, e25), (el2, e24, el) et (e18, e30, e6) qui sont respectivement écrits à la ligne n 0 de la mémoire RAM paire 42, à la ligne n 0 de la mémoire RAM impaire 44 et à la ligne n 3 de la mémoire RAM paire 42.
On obtient alors une disposition des messages dans les mémoires RAM 42 et 44 qui correspond aux matrices MEM PAIRE et =IMPAIRE suivantes: " eO e13 e25" 0 "e12 e24 el \ 0 e26 e2 e14 1 e15 e27 e3 1 MEM PAIRE= e4 e16 e29 2 e28 e5 e17 2 MEM IMPAIRE= (14) e18 e30 e6 3 e7 e19 e32 3 e31 e8 e20 4 e9 e21 e34 4 e33 elO e22) 5 e23 e35 e1115 L'étape de détermination de bits peut se dérouler sensiblement selon la même séquence que celle indiquée dans le tableau II décrit précédemment. Toutefois, les colonnes intitulées "SC4" et "Shift value (écriture)" ne sont pas à prendre en compte puisque aucun décalage n'est effectué sur les mots écrits dans la mémoire RAM paire 42 ou dans la mémoire RAM impaire 44.
Lors de l'étape de détermination des noeuds de parité suivante, le module de réarrangement 62 lit successivement des mots dans les mémoires RAM paire et impaire 42, 44 selon un ordre de lecture régulier et effectue, pour un mot lu dans la mémoire RAM paire 42 ou dans la mémoire RAM impaire 44 à 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 de l'une des mémoires ROM 52, 54. Les nouveaux mots fournis par le module de traitement 22 sont alors écrits dans la mémoire RAM paire 42 ou dans la mémoire RAM impaire 44 dans l'ordre normal des lignes de ces mémoires sans aucun décalage. On retrouve alors une disposition des messages dans les mémoires RAM paire et impaire 42, 44 correspondant aux matrices MEM PAIRE et MEM IMPAIRE définies à la relation (11). L'étape de détermination des noeuds de parité peut être réalisée selon la même séquence que celle indiquée dans le Tableau I en prévoyant néanmoins qu'une opération de décalage est à réaliser sur chaque mot lu.
La disposition des messages dans les mémoires RAM paire et impaire 42, 44 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.
La figure 5 représente un troisième exemple de réalisation d'un décodeur 70 selon l'invention.
A la différence du décodeur 60 représenté en figure 4, la sortie du multiplexeur 50 est, en outre, reliée à une pre- mière entrée d'un multiplexeur 72 et la sortie du multiplexeur 51 est, en outre, reliée à une seconde entrée d'un multiplexeur 72. Le multiplexeur 72 est commandé par un signal SM4 fourni par le module de commande 46. Le multiplexeur 72 fournit donc l'un des signaux suivants add r, add w, even out, et odd out à un module de commande de décalage 74 qui fournit, pour chaque signal représentatif d'une adresse reçue, une valeur de décalage shift value au module de réarrangement 62. Seules des données représentatives d'adresse des mémoires RAM 42, 44 sont alors stockées dans les mémoires ROM paire et impaire 52, 54. Le fonctionnement du décodeur 70 est par ailleurs identique au fonctionnement du décodeur 60.
La figure 6 représente un exemple de réalisation plus détaillé de l'une des mémoires ROM paire 52 ou impaire 54 du deuxième exemple de réalisation de l'invention. La mémoire ROM 52, 54 est adaptée à recevoir un signal L1 égal à add_r ou à add w et qui est représentatif d'un numéro de ligne initial de la mémoire RAM associée 42, 44 et à fournir un signal L2 (even_out ou odd out) représentatif d'un nouveau numéro de ligne de mémoire RAM 42, 44, un signal D NB représentatif d'un nombre de positions de décalage à utiliser lors d'une étape de déter- mination des noeuds de bit et un signal D NC représentatif d'un nombre de positions de décalage à utiliser lors d'une étape de détermination des noeuds de parité. Le décodeur comprend un multiplexeur 76, commandé par un signal de commande binaire SC6 fourni par le module de commande 46, recevant le signal D NB à une première entrée et le signal D _NC à une seconde entrée et fournissant un signal Decalage, correspondant au signal shift value odd ou shift value even transmis au module de réarrangement 62 pour le deuxième exemple de réalisation. A titre d'exemple, lorsque le signal SC6 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 SC6 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 7 représente un exemple de réalisation plus détaillé du module de commande de décalage 74 pour le troisième exemple de réalisation du décodeur 70 selon l'invention. Chaque mémoire ROM 52, 54 du décodeur 70 selon le troisième exemple de réalisation fournit uniquement un signal d'adresse even_out, odd_out. Le multiplexeur 72 fournit au module de commande de décalage 74 un signal représentatif d'une adresse d'une des mémoires RAM paire ou impaire 42, 44 et qui peut correspondre à l'un des signaux addr r, even_out ou odd out. Le module de commande de décalage 74 comprend une mémoire 78 adaptée à recevoir le signal représentatif d'une 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 de commande de décalage 74 comprend un module 80 adapté à déterminer le nombre de décalages D _NC à utiliser lors d'une étape de détermination des noeuds de parité à partir de D_NB. Un multiplexeur 82, commandé par le signal SC7, reçoit le signal D_NB à une première entrée et le signal D NC à une seconde entrée et fournit le signal shift value au module de réarrangement 62. A titre d'exemple, lorsque le signal SC7 est à un état haut, ce qui indique qu'une étape de détermination des noeuds de parité est en cours, le signal shift value est égal à D NC et lorsque le signal SC7 est à un état bas, ce qui indique qu'une étape de détermination des noeuds de bit est en cours, le signal shift value est égal à D_NB.
Pour les deuxième et troisième exemples de réalisation du décodeur selon l'invention, le décodeur 60, 70 ne comprend qu'un seul module de réarrangement 62. Comme la surface nécessaire à la réalisation du module de commande de décalage 74 est négligeable, on libère pratiquement complètement la surface occupée par un module de réarrangement par rapport au décodeur 41. En outre, le module de réarrangement 62 du décodeur 60, 70 selon le deuxième ou le troisième exemple de réalisation peut avoir une structure identique à celle d'un module de réarrangement 34, 38 classique.
Selon une variante des deuxième et troisième exemples de réalisation, le module de réarrangement 62 est placé entre le module de traitement 22 et les mémoires RAM 42, 44, en aval du module de traitement 22 selon le sens de circulation des données. Le module de réarrangement 62 est alors adapté à écrire un mot dans les mémoires RAM 42, 44 à 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 Nod1, le message à la seconde position de chaque mot lu est fourni au second module de traitement élémentaire Mod2, etc., et le message à la dernière position de chaque mot lu est fourni au dernier module de traitement élémentaire ModNB. Le module de réarrangement 62 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 Modi, i allant de 1 à NB, à l'étape de détermination suivante se trouvent à la même position dans chaque mot. On obtient donc, conne 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 les mémoires RAM 42, 44 respectivement après une étape de détermination des noeuds de bit ou une étape de détermination des noeuds de parité.
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 (11)
1. Décodeur (41, 60, 70) LDPC comprenant: un nombre déterminé de modules de traitement (24) 5 fonctionnant en parallèle adaptés à recevoir des premiers messages et à fournir des seconds messages à partir d'un traitement des premiers messages reçus; des première et seconde mémoires à accès unique (42, 44) ; et des moyens (32, 34, 38, 39; 62, 74) adaptés à : lire des premiers mots à la fois dans la première mémoire à accès unique et dans la seconde mémoire à accès unique, chaque premier mot contenant une juxtaposition de premiers messages en nombre égal audit nombre déterminé ; fournir des premiers messages aux modules de traitement à partir des premiers mots lus; former des seconds mots, chaque second mot contenant une juxtaposition de seconds messages fournis par les modules de traitement en nombre égal audit nombre déterminé ; et écrire les seconds mots dans les première et seconde mémoires à accès unique, lesdits moyens étant adaptés, pour au moins un premier mot et un second mot, à lire le premier mot dans la première mémoire à accès unique et simultanément à écrire le second mot dans la seconde mémoire à accès unique ou à lire le premier mot dans la seconde mémoire à accès unique et simultanément à écrire le second mot dans la première mémoire à accès unique.
2. Décodeur (41, 60, 70) LDPC selon la revendication 1, dans lequel les modules de traitement (24) sont adaptés à recevoir des seconds messages et à fournir des nouveaux premiers messages à partir d'un traitement des seconds messages, le traitement des seconds messages étant différent du traitement des premiers messages, ledit décodeur comprenant en outre des moyens {32, 34, 38, 39; 62, 74) adaptés à : 20 lire des seconds mots à la fois dans la première mémoire à accès unique et dans la seconde mémoire à accès unique; fournir des seconds messages aux modules de 5 traitement à partir des seconds mots lus; former des nouveaux premiers mots à partir des nouveaux premiers messages fournis par les modules de traitement; et écrire les nouveaux premiers mots dans les pre- mière et seconde mémoires à accès unique, lesdits moyens étant adaptés, pour au moins un second mot et un nouveau premier mot, à lire le second mot dans la première mémoire à accès unique et simultanément à écrire le nouveau premier mot dans la seconde mémoire à accès unique ou à lire le second mot dans la seconde mémoire à accès unique et simultanément à écrire le nouveau premier mot dans la première mémoire à accès unique.
3. Décodeur (41) selon la revendication 2, comprenant: un premier module de réarrangement (34) adapté à fournir à chaque module de traitement (24) pour chaque premier mot lu, un premier message à une position dans le premier mot qui dépend du premier mot lu et du module de traitement; et un second module de réarrangement (38) pour former les seconds mots, la position d'un second message dans le second mot dépendant du second mot et du module de traitement ayant fourni le second message.
4. Décodeur (60, 70) selon la revendication 2, comprenant un module de réarrangement (62) adapté à fournir à chaque module de traitement (24) pour chaque premier mot lu, un premier message à une position dans le premier mot lu qui dépend du premier mot lu et du module de traitement, et adapté à fournir à chaque module de traitement (24) pour chaque second mot lu, un second message à une position dans le second mot lu qui dépend du second mot lu et du module de traitement.
5. Décodeur selon la revendication 2, comprenant un 35 module de réarrangement adapté à former les seconds mots, la position d'un second message dans un second mot dépendant du second mot et du module de traitement ayant fourni le second message, et adapté à former les nouveaux premiers mots, la position d'un nouveau premier message dans un nouveau premier mot dépendant du nouveau premier mot et du module de traitement ayant fourni le nouveau premier message.
6. Procédé de décodage LDPC itératif, comprenant un nombre déterminé de modules de traitement (24) fonctionnant en parallèle, ledit procédé comprenant les étapes suivantes réalisées: lecture de premiers mots à la fois dans une première mémoire à accès unique (42) et dans une seconde mémoire à accès unique (44), chaque premier mot contenant une juxtaposition de premiers messages en nombre égal au nombre déterminé ; fourniture à chaque module de traitement, pour chaque 15 premier mot lu, d'un premier message du premier mot; fourniture, par chaque module de traitement, de seconds messages à partir d'un traitement des premiers messages; et écriture des seconds mots dans les première et seconde mémoires à accès unique, chaque second mot correspondant à une juxtaposition de seconds messages en nombre égal au nombre déterminé, dans lequel, pour au moins un premier mot et un second mot, la lecture du premier mot dans la première mémoire est réalisée simultanément à l'écriture du second mot dans la seconde mémoire ou la lecture du premier mot dans la seconde mémoire est réalisée simultanément à l'écriture du second mot dans la première mémoire.
7. Procédé selon la revendication 6, comprenant en outre les étapes suivantes, réalisées: lecture des seconds mots à la fois dans la première 30 mémoire à accès unique (42) et dans la seconde mémoire à accès unique (44) ; fourniture à chaque module de traitement, pour chaque second mot lu, d'un second message du second mot; fourniture, par chaque module de traitement, de 35 nouveaux premiers messages à partir d'un traitement des seconds messages, le traitement des seconds messages étant différent du traitement des premiers messages; et écriture, dans les première et seconde mémoires, de nouveaux premiers mots obtenus à partir des nouveaux premiers messages, dans lequel, pour au moins un second mot et un nouveau premier mot, la lecture du second mot dans la première mémoire est réalisée simultanément à l'écriture du nouveau premier mot dans la seconde mémoire ou la lecture du second mot dans la seconde mémoire est réalisée simultanément à l'écriture du nouveau premier mot dans la première mémoire.
8. Procédé selon la revendication 7, dans lequel l'ordre de lecture des premiers mots dans les première et seconde mémoires à accès unique (42, 44) est différent de l'ordre de lecture des seconds mots dans les première et seconde mémoires à accès unique.
9. Procédé selon la revendication 7, dans lequel à l'étape de fourniture à chaque module de traitement, pour chaque premier mot lu, d'un premier message du premier mot lu, le premier message est à une position dans le premier mot lu qui dépend du premier mot lu et du module de traitement, et dans lequel à l'étape d'écriture des seconds mots dans les première et seconde mémoires à accès unique, chaque second mot contient un second message à une position dans le second mot qui dépend du second mot et du module de traitement ayant fourni le second message.
10. Procédé selon la revendication 7, dans lequel à l'étape de fourniture à chaque module de traitement, pour chaque premier mot lu, d'un premier message du premier mot lu, le premier message est à une position dans le premier mot lu qui dépend du premier mot lu et du module de traitement, et dans lequel à l'étape de fourniture à chaque module de traitement, pour chaque second mot lu, d'un second message du second mot lu, le second message est à une position dans le second mot lu qui dépend du second mot lu et du module de traitement.
11. Procédé selon la revendication 7, dans lequel à l'étape d'écriture des seconds mots dans les première et seconde mémoires à accès unique, chaque second mot contient un second message à une position dans le second mot qui dépend du second mot et du module de traitement ayant fourni le second message, et dans lequel à l'étape d'écriture des nouveaux premiers mots dans les première et seconde mémoires à accès unique, chaque nouveau premier mot contient un nouveau premier message à une position dans le nouveau premier mot qui dépend du nouveau premier mot et du module de traitement ayant fourni le nouveau premier message.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0451308A FR2871976B1 (fr) | 2004-06-22 | 2004-06-22 | Decodeur ldpc |
US11/158,718 US7454693B2 (en) | 2004-06-22 | 2005-06-22 | LDPC decoder |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0451308A FR2871976B1 (fr) | 2004-06-22 | 2004-06-22 | Decodeur ldpc |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2871976A1 true FR2871976A1 (fr) | 2005-12-23 |
FR2871976B1 FR2871976B1 (fr) | 2006-08-11 |
Family
ID=34945697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0451308A Expired - Fee Related FR2871976B1 (fr) | 2004-06-22 | 2004-06-22 | Decodeur ldpc |
Country Status (2)
Country | Link |
---|---|
US (1) | US7454693B2 (fr) |
FR (1) | FR2871976B1 (fr) |
Cited By (1)
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 (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2871975B1 (fr) * | 2004-06-22 | 2006-08-11 | St Microelectronics Sa | Decodeur ldpc |
US7647548B2 (en) * | 2006-07-31 | 2010-01-12 | Agere Systems Inc. | Methods and apparatus for low-density parity check decoding using hardware-sharing and serial sum-product architecture |
US8144170B2 (en) * | 2007-03-28 | 2012-03-27 | Himax Technologies Limited | Apparatus for scaling image and line buffer thereof |
US8359522B2 (en) | 2007-05-01 | 2013-01-22 | Texas A&M University System | Low density parity check decoder for regular LDPC codes |
US8102721B2 (en) * | 2007-06-27 | 2012-01-24 | Infineon Technologies Ag | Pseudo dual-port memory |
US7911364B1 (en) | 2007-09-04 | 2011-03-22 | Marvell International Ltd. | Interleaver for turbo equalization |
US20110202817A1 (en) * | 2008-06-18 | 2011-08-18 | Nxp B.V. | Node information storage method and system for a low-density parity-check decoder |
US8335979B2 (en) * | 2008-12-08 | 2012-12-18 | Samsung Electronics Co., Ltd. | Contention-free parallel processing multimode LDPC decoder |
US8879670B2 (en) * | 2010-09-08 | 2014-11-04 | Agence Spatiale Europeenne | Flexible channel decoder |
US8902672B2 (en) * | 2013-01-01 | 2014-12-02 | Memoir Systems, Inc. | Methods and apparatus for designing and constructing multi-port memory circuits |
GB2510932B (en) | 2013-08-27 | 2015-01-21 | Imagination Tech Ltd | An improved decoder for low-density parity-check codes |
CN104579362B (zh) * | 2014-12-30 | 2017-10-24 | 北京遥测技术研究所 | 一种空间通信系统中部分并行结构ldpc码译码系统及其方法 |
US10102892B1 (en) * | 2017-06-01 | 2018-10-16 | Intel Corporation | RAM-based shift register with embedded addressing |
Citations (1)
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 (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100762619B1 (ko) * | 2004-05-21 | 2007-10-01 | 삼성전자주식회사 | 저밀도 패리티 검사 코드를 이용한 복호화 장치 및 방법 |
-
2004
- 2004-06-22 FR FR0451308A patent/FR2871976B1/fr not_active Expired - Fee Related
-
2005
- 2005-06-22 US US11/158,718 patent/US7454693B2/en active Active
Patent Citations (1)
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)
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)
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 |
---|---|
US20050281111A1 (en) | 2005-12-22 |
FR2871976B1 (fr) | 2006-08-11 |
US7454693B2 (en) | 2008-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
FR2871976A1 (fr) | Decodeur ldpc | |
EP0735696B1 (fr) | Procédé de décodage itératif, module de décodage et décodeur correspondants | |
EP0995272B1 (fr) | Decodage iteratif de codes produits | |
EP1332557B1 (fr) | Module, dispositif et procede de decodage a haut debit, d'un code concatene | |
EP0436251A2 (fr) | Système de codage de signaux numériques destinés à être transmis et/ou stockés et système de décodage correspondant | |
CH653457A5 (fr) | Procede de correction d'erreurs dans des signaux de donnees digitales. | |
FR2900294A1 (fr) | Chargement de la memoire d'entree d'un decodeur ldpc avec des donnees a decoder | |
FR2512568A1 (fr) | Systeme pour transferer des donnees binaires par une pluralite de canaux au moyen d'un codeur operant par convolution | |
EP0553050B1 (fr) | Procédé de décodage à maximum de vraisemblance à treillis de décodage sous-échantillonné, et dispositif de décodage correspondant | |
FR2785744A1 (fr) | Procede et dispositif de codage de sequences de donnees, procede et dispositif de decodage associes | |
FR2885708A1 (fr) | Dispositif et procede pour determiner une position d'une erreur de bit dans une sequence de bits | |
EP0204635B1 (fr) | Procédé de transmission en blocs de mots d'information numérique | |
BE889658A (fr) | Procede de correction d'erreurs | |
EP0463598B1 (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 | |
FR2891419A1 (fr) | Decodage d'une pluralite de flux d'informations codees selon un algorithme de codage par blocs. | |
EP1720171B1 (fr) | Dispositif de décalage en anneau | |
EP0183610B1 (fr) | Mémoire vive et circuit d'interpolation linéaire en comportant application | |
FR2871975A1 (fr) | Decodeur ldpc | |
FR2914447A1 (fr) | Dispositif electronique de decalage de donnees en particulier pour du codage/decodage avec un code ldpc | |
EP0407311B1 (fr) | Circuit de brassage de données | |
EP0769854B1 (fr) | Système permettant un décodage correct, sous forme d'un message binaire, d'un code magnétique enregistré sur une piste magnétique | |
EP1300952A1 (fr) | Code de détection et/ou de correction d'erreurs à haute efficacité | |
FR2647988A1 (fr) | Dispositif de retard d'un signal numerique programmable et application a un dispositif de code correcteur d'erreurs | |
FR2915641A1 (fr) | Procede et dispositif d'entrelacement de donnees | |
FR2890804A1 (fr) | Traitement de blocs dans un dispositif de decodage par blocs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ST | Notification of lapse |
Effective date: 20150227 |