Brevet FR3155990A1 — publié le 20250530

L’invention concerne un décodeur (30) pour le décodage de mots de code de contrôle de parité de faible densité (code LDPC). Le décodeur comporte au moins un cœur (10) et une mémoire (20) dans laquelle est mémorisé un nombre N C de configurations prédéfinies. Le cœur est adapté pour être dynamiquement configuré avec l’une quelconque des N C configurations prédéfinies mémorisées dans la mémoire afin de décoder un mot de code LDPC en utilisant cette configuration. Les N C configurations prédéfinies forme un sous-groupe, au sens strict, des configurations LDPC 5G définies dans le standard 3GPP TS 38.212. Chaque configuration correspond à un triplet de trois paramètres {K, R, Z}, et à une matrice de parité construite en fonction d’une partie au moins de ces paramètres. K correspond à une taille de message encodé par le code LDPC, Z correspond à un facteur d’expansion de la matrice de parité, R correspond à un taux de codage du code LDPC. Avantageusement, les N C configurations prédéfinies comportent différentes valeurs du paramètre Z. Figure pour l’abrégé : Fig. 5 Décodeur LDPC compatible 5G pour communications satellitaires Domaine de l’invention La présente invention appartient au domaine des codes de contrôle de parité à faible densité (LDPC, pour « Low Density Parity Check »). Notamment, l’invention concerne un décodeur LDPC compatible avec le standard 5G pour des communications satellitaires. Etat de la technique Les codes LDPC sont actuellement utilisés dans plusieurs technologies de communication, notamment pour les normes IEEE 802.16 (WiMAX), IEE 802.11n (Wi-Fi), le standard 5G de l’organisme 3GPP (« 3rd Generation Partnership Project »), le standard DVB-S2 (« Digital Video Broadcasting, 2 nd Generation »), ou le standard de communications spatiales CCSDS C2 (« Consultative Committee for Space Data Systems, C2 »). Un code LDPC binaire est un code correcteur d’erreurs linéaire défini par une matrice de parité binaire de faible densité (c’est-à-dire que le nombre d’éléments non nuls de la matrice est relativement faible par rapport à la taille de la matrice). Pour réduire la complexité d’implémentation matérielle d’un décodeur LDPC, il est connu d’utiliser des structures particulières de la matrice de parité. En particulier, les codes LDPC quasi-cycliques (QC-LDPC pour « Quasi-Cyclic Low Density Parity Check ») sont définis par des matrices de parité composée de sous-matrices de taille Z x Z. Le terme Z est généralement appelé « facteur d’expansion ». Les sous-matrices de taille Z x Z sont généralement appelées « matrices circulantes ». Une matrice de parité d’un code QC-LDPC présente une structure en couches qui permet de paralléliser les calculs des messages de contrôle de parité au sein d’une couche. Le document de spécification technique 3GPP TS 38.212 décrit les configurations LDPC qui doivent être supportées par un dispositif compatible avec le standard 5G. Ces codes LDPC 5G sont compatibles en termes de taux de codage pour la retransmission à redondance incrémentale (IR-HARQ pour « Incremental Redundancy Hybrid Automatic ReQuest » en anglais). L'HARQ est une technique qui permet de retransmettre des données qui ont été corrompues par le canal de communication. Dans la variante « Chase Combining » (CC-HARQ), le même taux de codage est utilisé à chaque retransmission. Dans la variante IR-HARQ, un taux de codage différent est utilisé à chaque retransmission. Les codes LDPC 5G sont basés sur des matrices de parité quasi-cycliques. Chaque configuration LDPC 5G correspond à un triplet de paramètres comprenant la taille K du mot encodé (c’est le nombre de bits utiles dans le mot de code LDPC), le taux de codage R (cela correspond sensiblement au rapport K/N entre la taille K du mot encodé et la taille N du mot de code LDPC) et le facteur d’expansion Z. En définissant les paramètres K et R, on peut en déduire le paramètre Z à utiliser, puis construire dynamiquement la matrice de parité à utiliser. Un très grand nombre (plusieurs milliers) de configurations différentes sont supportées par la spécification (K peut varier de quelques bits à plusieurs milliers de bits, Z peut prendre une cinquantaine de valeurs possibles, et un grand nombre de taux de codage R sont supportés). Cela rend les codes LDPC 5G très flexibles et adaptables à un très large éventail de conditions de transmission. Cette ultra-flexibilité des codes LDPC entraine toutefois une complexité très importante des décodeurs les mettant en œuvre. En outre, les décodeurs LDPC 5G conventionnels sont généralement peu efficaces pour des transmissions utilisant une bande spectrale fixe. La grande flexibilité sur le facteur d’expansion Z entraine une complexité du réseau de permutation de l'architecture en couches. Cette complexité augmente l’empreinte des registres et des portes logiques du circuit. Cette complexité entraine également une réduction du débit global du décodeur. En outre, l'architecture parallèle d'un décodeur LDPC 5G conventionnel est souvent sous-optimale pour des valeurs du facteur d'expansion Z peu élevées. Les contraintes relatives au domaine spatial (contraintes en termes d’encombrement, de poids et de consommation énergétique notamment) font que les décodeurs LDPC 5G conventionnels ne sont pas adaptés pour être embarqués à bord d’un satellite. La présente invention a pour objectif de remédier à tout ou partie des inconvénients de l’art antérieur. A cet effet, et selon un premier aspect, il est proposé par la présente invention, un décodeur LDPC pour le décodage de mots de code de contrôle de parité de faible densité, ou code LDPC. Le décodeur comporte au moins un cœur et une mémoire dans laquelle est mémorisé un nombre N C de configurations prédéfinies. Le cœur est adapté pour être dynamiquement configuré avec l’une quelconque des N C configurations prédéfinies mémorisées dans la mémoire afin de décoder un mot de code LDPC en utilisant cette configuration. Les N C configurations prédéfinies forment un sous-groupe, au sens strict, des configurations LDPC 5G définies dans le standard 3GPP TS 38.212. Chaque configuration correspond à un triplet de trois paramètres {K, R, Z}, et à une matrice de parité définie en fonction d’une partie au moins des paramètres K, R et Z. Le paramètre K correspond à une taille de message encodé par le code LDPC ; le paramètre Z correspond à un facteur d’expansion de la matrice de parité ; le paramètre R correspondant à un taux de codage du code LDPC. L’ensemble des valeurs prises par le paramètre Z parmi les N C configurations prédéfinies comprend au moins deux valeurs différentes. La présente invention trouve une application particulièrement avantageuse, bien que nullement limitative, dans le domaine des communications satellitaires. Dans le domaine des communications spatiales, l’intérêt d’utiliser l’IR-HARQ est nettement réduit. L’utilité de considérer l’intégralité des codes LDPC 5G (pour conserver une compatibilité en termes de taux de codage) est donc elle aussi réduite. En sélectionnant un nombre restreint de configurations parmi le très grand nombre de configurations LDPC 5G, il devient possible de précalculer et de mémoriser les matrices de parité correspondant aux configurations sélectionnées. Il n'est alors plus nécessaire de construire dynamiquement la matrice de parité à chaque fois qu'un mot de code doit être décodé avec une nouvelle configuration LDPC. Le choix de certaines configurations LDPC spécifiques parmi l’ensemble des configurations LDPC 5G définies par la spécification 3GPP TS 38.212 peut permettre d’optimiser les performances et les ressources matérielles du décodeur. En particulier, il est possible de réduire les besoins en termes de mémoire, de complexité matérielle (multiplexeurs, réseau de permutation, etc.), et de consommation énergétique. Le fait de supporter plusieurs valeurs différentes pour le paramètre Z parmi les N C configurations prédéfinies permet de gérer différentes tailles de message (différentes valeurs de K). Dans des modes particuliers de mise réalisation, l’invention peut comporter en outre l’une ou plusieurs des caractéristiques suivantes, prises isolément ou selon toutes les combinaisons techniquement possibles. Dans des modes particuliers de réalisation, le nombre N C de configurations prédéfinies mémorisées dans la mémoire est un entier compris entre 8 et 512, voire entre 8 et 256, voire même entre 8 et 128. De telles dispositions offrent un bon compromis entre un nombre assez important de configurations pour couvrir un nombre suffisant de scénarios en termes de SNR et de débit souhaité, et un nombre assez faible de configurations pour limiter les besoins en mémoire et la complexité d’implémentation. Dans des modes particuliers de réalisation, l’ensemble des valeurs prises par le paramètre Z parmi les N C configurations prédéfinies comprend N Z valeurs Z i , i étant un indice variant entre 0 et (N Z -1), N Z étant un entier compris entre 2 et 32, voire entre 4 et 16, les valeurs Z i étant toutes différentes et ordonnées par ordre croissant avec l’indice i, et pour i variant entre 1 et (N Z -1) le rapport est égal à une valeur entière. Dans des modes particuliers de réalisation, Z 0 est une puissance de deux. Dans des modes particuliers de réalisation, un facteur de parallélisation Z P du décodeur est égal à Z 0 . Le facteur de parallélisation Z P correspond à un nombre maximal d’unités fonctionnelles du cœur pouvant être utilisées en parallèle pour exécuter des nœuds de contrôle de parité du cœur. Choisir un facteur de parallélisation Z P = Z 0 permet de limiter la perte de parallélisme tout en ayant une plus grande flexibilité pour résoudre les situations d’aléas de données pour les valeurs plus élevées de Z. Attribuer à Z 0 une valeur qui est une puissance de deux permet de maximiser l’utilisation matérielle des multiplexeurs et du réseau de permutation. Dans des modes particuliers de réalisation, pour K > 3824, le nombre de configurations prédéfinies présentant un facteur d’expansion égal à Z i est une fonction décroissante avec la valeur de Z i ; et pour K ≤ 3824 et R ≤ 0,67, le nombre de configurations prédéfinies présentant un facteur d’expansion égal à Z i est une fonction décroissante avec la valeur de Z i . Dans des modes particuliers de réalisation, les configurations prédéfinies ont été sélectionnées de telle sorte que, pour tout i variant entre 0 et (N Z -1), et pour chaque configuration prédéfinie présentant un facteur d’expansion égal à Z i , l’expression suivante est satisfaite : Dans cette expression, N conn correspond au nombre d’éléments non nuls dans la matrice de parité de la configuration considérée. Dans des modes particuliers de réalisation, les configurations prédéfinies ont été sélectionnées de telle sorte que, pour tout i variant entre 0 et (N Z -1), et pour chaque configuration prédéfinie présentant un facteur d’expansion égal à Z i , l’expression suivante est satisfaite : Dans cette expression, M correspond au nombre de lignes de la matrice de parité de la configuration considérée. Dans des modes particuliers de réalisation, les configurations prédéfinies sont sélectionnées de telle sorte que, pour tout i variant entre 0 et (N Z -1), et pour chaque configuration prédéfinie présentant un facteur d’expansion égal à Z i , l’expression suivante est satisfaite : Dans cette expression, N correspond à la taille d’un mot de code pour la configuration considérée. Dans des modes particuliers de réalisation, chacune des NC configurations comporte un ordonnancement optimisé de nœuds de contrôle de parité du cœur. L’ordonnancement est défini en fonction d’un degré de parité de chaque nœud de contrôle de parité pour la configuration considérée. De telles dispositions permettent de limiter les situations où certains nœuds de contrôle ne peuvent pas être exécutés parce que les données en sortie d’autres nœuds de contrôle ne sont pas disponibles. Autrement dit, cela permet de limiter la perte de performance liée aux « aléas de données » (« data hazards » en anglais) : le nombre de cycles d'attente dans le processus de décodage est plus faible, et le débit global du décodeur est amélioré. Dans des modes particuliers de réalisation, pour une valeur de Z donnée, pour chaque configuration avec cette valeur de Z, l’ordonnancement optimisé des nœuds de contrôle de parité comporte une partie commune à toutes les configurations avec cette valeur de Z, et une partie spécifique à la configuration considérée. La partie commune permet de limiter la taille mémoire nécessaire pour mémoriser les configurations : la partie commune est mémorisée une seule fois pour toutes les configurations présentant une même valeur de Z. Dans des modes particuliers de réalisation, ledit au moins un cœur appartient à un groupe de plusieurs cœurs. La mémoire est une mémoire partagée entre les différents cœurs du groupe. Chaque cœur du groupe est adapté pour être dynamiquement configuré avec l’une quelconque des N C configurations prédéfinies mémorisées dans la mémoire partagée afin de décoder un mot de code LDPC en utilisant cette configuration. Plusieurs cœurs du groupe peuvent simultanément décoder chacun un mot de code LDPC différent. Cette approche multicœur est particulièrement avantageuse puisqu’elle permet le décodage de plusieurs mots de code en parallèle. Ainsi, à un instant donné, différents mots de code peuvent être décodés en parallèle par différents cœurs selon différentes configurations. L’approche multicœur permet également d’optimiser les besoins en ressource mémoire (via le partage de la mémoire entre tous les cœurs d’un même groupe). Dans des modes particuliers de réalisation, chaque cœur comporte une mémoire locale de configuration dont la taille est au moins égale à la plus grande des tailles des N C configurations prédéfinies mémorisées dans la mémoire partagée, et la taille de la mémoire locale est au moins quatre fois plus petite que la taille de la mémoire partagée. Plus le rapport entre la taille de la mémoire locale d’un cœur et la taille de la mémoire partagée entre les différents cœurs d’un même groupe est petit, et plus le partage de la mémoire entre les différents cœurs est efficace. Dans des modes particuliers de réalisation, le décodage d’un mot de code LDPC par un cœur comporte l’exécution d’une ou plusieurs itérations jusqu’à ce qu’un critère d’arrêt soit satisfait. Le critère d’arrêt comporte une vérification si un nombre maximal d’itérations est atteint et, pour un nouveau mot de code à décoder par un cœur, le nombre maximal d’itérations est défini en fonction d’un taux de charge du décodeur. Il est avantageux d’avoir un nombre maximal d’itérations plus faible lorsque le taux de charge du décodeur multicœur est important. En effet, quand le taux de charge du décodeur est important, il est avantageux de libérer rapidement les cœurs pour pouvoir décoder de nouveaux mots de code. Dans des modes particuliers de réalisation, le nombre maximal d’itérations est défini aussi en fonction de l’un au moins des éléments suivants : la taille du nouveau mot de code, un taux de codage utilisé pour le nouveau mot de code, et un rapport signal sur bruit estimé pour le nouveau mot de code. Dans des modes particuliers de réalisation, le décodeur comporte un module d’ordonnancement adapté pour ordonnancer les cœurs en favorisant, pour le décodage d’un nouveau mot de code, la sélection d’un cœur pour lequel la dernière configuration utilisée par le cœur pour le décodage d’un mot de code précédent est la même que la configuration devant être utilisée pour le décodage du nouveau mot de code. De telles dispositions peuvent permettre d’éviter d’avoir à recharger une nouvelle configuration dans la mémoire locale d’un cœur pour le décodage d’un nouveau mot de code. Cela permet d’optimiser le temps de décodage et de limiter les accès concurrents à la mémoire partagée. Selon un deuxième aspect, la présente invention concerne un dispositif de réception comportant un décodeur selon l’un quelconque des modes de réalisation décrits ci-avant. Selon un troisième aspect, la présente invention concerne un satellite comportant un tel dispositif de réception. Selon un quatrième aspect, la présente invention concerne une station passerelle d’un système de communication par satellite. La station passerelle comporte un module de contrôle de ressources radio configuré pour allouer des ressources à une station terrestre pour l’envoi d’un message de la station terrestre vers un satellite en orbite autour de la Terre, le message comportant au moins un mot de code LDPC. Les ressources à allouer comportent une configuration LDPC à utiliser par la station terrestre pour former ledit au moins un mot de code. Le module de contrôle de ressources radio est configuré pour sélectionner la configuration LDPC à utiliser parmi un ensemble de N C configurations prédéfinies formant un sous-groupe, au sens strict, des configurations LDPC 5G définies dans le standard 3GPP TS 38.212. Chaque configuration correspond à un triplet de trois paramètres {K, R, Z}, et à une matrice de parité définie en fonction d’une partie au moins des paramètres K, R et Z. Le paramètre K correspond à une taille de message encodé par le code LDPC ; le paramètre Z correspond à un facteur d’expansion de la matrice de parité ; le paramètre R correspond à un taux de codage du code LDPC. L’ensemble des valeurs prises par le paramètre Z parmi les N C configurations prédéfinies comprenant au moins deux valeurs différentes. Dans des modes particuliers de réalisation, le nombre N C de configurations prédéfinies mémorisées dans la mémoire est un entier compris entre 8 et 512, voire entre 8 et 256, voire même entre 8 et 128. Dans des modes particuliers de réalisation, l’ensemble des valeurs prises par le paramètre Z parmi les N C configurations prédéfinies comprend N Z valeurs Z i , i étant un indice variant entre 0 et (N Z -1), N Z étant un entier compris entre 2 et 32, voire entre 4 et 16, les valeurs Z i étant toutes différentes et ordonnées par ordre croissant avec l’indice i, et pour i variant entre 1 et (N Z -1) le rapport est égal à une valeur entière. Dans des modes particuliers de réalisation, pour K > 3824, le nombre de configurations prédéfinies présentant un facteur d’expansion égal à Z i est une fonction décroissante avec la valeur de Z i ; et pour K ≤ 3824 et R ≤ 0,67, le nombre de configurations prédéfinies présentant un facteur d’expansion égal à Z i est une fonction décroissante avec la valeur de Z i . Présentation des figures L’invention sera mieux comprise à la lecture de la description suivante, donnée à titre d’exemple nullement limitatif, et faite en se référant aux figures 1 à 22 qui représentent : FIG. 1 une représentation schématique d’une matrice de parité d’un code LDPC, FIG. 2 une représentation schématique d’un graphe bipartite (graphe de Tanner) associé à une matrice de parité, FIG. 3 une illustration d’une méthode utilisée pour obtenir une matrice de parité d’un code LDPC quasi-cyclique, FIG. 4 une représentation schématique d’un exemple de mise en œuvre d’un procédé pour décoder un mot de code LDPC avec un ordonnancement par couches, FIG. 5 une représentation schématique d’un exemple de réalisation d’un décodeur LDPC selon l’invention, FIG. 6 une représentation schématique d’un exemple de réalisation d’un cœur du décodeur de la FIG. 5 , pour mettre en œuvre un procédé de décodage tel que celui décrit à la FIG. 4 , FIG. 7 un tableau présentant l’empreinte mémoire pour les messages de contrôle de parité (non compressés) pour différentes configurations candidates basées sur BG1, FIG. 8 une représentation graphique de l’empreinte mémoire pour les messages de contrôle de parité (non compressés) pour différentes configurations candidates basées sur BG1, FIG. 9 une représentation graphique de l’empreinte mémoire pour les messages de contrôle de parité (non compressés) pour différentes configurations candidates basées sur BG2, FIG. 10 un tableau présentant l’empreinte mémoire pour les variables d’estimation a priori pour différentes configurations candidates basées sur BG1, FIG. 11 une représentation graphique de l’empreinte mémoire pour les variables d’estimation a priori pour différentes configurations candidates basées sur BG1, FIG. 12 une représentation graphique de l’empreinte mémoire pour les variables d’estimation a priori pour différentes configurations candidates basées sur BG2, FIG. 13 un tableau listant un ensemble de configurations sélectionnées basées sur BG1, FIG. 14 un tableau listant un ensemble de configurations sélectionnées basées sur BG2, FIG. 15 une représentation graphique des configurations sélectionnées listées dans les tableaux des figures 13 et 14, FIG. 16 une représentation graphique des degrés des nœuds de contrôle de parité des matrices de base BG1 et BG2, FIG. 17 une représentation graphique des degrés des nœuds de contrôle de parité des matrices de base BG1 et BG2, après ordonnancement, pour le taux de codage minimal, FIG. 18 une représentation graphique des degrés des nœuds de contrôle de parité des matrices de base BG1 et BG2, après ordonnancement, pour un taux de codage 1/2, FIG. 19 une représentation graphique des degrés des nœuds de contrôle de parité des matrices de base BG1 et BG2, après ordonnancement, pour le taux de codage maximal, FIG. 20 une représentation schématique d’un autre exemple de réalisation d’un décodeur LDPC, avec une architecture multicœur comportant un groupe de quatre cœurs, FIG. 21 une représentation schématique d’un deuxième exemple de réalisation d’un décodeur LDPC multicœur comportant deux groupes de quatre cœurs, FIG. 22 une représentation schématique d’un troisième exemple de réalisation d’un décodeur LDPC multicœur avec une hiérarchie à deux niveaux. Dans ces figures, des références identiques d’une figure à une autre désignent des éléments identiques ou analogues. Pour des raisons de clarté, les éléments représentés ne sont pas nécessairement à une même échelle, sauf mention contraire. Description détaillée de l’invention Dans la suite de la description, on se place de manière non limitative dans le cas d’un décodeur LDPC pour des communications spatiales. Le décodeur peut notamment faire partie d’un dispositif récepteur embarqué dans un satellite destiné à être placé en orbite autour de la Terre. Un code LDPC est défini par une matrice de parité. La FIG. 1 représente schématiquement une matrice de parité H d’un code LDPC. On se place dans le cas d’un code LDPC binaire. La matrice de parité H est donc une matrice binaire, ce qui signifie que chaque élément de la matrice H est soit un ‘0’ soit un ‘1’. On considère que la matrice H est de taille M x N, avec M et N des entiers positifs. La matrice comporte donc M lignes et N colonnes. La matrice de parité H est de faible densité, c’est-à-dire que le nombre d’éléments de la matrice égaux à ‘1’ est relativement faible par rapport au nombre total M x N d’éléments de la matrice. Par exemple, le nombre d’éléments non nuls de la matrice est inférieur à 1% du nombre total d’éléments de la matrice. Tel qu’illustré sur la FIG. 2 , un code LDPC peut également être représenté sous la forme d’un graphe G bipartite (graphe de Tanner) présentant des connexions entre N nœuds de variable VN n (n variant entre 1 et N) et M nœuds de contrôle de parité CN m (m variant entre 1 et M). Chaque élément non nul de la matrice de parité H correspond à une connexion entre un nœud de variable VN n et un nœud de contrôle de parité CN m . Chaque ligne de la matrice de parité H correspond à une équation de parité associée à un nœud de contrôle de parité CN m . Chaque colonne de la matrice de parité H correspond à une variable associée à un nœud de variable VN n . Un mot de code à décoder correspond à un ensemble de valeurs prises respectivement par les variables associées aux N nœuds de variable (c’est l’ensemble des valeurs estimées des bits du mot de code). Un mot de code peut présenter une taille relativement importante, par exemple une taille supérieure ou égale à mille bits (N ≥ 1000), voire supérieure à dix-mille bits (N ≥ 10000). On se place dans le cas d’un décodeur LDPC qui supporte différentes tailles de mot de code, et différents taux de codage. Le taux de codage correspond au rapport entre le nombre de bits utiles dans un mot de code sur le nombre total de bits d’un mot de code. Plus le taux de codage est proche de ‘1’, plus la complexité calculatoire est faible et plus le débit utile peut être élevé ; en contrepartie, le pouvoir de correction d’erreurs est plus faible. Inversement, plus le taux de codage est proche de ‘0’ et plus le pouvoir de correction d’erreurs est important ; en contrepartie, la complexité calculatoire est plus forte et le débit utile est moins élevé. Le nombre de lignes M et la densité de la matrice de parité dépendent généralement du taux de codage. Le décodage d’un mot de code LDPC est basé sur un échange itératif d’informations sur la vraisemblance des valeurs prises par les bits du mot de code. Le processus itératif de décodage est basé sur un algorithme de propagation de croyance qui repose sur un échange de messages entre les nœuds de variable VN n et les nœuds de contrôle de parité CN m . Tel qu’illustré sur la FIG. 2 , un message envoyé par un nœud de contrôle de parité CN m à destination d’un nœud de variable VN n est noté β m,n . La valeur d’un message β m,n est calculée au niveau du nœud de parité CN m pour chacun des nœuds de variable VN n connectés au nœud de contrôle de parité CN m sur le graphe G. Un message envoyé par un nœud de variable VN n à destination d’un nœud de contrôle de parité CN m est noté α n,m . La valeur d’un message α n,m est calculée au niveau d’un nœud de variable VN n pour chacun des nœuds de parité CN m connectés au nœud de variable VN n sur le graphe G. C’est un processus itératif : les messages α n,m sont calculés à partir des messages β m,n précédemment calculés, et les messages β m,n sont calculés à partir des messages α n,m précédemment calculés. Ce processus itératif prend en entrée des variables d’estimation a priori du mot de code qui correspondent par exemple à des logarithmes de rapport de vraisemblance (LLR pour « Log-Likelihood Ratio » en anglais). Ce sont des valeurs représentatives de la probabilité que la valeur d’un bit du mot de code soit égale à ‘1’ ou à ‘0’ (logarithme du rapport entre la probabilité que la valeur du bit est égale à ‘0’ et la probabilité que la valeur du bit est égale à ‘1’). Des variables d’estimation a posteriori γ n (n variant de 1 à N) des bits du mot de code sont également calculées itérativement à partir des messages β m,n . Ces valeurs γ n sont également représentatives de la probabilité que la valeur d’un bit du mot de code soit égale à ‘1’ ou à ‘0’. Elles permettent de prendre une décision sur la valeur de chacun des bits du mot de code. Un syndrome peut alors être calculé à partir des valeurs estimées des bits du mot de code et des équations de parité définie par la matrice de parité H. Si on note c = (c 1, c 2 , …, c N ) l’ensemble des valeurs estimées des bits du mot de code, alors le syndrome s est défini par l’équation matricielle s = H * c T . Un syndrome nul signifie que les valeurs estimées des bits du mot de code satisfont les équations de parité. Différents algorithmes conventionnels peuvent être envisagés pour le processus itératif de décodage LDPC (BP-SPA, Min-Sum, Offset Min-Sum). Ces algorithmes sont connus de l’homme du métier. Les sections 2.3.1 et 2.3.3 du document « Efficient Hardware Implementations of LDPC Decoders through Exploiting Impreciseness in Message-Passing Decoding Algorithms », T.T Nguyen Ly (document référencé par la suite par « Ref1 »), décrivent respectivement un exemple de processus itératif de décodage LDPC avec l’algorithme BP-SPA et avec l’algorithme Min-Sum dans le cas d’un ordonnancement par inondation. Pour réduire la complexité d’implémentation matérielle du décodeur LDPC, il est possible d’utiliser des structures particulières de la matrice de parité H qui confèrent à la matrice une organisation en couches horizontales ou verticales. Par exemple, une couche horizontale de la matrice de parité H peut être définie comme un ensemble de lignes consécutives définies de telle sorte que, pour une variable donnée (c’est-à-dire pour une colonne donnée de la matrice de parité H), la couche ne présente qu’un seul élément non nul. Cette structure en couche permet de paralléliser les calculs des messages de contrôle de parité au sein d’une couche car les équations de parité d’une couche ne font pas intervenir plus d’une fois une variable du mot de code. En effet, si une couche ne présente qu’un seul élément non nul pour une variable donnée, cela signifie que les nœuds de variable VN n connectés à un nœud de contrôle de parité CN m d’une couche ne sont pas connectés à un autre nœud de contrôle de parité de ladite couche. Il existe différentes façons d’obtenir une matrice de parité H présentant une structure en couches. Notamment, et tel qu’illustré sur la FIG. 3 , il est possible d’obtenir une matrice de parité H à partir d’une matrice de base B de taille R x C en remplaçant chaque élément de la matrice de base B par une matrice de taille Z x Z correspondant soit à une matrice nulle, soit à la matrice identité, soit à un décalage de la matrice identité. La matrice de parité comporte alors R x Z lignes (M = R x Z) et C x Z colonnes (N = C x Z). Le terme Z est un généralement appelé « facteur d’expansion ». Les sous-matrices de taille Z x Z sont généralement appelées « matrices circulantes ». Les termes R, C et Z sont des entiers positifs. Un code LDPC défini par une telle matrice de parité H est appelé code LDPC « quasi-cyclique » (QC-LDPC). Par exemple, et tel qu’illustré sur la FIG. 3 , chaque élément de la matrice de base B est un entier ayant pour valeur ‘-1’, ‘0’, ou une valeur inférieure à Z. Un élément de la matrice de base B ayant pour valeur ‘-1’ est remplacé par la matrice nulle ; un élément de la matrice de base B ayant pour valeur ‘0’ est remplacé par la matrice identité ; un élément de la matrice de base B ayant une valeur d comprise entre 1 et (Z-1) est remplacé un décalage de valeur d de la matrice identité. Une couche horizontale de la matrice de parité H peut alors être définie comme un ensemble de Z P lignes consécutives de la matrice de parité H provenant d’une ligne de la matrice de base B, avec Z P ≤ Z. Dans une architecture par couches horizontales, les calculs sont principalement centrés sur les nœuds de contrôle de parité CN m . Le nombre Z P correspond au nombre d’unité fonctionnelles utilisées pour exécuter en parallèle les calculs effectués au niveau des nœuds de contrôle de parité. Lorsque Z P = Z, le niveau de parallélisation est maximal. La section 2.5.2 du document Ref1 décrit un exemple de processus itératif de décodage LDPC avec l’algorithme Min-Sum dans le cas d’un ordonnancement par couches horizontales. Les variables d’estimation a posteriori γ n sont initialisées avec les variables d’estimation a priori (LLRs). Les messages β m,n sont initialisés à zéro. Ensuite, à chaque itération, les différentes couches sont traitées successivement. Pour chaque couche : les messages α n,m sont calculés à partir des messages β m,n et des variables d’estimation a posteriori γ n ; les messages β m,n sont calculés à partir des messages α n,m ; les variables d’estimation a posteriori γ n sont calculées à partir des messages β m,n ; un syndrome partiel peut alors être calculé à partir des variables d’estimation a posteriori γ n . La FIG. 4 illustre schématiquement un exemple de mise en œuvre d’un procédé 100 pour décoder un mot de code LDPC avec une architecture en couches horizontales. Tel qu’illustré sur la FIG. 4 , le procédé 100 comprend l’exécution d’une ou plusieurs itérations jusqu’à ce qu’un critère d’arrêt soit satisfait. Chaque itération comprend le traitement successif des couches de la matrice de parité H. Le traitement 110 d’une couche comprend : un calcul 111 de messages de variable α n,m , pour les nœuds de variables VN n impliqués dans ladite couche, un calcul 112 de messages de contrôle de parité β m,n , pour les nœuds de contrôle de parité CN m impliqués dans ladite couche, un calcul 113 des variables d’estimation a posteriori γ n , un calcul 114 d’un syndrome partiel pour ladite couche. Le calcul 111 d’un message de variable α n,m est effectué pour chaque nœud de variable VN n impliqué dans la couche en cours de traitement et pour chacun des nœuds de contrôle de parité CN m connectés audit nœud de variable VN n . Les messages α n,m sont calculés à partir des valeurs courantes des variables d’estimation a posteriori γ n et à partir des valeurs courantes des messages de contrôle de parité β m,n . Ces valeurs courantes correspondent soit aux valeurs d’initialisation (pour la première itération) soit aux valeurs calculées lors de l’itération précédente. Par exemple, un message α n,m est calculé tel que α n,m = γ n - β m,n . Le calcul 112 d’un message de contrôle de parité β m,n est effectué pour chaque nœud de contrôle de parité CN m impliqué dans la couche en cours de traitement et pour chacun des nœuds de variable VN n connectés audit nœud de contrôle de parité CN m . Les messages β m,n sont calculés à partir des valeurs courantes des messages de variable α n,m . Par exemple, un message β m,n est calculé en considérant l’ensemble des messages α n’,m associés au nœud de contrôle de parité CN m en excluant le message α n,m associé au nœud de variable VN n ; la valeur absolue d’un message β m,n est égale à la plus petite valeur absolue des messages α n’,m considérés ; le signe d’un message β m,n est égal au produit des signes des messages α n’,m considérés. Le calcul 113 d’une valeur de la variable d’estimation a posteriori γ n est effectué pour chaque bit du mot de code. Par exemple, les γ n sont calculés à partir des valeurs courantes des messages de contrôle de parité β m,n et des valeurs courantes des messages de variable α n,m de telle sorte que γ n = α n,m + β m,n . Le calcul 114 d’un syndrome partiel pour la couche en cours de traitement est effectué en appliquant les équations de parité de ladite couche aux variables d’estimation a posteriori γ n . Le syndrome partiel est alors un vecteur de taille L. Le procédé 100 comporte, à la fin du traitement de chaque couche, une vérification 120 si l’itération est terminée ou non. L’itération est terminée lorsque toutes les couches ont été traitées. A la fin d’une itération, le procédé 100 comporte une évaluation 130 d’un critère d’arrêt. Il est par exemple envisageable de considérer que le critère d’arrêt est satisfait lorsque tous les syndromes partiels calculés respectivement pour les différentes couches sont nuls. D’autre critères d’arrêt peuvent toutefois être envisagés : il est par exemple aussi possible de considérer que le critère d’arrêt est satisfait lorsque les syndromes partiels des différentes couches sont tous nuls pour un nombre prédéterminé d’itérations successives. Selon encore un autre exemple, le critère d’arrêt est satisfait si, pour une pluralité d’itérations successives, le nombre d’itérations pour lesquelles tous les syndromes partiels sont nuls auquel est retranché le nombre d’itérations pour lesquelles l’un au moins des syndromes partiels est non nul est supérieur ou égal à un seuil d’arrêt prédéterminé. La FIG. 5 représente schématiquement un exemple de réalisation d’un décodeur 30 LDPC comportant au moins un cœur 10 et une mémoire 20 non volatile dans laquelle est mémorisé un nombre N C de configurations prédéfinies. Le cœur 10 est une unité de calcul (un processeur) adaptée pour être dynamiquement configuré avec l’une quelconque des N C configurations prédéfinies mémorisées dans la mémoire 20 afin de décoder un mot de code LDPC en utilisant cette configuration. Tel qu’illustré sur la FIG. 5 , le cœur 10 comporte une mémoire 13 locale de configuration dont la taille est au moins égale à la plus grande des tailles des N C configurations prédéfinies mémorisées dans la mémoire 20. Ainsi, chacune des N C configurations peut être temporairement chargée dans la mémoire 13 locale pour le décodage d’un mot de code LDPC. Une nouvelle configuration est chargée dans la mémoire 13 locale à chaque fois qu’un nouveau mot de code LDPC doit être décodé avec une configuration différente de celle qui est présentement chargée dans la mémoire 13 locale. Le cœur 10 est adapté pour mener le procédé 100 de décodage LDPC itératif décrit ci-avant en référence à la FIG. 4 . Le cœur 10 est par exemple implémenté sous la forme d’un circuit intégré spécifique de type ASIC (acronyme anglais pour « Application-Specific Integrated Circuit »), ou un circuit intégré reprogrammable de type FPGA (acronyme anglais pour « Field-Programmable Gate Array »). La FIG. 6 illustre schématiquement un exemple de réalisation du cœur 10 décrit ci-avant en référence à la FIG. 5 . Il convient toutefois de noter qu’il existe dans la littérature de nombreuses architectures possibles pour l’implémentation d’un cœur LDPC. Dans l’exemple illustré à la FIG. 5 , le cœur 10 comporte : une mémoire tampon d’entrée 11 de type premier entré-premier sorti (« First In First Out » ou FIFO dans la littérature anglo-saxonne) pour mettre en mémoire une trame de données pendant qu’une autre trame de données est en cours de traitement, une unité d’alignement d’entrée 12 pour former des blocs de bits de données à décoder de la taille du facteur de parallélisation Z P , une mémoire 13 locale de configuration, par exemple une mémoire volatile de type RAM (« Random Access Memory »), dans laquelle sont mémorisées des informations de configuration relative au code LDPC, notamment la matrice de parité H à utiliser (qui peut être mémorisée sous toute forme adaptée), une mémoire 14 volatile dans laquelle sont mémorisés les valeurs courantes des variables d’estimation a posteriori γ n , une mémoire 15 volatile dans laquelle sont mémorisés les valeurs courantes des messages de contrôle de parité β m,n , une unité de traitement 16 configurée pour exécuter les itérations du processus de décodage, c’est-à-dire notamment pour mettre en œuvre le réseau de permutation (opérations de décalage de la matrice identité), pour effectuer les calculs des variables d’estimation a posteriori γ n , des messages α n,m et β m,n , des syndromes partiels, et pour déterminer si le critère d’arrêt est satisfait, un multiplexeur 19 pour aiguiller dans la mémoire 14 les valeurs des variables d’estimation a priori (pour la première itération) ou les valeurs des variables d’estimation a posteriori γ n calculées par l’unité de traitement 16 (pour les itérations suivantes), une mémoire 17 volatile dans laquelle sont mémorisées les valeurs de décision dure (« hard decision » dans la littérature anglo-saxonne) des bits du mot de code, une unité d’alignement de sortie 18 pour adapter la taille des blocs de bits de données décodés à la taille attendue en sortie du décodeur 10. Compatibilité avec la 5G : Le standard 3GPP (acronyme anglais de « 3rd Generation Partnership Project », une coopération entre organismes de normalisation en télécommunications), et plus particulièrement le document de spécification technique 3GPP TS 38.212 (version 15.0.0 et ultérieures) décrit les configurations LDPC qui doivent être supportées par un dispositif compatible avec le standard 5G (cinquième génération du standard de communications mobiles 3GPP). Chaque configuration LDPC 5G correspond à un triplet de paramètres {K, R, Z} et à une matrice de parité. Le paramètre K correspond à la taille du mot encodé (c’est la taille des données utiles dans le mot de code LDPC). Le paramètre Z correspond à un facteur d’expansion (« lifting size Z »). Le paramètre R correspond au taux de codage. Cela correspond sensiblement au rapport entre la taille du mot encodé et la taille du mot de code LDPC (rapport K/N). De façon plus exacte, le taux de codage R correspond au rapport K/(N-N P ), où N P est un nombre de bits poinçonnés. Les codes LDPC 5G sont basés sur des matrices de parité quasi-cycliques pouvant être construites à partir d’une matrice de base BG1 ou BG2 (« Base Graph 1 ou Base Graph 2 »). La matrice de base BG1 comporte au maximum 46 lignes et 68 colonnes. La matrice de base BG2 comporte au maximum 42 lignes et 52 colonnes. Chaque entrée de la matrice de base peut être étendue avec le facteur d’expansion Z (« lifting size Z » dans le document 3GPP TS 38.212). Le nombre de lignes et de colonnes à utiliser dépend du taux de codage R (plus le taux de codage est faible et plus la taille de la matrice de base est grande). Le choix de la matrice de base BG1 ou de la matrice de base BG2 est défini par la spécification en fonction des valeurs de K et R (voir section 6.2.2 du document 3GPP TS 38.212) : si K ≤ 3824 et R ≤ 0.67, alors BG2 est sélectionnée, si K ≤ 292, alors BG2 est sélectionnée, si R ≤ 0.25, alors BG2 est sélectionnée, sinon, BG1 est sélectionnée. Une fois la matrice de base sélectionnée, la spécification définit un paramètre K b qui représente le nombre de colonnes de la matrice de base à utiliser pour traiter les bits d’information du mot de taille K : pour BG1, K b = 22 ; pour BG2 : si K > 640, alors K b = 10, si 560 b = 9, si 192 b = 8, si K ≤ 192, alors K b = 6. Le facteur d’expansion Z est déterminé comme étant la plus petite valeur de Z satisfaisant K b x Z ≥ K. Connaissant le facteur d’expansion Z, on peut définir à partir de la table 5.3.2-1 de la spécification 3GPP TS 38.212 à quel indice i LS il correspond. La table 5.3.2-2 permet ensuite de construire la matrice de base en la remplissant avec des valeurs comprises entre 0 et (Z-1). Comme décrit précédemment en référence à la FIG. 3 , un élément de la matrice de base ayant pour valeur ‘-1’ est remplacé par la matrice nulle ; un élément de la matrice de base ayant pour valeur ‘0’ est remplacé par la matrice identité ; un élément de la matrice de base ayant une valeur entière ‘d’ comprise entre 1 et (Z-1) est remplacé un décalage de valeur ‘d’ de la matrice identité. Un très grand nombre de configurations différentes sont supportées par la spécification. Par exemple, K peut varier de quelques bits ou quelques dizaines de bits à plusieurs milliers de bits (jusqu’à 8448 bits) ; la spécification supporte plus de cinquante valeurs possibles pour Z (valeurs comprises entre 2 et 384) ; un grand nombre de valeurs différentes sont envisageables pour le taux de codage R (le taux de codage est en relation directe avec le nombre de lignes de la matrice de base). La nécessité de supporter un très grand nombre de configurations différentes pour les codes LDPC 5G s’explique notamment par le besoin d’avoir des codes compatibles en termes de taux de codage pour supporter l’IR-HARQ. L’IR-HARQ est utilisée notamment pour introduire de la diversité fréquentielle afin de minimiser les impacts du multi-trajet qui est très souvent présent dans les communications terrestres. L’IR-HARQ est également utilisée pour optimiser l’efficacité spectrale pour des communications caractérisées par un temps de propagation très faible. Les codes LDPC de la 5G sont donc conçus pour être très flexibles et adaptables à un très large éventail de conditions de transmission. Cela signifie qu'ils utilisent des matrices de parité de longueur très variable, qui nécessitent une quantité importante de logique pour être implémentés en matériel. Aussi, le nombre de configurations différentes à supporter est tellement grand (plusieurs milliers de configurations différentes en 5G) qu’il n’est pas envisageable de précalculer les matrices de parité associées à ces configurations afin de les stocker en mémoire. Il est alors nécessaire de calculer dynamiquement la matrice de parité de la configuration retenue. En contrepartie de cette ultra-flexibilité, les décodeurs LDPC 5G conventionnels sont généralement relativement peu efficaces en termes de matériel pour un traitement de bande spectrale fixe. En particulier, la grande flexibilité sur le facteur d’expansion Z entraine une complexité du réseau de permutation de l'architecture en couches. Cette complexité augmente l’empreinte des registres et des portes logiques du circuit. Cette complexité entraine également une augmentation du nombre d'étages du pipeline afin de maintenir une fréquence maximale élevée du circuit. Cette augmentation du nombre d'étages du pipeline réduit toutefois le débit global du décodeur en raison des aléas de données qui sont généralement résolus par des cycles d’attente (le terme « aléas de données », ou « data hazards » en anglais, est utilisé ici pour désigner une situation dans laquelle une instruction ne peut pas être exécutée car elle dépend de la valeur d'une autre instruction qui n'est pas encore disponible). Avec un décodeur 5G conventionnel, il est possible d’atteindre des débits de données élevés avec des valeurs élevées pour le taux de codage R et pour le facteur d’expansion Z. Les décodeurs 5G conventionnels utilisent une architecture en couches avec plusieurs unités de traitement travaillant en parallèle, comme cela a été mentionné précédemment. Le facteur de parallélisation Z P est souvent choisi pour être le plus grand possible. Toutefois, pour des valeurs de facteur d’expansion plus petites, l'architecture parallèle devient souvent sous-optimale. Pour les applications de communications satellitaires haut-débit (et éventuellement pour certaines autres applications spécifiques), l’ultra-flexibilité offerte par la 5G dans le choix des configurations LDPC n'est pas utile, et elle peut augmenter considérablement la complexité matérielle et la consommation d'énergie du dispositif embarqué à bord du satellite. Dans le domaine des communications spatiales, où le canal de transmission est essentiellement de type AWGN (acronyme anglais de « Additive White Gaussian Noise », en français « bruit additif blanc gaussien »), l’intérêt d’utiliser l’IR-HARQ est nettement réduit. L’utilité de considérer l’intégralité des codes LDPC 5G (pour conserver une compatibilité en termes de taux de codage) est alors réduite. Pour obtenir un décodeur LDPC compatible 5G présentant des bonnes performances en termes d’efficacité matérielle, la présente invention propose de sélectionner un nombre restreint de configurations parmi le très grand nombre de configurations LDPC supportées par le standard 3GPP TS 38.212. Il peut en effet être intéressant de concevoir un décodeur LDPC qui soit compatible avec la 5G, au sens où il supporte au moins certaines configurations LDPC 5G, sans nécessairement supporter toutes les configurations LDPC 5G. Dans un système de communications satellitaires, les ressources à utiliser pour établir une communication entre une station terrestre (par exemple un terminal mobile 5G) et un satellite sont allouées par une station passerelle au sol. Parmi ces ressources figure la configuration LDPC à utiliser pour coder (à l’émission) et décoder (à la réception) un mot de code inclus dans un message échangé entre la station terrestre et le satellite. La station passerelle peut notamment comporter un module de contrôle de ressources radio configuré pour allouer uniquement des configurations LDPC 5G comprises dans les N C configurations prédéfinies. Dans la suite, on note N C le nombre restreint de configurations supporté par le décodeur 30. Ce nombre N C est avantageusement peu élevé, de telle sorte que les matrices de parité associées à ces configurations peuvent être précalculées et mémorisées dans la mémoire 20. Il n’est alors plus nécessaire de construire entièrement la matrice de parité à chaque fois qu’un nouveau mot de code doit être décodé avec un nouveau code LDPC. Cela permet de limiter la complexité du décodeur : le décodeur n’a pas besoin d’implémenter la logique nécessaire pour la construction de la matrice de parité, et le réseau de permutation peut être simplifié et optimisé pour les N C configurations retenues. Les N C configurations prédéfinies forment donc un sous-groupe strict des configurations LDPC 5G définies dans le standard 3GPP TS 38.212. Dans des modes particuliers de réalisation, le nombre N C de configurations prédéfinies est compris entre 8 et 512, voire entre 8 et 256, voire même entre 8 et 128. Une telle valeur de N C offre un compromis intéressant entre un nombre assez important de configurations pour couvrir un nombre suffisant de scénarios en termes de SNR et de débit souhaité, et un nombre assez faible de configurations pour limiter les besoins en mémoire et la complexité d’implémentation. Chaque configuration correspond à un triplet {K, R, Z}, et à une matrice de parité construite en fonction d’une partie au moins des paramètres K, R et Z. Comme expliqué précédemment, en définissant K et R, on peut en déduire la matrice de base à utiliser (BG1 ou BG2), puis la valeur de Z, puis la matrice de parité complète. Selon un autre exemple, il est possible de commencer par définir un ensemble de quelques valeurs préférées pour le facteur d’expansion Z auxquelles se limiteront les N C configurations, puis en déduire différentes valeurs possibles de K pour supporter certains taux de codage R. Comme expliqué précédemment, une matrice de parité peut être construite pour chaque triplet {K, R, Z} retenu. Avantageusement, l’ensemble des valeurs prises par le paramètre Z parmi les N C configurations prédéfinies comprend au moins deux valeurs différentes. Cela permet ainsi de gérer différentes tailles de message (différentes valeurs de K). Dans des modes particuliers de réalisation, l’ensemble des valeurs prises par le paramètre Z parmi les N C configurations prédéfinies comprend N Z valeurs Z i différentes et ordonnées par ordre croissant avec l’indice i (i est un indice variant entre 0 et (N Z -1)), N Z étant un entier compris entre 2 et 32, voire entre 4 et 16, les valeurs Z i étant avantageusement choisies de telle sorte que, pour i variant entre 1 et (N Z -1), le rapport est égal à une valeur entière. Il est alors avantageux de choisir une valeur de Z 0 égale au facteur de parallélisation Z P du décodeur 30 (Z P = Z 0 ). Pour rappel, le facteur de parallélisation Z P correspond au nombre maximal d’unités fonctionnelles du cœur 10 pouvant être utilisées en parallèle pour exécuter les calculs des nœuds de contrôle de parité. De telles dispositions permettent en effet d’optimiser l’utilisation des ressources matérielles du décodeur pour la parallélisation et, comme on le verra par la suite, d’offrir plus de flexibilité pour résoudre des situations d’aléas de données. Il convient toutefois de noter que la valeur Z 0 n’est pas nécessairement la plus petite valeur parmi l’ensemble des valeurs prises par le paramètre Z parmi les N C configurations prédéfinies (rien n’empêcherait d’avoir une configuration avec une valeur de Z strictement inférieure à Z P , par exemple si cette configuration permet de traiter de façon spécifique des cas relativement rares de transmission de messages de petites tailles). Pour optimiser l’implémentation matérielle du décodeur, il est également avantageux de choisir une valeur de Z 0 égale à une puissance de deux (autrement dit, une valeur de Z 0 pouvant s’écrire sous la forme 2 n , où n est un entier positif). Cela permet en effet de maximiser l’utilisation matérielle des multiplexeurs et du réseau de permutation. A titre d’exemple nullement limitatif, on peut choisir Z 0 = 32, N Z = 12, et Z i = (i + 1) x Z 0 pour i variant entre 0 et (N Z -1). Pour les valeurs Z i retenues, il est avantageux de sélectionner des configurations qui limitent la taille du bus d’adressage de la mémoire 15 volatile du cœur 10 dans laquelle sont mémorisées les valeurs courantes des messages de contrôle de parité β m,n . Le tableau en FIG. 7 donne la taille en bits du bus d’adressage de la mémoire 15 pour différentes configurations avec les valeurs Z i retenues lorsque la matrice de base à utiliser est BG1. Chaque colonne du tableau correspond à une valeur Z i particulière, chaque ligne du tableau correspond à une valeur de taux de codage R particulière. Pour un couple de valeur {Z i ; R}, il est possible de déterminer la valeur correspondante du paramètre K. Chaque case du tableau de la FIG. 7 correspond donc à une configuration candidate. La taille du bus d’adressage de la mémoire 15 pour les messages de contrôle de parité (non compressés) β m,n est égale à , où N conn correspond au nombre d’éléments non nuls (nombre de connexions) dans la matrice de parité de la configuration considérée. N conn correspond également à Z i multiplié par le nombre d’éléments non nuls dans les m B lignes et n B colonnes de la matrice de base utilisées pour la configuration considérée. Tel qu’illustré sur la figure 7, il est par exemple avantageux de sélectionner les configurations supportées de telle sorte que la taille du bus d’adressage de la mémoire 15 pour les messages de contrôle de parité β m,n soit inférieure ou égale à (c’est-à-dire inférieure ou égale à 11 lorsque Z P = 32). La FIG. 8 est une représentation graphique du tableau de la FIG. 7 (c’est une représentation graphique de la taille en bits du bus d’adressage de la mémoire 15 pour différentes configurations candidates avec les valeurs Z i retenues lorsque la matrice de base à utiliser est BG1). La FIG. 9 est une représentation graphique de la taille en bits du bus d’adressage de la mémoire 15 pour différentes configurations candidates avec les valeurs Z i retenues lorsque la matrice de base à utiliser est BG2. On peut observer que les configurations basées sur BG1 sont plus contraignantes que celles basées sur BG2. Comme décrit à la section 4.3.1 du document Ref1, il est envisageable de « compresser » les messages de contrôle de parité β m,n traités par une unité fonctionnelle. Par exemple, plutôt que de mémoriser les valeurs des messages β m,n associés à un nœud de contrôle, il peut être suffisant de mémoriser les signes de ces messages, la valeur absolue d’au moins deux valeurs minimales parmi ces messages, et les index associés à ces valeurs minimales sauf une. Ainsi, dans le cas non compressé, chaque entrée de la mémoire correspond à un message β m,n , alors que dans le cas compressé, chaque entrée de la mémoire correspond aux données compressées (signes, min, index) d’une couche. Dans le cas où les messages de contrôle de parité sont compressés, la taille du bus d’adressage de la mémoire 15 pour les messages de contrôle de parité est égale à , où m B correspond au nombre de lignes de la matrice de base utilisées, et correspond au nombre de couches dans la matrice de parité pour la configuration considérée ( est égal au nombre M de lignes de la matrice de parité pour la configuration considérée). Dans le cas où les messages de contrôle de parité sont compressés, il est par exemple avantageux de sélectionner les configurations supportées de telle sorte que la taille du bus d’adressage de la mémoire 15 pour les messages de contrôle de parité soit inférieure ou égale à (c’est-à-dire inférieure ou égale à 9 lorsque Z P = 32). Pour les valeurs Z i retenues, il peut également être avantageux de sélectionner des configurations qui limitent la taille du bus d’adressage de la mémoire 14 volatile du cœur 10 dans laquelle sont mémorisées des valeurs courantes de variables d’estimation a posteriori γ n (le terme APP est également utilisé pour désigner les variables d’estimation a posteriori). Le tableau en FIG. 10 donne la taille en bits du bus d’adressage de la mémoire 14 pour différentes configurations avec les valeurs Z i retenues lorsque la matrice de base à utiliser est BG1. La taille du bus d’adressage de la mémoire 14 pour les variables d’estimation a posteriori γ n est égale à , où N correspond à la taille d’un mot de code pour la configuration considérée. La taille N est égale à , où n B correspond au nombre de colonnes de la matrice de base utilisées pour la configuration considérée. Tel qu’illustré sur la figure 10, il est par exemple avantageux de sélectionner les configurations supportées de telle sorte que la taille du bus d’adressage de la mémoire 14 pour les variables d’estimation a posteriori γ n soit inférieure ou égale à (c’est-à-dire inférieure ou égale à 9 lorsque Z P = 32). La FIG. 11 est une représentation graphique du tableau de la FIG. 10 (c’est une représentation graphique de la taille en bits du bus d’adressage de la mémoire 14 pour différentes configurations candidates avec les valeurs Z i retenues lorsque la matrice de base à utiliser est BG1). La FIG. 12 est une représentation graphique de la taille en bits du bus d’adressage de la mémoire 14 pour différentes configurations candidates avec les valeurs Z i retenues lorsque la matrice de base à utiliser est BG2. On peut observer que les configurations basées sur BG1 sont plus contraignantes que celles basées sur BG2. Dans l’exemple considéré, les configurations sélectionnées sont listées dans les tableaux en FIG. 13 et 14. Le tableau en FIG. 13 liste cinquante-et-une configurations sélectionnées basées sur BG1, tandis que le tableau en FIG. 14 liste vingt configurations sélectionnées basées sur BG2. Dans cet exemple, il y a donc un total de soixante-et-onze configurations (N C = 71) à mémoriser dans la mémoire 20 non volatile. Dans les tableaux des figures 13 et 14, la colonne « Connexions » indique le nombre de connexions (nombre d’éléments non nuls) dans la matrice de base. Le nombre N conn de connexions dans la matrice de parité correspond au nombre de connexions dans la matrice de base multiplié par le facteur d’expansion Z. La FIG. 15 est une représentation graphique des configurations sélectionnées listées dans les tableaux des figures 13 et 14. Sur cette figure, les configurations sélectionnées basées sur BG1 sont représentées par des carrés, les configurations sélectionnées basées sur BG2 sont représentées par des ronds. Il apparaît clairement sur cette représentation que, de façon avantageuse, pour K > 3824, le nombre de configurations prédéfinies présentant un facteur d’expansion égal à Z i est une fonction décroissante avec la valeur de Z i . De façon similaire, pour K ≤ 3824 et R ≤ 0,67, le nombre de configurations prédéfinies présentant un facteur d’expansion égal à Z i est une fonction décroissante avec la valeur de Z i . Les codes LDPC 5G présentent une distribution des degrés de parité des nœuds de contrôle CN m très irrégulière. Cela signifie que différents nœuds de contrôle peuvent avoir des nombres différents (et potentiellement très différents) de bits de données qui leur sont connectés. Le degré de parité d’un nœud de contrôle de parité CN m correspond au nombre de bits de données qui lui sont connectés ; cela correspond aussi au nombre d’équations de parité dans laquelle le nœud de contrôle est impliqué. La FIG. 16 illustre cette irrégularité des codes LDPC 5G. La FIG. 16 représente les degrés des nœuds de contrôle de parité des matrices de base BG1 et BG2. Sur la FIG. 16 , les degrés des nœuds de contrôle de parité pour BG1 sont représentés par des carrés, les degrés des nœuds de contrôle de parité pour BG2 sont représentés par des croix. Dans une architecture en couches, des nœuds de contrôle de parité CN m peuvent être exécutés en parallèle. Cependant, la distribution irrégulière des degrés de parité des nœuds de contrôle entraîne des situations où certains nœuds de contrôle ne peuvent pas être exécutés tant que les données en sortie des autres nœuds de contrôle ne sont pas disponibles. Il devient alors nécessaire d'insérer des cycles d'attente supplémentaires dans le processus de décodage. Cela réduit le débit global du décodeur. Pour résoudre ce problème, il est possible d’ordonnancer d’une façon particulière et optimisée les nœuds de contrôle en fonction de leur degré de parité. En particulier, les nœuds de contrôle peuvent être ordonnancés par ordre croissant des degrés de parité (cela signifie que les nœuds de contrôle avec le moins de bits de données connectés sont exécutés en premier). Il est également envisageable d’optimiser, à l’aide d’heuristiques, l’ordre des nœuds de contrôle présentant un même degré de parité, ou bien l’ordre des calculs au sein d’un nœud de contrôle. Chaque configuration sélectionnée et mémorisée dans la mémoire 20 peut donc avantageusement comporter cet ordonnancement optimisé des nœuds de contrôle (c’est-à-dire une indication de l’ordre dans lequel les nœuds de contrôle doivent être exécutés). Cette approche ne peut pas être implémentée pour les décodeurs LDPC 5G conventionnels en raison du grand nombre de configurations différentes qu’ils doivent supporter. Cette approche s’applique toutefois très bien au décodeur 30 selon l’invention car le nombre N C de configurations prédéfinies est limité. Les figures 17, 18 et 19 représentent respectivement les degrés des nœuds de contrôle de parité des matrices de base BG1 et BG2 après ordonnancement par ordre croissant des degrés de parité, pour différentes valeurs du taux de codage R. La FIG. 17 correspond au taux de codage minimal (cas où toutes les lignes des matrices de base BG1 et BG2 sont utilisées), la FIG. 18 correspond à un taux de codage de valeur ½ (la matrice de base BG1 comporte alors vingt-quatre lignes, tandis que la matrice de base BG2 comporte douze lignes), et la FIG. 19 correspond à un taux de codage maximal (cas où les matrices de base BG1 et BG2 comportent seulement quatre lignes). Il apparaît sur les figures 17 à 19 que, pour les configurations basées sur BG1, les nœuds de contrôle de parité présentant un degré de parité égal à dix-neuf sont toujours présents, quel que soit le taux de codage. De façon similaire, pour les configurations basées sur BG2, les nœuds de contrôle de parité présentant un degré de parité égal à huit ou dix sont toujours présents, quel que soit le taux de codage. Pour une valeur de Z donnée, l’ordonnancement des nœuds de contrôle de la configuration correspondant au taux de codage maximal peut donc être commun à toutes les configurations. Autrement dit, pour une valeur de Z donnée, pour chaque configuration sélectionnée et mémorisée dans la mémoire 20, l’ordonnancement des nœuds de contrôle peut comporter une partie commune à toutes les configurations et une partie spécifique propre à la configuration considérée. La partie commune correspond à l’ordonnancement des nœuds de contrôle de degré élevé ; la partie spécifique correspond à l’ordonnancement des nœuds de contrôle de degré plus faible. Cette partie commune permet de limiter la taille mémoire nécessaire pour mémoriser les configurations (la partie commune est mémorisée une seule fois pour toutes les configurations avec une même valeur de Z). Ce concept est illustré par les colonnes « Taille config » et « Taille config opt. » des tableaux des figures 13 et 14. Pour chaque configuration sélectionnée, le nombre indiqué dans la colonne « Taille config » est représentatif de la taille totale nécessaire pour mémoriser l’ordonnancement des nœuds de contrôle pour cette configuration. Ce nombre correspond au nombre N conn de connexions de la matrice de parité divisé par le facteur de parallélisation Z P (il correspond aussi au nombre de connexions de la matrice de base, indiqué dans la colonne « Connexions », multiplié par le rapport ). Pour une valeur de Z donnée, le nombre indiqué dans la colonne « Taille config » pour le taux de codage maximal (R=0,92) correspond à la taille de la partie commune ; le nombre indiqué dans la colonne « Taille config » pour un taux de codage plus faible correspond à la somme de la taille de la partie commune et de la taille de la partie spécifique. Pour une valeur de Z donnée, le nombre indiqué dans la colonne « Taille config opt. » correspond soit à la taille de la partie commune (pour le taux de codage maximal), soit à la taille de la partie spécifique (pour les taux de codage plus faible). Pour chaque valeur de Z, il est suffisant de mémoriser la partie commune correspondant au taux de codage maximal (R=0,92) et les parties spécifiques correspondants aux taux de codage inférieurs retenus. Procéder ainsi permet quasiment de diviser par deux la taille mémoire nécessaire pour mémoriser les configurations sélectionnées listées dans les tableaux des figures 13 et 14. Comme cela a été mentionné précédemment, il est avantageux de choisir un facteur de parallélisation Z P égal à la plus petite valeur Z 0 parmi les valeurs Z i supportées, car cela permet de limiter la perte de parallélisme tout en offrant une plus grande flexibilité pour résoudre les situations d’aléas de données (« data hazards ») pour les valeurs élevées du facteur d’expansion. Ce choix va à l’encontre d’une idée établie selon laquelle il convient d’utiliser un facteur de parallélisation le plus grand possible. Utiliser un facteur de parallélisation le plus grand possible présente certes un avantage pour limiter la latence du décodage, mais cela offre moins de flexibilité dans la possibilité de résoudre les aléas de données avec un ordonnancement particulier des nœuds de contrôle. Dans le domaine des communications spatiales, les contraintes relatives à la latence du décodage LDPC sont nettement moins exigeantes que pour des communications terrestres. Architecture multicœur : L’invention porte également sur un décodeur LDPC avec une architecture multicœur. Cette architecture multicœur est particulièrement bien adaptée à un décodeur LDPC compatible 5G tel que décrit ci-avant. Rien n’empêcherait toutefois d’implémenter un décodeur LDPC avec une architecture multicœur et un jeu de N C configurations prédéfinies sans que ces configurations ne correspondent à des configurations LDPC 5G. Les figures 20 à 22 présentent trois exemples 31-a, 31-b, 31-c de réalisation d’un décodeur 31 multicœur (dans la suite, le numéro de référence 31 est utilisé pour indiquer de façon générique un décodeur LDPC multicœur selon l’invention). Dans l’exemple illustré sur la FIG. 20 , le décodeur 31-a comporte un groupe de quatre cœurs 10, chaque cœur étant similaire au cœur 10 du décodeur 30 décrit en référence à la FIG. 5 . La mémoire 20 est partagée entre ces quatre cœurs 10. Chaque cœur 10 du groupe est adapté pour être dynamiquement configuré avec l’une quelconque des N C configurations prédéfinies mémorisées dans la mémoire 20 partagée afin de décoder un mot de code LDPC en utilisant cette configuration. Chaque configuration prédéfinie comporte une matrice de parité binaire correspondant à un code LDPC (il s’agit avantageusement de la matrice de parité complète, et non pas seulement d’une sous-matrice permettant de calculer la matrice de parité). De façon avantageuse plusieurs cœurs du groupe peuvent simultanément décoder chacun un mot de code LDPC différent. A chaque fois qu’un nouveau mot de code doit être décodé par le décodeur 31, un module d’ordonnancement 21 est configuré pour sélectionner un cœur 10 disponible parmi les différents cœurs 10 du groupe, de charger dans la mémoire 13 locale du cœur 10 sélectionné la configuration LDPC devant être utilisée pour décoder le mot de code, et pour lancer le décodage du mot de code par le cœur 10 sélectionné. A chaque fois qu’un cœur 10 a terminé son processus de décodage d’un mot de code, il envoie une information au module d’ordonnancement 21 pour lui indiquer qu’il est disponible pour décoder un nouveau mot de code. Cette approche multicœur est particulièrement avantageuse puisqu’elle permet le décodage de plusieurs mots de code en parallèle, c’est-à-dire de façon simultanée. Ainsi, à un instant donné, différents mots de code peuvent être décodés en parallèle par différents cœurs 10 selon différentes configurations. L’approche multicœur permet également d’optimiser les besoins en ressource mémoire. Le coût en mémoire est réduit car la mémoire 20 est partagée avec tous les cœurs du groupe. Plus le rapport entre la taille de la mémoire 13 locale d’un cœur 10 et la taille de la mémoire 20 partagée entre les cœurs 10 d’un même groupe est petit, et plus le partage de la mémoire 20 entre les différents cœurs 10 est efficace. Comme on l’a vu précédemment, le décodage d’un mot de code LDPC par un cœur 10 comporte l’exécution d’une ou plusieurs itérations jusqu’à ce qu’un critère d’arrêt soit satisfait, par exemple en fonction des syndromes partiels calculés pour les différentes couches. Il convient également de fixer un nombre maximal d’itérations après lequel le processus de décodage doit s’arrêter. Il est important de définir correctement ce nombre maximal d’itérations car il a un impact significatif sur les performances du décodeur. En particulier, lorsque le décodeur LDPC est embarqué dans un satellite, les contraintes en termes de puissance de calcul et de consommation énergétique conduisent à choisir un nombre maximal d’itérations relativement faible, généralement de l’ordre de dix. Chaque itération supplémentaire entraine donc un impact de l’ordre de dix pour cent sur les performances. Pour optimiser les performances du décodeur 31 multicœur, le nombre maximal d’itérations est défini en fonction d’un taux de charge du décodeur. A chaque fois qu’un nouveau mot de code doit être décodé par un cœur 10 du décodeur 31 multicœur, le nombre maximal d’itérations à utiliser pour le décodage de ce nouveau mot de code est calculé. A un instant donné, le taux de charge du décodeur 31 multicœur est calculé en fonction du nombre de cœurs simultanément occupés à décoder un mot de code LDPC. Par exemple, pour le décodeur 31-a multicœur décrit en référence à la FIG. 20 , le taux de charge est respectivement de 0%, 25%, 50%, 75% ou 100% selon que le nombre de cœur 10 simultanément occupés à décoder un mot de code est égal à zéro, un, deux, trois ou quatre. Le taux de charge est par exemple calculé par le module d’ordonnancement 21. Pour définir le nombre maximal d’itérations à utiliser pour le décodage d’un nouveau mot de code, le taux de charge du décodeur 31 est calculé juste avant le début du décodage du nouveau mot de code. Le taux de charge peut ou non prendre en compte le fait que le cœur 10 chargé de décoder le nouveau mot de code est occupé. Dans la suite de la description, on se place dans le cas où le taux de charge ne prend pas en compte l’occupation du cœur 10 qui sera chargé du décodage du nouveau mot de code. Dans ce cas, si le taux de charge est égal à 100%, alors le module d’ordonnancement 21 doit attendre qu’un cœur 10 devienne disponible pour lui attribuer le décodage du nouveau mot de code. A titre d’exemple nullement limitatif, lorsque le taux de charge est inférieur ou égal à 50%, le nombre maximal d’itérations est fixé à dix. Lorsque le taux de charge est strictement supérieur à 50%, alors le nombre maximal d’itérations est fixé à huit. Rien n’empêcherait toutefois de fixer une autre valeur de seuil pour le taux de charge, ou bien d’autres valeurs du nombre maximal d’itérations en fonction du taux de charge par rapport au seuil. Il est avantageux d’avoir un nombre maximal d’itérations plus faible lorsque le taux de charge du décodeur 31 multicœur est important. En effet, quand le taux de charge du décodeur 31 est important, il convient de libérer rapidement les cœurs 10 pour pouvoir décoder de nouveaux mots de code. Le fait d’utiliser un nombre maximal d’itérations plus faible permet de limiter le temps de décodage d’un mot de code (tout en acceptant le risque éventuel d’avoir des erreurs dans le décodage). Dans des modes particuliers de réalisation, le nombre maximal d’itérations peut être défini aussi en fonction du taux de codage R utilisé pour le nouveau mot de code. A titre d’exemple nullement limitatif, lorsque le taux de charge est inférieur ou égal à 50%, le nombre maximal d’itérations est fixé à dix. Lorsque le taux de charge est strictement supérieur à 50% et que le taux de codage est 2/5, alors le nombre maximal d’itérations est fixé à huit. Lorsque le taux de charge est strictement supérieur à 50% et que le taux de codage est 8/9, alors le nombre maximal d’itérations est fixé à six. Là encore, dans des variantes, d’autres valeurs pourraient être envisagé pour le seuil de taux de charge, les taux de codage et/ou les valeurs du nombre maximal d’itérations. Il est avantageux d’avoir un nombre maximal d’itérations plus faible lorsque le taux de codage du décodeur 31 multicœur est plus important car un taux de codage plus important correspond en général à une convergence plus rapide du processus de décodage. Dans des modes particuliers de réalisation, le nombre maximal d’itérations peut aussi être défini aussi en fonction de la taille N du nouveau mot de code. Par exemple, plus la taille N du mot de code est élevée et plus le nombre maximal d’itérations peut prendre une valeur faible, car le processus de décodage a tendance à converger plus vite pour les tailles de mot de code élevées. Dans des modes particuliers de réalisation, le nombre maximal d’itérations peut aussi être défini en fonction d’un rapport signal sur bruit (SNR pour « Signal to Noise Ratio » en anglais) estimé pour le nouveau mot de code. Par exemple, plus la valeur estimée du SNR est élevée, et plus le nombre maximal d’itérations peut prendre une valeur faible. En effet, le processus de décodage a également tendance à converger plus vite pour les valeurs élevées de SNR. Le nombre maximal d’itérations à utiliser par un cœur 10 pour le décodage d’un nouveau mot de code peut être défini en fonction d’une combinaison de conditions dépendant du taux de charge du décodeur, du taux de codage R à utiliser pour le décodage du nouveau mot de code, de la taille N du nouveau mot de code, ou du niveau estimé de SNR pour le nouveau mot de code. Le décodeur 31-a multicœur décrit ci-avant en référence à la FIG. 20 comporte un unique groupe de quatre cœurs 10. Rien n’empêcherait toutefois, dans des variantes, de concevoir un décodeur multicœur comportant plusieurs groupes de plusieurs cœurs. Dans l’exemple illustré à la FIG. 21 , le décodeur 31-b multicœur comporte deux groupes de quatre cœurs. Chaque groupe comporte une mémoire 20 partagée entre les quatre cœurs 10 du groupe. Rien n’empêcherait non plus d’avoir un nombre différent de cœurs 10 au sein de chaque groupe (par exemple seulement deux cœurs, ou bien huit cœurs), ou bien d’avoir des nombres différents de cœurs pour les différents groupes. Lorsqu’il y a plusieurs groupes de cœurs, le seuil de charge à un instant donné peut être calculé en fonction du nombre total de cœurs simultanément occupés à décoder un mot de code LDPC audit instant, en prenant en compte tous les groupes. Rien n’empêcherait toutefois, dans des variantes, de prendre en compte uniquement le taux de charge du groupe auquel appartient le cœur chargé du décodage du nouveau mot de code, ou bien de définir un taux de charge moyen par groupe. Les différentes méthodes possibles pour calculer le taux de charge et pour définir le nombre maximal d’itérations en fonction du taux de charge ne sont que des variantes de l’invention. Dans des modes particuliers de réalisation, le module d’ordonnancement 21 est configuré pour ordonnancer les différents cœurs 10 du décodeur 31 multicœur en favorisant, pour le décodage d’un nouveau mot de code, la sélection d’un cœur 10 pour lequel la dernière configuration utilisée par le cœur pour le décodage d’un mot de code précédent est la même que la configuration devant être utilisée pour le décodage du nouveau mot de code. De telles dispositions permettent d’éviter d’avoir à recharger une nouvelle configuration dans la mémoire 13 locale du cœur 10 pour le décodage du nouveau mot de code. Cela permet d’optimiser le temps de décodage et de limiter les accès concurrents à la mémoire 20 partagée. Dans ce but, une mémoire tampon peut être utilisée par le module d’ordonnancement 21 pour mémoriser la configuration dernièrement utilisée par chacun des cœurs 10 du décodeur 31 multicœur. Lorsqu’un nouveau mot de code doit être décodé selon une configuration particulière, le module d’ordonnancement 21 est configuré pour identifier, parmi les différents cœurs, si un cœur est disponible pour lequel la configuration dernièrement utilisée est la même que la configuration devant être utilisé pour le décodage du nouveau mot de code. Si un tel cœur est identifié, alors il est préférentiellement sélectionné pour le décodage du nouveau mot de code. Tel qu’illustré par la FIG. 22 , le concept d’architecture multicœur du décodeur LDPC peut également être généralisé avec plusieurs niveaux de hiérarchie. La FIG. 22 représente schématiquement un troisième exemple 31-c de réalisation d’un décodeur LDPC multicœur avec une hiérarchie à deux niveaux. Le décodeur 31-c multicœur comprend quatre groupes de premier niveau comportant chacun quatre cœurs 10 LDPC, une mémoire 20 partagée de premier niveau (« Mem. niv. 1 ») et un module 21 d’ordonnancement de premier niveau (« Ord. niv. 1 ») configuré pour ordonnancer les cœurs 10 du groupe de premier niveau. Le décodeur 31-c multicœur comprend également un groupe de deuxième niveau comprenant les quatre groupes de premier niveau, une mémoire 22 partagée de deuxième niveau (« Mem. niv. 2 ») et un module d’ordonnancement 23 de deuxième niveau (« Ord. niv. 2 ») configuré pour ordonnancer les modules d’ordonnancement 21 de premier niveau. Le concept illustré à la FIG. 22 pourrait être étendu à un nombre de niveaux de hiérarchie supérieur à deux. La mémoire 22 partagée de plus haut niveau est une mémoire non volatile qui mémorise l’ensemble de N C configurations prédéfinies. Différents groupes de configurations peuvent être dynamiquement chargés dans les mémoires 20 partagées de niveau inférieur. La taille d’une mémoire partagée peut être d’autant plus importante que son niveau de hiérarchie est élevé. Résultats de tests : Des tests ont été réalisés pour comparer un décodeur 5G conventionnel réalisé en FPGA (Xilinx) avec un décodeur LDPC selon l'invention, pour le décodage d'un mot de code selon certaines configurations particulières. Il a été observé que les valeurs de débit codé sont nettement plus homogènes avec le décodeur selon l'invention pour les différentes configurations testées (le débit codé peut être mesuré en MLLR/s, un MLLR/s correspond à un débit de 10 6 valeurs de LLR par seconde). Le ratio entre le débit codé le plus élevé et le débit codé le plus faible est de l'ordre de cinq pour le décodeur 5G conventionnel, contre un ratio de l'ordre de 2.5 avec un décodeur LDPC selon l'invention. Pour les taux de codage élevés (par exemple pour une configuration {K=5632, R=8/9, Z=256}), il a été observé que les besoins en termes de mémoire sont environ 1.25 fois plus élevés et les besoins en logique sont environ 2.0 fois plus élevés pour le décodeur 5G conventionnel par rapport au décodeur LDPC selon l'invention. Les besoins en mémoire peuvent être mesurés en BRAM par MLLR/s ; un BRAM correspond à un bloc RAM de 36 kbits. Les besoins en logique peuvent être mesurés en LUT6 par MLLR/s ; un LUT6 est une ressource FPGA correspondant à une table de recherche (« Look-Up Table ») à six entrées. Pour les taux de codage faibles (par exemple pour une configuration {K=5632, R=2/5, Z=256}), il a été observé que les besoins en termes de mémoire sont environ 2.0 fois plus élevés et les besoins en logique sont environ 3.6 fois plus élevés pour le décodeur 5G conventionnel par rapport au décodeur LDPC selon l'invention. Il convient de noter que les résultats ci-dessus ont été obtenus pour un taux de parallélisation optimal pour le décodeur 5G conventionnel. Avec une distribution plus hétérogène des configurations testées, le décodeur selon l’invention aurait surclassé le décodeur conventionnel de façon encore plus significative. La description ci-avant illustre clairement que, par ses différentes caractéristiques et leurs avantages, la présente invention atteint les objectifs fixés. En particulier, le décodeur selon l’invention est compatible avec la 5G tout en restant particulièrement bien adapté et très performant pour des communications satellitaires. Il est à noter que les modes de réalisation considérés ci-dessus ont été décrits à titre d’exemples non limitatifs, et que d’autres variantes sont par conséquent envisageables. En particulier, la valeur du nombre N C ou les exemples spécifiques de configurations LDPC retenues ne sont en rien limitatifs. D’autres configurations pourraient être sélectionnées pour former un sous-groupe strict de l’ensemble des configurations LDPC 5G définies par la spécification 3GPP TS 38.212. De façon similaire, différentes valeurs peuvent être envisagées pour le nombre de cœurs ou le nombre de groupes de cœurs formant le décodeur LDPC. Aussi, différentes méthodes peuvent être envisagées pour définir le nombre maximal d’itérations en fonction d’un taux de charge du décodeur. Les différents choix possibles pour ces valeurs ou ces méthodes ne constituent que des variantes de l’invention. L’invention a été décrite en considérant un décodeur LDPC destiné à être embarqué dans un satellite en orbite autour de la Terre. Rien n’exclut cependant, suivant d’autres exemples, de considérer d’autres domaines spécifiques dans lequel il pourrait être intéressant d’avoir un décodeur LDPC compatible avec la 5G sans nécessairement supporter toutes les configurations LDPC 5G. La présente demande porte d’une part sur une architecture multicœur pour un décodeur LDPC, et d’autre part sur le fait d’obtenir un décodeur LDPC compatible avec la 5G (c’est-à-dire compatible avec au moins certaines configurations LDPC 5G) qui reste adapté et performant pour des communications satellitaires. Ces deux aspects peuvent toutefois être appliqués indépendamment l’un de l’autre : l’architecture multicœur proposée est une invention à part entière, qu’elle soit utilisée ou non pour un décodeur LDPC compatible avec la 5G ; aussi, le fait d’obtenir un décodeur LDPC compatible avec au moins certaines configurations 5G tout en restant adapté pour des communications satellitaires est une invention à part entière, qu’elle soit combinée ou non avec l’architecture multicœur proposée. L’architecture multicœur proposée est toutefois particulièrement bien adaptée pour concevoir un décodeur LDPC compatible 5G adapté pour les communications satellitaires. Décodeur (30) pour le décodage de mots de code de contrôle de parité de faible densité, ou code LDPC, le décodeur (30) comportant au moins un cœur (10) et une mémoire (20) dans laquelle est mémorisé un nombre N C de configurations prédéfinies ; le cœur (10) étant adapté pour être dynamiquement configuré avec l’une quelconque des N C configurations prédéfinies mémorisées dans la mémoire (20) afin de décoder un mot de code LDPC en utilisant cette configuration ; le décodeur (30) étant caractérisé en ce que les N C configurations prédéfinies forment un sous-groupe, au sens strict, des configurations LDPC 5G définies dans le standard 3GPP TS 38.212 ; chaque configuration correspondant à un triplet de trois paramètres {K, R, Z}, et à une matrice de parité définie en fonction d’une partie au moins des paramètres K, R et Z ; le paramètre K correspondant à une taille de message encodé par le code LDPC, le paramètre Z correspondant à un facteur d’expansion de la matrice de parité, le paramètre R correspondant à un taux de codage du code LDPC ; l’ensemble des valeurs prises par le paramètre Z parmi les N C configurations prédéfinies comprenant au moins deux valeurs différentes. Décodeur (30) selon la revendication 1 dans lequel le nombre N C de configurations prédéfinies mémorisées dans la mémoire (20) est un entier compris entre 8 et 512, voire entre 8 et 256, voire même entre 8 et 128. Décodeur (30) selon l’une quelconque des revendications 1 à 2 dans lequel l’ensemble des valeurs prises par le paramètre Z parmi les N C configurations prédéfinies comprend N Z valeurs Z i , i étant un indice variant entre 0 et (N Z -1), N Z étant un entier compris entre 2 et 32, voire entre 4 et 16, les valeurs Z i étant toutes différentes et ordonnées par ordre croissant avec l’indice i, et pour i variant entre 1 et (N Z -1) le rapport est égal à une valeur entière. Décodeur (30) selon la revendication 3 dans lequel Z 0 est une puissance de deux. Décodeur (30) selon l’une quelconque des revendications 3 à 4 dans lequel : pour K > 3824, le nombre de configurations prédéfinies présentant un facteur d’expansion égal à Z i est une fonction décroissante avec la valeur de Z i ; et pour K ≤ 3824 et R ≤ 0,67, le nombre de configurations prédéfinies présentant un facteur d’expansion égal à Z i est une fonction décroissante avec la valeur de Z i . Décodeur (30) selon l’une quelconque des revendications 3 à 5 dans lequel un facteur de parallélisation Z P du décodeur (30) est égal à Z 0 , le facteur de parallélisation Z P correspondant à un nombre maximal d’unités fonctionnelles du cœur (10) pouvant être utilisées en parallèle pour exécuter des nœuds de contrôle de parité du cœur (10). Décodeur (30) selon la revendication 6 pour lequel les configurations prédéfinies ont été sélectionnées de telle sorte que, pour tout i variant entre 0 et (N Z -1), et pour chaque configuration prédéfinie présentant un facteur d’expansion égal à Z i , l’expression suivante est satisfaite : expression dans laquelle N conn correspond au nombre d’éléments non nuls dans la matrice de parité de la configuration considérée. Décodeur (30) selon la revendication 6 pour lequel les configurations prédéfinies ont été sélectionnées de telle sorte que, pour tout i variant entre 0 et (N Z -1), et pour chaque configuration prédéfinie présentant un facteur d’expansion égal à Z i , l’expression suivante est satisfaite : expression dans laquelle M correspond au nombre de lignes de la matrice de parité de la configuration considérée. Décodeur (30) selon l’une quelconque des revendications 6 à 8 pour lequel les configurations prédéfinies sont sélectionnées de telle sorte que, pour tout i variant entre 0 et (N Z -1), et pour chaque configuration prédéfinie présentant un facteur d’expansion égal à Z i , l’expression suivante est satisfaite : expression dans laquelle N correspond à la taille d’un mot de code pour la configuration considérée. Décodeur (30) selon l’une quelconque des revendications 1 à 9 dans lequel chacune des N C configurations comporte un ordonnancement optimisé de nœuds de contrôle de parité du cœur (10), ledit ordonnancement étant défini en fonction d’un degré de parité de chaque nœud de contrôle de parité pour la configuration considérée. Décodeur (30) selon la revendication 10 dans lequel, pour une valeur de Z donnée, pour chaque configuration avec cette valeur de Z, l’ordonnancement optimisé des nœuds de contrôle de parité comporte une partie commune à toutes les configurations avec cette valeur de Z, et une partie spécifique à la configuration considérée. Décodeur (31) selon l’une quelconque des revendications 1 à 11 dans lequel : ledit au moins un cœur (10) appartient à un groupe de plusieurs cœurs (10), ladite mémoire (20) est une mémoire (20) partagée entre les différents cœurs (10) du groupe, chaque cœur (10) du groupe est adapté pour être dynamiquement configuré avec l’une quelconque des N C configurations prédéfinies mémorisées dans la mémoire (20) partagée afin de décoder un mot de code LDPC en utilisant cette configuration, plusieurs cœurs (10) du groupe peuvent simultanément décoder chacun un mot de code LDPC différent. Décodeur (31) selon la revendication 12 dans lequel chaque cœur (10) comporte une mémoire (13) locale de configuration dont la taille est au moins égale à la plus grande des tailles des N C configurations prédéfinies mémorisées dans la mémoire (20) partagée, et la taille de la mémoire (13) locale est au moins quatre fois plus petite que la taille de la mémoire (20) partagée. Décodeur (31) selon l’une quelconque des revendications 12 à 13 dans lequel le décodage d’un mot de code LDPC par un cœur (10) comporte l’exécution d’une ou plusieurs itérations jusqu’à ce qu’un critère d’arrêt soit satisfait, ledit critère d’arrêt comportant une vérification si un nombre maximal d’itérations est atteint et, pour un nouveau mot de code à décoder par un cœur (10), le nombre maximal d’itérations est défini en fonction d’un taux de charge du décodeur (31). Décodeur (31) selon l’une quelconque des revendications 12 à 14 dans lequel le nombre maximal d’itérations est défini aussi en fonction de l’un au moins des éléments suivants : la taille du nouveau mot de code, un taux de codage utilisé pour le nouveau mot de code, et un rapport signal sur bruit estimé pour le nouveau mot de code. Décodeur (31) selon l’une quelconque des revendications 12 à 15 comportant un module d’ordonnancement (21) adapté pour ordonnancer les cœurs (10) en favorisant, pour le décodage d’un nouveau mot de code, la sélection d’un cœur (10) pour lequel la dernière configuration utilisée par le cœur (10) pour le décodage d’un mot de code précédent est la même que la configuration devant être utilisée pour le décodage du nouveau mot de code. Dispositif de réception comportant un décodeur (30, 31) selon l’une quelconque des revendications 1 à 16. Satellite comportant un dispositif de réception selon la revendication 17. Station passerelle d’un système de communication par satellite, comportant un module de contrôle de ressources radio configuré pour allouer des ressources à une station terrestre pour l’envoi d’un message de la station terrestre vers un satellite selon la revendication 18 en orbite autour de la Terre, ledit message comportant au moins un mot de code LDPC ; les ressources à allouer comportant une configuration LDPC à utiliser par la station terrestre pour former ledit au moins un mot de code ; la station passerelle étant caractérisée en ce que le module de contrôle de ressources radio est configuré pour sélectionner la configuration LDPC à utiliser parmi un ensemble de N C configurations prédéfinies formant un sous-groupe, au sens strict, des configurations LDPC 5G définies dans le standard 3GPP TS 38.212 ; chaque configuration correspondant à un triplet de trois paramètres {K, R, Z}, et à une matrice de parité définie en fonction d’une partie au moins des paramètres K, R et Z ; le paramètre K correspondant à une taille de message encodé par le code LDPC, le paramètre Z correspondant à un facteur d’expansion de la matrice de parité, le paramètre R correspondant à un taux de codage du code LDPC ; l’ensemble des valeurs prises par le paramètre Z parmi les N C configurations prédéfinies comprenant au moins deux valeurs différentes. Station passerelle selon la revendication 19 pour laquelle le nombre N C de configurations prédéfinies est un entier compris entre 8 et 512, voire entre 8 et 256, voire même entre 8 et 128. Station passerelle selon l’une quelconque des revendications 19 à 20 pour laquelle l’ensemble des valeurs prises par le paramètre Z parmi les N C configurations prédéfinies comprend N Z valeurs Z i , i étant un indice variant entre 0 et (N Z -1), N Z étant un entier compris entre 2 et 32, voire entre 4 et 16, les valeurs Z i étant toutes différentes et ordonnées par ordre croissant avec l’indice i, et pour i variant entre 1 et (N Z -1) le rapport est égal à une valeur entière. Station passerelle selon la revendication 21 pour laquelle : pour K > 3824, le nombre de configurations prédéfinies présentant un facteur d’expansion égal à Z i est une fonction décroissante avec la valeur de Z i ; et pour K ≤ 3824 et R ≤ 0,67, le nombre de configurations prédéfinies présentant un facteur d’expansion égal à Z i est une fonction décroissante avec la valeur de Z i .