Brevet FR2891419A1 — publié le 20070330

DÉCODAGE D'UNE PLURALITÉ DE FLUX D'INFORMATIONS CODÉES SELON UN ALGORITHME DE CODAGE PAR BLOCS La présente invention concerne le décodage d'informations codées selon un algorithme de codage par blocs. Elle trouve des applications, en particulier, dans les appareils de réception de signaux transmis par satellite, par exemple suivant la norme de télédiffusion numérique par satellite DVB-S2, laquelle prescrit l'utilisation d'un code à contrôle de parité à faible densité ou code LDPC ("Low Density Parity Check") pour la protection de la transmission des données descendantes. Les codes LDPC sont une classe de codes correcteurs d'erreurs inventée en 1960 par Robert Gallager du MIT ("Massachussets Institute of Technology"), qui constitue une alternative aux codes de Viterbi, ainsi qu'aux turbocodes plus récents. Les codes LDPC sont des codes par blocs qui permettent de s'approcher de la limite de Shannon. La première norme commerciale prescrivant l'utilisation d'un code LDPC est la norme DVB-S2, à savoir la norme de deuxième génération pour la télédiffusion numérique par satellite, de l'ETSI ("European Telecommunication Standardization Institute"). Le codage LDPC y est prévu en tant que codage de canal, pour protéger les informations descendantes contre le bruit affectant le canal de transmission. En référence à la figure 1, une chaîne de transmission générique contient, du côté de l'émetteur 10, une source de données 11 (notée DAT_SRC à la figure), suivie d'un encodeur de source 12 (noté SCR_ENC à la figure), d'un encodeur de canal 13 (noté CH_ENC à la figure), et enfin d'un modulateur 14 (noté MOD à la figure). L'encodeur de source 12 compresse les données (par exemple selon l'une des normes MPEG, H264, ...) de manière à réduire le débit des données à transmettre. L'encodeur de canal ajoute de la redondance (par exemple en utilisant un code LDPC) pour permettre, du côté du récepteur 30, de corriger les erreurs potentielles dues au bruit No introduit sur le canal de transmission 20. Le modulateur 14 adapte le signal au canal de transmission (par exemple, canal de transmission par satellite, canal de transmission radio, ...). Du côté du récepteur 30, un démodulateur 34 (noté DEMOD à la figure), suivi d'un décodeur de canal 33 (noté CH_DEC à la figure), et d'un décodeur de source 32 (noté SRC_DEC à la figure), effectuent les opérations duales de celles assurées par le modulateur 14, l'encodeur 13 et l'encodeur 12, respectivement. Les données démodulées et décodées sont ensuite restituées à l'entité utilisant les données 31 (notée DAT_U à la figure). Lorsque le codage de canal utilise un algorithme de codage par blocs, comme c'est le cas des codes LDPC, le décodeur de canal comprend une mémoire d'entrée, ou mémoire de canal, pour mémoriser les informations à décoder. Dans les décodeurs connus, cette mémoire peut comprendre un premier élément de mémorisation à accès unique adapté pour stocker un bloc de bits correspondant à un mot de code préalablement reçu et qui est en cours de décodage, et un second élément de mémorisation à accès unique adapté pour stocker un autre bloc de bits correspondant à un mot de code en cours de réception. Les processus de réception et de décodage peuvent ainsi être simultanés. Pour que la mémoire d'entrée du décodeur ne soit pas saturée, il faut que le temps de décodage d'un bloc soit inférieur au temps de réception d'un bloc. Pour avoir un débit de traitement le plus grand possible, il faut que le temps de réception d'un bloc soit le plus petit possible. Ainsi, en règle générale, le temps de décodage d'un bloc est proche du temps de réception d'un bloc, tout en étant inférieur à ce temps de réception. La présente invention vise en particulier les applications aux récepteurs de télévision numérique par satellite qui prévoient la démodulation et le décodage simultanés d'au moins deux flux d'informations différents. Dans les systèmes de ce type, par exemple, un premier flux d'informations peut correspondre à un programme regardé par un utilisateur, alors qu'un second flux d'informations peut correspondre à un programme enregistré en même temps sur disque dur ou similaire. D'autres applications peuvent bien entendu donner lieu à la démodulation et au décodage simultanés d'au moins deux flux différents d'informations codées selon un algorithme de codage par blocs, et sont donc également concernées par la présente invention. Bien que les algorithmes de codage par blocs soient utilisés en général pour le codage de canal, l'invention n'est pas limitée à cette utilisation, et s'applique en fait à tout type de codage par blocs. Dans les récepteurs du type précité, on utilise actuellement deux circuits frontaux ("frontend chip"), assurant la démodulation et le décodage de chacun des deux flux, respectivement. Cette solution implique un coût élevé, correspondant notamment au coût propre des deux circuits et au coût de leur intégration dans le système. C'est pourquoi l'invention a pour objet de permettre le décodage d'au 5 moins deux flux d'informations codées selon un algorithme de codage par blocs, tel qu'un code LDPC, en utilisant un unique décodeur. L'invention propose à cet effet, selon un premier aspect, un décodeur par blocs comprenant: - une première entrée et au moins une seconde entrée pour recevoir, respectivement, un premier flux d'informations à décoder et un second flux d'informations à décoder distinct dudit premier flux d'informations; - une mémoire d'entrée avec des éléments de mémorisation adaptés pour mémoriser des blocs d'informations du premier flux d'informations et des blocs d'informations du second flux d'informations; - une unité de décodage par blocs configurée pour traiter, à partir de la mémoire d'entrée, les blocs d'informations des premier et second flux d'informations; et, - une unité de commande pour multiplexer les blocs d'informations du premier flux d'informations et les blocs d'informations du second flux d'informations en entrée de l'unité de décodage par blocs, via leur enregistrement et leur lecture dans les éléments de mémorisation de la mémoire d'entrée. L'invention utilise la possibilité de concevoir une unité de décodage LDPC au moins deux fois plus rapide qu'il n'est exigé par l'application finale. En effet, on sait aujourd'hui concevoir des décodeurs LDPC se conformant à la norme et pouvant traiter des données avec un débit d'entrée de plusieurs centaines de mégabits/seconde (Mbps). On peut à cet égard se référer à l'article "A 135 Mbps DVB-S2 Compliant Codec based on 64800-bit LDPC and BHC Codes", P. Urard et al., Proc. IEEE ISSCC 2005, pp. 446-447, Février 2005, San Francisco, CA. Grâce à l'invention, un unique système peut intégrer deux démodulateurs et un seul décodeur LDPC, pour permettre la démodulation et le décodage de deux flux d'informations distincts. Un deuxième aspect de l'invention se rapporte à un système comprenant: - un premier démodulateur pour générer un premier flux d'informations à décoder, et un second démodulateur pour générer un second flux d'informations à décoder; et, - un décodeur par blocs selon le premier aspect pour décoder les informations des premier et second flux d'informations. Un tel système peut être réalisé sous la forme d'un système sur une puce ( System-on-Chip en anglais, ou SoC), c'est-à-dire être intégré dans un seul boîtier de circuit intégré. L'augmentation de la surface de silicium occupée par un circuit intégré ayant deux démodulateurs et un décodeur LDPC par rapport à un circuit intégré ayant un démodulateur et un décodeur LDPC est faible, pour les deux raisons suivantes. Premièrement, la surface de silicium occupée par un démodulateur est 5 à 15 fois plus petite que celle occupée par un décodeur LDPC. Et, deuxièmement, l'augmentation de la surface de silicium occupée par un décodeur LDPC deux fois plus rapide qu'un décodeur LDPC standard n'est pas excessive, étant donné que la plus grande partie de la surface de silicium occupée par le décodeur LDPC correspond à des éléments de mémorisation dont la capacité ne dépend pas de la vitesse de traitement pour un algorithme de décodage donné. Un troisième aspect de l'invention se rapporte à un récepteur de transmission par satellite comprenant un système selon le deuxième aspect. Un quatrième aspect de l'invention concerne enfin un procédé de 25 décodage par blocs comprenant: - la réception d'un premier flux d'informations à décoder et d'au moins un second flux d'informations à décoder distinct dudit premier flux; - la mémorisation dans des éléments de mémorisation d'une mémoire d'entrée d'un décodeur par blocs, d'au moins un bloc d'informations du premier flux d'informations et d'au moins un bloc d'informations du second flux d'informations; et, - le décodage par blocs, par le décodeur par blocs à partir de la mémoire d'entrée, des blocs d'informations des premier et second flux d'informations; et, - le multiplexage des blocs d'informations du premier flux et des blocs d'informations du second flux en entrée de l'unité de décodage par blocs, via leur enregistrement et leur lecture dans les éléments de mémorisation de la mémoire d'entrée. D'autres caractéristiques et avantages de l'invention apparaîtront encore à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit être lue en regard des dessins annexés sur lesquels: - la figure 1, déjà décrite, est un schéma illustrant une chaîne de transmission de données générique; - la figure 2 donne un exemple de matrice de contrôle de parité et illustre son application à une trame LDPC; - la figure 3 illustre les calculs de mise à jour des noeuds de parité et des noeuds de bits effectués à l'aide de la matrice de contrôle de parité de la figure 2; - la figure 4 est un schéma illustrant la mise en commun d'un décodeur dans un système conforme à des modes de réalisation de la présente invention, pour le traitement de deux flux de données à décoder; - la figure 5 est un schéma de l'architecture d'un décodeur LDPC selon des modes de réalisation de la présente invention; la figure 6 est un diagramme d'étapes illustrant un premier exemple d'algorithme de gestion de l'écriture dans les registres tampons de la mémoire d'entrée d'un décodeur LDPC selon des modes de réalisation de la présente invention; - la figure 7 est un diagramme d'étapes illustrant un exemple d'algorithme de gestion de la lecture dans les registres tampons de la mémoire d'entrée d'un décodeur selon des modes de réalisation, dans lesquels l'algorithme d'écriture est conforme au diagramme d'étapes de la figure 6 ou aux diagrammes d'étapes des figures 8 et 9; - les figures 8 et 9 sont des diagrammes d'étapes illustrant un second exemple d'algorithme de gestion de l'écriture dans les registres tampons de la mémoire d'entrée d'un décodeur selon d'autres modes de réalisation de la présente invention; et, - la figure 10 est un schéma illustrant le fonctionnement d'un dispositif selon un mode de réalisation de la présente invention. Des modes de réalisation de l'invention sont donnés ci-après dans le cas d'informations codées selon un code LDPC. Les codes LDPC sont des codes par blocs. Du côté de l'émetteur, l'encodeur LDPC traite des blocs de K bits d'information, et délivre en sortie des mots de code de N bits, aussi appelés trames LDPC, avec N>K. Dit autrement, il ajoute N-K bits de redondance qui permettent, côté récepteur, de corriger les erreurs de transmission. Ces N-K bits sont appelés bits de parité. Le taux de codage est défini comme le rapport r=K/N. Plus r est petit, plus la redondance est élevée, et donc plus la protection contre le bruit du canal de transmission est élevée. Les N-K bits ajoutés à chaque bloc de K bits d'information sont calculés grâce à une matrice H, appelée matrice de contrôle de parité. Cette matrice H a N-K lignes et N colonnes. Elle contient des "0" et des "1", ces derniers en faible proportion, et c'est pourquoi les codes basés sur une telle matrice de parité sont appelés codes à contrôle de parité à faible densité. En référence à la figure 2, une trame LDPC de N bits, dont les K bits de poids faibles correspondent aux bits d'information et dont les N-K bits de poids fort correspondent aux bits de parité, est le mot de code C délivré par un encodeur LDPC qui satisfait la relation: HxCt =0 On appelle degré de noeuds de parité ("check nodes" en anglais) d'une ligne de la matrice H le nombre de "1" de la ligne, et degré de noeuds de bits ("bit nodes" en anglais) d'une colonne de la matrice H le nombre de "1" de la colonne. Il existe deux types de code LDPC, à savoir les codes réguliers et les codes irréguliers. La matrice H d'un code régulier a un nombre de "1" constant par ligne et par colonne, c'est-à-dire que les degrés de noeuds de parité et les degrés de noeuds de bits sont constants. A l'inverse, la matrice H d'un code irrégulier n'a pas de degrés de noeuds de parité et/ou de degrés de noeuds de bits constants, et a donc un caractère plus aléatoire. C'est pour des codes irréguliers qu'on obtient les meilleures performances, mais le décodage peut alors être plus difficile. La norme DVB-S2 préconise l'utilisation d'une matrice H qui a des degrés de noeuds de parité constants, entre 4 et 30 (si bien qu'on parle du degré de noeuds de parité de la matrice, par raccourci), et des degrés de noeuds de bits pouvant prendre trois valeurs, entre 2 et 13. Du côté du récepteur, le décodeur LDPC effectue la correction des bits erronés en utilisant les relations entre les bits des trames LDPC reçues à travers le canal de transmission, correspondant à un mot C'. Ces relations sont données par la matrice H de contrôle de parité, laquelle est évidemment connue du décodeur. Plus particulièrement, le décodeur LDPC traite des rapports de vraisemblance logarithmique ou LLRs (de l'anglais "Log-Likelihood Ratio"). Du côté du récepteur, on a un LLR pour chacun des N bits d'une trame LDPC qui a été émise côté émetteur. Pour un bit d émis auquel correspond un signal x reçu par le décodeur LDPC après l'ajout d'un bruit au niveau du canal de transmission, le rapport LLR du bit d par rapport au signal x est défini par: LLR(x) = LLR(d / x) = ln P(d = 0 / x) P(d =1/x) où P(d = 0/x) est la probabilité que le bit d émis soit égal à 0 en fonction de la valeur x reçue, et P(d =1/x) est la probabilité que le bit d émis soit égal à 1 en fonction de la valeur x reçue. Chaque LLR est codé sur un nombre m de bits. Le décodeur LDPC utilise des métriques internes, en nombre égal au nombre de "1" dans la matrice H. Ces métriques sont codées chacune sur un nombre t de bits. Le décodeur les met à jour selon un algorithme itératif. En référence à la figure 3, chaque itération comprend des étapes de mise à jour effectuées par lignes, consistant à déterminer pour chaque ligne des premières nouvelles valeurs des métriques internes de la ligne en fonction des autres métriques internes de la ligne (mise à jour des noeuds de parité "check node update" en anglais), puis des étapes de mise à jour effectuées par colonnes, consistant à déterminer pour chaque colonne des secondes nouvelles valeurs des métriques internes de la colonne en fonction des autres métriques internes de la colonne et du LLR correspondant à cette colonne (mise à jour des noeuds de bits "bit-node update" en anglais). Pour décoder une trame LDPC reçue, afin de récupérer un bloc de N informations émises, le décodeur effectue plusieurs itérations. Les bits décodés, appelés bits de décision ferme ("hard decision" en anglais), sont ensuite obtenus en additionnant les métriques internes par colonnes avec les LLRs du mot C' reçu, et en prenant le signe du résultat. En référence à la figure 4, un système 50 selon des modes de réalisation de l'invention comprend deux démodulateurs 54a et 54b, et un décodeur 52, par exemple un décodeur de canal. S'agissant par exemple d'un système destiné à la réception de signaux transmis selon la norme DVB-S2, les démodulateurs 54a,54b sont par exemple des démodulateurs 8-PSK, et le décodeur 52 est par exemple un décodeur LDPC. Néanmoins, l'homme du métier appréciera que l'invention s'applique à tout type de décodeur par blocs. Le démodulateur 54a génère un premier flux S1 d'informations démodulées à décoder. Le démodulateur 54b génère un second flux S2 d'informations démodulées à décoder. Ces informations sont organisées en blocs par rapport aux trames LDPC émises côté émetteur. Le décodeur 52 peut assurer une fonction de multiplexage, ayant une première entrée pour recevoir le flux S1 et une seconde entrée pour recevoir le flux S2. Par exemple, le décodeur peut être adapté pour traiter, en alternance, un bloc d'informations du flux S1 correspondant à un mot de code à décoder, puis un bloc d'informations du flux S2 correspondant à un autre mot de code à décoder. D'autres formes de multiplexage temporel sont bien entendu possibles. En référence à la figure 5, un exemple d'architecture du décodeur LDPC 52 comprend, selon des modes de réalisation, une mémoire d'entrée ou mémoire de canal 41 (notée CH_MEM à la figure), pouvant stocker des blocs d'informations à décoder correspondant à quatre trames LDPC émises côté émetteur. Ces informations correspondent en fait à un nombre 4 x N de LLRs. Plus particulièrement, la mémoire 41 comprend au moins quatre éléments de mémorisation à accès unique 41_i, avec i prenant les valeurs entières entre 1 et 4, au lieu de deux tels éléments de mémorisation pour la mémoire d'entrée d'un décodeur selon l'art antérieur. Chacun de ces éléments de mémorisation est adapté pour stocker un bloc d'informations à décoder, un tel bloc désignant ici l'unité d'information traitée par l'algorithme de décodage. Dit autrement, chaque élément de mémorisation 41_i est adapté pour stocker un bloc de N x m bits correspondant aux N LLRs associés à un mot préalablement reçu et qui est en cours de décodage, ou un bloc de N x m bits correspondant aux N LLRs associés à un mot de code en cours de réception. Par exemple, les éléments de mémorisation 41_i sont des mémoires RAM à accès unique ("single port RAM", ou SPRAM), formant chacune un registre tampon, ou tampon ("buffer" en anglais). Le multiplexage des blocs d'informations du flux S1 et les blocs d'informations du flux S2 est réalisé, sous la commande d'une unité de commande 46, via leur enregistrement et leur lecture dans les éléments de mémorisation 41-i de la mémorisation 41. Dans un mode de réalisation (ci-après le premier mode de réalisation) dans lequel le débit maximum de chacun des flux S1 et S2 est toujours inférieur à M/2, où M désigne le débit d'entrée maximum du décodeur 52, la mémoire 41 comprend une paire d'éléments de mémorisation (par exemple les éléments 41_1 et 41_2) qui est utilisée pour stocker les informations du flux S1, et une autre paire d'éléments de mémorisation (par exemple les éléments 41_3 et 41_4) qui est utilisée pour stocker les informations à décoder du flux S2. Dit autrement, dans ce premier mode de réalisation, les informations de chacun des flux S1 et S2 transitent uniquement par les éléments de mémorisation d'une des paires d'éléments 41_1, 41_2 et 41_3, 41_4, respectivement. Dans un autre mode de réalisation (ci-après le second mode de réalisation) dans lequel le débit maximum respectif de chacun des flux S1 et S2 peut être supérieur à M/2 mais dont la somme est toujours inférieure à M, les registres 41_i où i prend les valeurs entières 1 à 4, sont utilisés par ordre de priorité pour stocker les informations des flux S1 et S2. Dit autrement, dans ce mode de réalisation, les informations à décoder des flux S1 et S2 peuvent transiter à travers n'importe lequel des quatre éléments de mémorisation 41_i. Par rapport au premier mode de réalisation, ce second mode de réalisation permet de décoder des flux d'informations ayant un débit plus important, tout en utilisant le même nombre d'éléments de mémorisation. Néanmoins, la gestion des éléments de mémorisation est plus complexe ainsi qu'il va maintenant être exposé. Des exemples d'algorithmes de gestion des éléments de mémorisation, tant en écriture qu'en lecture, seront présentés plus loin. Ces algorithmes sont mis en oeuvre au niveau de l'unité de commande 46. Celle-ci est ici représentée sous la forme d'une entité fonctionnelle séparée, mais elle peut être réalisée sous forme matérielle et/ou logicielle en tant que partie d'un autre élément du décodeur, par exemple de la mémoire 41 ellemême, ou d'une unité de décodage qui va maintenant être décrite. Afin d'accélérer les calculs liés au décodage, l'unité de décodage comprend ainsi un banc 42 de P processeurs, comprenant un nombre P de processeurs en parallèle (notés Proc1 à ProcP à la figure), qui effectuent en parallèle les calculs des noeuds de parité et des noeuds de bits. Le nombre P est appelé indice de parallélisme. Le banc de processeurs 42 peut accéder en lecture à la mémoire d'entrée 41 via un bus de m x P fils, sous la commande de l'unité 46. Au cours de l'exécution du processus itératif, les processeurs délivrent des valeurs mises à jour de métriques internes, codées chacune sur t bits. Les métriques internes sont stockées dans une mémoire de métriques 43 (notée MET MEM à la figure), dont la capacité est égale à t fois le nombre de métriques (c'est-à-dire t fois le nombre de "1" dans la matrice H). Les métriques internes stockées dans la mémoire 43 sont délivrées au banc de processeurs 42 par l'intermédiaire d'un mélangeur à P voies, tel qu'un dispositif de décalage en anneau 44 ("barrel shifter" en anglais, noté BS à la figure) dans le cas de la norme DVB-S2. La mémoire 43 est accessible en écriture et en lecture via des bus respectifs de t x P fils. Après la dernière itération, le banc de processeurs 42 délivre aussi des bits de décision ferme, qui prennent la valeurs "1" ou "0" selon le signe de la somme sur les colonnes de la matrice H et les LLRs du mot C' de rang correspondant. Ces bits de décision ferme sont stockés de façon temporaire dans une mémoire de sortie, ou mémoire de décision ferme 45 ("hard decision memory" en anglais, notée HD_MEM à la figure). La capacité de la mémoire 45 est égale à N, c'est-à-dire la taille d'une trame LDPC. La mémoire 45 est accessible en écriture par le banc de processeurs 42, via un bus de P fils. Les éléments 42, 43, 44 et 45 forment l'unité de décodage du décodeur 52, ici une unité de décodage LDPC, qui est adaptée pour traiter les informations mémorisées dans la mémoire d'entrée 41. Les blocs d'informations du flux S1 et ceux du flux S2 sont multiplexés en entrée sous la forme d'un flux S3 d'informations à décoder fourni en entrée de cette unité de décodage. Dans un mode de réalisation préféré, K=16200, N=64800, P=360, m=6 et t=6. Dans ce qui suit, le terme "positionner" ("set" en anglais) est utilisé en référence à une valeur logique (appelée drapeau), comme signifiant "mettre le drapeau à la valeur logique 1." De même, le terme "(ré) initialiser" ("reset" en anglais), est utilisé comme signifiant "(re) mettre le drapeau à la valeur logique 0. Dans le premier mode de réalisation envisagé ci-dessus, au moins deux drapeaux sont associés à chacun des éléments de mémorisation 41_i, avec i compris entre 1 et 4. Un premier drapeau est noté "used_i", où i peut prendre les valeurs entières 1 à 4 pour chacun des éléments de mémorisation 41_i, respectivement. Ce drapeau "used_i" est positionné (i. e., used_i=1) lorsque l'élément de mémorisation 41_i associé est utilisé en écriture c'est-à-dire, qu'il est en train d'être écrit avec des informations à décoder, ou lorsqu'il est totalement rempli d'informations à décoder qui n'ont pas encore toutes été décodées. Un second drapeau noté "full_i", où i peut prendre les valeurs entières 1 à 4 pour chacun des éléments 41_i, respectivement, est positionné lorsque l'élément de mémorisation associé est totalement rempli d'informations à décoder qui n'ont pas encore toutes été décodées. En référence à la figure 6, un algorithme d'écriture dans la mémoire d'entrée 41 selon le premier mode de réalisation est le suivant. Dans une étape 71, on surveille la réception d'informations à décoder correspondant à une nouvelle trame LDPC, qui peut appartenir soit au flux SI soit au flux S2. On identifie ensuite, dans une étape 72, si les informations reçues correspondent à une trame du flux S1 ou à une trame du flux S2. Cette identification peut se faire directement en testant sur lequel des deux bus une nouvelle trame est reçue en entrée de la mémoire 41. Considérons d'abord le cas où la nouvelle trame reçue appartient au flux S1 (étapes en partie gauche de la figure). Dans une étape 731, on détermine si l'élément de mémorisation 41_1 est disponible en écriture, c'est-à-dire s'il n'est pas en train d'être écrit avec des informations à décoder et s'il n'est pas déjà rempli d'informations à décoder qui n'ont pas encore toutes été décodées. A cet effet, on teste le drapeau used_1. S'il n'est pas positionné (cas où used_1=0) alors cela signifie que l'élément de mémorisation 41_1 est disponible en écriture. Par conséquent, on mémorise les bits des LLRs associés à la nouvelle trame reçue dans l'élément 41_1 et on positionne le drapeau used_1, dans une étape 741. Si au contraire le drapeau used_1 est positionné (cas où used_1=1) alors cela signifie que (i) l'élément 41_1 est rempli d'informations à décoder qui n'ont pas encore toutes été décodées, auquel cas le drapeau full_1 est en principe déjà positionné (full_l =1); ou que (ii) cet élément 41_1 était préalablement en train d'être écrit avec des informations à décoder associées à une trame qui est maintenant entièrement reçue, auquel cas, le drapeau full_1 n'était pas positionné mais doit le devenir. C'est pourquoi, dans une étape 742, on positionne le drapeau full_1. II en résulte, dans le cas (i) ci-dessus qu'on laisse le drapeau full_1 à 1, et que dans le cas (ii) ci-dessus, on le fait passer de 0 à 1. A la suite de l'étape 742, on détermine si l'élément de mémorisation 41_2 est disponible en écriture, c'est-à-dire s'il n'est pas en train d'être écrit avec des informations à décoder et s'il n'est pas déjà rempli d'informations à décoder qui n'ont pas encore toutes été décodées. A cet effet on teste le drapeau used_2. Si ce drapeau n'est pas positionné (cas où used_2=0), cela signifie que l'élément 41_2 est disponible en écriture. On enregistre alors les données correspondant à la nouvelle trame reçue dans l'élément 41_2 et on positionne le drapeau used_2, dans une étape 751. Sinon (cas où used_2=1) cela signifie qu'aucun des éléments de mémorisation 41_1 et 41_2 n'est disponible pour mémoriser les informations correspondant à la nouvelle trame reçue. Ceci, en principe, ne doit pas arriver si la contrainte de débit sur les flux S1 et S2 est respectée. C'est pourquoi il est prévu de générer, dans une étape 752, une erreur qui est ensuite traitée de façon appropriée, par exemple en sautant une trame. Dans une étape 732, on détermine par ailleurs si l'élément 41_2 est disponible. Pour cela, on teste le drapeau used_2. Si ce drapeau est positionné, cela signifie que l'élément 41_2 soit était en train d'êtreécrit avec des informations à décoder, soit qu'il est déjà rempli d'informations à décoder qui n'ont pas encore toutes été décodées. Comme dans le cas de l'étape 742 pour le registre 41_1, on positionne alors le drapeau full_2 dans une étape 743. Sinon, on ne fait rien. II résulte de l'algorithme ci-dessus que les données à décoder qui sont associées à une nouvelle trame reçue sont de préférence mémorisées dans l'élément de mémorisation 41_1. Ce n'est que si celui-ci n'est pas disponible que les données sont mémorisées dans l'élément 41_2. Comme il a été dit, le cas où aucun des deux éléments de mémorisation 41_1 et 41_2 n'est disponible ne doit en principe pas arriver si le débit de chacun des flux S1 et S2 est inférieur à M/2, où M est le débit maximum d'entrée du décodeur 52. En partie droite de la figure 6, on a illustré des étapes équivalentes à celles qui viennent d'être décrites ci-dessus, mais se rapportant au traitement des drapeaux used_i et full_i associés aux éléments de mémorisation 41_3 et 41_4 (c'est-à-dire avec i=3 et i=4), dans le cas où la nouvelle trame reçue appartient au flux S2. Ces étapes sont parfaitement symétriques de celles qui ont été décrites ci-dessus pour les trames du flux S1, et n'ont donc pas besoin d'être décrites à nouveau ici. En référence à la figure 7, on va maintenant décrire les étapes d'un algorithme de lecture dans la mémoire d'entrée 41 selon le premier mode de réalisation. Pour la mise en oeuvre de cet algorithme, le décodeur entretient un drapeau "decoder busy", qui est positionné lorsque le décodeur est occupé, c'est-à-dire en train de décoder des informations, et un drapeau "buffer proc", qui prend l'une des valeurs entières comprises entre 1 et 4 selon que ce sont les informations mémorisées dans l'élément 41_1, 41_2, 41_3 ou 41_4, respectivement, qui sont en train d'être décodées. Les drapeaux decoder_busy et buffer_proc sont initialisés à 0. Dans une étape 80, on distingue le cas où le décodeur est occupé de celui ou le décodeur est inoccupé. A cet effet, on peut tester le drapeau decoder_busy. Si le drapeau decoder_busy n'est pas positionné (decoder busy=0), c'est-àdire si le décodeur n'est pas occupé, on se demande si l'un des éléments de mémorisation 41_i est rempli d'informations à décoder qui n'ont pas toutes encore été décodées. A cet effet, on teste successivement les drapeaux full_i, avec i compris entre 1 et 4, dans des étapes 81 à 84, respectivement. En fait, chaque drapeau full_i avec i compris entre 2 et 4 n'est testé que si aucun des drapeaux full_i antérieurement testés n'est positionné. S'il est déterminé à l'une quelconque des étapes 81 à 84 que le drapeau full_i correspondant est positionné, on positionne le drapeau decoder_busy et on donne au drapeau buffer_proc la valeur i correspondante, comprise entre 1 et 4. Puis on repasse à l'étape 80, sans tester les autres drapeaux full_i. S'il est déterminé à l'étape 80 que le drapeau decoder_busy est positionné (decoder_busy=l), c'est-à-dire si le décodeur est occupé, on se demande dans une étape 85 si le processus itératif de décodage des informations a atteint son dernier cycle. Si c'est le cas, alors dans une étape 851 on réinitialise les drapeaux full_i et used_i, où i est l'entier correspondant à la valeur (non nulle par hypothèse) du drapeau buffer proc, puis on retourne à l'étape 80. Sinon, on retourne directement à l'étape 80. L'exemple d'algorithme décrit ci-dessus donne la priorité au décodage des informations mémorisées dans les éléments de mémorisation 41_1, 41 2, 41_3 et 41_4, dans cet ordre. Bien entendu, il est possible de faire autrement. L'Homme du métier saura alors adapter l'algorithme à la lumière de ce qui précède. En référence aux figures 8 et 9, on va maintenant décrire un algorithme d'écriture dans la mémoire d'entrée 41 selon le second mode de réalisation. Dans ce second mode de réalisation, le système entretient en outre un autre drapeau, noté "mod_i" où i prend l'une des valeurs entières comprises entre 1 et 4, associé à chacun des éléments de mémorisation 41_1, 41_2, 41_3 ou 41 4, respectivement. Ce drapeau mod_i prend la valeur 1 ou la valeur 2 selon que les données à décoder qui sont mémorisées dans l'élément de mémorisation 41_i associé appartiennent au flux S1 ou au flux S2, respectivement. En référence à la figure 8, qui illustre la gestion des drapeaux used_i et mod_i, l'algorithme comprend tout d'abord les étapes 71 et 72 qui ont déjà été décrites ci-dessus en référence à la figure 6 concernant le premier mode de réalisation. Ces étapes ne sont pas décrites à nouveau ici. Pour poursuivre, considérons d'abord le cas où la nouvelle trame reçue appartient au flux S1 (étapes en partie gauche de la figure). Dans des étapes 911, 921, 931 et 941, on détermine si l'élément de mémorisation 41_1, 41_2, 41_3 et 41_4, respectivement, est disponible en écriture, c'est-à-dire s'il n'est pas en train d'être écrit avec des informations à décoder et s'il n'est pas déjà rempli d'informations à décoder qui n'ont pas encore toutes été décodées. A cet effet, on teste le drapeau used_i, avec i prenant les valeurs entières 1 à 4, respectivement. En fait, chaque drapeau used_i avec i compris entre 2 et 4 n'est testé que si chacun des drapeaux used_i antérieurement testés est positionné. S'il est déterminé à l'une quelconque des étapes 911, 921, 931 ou 941 que le drapeau used_i correspondant n'est pas positionné (cas où used_i=0) alors cela signifie que l'élément de mémorisation associé est disponible en écriture. Par conséquent, on mémorise les bits des LLRs associés à la nouvelle trame reçue dans l'élément 41_i correspondant, et on positionne le drapeau used_i et on donne au drapeau mod_i la valeur 1 dans une étape 912, 922, 932 ou 942, respectivement. Puis on repasse à l'étape 71, sans tester les autres drapeaux used_i. S'il est déterminé à l'étape 941 que le dernier élément de mémorisation 41_4 n'est pas disponible (used_4=1), on repasse à l'étape 71 sans mémoriser les bits des LLRs associés à la nouvelle trame reçue. Dit autrement, on saute une trame, mais cela ne doit en principe pas arriver si les contraintes sur le débit maximum des flux S1 et S2 liées à ce mode de réalisation sont respectées, c'est-à-dire si la somme des débits de chacun des flux SI et S2 est inférieure à M, où M est le débit d'entrée maximum du décodeur 52. En variante, on peut exécuter une routine d'erreurs comme dans le cas du premier mode de réalisation (étape 752 à la figure 6). En partie droite de la figure 8, on a illustré des étapes équivalentes à celles qui viennent d'être décrites ci-dessus, mais se rapportant au traitement des drapeaux used_i et mod_i dans le cas où la nouvelle trame reçue appartient au flux S2. Ces étapes sont symétriques de celles qui ont été décrites ci-dessus pour les trames du flux S1, et n'ont donc pas besoin d'être décrites à nouveau ici. On notera seulement que, lorsqu'on mémorise les bits des LLRs associés à la nouvelle trame reçue dans l'élément 41_i et qu'on positionne le drapeau used_i, on donne ici au drapeau mod_i la valeur 2 (au lieu de 1 comme dans le cas où la nouvelle trame appartient au flux SI). En référence à la figure 9, qui illustre l'algorithme de gestion du drapeau full_i, on notera que cet algorithme comprend aussi, en premier lieu, les étapes 71 et 72 qui ont déjà été décrites ci-dessus en référence à la figure 6 concernant le premier mode de réalisation. Considérons tout d'abord, comme précédemment, le cas où la nouvelle trame reçue appartient au flux SI (étapes en partie gauche de la figure). Dans des étapes 111, 121, 131 et 141, on détermine si l'élément de mémorisation 41_1, 41_2, 41_3 et 41_4, respectivement, est disponible en écriture, c'est-à-dire s'il n'est pas en train d'être écrit avec des informations à décoder et s'il n'est pas déjà rempli d'informations à décoder qui n'ont pas encore toutes été décodées. A cet effet, on teste le drapeau used_i, avec i prenant les valeurs entières 1 à 4, dans des étapes 111, 121, 131, et 141, respectivement. S'il est déterminé, à l'une de ces étapes, que le drapeau used_i correspondant n'est pas positionné (cas où used_i=0), c'est-à-dire que l'élément de mémorisation 41_i associé n'est pas en cours d'utilisation, on retourne à l'étape 71. Sinon, c'est-à-dire si le drapeau est positionné (cas où used_i=1) cela veut dire que l'élément de mémorisation 41_i associé est en cours d'utilisation, étant en train d'être écrit avec des données à décoder (accès en écriture) ou contenant des informations en cours de décodage mais qui n'ont pas toutes encore été décodées (accès en lecture). Dans ce cas, on détermine dans une étape 112, 122, 132 ou 142, respectivement, si les informations mémorisées dans l'élément de mémorisation associé appartiennent au flux S1 ou au flux S2. Pour cela, on teste le drapeau mod_i, avec i prenant l'une des valeurs entières 1 à 4, respectivement. Si le drapeau mod_i a la valeur 1, cela signifie que les informations mémorisées dans l'élément de mémorisation associé appartiennent au flux S1. Dans ce cas, on positionne le drapeau full_i Dit autrement, le fait que le drapeau used_i soit positionné (used_i=1) et que le drapeau mod_i ait la valeur 1 (mod_i=1) signifie que (i) l'élément de mémorisation associé est rempli d'informations à décoder qui n'ont pas encore toutes été décodées, auquel cas le drapeau full_i est en principe déjà positionné (full_i=1); ou que (ii) cet élément de mémorisation était préalablement en train d'être écrit avec des informations à décoder associées à une trame qui est maintenant entièrement reçue, auquel cas, le drapeau full_i n'était pas positionné mais doit le devenir. C'est pourquoi, dans une étape 113, 123, 133 ou 143, respectivement, on positionne le drapeau full_i. II en résulte que, dans le cas (i) ci-dessus on laisse le drapeau full_i à 1, et que, dans le cas (ii) ci-dessus on le fait passer de 0 à 1. Après les étapes 113, 123, 133 ou 143, on retourne à l'étape 71. En partie droite de la figure 9, on a illustré des étapes équivalentes à celles qui viennent d'être décrites ci-dessus, mais se rapportant au traitement du drapeau full_i associé aux éléments de mémorisation 41 i, dans le cas où la nouvelle trame reçue appartient au flux S2. Ces étapes sont symétriques de celles qui ont été décrites ci-dessus pour les trames du flux S1, et n'ont donc pas besoin d'être décrites à nouveau ici. On notera seulement qu'on positionne le drapeau full_i lorsque le drapeau mod_i a la valeur 2 (au lieu de la valeur 1 comme dans le cas où la nouvelle trame reçue appartient au flux Si). Les étapes d'un algorithme de gestion des drapeaux used_i et full_i lors de la lecture des éléments de mémorisation sont, dans ce mode de réalisation, identiques au cas du premier mode de réalisation qui a été décrit plus haut en référence à la figure 7, et n'ont donc pas besoin d'être décrites à nouveau ici. On notera simplement que les drapeaux mod_i n'ont pas besoin d'être réinitialisés au moment des opérations de lecture. Leur valeur est mise à jour, en tant que de besoin, au moment où des informations à décoder correspondant à une nouvelle trame sont mémorisées dans les éléments de mémorisations associés. Le second mode de réalisation permet de décoder un flux d'informations ayant un débit plus élevé que M/2, mais évidemment inférieur à M. Cet avantage est obtenu au prix d'une gestion à peine plus complexe (3 drapeaux à gérer au lieu de deux pour chaque élément de mémorisation). A la figure 10, on a représenté des blocs d'informations à décoder dans le temps (chaque bloc étant représenté par un rectangle) appartenant aux flux S1 et S2, sur la première et la deuxième ligne, respectivement, l'axe horizontal représentant le temps. L'ordonnancement des blocs reçus et traités par le décodeur, correspondant au flux S3, est représenté à la troisième ligne. Dans chaque rectangle, on a noté la référence de l'élément de mémorisation (buffer) dans lequel le bloc d'informations est stocké. Ainsi qu'il est illustré par les flèches, un bloc d'informations doit être entièrement reçu et mémorisé avant que son décodage ne soit commencé. L'invention a été décrite ci-dessus dans des modes de réalisation préférés mais non limitatifs. En particulier, l'invention n'est pas limitée par le type de décodage par blocs. De plus, l'homme du métier appréciera que l'invention n'est pas limitée par le nombre de flux d'informations à décoder, et que des modes de réalisation peuvent prévoir le décodage de plus de deux flux distincts à l'aide du même décodeur. Tout dépend en réalité du débit du décodeur par rapport au débit de chacun des flux d'informations à décoder ou de la somme de chacun des flux d'informations à décoder. En outre, les algorithmes de gestion sont non limitatifs, en particulier un algorithme d'allocation circulaire des éléments de mémorisation à l'écriture peut être envisagé. REVENDICATIONS 1 Décodeur par blocs comprenant: - une première entrée et au moins une seconde entrée pour recevoir, respectivement, un premier flux d'informations à décoder (SI) et un second flux d'informations à décoder (S2) distinct dudit premier flux d'informations; - une mémoire d'entrée (41) avec des éléments de mémorisation (41_1, 41_2, 41_3, 41_4) adaptés pour mémoriser au moins un bloc d'informations du premier flux d'informations et au moins un bloc d'informations du second flux d'informations; et, - une unité de décodage par blocs (42-45) configurée pour traiter, à partir de la mémoire d'entrée, les blocs d'informations des premier et second flux d'informations à décoder, - une unité de commande (46) pour multiplexer les blocs d'informations du premier flux d'informations et les blocs d'informations du second flux d'informations en entrée de l'unité de décodage par blocs, via leur enregistrement et leur lecture dans les éléments de mémorisation de la mémoire d'entrée. 2. Décodeur par blocs selon la revendication 1, dans lequel: - le débit maximum de chacun des premier et second flux 20 d'informations est inférieur à M/2, où M désigne le débit d'entrée maximum de l'unité de décodage par blocs; et, - la mémoire d'entrée comprend au moins deux paires d'éléments de mémorisation adaptés chacun pour mémoriser un bloc d'informations à décoder, dont une première paire est utilisée pour stocker les informations à décoder du premier flux d'informations et dont une seconde paire est utilisée pour stocker les informations à décoder du second flux d'informations. 3. Décodeur par blocs selon la revendication 2, dans lequel au moins deux drapeaux sont associés à chacun des éléments de mémorisation, dont un premier drapeau (used_i) qui est positionné lorsque l'élément de mémorisation associé est en train d'être écrit avec des informations à décoder ou est rempli d'informations à décoder qui n'ont pas encore toutes été décodées, et un second drapeau (full_i) qui est positionné lorsque ledit élément de mémorisation associé est rempli d'informations à décoder qui n'ont pas encore toutes été décodées. 4. Décodeur par blocs selon la revendication 1, dans lequel: - la somme des débits maximums respectifs de chacun des premier et second flux d'informations est inférieure à M, où M désigne le débit d'entrée maximum de l'unité de décodage par blocs; et, - la mémoire d'entrée comprend au moins quatre éléments de mémorisation adaptés chacun pour mémoriser un bloc d'informations à décoder, et utilisés par ordre de priorité ou de façon circulaire pour mémoriser les informations à décoder du premier flux d'informations et les informations à décoder du second flux d'informations. 5. Décodeur par blocs selon la revendication 4, dans lequel au moins trois drapeaux sont associés à chacun des éléments de mémorisation, dont un premier drapeau (used_i) qui est positionné lorsque l'élément de mémorisation associé est en train d'être écrit avec des informations à décoder ou est rempli d'informations à décoder qui n'ont pas encore toutes été décodées, un deuxième drapeau (full_i) qui est positionné lorsque ledit élément de mémorisation associé est rempli d'informations à décoder qui n'ont pas encore toutes été décodées, et un troisième drapeau (mod_i) qui a une première valeur lorsque ledit élément de mémorisation associé contient des informations à décoder du premier flux d'informations et une seconde valeur lorsque ledit élément de mémorisation associé contient des informations à décoder du second flux d'informations. 6. Décodeur par blocs selon l'une quelconque des revendications 2 à 5, dans lequel les éléments de mémorisation sont des RAM à accès unique. 7. Décodeur par blocs selon l'une quelconque des revendications précédentes, dans lequel l'unité de décodage par blocs est adaptée pour effectuer un décodage LDPC. 8. Système comprenant: - un premier démodulateur (54a) pour générer un premier flux d'informations à décoder (Si), et un second démodulateur (54b) pour générer un second flux d'informations à décoder (S2); et, - un décodeur par blocs (52) selon l'une quelconque des revendications précédentes pour décoder les informations des premier et 15 second flux d'informations. 9. Récepteur de transmission par satellite (50) comprenant un système selon la revendication 8. 10. Procédé de décodage par blocs comprenant: - la réception d'un premier flux d'informations à décoder (SI) et d'au moins un second flux d'informations à décoder (S2) distinct dudit premier flux d'informations; - la mémorisation dans des éléments de mémorisation (41_1, 41_2, 41_3, 41_4) d'une mémoire d'entrée (41) d'un décodeur par blocs, d'au moins un bloc d'informations du premier flux d'informations et d'au moins un bloc d'informations du second flux d'informations; - le décodage par blocs, par le décodeur par blocs à partir de la mémoire d'entrée, des blocs d'informations des premier et second flux d'informations; et, - le multiplexage des blocs d'informations du premier flux d'informations et des blocs d'informations du second flux d'informations en entrée de l'unité de décodage par blocs, via leur enregistrement et leur lecture dans les éléments de mémorisation de la mémoire d'entrée. 11. Procédé de décodage par blocs selon la revendication 10, dans lequel: - le débit maximum de chacun des premier et second flux d'informations est inférieur à M/2, où M désigne le débit d'entrée maximum de l'unité de décodage par blocs; et, - la mémoire d'entrée comprend au moins deux paires d'éléments de mémorisation adaptés chacun pour mémoriser un bloc d'informations à décoder, dont une première paire est utilisée pour stocker les informations à décoder du premier flux d'informations et dont une seconde paire est utilisée pour stocker les informations à décoder du second flux d'informations. 12. Procédé de décodage par blocs selon la revendication 11, dans lequel au moins deux drapeaux sont associés à chacun des éléments de mémorisation, dont un premier drapeau (used_i) qui est positionné lorsque l'élément de mémorisation associé est en train d'être écrit avec des informations à décoder ou est rempli d'informations à décoder qui n'ont pas encore toutes été décodées, et un second drapeau (full_i) qui est positionné lorsque ledit élément de mémorisation associé est rempli d'informations à décoder qui n'ont pas encore toutes été décodées. 13. Procédé de décodage par blocs selon la revendication 10, dans lequel: - la somme des débits maximums respectifs de chacun des premier et second flux d'informations est inférieure à M, où M désigne le débit d'entrée maximum de l'unité de décodage par blocs; et, - la mémoire d'entrée comprend au moins quatre éléments de mémorisation adaptés chacun pour mémoriser un bloc d'informations à décoder, et utilisés par ordre de priorité ou de façon circulaire pour mémoriser les informations à décoder du premier flux d'informations et les informations à décoder du second flux d'informations. 14. Procédé de décodage par blocs selon la revendication 13, dans lequel au moins trois drapeaux sont associés à chacun des éléments de mémorisation, dont un premier drapeau (used_i) qui est positionné lorsque l'élément de mémorisation associé est en train d'être écrit avec des informations à décoder ou est rempli d'informations à décoder qui n'ont pas encore toutes été décodées, un deuxième drapeau (full_i) qui est positionné lorsque ledit élément de mémorisation associé est rempli d'informations à décoder qui n'ont pas encore toutes été décodées, et un troisième drapeau (mod_i) qui a une première valeur lorsque ledit élément de mémorisation associé contient des informations à décoder du premier flux d'informations et une seconde valeur lorsque ledit élément de mémorisation associé contient des informations à décoder du second flux d'informations. 15. Procédé de décodage par blocs selon l'une quelconque des revendications 11 à 14, dans lequel les éléments de mémorisation sont des 25 RAM à accès unique. 16. Procédé de décodage par blocs selon l'une quelconque des revendications 10 à 15, dans lequel le décodage par blocs est un décodage LDPC.