FR3108222A1 - Correction d'erreurs pour les décodeurs LDPC - Google Patents

Correction d'erreurs pour les décodeurs LDPC Download PDF

Info

Publication number
FR3108222A1
FR3108222A1 FR2102316A FR2102316A FR3108222A1 FR 3108222 A1 FR3108222 A1 FR 3108222A1 FR 2102316 A FR2102316 A FR 2102316A FR 2102316 A FR2102316 A FR 2102316A FR 3108222 A1 FR3108222 A1 FR 3108222A1
Authority
FR
France
Prior art keywords
value
bit
nodes
node
control
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.)
Pending
Application number
FR2102316A
Other languages
English (en)
Inventor
Franz Josef Hagmanns
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.)
Tesat Spacecom GmbH and Co KG
Original Assignee
Tesat Spacecom GmbH and Co KG
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 Tesat Spacecom GmbH and Co KG filed Critical Tesat Spacecom GmbH and Co KG
Publication of FR3108222A1 publication Critical patent/FR3108222A1/fr
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0047Decoding adapted to other signal detection operation
    • H04L1/005Iterative decoding, including iteration between signal detection and decoding operation
    • 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/65Purpose and implementation aspects
    • H03M13/6577Representation or format of variables, register sizes or word-lengths and quantization
    • 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/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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
    • 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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • 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/65Purpose and implementation aspects
    • H03M13/6577Representation or format of variables, register sizes or word-lengths and quantization
    • H03M13/6594Non-linear quantization
    • 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/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping

Landscapes

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

Abstract

L'invention concerne une unité de réception destinée à être utilisée dans une liaison de données et un procédé de correction d'erreurs sur un mot de réception dans une liaison de données. Un code de contrôle de parité de faible densité, ou code LDPC, est utilisé pour adapter de manière itérative le mot de réception en échangeant des messages de nœuds de bits et des messages de nœuds de contrôle. Les messages de nœuds de contrôle qui sont transmis aux nœuds de bits sont quantifiés sur trois niveaux et prennent les valeurs -1, 0 ou +1. Le procédé peut ainsi être mis en œuvre avec une faible puissance de calcul. Figure de l’abrégé : Figure 2

Description

Correction d'erreurs pour les décodeurs LDPC
La présente invention concerne de manière générale le domaine technique de la transmission de données ainsi que la détection et la correction d'erreurs dans les données transmises du côté d'un récepteur. L'invention concerne notamment une unité de réception destinée à être utilisée dans une liaison de données et un procédé de correction d'erreurs sur un mot de réception.
Contexte technique
Les codes dits de contrôle de parité de faible densité (Low-Density-Parity-Check-Codes), ou codes LDPC, sont des codes par blocs linéaires destinés à la correction d'erreurs. Les codes LDPC décrivent à l'aide d'une matrice de multiples contrôles de parité consécutifs.
On trouvera les bases des codes LDPC dans Robert G. Gallager: Low-Density Parity-Check Codes. M.I.T. Press Classic Series, Cambridge MA, États-Unis, 1963.
Les décodeurs LDPC utilisent en règle générale des valeurs d'entrée finement quantifiées, provenant par exemple d'un convertisseur AD ayant une résolution de 4 à 6 bits et sont bien adaptés à la correction d'erreurs, mais nécessitent une puissance de calcul élevée.
Descriptif
Il serait souhaitable de disposer d'un décodeur LDPC de complexité et de puissance de calcul réduites.
Ce but est atteint par l'objet de la revendication indépendante. D'autres formes de réalisation ressortiront des revendications dépendantes et de la description qui suit.
Selon un premier aspect, l'invention concerne une unité de réception destinée à être utilisée dans une liaison de données. L'unité de réception comporte une unité de prétraitement et un décodeur. L'unité de prétraitement est configurée pour quantifier une valeur analogique reçue d'un canal de transmission en un signal à trois niveaux Q, le signal à trois niveaux pouvant prendre une première valeur, une deuxième valeur ou une troisième valeur, la première valeur correspondant à un premier état logique, la troisième valeur correspondant à un deuxième état logique, et la deuxième valeur correspondant à un état logique indéterminé. Le décodeur comprend une pluralité de nœuds de bits et une pluralité de nœuds de contrôle, un certain nombre de nœuds de bits étant respectivement connectés à un nœud de contrôle. Le décodeur est conçu pour actualiser de manière itérative des messages de nœuds de bits conformément à:
où:
est la nième itération d'un message du nœud de bit n envoyé au nœud de contrôle connecté au nœud de bit n.
est la nième itération d'un message allant du nœud de contrôle n au nœud de bit k; et
γ (k) est un ensemble d'indices des nœuds de contrôle connectés au nœud de bit k.
Le décodeur est conçu pour actualiser de manière itérative des messages de nœuds de contrôle envoyés aux nœuds de bits conformément à:
où:
β(k)est un ensemble d'indices des nœuds de bits connectés au nœud de contrôle k.
Le décodeur est conçu pour déterminer le signal à trois niveaux Q(x) comme suit:
Des informations sont transmises par l'intermédiaire du canal de transmission, par exemple sous forme de niveaux de tension analogiques. Du côté du récepteur, le niveau de tension est détecté et une valeur est affectée à ce niveau de tension. Le canal de transmission est fonctionnellement équivalent à un canal d'effacement (en anglais:erasure channel) du fait de la combinaison avec l'unité de prétraitement. Un canal d'effacement désigne un canal théorique d'information qui reçoit à son entrée un bit d'information (généralement à deux états, 0 logique ou 1 logique) et qui délivre à sa sortie un bit d'information (généralement à deux états, 0 logique ou 1 logique) ou une erreur de transmission E. Ainsi, le canal d'effacement présente trois valeurs de sortie possibles.
Le signal à trois états Q peut prendre trois valeurs. Une première valeur peut correspondre à un 0 logique, et une troisième valeur peut correspondre à un 1 logique. Cela permet de représenter les deux valeurs qui forment un unique bit d'information. La deuxième valeur est utilisée lorsqu'il n'est pas possible d'affecter de manière unique la valeur analogique reçue à la première ou à la troisième valeur.
L'unité de prétraitement et le décodeur peuvent être structurellement placés dans une unité constitutive commune. Cependant, ils peuvent également être spatialement et structurellement séparés l'un de l'autre. À titre d'exemple, l'unité de prétraitement peut se raccorder directement à une sortie d'une liaison et envoyer au décodeur le signal quantifié à trois niveaux en tant que sortie de canal. Indépendamment de la disposition et de l'affectation structurelles, l'unité de prétraitement délivre le signal Q au décodeur.
Il est fait en sorte que les messages des nœuds de contrôle envoyés aux nœuds de bits soient également quantifiés à trois niveaux. Cela présente l'avantage que le traitement des messages de nœuds de contrôle qui sont transmis aux nœuds de bits peut être effectué très rapidement au moyen de composants à fonctionnement numérique, car cela permet de recourir à des opérations simples. Cela résulte du fait que le signal quantifié à trois niveaux Q utilise les valeurs +1 (par exemple, le 1 logique), 0 (état logique indéterminé) et -1 (par exemple, le 0 logique). Le message de nœud de contrôle est déterminé comme étant le produit de plusieurs de ces valeurs quantifiées à trois niveaux. Si, dans une multiplication à plusieurs facteurs, un facteur présente la valeur 0, le résultat de la multiplication est également 0. Cela indique que le résultat de la multiplication est sujet à une incertitude, qui se produit dès lors que la valeur d'un seul facteur est sujette à une incertitude. La multiplication par -1 ne fait que changer le signe.
Les décodeurs classiques, qui fonctionnent avec des nœuds de bits et des nœuds de contrôle, utilisent une quantification plus fine pour les messages de nœuds de contrôle, parfois avec beaucoup plus de trois niveaux de quantification. À titre d'exemple, une profondeur de résolution de 32 niveaux peut être utilisée à cet effet pour la valeur positive et de 32 niveaux pour la valeur négative (cela correspondant à 6 bits). Cependant, dans ce cas, la détermination du message de nœud de contrôle nécessite beaucoup de temps et de calculs. En revanche, dans le cas présent, une quantification à trois niveaux est utilisée, ce qui permet de générer rapidement le message de nœud de contrôle, car il est possible de travailler avec des opérations qui peuvent être effectuées en très peu de temps dans des systèmes à fonctionnement numérique (et utilisant par exemple le système binaire).
Selon un mode de réalisation, le décodeur est un code de contrôle de parité de faible densité, ou Code LDPC.
Un code de contrôle de parité de faible densité, ou code LDPC, est un code par blocs linéaire destiné à la correction d'erreurs et décrit à l'aide d'une matrice de multiples contrôles de parité consécutifs appliqués à une séquence de réception.
Dans un code LDPC, plusieurs sous-ensembles de nœuds de bits sont sélectionnés parmi une pluralité de nœuds de bits et regroupés en groupes de composition alternée. Un groupe de ce type est connecté à un nœud de contrôle. Ainsi, quatre nœuds de bits en composition alternée peuvent ainsi être connectés à un nœud de contrôle. Un nœud de contrôle détermine ensuite une valeur de contrôle pour les messages (l'état logique d'un nœud de bit) qu'il reçoit des nœuds de bits qui lui sont connectés.
À titre d'exemple, la valeur de contrôle peut être déterminée en combinant les messages d'un groupe de nœuds de bits par une opération mathématique ou logique prédéterminée. Cette opération mathématique ou logique est habituellement une addition modulo-2. La valeur de contrôle est ensuite utilisée pour déterminer un message de contrôle destiné aux nœuds de bits, comme décrit ci-après.
En premier lieu, les nœuds de bits sont initialisés avec les valeurs des bits du mot de réception r(k) ayant été reçus. Celles-ci peuvent prendre les trois valeurs mentionnées: -1, 0 ou +1. Chaque nœud de contrôle détermine ensuite une valeur de contrôle sur la base des valeurs que le nœud de contrôle obtient des nœuds de bits qui sont connectés au nœud de contrôle actuel.
Dans un code LDPC, une transmission sans erreur est en général supposée lorsque la valeur de contrôle dans un nœud de contrôle possède la valeur 0. En cas d'erreur de transmission, la valeur de contrôle dans un nœud de contrôle devient égale à 1:
Cette équation indique que les nœuds de bits 0 à 3 sont rassemblés en un groupe et que leurs valeurs sont utilisées pour calculer la valeur de contrôle dans un nœud de contrôle. Dans le cas présent, la valeur de contrôle est égale à 1.
Ensuite, à partir de la valeur de contrôle et d'un sous-ensemble (tous les nœuds de bits sauf un) des nœuds de bits connectés au nœud de contrôle, il est possible de déterminer quelle devrait être la valeur du nœud de bit restant pour que la valeur de contrôle 0 soit définie dans le nœud de contrôle actuel (cela se produisant dans le cas sans erreur). L'équation suivante exprime la valeur que le nœud de bit 0 doit avoir pour que l'on obtienne une valeur de contrôle correcte pour le cas sans erreur au niveau du nœud de contrôle 0:
De même, l'équation suivante exprime la valeur que le nœud de bit 1 doit avoir afin de produire une valeur de contrôle correcte pour le cas sans erreur au niveau du nœud de contrôle 0:
Chaque nœud de contrôle calcule une valeur cible de ce type pour chaque nœud de bit qui lui est connecté en utilisant tous les autres nœuds de bits connectés au nœud de contrôle. Chaque nœud de bit est connecté à plusieurs nœuds de contrôle et obtient de chaque nœud de contrôle des informations indiquant quelle doit être sa valeur, de sorte que le calcul de la valeur de contrôle dans le nœud de contrôle individuel indique une transmission sans erreur. Ensuite, chaque nœud de bit peut utiliser cette information provenant de tous les nœuds de contrôle qui lui sont connectés et la valeur obtenue par l'intermédiaire du canal de transmission pour en déduire, par exemple par un vote à la majorité, quelle doit être sa valeur pour que la valeur indique une erreur de transmission dans le plus petit nombre de nœuds de contrôle. Cela est effectué pour tous les nœuds de bits, les nœuds de bits obtiennent une nouvelle valeur lors d'une étape suivante, et le procédé est à nouveau exécuté avec les nouvelles valeurs des nœuds de bits jusqu'à ce que les valeurs des nœuds de bits tendent vers un mot de réception sans conflit (= séquence de réception, ensemble de tous les bits de tous les nœuds de bits), pour lequel tous les nœuds de contrôle signalent une transmission sans erreur avec des valeurs de contrôle appropriées.
Selon un autre mode de réalisation, l'unité de prétraitement comporte un premier comparateur et un deuxième comparateur, le premier comparateur étant conçu pour vérifier si la valeur analogique reçue est supérieure à une première valeur de seuil, le deuxième comparateur étant conçu pour vérifier si la valeur analogique reçue est inférieure à une deuxième valeur de seuil, et l'unité de prétraitement étant conçue pour délivrer la première valeur du signal à trois niveaux lorsque la valeur analogique reçue est supérieure à la première valeur de seuil, pour délivrer la troisième valeur du signal à trois niveaux lorsque la valeur analogique reçue est inférieure à la deuxième valeur de seuil, et sinon, pour délivrer la deuxième valeur du signal à trois niveaux.
Cela décrit la manière dont les valeurs initiales des nœuds de bits sont fixées sur la base d'une séquence de réception. À partir de ces valeurs initiales, les étapes itératives suivantes sont ensuite effectuées pour tendre vers la séquence de réception sans erreur (c'est-à-dire la séquence de réception dans laquelle les valeurs des nœuds de bits ne conduisent pas à de valeurs de contrôle erronées dans les nœuds de contrôle).
Selon une autre forme de réalisation, l'unité de prétraitement est conçue, pour une séquence de réception comprenant plusieurs bits d'information, pour déterminer respectivement une valeur par bit d'information en fonction du signal à trois niveaux Q et pour transférer respectivement une valeur à chaque nœud de bit du décodeur.
Cela décrit comment une séquence de réception ou un mot de plusieurs bits est réparti entre les nœuds de bits. Un mot qui est reçu par l'unité de réception comprend une pluralité de bits d'information, dont le nombre correspond au nombre des nœuds de bits dans le décodeur.
Selon une autre forme de réalisation, tous les nœuds de contrôle sont connectés à un nombre égal de nœuds de bits dans un regroupement alterné des nœuds de bits.
À titre d'exemple, chaque nœud de contrôle est connecté à quatre nœuds de bits. Ainsi, aucun nœud de contrôle n'est connecté aux mêmes quatre nœuds de bits, c'est-à-dire que les nœuds de contrôle sont connectés à des groupes de nœuds de bits composés différemment ou de manière alternée. Cela permet de fournir à un nœud de bit des messages provenant de différents nœuds de contrôle en combinaison avec d'autres valeurs de nœuds de bits, afin d'augmenter ainsi la probabilité de détection et de correction des erreurs.
Selon un autre aspect, il est décrit une liaison de données. La liaison de données comprend: un codeur, un modulateur connecté au codeur, un canal de transmission connecté au modulateur et une unité de réception telle que décrite ici. L'unité de réception est connectée au canal de transmission afin que des données puissent être transmises du codeur à l'unité de réception.
La liaison de données relie une source de données à un puits de données, et est notamment configurée sous la forme d'un canal d'effacement binaire. À l'aide de l'unité de réception et du décodeur configurés de la manière décrite ici, la correction d'erreurs peut être effectuée à l'aide d'une faible puissance de calcul et en peu de temps.
Selon une forme de réalisation, le modulateur est conçu pour effectuer une modulation par déplacement de phase binaire et pour appliquer un signal ainsi généré au canal de transmission.
Lorsque le modulateur fonctionne selon les principes de la modulation par déplacement de phase binaire, deux valeurs différentes sont présentes sur le canal de transmission. Il s'agit donc d'un canal binaire. Une pluralité de valeurs transmises successivement sont lues côté récepteur en tant que mot de réception et sont envoyées au contrôle et à la correction d'erreurs décrits ci-dessus.
Selon un autre aspect, il est décrit un procédé de correction d'erreurs sur un mot de réception d'une liaison de données. Le procédé comprend les étapes consistant à:
quantifier une valeur analogique en un signal à trois niveaux Q, le signal à trois niveaux pouvant prendre une première valeur, une deuxième valeur ou une troisième valeur, la première valeur correspondant à un premier état logique, la troisième valeur correspondant à un deuxième état logique et la deuxième valeur correspondant à un état logique indéterminé;
affecter une pluralité de valeurs analogiques quantifiées à une pluralité de nœuds de bits;
déterminer des valeurs de contrôle dans une pluralité de nœuds de contrôle, chaque nœud de contrôle étant connecté à un groupe prédéterminé de nœuds de bits;
actualiser de manière itérative des messages de nœuds de bits envoyés aux nœuds de contrôle conformément à:
où:
est la nième itération d'un message du nœud de bit n envoyé au nœud de contrôle connecté au nœud de bit n;
est la nième itération d'un message du nœud de contrôle n envoyé au nœud de bit k; et
γ (k) est un ensemble d'indices des nœuds de contrôle connectés au nœud de bit k;
actualiser de manière itérative des messages de nœuds de contrôle envoyés aux nœuds de bits conformément à:
où β(k)est un ensemble d'indices des nœuds de bits connectés au nœud de contrôle k; et
dans lequel le signal à trois niveaux Q(x) est déterminé comme suit:
Les étapes du procédé correspondent pour l'essentiel aux fonctions de l'unité de réception et en particulier du décodeur. Par conséquent, la description et l'explication détaillées telles qu'elles sont présentées en ce qui concerne l'unité de réception s'appliquent au procédé. On renoncera ici à les présenter à nouveau.
Le procédé peut par exemple être mis en œuvre sous la forme d'une séquence d'instructions sur un processeur ou un contrôleur. Dans ce cas, le processeur ou le contrôleur est l'unité de réception ou une partie de celle-ci, par exemple le décodeur. Il est également concevable qu'une porte logique programmable (telle qu'un FPGA, Field Programmable Gate Array) soit configurée de manière à mettre en œuvre le procédé, cela permettant avantageusement d'augmenter la vitesse d'exécution. D'autres processeurs ou contrôleurs peuvent être utilisés, comme par exemple un ASIC (Application Specific Integrated Circuit).
Brève description des figures
Des modes de réalisation vont être présentés plus en détail ci-après en référence aux dessins annexés. Les illustrations sont schématiques et ne sont pas représentées à l'échelle. Des références numériques identiques renvoient à des éléments identiques ou similaires. Parmi les figures:
La figure1 est une représentation schématique d'un graphe de Tanner, dont les principes sont à la base du fonctionnement d'un code LDPC.
La figure2 est une représentation schématique d'une liaison de données.
La figure3 est une représentation schématique d'une unité de réception.
La figure4 est une représentation schématique d'une unité de prétraitement.
Description détaillée de modes de réalisation
La figure1 est une représentation schématique d'un graphe de Tanner permettant d'expliquer le principe de fonctionnement d'un code LDPC ainsi que le mode de fonctionnement de l'unité de réception présentée ici en association avec le décodeur.
Une séquence de réception 1, dans ce cas une séquence de réception binaire, est fournie aux nœuds de bits 2. Le nombre de bits de la séquence de réception, qui correspond au nombre de nœuds de bits, est appelé mot de réception. Dans le cas présent, le graphe de Tanner comporte 20 nœuds de bits (0 ... 19), de sorte qu'un mot de réception est constitué de 20 bits. Le graphe de Tanner comporte par ailleurs 15 nœuds de contrôle 3 (0 ... 14).
Quatre nœuds de bits sont respectivement connectés à un nœud de contrôle. À titre d'exemple, les nœuds de bits 0 ... 3 sont connectés au nœud de contrôle 0, les nœuds de bits 4 ... 7 sont connectés au nœud de bit 1, etc. Il existe également des regroupements de nœuds de bits autres que des groupes comportant des nœuds de bits consécutifs. À titre d'exemple, les nœuds de bits 0, 4, 8, 12 sont connectés au nœud de contrôle 5. Dans tous les cas, chaque nœud de bit est connecté à une combinaison de nœuds de bits apparaissant exactement une fois.
Afin d'indiquer une transmission sans erreur, pour chaque mot de réception vers le nœud de bit, la condition selon laquelle chaque nœud de contrôle satisfait à la condition de parité ou de contrôle doit être satisfaite. Cette condition de contrôle prévoit que la valeur de contrôle soit égale à 0. La valeur de contrôle est habituellement calculée comme suit (exemple fourni ici pour le nœud de contrôle 0, sachant que la même opération est effectuée pour tous les nœuds de contrôle):
où ⊕ désigne une addition modulo-2. Si l'on remplace c(k) par des valeurs modulées par déplacement de phase binaire (BPSK), la condition de parité pour le nœud de contrôle 0 peut être exprimée comme suit:
Le décodage est un processus itératif. Les valeurs des nœuds de bits sont d'abord fixées aux valeurs des bits du mot de réception reçu et la valeur de contrôle est calculée dans les nœuds de contrôle, de nouveau présentés ici à titre d'exemple pour le nœud de contrôle 0:
À partir des valeurs des nœuds de bits présentes au niveau du nœud de contrôle 0, il est maintenant possible d'effectuer un calcul en sens inverse et de déterminer une valeur nécessaire pour un nœud de bit en utilisant les autres valeurs de nœuds de bits pour ce nœud de contrôle. Dans le nœud de contrôle 0, la valeur nécessaire pour le nœud de bit 0 peut maintenant être calculée en utilisant les valeurs des autres nœuds de bits de ce groupe, à savoir les nœuds de bits 1 à 3:
Il en va de même pour la valeur calculée en sens inverse pour les trois autres nœuds de bits 1 à 3, donnée à titre d'exemple pour le nœud de bit 1:
Les valeurs des nœuds de bits 0, 2 et 3 sont ainsi utilisées ici pour déterminer la valeur du nœud de bit 1 de telle manière que la valeur de test soit correcte.
Comme le montre la figure1, le nœud de bit 0 est connecté aux nœuds de contrôle 0, 5, 10. Dans chacun de ces trois nœuds de contrôle, une valeur nécessaire du nœud de bit 0 est calculée (sur la base des nœuds de bit restants dans les groupes respectifs). En utilisant ces valeurs calculées et le bit reçu à l'origine au niveau du nœud de bit 0, une valeur peut alors être déterminée de manière itérative pour le nœud de bit 0, de telle manière que la condition de parité soit satisfaite au niveau de tous les nœuds de contrôle. La valeur du nœud de bit est alors modifiée et le procédé est de nouveau exécuté.
Dans des décodeurs LDPC classiques, des valeurs à haute résolution sont utilisées pour déterminer les valeurs des nœuds de bits, par exemple entre 4 et 6 bits. Afin de calculer en sens inverse les valeurs supposées des nœuds de bits sur la base des valeurs des nœuds de contrôle, il est fait appel à des techniques de calcul de probabilité.
En revanche, il est proposé ici que les valeurs des bits du mot de réception et les valeurs des nœuds de contrôle soient quantifiées et ne prennent que l'une des valeurs -1, 0 et +1.
Lors d'une première étape, ces valeurs quantifiées du mot de réception sont affectées aux nœuds de bits et les nœuds de bits sont initialisés à ces valeurs. Les valeurs initiales sont définies ici sous la forme r(k), où k indique le numéro du nœud de bit. Les valeurs de contrôle sont ensuite calculées dans les nœuds de contrôle et dans chaque nœud, on calcule en sens inverse, pour chaque nœud de bit connecté, la valeur que ce nœud de bit doit avoir pour que la condition de parité soit satisfaite (voir ci-dessus). Les nœuds de bits reçoivent un retour d'information de plusieurs nœuds de contrôle et modifient en conséquence si nécessaire leur valeur pour l'étape d'itération suivante, par exemple conformément à un vote à la majorité sur les valeurs calculées en sens inverse reçues des nœuds de contrôle et en considérant la valeur initiale du mot de réception. À la nième étape d'itération, la (nouvelle) valeur d'un nœud de bit (ici, par exemple, le nœud de bit 0) est fixée comme étant la somme qui correspond à la valeur du bit associé provenant du mot de réception (r(0)) et aux réponses des nœuds de contrôle (C, ici, les réponses des nœuds de contrôle 0, 5 et 10 pour le nœud de bit 0 provenant de l'étape d'itération précédente n-1):
En utilisant la fonction de quantification suivante, où x est un nombre entier quelconque,
il peut alors être établi ce qui suit au niveau d'un nœud de bit par un nœud de contrôle pour le calcul de la réponse:
La réponse du nœud de contrôle 0 au nœud de bit 0 pour la valeur du nœud de bit 0 lors de l'étape d'itération n correspond au produit des valeurs quantifiées des nœuds de bits 1, 2 et 3, de sorte que l'on a:
Cela signifie que seules les informations de nœuds de bits que le nœud de bit utilisé a reçues exclusivement d'autres nœuds de contrôle au cours des étapes d'itération précédentes peuvent être utilisées pour actualiser la valeur d'un nœud de contrôle. Pour ce faire, l'information que le nœud de contrôle à actualiser a envoyée lors de l'étape d'itération précédente au nœud de bit utilisé pour l'actualisation est à nouveau soustraite.
La figure2 est une représentation schématique d'une liaison de données 10. La liaison de données comprend un codeur 12 qui code des valeurs et les transmet à un modulateur 14. Le modulateur applique une séquence de bits modulée au canal de transmission 16. À la sortie du canal de transmission 16, une séquence de réception est délivrée à l'unité de réception 100.
L'unité de réception 100 met en œuvre le procédé décrit ci-dessus. L'unité de réception peut être connectée à un puits de données (non illustré) et transmet les données reçues au puits de données.
La liaison de données 10 peut être utilisée pour une liaison de transmission de données quelconque entre une source de données et un puits de données. Le canal de transmission peut comprendre un trajet de transmission sans fil ou câblé.
Le canal de transmission 16 peut être un canal dit d'annulation et peut déjà délivrer à sa sortie trois valeurs (1 logique, 0 logique, indéfinie). Toutefois, cette distinction entre les trois valeurs peut également être faite par une unité dédiée qui est prévue séparément, par exemple par l'unité de prétraitement (voir figure3).
La figure3 est une représentation schématique d'une unité de réception 100. L'unité de réception 100 comprend une unité de prétraitement 110 et un décodeur 120. L'unité de prétraitement 110 peut être spatialement et structurellement séparée du décodeur. À titre d'exemple, l'unité de prétraitement 110 peut être agencée en tant que partie fonctionnelle du canal de transmission 16 (voir figure2). Dans tous les cas, un bit est délivré au décodeur 120 et peut prendre trois valeurs: 0 logique, 1 logique, indéfinie. Il s'agit de l'exigence fonctionnelle du décodeur, et il importe peu que cette valeur d'entrée du décodeur provienne directement du canal de transmission ou d'une unité fonctionnelle distincte.
La figure4 illustre un exemple de structure de l'unité de prétraitement 110 permettant d'obtenir les trois valeurs de sortie, 0 logique, 1 logique et indéterminée.
L'unité de prétraitement 110 comporte deux comparateurs 112, 114. Un bit d'information est fourni aux deux comparateurs. Lorsqu'un niveau de tension du bit d'information est supérieur à une première valeur de seuil, le premier comparateur 112 délivre alors une valeur, de sorte que l'unité de prétraitement délivre une première valeur logique, par exemple, un 1 logique. D'autre part, si le niveau de tension du bit d'information est inférieur à une deuxième valeur de seuil, le deuxième comparateur 114 délivre une valeur, de sorte que l'unité de prétraitement délivre une deuxième valeur logique, par exemple un 0 logique. Si la valeur du niveau de tension se situe entre les premier et deuxième niveaux de tension (cette limite étant respectivement incluse), l'unité de prétraitement 110 délivre en tant que valeur de sortie la valeur "indéterminée".
L'unité de prétraitement 110 peut donc être utilisée pour affecter initialement aux nœuds de bits les valeurs à trois niveaux correspondantes du mot de réception.
Par ailleurs, il convient de noter que le terme "comprenant" ou "comportant" n'exclut pas d'autres éléments ou étapes, et que le terme "une" ou "un" n'exclut pas une pluralité. Il convient en outre de noter que les caractéristiques ou étapes qui ont été décrites en référence à l'un des modes de réalisation décrits ci-dessus peuvent également être utilisées en combinaison avec d'autres caractéristiques ou étapes d'autres modes de réalisation décrits ci-dessus. Les références numériques figurant dans les revendications ne doivent pas être considérés comme étant limitatives.
Liste de références numériques
1 Séquence de réception
2 Nœud de bit
3 Nœud de contrôle
10 Liaison de données
12 Codeur
14 Modulateur
16 Canal de transmission
100 Unité de réception
110 Unité de prétraitement
112 Premier comparateur
114 Deuxième comparateur
120 Décodeur, décodeur LDPC

Claims (8)

  1. Unité de réception (100) destinée à être utilisée dans une liaison de données (10), comportant:
    une unité de prétraitement (110) configurée pour quantifier une valeur analogique reçue d'un canal de transmission (16) en un signal à trois niveaux Q, le signal à trois niveaux pouvant prendre une première valeur, une deuxième valeur ou une troisième valeur, la première valeur correspondant à un premier état logique, la troisième valeur correspondant à un deuxième état logique et la deuxième valeur correspondant à un état logique indéterminé;
    un décodeur (120) comprenant une pluralité de nœuds de bits (2) et une pluralité de nœuds de contrôle (3), un certain nombre de nœuds de bits étant respectivement connectés à un nœud de contrôle;
    dans laquelle le décodeur (120) est conçu pour actualiser de manière itérative des messages de nœuds de bits conformément à:

    où:
    est la nième itération d'un message du nœud de bit n envoyé au nœud de contrôle connecté au nœud de bit n;
    est la nième itération d'un message du nœud de contrôle n envoyé au nœud de bit k; et
    γ (k) est un ensemble d'indices des nœuds de contrôle connectés au nœud de bit k;
    dans laquelle le décodeur (120) est conçu pour actualiser de manière itérative des messages de nœuds de contrôle envoyés aux nœuds de bits conformément à:

    où β(k)est un ensemble d'indices des nœuds de bits connectés au nœud de contrôle k; et
    dans laquelle le décodeur (120) est conçu pour déterminer le signal à trois niveaux Q(x) comme suit:
  2. Unité de réception (100) selon la revendication 1, dans laquelle le décodeur (120) est un code de contrôle de parité de faible densité (Low-Density-Parity-Check-Code).
  3. Unité de réception (100) selon la revendication 1 ou 2, dans laquelle l'unité de prétraitement (110) comprend un premier comparateur (112) et un deuxième comparateur (114);
    dans laquelle le premier comparateur (112) est conçu pour vérifier si la valeur analogique reçue est supérieure à une première valeur de seuil;
    dans laquelle le deuxième comparateur (114) est conçu pour vérifier si la valeur analogique reçue est inférieure à une deuxième valeur de seuil;
    dans laquelle l'unité de prétraitement (110) est conçue pour délivrer la première valeur du signal à trois niveaux lorsque la valeur analogique reçue est supérieure à la première valeur de seuil, pour délivrer la troisième valeur du signal à trois niveaux lorsque la valeur analogique reçue est inférieure à la deuxième valeur de seuil, et sinon, pour délivrer la deuxième valeur du signal à trois niveaux.
  4. Unité de réception (100) selon l'une quelconque des revendications précédentes, dans laquelle l'unité de prétraitement (110) est conçue, pour une séquence de réception (1) comportant plusieurs bits d'information, pour déterminer respectivement une valeur par bit d'information en fonction du signal à trois niveaux Q et pour transférer respectivement une valeur à chaque nœud de bit du décodeur (120).
  5. Unité de réception (100) selon l'une quelconque des revendications précédentes, dans laquelle tous les nœuds de contrôle sont connectés à un nombre égal de nœuds de bits dans un regroupement alterné des nœuds de bits.
  6. Liaison de données (10), comportant:
    un codeur (12);
    un modulateur (14) connecté au codeur (12);
    un canal de transmission (16) connecté au modulateur (14);
    une unité de réception (100) selon l'une des revendications 1 à 5;
    dans laquelle l'unité de réception (100) est connectée au canal de transmission (16) de manière à ce que des données puissent être transmises du codeur (12) à l'unité de réception (100).
  7. Liaison de données (10) selon la revendication 6, dans laquelle le modulateur (14) est conçu pour effectuer une modulation par déplacement de phase binaire et pour appliquer un signal ainsi généré au canal de transmission (16).
  8. Procédé de correction d'erreurs sur un mot de réception (1) d'une liaison de données (10), comprenant les étapes consistant à:
    quantifier une valeur analogique en un signal à trois niveaux Q, le signal à trois niveaux pouvant prendre une première valeur, une deuxième valeur ou une troisième valeur, la première valeur correspondant à un premier état logique, la troisième valeur correspondant à un deuxième état logique et la deuxième valeur correspondant à un état logique indéterminé;
    affecter une pluralité de valeurs analogiques quantifiées à une pluralité de nœuds de bits;
    déterminer des valeurs de contrôle dans une pluralité de nœuds de contrôle, chaque nœud de contrôle étant connecté à un groupe prédéterminé de nœuds de bits;
    actualiser de manière itérative des messages de nœuds de bits envoyés aux nœuds de contrôle conformément à:

    où:
    est la nième itération d'un message du nœud de bit n envoyé au nœud de contrôle connecté au nœud de bit n;
    est la nième itération d'un message du nœud de contrôle n envoyé au nœud de bit k; et
    γ (k) est un ensemble d'indices des nœuds de contrôle connectés au nœud de bit k;
    actualiser de manière itérative des messages de nœuds de contrôle envoyés aux nœuds de bits conformément à:

    où β (k) est un ensemble d'indices des nœuds de bits connectés au nœud de contrôle k; et
    dans lequel le signal à trois niveaux Q(x) est déterminé comme suit:
FR2102316A 2020-03-10 2021-03-09 Correction d'erreurs pour les décodeurs LDPC Pending FR3108222A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102020106501.9A DE102020106501A1 (de) 2020-03-10 2020-03-10 Fehlerkorrektur für LDPC-Dekodierer
DE102020106501.9 2020-03-10

Publications (1)

Publication Number Publication Date
FR3108222A1 true FR3108222A1 (fr) 2021-09-17

Family

ID=77457245

Family Applications (1)

Application Number Title Priority Date Filing Date
FR2102316A Pending FR3108222A1 (fr) 2020-03-10 2021-03-09 Correction d'erreurs pour les décodeurs LDPC

Country Status (3)

Country Link
US (1) US20210288746A1 (fr)
DE (1) DE102020106501A1 (fr)
FR (1) FR3108222A1 (fr)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4296949B2 (ja) * 2004-02-03 2009-07-15 ソニー株式会社 復号装置及び方法、並びに情報処理装置及び方法
US8458556B2 (en) * 2009-10-09 2013-06-04 Stmicroelectronics, Sa Low complexity finite precision decoders and apparatus for LDPC codes
US8458555B2 (en) * 2010-06-30 2013-06-04 Lsi Corporation Breaking trapping sets using targeted bit adjustment
US8694868B1 (en) 2010-10-21 2014-04-08 Marvell International Ltd. Systems and methods for performing multi-state bit flipping in an LDPC decoder
US9461671B1 (en) * 2011-10-10 2016-10-04 Marvell International Ltd. Method and apparatus for power conservation in LDPC decoding
US10038456B1 (en) * 2014-03-25 2018-07-31 Marvell International Ltd. Decoders with look ahead logic
US9590657B2 (en) * 2015-02-06 2017-03-07 Alcatel-Lucent Usa Inc. Low power low-density parity-check decoding
KR102626162B1 (ko) * 2016-06-14 2024-01-18 삼성전자주식회사 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법
KR20200022136A (ko) * 2018-08-22 2020-03-03 에스케이하이닉스 주식회사 에러 정정 장치 및 그것을 포함하는 전자 장치

Also Published As

Publication number Publication date
US20210288746A1 (en) 2021-09-16
DE102020106501A1 (de) 2021-09-16

Similar Documents

Publication Publication Date Title
EP3058720B1 (fr) Conversion analogique numerique à rampe, à multiples conversions ou unique conversion selon le niveau de lumiere reçu par un pixel
EP0198729A1 (fr) Système de simulation d'un circuit électronique
FR2501440A1 (fr) Recepteurs d'informations avec reception et decodage d'un code d'erreur
EP0692762A1 (fr) Circuit logique de multiplication parallèle
EP3082266A1 (fr) Procedes de codage et decodage a protection differenciee
FR2473753A1 (fr) Dispositif pour fournir des groupes de donnees corriges a un circuit de destination
FR3108222A1 (fr) Correction d'erreurs pour les décodeurs LDPC
FR2703483A1 (fr) Dispositif de mise à jour de la valeur de code dans la méthode du codage arithmétique.
US8477053B2 (en) ADC with resolution detector and variable dither
FR3009462B1 (fr) Procede ameliore de decodage d'un code correcteur avec passage de message, en particulier pour le decodage de codes ldpc ou codes turbo
FR2648585A1 (fr) Procede et dispositif pour la multiplication rapide de codes a complement a 2 dans un systeme de traitement de signal numerique
EP2865100B1 (fr) Dispositif de correction de deux erreurs avec un code de distance de hamming trois ou quatre
EP3202044A1 (fr) Procede de codage d'un signal reel en un signal quantifie
FR2952250A1 (fr) Convertisseur analogique-numerique, sur deux bits, a approximations successives
EP1300952A1 (fr) Code de détection et/ou de correction d'erreurs à haute efficacité
FR2620829A1 (fr) Systeme de suppression du bruit et de ses variations pour la detection d'un signal pur dans un signal discret bruite mesure
FR2954627A1 (fr) Procede de conversion a/n et detecteur d'image radiographique et appareil de radiographie
CN111091190A (zh) 数据处理方法及装置、光子神经网络芯片、数据处理电路
EP1300953A1 (fr) Code de détection et/ou de correction d'erreurs à haute efficacité
FR2755816A1 (fr) Procede et dispositif de traitement des signaux d'un ensemble de photodetecteurs ayant une architecture cellulaire, et application aux gamma-cameras
WO2023134934A1 (fr) Support de calculs sur nombres reels au niveau des commutateurs physiques
WO2019084217A1 (fr) Convertisseur analogique-numérique adaptatif pour signaux pulsés sur la base d'une modulation sigma-delta multi-bits
FR2658676A1 (fr) Dispositif de quantification a debit de codage numerique variable.
FR2833795A1 (fr) Procede et dispositif pour evaluer des longueurs de symboles sur un support d'enregistrement
US20230110047A1 (en) Constrained optimization using an analog processor

Legal Events

Date Code Title Description
PLSC Publication of the preliminary search report

Effective date: 20211022

RX Complete rejection

Effective date: 20220914