Brevet FR2890804A1 — publié le 20070316

TRAITEMENT DE BLOCS DANS UN DISPOSITIF DE DECODAGE PAR BLOCS La présente invention se rapporte au domaine du décodage par blocs. Le codage de canal ou codage correcteur d'erreur (FEC en anglais pour "Forward Error Correction") consiste à ajouter de la redondance à des données d'information à transmettre sur un canal bruité ou à stocker sur un support susceptible d'être abîmé, par exemple un CD-ROM. Lors de la réception ou de la lecture, les données redondantes peuvent permettre de retrouver les données d'information. 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 (DAT_SRC), suivie d'un encodeur de source 12 (SCR_ENC), d'un encodeur de canal 13 (CH ENC), et enfin d'un modulateur 14 (MOD). L'encodeur de source 12 compresse les données d'information (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 13 ajoute de la redondance pour permettre, du côté du récepteur 30, de corriger les erreurs potentielles dues au bruit N 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 (DEMOD), suivi d'un décodeur de canal 33 (CH_DEC) et d'un décodeur de source 32 (SRC_DEC), effectuent les opérations duales de celles assurées par le modulateur 14, l'encodeur de canal 13 et l'encodeur de source 12, respectivement. Les données démodulées et décodées sont ensuite restituées à l'entité qui utilise les données 31 (DAT_U). Parmi les codes correcteurs d'erreurs actuellement connus, les codes en blocs consistent à ajouter à chaque message de K bits d'information un nombre (N-K) déterminé de bits de redondance, de façon à former des mots de code de N bits. Comme algorithme d'encodage de canal par blocs, on peut citer à titre d'exemple le code BCH (pour "Bose-Chaudhuri-Hocquenghem"), le code de Hamming ou encore les codes LDPC (pour "Low Density Parity Check" en anglais). Les codes LDPC sont une classe de codes correcteurs d'erreurs inventée en 1960 par Robert Gallager, qui constitue une alternative aux codes de Viterbi, ainsi qu'aux turbocodes plus récents. Le premier standard commercial prescrivant l'utilisation d'un code LDPC est le standard DVBS2, à savoir le standard de deuxième génération pour la télévision numérique par satellite, de l'ETSI ("European Telecommunication Standardization Institute"). Un encodeur LDPC traite des messages de K bits d'information, et délivre en sortie des mots de code de N bits, 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é. Les N-K bits ajoutés à chaque message 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é. Par exemple, la matrice H peut contenir 48600 lignes et 64800 colonnes, c'est-à-dire que K=16200 et N=64800. En référence à la figure 2, un mot de code 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é, satisfait la relation: HxCt =0 Du côté du récepteur, le décodeur LDPC effectue la correction des bits erronés à partir des blocs reçus à travers le canal de transmission. Chaque bloc correspond à un mot de code émis sur le canal de transmission. A chaque bit émis correspond un rapport de vraisemblance logarithmique ou LLR (de l'anglais "Log-Likelihood Ratio"). Chaque LLR est codé sur un nombre m de bits, par exemple 6 bits. Un bloc comprend donc M*m bits, soit par exemple 64800*6 bits. (1) Pour un bit d émis auquel correspond un signal y 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 y est défini par: LLR(y) =LLR(d/y)=lnP(d=0/y) P(d=1/y) où P(d = 0/ y) est la probabilité que le bit d émis soit égal à 0 en fonction de la valeur y reçue, et P(d =1/ y) est la probabilité que le bit d émis soit égal à 1 en fonction de la valeur y reçue. Le décodeur LDPC utilise des métriques internes, en nombre égal au nombre de "1" dans la matrice H, et codées chacune sur un nombre t de bits. II met à jour ces métriques selon un algorithme itératif. Lors d'une étape d'initialisation, à chaque métrique interne e;k est affectée la valeur du LLR correspondant LLRk à la colonne de cette métrique interne. En référence à la figure 3, chaque itération comprend des étapes de 15 mise à jour effectuées par lignes, puis des étapes de mise à jour effectuées par colonnes. Chaque étape de mise à jour effectuée par ligne consiste à déterminer pour chaque métrique interne e3,k une première nouvelle valeur e3,kc1' en fonction des valeurs des autres métriques internes (e3,1, e3,2,..., e3, k+ 1,..., e3,N_1) de la même ligne. L'étape de mise à jour effectuée par ligne utilise la relation (1). Chaque étape de mise à jour effectuée par colonne consiste à déterminer pour chaque métrique interne, par exemple e3,k une seconde nouvelle valeur e3,k(2) en prenant en compte les premières nouvelles valeurs des métriques internes de la même colonne (e4,k(1") et du LLR correspondant LLRk à cette colonne. Pour décoder un bloc LDPC reçu, le décodeur effectue plusieurs itérations, par exemple une cinquantaine d'itérations. Chaque métrique interne converge vers une valeur donnée. Les bits décodés, appelés bits de décision ferme ("hard decision"), sont ensuite obtenus en additionnant les métriques internes par colonne avec les LLRs reçus. Pour chaque colonne, le LLR correspondant LLRk et les valeurs des métriques internes après par exemple 50 itérations (e3 k(10 ) e4,k(100)) sont sommés. Le signe de la somme permet de déterminer, lors d'une étape de décision, la valeur du bit décodé. Dans un tel procédé de décodage, les valeurs des LLRs interviennent lors de l'étape d'initialisation, lors de chaque itération et lors de l'étape de décision. En référence à la figure 4, l'architecture typique d'un décodeur LDPC selon l'art antérieur comprend une mémoire d'entrée ou mémoire de canal 41 (notée CH_MEM à la figure), pouvant mémoriser un nombre 2x N de LLRs. Plus particulièrement, la mémoire 41 comprend un premier élément de mémorisation 41a pour mémoriser les N LLRs du bloc préalablement reçu et qui est en cours de décodage, et un second élément de mémorisation 41b pour mémoriser les N LLRs d'un bloc en cours de réception. Les LLRs peuvent être fournis de manière sensiblement continue par un démodulateur (non représenté). Le temps de décodage d'un bloc est inférieur au temps séparant le début de fourniture de deux blocs, afin d'éviter une saturation de la mémoire d'entrée 41. Or, plus le temps séparant le début de fourniture de deux blocs est faible, plus le débit peut être élevé. Le temps de décodage d'un bloc est donc en général proche du temps séparant le début de fourniture de deux blocs, tout en étant inférieur à ce temps séparant le début de fourniture de deux blocs. Le décodeur comprend également des moyens de traitement. Afin d'accélérer les calculs liés au décodage, lesdits moyens de traitement comprennent un banc de P processeurs 42. Ces P processeurs (notés Proc1 à ProcP sur la figure 4), effectuent en parallèle les calculs de mise à jour par ligne et par colonne. Le nombre P est appelé indice de parallélisme. 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 mémorisées dans une mémoire de métriques 43 (notée MET_MEM sur la figure 4). Les métriques internes mémorisé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", 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 lignes. Après la dernière itération, les processeurs 42 délivrent aussi des bits de décision ferme, qui prennent la valeur "1" ou "0" selon le signe de la somme sur les colonnes de la matrice H et les LLRs correspondant. Ces bits de décision ferme sont mémorisés de façon temporaire dans une mémoire de sortie, ou mémoire de décision ferme 45 ("hard decision memory", notée HD MEM à la figure). La capacité de la mémoire 45 est égale à N, c'est-à-dire la taille en LLR d'un bloc LDPC. Il est courant que les blocs reçus par un dispositif de mémorisation soient susceptibles de prendre plusieurs tailles. Par exemple, les blocs reçus peuvent être des blocs longs de 64800 LLRs ou bien des blocs courts de 16200 LLRs. Les blocs longs occupent environ quatre fois plus d'espace que les blocs courts. Le temps de traitement nécessaire pour décoder un bloc long est environ quatre fois plus élevé que le temps nécessaire pour traiter un bloc court. La mémoire de canal doit donc être adaptée pour recevoir des blocs susceptibles d'avoir deux tailles différentes. La figure 6 montre un exemple de mémoire de canal selon l'art antérieur. La figure 5 montre un exemple de chronogrammes, l'un des chronogrammes représentant l'écriture des blocs reçus dans la mémoire de canal et l'autre chronogramme la lecture lors du décodage des blocs. Les deux figures seront commentées simultanément. Au temps TO, un premier bloc long LI est reçu et écrit dans un premier élément de mémorisation 61 d'un premier type. Les éléments de mémorisation de ce premier type ont une taille adaptée pour mémoriser un bloc long. Lorsque la phase d'écriture est terminée, le premier bloc long LI est traité à des fins de décodage, par exemple par un algorithme de décodage BCH ou LDPC. Dans cet exemple, ce premier bloc long LI est suivi d'un premier bloc court Si. Ce premier bloc court SI est mémorisé dans un premier élément de mémorisation 63 d'un second type. Les éléments de mémorisation de ce second type ont une taille adaptée pour mémoriser un bloc court. La capacité de mémorisation d'un élément de mémorisation du second type est donc environ quatre fois moindre que la capacité de mémorisation d'un premier élément de mémorisation du premier type. Si, au temps T2, un second bloc court S2 est reçu, il doit être mémorisé dans un second élément de mémorisation du second type 64. Au temps T2, le premier élément de mémorisation du second type 63 est encore plein. De plus, un second élément de mémorisation du premier type 62 doit rester libre pour le cas où ce second bloc court S2 serait suivi d'un bloc long. De la même façon, en supposant que le second bloc court S2 est suivi d'encore deux blocs court (S3, S4), ces deux blocs courts devront être mémorisés dans respectivement deux éléments de mémorisation du second type (65, 66). Le traitement du premier bloc long L prend fin sensiblement au temps T5. Si au temps T5, un cinquième bloc court S5 est reçu, il peut être mémorisé dans l'un ou l'autre des éléments de mémorisation du premier type (61, 62). Au moins quatre éléments de mémorisation du second type (63, 64, 65, 66) sont donc nécessaires pour permettre de recevoir des blocs 25 susceptibles d'avoir deux tailles différentes. De manière plus générale, si le rapport des tailles des blocs est de R, R éléments de mémorisation du second type seront nécessaires. De plus, les blocs peuvent être susceptibles de prendre plus de deux tailles différentes. Par exemple, les blocs reçus peuvent être des blocs longs de 64800 LLRs, des blocs courts de 16200 LLRs, ou des blocs très courts de 8100 LLRs. La mémoire de canal capable de recevoir ces blocs comprend: deux éléments de mémorisation d'un premier type ayant une taille adaptée pour mémoriser un bloc long, quatre éléments de mémorisation d'un second type ayant une taille adaptée pour mémoriser un bloc court, et huit éléments de mémorisation d'un troisième type ayant une taille adaptée pour mémoriser un bloc très court. Lorsqu'un banc de P processeurs est utilisé pour effectuer les calculs de décodage, et que chaque LLR est codé sur m bits, chaque élément de mémorisation (61, 62, 63, 64, 65, 66) est connecté à un multiplexeur 67 par P*m fils. Soit plus de 2000 fils par élément de mémorisation pour une valeur de P égale à 360 et une valeur de m égale à 6. Le routage de ces fils peut s'avérer délicat. La présente invention permet de simplifier le routage des fils des éléments de mémorisation tout en permettant à la mémoire de canal de recevoir des blocs susceptibles d'avoir plusieurs tailles. Selon un premier aspect, la présente invention a pour objet un dispositif de mémorisation de blocs de bits destinées à être décodés suivant un algorithme de décodage de canal par blocs, les blocs étant susceptibles d'appartenir à une catégorie donnée parmi une première catégorie et une seconde catégorie, la première catégorie correspondant à une première taille de bloc donnée, la seconde catégorie correspondant à au moins une seconde taille de bloc donnée inférieure à ladite première taille. Ledit dispositif de mémorisation comprend trois éléments de mémorisation ayant une taille adaptée à la mémorisation d'un bloc de la première catégorie chacun, et dont deux au moins sont structurés pour mémoriser soit un bloc de la première catégorie, soit un bloc de la seconde catégorie ou plusieurs blocs de la seconde catégorie simultanément. Ainsi, certains éléments de mémorisation permettent de mémoriser indifféremment un bloc de la première catégorie ou un ou plusieurs blocs de la seconde catégorie. Le dispositif de mémorisation selon cet aspect de l'invention comprend un nombre relativement faible d'éléments de mémorisation, permettant par là de simplifier le routage des fils reliés aux éléments de mémorisation. Les éléments de mémorisation peuvent fonctionner avec un multiplexeur plus simple que le multiplexeur de l'art antérieur, du fait du plus 5 faible nombre d'éléments de mémorisation à gérer. De plus, le dispositif de mémorisation selon le premier aspect de l'invention permet de réaliser des économies de surface et de consommation. Avantageusement, la première taille de bloc est au moins deux fois supérieure à la au moins une seconde taille de bloc. Lesdits au moins deux éléments de mémorisation peuvent être structurés pour mémoriser soit un bloc de la première catégorie, soit plusieurs blocs de la seconde catégorie simultanément. Ainsi, lorsqu'une pluralité de blocs courts sont reçus successivement, plusieurs blocs courts peuvent être mémorisés dans le même élément de mémorisation. Selon un second aspect, l'invention a pour objet un système de décodage de blocs de bits suivant un algorithme de décodage de canal en blocs comprenant un dispositif de mémorisation selon le premier aspect de l'invention. Le système de décodage comprend en outre un banc de processeurs pour traiter les blocs reçus, une boucle et une mémoire de décision pour mémoriser temporairement la valeur des bits décodés. La boucle comprend une mémoire pour mémoriser des données intermédiaires provenant du banc de processeurs, et un mélangeur pour préparer des données à traiter par le banc de processeurs à partir des données intermédiaires. Un tel dispositif de mémorisation permet de recevoir les blocs de LLRs et de les traiter suivant un algorithme de décodage itératif pour retrouver les valeurs des bits émis. Avantageusement, le système de décodage peut être réalisé sous la forme d'un système sur une puce ou SoC ("System on Chip" en anglais). La présente invention n'est bien entendu pas limitée par une telle implémentation. Selon un troisième aspect, la présente invention a pour objet un procédé de mémorisation de blocs de bits destinés à être décodées suivant un algorithme de décodage de canal en blocs, les blocs étant susceptibles d'appartenir à une catégorie parmi une première catégorie et une seconde catégorie, la première catégorie correspondant à une première taille des blocs donnée, la seconde catégorie correspondant à au moins une seconde taille de blocs donnée inférieure à ladite première taille. Trois éléments de mémorisation sont prévus, les éléments de mémorisation ayant chacun une taille adaptée à la mémorisation d'un bloc de la première catégorie. Au moins deux desdits éléments de mémorisation sont structurés pour mémoriser soit un bloc de la première catégorie, soit un bloc de la seconde catégorie ou plusieurs blocs de la seconde catégorie simultanément. Pour chaque nouveau bloc, un élément de mémorisation est choisi parmi lesdits trois éléments de mémorisation, le choix étant effectué en fonction de la taille du nouveau bloc. Ce procédé peut être mis en oeuvre à l'aide du dispositif de mémorisation selon un aspect de l'invention et présente donc au moins les mêmes avantages par rapport à l'art antérieur. En particulier, pour un nouveau bloc appartenant à la seconde catégorie, il est possible de choisir un élément de mémorisation parmi lesdits au moins deux éléments de mémorisation structurés pour mémoriser simultanément plusieurs blocs de la seconde catégorie. Le choix peut par exemple être effectué en fonction de la valeur d'un indice, ledit indice étant représentatif du remplissage desdits au moins deux éléments de mémorisation. La présente invention n'est absolument pas limitée par ledit indice: le choix peut être effectué en fonction des valeurs d'autres paramètres. D'autres particularités et avantages de la présente invention apparaîtront dans la description ci-après. La figure 1, déjà commentée, est un schéma d'un exemple d'une chaîne de transmission selon l'art antérieur. La figure 2, déjà commentée, montre un exemple de matrice de parité H et d'un mot de code C, dans un algorithme LDPC connu. La figure 3, déjà commentée, permet d'illustrer partiellement un procédé de décodage LDPC connu. La figure 4, déjà commentée, est un schéma d'un exemple de dispositif de décodage LDPC connu. La figure 5, déjà commentée, montre un exemple de chronogrammes selon l'art antérieur, l'un des chronogrammes représentant l'écriture des blocs reçus dans la mémoire de canal et l'autre chronogramme la lecture lors du décodage des blocs. La figure 6, déjà commentée, montre un exemple de mémoire de canal selon l'art antérieur. La figure 7 montre un exemple de mémoire de canal selon un mode de réalisation de l'invention. La figure 8 montre un exemple d'algorithme de gestion des éléments de mémorisation de la mémoire de canal, selon le mode de réalisation de la figure 7. La figure 9 montre un exemple de chronogrammes pour la gestion des éléments de mémorisation, selon le mode de réalisation de la figure 7. Les figures 7, 8 et 9 correspondent au même mode de réalisation de l'invention et seront commentées simultanément. Dans ce mode de réalisation, des données d'information encodées suivant un algorithme LDPC ont été émises sur un canal bruité. A un mot de code émis correspond un bloc reçu à travers le canal. A chaque bit du mot de code correspond un rapport de vraisemblance logarithmique ou LLR. Chaque LLR est codé sur un nombre m de bits, par exemple 6 bits. Un système sur une puce effectue la correction des bits erronés à partir de blocs reçus. Le décodage est effectué suivant un algorithme itératif de décodage LDPC. Dans le mode de réalisation considéré ici, les blocs reçus sont susceptibles de prendre deux tailles. Les blocs reçus sont susceptibles d'appartenir à une première catégorie ou à une seconde catégorie. La première catégorie correspond à une première taille de blocs donnée, par exemple 64800 LLRs. La seconde catégorie correspond ici à une seule seconde taille de blocs. La seconde taille de blocs est inférieure à la première taille de blocs. La seconde taille de blocs peut par exemple être de 16200 LLRs. On parlera de blocs longs pour désigner les blocs appartenant à la première catégorie et de blocs courts pour désigner les blocs appartenant à la seconde catégorie. Les blocs longs occupent environ quatre fois plus d'espace que les blocs courts. Le temps de traitement nécessaire pour décoder un bloc long est environ quatre fois plus élevé que le temps nécessaire pour traiter un bloc court. Un dispositif de mémorisation de tels blocs comprend une mémoire de canal représentée figure 7. La mémoire de canal comprend un multiplexeur 77 et trois éléments de mémorisation (71, 72, 73). Ces trois éléments de mémorisation ont une taille adaptée à la mémorisation d'un bloc long. Dans un mode de réalisation préféré, chaque élément de mémorisation (71, 72, 73) comprend huit éléments de mémoire vive non représentée ou RAM (pour "Random Access Memory" en anglais). Chaque élément de mémoire vive permet de mémoriser 180 mots de 270 bits. Chaque élément de mémorisation permet donc de mémoriser environ 388800 bits, soit, pour des LLRs de 6 bits, le nombre de bits d'un bloc de 64800 LLRs. La présente invention n'est bien entendu pas limitée par la nature des éléments de mémorisation. Des registres peuvent par exemple être utilisés. Dans le mode de réalisation considéré ici, chaque élément de mémorisation (71, 72, 73) est structuré pour mémoriser simultanément quatre blocs courts. Chaque élément de mémorisation est structuré en quatre sousespaces (74A, 74B, 74C, 74D, 75A,...,76A, 76B,...). Chaque sous-espace permet de mémoriser un bloc court. Lorsqu'un nouveau bloc est reçu (étape 81 sur la figure 8), un élément de mémorisation est choisi parmi les trois éléments de mémorisation (71, 72, 73). Le choix est effectué en fonction de la taille du nouveau bloc. L'algorithme de gestion des éléments de mémorisation comprend à cet effet une première étape de test 82. Cette étape de test 82 peut comprendre une étape non représentée de lecture de la valeur d'un champ de taille. Si ladite valeur indique que le bloc reçu est un bloc long, le nouveau bloc est mémorisé dans un élément de mémorisation vide (étape 83 sur la figure 8). Si ladite valeur indique que le bloc reçu est un bloc court, le nouveau bloc peut être mémorisé dans un élément de mémorisation déjà partiellement rempli. Le choix de l'élément de mémorisation dans lequel le nouveau bloc est mémorisé est effectué en fonction de la valeur d'un indice offset w. Ledit indice offset w est représentatif du remplissage des éléments de mémorisation. Les chronogrammes de la figure 9 permettent d'illustrer plus clairement l'algorithme de gestion des éléments de mémorisation de la figure 8. Le premier chronogramme de la figure 9 représente les blocs reçus 20 au cours du temps. Le second chronogramme représente les valeurs d'une première variable buffet w. La première variable buffet w est représentative des éléments de mémorisation choisis pour mémoriser les blocs reçus. Le troisième chronogramme représente les valeurs de l'indice offset w. Le quatrième chronogramme représente les valeurs d'une seconde variable buffet r. La seconde variable buffet r est représentative des éléments de mémorisation dont les valeurs mémorisées sont lues lors de l'exécution de l'algorithme de décodage de canal en blocs. Enfin, le cinquième chronogramme représente les valeurs d'un indice de lecture offset r. L'indice de lecture offset r est représentatif de la position dans des éléments de mémorisation des bits lus lors de l'exécution de l'algorithme de décodage de canal en blocs. Dans l'exemple représenté figure 9, un premier bloc long LI est reçu. On suppose la première variable buffer w, initialisée à deux, et l'indice offset w, la seconde variable buffer r ainsi que l'indice de lecture offset r initialisés à zéro. Le choix de l'élément de mémorisation pour mémoriser le premier bloc long LI est effectué en fonction de la taille du bloc reçu (étape de test 82 sur la figure 8). La première variable buffer w est incrémentée et l'indice offset w maintenu à zéro (étape 83 sur la figure 8). Dans l'algorithme de la figure 8, les incrémentations de la première variable buffer w sont effectuées modulo 3. Aussi la première variable buffer w prend une valeur égale à zéro. Le premier bloc long LI est donc mémorisé dans l'élément de 15 mémorisation correspondant à une valeur de première variable buffer w nulle, par exemple un premier élément de mémorisation 71. L'indice offset w est représentatif du remplissage des éléments de mémorisation: ici, les éléments de mémorisation sont soit vides soit entièrement remplis. L'indice offset w est donc nul. Dans l'exemple de la figure 9, est ensuite reçu un second bloc long L2. Après la première étape de test 82, la première variable buffer w est incrémentée à un et l'indice offset w maintenu à zéro (étape 83 sur la figure 8). La valeur la première variable buffer w indique dans quel élément de mémorisation le second bloc long L2 est mémorisé, par exemple un second élément de mémorisation 72. Pendant ce temps, les LLRs mémorisés dans le premier élément de mémorisation 71 sont lus et traités par un algorithme de décodage LDPC. Un décodeur LDPC, comme par exemple le décodeur représenté figure 4 peut être utilisé à cet effet, à ceci prés que la mémoire de canal comprend à présent trois éléments de mémorisation. La seconde variable buffer r a pris la valeur de la première variable buffer w. Au temps T1, le traitement des bits des LLRs est terminé et le premier élément de mémorisation 71 est disponible pour être réutilisé. On suppose qu'un premier bloc court SI est ensuite reçu. Après la première étape de test 82, une seconde étape de test 86 est effectuée. La valeur de l'indice offset w est comparée à zéro. Si la valeur de l'indice offset w est égale à zéro, la première variable buffer w est incrémentée, c'est-à-dire que le bloc est mémorisé dans un nouvel élément de mémorisation, ici, un troisième élément de mémorisation 73. Là encore, I'incrémentation de la première variable buffet w s'entend modulo 3. Une troisième étape de test 84 est ensuite effectuée. La valeur de l'indice offset w est comparée à un seuil, ici trois. Si la valeur de l'indice offset w est inférieure ou égale à ce seuil, l'indice offset w est incrémenté (étape 85). En effet, le premier bloc court SI mémorisé dans un troisième élément de mémorisation 73 ne remplit que partiellement le troisième élément de mémorisation 73. L'indice offset w représentatif du remplissage des éléments de mémorisation prend donc une valeur indiquant que le troisième élément de mémorisation 73 est partiellement rempli. On suppose qu'un second bloc court S2 est ensuite reçu. Après la première étape de test 82, la seconde étape de test 86 est effectuée. Cette fois-ci, la valeur de l'indice offset w est non nulle, de sorte que la première variable buffet w garde une valeur égale à deux. Le second bloc court S2 est ainsi mémorisé dans le même élément de mémorisation que le premier bloc court Si. Lors de la troisième étape de test 84, la valeur de l'indice offset w est comparée à trois. La valeur de l'indice offset w étant alors égale à un, elle est incrémentée (étape 85). La valeur de l'indice offset w est alors égale à deux et indique que le troisième élément de mémorisation 73 est à moitié rempli après mémorisation du second bloc court S2. De la même façon, un troisième bloc court S3 peut être ensuite reçu et mémorisé dans le troisième élément de mémorisation 73. La première variable buffet w garde une valeur égale à deux. La valeur de l'indice offset w est alors égale à trois et indique que le troisième élément de mémorisation 73 est aux trois quarts rempli après mémorisation du troisième bloc court S3. Si un quatrième bloc court S4 est ensuite reçu, la première variable buffer w garde une valeur égale à deux. La valeur de l'indice offset w passe à quatre et indique que le troisième élément de mémorisation 73 est entièrement rempli après mémorisation du quatrième bloc court S4. Pendant que les blocs courts SI, S2, S3 et S4 étaient reçus, les LLRs du second élément de mémorisation 72 étaient lus et traités par un algorithme de décodage LDPC. Au temps T2, le second élément de mémorisation 72 est à nouveau disponible. On suppose qu'un cinquième bloc court S5 est ensuite reçu. Lorsque la troisième étape de test 84 est effectuée, la valeur de l'indice offset w est supérieure à trois. La première variable buffer w est alors incrémentée, passant donc à zéro, et l'indice offset w se voit affecter une valeur de un (étape 89). Le cinquième bloc court S5 est donc mémorisé dans le premier élément de mémorisation 71 dont il n'occupe qu'un quart environ. On suppose qu'un troisième bloc long L3 est ensuite reçu. Après la première étape de test 82, la première variable buffer w est incrémentée, passant donc à un, et l'indice offset w remis à zéro (étape 83). Le troisième bloc long L3 est donc mémorisé dans un nouvel élément de mémorisation, ici le second élément de mémorisation 72. Pendant ce temps, la seconde variable buffet r et l'indice de lecture offset r recopient respectivement la valeur de la première variable buffet w et de l'indice offset w. Les LLRs du troisième élément de mémorisation 73 sont donc lus et traités bloc par bloc. Les valeurs de l'indice de lecture offset r permettent d'indiquer les positions du bloc à lire dans le troisième élément de mémorisation 73. Ainsi, il est possible de gérer la mémorisation de blocs susceptibles 30 de prendre deux tailles différentes avec seulement trois éléments de mémorisation. Le dispositif de mémorisation comprend, outre la mémoire de canal représentée figure 7, un dispositif de décodage. Le dispositif de décodage permet d'appliquer l'algorithme de décodage de canal, ici LDPC. Le décodeur représenté figure 4 peut être utilisé, à ceci prés que la mémoire de canal comprend à présent trois éléments de mémorisation. Le dispositif de décodage comprend des moyens de traitement des blocs reçus, par exemple mais de façon non limitative un banc de P processeurs, une boucle et une mémoire de décision en sortie des moyens de traitement pour mémoriser temporairement la valeur des bits décodés. La boucle comprend une mémoire pour mémoriser des données intermédiaires provenant des moyens de traitement, et un mélangeur pour préparer des données à traiter par les moyens de traitement à partir des données intermédiaires. Bien entendu, cette implémentation du procédé de décodage par blocs ne saurait limiter l'invention. Le dispositif de mémorisation peut en outre comprendre une mémoire de gestion des éléments de mémorisation (non représentée) pour mettre en oeuvre l'algorithme de la figure 8. La mémoire de gestion des éléments de mémorisation peut comprendre une première table permettant de mémoriser provisoirement les valeurs de la première variable buffer w La mémoire de gestion des éléments de mémorisation peut comprendre également une seconde table permettant de mémoriser provisoirement des valeurs de l'indice offset w. Chaque table permet de mémoriser 6 valeurs. Un pointeur de lecture et un pointeur d'écriture pointent sur ces valeurs. Le pointeur d'écriture adresse les valeurs de la première variable buffer w et de l'indice offset w indiquant à quel endroit un nouveau bloc est mémorisé. Le pointeur de lecture adresse les valeurs de la seconde variable buffer r et de l'indice de lecture offset r indiquant quel bloc doit être décodé. Pour des éléments de mémorisation comprenant des RAM à accès simple, le traitement d'un bloc mémorisé ne commence pas tant que les pointeurs de lecture et d'écriture adressent des valeurs correspondant à un même élément de mémorisation. On évite ainsi de lire et d'écrire sur un élément de mémorisation simultanément. L'homme du métier aura bien compris que cette mise en ceuvre à l'aide de tables ne limite aucunement la présente invention. Par exemple, les éléments de mémorisation peuvent comprendre des RAM doubles ports. Un bloc court mémorisé dans un tel élément de mémorisation peut être lu alors qu'un autre bloc court est en train d'être écrit dans cet élément de mémorisation. La latence de traitement des blocs courts peut ainsi être relativement faible. Variantes Dans un mode de réalisation alternatif et non représenté, une variable de comptage nb_free_buffer est utilisée. La valeur de la variable de comptage nb_free_buffer est représentative du nombre d'éléments de mémorisation disponibles pour mémoriser un nouveau bloc. Une étape de test sur cette variable de comptage nb_free_buffer est effectuée en cas de bloc court: si la valeur de la variable de comptage nb_free_buffer est supérieure ou égale à deux, la valeur de la première variable est incrémentée modulo 3. Le bloc court est ainsi mémorisé dans un nouvel élément de mémorisation. Comme le nombre d'éléments de mémorisation était au moins de deux, il reste au moins un élément de mémorisation disponible pour un éventuel bloc long à venir. Ce procédé peut permettre, en particulier lorsque les éléments de mémorisation comprennent des RAM à accès simple, de diminuer la latence de traitement de blocs courts. En effet, si seuls des blocs courts sont reçus, il reste toujours au moins deux éléments de mémorisation libres lors de chaque réception d'un bloc court. Par conséquent on changera d'élément de mémorisation pour chaque bloc. La latence pour le décodage est alors sensiblement égale à la latence correspondant à la mémorisation d'un bloc court et non à la latence correspondant à la mémorisation d'un bloc long. De plus, il peut s'avérer qu'un bloc mémorisé, par exemple un bloc invalide, ne nécessite pas de décodage. L'élément de mémorisation peut être libéré immédiatement et la latence de traitement des blocs suivants est réduite. Le nombre d'éléments de mémorisation structurés pour mémoriser simultanément plusieurs blocs de la seconde catégorie peut être de deux seulement. Dans ces éléments de mémorisation peuvent être mémorisés des blocs de la première catégorie ou des blocs de la seconde catégorie. Le dernier élément de mémorisation est dédié à la mémorisation de blocs de la première catégorie seulement. L'algorithme de gestion des éléments de mémorisation est alors différent de celui du mode de réalisation illustré par les figures 7 à 9, dans lequel les éléments de mémorisation étaient indifférenciés. Par exemple, si le bloc reçu est long, il est mémorisé prioritairement dans le dernier élément de mémorisation. Si le bloc est court, un indice représentatif du remplissage des blocs et une variable représentative de la disponibilité des blocs peuvent être utilisés pour déterminer dans quel bloc parmi les deux blocs structurés pour mémoriser simultanément plusieurs blocs de la seconde catégorie le bloc court sera mémorisé. De plus, la seconde catégorie peut correspondre à plusieurs tailles de blocs. Les blocs peuvent ainsi être susceptibles de prendre plus de deux tailles différentes. Par exemple, les blocs reçus peuvent être des blocs longs de 64800 LLRs, des blocs courts de 16200 LLRs, ou des blocs très courts de 8100 LLRs. Dans ce cas, la mémoire de canal peut par exemple comprendre trois éléments de mémorisation ayant une taille adaptée à la mémorisation d'un bloc de la première catégorie. Ces éléments peuvent être tous structurés pour mémoriser simultanément plusieurs blocs de la seconde catégorie. Les éléments de mémorisation peuvent être structurés en sous- espaces, chaque sous-espace permettant de mémoriser un bloc de plus petite taille de la seconde catégorie, soit dans cet exemple un bloc très court. Les éléments de mémorisation peuvent par exemple comprendre chacun huit sous-espaces. Un bloc court occupe deux sous-espaces, tandis qu'un bloc très court occupe un seul sous-espace. Lorsqu'un bloc court est mémorisé dans un élément de mémorisation, l'indice peut être incrémenté de deux. Dans l'art antérieur, pour des blocs de 64800 LLRs, 16200 LLRs et 8100 LLRs, soit des rapports de tailles de blocs de 4 et 8, quatorze éléments de mémorisation sont nécessaires. De plus, la première taille de bloc peut être moins de deux fois supérieure une seconde taille de bloc. Par exemple, la première catégorie peut correspondre à une première taille de bloc de 64800 LLRs et la seconde catégorie à une seconde taille de blocs de 48600 LLRs. Le rapport des valeurs des tailles que les blocs sont susceptibles de prendre est ici de %. Le dispositif de mémorisation comprend alors trois éléments de mémorisation ayant une taille adaptée à la mémorisation d'un bloc de la première catégorie, et structurés pour mémoriser soit un bloc de la première catégorie, soit un bloc de la seconde catégorie. Un dispositif de mémorisation de l'art antérieur adapté pour de telles tailles de bloc comprend deux éléments de mémorisation ayant une taille adaptée pour la mémorisation d'un bloc de la première catégorie et trois éléments de mémorisation ayant une taille adaptée pour la mémorisation d'un bloc de la seconde catégorie, soit cinq éléments de mémorisation. Le dispositif de mémorisation selon un aspect de l'invention comprend ainsi un nombre relativement faible d'éléments de mémorisation. Dans la plupart des exemples mentionnés, les rapports de tailles de blocs sont entiers. Cette caractéristique ne saurait limiter l'invention. Par exemple, les blocs peuvent être susceptible de prendre une première taille de 72900 LLRs et une seconde taille de 16200 LLRs. Dans ce cas, il est possible d'avoir deux éléments de mémorisation avec une capacité de mémorisation de 72900 LLRs et un élément de mémorisation de 64800 LLRs. Les trois éléments de mémorisation sont structurés pour mémoriser plusieurs blocs de 16200 LLRs simultanément. En pratique, les implémentations classiques des algorithmes de codage par blocs prévoient en général des rapports de tailles de blocs entiers. De plus, l'invention n'est pas limitée par l'exemple de dispositif de décodage décrit. En particulier, il n'est pas nécessaire que l'algorithme de décodage soit itératif. Le dispositif de décodage peut ne pas comprendre de boucle. Par exemple, dans le cas de blocs susceptibles de prendre des tailles relativement élevées, par exemple de l'ordre de la centaine de milliers de bits, et pour un indice de parallélisme relativement faible, par exemple de l'ordre de la centaine, il peut être nécessaire de conserver les valeurs des bits d'un bloc donné pendant un certain temps alors qu'un nouveau bloc est en train d'être reçu. La présente invention peut donc s'appliquer à un tel exemple. De manière générale, on rappelle que l'invention n'est pas limitée au décodage LDPC et que l'invention peut s'appliquer à d'autres algorithmes de décodage par blocs, par exemple les turbocodes blocs ou les codes BCH. REVENDICATIONS 1. Dispositif de mémorisation de blocs de bits destinés à être décodés suivant un algorithme de décodage par blocs, les blocs étant susceptibles d'appartenir à une catégorie donnée parmi une première catégorie et une seconde catégorie, la première catégorie correspondant à une première taille de bloc donnée, la seconde catégorie correspondant à au moins une seconde taille de bloc donnée inférieure à ladite première taille de bloc, ledit dispositif de mémorisation comprenant trois éléments de mémorisation (71, 72, 73) ayant une taille adaptée à la mémorisation d'un bloc de la première catégorie chacun, et dont deux au moins sont structurés pour mémoriser soit un bloc de la première catégorie, soit un bloc de la seconde catégorie ou plusieurs blocs de la seconde catégorie simultanément. 2. Dispositif de mémorisation selon la revendication 1, dans lequel chacun des trois éléments de mémorisation (71, 72, 73) est structuré pour mémoriser soit un bloc de la première catégorie, soit un bloc de la seconde catégorie ou plusieurs blocs de la seconde catégorie simultanément. 3. Dispositif de mémorisation selon l'une des revendications précédentes, dans lequel 25 la seconde catégorie correspond à une seule seconde taille de bloc. 4. Dispositif de mémorisation selon l'une des revendications précédentes, dans lequel la première taille de bloc est au moins deux fois supérieure à ladite au 30 moins une seconde taille de bloc, et lesdits au moins deux éléments de mémorisation (71, 72, 73) sont structurés pour mémoriser soit un bloc de la première catégorie, soit plusieurs blocs de la seconde catégorie simultanément. 5. Dispositif de mémorisation selon la revendication 4, dans lequel les éléments de mémorisation (71, 72, 73) structurés pour mémoriser soit un bloc de la première catégorie, soit plusieurs blocs de la seconde catégorie simultanément, sont structurés en une pluralité de sous-espaces (76A, 76B,..., 75A,...,74A, 74B, 74C, 74D), chaque sous-espace permettant de mémoriser un bloc de plus petite taille de la seconde catégorie. 6. Dispositif de mémorisation selon l'une des revendications précédentes, dans lequel l'algorithme de décodage en blocs comprend un algorithme de décodage LDPC. 7. Système de décodage de blocs de bits suivant un algorithme de décodage de canal en blocs, comprenant un dispositif de mémorisation suivant l'une quelconque des revendications précédentes, un banc de processeurs (42) pour traiter les blocs reçus, une boucle comprenant une mémoire (43) pour mémoriser des données intermédiaires provenant du banc de processeurs, et un mélangeur (44) pour préparer des données à traiter par le banc de processeurs à partir des données intermédiaires, et une mémoire de décision (45) pour mémoriser temporairement la valeur des bits décodés. 8. Procédé de mémorisation de blocs de bits destinés à être décodés suivant un algorithme de décodage par blocs, les blocs étant susceptibles d'appartenir à une catégorie donnée parmi une première catégorie et une seconde catégorie, la première catégorie correspondant à une première taille de bloc donnée, la seconde catégorie correspondant à au moins une seconde taille de bloc donnée inférieure à ladite première taille de bloc, ledit procédé comprenant les étapes consistant à prévoir trois éléments de mémorisation (71, 72, 73), ayant une taille adaptée à la mémorisation d'un bloc de la première catégorie chacun, et dont deux au moins sont structurés pour mémoriser soit un bloc de la première catégorie, soit un bloc de la seconde catégorie ou plusieurs blocs de la seconde catégorie simultanément, pour chaque nouveau bloc, choisir un élément de mémorisation parmi lesdits trois éléments de mémorisation, le choix étant effectué en fonction de la taille du nouveau bloc. 9. Procédé de mémorisation de blocs de bits selon la revendication 8, comprenant en outre pour un nouveau bloc appartenant à la seconde catégorie, choisir un élément de mémorisation (71, 72, 73) parmi lesdits au moins deux éléments de mémorisation structurés pour mémoriser simultanément plusieurs blocs de la seconde catégorie, le choix étant effectué en fonction de la valeur d'un indice (offset_w), ledit indice étant représentatif du remplissage desdits au moins deux éléments de mémorisation.