Brevet FR2714554A1 — publié le 19950630

La présente invention concerne le domaine des systèmes de compression et de décompression de données; plus particulièrement, la présente invention concerne un procédé et un appareil permettant le codage et le décodage parallèles de données dans des systèmes de compression/décompression. De nos jours, la compression de données est largement utilisée, plus particulièrement pour stocker et transmettre des quantités importantes de données. De nombreuses techniques de compression de données différentes existent dans l'art i0 antérieur. Les techniques de compression peuvent être divisées en deux catégories principales, soit le codage avec perte et le codage sans perte. Le codage avec perte met en jeu un codage qui conduit à la perte d'une information de telle sorte qu'on n'est pas garanti de la reconstruction parfaite des données originales. i 5 Lors d'une compression sans perte, la totalité de l'information est conservée et les données sont comprimées d'une manière qui permet une reconstruction parfaite. Lors d'une compression sans perte, des symboles d'entrée sont convertis afin d'émettre en sortie des mots de code. Si la compression est couronnée de succès, les mots de code sont représentés selon moins de bits que le nombre de symboles d'entrée. Les procédés de codage avec perte incluent des procédés de codage avec dictionnaire (par exemple Lempel-Ziv), le codage RLL, le codage énumératif et le codage d'entropie. Le codage d'entropie est constitué par n'importe quel procédé de codage avec perte qui tente de comprimer des données proches de la limite d'entropie en utilisant des probabilités de symbole connues ou estimées. Les codes d'entropie incluent les codes Huffman, les codes arithmétiques et les codes d'entropie binaires. Des codeurs d'entropie binaires sont des codeurs avec perte qui prennent seulement des décisions binaires (oui/non) souvent exprimées en tant que symbole le plus probable (MPS) et en tant que symbole le moins probable (LPS). Des exemples des codeurs d'entropie binaires incluent le codeur Q d'IBM et un codeur appelé codeur B. Pour davantage d'information sur le codeur B, voir le brevet des Etats-Unis d'Amérique n 5 272 478 intitulé "Method and Apparatus for Entropy Coding", (J.D. Allen), délivré le 21 décembre 1993 qui est la propriété de la demanderesse de la présente invention. Voir également M.J. Cormish et J.D. Allen, "Finite State Machine Binary Entropy Coding" abstract in Proc. Data ComDression Conference, 30 mars 1993, Snowbird, UT, page 449. Le codeur B est un codeur d'entropie binaire qui utilise un automate fini pour la compression. La figure 1 représente un schéma fonctionnel d'un système de compression et de décompression de l'art antérieur qui utilise un codeur d'entropie binaire. Pour le codage, des données sont entrées selon un modèle de contexte (CM) 101. Le CM 101 transpose des données d'entrée en un jeu ou en une séquence de décisions binaires et produit la case de contexte pour chaque décision. A la fois la séquence de décisions binaires et leurs cases de contexte associées sont émises en sortie depuis le CM 101 sur le module d'estimation de probabilité (PEM) 102. Le PEM 102 reçoit chaque case de contexte et génère une estimation de probabilité pour chaque décision binaire. L'estimation de probabilité réelle est typiquement représentée par une classe appelée classe P. Chaque classe P est utilisée pour une plage de probabilités. Le PEM 102 détermine également si la décision binaire (résultat) est ou n'est pas dans son état le plus probable (c'est-à- dire si oui ou non la décision correspond au MPS). Un module de générateur de train de bit (BG) 103 reçoit l'estimation de probabilité (c'est-à-dire la classe P) et la détermination de si oui ou non la décision binaire est probable en tant qu'entrées. En réponse, le module BG 103 produit un train de données comprimées en émettant zéro bit ou davantage de bits afin de représenter les données d'entrée originales. Pour le décodage, le CM 104 produit une case de contexte pour le PEM 105 et le PEM 105 produit la classe de probabilité (classe P) pour le module GB 106 sur la base de la case de contexte. Le module BG 106 est couplé pour recevoir la classe de probabilité. En réponse à la classe de probabilité et aux données comprimées, le module BG 106 retourne un bit qui représente si oui ou non la décision binaire (c'est-à-dire l'événement) est dans son état le plus probable. Le PEM 105 reçoit le bit, met à jour l'estimation de probabilité sur la base du bit reçu et retourne le résultat au CM 104. Le CM 104 reçoit le bit retourné et utilise le bit retourné pour générer les données originales et pour mettre à jour la case de contexte pour la décision binaire suivante. Un problème rencontré avec des décodeurs qui utilisent des codes d'entropie binaires tels que le codeur Q d'IBM et que le codeur B est qu'ils sont lents même lorsqu'ils sont mis en oeuvre selon des composants câblés en dur. Leur fonctionnement nécessite une unique boucle de retour lente de grande dimension. Afin de redémarrer le processus de décodage, le modèle de contexte utilise des données décodées par le passé pour produire un contexte. Le module d'estimation de probabilité utilise le contexte pour produire une classe de probabilités. Le générateur de train de bits utilise la classe de probabilités et les données comprimées pour déterminer si le bit suivant est le résultat probable ou non probable. Le module d'estimation de probabilité utilise le résultat probable/improbable pour produire un bit de résultat (et pour mettre à jour l'estimation de probabilité pour le contexte). Le bit de résultat est utilisé par le modèle de contexte pour mettre à jour son historique de données passées. Toutes ces étapes sont nécessaires pour décoder un unique bit. Du fait que le modèle de contexte doit attendre le bit de résultat pour mettre à jour son historique avant de pouvoir produire le contexte suivant, le décodage du bit suivant doit attendre. Il est souhaitable d'éviter d'avoir à attendre que la boucle de retour soit terminée avant le décodage du bit suivant. En d'autres termes, il est souhaitable de décoder plus d'un bit ou mot de code à la fois afin d'augmenter la vitesse à laquelle des données comprimées sont décodées. Un autre problème rencontré avec les décodeurs qui utilisent des codes d'entropie binaires est que des données de longueurs variables doivent être traitées. Dans la plupart des systèmes, les mots de code qui doivent être décodés présentent des longueurs variables. Selon une variante, d'autres systèmes codent des symboles de longueurs variables (données non codées). Lors du traitement des données de longueurs variables, il est nécessaire de décaler les données au niveau du bit afin de produire les données suivantes correctes pour l'opération de décodage ou de codage. Ces manipulations au niveau du bit sur le train de données peuvent nécessiter des composants câblés en dur et un logiciel coûteux et/ou lent. En outre, les systèmes de l'art antérieur nécessitent que ce décalage soit effectué selon des boucles de retour critiques du point de vue du temps qui limitent la performance du décodeur. Il serait avantageux de pouvoir réaliser la manipulation au niveau du bit du train de données soit au niveau du codeur soit au niveau du décodeur pour les applications pour lesquelles seulement l'une des deux opérations est critique du point de vue du coût et/ou de la vitesse. Il serait également avantageux de supprimer la manipulation au niveau du bit du train de données des boucles de retour critiques du point de vue du temps de telle sorte qu'une mise en parallèle puisse être utilisée pour augmenter la vitesse. La présente invention propose un système de compression et de décompression sans perte. La présente invention propose également un décodeur simple qui assure un décodage rapide. La présente invention propose également un système de décodage qui décode des données en parallèle et en pipeline. La présente invention propose également le décodage d'un train de données codées d'entropie binaires sans avoir à réaliser les manipulations au niveau du bit de l'art antérieur selon les boucles de retour critiques. La présente invention propose également des données d'entrelaçage destinées à être utilisées pour de multiples codeurs (sans perte ou avec perte) sans utiliser de la place supplémentaire pour des repères. Un procédé et un appareil permettant de décomprimer et de comprimer des données est décrit. La présente invention inclut un procédé et un appareil permettant de décoder un train de données comportant de multiples mots de code en pipeline. La présente invention inclut un procédé et un appareil permettant d'assigner des parties du train de données à de multiples ressources de décodage. Les ressources de décodage décodent ensuite les données et au moins l'une des ressources de décodage décode sa partie correspondante du train de données pendant des cycles successifs en pipeline. i15 Selon un autre mode de réalisation, le décodage du train de données commence par la détermination de la case de contexte courante. L'état du décodeur pour la case de contexte courante est recherché en mémoire. Ceci permet de déterminer l'état de l'automate d'estimation de probabilité (PEM). Un mot de code est ensuite traité et décodé. Selon la présente invention, la détermination du contexte, la détermination de l'état de PEM et le traitement du mot de code se produisent selon des cycles successifs en pipeline. La présente invention propose également un procédé et un appareil permettant de réaliser un décodage et un codage parallèles en utilisant des données de longueurs variables. Les données pour le décodage peuvent être reçues à partir de codeurs avec perte ou sans perte. De façon similaire, les données reçues peuvent être codées ou non codées. La présente invention sera mieux comprise à la lumière de la description détaillée qui suit que l'on lira en relation avec les dessins annexés des modes de réalisation particuliers de l'invention, lesquels ne doivent cependant pas être considérés comme limitant l'invention mais étant destinés à permettre son explication et sa compréhension seulement, et parmi ces dessins: la figure 1 est un schéma fonctionnel d'un codeur et d'un décodeur d'entropie binaires de l'art antérieur; la figure 2A est un schéma fonctionnel du système de décodage de la présente invention; la figure 2B est un schéma fonctionnel d'un mode de réalisation du système de codage de la présente invention; la figure 2C est un schéma fonctionnel d'un mode de réalisation du système de décodage de la présente invention qui traite des cases de contexte en parallèle; la figure 2D est un schéma fonctionnel d'un mode de réalisation du système de décodage de la présente invention qui traite des classes de probabilités en parallèle; la figure 3 représente le train de codes non entrelacé de la présente invention; la figure 4 représente un mode de réalisation du train de codes entrelacé dérivé d'un jeu typique de données; la figure 5 est un exemple d'une table d'estimation de probabilité et d'un générateur de train de bits pour le codeur R de la présente invention; la figure 6 est un schéma fonctionnel d'un mode de réalisation du système de décodage de la présente invention; la figure 7 est un schéma fonctionnel d'un mode de réalisation d'un décodeur de la présente invention; la figure 8 représente un mode de réalisation du pipeline de décodage de la présente invention; la figure 9 représente un exemple d'un gabarit de modèle de contexte utilisé par la présente invention; la figure 10 est un schéma fonctionnel d'un mode de réalisation du circuit de génération de bits de la présente invention; la figure 11 représente une logique permettant le décodage de l'état de PEM selon la présente invention; la figure 12 est un schéma fonctionnel d'un mode de réalisation d'une logique permettant de déterminer si un nouveau mot de code est nécessaire; la figure 13 est un schéma fonctionnel d'un mode de réalisation de la logique de décodage de la présente invention; la figure 14 est un schéma fonctionnel d'un mode de réalisation d'une logique permettant de mettre à jour la valeur de comptage de passes; la figure 15 est un schéma fonctionnel d'un mode de réalisation permettant de décaler des données codées dans le décodeur de la présente invention; la figure 16A représente une mise en oeuvre du système de décodage de la présente invention; la figure 16B représente une autre mise en oeuvre du 1 5 système de décodage de la présente invention; la figure 17 est un diagramme temporel qui représente le décodage en pipeline de la présente invention; la figure 18 est un schéma fonctionnel d'un mode de réalisation d'un codeur à mémoire limitée avec signalisation implicite; la figure 19 est un schéma fonctionnel d'un mode de réalisation d'un décodeur muni d'une mémoire limitée pour la signalisation implicite; la figure 20 est un schéma fonctionnel d'un mode de réalisation d'un codeur de la présente invention; la figure 21 est un schéma fonctionnel d'un mode de réalisation d'un décodeur de la présente invention; la figure 22 est un arbre décisionnel pour la binarisation; la figure 23 est un schéma fonctionnel d'un système entrelacé audio/vidéo de la présente invention; la figure 24 est un schéma fonctionnel d'un système à largeur de bande élevée qui utilise la présente invention; la figure 25 est un schéma fonctionnel d'un système d'adaptation de largeur de bande qui utilise la présente invention; et la figure 26 est un schéma fonctionnel d'un système vidéo temps réel qui utilise la présente invention. Un procédé et un appareil permettant le codage et le décodage parallèles de données est décrit. Dans la description qui suit, de nombreux détails spécifiques sont mis en exergue tels que des nombres spécifiques de bits, des nombres de codeurs, des probabilités spécifiques, des types de données, etc... afin d'assurer une compréhension globale des modes de réalisation particuliers de la présente invention. Il est bien entendu par l'homme de l'art que la présente invention peut être mise en oeuvre sans ces détails spécifiques. Par ailleurs, des circuits bien connus ont été présentés sous forme de schéma fonctionnel au lieu de l'être sous forme détaillée afin d'éviter d'obscurcir de façon non nécessaire la présente invention. La présente invention propose un système qui décode des données codées sans perte en parallèle. Les données sont décodées en parallèle en utilisant de multiples ressources de décodage. Chacune des multiples ressources de décodage se voit assigner une partie du train de données pour le décodage. L'assignation du train de données se produit au cours du décodage concurrent de données réalisé par les ressources de décodage, d'o le décodage du train de données en parallèle. Afin de permettre l'assignation de données d'une manière qui assure une utilisation efficace des ressources de décodage, le train de données est ordonné. Ceci est appelé mise en parallèle du train de données. L'ordonnancement des données permet à chaque ressource de décodage de décoder n'importe quelles données codées ou la totalité de celles-ci sans attendre un retour depuis le modèle de contexte. La figure 2A représente le système de décodage de la présente invention sans la boucle de retour lente de l'art antérieur. Un tampon d'entrée 204 reçoit des données codées (c'est-à-dire des mots de code) et un signal de retour provenant d'un décodeur 205 et applique des données codées selon un ordre prédéterminé (par exemple l'ordre des cases de contexte) au décodeur 205 de la présente invention, lequel décode les données codées. Le décodeur 205 inclut de multiples décodeurs (par exemple 205A, 205B, 205C, etc...). Selon un mode de réalisation particulier, chacun des décodeurs 205A à 205C se voit appliquer des données pour un groupe de contextes. Chacun des décodeurs contenus dans le décodeur 205 se voit appliquer des données codées pour chaque case de contexte contenue dans son groupe de contextes depuis le tampon d'entrée 204. En utilisant ces données, chaque décodeur 205A, 205B, 205C, etc... produit les données décodées pour son groupe de cases de contexte. Le modèle de contexte n'a 1 5 pas nécessairement à associer des données codées à un groupe particulier de cases de contexte. Les données décodées sont envoyées par le décodeur 205 à une mémoire de stockage de données décodées 207 (par exemple 207A, 207B, 207C, etc...) Il est à noter que la mémoire de données décodées 207 peut stocker des données intermédiaires qui ne sont ni codées ni décodées telles que les valeurs de comptage de passes. Dans ce cas, la mémoire de données décodées 207 stocke les données sous une forme compacte mais les données ne sont pas codées par entropie. Un modèle de contexte 206 qui fonctionne indépendamment est couplé pour recevoir les données décodées précédemment provenant de la mémoire de données décodées 207 (c'est-à-dire 207A, 207B, 207C, etc... ) en réponse à un signal de retour et il les envoie à la mémoire de données décodées 207. Par conséquent, deux boucles de retour indépendantes existent, soit une première entre le décodeur 205 et le tampon d'entrée 204 et une seconde entre le modèle de contexte 206 et la mémoire de données de décodeur 207. Puisque la boucle de retour de grande dimension est éliminée, les décodeurs contenus dans le décodeur 205 (par exemple 205A, 205B, 205C, etc...) peuvent décoder leurs mots de code associés aussitôt qu'ils sont reçus depuis le tampon d'entrée 204. Le modèle de contexte constitue la partie de mémoire du système de codage et il divise un jeu de données (par exemple une image) en différentes catégories (par exemple des cases de contexte) sur la base de la mémoire. Selon la présente invention, les cases de contexte sont considérées en tant que jeux de données ordonnés indépendants. Selon un mode de réalisation particulier, chaque groupe de cases de contexte comporte son propre modèle d'estimation de probabilité et chaque case de contexte comporte son propre état (dans lequel des modèles d'estimation de probabilité sont partagés). Par conséquent, chaque case de contexte peut utiliser un modèle d'estimation de probabilité différent et/ou un générateur de train de bits différent. Ainsi, les données sont ordonnées ou mises en parallèle et des parties du train de données sont assignées à des codeurs individuels pour le décodage. Afin de mettre en parallèle le train de données, les données peuvent être divisées conformément soit au contexte, soit à la probabilité, soit selon un schéma en tuiles, etc... Une partie de codeur parallèle d'un système de codage de la présente invention qui se voit appliquer des données différentiées par le modèle de contexte (CM) est représentée sur la figure 2B. Par report à la figure 2B, la partie de codeur parallèle dépendant du contexte comprend le modèle de contexte (CM) 214, des modules d'estimation de probabilité (PEM) 215 à 217 et des générateurs de train de bits (BG) 218 à 220. Le CM 214 est couplé pour recevoir des données d'entrée codées. Le CM 214 est également couplé aux PEM 215 à 217. Les PEM 215 à 217 sont également couplés respectivement aux BG 218 à 220, lesquels émettent en sortie respectivement des trains de codes 1, 2 et 3. Chaque paire constituée par un PEM et un BG comprend un codeur. Par conséquent, le codeur parallèle est représenté comme étant muni de trois codeurs. Bien que seulement trois codes parallèles soient représentés, des codeurs en n'importe quel nombre peuvent être utilisés. Le CM 214 divise un train de données en différents contextes de la même façon qu'un CM classique et il envoie les multiples trains aux ressources de codage constituées par des composants câblés en dur parallèles. Les contextes individuels ou les groupes de contextes sont dirigés sur les estimateurs de probabilité séparés (PEM) 215 à 217 et sur les générateurs de bits séparés (BG) 218, 219. Chacun des BG 218 à 220 émet en 1 0 sortie un train de données codées. La figure 2C est un schéma fonctionnel d'un mode de réalisation de la partie de décodeur du système de décodage de la présente invention. Par report à la figure 2C, un décodeur parallèle dépendant du contexte est représenté comme comportant les BG 221 à 223, les PEM 224 à 226 et le CM 227. Les trains de codes 1 à 3 sont couplés respectivement aux BG 221 à 223. Les BG 221 à 223 sont également couplés respectivement aux PEM 224 à 226. Les PEM 224 à 226 sont couplés au CM 227, lequel émet en sortie les données d'entrée reconstruites. L'entrée provient de plusieurs trains de codes représentés en tant que trains de codes 1 à 3. Un train de codes est assigné à chaque PEM et à chaque BG. Chaque BG 221 à 223 retourne un bit représentant si oui ou non la décision binaire est dans son état le plus probable, bit que les PEM 224 à 226 utilisent pour retourner des bits décodés (par exemple la décision binaire). Chacun des PEM 224 à 226 se voit associer l'un des BG 221 à 223, d'o l'indication de quel code doit être utilisé pour produire un train de données à partir de son train de codes d'entrée. Le CM 227 produit un train de données décodées en sélectionnant les bits décodés provenant des générateurs de trains de bits selon la séquence appropriée, ce qui recrée les données originales. Ainsi, le CM 227 obtient le bit de données décomprimées à partir des PEM et BG appropriés, ce qui a pour effet de re-ordonner les données selon l'ordre original. Il est à noter que la commande pour ce flux est réalisée dans le sens inverse du train de données. Les BG et PEM peuvent décoder des données avant que le CM 227 n'en ait besoin, un ou plusieurs bits restant à l'avant. Selon une variante, le CM 227 peut demander en requête (mais ne pas recevoir) un bit provenant d'une paire constituée par un BG et un PEM puis peut demander en requête un ou plusieurs bits depuis d'autres BG et PEM avant d'utiliser le bit demandé en requête initialement. La configuration représentée sur la figure 2C est conçue pour coupler étroitement le PEM et le BG. Le codeur Q d'IBM est 1 0 un bon exemple d'un codeur comportant un PEM et un BG couplés étroitement. Des boucles de retour locales entre ces deux composants ne constituent pas une limite fondamentale à la performance du système. Selon une conception différente, le PEM couplé différencie i 5 les données et les envoie sur des unités de BG parallèles. Ainsi, il y a seulement besoin d'un seul CM et d'un seul PEM et le BG est est obtenu par réplique. Le codage Huffman adaptatif et le codage par automate fini peuvent être utilisés de cette façon. Un système de décodage similaire qui utilise le PEM pour différencier les données et les envoyer sur les BG parallèles est représenté sur la figure 2D. Dans ce cas, des classes de probabilités sont manipulées en parallèle et chaque générateur de trains de bits a connaissance du résultat. Par report à la figure 2D, les trains de données codées 1 à 3 sont couplés à l'un de multiples générateurs de trains de bits (par exemple BG 232, BG 233, BG 234, etc..), lesquels sont couplés pour les recevoir. Chacun des générateurs de trains de bits est couplé au PEM 235. Le PEM 235 est également couplé au CM 236. Selon cette configuration, chacun des générateurs de trains de bits décode des données codées et les résultats du décodage sont choisis par le PEM 235 (au lieu de l'être par le CM 236). Chaque générateur de trains de bits reçoit des données codées provenant d'une source associée à une classe de probabilités (c'est-à-dire lorsque les données codées proviennent de n'importe quelle case de contexte). Le PEM 235 sélectionne les générateurs de trains de bits en utilisant une classe de probabilités. La classe de probabilités est dictée par la case de contexte qui est appliquée par le CM 236. De cette manière, des données décodées sont produites en traitant les classes de probabilités en parallèle. De nombreuses mises en oeuvre de systèmes de décodage parallèle de la présente invention existent. Selon un mode de réalisation particulier, les trains de données codées correspondant aux multiples cases de contexte peuvent être entrelacés selon un seul train ordonné par les demandes des divers codeurs. Selon le mode de réalisation présentement particulier de la présente invention, les données codées sont ordonnées de telle sorte que chaque codeur se voit constamment appliquer des données même si les données codées sont délivrées au décodeur selon un seul train. Il est à noter que la présente i 5 invention fonctionne avec tous les types de données, y compris les données d'image. En utilisant de petits codeurs simples qui peuvent être obtenus par répliques à peu de frais dans des circuits intégrés, les données codées peuvent être décodées rapidement en parallèle. Selon un mode de réalisation, les codeurs sont mis en oeuvre selon des composants câblés en dur en utilisant des puces en circuit prédiffusé ou réseau de portes programmables (FPGA) ou une puce de circuit intégré d'application spécifique à cellules standards (ASIC). La combinaison du parallélisme et de générateurs de trains de bits simples permet la réalisation du décodage de données codées à des vitesses qui excèdent celles rencontrées dans les décodeurs de l'art antérieur tout en maintenant le rendement de compression des systèmes de décodage de l'art antérieur. Ordonnancement des canaux pour des trains de données multiples Il existe de nombreuses solutions de conception différentes et de nombreux problèmes qui affectent la performance des systèmes. Quelques-uns sont mentionnés ci- après. Cependant, les conceptions représentées sur les figures 2B et 2C (et 2D) utilisent les trains de codes multiples. Des systèmes munis de canaux parallèles qui peuvent recevoir cette conception peuvent être imaginés: des lignes téléphoniques multiples, de multiples têtes prévues sur un dispositif d'entraînement de disque, etc... Dans certaines applications, seulement un canal est disponible ou peut convenir. Bien entendu, si de multiples canaux sont requis, ils peuvent être médiocres du point de vue de l'utilisation de la largeur de bande du fait de la nature en salves des trains de codes individuels. Selon un mode de réalisation particulier, les trains de codes sont concaténés et sont envoyés de façon contiguë au décodeur. Un en-tête de préface contient des pointeurs qui pointent sur l'emplacement de bit de début de chaque train. La figure 3 représente un mode de réalisation de l'agencement de ces données. Par report à la figure 3, trois pointeurs 301 à 303 1 5 indiquent l'emplacement de début dans le code concaténé des trains de codes respectifs 1, 2 et 3. Le fichier de données comprimées complet est disponible dans un tampon pour le décodeur. Lorsque nécessaire, les mots de code sont retrouvés à l'emplacement approprié via le pointeur approprié. Le pointeur est ensuite mis à jour sur le mot de code suivant de ce train de codes. Il est à noter que ce procédé nécessitequ'une trame codée complète soit stockée au niveau du décodeur et à des fins pratiques, au niveau du codeur. Si un système temps réel ou un flux de données comportant moins de salves est nécessaire, alors deux tampons de trame peuvent être utilisés pour être montés en parallèle à la fois au niveau du codeur et du décodeur. Ordre des données - ordre des mots de code Il est à noter qu'un décodeur décode des mots de code selon un ordre déterministe donné. Moyennant le codage parallèle, I'ordre des requêtes appliquées sur le train de codes est déterministe. Ainsi, si les mots de code provenant de trains de codes parallèles peuvent être entrelacés selon l'ordre correct au niveau du codeur, alors un unique train de codes suffit. Les mots de code sont délivrés au décodeur selon le même ordre sur une base juste à temps. Au niveau du codeur, un modèle du décodeur détermine l'ordre des mots de code et groupe les mots de code selon un unique train. Ce modèle peut être un décodeur réel. Un problème se pose avec la délivrance des données aux éléments de décodage parallèles lorsque les données sont de longueurs variables. Le dégroupage d'un train de mots de code de longueurs variables nécessite l'utilisation d'un décaleur de bits pour aligner les mots de code. Les décaleurs de bits sont souvent coûteux et/ou lents lorsqu'ils sont mis en oeuvre selon un composant câblé en dur. La commande du décaleur de bits dépend de la dimension du mot de code particulier. Cette boucle de retour de commande empêche la réalisation rapide d'un décalage de longueur variable. Les mérites de l'alimentation de multiples i15 décodeurs par un unique train ne peuvent pas être réalisés si le processus de dégroupage du train est réalisé dans un unique décaleur de bits qui n'est pas suffisamment rapide pour faire face aux multiples décodeurs. La solution offerte selon la présente invention sépare le problème de la distribution des données codées sur les codeurs parallèles de l'alignement des mots de code de longueurs variables pour le décodage. Les mots de code dans chaque train de codes indépendant sont groupés selon des mots de longueurs fixes appelés mots entrelacés. Au niveau de l'extrémité de décodeur du canal, ces mots entrelacés peuvent être distribués sur les unités de décodeur parallèles moyennant des lignes de données câblées en dur rapides et un circuit de commande simple. Il est commode de disposer d'une longueur de mot entrelacé supérieure à la longueur de mot de code maximum de telle sorte qu'au moins suffisamment de bits pour compléter un mot de code soient contenus dans chaque mot entrelacé. Les mots entrelacés peuvent contenir des mots de code et des parties de mots de code. La figure 4 représente l'entrelaçage d'un jeu typique de trains de codes parallèles. Ces mots sont entrelacés conformément à la demande au niveau du décodeur. Chaque décodeur indépendant reçoit un mot entrelacé entier. L'opération de décalage de bits est maintenant effectuée localement au niveau de chaque décodeur en maintenant le parallélisme du système. Il est à noter sur la figure 4 que le premier mot de code dans chaque mot entrelacé est le mot de code restant le plus faible du jeu. Par exemple, les premiers mots entrelacés proviennent du train de codes 1 en partant du mot de code le plus faible (c'est-à-dire #1). Celui-ci est suivi par le premier mot entrelacé contenu dans le train de codes 2 puis par le premier mot entrelacé contenu dans le train de codes 3. Cependant, le mot de code le plus faible suivant est le mode de code de numéro 7. Par conséquent, le mot suivant contenu dans le train est le second mot entrelacé du train de codes 2. Le fait d'utiliser le décodeur réel en tant que modéliseur pour le train de données permet la prise en compte de tous les choix de conception et de retard pour créer le train entrelacé. Ceci ne représente pas un coût important pour des systèmes duplex qui comportent de toute façon à la fois des codeurs et des décodeurs. Il est à noter que ceci peut être généralisé à n'importe quel jeu parallèle de mots de données de longueurs variables (ou de différentes dimensions) qui sont consommés selon un ordre déterministe. Types de codes et de générateurs de trains de bits pour le décodage parallèle La présente invention permet d'utiliser des codeurs existants tels que des codeurs Q d'IBM ou que des codeurs B en tant qu'éléments de génération de trains de bits qui sont obtenus par répliques en parallèle. Cependant, d'autres codes et d'autres codeurs peuvent être utilisés. Les codeurs et leurs codes associés utilisés par la présente invention sont des codeurs simples. Selon la présente invention, le fait d'utiliser un générateur de trains de bits muni d'un code simple au lieu d'un code complexe tel que le code arithmétique utilisé par le codeur Q ou que les codes à multiples états utilisés par le codeur B offre des avantages. Un code simple est avantageux en ce sens que la mise en oeuvre par composants câblés en dur est beaucoup plus rapide et plus simple et nécessite moins de silicium qu'un code complexe. Un autre avantage de la présente invention est que le rendement du codage peut être amélioré. Un code qui utilise une quantité finie d'information d'état ne peut pas satisfaire parfaitement la limite d'entropie de Shannon pour chaque probabilité. Les codes qui permettent à un unique générateur de trains de bits de manipuler de multiples probabilités ou de multiples contextes impriment des contraintes qui réduisent le rendement du codage. La levée des contraintes rendues 1 5 nécessaires pour de multiples contextes ou de multiples classes de probabilités permet l'utilisation de codes qui satisfont de plus près la limite d'entropie de Shannon. Codes R Le code (et le codeur) utilisé par le mode de réalisation présentement préféré de la présente invention est appelé codes R. Les codes R sont des codes adaptatifs qui incluent des codes du type RLL (c'est-à-dire des codes R2(k)). Selon le mode de réalisation présentement préféré, les codes R sont paramétrisés de telle sorte que de nombreuses probabilités différentes puissent être manipulées par une unique conception de décodeur. En outre, les codes R de la présente invention peuvent être décodés par un composant câblé en dur haute vitesse simple. Selon la présente invention, les codes R sont utilisés par un codeur R pour réaliser un codage ou un décodage. Selon le mode de réalisation présentement préféré, un codeur R est constitué par une combinaison d'un générateur de trains de bits et d'un module d'estimation de probabilité. Par exemple, sur la figure 1, un codeur R peut inclure la combinaison du module d'estimation de probabilité 102 et du générateur de trains de bits 103 et la combinaison du module d'estimation de probabilité et du générateur de trains de bits 106. Les mots de code représentent des passes du symbole le plus probable (MPS). Un MPS représente la sortie d'une décision binaire moyennant une probabilité de plus de 50%. Par ailleurs, le symbole le moins probable (LPS) représente la sortie d'une décision binaire moyennant une probabilité inférieure à 50%. Il est à noter que lorsque deux sorties sont également probables, il n'est pas important de savoir laquelle est le MPS ou le LPS pour autant qu'à la fois le codeur et le décodeur réalisent la même désignation. La séquence binaire résultante dans le fichier comprimé est représentée dans la table 1 pour un paramètre donné appelé MAXRUN. Table 1 - Codage par génération de bits Mot de code Signification 0 MPS consécutifs de MAXRUN 1N N MPS consécutifs suivis par LPS, N Afin de réaliser le codage, le nombre de MPS dans une passe est compté à l'aide d'un compteur simple. Si la valeur de comptage est égale à la valeur de comptage MAXRUN, un mot de code 0 est émis dans le train de codes et le compteur est remis à l'état initial. Si un LPS est rencontré, alors un "1" suivi par les N bits qui décrivent de façon unique le nombre de symboles MPS avant le LPS sont émis dans le train de codes. (Il est à noter qu'il existe de nombreuses façons d'assigner les N bits pour décrire la longueur de passe). A nouveau, le compteur est remis à l'état initial. Il est à noter que le nombre de bits nécessaires pour N dépend de la valeur de MAXRUN. Il est également à noter que le complément à "1" des mots de code peut être utilisé. Pour réaliser le décodage, si le premier bit contenu dans le train de codes vaut 0, alors la valeur de MAXRUN est placée dans le compteur de MPS et l'indication de LPS est remise à zéro. Puis le bit 0 est écarté. Si le premier bit est "1", alors les bits suivants sont examinés pour extraire les N bits et la valeur de comptage appropriée (N) est placée dans le compteur de MPS et I'indicateur de LPS est établi. Puis les bits du train de codes contenant le mode de code 1N sont écartés. Les codes R sont générés au moyen des règles énoncées dans la table 1. Il est à noter que la définition d'un code R donné Rx(k) est définie par MAXRUN. Par exemple MAXRUN pour Rx(k) = x * 2k-1, et par conséquent MAXRUN R2(k) = 2 * 2k-l, MAXRUN R3(k) = 3 * 2k-1, etc... i 5 Il est à noter que les codes R sont une extension des codes de Golomb. Les codes de Golomb utilisent les codes R2(o) seulement. Les codes R de la présente invention permettent l'utilisation à la fois de codes R2(k) et R3(k) ainsi que d'autres codes Rn(k) si nécessaire. Selon un mode de réalisation particulier, des codes R2(k) et R3(k) sont utilisés. Il est à noter que Rn existe pour n=2 et pour n égal à n'importe quel nombre impair (par exemple R2, R3, R5, R7, R9, R11, R13, R15). Selon un mode de réalisation particulier, pour le code R2(k), la valeur de comptage de passe, soit r, est codée selon N; la valeur de comptage de passe, soit r, est décrite selon k bits de telle sorte que 1N soit représenté par k+1 bits. Par ailleurs, selon un mode de réalisation particulier, pour un code R3(k), les bits N peuvent contenir 1 bit permettant d'indiquer si n 2 (k-1) et k-1 ou k bits permettant d'indiquer la valeur de comptage de passe, soit r, de telle sorte que la variable N soit respectivement représentée par un total de k ou k+1 bits. Selon d'autres modes de réalisation, le complément à 1 de N peut être utilisé dans le mot de code. Dans ce cas, le MPS tend à produire des trains de codes munis de nombreux 0 et le LPS tend à produire des trains de codes comportant de nombreux 1. Les tables 2, 3, 4 et 5 représentent certains codes R efficaces utilisés pour le mode de réalisation présentement préféré de la présente invention. Il est à noter que d'autres codes de longueur de passe peuvent également être utilisés selon la présente invention. Un exemple d'un autre code de longueur de passe pour R2(2) est présenté dans la table 6. Les tables 7 et 8 représentent des exemples des codes utilisés selon le mode de réalisation particulier. 1 0 Table 2 - R2(0) p(O) = 0,500 données non codées mot de code 0 0 1 1 Table 3 - R2(1) p(0) = 0,707 données non codées mot de code 00 0o 01 10 1 11 Table 4 - R3(1) p(0) = 0,794 données non codées mot de code 000 0 001 100 01 101 1 1 1 Table 5 - R2(2) p(O) = 0,841 données non codées mot de code 0000 O 0001 100 001 101 0 1 1 10 1 111 Table 6 - Variante R2(2) Variante R2(2) 0000 0 0001 111 001 110 01 11 0 1 100 Table 7 - Code R3(2) préféré Préférence R3(2) 000000 O 000001 1000 00001 1010 0001 1001 001 1011 01 110 1 111 Table 8 - Code R2(2) préféré Préférence R2(2) 0000 O 0001 100 001 110 01 101 1 111 Modèle d'estimation de probabilités pour les codes R Selon le mode de réalisation présentement préféré, le code R2(0) ne réalise aucun codage: une entrée de 0 est codée en 0 et une entrée de 1 est codée en 1 (ou vice versa) et il est optimum pour des probabilités égales à 50%. Selon le mode de réalisation présentement préféré, un code R3(0) n'est pas utilisé. Le code R2(1) du mode de réalisation présentement préféré est optimum pour des probabilités égales à 0,707 (c'est- à-dire 70,7%) et le code R3(1) est optimum pour la probabilité égale à 0, 794 (79,4%). Le code R2(2) est optimum pour la probabilité égale à 0,841 (84,1%). La table 7 représente ci-après le code de type RLL quasioptimum, la pente de la probabilité étant définie par l'équation suivante Pente de probabilité = -0log2 (LPS). Table 7 Probabilité Pente de probabilité Meilleur code Golomb 0,500 1,00 R2(0) 0,707 1,77 R2(1) 0,841 2,65 R2(2) 0,917 3,59 R2(3) 0,958 4,56 R2(4) 0,979 5,54 R2(5) 0,989 6,54 R2(6) 0,995 7,53 R2(7) 0,997 8,53 R2(8) 0,999 9,53 R2(9) Il est à noter que les codes sont quasi-optimum en ce sens que la plage de probabilités, telle qu'indiquée par la pente de probabilité, recouvre un espace relativement uniforme même si les probabilités optimum ne se différencient pas plus pour les valeurs k plus élevées que pour les valeurs k plus faibles. Un code R2(k) pour une valeur de k fixe est appelé code de type RLL. Cependant, une valeur de k fixe est seulement 1 0 quasi-optimum pour une probabilité fixe. Il est à noter que lors d'un codage pour une probabilité optimum, un code R selon la présente invention utilise des mots de code "0" et 1N mot selon des fréquences égales. En d'autres termes, la moitié du temps, le codeur R de la présente invention émet en sortie un code et I'autre moitié du temps, le codeur R émet en sortie l'autre code. En examinant le nombre de mots de code à 0 et à 1N, on peut déterminer si oui ou non le meilleur code est en train d'être utilisé. C'est-à-dire que si trop de mots de code 1N sont en train d'être émis en sortie, alors la longueur de passe est trop longue; par ailleurs, si trop de mots de code à 0 sont en train d'être émis en sortie, alors la longueur de passe est trop courte. Le modèle d'estimation de probabilité utilisé par Langdon examine le premier bit de chaque mot de code pour déterminer si oui ou non la probabilité source est supérieure ou inférieure à l'estimation courante. Sur la base de cette détermination, k est augmenté ou diminué. Par exemple, si un mot de code indiquant MPS est observé, I'estimation de probabilité est trop faible. Par conséquent, selon Langdon, k est augmenté de 1 pour chaque mot de code à 0. Si un mot de code indiquant moins que MAXRUN MPS suivi par un LPS est observé, I'estimation de probabilité est trop élevée. Par conséquent, selon Langdon, k est diminué de 1 pour chaque mot de code à 1 N. La présente invention permet une estimation de probabilité davantage complexe que l'augmentation ou que la diminution simple de k d'une unité pour chaque mot de code. La présente invention inclut un état de module d'estimation de probabilité qui détermine le code à utiliser. De nombreux états peuvent utiliser le même code. Des codes sont assignés à des états en utilisant une table d'états ou un automate fini. Selon la présente invention, I'estimation de probabilité change d'état à chaque sortie de mot de code. Ainsi, selon la présente invention, le module d'estimation de probabilité peut faire croître ou décroître l'estimation de probabilité en fonction de si un mot de code commence par un "O" ou un "1". Par exemple, si un mot de code à "O" est émis en sortie, une augmentation de I'estimation de la probabilité de MPS est observée. Par ailleurs, si un mot de code à "1" est émis en sortie, I'estimation de la probabilité de MPS est diminuée. Le codeur de Langdon de l'art antérieur utilisait seulement des codes R2(k) et augmentait et diminuait k pour chaque mot de code. La présente invention utilise en alternance des codes R2(k) et R3(k) en conjonction avec la table d'états ou l'automate fini pour permettre d'accorder la vitesse d'adaptation à l'application. C'est-à-dire que s'il y a une faible quantité de données stationnaires, I'adaptation doit être plus rapide pour conduire à un codage davantage optimum et lorsqu'il y a une quantité plus importante de données stationnaires, le temps d'adaptation peut être plus long de telle sorte que le codage puisse être choisi pour obtenir une meilleure compression du reste des données. Il est à noter que lorsque des nombres variables de variations d'état peuvent se produire, des caractéristiques spécifiques d'application peuvent également influencer la vitesse d'adaptation. Du fait de la nature des codes R, I'estimation pour les codes R est simple et elle ne nécessite que des composants câblés en dur tout en étant très puissante. L'incorporation des codes R3(k) permet de couvrir davantage d'espace de probabilité moyennant une résolution plus fine. Un exemple d'une table d'états d'estimation de probabilité selon la présente invention est représenté sur la figure 5. Par report à la figure 5, la table d'états d'estimation de probabilité représente à la fois un compteur d'états et le code assigné à chacun des états séparés contenus dans la table. Il est à noter que la table inclut à la fois des états positifs et négatifs. La table est représentée comme comportant 37 états positifs et 37 états négatifs, y compris des états à zéro. Les états négatifs signifient un MPS différent de celui des états positifs. Selon un mode de réalisation particulier, les états négatifs peuvent être utilisés lorsque le MPS vaut 1 et les états positifs peuvent être utilisés lorsque le MPS vaut 0 ou vice versa. Il est à noter que le tableau représenté sur la figure 5 est un exemple seulement et que d'autres tableaux peuvent comporter plus ou moins d'états et une allocation d'états différente. Initialement, le codeur est dans l'état 0 qui est le code R2(0) (c'est-àdire pas de code) pour une estimation de probabilité égale à 0,50. Après que chaque mot de code est traité, le compteur d'état est incrémenté ou décrémenté en fonction du premier bit du mot de code. Selon le mode de réalisation présentement préféré, un mot de code de 0 augmente la valeur de comptage d'un compteur d'états; un mot de code commençant par 1 diminue la valeur de comptage du compteur d'états. Par conséquent, chaque mot de code génère une modification à réaliser dans l'état par le compteur d'états. En d'autres termes, le module d'estimation de probabilité change d'état. Cependant, des états consécutifs peuvent être associés au même code. Dans ce cas, I'estimation de probabilité est réalisée sans modifier les codes à chaque mot de code. En d'autres termes, I'état est modifié pour chaque mot de code; cependant, l'état est cartographié ou mappé selon les mêmes probabilités à certains instants. Par exemple, les états 5 à -5 utilisent tous le code R2(0) tandis que les états 6 à 11 et -6 à -11 utilisent le code R2(1). En utilisant la table d'états de la présente invention, l'estimation de probabilité peut subsister avec le même codeur d'une manière non linéaire. Il est à noter que davantage d'états moyennant le même code R sont inclus pour les probabilités plus faibles. Ceci est réalisé du fait que la perte de rendement lors de l'utilisation du code erroné pour des probabilités faibles est importante. La nature de la table d'états de codes de longueur de passe consiste à effectuer un transfert entre des états après chaque mot de code. Dans une table d'états désignée pour modifier des codes lors de chaque modification d'état, lors d'un déclenchement entre les états pour les probabilités plus faibles, le code se déclenche entre un code qui est très proche de la limite de rendement d'entropie et un code qui est éloigné de la limite de rendement d'entropie. Ainsi, une pénalité (en termes de nombres de bits de données codées) peut résulter de la transition entre les états. Les modules d'estimation de probabilité de l'art antérieur tels que le module d'estimation de probabilité de Langdon perdent en performance du fait de cette pénalité. Pour les codes de longueur de passe à probabilité plus élevée, la pénalité constituée par le code erroné n'est pas aussi importante. Par conséquent, selon la présente invention, des états supplémentaires sont ajoutés pour les probabilités plus faibles de telle sorte que les modifications de déclenchement entre les deux états corrects soient augmentées, ce qui réduit le rendement du codage. Il est à noter que dans certains modes de réalisation, le codeur peut présenter un état d'estimation de probabilité initial. En d'autres termes, le codeur peut démarrer dans l'un prédéterminé des états tels que l'état 18. Selon un mode de réalisation, une table d'états différente pourrait être utilisée de telle sorte que certains états soient utilisés pour les quelques premiers symboles pour permettre une adaptation rapide et qu'une seconde table d'états soit utilisée pour les symboles restants en vue d'une adaptation lente pour permettre l'accord fin de l'estimation de probabilité. De cette manière, le codeur peut utiliser un code davantage optimum plus tôt lors du processus de codage. Selon un autre mode de réalisation, le train de codes pourrait spécifier une estimation de probabilité initiale pour chaque contexte. Selon un mode de réalisation, les incrémentations et les décrémentations ne sont pas réalisées conformément à un nombre fixe (par exemple 1). En lieu et place, l'état d'estimation de probabilité peut être incrémenté d'un nombre variable conformément à la quantité de données déjà rencontrées ou à la valeur de modification au niveau des données (stabilité). Si la table d'états est symétrique, telle que la table typique de la figure 5 le montre, seulement sa moitié (y compris l'état zéro) doit être stockée ou mise en oeuvre selon des composants câblés en dur. Selon un mode de réalisation, le nombre d'états est stocké selon une forme par complément à 1 en signe et amplitude pour prendre avantage de la symétrie. De cette manière, la table peut être utilisée en prenant la valeur absolue du nombre complémenté à un afin de déterminer l'état et afin d'examiner le signe pour déterminer si le MPS vaut 1 ou 0. Ceci permet de réduire les composants câblés en dur nécessaires pour incrémenter et décrémenter l'état du fait que la valeur absolue de l'état est utilisée pour indexer la table et que le calcul de la valeur absolue du nombre complémenté à un est trivial. Selon un autre mode de réalisation, pour un rendement des composants câblés en dur plus important, une table d'états peut être remplacée par un automate fini câblé en dur ou programmable. Un état câblé en dur pour le convertisseur de code est la mise en oeuvre présentement préférée de la table d'états. Un mode de réalisation du système de décodeur de la présente invention La figure 6 représente un schéma fonctionnel d'un mode de réalisation du système câblé en dur de décodeur de la présente invention. Par report à la figure 6, le système de décodeur 600 inclut un tampon premier entré/premier sorti (FIFO) 601, des 1 0 décodeurs 602, une mémoire 603 et un modèle de contexte 604. Les décodeurs 602 incluent de multiples décodeurs. Des données codées 610 sont couplées pour être reçues par le FIFO 601. Le FIFO 601 est couplé pour appliquer les données codées au décodeur 602. Les décodeurs 602 sont couplés à la mémoire 603 et au modèle de contexte 604. Le modèle de contexte 604 est également couplé à la mémoire 603. Une sortie du modèle de contexte 604 comprend les données décodées 611. Dans le système 600, les données codées 610 entrées dans le FIFO 601 sont ordonnées et entrelacées. Le FIFO 601 contient des données selon un ordre approprié. Les trains sont délivrés aux décodeurs 602. Les décodeurs 602 ont besoin de données provenant de ces trains selon un ordre série et déterministe. Bien que l'ordre selon lequel les décodeurs 602 ont besoin des données codées ne soit pas trivial, il n'est pas aléatoire. En ordonnant les mots de code selon cet ordre au niveau du codeur au lieu de le faire au niveau du décodeur, les données codées peuvent être entrelacées selon un unique train. Selon un autre mode de réalisation, les données codées 610 peuvent comprendre un unique train de données non entrelacées dans lequel les données pour chaque case de contexte, pour chaque classe de contextes ou pour chaque classe de probabilités sont annexées au train de données. Dans ce cas, le FIFO 601 est remplacé par une zone de mémoire 610 permettant de recevoir la totalité des données codées avant l'envoi des données aux décodeurs 602 de telle sorte que les données peuvent être segmentées de façon appropriée. Lorsque les données codées 610 sont reçues par le FIFO 601, le modèle de contexte 604 détermine la case de contexte courante. Selon un mode de réalisation, le modèle de contexte 604 détermine la case de contexte courante sur la base de pixels et/ou de bits précédents. Bien que ceci ne soit pas représenté, un tamponnage de ligne peut être inclus pour le modèle de contexte 604. Le tamponnage de ligne produit les données nécessaires ou gabarits nécessaires au moyen desquels le modèle de contexte 604 détermine la case de contexte courante. Par exemple, lorsque le contexte est basé sur des valeurs de pixels au voisinage du pixel courant, un tamponnage de ligne peut être utilisé pour stocker les valeurs de pixel de ces pixels au voisinage de celles utilisées pour produire le contexte spécifique. En réponse à la case de contexte, le système de décodeur 600 recherche l'état de décodeur dans la mémoire 603 pour la case de contexte courante. Selon un mode de réalisation, I'état de décodeur inclut l'état de module d'estimation de probabilité (PEM) et l'état de générateur de bits. L'état de PEM détermine quel code utiliser pour décoder de nouveaux mots de code. L'état de générateur de bits maintient l'enregistrement des bits de la passe courante. L'état est appliqué sur les décodeurs 602 depuis la mémoire 603 en réponse à une adresse produite par le modèle de contexte 604. L'adresse accède à un emplacement dans la mémoire 603 qui stocke l'information correspondant à la case de contexte. Une fois que l'état de décodeur pour la case de contexte courante a été trouvé dans la mémoire 603, le système 600 détermine le bit non comprimé suivant et traite l'état du décodeur. Les décodeurs 602 décodent ensuite le nouveau mot de code si nécessaire et/ou mettent à jour la valeur de comptage de passes. L'état de PEM est mis à jour si nécessaire ainsi que l'état de génération de bits. Les décodeurs 602 écrivent ensuite le nouvel état de codeur dans la mémoire 603. La figure 7 représente un mode de réalisation d'un décodeur de la présente invention. Par report à la figure 7, le décodeur inclut une logique de décalage 701, une logique de générateur de bits 702, une logique de "nouveau k" 703, une logique de mise à jour de PEM 704, une logique de nouveau mot de code 705, une logique d'état de PEM pour cache 706, une logique de code pour masque 707, une logique de code pour Max PL, de masque et de dilatation par séparation R3 708, une logique de décodage 709, un multiplexeur 710 et une logique de mise à jour de valeur de comptage de passes 711. La logique de décalage 701 est couplée pourrecevoir l'entrée de données codées 713 ainsi que l'entrée d'état 712 (depuis la mémoire). La sortie de la logique de décalage 701 est également couplée en tant qu'entrée à la logique de génération de bits 702, à la logique de génération de "nouveau k" 703 et à la logique de mise à jour de PEM 704. La logique de génération de bits 702 est également couplée pour recevoir l'entrée d'état 712 et elle génère la sortie de données décodées pour le modèle de contexte. La logique de nouveau k 703 génère une sortie qui est couplée à une entrée de la logique de code pour masque 707. La logique de mise à jour de PEM 704 est également couplée à l'entrée d'état 712 et elle génère la sortie d'état (pour la mémoire). L'entrée d'état 712 est également couplée à des entrées de la logique de nouveau mot de code 705 et de la logique d'état de PEM pour code 706. La sortie de la logique d'état de PEM pour code 706 est couplée pour être reçue par la logique de dilatation 708. La sortie de la logique de dilatation 708 est couplée à la logique de décodage 709 et à la logique de mise à jour de valeur de comptage de passes 711. Une autre entrée de la logique de décodage est couplée à la sortie de la logique de code pour masque 707. La sortie de la logique de décodage 709 est couplée à une entrée d'un multiplexeur (MUX) 710. L'autre entrée du MUX 710 est couplée à l'entrée d'état 712. L'entrée de sélection du MUX 710 est couplée à la sortie de la nouvelle logique de mot de code 705. Les sorties du MUX 710 et de la logique de dilatation 708 sont couplées à deux entrées de la logique de mise à jour de valeur de comptage de passes 711 avec la sortie de la logique de code pour masque 707. La sortie de la logique de mise à jour de valeur de comptage de passes 711 est incluse dans la sortie d'état appliquée sur la mémoire. La logique de décalage 701 réalise un décalage dans les données à partir du train de données de code. Sur la base de l'entrée de données codées et de l'entrée d'état, la logique de génération de bits 702 génère des données décodées pour le modèle de contexte. La logique de nouveau k 703 utilise également les données décalées et l'entrée d'état pour générer une nouvelle valeur de k. Selon un mode de réalisation, la logique de nouveau k 703 utilise l'état de PEM et le premier bit des données codées pour générer la nouvelle valeur de k. Sur la base de la nouvelle valeur de k, la logique de code pour masque 707 génère un masque RLZ pour le mot de code suivant. Le masque RLZ pour le mot de code suivant est envoyé à la logique de décodage 709 et à la logique de mise à jour de valeur de comptage de passes 711. La logique de mise à jour de PEM 704 met à jour l'état de PEM. Selon un mode de réalisation, I'état de PEM est mis à jour en utilisant l'état courant. L'état mis à jour est envoyé à la mémoire. La nouvelle logique de mot de code 705 détermine si un nouveau mot de code est nécessaire. La logique d'état de PEM pour code 706 détermine le code pour le décodage en utilisant l'entrée d'état 712. Le code est entré sur la logique de dilatation 708 pour générer la longueur de passe maximum, le masque courant et une valeur de séparation R3. La logique de décodage 709 décode le mot de code pour produire une sortie de valeur de comptage de passes. Le MUX 710 sélectionne soit la sortie provenant de la logique de décodage 709 soit l'entrée d'état 712 pour la logique de mise à jour de valeur de comptage de passes 711. La logique de mise à jour de valeur de comptage de passes 711 met à jour la valeur de comptage de passes. Le système de décodage 600, qui inclut le décodeur 700, de la présente invention, fonctionne en pipeline. Selon un mode de réalisation, le système de décodage 600 de la présente invention détermine des cases de contexte, estime des probabilités, décode des mots de code et génère des bits à partir des valeurs de comptage de passes, le tout en pipeline. Le processus de décodage en pipeline peut être utilisé en conjonction avec de quelconques systèmes de décodage parallèles et avec de quelconques systèmes de codage parallèles connus. Un mode de réalisation de la structure en pipeline du système de décodage est représenté sur la figure 8. Par report à la figure 8, un mode de réalisation du processus de décodage en pipeline de la présente invention est représenté selon 6 niveaux *numérotés 1 à 6. 1 5 Au niveau du premier niveau, la case de contexte courante est déterminée (801). Au niveau du second niveau, après que la case de contexte a été déterminée, une lecture mémoire est réalisée (802), lecture au cours de laquelle l'état de décodeur courant pour la case de contexte est recherché dans la mémoire. Comme mis en exergue ci-avant, l'état de décodeur inclut l'état de PEM et l'état de générateur de bits. Au niveau du troisième niveau du processus de décodage en pipeline de la présente invention, un bit décomprimé est généré (803). Ceci permet à un bit d'être disponible pour le modèle de contexte. Deux autres opérations sont réalisées pendant le troisième niveau. L'état de PEM est converti en un type de code (804) et une détermination consistant à savoir si oui ou non un nouveau mot de code doit être décodé (805) est également réalisée au niveau du troisième niveau. Pendant le quatrième niveau, le système de décodage traite un mot de code et/ou met à jour la valeur de comptage de passes (806). Plusieurs sous-opérations sont mises en jeu lors d'un traitement d'un mot de code lors de la mise à jour de la valeur de comptage de passes. Par exemple, un mot de code est décodé pour déterminer la valeur de comptage de passes suivante ou la valeur de comptage de passes est mise à jour pour le mot de code courant (806). Si nécessaire lors du décodage de nouveaux mots de code, davantage de données codées sont recherchées dans le FIFO d'entrée. Une autre sous-opération qui est réalisée au niveau du quatrième niveau est la mise à jour de l'état de PEM (807). Pour finir, au niveau du quatrième niveau du pipeline de décodage, le nouvel état de PEM est utilisé pour déterminer quel mot de code de longueur de passe à zéro (décrit ultérieurement) est destiné au code suivant si la valeur de comptage de passes du mot de code courant est de zéro (808). Pendant le cinquième niveau du pipeline de décodage de la présente invention, I'état de décodeur moyennant un état de PEM mis à jour est écrit en mémoire (809) et le décalage commence pour le mot suivant (810). Au niveau du sixième niveau, le i 5 décalage jusqu'au mot de code suivant est terminé (810). Le décodage en pipeline de la présente invention commence réellement par une décision consistant à savoir si oui ou non il convient de démarrer le processus de décodage. Cette détermination est basée sur le fait de savoir si oui ou non il y a suffisamment de données dans le FIFO à présenter au décodeur de la présente invention. S'il n'y a pas suffisamment de données dans le FIFO, le système de décodage est arrêté. Dans un autre cas, le système de décodage peut être arrêté lors de l'émission en sortie de données décodées sur un dispositif périphérique qui ne peut pas recevoir toutes les données émises en sortie depuis le décodeur lorsqu'elles sont générées. Par exemple, lorsque le décodeur est prévu pour une sortie sur un interface d'affichage vidéo et sur son circuit vidéo associé, la vidéo peut être trop lente de telle sorte que le décodeur a besoin d'être arrêté pour permettre à une vidéo de saisir l'information. Une fois que la décision de démarrer le processus de décodage a été prise, la case de contexte courante est déterminée par le modèle de contexte. selon la présente invention, la case de contexte courante est évaluée en examinant des données précédentes. Ces données précédentes peuvent être stockées dans des tampons de ligne et peuvent inclure des données provenant de la ligne courante et/ou de lignes précédentes. La figure 9 représente un mode de réalisation pour une image binaire, cas dans lequel des bits provenant des lignes courantes et précédentes sont utilisés en tant que gabarits de contexte pour un bit donné. Des bits provenant d'un tampon de ligne ou de tampons de ligne peuvent être désignés en utilisant un gabarit par rapport aux données précédentes de telle sorte que la case de contexte pour les données courantes soit sélectionnée conformément à si oui ou non les données précédentes qui sont examinées correspondent aux gabarits. Ces tampons de ligne peuvent inclure des registres à décalage de bit. Un gabarit peut être utilisé pour chaque plan binaire d'une image à n bits. i15 Selon un mode de réalisation, la case de contexte est sélectionnée en émettant en sortie une adresse pour la mémoire pendant le niveau pipeline suivant. L'adresse peut inclure un nombre prédéterminé de bits tels que trois bits pour identifier le plan binaire. En utilisant trois bits, la position des bits dans les données de pixel peut être identifiée. Le gabarit utilisé pour déterminer le contexte peut également être représenté en tant que partie de l'adresse. Les bits utilisés pour identifier le plan binaire et les bits qui identifient le gabarit peuvent être combinés pour créer une adresse pour un emplacement spécifique dans la mémoire qui contient l'information d'état pour la case de contexte définie par ces bits. Par exemple, en utilisant trois bits pour déterminer la position des bits dans un pixel particulier puis les dix bits précédents à la même position dans chacun des pixels précédents contenus dans le gabarit, une adresse de contexte de 13 bits peut être générée. En utilisant l'adresse créée par le modèle de contexte, la mémoire (par exemple une RAM) est accédée pour obtenir l'information d'état. L'état inclut l'état de PEM et l'état de génération de bits. L'état de PEM inclut l'estimation de probabilité courante tandis que l'état de génération de bits maintient un enregistrement des bits pour la passe courante. Lorsque plus d'un état utilise le même code, I'état de PEM ne peut pas inclure une classe de probabilités ou une désignation de code mais en lieu et place, un index concernant une table, telle que la table représentée sur la figure 5. Par ailleurs, lors de l'utilisation d'une table telle que celle représentée sur la figure , I'état de PEM procure également le symbole le plus probable (MPS) en tant que moyen permettant d'identifier si oui ou non l'état de PEM courant est situé sur le côté positif ou négatif de la table. L'état de génération de bits peut inclure la valeur de comptage et une indication de si oui ou non un LPS est présent. Selon un mode de réalisation, la valeur de MPS pour la passe courante est également incluse pour décoder le mot de code suivant. Selon la présente invention, I'état de générateur de bits est stocké en mémoire du fait de la réduction de l'espace requis pour les compteurs de passes. Si le coût de l'espace dans le système pour les compteurs de chaque contexte est faible, I'état de génération de bits n'a pas à être stocké en mémoire. Selon un mode de réalisation, pour chaque case de contexte, la mémoire contient l'information d'état suivante: (1) la valeur de comptage de passes courante ou un masque de longueur de passe zéro (RLZ); (2) un bit pour indiquer s'il y a un LPS à la fin de la passe; (3) la valeur courante du MPS (4) un état de PEM incluant la valeur du MPS pour le mot de code suivant; (5) un bit de continuation. Comme décrit ultérieurement, le bit de continuation et le masque RLZ permettent une vitesse de génération de bits augmentée. Le bit de continuation et le masque RLZ peuvent ne pas être nécessaires dans d'autres mises en oeuvre. Le bit de continuation et le masque RLZ font l'objet d'une discussion davantage détaillée ci-après. Deux exemples de mises en oeuvre d'une information d'état pour une case de contexte, y compris le nombre de bits utilisés pour les représenter, sont présentés dans la table 8. Table 8 - Nombre de bits par case de contexte Nom Bits RS(12, 7) Bits RS(7,5) Continuation 1 1 LPS présent 1 1 Valeur de MPS 1 1 Valeur de comoptage 1 2 7 Etat de PEM 7 5 Total 22 15 Selon un mode de réalisation, I'indicateur de continuation est égal à une valeur logique de 1 lorsqu'une valeur de comptage de passes valide est une partie de l'état et est égale à une valeur 1 0 logique de 0 lorsque soit le LPS doit être émis en sortie à la fin d'une passe soit un nouveau mot de code doit être décodé. L'indicateur de présence de LPS est égal à une valeur logique de 1 lorsqu'il y a un LPS à la fin de la passe courante. La valeur de comptage indique la valeur de comptage de passes courante lorsque l'indicateur de continuation est à une valeur logique de 1 et le masque RLZ pour le mot de code de longueur de passe zéro lorsque l'indicateur de continuation est à 0. La valeur de MPS indique si oui ou non le MPS est à "0" ou à "1" pour la passe courante tandis que l'état de PEM inclut la valeur de MPS pour le mot de code suivant. Il est à noter qu'une certaine initialisation du système de décodage peut être nécessaire avant que la procédure en pipeline ne commence. Une telle initialisation peut inclure une mise à zéro des mémoires d'états de décodeur. Ceci peut être réalisé en forçant le modèle de contexte, via un ou plusieurs signaux de commande, à générer des adresses pour chaque emplacement mémoire en séquence tandis que les générateurs de bits et que le module d'estimation de probabilité produisent des entrées à zéro pour la mémoire. Au niveau du troisième niveau du pipeline, après obtention de l'état de décodeur à partir de la mémoire (par exemple la RAM), un bit est émis en sortie sans décoder complètement un mot de code. Selon un mode de réalisation, la présente invention utilise un bit (indicateur) appelé ciavant bit de continuation pour indiquer que la valeur de comptage de passes courante pour une case de contexte n'est pas à zéro, c'est-à-dire que la valeur de comptage de passes est supérieure à zéro. La présente invention génère un bit en tant que sortie sur la base de l'état du bit de continuation, de si oui ou non un LPS est présent à la fin de la passe et de si oui ou non le mot de code courant est un mot de code de longueur de passe zéro. Si le bit de continuation est vrai (par exemple une valeur logique de 1), ce qui indique qu'il n'y a pas de valeur de comptage de passes à zéro, alors la sortie est le MPS. Sinon, si le bit de continuation n'est pas vrai (par exemple une valeur logique de 0), alors le LPS est encore à la fin de la passe (par exemple à une valeur logique de 1) puis le LPS est émis à la fin de la passe. Si ni le bit de continuation ni l'indication consistant à savoir si oui ou non le LPS est présent ne sont vrais, alors le train de données codées est examiné quant au mot de code suivant pour déterminer le bit particulier à émettre. Si le mot de code courant n'est pas un mot de code RLZ, alors le bit généré est un MPS. Par ailleurs, si le mot de code courant est un mot de code RLZ, alors le bit généré par la présente invention est un LPS. La table 9 est une table de vérité permettant de générer des bits à partir de l'information d'état et du résultat de la détection de mot de code RLZ. Dans la table 9, "x" indique des valeurs "ne pas prêter attention". Table 9 - Table de vérité de génération des bits Continuation LPS présent ? Mot de code Sortie RLZ ? _ _ _1 _x x MPS 0 1 x LPS 0 0 0 MPS 0 0 1 LPS Selon la présente invention, la détermination de si oui ou non un mot de code est un mot de code RLZ dépend de l'état de PEM. L'état de PEM détermine le code R à utiliser et différents codes R présentent différents mots de code RLZ. Selon un mode de réalisation, le mot de code RLZ est constitué par des bits à "1". Cependant, le nombre de "1" varie en fonction du code R courant. Par exemple, le RLZ pour R2(0) vaut "1"; le RLZ pour R2(1) vaut "11l" etc... et le RLZ pour R1(12) vaut "1111111111111". Lorsque le bit de continuation est remis à zéro, un masque RLZ est stocké dans la zone de comptage dans la case de contexte courante au lieu de stocker des valeurs de comptage de i15 passes de zéro. Le masque RLZ permet des déterminations rapides de si oui ou non suffisamment de bits à "1" sont présents dans les données codées pour indiquer un mot de code RLZ. Puisqu'un mot de code RLZ est constitué par au moins un bit à "1", le masque RLZ peut être d'un bit inférieur au mot de code RLZ le plus long. Selon un mode de réalisation, le masque RLZ vaut "000000000000" pour R2(0), "000000000001" pour R2(1) et R3(1) et "0000000001 1" pour R2(2) etc... jusqu'à "111111111111" pour R2(12). Un mode de réalisation du circuit de génération de bits permettant la mise en oeuvre de la table de vérité contenue dans la table 9 est représenté sur la figure 10. Par report à la figure , un circuit de génération de bits 1000 inclut une logique de portes NON 1001 et 1002, une logique de portes OU 1003 et 1004, une logique de portes ET 1005 et 1006 et une logique de porte OU-exclusif 1007. La logique de porte NON 1002 est couplée pour recevoir l'information de masque RLZ sur son entrée. La sortie de la logique de porte NON 1002 est couplée à une entrée de la logique de porte OU 1003. Selon un mode de réalisation particulier, la sortie de la logique de porte NON 1002 comprend n bits o n est un entier égal à la dimension de mot de code la plus importante moins l'unité. L'autre entrée de la logique de porte OU 1003 est couplée pour recevoir n bits de données codées en commençant par le second bit. La sortie de la logique de porte OU 1003 est couplée aux entrées de la logique de porte ET 1005. Le premier bit du mot de code est également couplé à la logique de porte ET 1005. La sortie de la logique de porte ET 1005 est couplée à une entrée de la logique de porte OU 1 5 1004. Un unique bit de données codées est également couplé à l'une des entrées de la logique de porte ET 1005. L'autre entrée de la logique de porte OU 1004 est couplée pour recevoir l'indication binaire consistant à savoir si oui ou non le LPS est présent. La sortie de la porte OU 1004 est couplée à une entrée de la logique de porte ET 1006. L'autre entrée appliquée de la logique de porte ET 1006 est couplée à la sortie de la logique de porte NON 1001. L'entrée de la logique de porte NON 1001 est couplée au bit de continuation. La sortie de la logique de porte ET 1006 est couplée à une entrée de la logique de porte OU-exclusif 1007. L'autre entrée de la logique de porte OU-exclusif 1007 est couplée pour recevoir la valeur de MPS courante. La sortie de la logique de porte OU- exclusif 1007 représente le bit qui est généré pendant le troisième niveau du pipeline. La logique de porte NON 1001, la logique de porte OU 1004, la logique de porte ET 1006 et la logique de porte OU- exclusif 1007 mettent en oeuvre la table de vérité représentée au niveau de la table 9. La logique de porte NON 1002, la logique de porte OU 1003 et la logique de porte ET 1005 déterminent si un mot de code RLZ est présent. Lorsque le bit de continuation est à une valeur logique de 1 (par exemple est vrai), alors l'entrée appliquée sur la logique de porte ET 1006 est à une valeur logique de 0 de telle sorte que l'une des entrées appliquées sur la logique de porte OU-exclusif 1007 est à une valeur logique de 0. Dans ce cas, le MPS est émis en sortie depuis le circuit 1000 indépendamment de sa valeur. Par ailleurs, si le bit de continuation est à une valeur logique de 0 (par exemple est faux), la sortie de la logique de porte ET 1006 dépend de la sortie provenant de la logique de porte OU 1004. Dans ce cas, si l'indication de présence de LPS est à une valeur logique de 1 (par exemple est vraie), ce qui indique qu'il y a un LPS à la fin de la passe, alors la sortie de la logique de porte OU 1004 est à une valeur logique de 1 de telle sorte que la logique de porte ET 1006 émet en sortie une valeur logique de 1 pour la logique de porte OU- exclusif 1007. Dans ce cas, le bit généré par 1 5 la logique OU-exclusif 1007 comprend l'opposé du MPS ou le LPS. Si le bit de continuation est à une valeur logique de 0 et que l'indication de présence de LPS est à une valeur logique de 0, alors la sortie de la logique de porte OU-exclusif 1007 est basée sur le signal d'indication de mot de code RLZ. Lorsque le circuit de génération de bit 1000 reçoit un jeu d'entrées, la logique de porte NON 1002 et la logique de porte OU 1003 génèrent des bits tous à "1" si un mot de code RLZ est présent. La logique de porte ET 1005 détecte si tous les bits émis en sortie depuis la logique de porte OU 1003 sont des "1" et s'il en est ainsi, elle affirme le signal de "mot de code RLZ". Lorsque le signal de mot de code RLZ est affirmé, la sortie de la logique de porte OU 1004 est à une valeur logique de 1. Si le bit de continuation est à une valeur logique de 0 (si par exemple il n'est pas vrai), alors la sortie de la logique de porte ET 1006 est à une valeur logique de 1. Lorsque la sortie de la logique de porte ET 1006 est à une valeur logique de 1, le LPS est émis en sortie. Cependant, si la logique de porte ET 1005 ne détecte pas tous les bits émis en sortie depuis la logique de porte OU 1003 comme étant des "1", alors le signal de mot de code RLZ est à une valeur logique de 0 de telle sorte qu'une quelconque sortie de la logique de porte OU 1004 est à un niveau bas et que la sortie de la logique de porte ET 1006 est à un niveau bas. Dans ce cas, la sortie de la logique de porte OU-exclusif 1007 est le MPS. Selon un mode de réalisation, les entrées de données codées sont stables avant que les autres entrées ne soient verrouillées lors d'une lecture de mémoire externe. La largeur du bus de données codées pour le transfert des données codées est la dimension du mot de code RLZ le plus long. Selon un mode de réalisation, la dimension du bus de données présente une largeur de 13 bits. Dans ce cas, la logique de porte NON 1003 et la logique de porte OU 1003 génèrent 13 bits à "1" si un mot de code RLZ est présent. La logique de porte OU 1003 génère les 13 bits à "1" en utilisant 13 portes OU à 2 bits. La logique de porte ET 1005 reçoit toutes les sorties provenant de la logique de porte OU 1003 et détecte si la totalité des 13 bits de son entrée sont à "1". La logique de porte ET 1005 détecte les sorties provenant de la logique de porte OU 1003 en utilisant une porte ET à 13 entrées. Si les 13 bits sont tous à "1", alors la logique de porte ET 1005 affirme le signal de "mot de code RLZ". Puisque le premier bit de tous les mots de code RLZ est toujours à "1", un bit de masque RLZ ainsi que ses portes NON et OU associées peuvent être éliminés. Pendant le troisième niveau, I'état de probabilité est traité en parallèle avec la génération de bits. Selon la présente invention, le PEM convertit l'état de PEM en un code. Selon un mode de réalisation, cette conversion est effectuée moyennant une logique combinatoire. Lors du traitement de l'état de PEM, la présente invention détermine le code courant ainsi que le masque pour le code afin d'évaluer le train de codes. L'état de PEM est traité pour obtenir la valeur k et la valeur R du code R. Selon un mode de réalisation, sept bits représentent l'état de PEM et sont convertis en 4 bits représentant la valeur de k et en un bit représentant si oui ou non le code est un code R3. La figure 11 représente cette logique de conversion. Parmi les sept bits, six sont reçus par la logique 1101 en tant qu'amplitude pour générer les valeurs R3 et k. L'autre bit est le bit de signe utilisé pour identifier la valeur de MPS. Si le bit d'indication de R3 est dans un premier état logique (par exemple un état logique de 1), alors le code est un code R3. Si le bit d'indication de R3 est dans un second état logique (par exemple une valeur logique de 0), alors le code est un code R2. La table 10 est une table de vérité qui décrit la logique combinatoire selon un mode de réalisation de la logique 1101. Table 10 - Etat pour la table de vérité de conversion de code Etat k R3 0 0 0 o To 1oI 1 0o 0o 2 0 0 3 0o 0o 4 0 0 0o 0o 6 1 0 7 1 0 8 1 0 9 1 0o 1 0 11 1 0 12 1 1 1 3 1 1 1 4 1 1 2 0 16 2 1 1 7 3 0 Table 10 (suite) - Etat pour la table de vérité de conversion de code Etat k R3 18 3 1 19 4 0 4 1 21 5 0 22 5 1 23 6 0 24 6 1 7 0 26 7 1 27 8 0 28 8 1 29 9 0 9 1 31 10 0 32 10 1 33 11 0 34 11 1 12 0 Selon un autre mode de réalisation, la valeur binaire R3 et I'état de conversion de code peuvent être réalisés à l'avance. La valeur k et l'emplacement de la table courante (dans cet exemple) peuvent alors être stockés en mémoire ensemble et peuvent être accédés pendant le décodage de PEM. En utilisant le code, tel que représenté par les valeurs R3 et k, la présente invention génère la longueur de passe maximum, le masque et la valeur de séparation R3. Selon un mode de réalisation, la génération de la longueur de passe maximum, du masque et de la valeur de séparation R3 est réalisée en utilisant une logique qui met en oeuvre une table de vérité telle que représentée dans la table 11. Par report à la table 11, "x" indique "ne pas prêter attention". Table 11 - Table de vérité pour convertir un code en information nécessaire pour le décodage k[] R3 MAX RL [] masque [] séparation R3 0 0 1 0 x 1 0 2 1 x 1 3 1 1 2 0 4 3 x 2 1 6 3 2 3 0 8 7 x 3 1 12 7 4 4 0 16 15 x 4 1 24 15 8 0 32 31 x 1 48 31 16 6 0 64 63 x 6 1 96 63 32 7 0 128 127 x 7 1 192 127 64 8 0 256 255 x 8 1 384 255 128 9 0 512 511 x 9 1 768 511 256 0 1024 1023 x 1 1536 1023 512 1 1 0 2048 2047 x 1il 1 3072 2047 1024 12 0 4096 4095 x Dans la table 11, la valeur de masque est égale à (2k)-1. Cette valeur de masque est également utilisée en tant que masque RLZ courant. La valeur de séparation R3 est égale à 2(k-1) si l'indication R3 indique qu'un code R3 doit être utilisé pour le décodage (par exemple, I'indication R3 est établie à une valeur logique de 1). La longueur de passe maximum a été décrite précédemment. La présente invention détermine si un nouveau mode de code est nécessaire également en parallèle au niveau du troisième niveau du pipeline. Un nouveau mot de code est nécessaire lorsque le processus de décodage n'est pas au milieu d'une passe. En d'autres termes, si le décodeur est au milieu d'une passe, alors un nouveau mot de code n'est pas nécessaire pour le processus de décodage. Selon un mode de réalisation, une détermination de si oui ou non un nouveau code est nécessaire est effectuée sur la base du bit de continuation et de l'indication de LPS. Si le bit de continuation est à 0 est si le LPS est à 0, alors un nouveau mot de code est généré. La figure 12 est un schéma fonctionnel d'un mode de réalisation de la logique permettant de réaliser la nouvelle détermination de mot de code. Par report à la figure 12, un circuit 1200 inclut une logique de porte OU 1201 et une logique de porte NON 1202. La logique de porte OU 1201 est couplée pour recevoir le bit de continuation et l'indication de présencede LPS. La sortie de la logique de porte OU 1201 est couplée à l'entrée de la logique de porte NON 1202, laquelle émet en sortie l'indication de demande de nouveau mot de code si à la fois le bit de continuation et l'indication de présence de LPS sont à une valeur logique de 0. Egalement au niveau du troisième niveau, une nouvelle valeur de k est générée. Selon un mode de réalisation, la nouvelle valeur du nouveau k est générée conformément à la table de vérité de la table 12 sur la base du premier bit des données codées et de l'état de PEM. Table 12 - Table de vérité pour la nouvelle valeur de k Etat de PEM Premier bit des Nouveau k données codées 0 0 0 1 0 0 2 O O 2 0 0 3 0 0 4 0 0 0 1 6 0 1 7 0 1 8 0 1 9 0 1 O 1 11 0 1 12 o 1 13 0 1 14 0 2 0 2 1 6 0 3 17 0 3 18 0 4 19 0 4 0 5 21 0 5 22 0 6 23 0 6 Table 12 - Table de vérité pour la nouvelle valeur de k Etat de PEM Premier bit de Nouveau k données codées 24 0 7 0 7 26 0 8 27 0 8 28 0 9 29 0 9 0 10 31 0 10 32 0 11 33 0 11 34 0 12 0 12 0 1 0 1 1 0 2 1 0 3 1 0 4 1 0 1 0 6 1 0 8 1 1 9 1 1 1 0 1 1 1 1 1 Table 12 - Table de vérité pour la nouvelle valeur de k Etat de PEM Premier bit de Nouveau k données codées 12 1 1 13 1 1 14 1 1 1 1 16 1 2 17 1 2 18 1 3 19 1 3 1 4 21 1 4 22 1 5 23 1 5 24 1 6 1 6 26 1 7 27 1 7 28 1 8 29 1 8 1 9 31 1 9 32 1 10 33 1 10 34 1 11 1 1 1 Au niveau du quatrième niveau, le décodage d'un nouveau mot de code met en jeu un multiplexage de soit la longueur de passe maximum soit une valeur de comptage masquée hors du train de données codées. Si des codes R3 sont utilisés, il y a trois façons possibles qu'une valeur de comptage puisse être stockée dans le train de données codées. La logique dilate le code selon la longueur de passe maximum et selon l'information de masquage. Des valeurs de comptage de zéro sont également détectées de telle sorte qu'un masque de mot de code RLZ puisse être émis en sortie en lieu et place d'une valeur de comptage de passes. La mise à jour de la valeur de comptage de passes pour le mot de code courant nécessite la décrémentation de la valeur de comptage si la valeur de comptage est supérieure à l'unité. Les valeurs de comptage de zéro sont remplacées par un masque de 1 0 mot de code RLZ. Le code courant, comme indiqué par les valeurs de k et de R3, est converti en une longueur de passe maximum, le masque pour les mots de code à "1" et la valeur pour les codes R3 du premier mot de code long étant appelés ici valeur de séparation i 5 R3. La valeur de masque indique le nombre de bits valides dans un mot de code pour un code donné. En utilisant cette information, la présente invention permet de décoder un mot de code. Le mot de code courant est décodé tout d'abord en déterminant s'il y a un LPS à la fin de la passe. Selon un mode de réalisation, cette détermination est réalisée en examinant le premier bit. Si le premier bit est à une valeur logique de 1, alors un LPS est à la fin de la passe. Si c'est le cas, alors la valeur de comptage de passes représentée par le mot de code est déterminée. La détermination de la longueur de passe indiquée par un mot de code est réalisée par la logique de décodage 1300 représentée sur la figure 13. Par report à la figure 13, la logique de décodage 1300 inclut une logique de porte NON 1301, une logique de décalage 1302 et 1303, une logique de porte ET 1304, une logique d'additionneur 1305 et un multiplexeur (MUX) 1306. La longueur de passe maximum est couplée pour être reçue par une entrée du MUX 1306. Les autres entrées du MUX 1306 sont couplées à la sortie de la logique d'additionneur 1305, à la sortie de la logique de porte ET 1304 et au masque RLZ suivant (généré par la logique de code pour masque au niveau du troisième niveau). La sortie de la logique de porte ET 1304 est également couplée en tant que l'une des entrées de la logique d'additionneur 1305. L'autre entrée de la logique d'additionneur 1304 est couplée à la valeur de séparation R3. Les entrées de la logique de porte ET 1304 sont couplées aux logiques de décalage 1302 et 1303. L'entrée de la logique de décalage 1303 est couplée au masque pour le code. L'entrée de la logique de décalage 1302 est couplée à la sortie de la logique de porte NON 1301. L'entrée de 1 0 la logique de porte NON 1301 est couplée aux données codées. La logique de décodage 1300 inclut également une logique 1310 permettant de générer l'indication consistant à savoir si oui ou non un LPS est présent. Le mot de code courant étant donné, la valeur de comptage 1 5 de passes est déterminée. Pour des mots de code à "0", la longueur de passe maximum est émise en sortie en tant que valeur de comptage de passes. Pour des mots de code R2, les données codées inversées par la logique de porte NON 1301 sont soumises à une logique ET avec la valeur de masque par la logique de porte ET 1304 pour produire la valeur de comptage de passes (les décaleurs 1302 et 1303 ne décalent pas le masque). Pour les mots de code R3 courts (c'est-à-dire pour le mot de code R3 dont les premier et second bits sont à une valeur logique de 1), la valeur de comptage de passes est le résultat des données codées qui sont inversées par la logique de porte NON 1301, décalées de 1 par le décaleur 1302 et soumises à une logique ET en utilisant la logique de porte ET 1304 avec le masque qui est décalé de 1 par le décaleur 1303. Sinon, pour le mot de code long R3, si le premier bit vaut 1 et si le bit suivant est à zéro, alors les données codées sont inversées par la logique de porte NON 1301, sont décalées de 1 par le décaleur 1302 et sont soumises à une logique ET par la logique de porte ET 1304 avec le masque puis sont additionnées à la valeur de séparation R3 par la logique d'additionneur 1305. La valeur de séparation R3 est la valeur de comptage de passes pour le premier mot de code R3 long. Selon la présente invention, la valeur de séparation R3 est une puissance de 2. Les fonctionnements de la logique de décodage de la présente invention sont résumés dans la table 13 qui suit Table 13 Fonctionnement du décodeur Condition Sortie de comptage * Bit de mot de code 0 à "O" Longueur de passe maximum Bit de mot de code 0 à "1" et Masque [11...0] ET (NON mot de type de code R2 code [12: 1]) Bit de mot de code 0 à "1", bit Masque [11...1] ET (NON mot de de mot de code 1 à "1" et type code [12: 2]) de code R3 Bit de mot de code 0 à "1", bit Séparation R3 + masque [10...0] de mot de code 1 à "O" et type ET (NON mot de code [12: 2]) de code R3 Si la valeur de comptage de passes vaut zéro, alors la valeur de masque pour détecter un mot de code RLZ suivant est émise en sortie au lieu de la valeur de comptage. Le bit de presence de LPS émis en sortie par le décodeur est simplement un bit de mot de code à zéro. Ceci est représenté en tant que logique 1310, laquelle peut inclure un retard pipeline de telle sorte que sa génération coïncide avec la génération de la valeur de comptage de passes. Lorsque l'opération suivante doit être réalisée, une nouvelle valeur de comptage de passes est générée. La figure 14 est un schéma fonctionnel d'un mode de réalisation d'une logique permettant de mettre à jour la valeur de comptage de passes suivante. Par report à la figure 14, la logique de mise à jour 1400 inclut une logique de soustracteur 1401 et un multiplexeur (MUX) 1402. La logique de soustracteur 1401 est couplée pour recevoir la valeur courante et elle émet en sortie une valeur inférieure de un à la valeur courante. Le MUX 1402 est couplé pour recevoir la valeur courante, la sortie de la logique de soustracteur 1401, le masque RLZ courant et le masque RLZ suivant. La sortie du MUX 1402 est la valeur mise à jour ou la valeur de comptage de passes suivante. Selon la présente invention, le cas défectueux est le cas pour lequel la valeur de comptage de passes mise à jour est inférieure de un à la valeur de comptage de passes courante. Dans ce cas, le MUX 1402 émet en sortie la valeur reçue depuis la logique de soustracteur 1401. Les valeurs de comptage de 1 0 passes de zéro sont remplacées par des masques de mot de code RLZ. Les masques de mot de code RLZ sont passés sans modification lorsqu'un LPS est émis en sortie. Cette opération est résumée dans la table 14 qui suit: Table 14 - Logique de mise à jour de valeur de comptage de passes Condition Sortie de valeur Valeur suivante mise à jour pour le bit de continuation L'entrée de valeur Valeur de comptage 1 courante est une valeur de passes-1 de comptage de passes supérieure à 1 (et le bit de continuation est à "1 ") L'entrée de valeur Masque RLZ suivant 0 courante est une valeur de comptage de passes égale à 1 (et le bit de continuation est à "1") et le nouveau mot de code est décodé L'entrée de valeur Masque RLZ courant 0 courante est une valeur de comptage de passes égale à 1 (et le bit de continuation est à "1") et le nouveau mot de code n'est pas décodé Le bit de continuation Valeur courante (qui 0 est à "O" est un masque RLZ) Du fait qu'ils sont produits également en parallèle dans le quatrième niveau, les états de PEM sont mis à jour. La mise à jour de l'état de PEM met en jeu l'incrémentation ou la décrémentation de l'état sur la base du premier bit du mot de code. Le MPS est commuté au lieu de la décrémentation lorsque l'état courant est à zéro. Selon un mode de réalisation, I'état ne doit pas excéder une valeur maximum. Selon la présente invention, le MPS est modifié si un mot de code à "1" est rencontré lorsque l'état vaut 0; sinon, un mot de code à "1" fait que l'état est décrémenté. Les mots de code à "0" font que l'état est incrémenté jusqu'à ce que l'état maximum *soit atteint. Une table de vérité qui représente la mise à jour de l'état de PEM est présentée dans la table 15 qui suit Table 15 - Table de vérité de mise à jour d'état de PEM Etat courant Bit de mot Etat suivant Commuta- de code 0 tion MPS ? 0 1 O 1 Etat maximum 0 Etat 0 maximum 1 en passant par l'état 0 Etat 0 maximum -1 courant +1 1 en passant par l'état 1 Etat 0 maximum -1 courant -1 Selon un mode de réalisation, les états de PEM mis à jour sont multiplexés avec les états de PEM courants de telle sorte i15 que des mises à jour se produisent seulement lorsqu'un nouveau mot de code est décodé. Du fait qu'il est observé en parallèle au niveau du quatrième niveau, le mot de code RLZ suivant (pour le nouvel état de PEM) est déterminé en utilisant la même logique que celle utilisée pour convertir l'état de PEM en un code et pour le dilater selon un masque, en utilisant la table 11, et il est généré sur la base du nouveau k généré en utilisant la table 12. Selon d'autres modes de réalisation, la sortie de la logique de mise à jour d'état de PEM (table 15) peut être couplée à l'entrée de l'état pour la logique de conversion de code (logique supplémentaire identique à la logique 1101) afin de générer la nouvelle valeur de k. Une fois que le quatrième niveau est terminé, le nouvel état de générateur de bit et le nouvel état de PEM sont écrits en mémoire. Il est à noter que la valeur de comptage, le bit de continuation, la valeur de LPS et la valeur de MPS peuvent tous varier. Egalement au niveau du cinquième niveau, le train de données codées est décalé jusqu'au mot de code suivant. Cette opération de décalage est terminée au niveau du sixième niveau. 1 0 Un mode de réalisation du décaleur de la présente invention est représenté sur la figure 15. Par report à la figure , le décaleur 1550 inclut des registres 1500 à 1503, un décaleur en tonneau 1504, un accumulateur 1505 et une unité de dimension de mot de code 1506. Les registres 1500 et 1501 sont couplés pour recevoir les données codées. Le registre 1500 est également couplé au registre 1501. Le registre 1501 est couplé au registre 1502. Le registre 1502 est couplé au registre 1503 et au décaleur en tonneau 1504. Le registre 1503 est également couplé au décaleur en tonneau 1504. L'accumulateur 1505 est également couplé au décaleur en tonneau 1504. L'unité de dimension de mot de code 1506 est couplée pour recevoir l'indication R3, la valeur k et un retour provenant du décaleur en tonneau 1504 et elle émet en sortie un signal qui est couplé à l'accumulateur 1505. Selon le mode de réalisation préféré, les registres 1501 à 1503 sont des registres à 16 bits, le décaleur en tonneau 1504 est un décaleur en tonneau de 32 bits à 13 bits et l'accumulateur 1505 est un accumulateur à 4 bits. Les registres 1500 et 1501 acceptent des mots de 32 bits provenant du FIFO et les registres 1502 et 1503 produisent 32 bits d'entrée appliqués sur le décaleur en tonneau 1504. Au moins 32 bits des données non décodées sont appliqués sur le décaleur en tonneau 1504 en permanence. Les quatre registres 1500 à 1503 sont initialisés à l'aide des deux mots de 32 bits des données codées pour commencer. L'unité de dimension de mot de code 1506 détermine si un mot de code à "1" est présent et s'il en est ainsi, combien de bits après le "1" font partie du mot de code courant. Selon un mode de réalisation, I'unité de dimension de mot de code 1506 fonctionne comme représenté dans la table 16 qui suit Table 16 - Logique de bloc de dimension de mot de code Bit de mot de code Bit de mot de code R3? Sortie 0 x x 1 1 1 x k+1 1 x 0 k+1 1 0 1 k+2 Il est à noter que k est le paramètre de longueur de passe qui décrit le code, c'est-à-dire R2(k) ou R3(k), et "x" indique des valeurs "ne pas prêter attention". L'accumulateur 1505 est un accumulateur à quatre bits utilisé pour commander le décaleur en tonneau 1504. L'accumulateur 1505 voit sa valeur augmenter du fait de la valeur entrée depuis l'unité de dimension de mot de code 1506. Lorsque l'accumulateur 1505 est en dépassement (par exemple chaque fois que la valeur de comptage de décalage est de 16 ou plus), les registres 1501 à 1503 sont verrouillés sur le décalage. Chaque autre décalage de 16 bits fait qu'un nouveau mot de 32 bits est demandé en requête depuis le FIFO. L'entrée appliquée sur l'accumulateur 1505 est la dimension du mot de code, laquelle est déterminée par le code courant et par le premier ou les deux premiers bits du mot de code courant. Il est à noter que dans certains modes de réalisation, les registres 1501 à 1504 doivent être initialisés avec des données codées avant que le décodage ne commence. Il est à noter que le décodeur pipeline de la présente invention ne prédécode pas des valeurs de comptage de passes pour chaque case de contexte avant le début du modèle de contexte. De ce fait, l'information d'état stockée dans la mémoire inclut un état de valeur de comptage de passes invalide. Un nouveau mot de code est décodé pour déterminer le bit suivant lorsqu'un état de valeur de comptage de passes invalide se produit pour une case de contexte. Si une mémoire externe est remise à zéro pendant l'initialisation, un état de tous les zéros doit indiquer qu'un nouveau mot de code doit être décodé. Par conséquent, une valeur de comptage de passes pour chaque case de contexte n'a pas à être prédécodée avant le début de la génération des bits. Si les cases de contexte ont nécessité un prédécodage, toutes les cases de contexte nécessiteront d'avoir au moins un mot de code, que celui-ci ou ceux-ci soient utilisés ou non. Puisqu'il est commun de disposer des cases de contexte qui sont inutilisées pour des données données, ceci influence le rendement de compression. Même si la réduction de compression n'est pas significative, un prédécodage complique un codeur par logiciel non en temps réel et rend un codeur par logiciel en temps réel extrêmement difficile à mettre en oeuvre. Mémoire sur puce Une mémoire sur puce peut être utilisée pour stocker l'information d'état pour chaque case de contexte. Une mémoire sur puce permet un fonctionnement à vitesse plus élevée et réduit la valeur de comptage d'entrée/sortie (I/O) (ce qui réduit les coûts d'intégration). Selon un mode de réalisation donné, une mémoire sur puce stocke seulement suffisamment d'information d'état pour des générateurs de bits plus petits et utilise une mémoire externe pour l'information d'état supplémentaire si nécessaire. De multiples groupes de mémoires peuvent être utilisés pour réduire l'l/O requis en utilisant la mémoire interne pour certains groupes et une mémoire externe pour d'autres groupes. La mémoire sur puce peut être utilisée en tant que cache pour stocker une information provenant de contextes utilisés en commun. L'information peut alors être appliquée en vue d'une utilisation par le système de décodage au lieu que l'on ait accès à l'information depuis une mémoire externe. Dans certains modes de réalisation, une mémoire une puce peut seulement être utilisée pour stocker la partie de poids faible des valeurs de comptage de passes plus importantes et cette mémoire serait une mémoire à accès externe seulement à la fin d'une passe ou lors d'un décomptage requis qui accède à un bit de poids fort. Réduction du retard de ré-utilisation de la case de contexte Le retard de ré-utilisation de la case de contexte est une combinaison de deux effets. Après que le modèle de contexte détermine la case de contexte courante, un retard est requis après l'utilisation d'une case de contexte donnée avant qu'elle puisse être utilisée à nouveau. Un autre retard est requis après l'utilisation d'une case de contexte contenue dans un groupe de cases de contexte avant qu'un autre élément du même groupe ne i15 puisse être utilisé à nouveau. Un retard est dû à l'utilisation de multiples groupes de mémoires pour augmenter la largeur de bande. Par exemple, en utilisant deux groupes de RAM, les cases de contexte sont divisées en deux jeux, un premier jeu qui utilise un premier groupe de RAM et un second jeu qui utilise un second groupe de RAM. Les accès aux groupes et par conséquent l'utilisation de deux jeux de cases de contexte sont réalisés en alternance. Tandis que l'un des groupes se voit effectuer une lecture quant à une information de contexte, I'autre se voit effectuer une écriture. Ceci signifie que le retard de revisite de contexte est un nombre pair de cycles d'horloge. Le second effet est constitué par le fait qu'avant que la RAM pour une case de contexte donnée ne soit lue, un temps suffisant doit s'être écoulé puisqu'elle a été utilisée en dernier pour calculer l'information d'état correct (état de PEM mis à jour et état de générateur de bits mis à jour), pour écrire dans la RAM et pour réaliser un décodage jusqu'au mot de code suivant. Ceci nécessite que toutes les opérations qui vont du second niveau du pipeline au sixième niveau soient terminées. Il existe certaines solutions pour réduire le délai de revisite de case de contexte. Selon la présente invention, le délai de revisite de case de contexte peut être réduit sur la base de la notion consistant en ce que le modèle de contexte peut indiquer au décodeur que des utilisations successives de la même case de contexte sont réalisées. Lorsque ceci se produit, les données de case de contexte qui doivent être écrites peuvent être appliquées pour une utilisation suivante. C'est-à-dire qu'au lieu que les données soient écrites puis lues dans la mémoire, les données peuvent être appliquées directement pour utilisation. Dans ce cas, les opérations d'écriture et de lecture supplémentaires dans la mémoire peuvent être évitées. Selon un autre mode de réalisation, lorsque des utilisations excessives de la même case de contexte sont réalisées, une case de contexte i15 spéciale peut être utilisée. Ceci réduit la compression dans certains cas. Cependant, si des utilisations successives du même contexte se produisent de façon suffisamment non fréquente, la compression réduite ne se produit pas pour entraver la performance. Cette case de contexte spéciale peut être une case de contexte "sans code" ne nécessitant aucune RAM supplémentaire. Selon un autre mode de réalisation, la case de contexte originale peut être séparée en cases de contexte "normale" et "spéciale". Une unique case de contexte peut être utilisée en tant que "case spéciale" ou peut être une case de contexte normale. Le délai de revisite de case de contexte peut également être réduit en accélérant le traitement de la seconde requête et des suivantes dans le décodeur. En d'autres termes, le temps de traitement de deux bits dans la même case de contexte consécutivement peut être inférieur au temps de traitement de façon indépendante. Par exemple, des opérations telles qu'une conversion d'état en code sont plus aisées. Mise en oeuvre du PEM et du modèle de contexte Le PEM utilisé selon la présente invention utilise le même schéma d'adaptation indépendamment de la quantité de données disponibles. Selon un autre mode de réalisation, une approche bayesienne pour réaliser une adaptation initialement plus rapidement et pour réaliser une adaptation plus lentement lorsque davantage de données sont disponibles peut être utilisée pour une estimation davantage précise. En outre, le PEM peut être fixé dans un circuit prédiffusé programmable (FPGA) ou dans un automate/table d'états de PEM programmable. Les modèles de contexte dépendent de l'application. Par conséquent, selon un mode de réalisation, un modèle de contexte externe est utilisé. Des modèles de contexte programmables peuvent également être utilisés. Un mode de réalisation du système de décodage La figure 16A est un schéma fonctionnel d'une mise en oeuvre du système de décodage de la présente invention. Par report à la figure 16A, des blocs 1601 à 1607 sont des circuits prédiffusés programmables (FPGA). Des blocs 1601 à 1604 comprennent des générateurs de bits munis d'une capacité de décalage, lesquels sont couplés pour recevoir des données codées provenant de l'interface FIFO et une information de comptage (par exemple un état de générateur de bits) provenant de la mémoire. Les blocs de générateur de bits 1601 à 1604 sont également couplés au bloc 1605 pour recevoir un état de PEM depuis la mémoire (via le bloc 1605) de telle sorte que le bloc 1605 mette en oeuvre le PEM. Des blocs de générateur de bits 1601 à 1604 sont également couplés au bloc 1601 et ils produisent une valeur de comptage et une adresse de mémoire de PEM. Le bloc 1606 est également couplé au bloc 1607. Le bloc 1607 produit une sortie pour un circuit d'interface tel qu'un interface vidéo et il peut être couplé à une mémoire de tampon de ligne. Les blocs 1606 et 1607 mettent en oeuvre le modèle de contexte de la présente invention ainsi que l'interface de la présente invention. Ainsi, comme représenté sur la figure 16A, les quatre générateurs de quatre bits (blocs 1601 à 1604) génèrent un unique train d'entrées produit à partir d'un FIFO afin de traiter un train de données codées tandis que le PEM (bloc 1605) traite l'état de PEM pour chacun des quatre générateurs de bits. Les quatre générateurs de bits représentés fonctionnent ensemble en tant que pipeline de ressource synchrone. La figure 17 représente comment les quatre générateurs de bits (par exemple les blocs 1701 à 1704) fonctionnent avec le modèle de contexte (par exemple les blocs 1706 et 1707) et le module d'estimation de probabilité (par exemple le bloc 1705). Afin d'éclairer la structure du pipeline, des opérations pour le premier bit sont représentées de façon ombrée. Il est à noter que les ressources de générateurs de bits disposent de temps morts lorsque l'information requise pour réaliser l'opération suivante n'est pas disponible. Il est à noter que les générateurs de bits fonctionnent en parallèle, moyennant des temps de démarrage i15 décalés, de telle sorte que chacun des troisième, quatrième, cinquième et sixième états du pipeline soit réalisé par l'un des générateurs de bits à la fois. En d'autres termes, I'un des niveaux 3 à 6 est en train d'être réalisé lors de chaque cycle. Du fait de l'utilisation d'un agencement décalé de générateurs de bits, la présente invention n'est pas limitée par la boucle de retour qui existe entre le sixième niveau et le troisième niveau. Chaque générateur de bits réalise le décalage jusqu'au mot de code suivant lors du sixième niveau avant que la génération de bits ne puisse commencer à nouveau au niveau du troisième niveau. Pour un unique générateur de bits, lorsque les ressources de l'un quelconque des troisième, quatrième, cinquième ou sixième niveau sont en train d'être utilisées, les ressources des autres niveaux ne disposent pas de l'information appropriée pour leur permettre de fonctionner. Ainsi, le décalage des générateurs de bits permet à chacun des quatre niveaux de fonctionner en parallèle. Les troisième et quatrième niveaux sont appelés traitement de mot de code du générateur de bits tandis que les cinquième et sixième niveaux sont appelés partie de décalage du générateur de bits. Selon un mode de réalisation, la présente invention utilise un multiplexage par répartition temporelle du traitement de mot de code et un décalage est utilisé pour créer deux générateurs de bits à partir d'une partie de traitement de mot de code et d'une partie de décalage. En d'autres termes, les composants câblés en dur pour un générateur de bits jouent le rôle de deux générateurs de bits virtuels. Moyennant une telle configuration, deux générateurs de bits et deux décaleurs doivent être utilisés par multiplexage par répartition temporelle afin de produire le même décodage que les quatre générateurs de bits de la figure 16A. Dans ce cas, les données doivent toujours être dans l'ordre approprié de telle sorte que les données correctes soient appliquées à chacun des deux générateurs de bits virtuels. La figure 16B est un schéma fonctionnel d'un mode de 1 5 réalisation d'un tel système. Par report à la figure 16B, un interface FIFO est couplé à des décaleurs 1611 et 1612. Les décaleurs 1611 et 1612 sont respectivement également couplés aux BG 1613 et 1614. Les BG 1613 et 1614 sont également couplés à la mémoire de PEM via le bloc 1605, le modèle de contexte mis en oeuvre à l'aide des blocs 1606 et 1607 et la mémoire de valeur de comptage de la même manière que sur la figure 16B. Il est à noter que dans ce mode de réalisation, les BG 1613 et 1614 n'ont pas à réaliser un décalage. Codage temps réel à mémoire limitée Une quantité significative de tamponnage est nécessaire pour le codage. Considérons les raisons pour lesquelles un système peut avoir besoin d'un tamponnage. L'ordre des données dans le codeur est le même qu'en dehors du décodeur. Cependant, l'ordre du mot de code peut être relativement différent du fait de la caractéristique de bit fractionnaire de bon nombre de codeurs d'entropie. N'importe lequel de multiples codeurs peut coder plusieurs bits avant d'émettre un mot de code. Du fait du parallélisme, les bits dirigés sur un quelconque codeur donné peuvent être séparés par n'importe quel nombre de bits dans le train original. Ces bits d'intervention sont dirigés sur d'autres codeurs et peuvent créer plusieurs centaines à plusieurs milliersde mots de code. Le décodeur a besoin cependant du mot de code pour le premier bit en premier. Ainsi, le réordonnancement des mots de code est essentiel pour ce schéma. Un procédé d'entrelaçage de ces mots de code est présenté. L'entrelaçage de plusieurs trains de codes place la complexité du système sur le codeur. Les trains de codes individuels sont tamponnés tandis que les mots de code sont entrelacés dans le train de données. Une quantité importante de mémoire peut être requise, tout particulièrement si les données pour une case de contexte sont de loin plus en pente que pour les autres ou sont rarement appelées. Dans ces deux cas, le premier bit qui doit être codé dans le mot de code est éloigné de nombreux bits du dernier et plusieurs autres mots de code voire plusieurs milliers sont créés par les données d'intervention. Ces mots de code doivent être stockés. Pour un système équilibré ou symétrique, lorsque le codage est effectué en temps non réel sur un ordinateur (moyennant des lots de mémoires et/ou de mémoires virtuelles), ceci ne pose pas de problème. Cependant, cette mémoire est d'un coût significatif lors d'une mise en oeuvre en VLSI (circuit intégré à grande échelle d'intégration) temps réel. Afin de réaliser un codage avec une mémoire limitée, il est nécessaire de disposer d'une certaine signalisation entre le codeur et le décodeur, soit explicite, dans le train, soit implicite, lorsque la limite mémoire a été atteinte et ceci constitue une façon habile d'effectuer une restauration sans perte. Ces procédés ont de fait un impact variable sur le rendement du codage. Il est à noter qu'une signalisation implicite et explicite peut être mise en oeuvre à l'aide d'un circuit externe au décodeur, éventuellement en tant que partie du codeur, si le décodeur comporte une entrée qui provoque le décodage d'un nouveau mot de code. Cette entrée combinée à la sortie de statut suffisante pour synchroniser le circuit externe vis-à-vis du décodeur constitue un "crochet" qui permet un décodage temps réel dans le futur. Signalisation dans le flux Selon un exemple de signalisation dans le flux, les définitions des codes R2(k) et R3(k) sont modifiées de manière à inclure des passes de longueur non maximum des MPS qui ne sont pas suivis par un LPS. Ceci est réalisé en additionnant des passes de longueur non maximum de MPS qui ne sont pas suivis par un LPS. Ceci est réalisé en additionnant un bit au mot de code qui est produit moyennant la probabilité la plus faible. Puis si nécessaire, il y a des préfixes décodables de façon unique pour des valeurs de comptage de passes de longueur non maximum. La table 17 représente un code R2(2) muni de cette propriété. Ce système a un impact mineur sur le rendement du codage lorsqu'il n'y a pas de dépassement de tampon et un impact davantage significatif lorsqu'il y a un dépassement. Table 17 données non mot de code données non mot de code codées codées 0000 O 000 111000 0001 100 o00 1 1001 001 101 O 1 11 01 01 110 1 1111 _ _ _ _ _ Signalisation implicite Une manière de réaliser un codage avec une mémoire limitée comprend une signalisation implicite pour modéliser les tampons au niveau du décodeur. Un procédé pour réaliser cela consiste à disposer du travail du codeur moyennant des tampons de réordonnancement finis. Un tampon peut être assigné à chaque codeur parallèle. Lorsqu'un mot de code est commencé, I'espace est réservé dans le tampon approprié pour le mot de code final et un repère-temps est maintenu avec chaque mot de code pour déterminer l'ordre des mots de code qui doivent être placés sur le canal. Lorsque le dernier espace contenu dans un tampon est réservé pour un nouveau mot de code, alors certains mots de code sont placés dans le train de bits comprimé, qu'ils aient ou non été complètement déterminés. Le mot de code partiel muni du repère-temps le plus faible est complété en choisissant un mot de code qui est court et qui spécifie de façon correcte les symboles reçus jusqu'ici. 1 0 Par exemple, dans un système de codeur R, s'il est nécessaire de compléter prématurément un mot de code pour une série de 100 MPS dans un code de passe moyennant une longueur de passe maximum de 128, alors le mot de code pour 128 MPS peut être utilisé puisqu'il spécifie de façon correcte les 100 premiers i 5 symboles. Lorsque le mot de code muni du repère-temps le plus faible a été complété, il peut être ôté du tampon de réordonnancement et ajouté au train de codes. Ceci peut permettre le positionnement de mots de code complétés précédemment dans le train de codes également. Si le fait de forcer la fin d'un mot de code partiel conduit à l'enlèvement d'un mot de code hors du tampon complet, alors le codage peut se poursuivre. Si un tampon est encore complet, alors le mot de code muni du repère-temps le plus faible doit à nouveau être complété et ajouté au train de codes. Ce processus se poursuit jusqu'à ce que le tampon qui était complet ne le soit plus. Un tel système de codeur est représenté sur la figure 18. Par report à la figure 18, le modèle de contexte (CM) 1801 est couplé pour recevoir des données brutes et pour appliquer les données sur des codeurs 1802 et 1803. Selon un mode de réalisation, le CM 1801 envoie des données aux codeurs 1802 et 1803 à chaque autre mot de code. Les codeurs 1802 et 1803 codent les données et envoient les données pour qu'elles soient respectivement tamponnées dans les tampons 1804 et 1805. Chacun des tampons 1804 et 1805 inclut des repères-temps pour indiquer l'ordre temporel des données. Un entrelaceur 1806 demande en requête des données contenues dans les tampons 1804 et 1805 pour créer des données de canal entrelacées. Un signal d'indication de file d'attente complète est produit par chacun des tampons 1804 et 1805 sur les codeurs 1802 et 1803 et sur l'entrelaceur 1806 pour indiquer l'état des tampons 1804 et 1805 en tant que mécanisme pour effectuer une requête lorsque des données sont envoyées à chacun des tampons 1804 et 1805 depuis son codeur respectif et lorsque les données sont appliquées en tant que partie du train de données entrelacées. Le décodeur pour ce procédé de signalisation implicite garde trace d'une information supérieure à l'information pour le codeur. Le décodeur maintient les tampons de réordonnancement avec des repères-temps et des mots de code partiels. Le décodeur n'a pas besoin de cela pour effectuer un décodage moyennant des circonstances normales mais seulement pour déterminer lorsque le codeur a terminé un mot de code partiel du fait qu'un tampon était plein. Lorsque le décodeur commence à décoder un mot de code, il place un repère-temps dans la file d'attente de réordonnancement. Lorsque le décodeur termine le décodage d'un mot de code particulier, il ôte le repère-temps de la file d'attente de réordonnancement. Si l'un des tampons est plein, alors le mot de code partiel présentant le repère-temps le plus faible doit être ôté du tampon. N'importe quelles sorties supplémentaires qui n'ont pas été utilisées par ce mot de code sont écartées du fait qu'elles ne correspondent pas à des données réelles. Par exemple, le décodeur peut avoir reçu un mot de code indiquant 128 MPS. Après décodage de 100 MPS, le décodeur dispose d'un tampon de repère-temps complet et il détermine que le mot de code correspondant à 128 MPS a été prématurément terminé par le codeur. Le décodeur ignore les 28 MPS restants qui ont été décodés et il utilise un nouveau mot de code à l'instant suivant o ce contexte est observé. De façon similaire au codeur, le décodeur continue à écarter les mots de code sauf si le tampon qui était plein n'est plus plein. La figure 19 représente un schéma fonctionnel d'un mode de réalisation d'un système de décodeur. Par report à la figure 19, des données de canal sont reçues par le tampon 1901 qui applique les données sur les codeurs 1902 et 1904 en vue d'un décodage. Les codeurs 1902 et 1904 décodent des données. Les données décodées sont demandées en requête par le CM 1906 qui émet en sortie les données en tant que données brutes originales. Des tampons de repère-temps 1903 et 1905 indiquent l'état de leur codeur. Par exemple, ils indiquent lorsque le codeur est plein de données. Lorsque c'est le cas, une indication de file d'attente pleine est produite sur le codeur, ce qui indique que le codeur ne peut plus recevoir de données pour les décoder à cet instant. Lorsque cette condition n'existe plus, le codeur peut recevoir des données pour réaliser un décodage à nouveau. Signalisation explicite Un exemple de signalisation explicite est constitué par une case de contexte "statut" séparée qui repose sur le statut des tampons. Ces données sont codées et envoyées à un décodeur séparé, éventuellement mais non nécessairement à un décodeur dédié, dans le train de codes. Cette case de contexte est décodée une fois pour chaque mot de code entrelacé. On peut ainsi savoir si oui ou non il s'agissait d'un mot de code entrelacé régulier (pas de dépassement de tampon) ou d'un mot de code entrelacé "forcé" (dépassement de tampon). La réponse à "forcé" est fonction de la conception. Une réponse possible consiste à considérer le signal d'un bit en tant qu'équivalent du préfixe dans le cas de la signalisation dans le train. Lorsque le bit de dépassement est actif, alors le code In est interprété en tant que passe de valeurs de MPS sans valeur de LPS. Décodeur de contrôle Comme mis en exergue précédemment, le décodeur ou les décodeurs disposent d'un ordre déterministe pour demander en requête des mots entrelacés contenus dans le train de données. Il est nécessaire que l'unité de codeur modélise ce traitement pour obtenir le même ordre. (Il est à noter qu'avec la plupart des codes de longueur variable, l'ordre de génération au niveau des codeurs est significativement différent de l'ordre de consommation au niveau des décodeurs). Ce modèle peut être relativement complexe en fonction de la conception de l'unité de décodeur. Un procédé permettant de modéliser cet ordre consiste à obtenir par réplique l'unité de décodeur complètement au niveau de l'unité de codeur. Ainsi, la conception est assurée d'inclure la totalité de la mémoire et la totalité de la latence pour n'importe quelle conception donnée du modèle au niveau du décodeur. Selon la présente invention, les codeurs produisent des mots de code à partir de trains indépendants. Ces mots de code sont regroupés binairement selon des mots entrelacés. Ces mots entrelacés sont demandés en requête en tant que base nécessaire i 5 par le décodeur de contrôle, c'est-à-dire pour recréer le train de données. Chaque mot entrelacé demandé en requête est à la fois appliqué sur le décodeur de contrôle et est placé sur le canal (ou dans le tampon de canal). Un tel système est représenté sur la figure 20. Par report à la figure 20, des données d'entrée sont reçues par un séquenceur 2001 tel qu'un modèle de contexte ou automate fini. Le séquenceur 2001 distribue des données sur chacun des codeurs 2002 à 2004 en succession. Chacun des codeurs 2002 à 2004 code des données reçues puis les stocke respectivement dans les tampons 2005 à 2007. Un entrelaceur 2008 est couplé pour recevoir des données qu'il demande en requête dans les tampons 2005 à 2007. L'entrelaceur 2008 demande en requête et émet en sortie les données codées à partir des tampons 2005 à 2007 conformément à l'ordre d'appel au moyen du décodeur de contrôle 2009. Une logique de condition de tampon 2010 est couplée à l'entrelaceur 2008 et elle indique l'état des tampons 2005 à 2007 en tant que façon d'informer l'entrelaceur 2008 d'une signalisation implicite ou explicite pour le décodeur. Il est à noter que le système peut inclure plus de trois codeurs ou moins de trois. Les mots de code sont délivrés aux décodeurs à la demande et les jetons sont décodés selon le même ordre séquentiel que selon lequel ils ont été codés. Un système de décodeur est représenté sur la figure 21. Par report à la figure 21, des données de canal codées sont reçues par un tampon de canal 2101. Le tampon de canal 2101 applique des données à des codeurs 2102 à 2104 afin de décoder les données. Les résultats décodés sont envoyés à un séquenceur 2105 tel qu'un modèle de contexte ou qu'un automate fini, lequel émet en sortie les données. Codes non binaires La présente invention peut être utilisée pour des codes non binaires, par exemple des codes Tunstall et Huffman. Codes Tunstall Le codage et le décodage parallèles de la présente invention peuvent utiliser des codes non binaires tels que les codes Tunstall. Les codes Tunstall sont des codes de longueur variable à longueur fixe. En d'autres termes, les codes Tunstall reçoivent une entrée de longueur variable et produisent une sortie de dimension fixe pendant le codage. Par conséquent, le train de données codées qui en résulte comprend des mots de code de la même dimension. Un mode de réalisation d'un code Tunstall est présenté dans la table 18. Il est à noter que le code représenté dans la table 18 est équivalent aux données non codées ou code R2(0) à I'exception du fait que le code est utilisé moyennant un bloc tridimensionnel. Table 18 - Code Tunstall binaire de dimension 3 pour une probabilité de MPS de 0,5 Entrée Sortie mmm 1 11 mml 110 mlm 101 mll 100 Imm 011 Iml 010 lIm 001 Ili 000 Dans la table 18, "m" indique le MPS et "1" indique le LPS. Un autre exemple d'un code Tunstall est présenté dans la table 21. Table 19 - Code Tunstall binaire de dimension 3 pour une probabilité de MPS de 0,6 Entrée Sortie mmmm 1 11 mmml 110 mml 101 mlm 100 mil 011 Imm 010 Iml 001 Il 000 Il est à noter que ce code est bon pour des probabilités proches de 0,60 et en particulier, qu'il se comporte mieux que soit le code R2(0) soit le code R2(1) pour des probabilités se situant entre 0,57 et 0,66. Ainsi, même moyennant une dimension de sortie petite, les codes Tunstall se comportent mieux que les codes R dans l'espace situé entre les deux premiers codes R. Des codes Tunstall de sortie plus importants s'approchent éventuellement arbitrairement de la limite d'entropie. Selon la présente invention, la dimension de sortie peut être fixée à n'importe quelle longueur binaire. Du fait de la sortie de longueur fixe, toutes les opérations d'ordonnancement de données doivent seulement être réalisées sur des mots de code de cette dimension. Par exemple, la dimension de sortie peut être de 8 ou de 12 bits. Les mots de code à 8 bits sont tout spécialement utiles pour des fonctionnements par logiciel. Du fait que les mots de code présentent une dimension fixe, seulement un décalage simple doit être réalisé par chacun des blocs de décodage. Cette logique de décalage permet de réaliser un décalage du même nombre de positions de bit chaque i 5 fois indépendamment du mot de code contenu dans le train puisque chacun des mots de code présente la même dimension. Par conséquent, en utilisant des codes Tunstall en conjonction avec la présente invention, les composants câblés en dur de décalage et la fonctionnalité requise pendant le décodage sont rendus plus simples. Codage et décodage Huffman à base de temos oar compression d'image fixe JPEG Un autre système typique est une modification du codage Huffman JPEG. (Il est à noter que ce système convient également pour un codage Huffman MPEG). Dans ce cas, la sélection des ressources en composants câblés en dur (c'est-à-dire la division du train de données d'entrée) est réalisée à l'aide d'un automate fini séquenceur. Les jetons non codés sont délivrés à des codeurs adjacents dans l'ordre. Par exemple, s'il y a trois codeurs, alors chaque codeur reçoit chaque troisième jeton. Puisque les mots de code sont de longueur variable, une concaténation selon des mots de longueur fixe et un réordonnancement pour un entrelaçage de canal sont réalisés comme auparavant. Un tel système est représenté sur la figure 20. L'accélération de ce système est directement proportionnelle au nombre de codeurs. Le système mentionné ci-avant serait pratiquement trois fois plus rapide qu'un unique codeur. Ainsi, pour un unique décodeur qui décode environ 20 millions de jetons par seconde, le système à trois décodeurs fonctionnerait à 60 millions de jetons par seconde. Selon un autre exemple, cinq décodeurs à 20 millions de jetons/seconde fonctionneraient à 100 millions de jetons par seconde. Il est à noter que ceci constitue le pire débit de jetons pour une télévision haute définition. Ce système a également pour avantage que le tamponnage rendu nécessaire par le codeur est faible et déterministe (il ne dépend pas des données). Du fait qu'un codage Huffman crée un mot de code pour chaque jeton et que les jetons sont délivrés également entre les codeurs, la longueur de tampon du cas le pire peut être déterminée. On considère que le code Huffman présente une longueur de mot de code minimum m, une longueur de mot de code maximum L et une dimension de mot entrelacé w. Puisque chaque codeur émet au moins les m bits minimum pour au plus I bits maximum tous les n jetons de données, n étant le nombre de codeurs, le pire cas se produit lorsqu'un codeur dispose de tous les mots de code minimum et qu'un autre dispose de tous les mots de code maximum. Le nombre de jetons avant qu'un mot de code entrelacé complet ne soit créé est de (r 11± 1) Ainsi, le tamponnage nécessaire pour le pire cas est Certains nombres typiques peuvent être tels que m=3, L=16, w=32. Ainsi, le tamponnage nécessaire serait de (f3-l+1 1) *16= 192 bits pour chaque unité de codeur. Codage Huffman adaptatif Il y a deux modes de réalisation du codage Huffman adaptatif avec ce procédé parallèle. Selon un exemple de données, il y a plusieurs codes Huffman disponibles en fonction de la distribution courante des probabilités d'un alphabet de symboles. Les valeurs de données peuvent présenter une dimension de n'importe quel nombre de bits. Il y a un mappage biunivoque entre les mots de code et les valeurs de données. Ce type de système peut utiliser la probabilité des symboles en tant que séparateur de train ou que fonction de mise en parallèle. Outre ces différences, I'entrelaçage de la présente invention fonctionne exactement comme décrit. Une autre possibilité est que le code Huffman réalise une commutation sur un mot de code qui représente un symbole donné sur la base de la probabilité adaptative des symboles. Ce code peut être obtenu par répliques et mis en oeuvre ou implémenté de la même façon que le codage Huffman à base de temps JPEG. Modèle de contexte JPEG mis en oeuvre avec des codeurs R Le standard de compression d'image JPEG sans base de temps produit une séquence de contextes pour décrire des coefficients de transformation quantifiés. Ce modèle de contexte est décrit en détail dans JPEG Still Image Data Compression Standard.. Bien que le standard spécifie le codeur QM pour le codage d'entropie, n'importe quel codeur d'entropie binaire sans perte pourrait être utilisé. Par ailleurs, plusieurs codeurs d'entropie binaires pourraient être utilisés pour manipuler différents contextes et ces codeurs fonctionneraient en parallèle avec la présente invention. En particulier, plusieurs codeurs QM ou plusieurs codeurs R pourraient être utilisés avec le modèle de contexte JPEG pour un décodage rapide. Codeurs mixtes Il est à noter que moyennant l'entrelaçage de base, le modèle peut satisfaire n'importe quels codes pour autant que le décodeur est déterministe. Ainsi, par exemple, des codeurs QM et des codeurs R pourraient être utilisés en parallèle. Des compresseurs avec perte tels que des JPEG pourraient être utilisés et pourraient être mélangés à des compresseurs sans perte. Les données pourraient même être de types différents. Modèle de contexte de codeur QM et codeur Huffman Dans un système de compression de données de la présente invention, un seul contexte peut être utilisé pour une seule valeur. Par exemple, une distribution de probabilités spécifique peut être codée à l'aide d'un code Huffman tel que représenté dans la table 20. Dans la table 20, les valeurs de -3 à i15 +3 sont codées. Table 20 - Code Huffman pour un petit entier Valeur Probabilités estimées Mot de code -3 0,0625 0000 - 2 0,0625 0010 -1 0,25 0 1 0 0,25 11 1 0,25 10 2 0,0625 0011 3 0,0625 0001 Si le code de la table 20 est utilisé en tant qu'élément de génération de bits, alors un contexte est utilisé pour décoder la valeur. Selon un mode de réalisation particulier de la présente invention, des codes non binaires multiples peuvent être utilisés pour différents types de valeurs. Dans ce cas, le modèle de contexte permettrait d'obtenir la valeur suivante à partir du contexte non binaire approprié au lieu de permettre l'obtention de plusieurs résultats de décision binaires, tel que réalisé dans l'art antérieur. Par exemple, si un entier faible doit être décodé binaire dans la même plage de -3 à +3, de multiples contextes doivent être utilisés. Un processus de décodage typique est représenté sur la figure 22 sur laquelle les contextes sont étiquetés 1 à 6. Le modèle de contexte utiliserait tout d'abord le contexte #1 pour déterminer si la valeur inconnue est égale à zéro. Après réception de la réponse, soit la valeur inconnue est connue soit d'autres questions concernant leurs propres contextes doivent recevoir une réponse. Ainsi, un décodage d'une unique valeur peut nécessiter de multiples contextes. Pour des valeurs plus importantes, il peut être nécessaire de décoder pratiquement deux contextes pour chaque bit de la valeur qui est décodée. En i15 utilisant un unique contexte, la présente invention évite l'utilisation de plusieurs contextes pour décoder une seule valeur. En outre, en utilisant des mots de code non binaires, le décodage peut être plus rapide et le modèle de contexte peut être rendu plus simple. Il est à noter que le circuit de réordonnancement fonctionne de la même façon que des décisions binaires à ceci près qu'il fonctionne sur des mots de code qui représentent des valeurs complètes. Des systèmes semblables au standard de compression d'image JPEG sans base de temps permettent d'obtenir une compression élevée en utilisant des décisions binaires et en réalisant une adaptation avec chaque symbole comprimé. Cependant, le fait d'éclater l'amplitude d'un coefficient de transformation en plusieurs décisions binaires peut être très long. Jusqu'à 16 décisions binaires peuvent être nécessaires pour décoder un unique coefficient présentant une amplitude de 128. A l'opposé, un code Huffman permettrait de spécifier la valeur d'un coefficient à l'aide de seulement une seule opération. Le code Huffman ne serait pas efficace pour coder les décisions, telles que si oui ou non un coefficient particulier est à zéro. Moyennant le système d'entrelaçage de données, une approche hybride peut être utilisée. Un codeur QM peut être utilisé pour déterminer plusieurs sorties binaires mais alors, un code Huffman pourrait être utilisé pour spécifier la valeur réelle du coefficient. Les sorties de ces deux codes pourraient être entrelacées de la manière habituelle. Le code Huffman assurerait une augmentation importante de la vitesse pour certaines opérations tandis que l'utilisation du codeur QM pour d'autres opérations maintiendrait une rendement de compression élevé. 1 0 Entrelaçage audio et vidéo Un entrelaçage audio et vidéo constitue un problème du point de vue de l'un des systèmes audio-vidéo numériques comprimés à débit binaire faible. Un système d'entrelaçage vidéo numérique à débit binaire faible est représenté sur la figure 23. Par report à la figure 23, un codeur audio 2301 et un codeur vidéo 2302 appliquent des données codées depuis leurs sources audio et vidéo respectives. Les données codées sont demandées en requête par un dispositif de requête 2303 en fonction d'un décodeur de recherche de contrôle 2304. Les données codées sont émises en sortie sur le canal en tant qu'unique train entrelacé. Les données sont reçues dans un tampon de canal 2305 qui dirige les données sur soit le décodeur audio 2306 soit le décodeur vidéo 2307 sur la base de leur demande quant à des données. En réponse, le décodeur audio 2306 et le décodeur vidéo 2307 émettent en sortie des données originales selon un format reconstruit. Des données audio et vidéo sont transmises sur le même canal et doivent être décodées de façon synchrone. Des repères de train courant sont utilisés pour effectuer un distingo entre des données audio et vidéo. Les repères selon les procédés de l'art antérieur réduisent le rendement de compression. Moyennant l'entrelaçage de la présente invention, ces données peuvent être entrelacées sur la base de la demande des décompresseurs audio et vidéo sans la nécessité de repères. L'entrelaçage permet une compression optimum des données. Applications systèmes Une vertu d'un quelconque système de compression est constituée par la réduction des exigences en matière de mémoire pour un jeu de données. Le système parallèle de la présente invention peut être utilisé en remplacement dans n'importe quelle application présentement remplie par un système de codage sans perte. Ces applications incluent une compression pour fac-similé, une compression de base de données, une compression d'images graphiques en mode matriciel et une compression de coefficients de transformation selon des standards de compression d'image tels que JPEG et MPEG. La présente invention permet une mise en oeuvre d'un nombre relativement faible de composants câblés en dur efficaces ainsi que des mises en oeuvre par logiciel relativement rapides, si l'on effectue un bon choix même pour des applications qui ne nécessitent pas une vitesse élevée. La vertu réelle de la présente invention par rapport à l'art antérieur est constituée par la possibilité de fonctionnement à des vitesses très élevées, tout particulièrement pour le décodage. De cette manière, la présente invention peut utiliser totalement des canaux haute vitesse peu coûteux tels que des réseaux d'ordinateurs haute vitesse, des canaux de diffusion par satellite et terrestres. La figure 24 représente un système de ce type dans lequel un réseau de données diffusées ou d'ordinateurs haute vitesse applique des données à un système de décodage 2401 qui décode les données en parallèle pour produire des données de sortie. Un codeur d'entropie constitué par des éléments câblés en dur courants (tels que le codeur Q) ralentirait le débit de ces systèmes. Tous ces systèmes sont conçus moyennant un coût important de manière à présenter une largeur de bande élevée. Le fait de disposer d'un décodeur qui ralentit le débit est contraire à la productivité. Le système parallèle de la présente invention non seulement permet de faire face à ces largeurs de bande élevées mais il augmente de fait la largeur de bande efficace du fait que les données peuvent être transmises sous forme comprimée. Le système parallèle de la présente invention peut également s'appliquer àl'obtention d'une largeur de bande davantage efficace à partir de canaux modérément rapides tels que RNIS, CD-ROM et SCSI. Un tel système d'adaptation de largeur de bande est représenté sur la figure 25 tandis que des données provenant de sources telles qu'un CD-ROM, Ethernet, un interface standard de petit ordinateur (SCSI) ou de toute autre source similaire sont couplées à un système de décodage 2501 qui reçoit et décode les données afin de produire une sortie. Ces canaux sont encore plus rapides que certains codeurs courants. Souvent, ces canaux sont utilisés pour desservir une source de données qui nécessite plus de largeur de bande que le canal n'en a telle que des multi-médias basés sur vidéo temps réel ou ordinateurs temps réel. Le système de la présente invention peut i 5 réaliser la fonction d'adaptation de largeur de bande. Le système de la présente invention est un choix excellent pour une partie de codeur d'entropie d'un système vidéo temps réel tel que la télévision haute définition (HDTV) naissante et que les standards vidéo MPEG. Un tel système est représenté sur la figure 25. Par report à la figure 26, le système vidéo temps réel inclut un système de décodage 2601 qui est couplé à des données d'image comprimées. Le système 2601 décode les données et les émet en sortie sur un décodeur avec perte 2602. Le décodeur avec perte 2602 peut être la partie de transformation, de conversion de couleur et de sous- échantillonnage d'un décodeur HDTV ou d'un décodeur MPEG. Un moniteur 2603 peut être un moniteur de télévision ou un moniteur vidéo. Bien que de nombreuses variantes et modifications de la présente invention apparaîtront sans aucun doute à l'homme de l'art après lecture de la description qui précède, il est bien entendu que le mode de réalisation particulier représenté et décrit à titre d'illustration n'est en aucune façon destiné à constituer une limitation. Par conséquent, les références aux détails du mode de réalisation particulier ne sont pas destinées à limiter le cadre de la présente invention qui repose seulement sur les caractéristiques considérées comme étant essentielles. REVENDICATIONS 1. Procédé permettant de décoder un train de données d'une pluralité de mots de code, caractérisé en ce qu'il comprend les étapes de: assignation de parties du train de données à une pluralité de ressources de décodage; décodage des parties du train de données en utilisant la pluralité de ressources de décodage, au moins l'une de la pluralité de ressources de décodage décodant sa partie correspondante du train de données pendant des cycles successifs en pipeline. 2. Procédé selon la revendication 1, caractérisé en ce que ladite étape de décodage inclut l'étape de décodage des parties du train de données en pipeline. 3. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre l'étape d'ordonnancement du train de données selon un train de données ordonné. 4. Procédé selon la revendication 3, caractérisé en ce que ladite étape d'assignation inclut l'assignation des parties conformément à l'ordre du train de données. 5. Procédé selon la revendication 1, caractérisé en ce que la pluralité de ressources de décodage inclut une pluralité de codeurs QM. 6. Procédé selon la revendication 1, caractérisé en ce que la pluralité de ressources de décodage inclut une pluralité de décodeurs avec perte. 7. Procédé selon la revendication 1, caractérisé en ce que la pluralité de ressources de décodage inclut un premier type de décodeur et un second type de décodeur, le premier type de décodeur étant différent du second type de décodeur. 8. Procédé selon la revendication 7, caractérisé en ce que le premier type de décodeur comprend un codeur de longueur de passe et le second type de décodeur comprend un codeur Q. 9. Procédé selon la revendication 7, caractérisé en ce que le premier type de décodeur comprend un codeur binaire et le second type de décodeur comprend un codeur non binaire. 10. Procédé selon la revendication 7, caractérisé en ce que le premier type de décodeur comprend un décodeur sans perte et le second type de décodeur comprend un décodeur avec perte. 11. Procédé permettant de décoder un train de données d'une pluralité de mots de code, caractérisé en ce qu'il comprend les étapes de: détermination de la case de contexte courante recherche de l'état de décodeur pour la case de contexte dans une mémoire; et traitement de l'un des mots de code, y compris l'étape de décodage dudit un considéré des mots de code, les étapes de détermination, de recherche et de traitement étant réalisées selon des cycles successifs en pipeline. 12. Procédé selon la revendication 11, caractérisé en ce qu'il comprend l'étape de décalage du train de données jusqu'à un mot de code qui suit ledit un considéré des mots de code. 13. Procédé selon la revendication 11, caractérisé en ce que l'étape de recherche de l'état de décodeur inclut les étapes de recherche de l'état de PEM; et recherche de l'état de génération de bits. 14. Procédé selon la revendication 11, caractérisé en ce que l'étape de traitement inclut les étapes de génération d'un bit; et décodage dudit un considéré des mots de code de telle sorte que le bit soit généré avant le décodage dudit un considéré des mots de code. 15. Procédé selon la revendication 14, caractérisé en ce que les étapes de génération et de décodage sont réalisées selon des cycles successifs. 16. Procédé selon la revendication 11, caractérisé en ce que l'étape de traitement inclut les étapes de: décodage dudit un considéré des mots de code de telle sorte que le bit soit généré avant le décodage dudit un considéré des mots de code; et génération d'un bit. 17. Procédé selon la revendication 11, caractérisé en ce qu'il comprend en outre l'étape de décodage de l'état de PEM afin de déterminer un code pour décoder ledit un considéré de la pluralité de mots de code. 18. Procédé selon la revendication 11, caractérisé en ce qu'il comprend en outre l'étape de mise à jour de l'état de PEM afin de produire un état de PEM mis à jour après que ledit un considéré de la pluralité de mots de code a été décodé. 19. Procédé selon la revendication 18, caractérisé en ce que l'étape de mise à jour et l'étape de décodage sont réalisées au cours du même cycle. 20. Procédé selon la revendication 18, caractérisé en ce qu'il comprend en outre l'étape d'écriture de l'état de PEM mis à jour en mémoire. 21. Procédé permettant de décoder un train de données d'une pluralité de mots de code, caractérisé en ce qu'il comprend les étapes de: détermination de la case de contexte courante pour l'un de ladite pluralité de mots de code; recherche de l'état de l'automate d'estimation de probabilités (PEM) pour la case de contexte courante; recherche de l'état de générateur de bits pour la case de contexte courante; génération d'un bit représentant un premier bit dudit un considéré de la pluralité de mots de code qui sont en train d'être décodés; décodage de l'état de PEM pour déterminer un code permettant de décoder ledit un considéré de la pluralité de mots de code; et décodage dudit un considéré de la pluralité de mots de code en utilisant le code. 22. Procédé selon la revendication 21, caractérisé en ce que les étapes de génération d'un bit et de décodage dudit un considéré de la pluralité de mots de code sont réalisées lors de cycles successifs en pipeline. 23. Procédé selon la revendication 21, caractérisé en ce que les étapes de détermination, de recherche et de génération sont réalisées selon des cycles successifs en pipeline. 24. Procédé selon la revendication 23, caractérisé en ce que les étapes de génération d'un bit et de décodage de l'état de PEM sont réalisées selon des cycles successifs en pipeline. 25. Procédé selon la revendication 21, caractérisé en ce qu'il comprend l'étape de réutilisation de ladite case de contexte courante pour le mot de code qui suit immédiatement ledit un considéré de la pluralité de mots de code, des exigences d'accès à une mémoire externe pour obtenir l'information de contexte étant levées. 26. Système permettant de décomprimer un train de données comportant une pluralité de mots de code, ledit système étant caractérisé en ce qu'il comprend: un moyen de canal pour recevoir la pluralité de mots de code du train de données; un moyen de décodeur (205) pour coupler ledit moyen de canal pour décoder chacun de la pluralité de mots de code, les mots de code étant décodés en pipeline. 27. Système selon la revendication 26, caractérisé en ce qu'au moins deux des mots de code du train de données sont décodés en même temps de telle sorte que le train de données soit décodé en parallèle. 28. Système selon la revendication 26, caractérisé en ce que ledit moyen de décodeur inclut une pluralité de décodeurs (205A, 205B, 205C...). 29. Système permettant de décomprimer un train de données d'une pluralité de mots de code, caractérisé en ce qu'il comprend: un moyen de commande de canal pour recevoir la pluralité de mots de code du train de données; une pluralité de générateurs de trains de bits (218 à 220) couplés pour recevoir la pluralité de mots de code provenant du moyen de commande de canal, chacun de la pluralité de générateurs de trains de bits décodant chacun des mots de code en utilisant au moins un code, ledit au moins un code permettant de décoder des mots de code d'une dimension fixe, et au moins deux de la pluralité de générateurs de trains de bits décodant des mots de code en même temps de telle sorte que le train de données soit décodé en parallèle pour produire des données décodées; et un moyen de modélisation (206; 227; 236) couplé à la pluralité de générateurs de trains de bits pour sélectionner les i15 données décodées provenant de la pluralité de générateurs de trains de bits afin d'émettre en sortie les données décodées. 30. Système selon la revendication 29, caractérisé en ce que ledit au moins un code comprend un code Tunstall. 31. Système selon la revendication 29, caractérisé en ce que chacun des mots de code inclut n bits o n est un multiple de huit. 32. Procédé permettant de décomprimer un train de données d'une pluralité de mots de code, caractérisé en ce qu'il comprend les étapes de: réception de la pluralité de mots de code du train de données; décodage de chacun des mots de code en utilisant un code Tunstall, ledit code Tunstall permettant de décoder les mots de code d'une dimension fixe, et au moins deux de la pluralité de générateurs de trains de bits décodant des mots de code en même temps de telle sorte que le train de données soit décodé en parallèle pour produire des données décodées; et sélection des données décodées provenant de la pluralité de générateurs de trains de bits pour émettre en sortie les données décodées. 33. Système permettant de décomprimer un train de données d'une pluralité de mots de code, caractérisé en ce qu'il comprend un moyen de commande de canal pour recevoir la pluralité de mots de code du train de données; une pluralité de générateurs de trains de bits (218 à 220) couplés pour recevoir la pluralité de mots de code provenant du moyen de commande de canal, chacun de la pluralité de générateurs de trains de bits décodant chacun des mots de code en utilisant au moins un code non binaire et au moins deux de la pluralité de générateurs de trains de bits décodant des mots de code en même temps de telle sorte que le train de données soit décodé en parallèle pour produire des données décodées; et un moyen de modélisation (206; 227; 236) couplé à la pluralité de générateurs de trains de bits pour sélectionner les données décodées provenant de la pluralité de générateurs de trains de bits afin d'émettre en sortie les données décodées. 34. Procédé selon la revendication 33, caractérisé en ce que l'au moins un des mots de code comprend une valeur complète. 35. Procédé selon la revendication 33, caractérisé en ce que la pluralité de générateurs de trains de bits utilise une pluralité de codes non binaires. 36. Système permettant de décomprimer un train de données d'une pluralité de mots de code, caractérisé en ce qu'il comprend: un moyen de canal pour recevoir la pluralité de mots de code; une pluralité de générateurs de bits (218 à 220) couplés au moyen de canal, la pluralité de générateurs recevant la pluralité de mots de code provenant du moyen de canal en tant que train continu et décodant la pluralité de mots de code selon un train de données décodées; et un moyen de commande couplé à la pluralité de générateurs de bits pour commander la pluralité de générateurs de bits, chacun de la pluralité de générateurs de bits recevant l'un des mots de code provenant du moyen de canal en vue d'un décodage de telle sorte que des mots de code successifs soient décodés au niveau d'au moins deux de la pluralité de générateurs de bits. 37. Système selon la revendication 36, caractérisé en ce que chacun de la pluralité de générateurs de bits décode chaque n-ième mot de code du train de données o n représente le nombre de la pluralité de générateurs de train de bits. 38. Système selon la revendication 36, caractérisé en ce que la pluralité de générateurs de bits inclut une pluralité de décodeurs Huffman. 39. Système selon la revendication 36, caractérisé en ce que le moyen de commande inclut un automate fini. 40. Système selon la revendication 36, caractérisé en ce que la pluralité de générateurs de trains de bits comprend une pluralité de décodeurs Huffman et le moyen de canal inclut un tampon (204), le moyen de commande produisant des données pour chacun de la pluralité de décodeurs Huffman selon un ordre qui est tel que chaque décodeur Huffman reçoit chaque n-ième jeton o n est le nombre de décodeurs Huffman. 41. Système selon la revendication 40, caractérisé en ce que les mots de code sont délivrés à la pluralité de décodeurs Huffman et les jetons sont décodés suivant le même ordre séquentiel que celui utilisé pendant le codage. 42. Système selon la revendication 40, caractérisé en ce que la pluralité de décodeurs Huffman réalisent un décodage conformément au standard JPEG à l'exception de l'ordre entrelacé des mots de code. 43. Système selon la revendication 40, caractérisé en ce que la pluralité de décodeurs Huffman réalisent un décodage conformément au standard MPEG à l'exception de l'ordre entrelacé des mots de code. 44. Système selon la revendication 40, caractérisé en ce qu'au moins l'un de la pluralité de décodeurs Huffman décode des données en utilisant l'un de la pluralité de codes Huffman disponibles, chacun de la pluralité de codes Huffman disponibles étant choisi sur la base de la probabilité des valeurs courantes. 45. Système selon la revendication 36, caractérisé en ce qu'au moins l'un de la pluralité de décodeurs Huffman commute le mot de code correspondant pour un symbole particulier sur la base de la probabilité adaptative du symbole. 46. Système selon la revendication 40, caractérisé en ce que le moyen de commande inclut un automate fini. 47. Système selon la revendication 36, caractérisé en ce que le moyen de commande inclut un modèle de contexte. 48. Système selon la revendication 36, caractérisé en ce qu'il comprend au moins un codeur QM JPEG. 49. Système selon la revendication 40, caractérisé en ce qu'il comprend en outre un codeur QM pour déterminer des sorties de décision binaires, la pluralité de décodeurs Huffman spécifiant des valeurs de coefficient en réponse aux sorties. 50. Procédé permettant de traitement d'un train de codes composite pris parmi une pluralité de trains de code, chacun de la pluralité de trains de code inclut une pluralité de mots de code, ledit procédé étant caractérisé en ce qu'il comprend les étapes de: groupage des mots de code dans chacun de la pluralité de trains de codes en mots de longueur fixe; entrelaçage des mots de code provenant de la pluralité de trains de codes conformément à la séquence assignée des mots de code selon les mots de longueur fixe de telle sorte que le train de codes composite inclue les mots de code contenus dans la pluralité de trains de codes. 51. Procédé selon la revendication 50, caractérisé en ce que l'étape d'entrelaçage inclut un entrelaçage conformément au mot de code le plus proche du début du train de codes composite. 52. Procédé selon la revendication 50, caractérisé en ce qu'il comprend en outre l'étape d'assignation de mots de code contenus dans la pluralité de trains de codes conformément à l'ordre de modélisation. 53. Procédé selon la revendication 50, caractérisé en ce que l'un de la pluralité de trains de codes inclut des données audio et un autre de la pluralité de trains de codes inclut des données vidéo de telle sorte que le train de codes composite inclue des données audio et des données vidéo entrelacées. 54. Système permettant de décoder un train de codes comportant une pluralité de mots de code, ledit système étant caractérisé en ce qu'il comprend: un tampon (601) pour appliquer des mots de code provenant du train de codes; un modèle de contexte (604) pour produire des contextes une mémoire (603) couplée au modèle de contexte pour i15 stocker une information d'état, la mémoire produisant une information d'état en réponse à chaque contexte produit par le modèle de contexte; une pluralité de décodeurs (602) couplés au tampon et à la mémoire pour décoder des mots de code appliqués par le tampon en utilisant l'information d'état provenant de la mémoire, deux de la pluralité de décodeurs décodant des mots de code en parallèle de telle sorte que la pluralité de décodeurs décodent le train de codes. 55. Système selon la revendication 54, caractérisé en ce que la mémoire est située sur un circuit intégré avec la pluralité de décodeurs et le modèle de contexte (604). 56. Système selon la revendication 54, caractérisé en ce que la mémoire comprend une mémoire sur puce permettant de stocker une information pour des contextes utilisés en commun. 57. Système selon la revendication 54, caractérisé en ce que la mémoire comprend une mémoire sur puce et stocke la partie de poids faible de valeurs de comptage de passes plus importantes et accède à la mémoire externe à la fin de la passe. 58. Système selon la revendication 54, caractérisé en ce que la mémoire comprend une mémoire sur puce et stocke une information d'état pour une partie de générateurs de bits et utilise une mémoire externe pour l'information d'état restante. 59. Système selon la revendication 54, caractérisé en ce que ladite mémoire inclut au moins deux groupes de mémoires, chacun desdits deux groupes de mémoires stockant une information d'état pour des jeux séparés de cases de contexte et lesdits au moins deux groupes de mémoires étant accédés selon des cycles alternés. 60. Procédé de réalisation d'une décompression JPEG sur un train de données d'image d'une pluralité de mots de code, caractérisé en ce qu'il comprend les étapes de: assignation de parties du train de données à une pluralité de ressources de décodage; décodage des parties du train de données en utilisant la i15 pluralité de ressources de décodage, au moins deux de la pluralité de ressources de décodage étant constituées par des codeurs R. 61. Procédé selon la revendication 60, caractérisé en ce que l'étape de décodage inclut le décodage de parties du train de données en utilisant un codeur d'entropie binaire sans perte. 62. Procédé permettant de coder un train de données, caractérisé en ce qu'il comprend les étapes de: codage à l'aide d'une quantité finie de mémoire tampon et signalisation entre un codeur et un décodeur pour indiquer qu'une limite de mémoire a été atteinte. 63. Procédé selon la revendication 62, caractérisé en ce que le codeur génère une sortie en réponse à ladite signalisation qui indique que la limite de mémoire a été atteinte. 64. Procédé selon la revendication 62, caractérisé en ce que l'étape de signalisation inclut l'ajout de passes de longueur non maximum des symboles les plus probables qui ne sont pas suivis par un symbole le moins probable. 65. Procédé selon la revendication 62, caractérisé en ce que l'étape de signalisation comprend les étapes de repérage temporel des mots de code dans le train de données; tamponnage des mots de code après repérage temporel; et terminaison du mot de code à l'aide du repérage temporel le plus faible tant que la limite de mémoire n'est pas atteinte. 66. Procédé selon la revendication 62, caractérisé en ce que l'étape de signalisation inclut l'étape de production d'un statut de la mémoire pour le décodeur en utilisant une case de contexte séparée et la case de contexte est décodée pour chaque mot de code afin d'indiquer si oui ou non le mot de code était dû à un dépassement de tampon. 67. Codeur caractérisé en ce qu'il comprend: un séquenceur (2001) pour recevoir un train de données 1 5 d'une pluralité de mots de code; une pluralité de codeurs (2002 à 2004) couplés au séquenceur pour coder la pluralité de mots de code; un moyen de tampon (2005 à 2007) couplé à la pluralité de codeurs ou tamponnant les mots de code codés; un mécanisme d'entrelaçage (2008) pour demander en requête aux données codées provenant du moyen de tampon de produire un train de sortie de données codées entrelacées; un décodeur (2009) couplé au mécanisme d'entrelaçage pour modéliser l'ordre pour le codage des données, le décodeur fonctionnant en pipeline. 68. Codeur selon la revendication 67, caractérisé en ce qu'il comprend en outre un moyen permettant d'indiquer lorsque le moyen de tampon est en dépassement. 69. Codeur selon la revendication 68, caractérisé en ce que le moyen d'indication inclut au moins un mot de code prédéterminé. 70. Codeur caractérisé en ce qu'il comprend un séquenceur (2001) pour recevoir un train de données d'une pluralité de mots de code; une pluralité de codeurs (2002 à 2004) couplés au séquenceur pour coder la pluralité de mots de code; un moyen de tampon (2005 à 2007) couplé à la pluralité de codeurs ou tamponnant les mots de code codés; un mécanisme d'entrelaçage (2008) pour demander en requête aux donnés codées provenant du moyen de tampon de produire un train de sortie de données codées entrelacées, un mécanisme d'entrelaçage incluant un moyen pour émettre en sortie des données qui ne sont pas complètement codées lorsque 1 0 la limite de mémoire du moyen de tampon a été atteinte. 71. Codeur selon la revendication 70, caractérisé en ce qu'il comprend en outre un moyen permettant d'ajouter des passes de longueur non maximum de symboles les plus probables qui ne sont pas suivis par un symbole le moins probable. 1 5 72. Codeur selon la revendication 70, caractérisé en ce qu'il comprend en outre: un moyen pour repérer temporellement (1804, 1805) les mots de code dans le train de données; un moyen couplé au moyen de repérage temporel pour tamponner les mots de code après repérage temporel; et un moyen pour terminer le mot de code avec le repérage temporel le plus faible tant que la limite de mémoire n'est pas atteinte. 73. Système vidéo temps réel permettant de décomprimer un train de données d'une pluralité de mots de code, caractérisé en ce qu'il comprend: une première pluralité de ressources de décodage (2306, 2307) couplées pour recevoir le train de données pour décoder chaque mot de code contenu dans le train de données, le train de données étant décodé en parallèle; un moyen de formattage pour formatter le train de données décodées afin de préparer le train de données décodées pour l'affichage; et un moyen d'affichage (2603) pour afficher les données décodées. 74. Système selon la revendication 73, caractérisé en ce que le moyen d'affichage comprend un moniteur de télévision. 75. Système selon la revendication 73, caractérisé en ce que le moyen d'affichage comprend un moniteur vidéo. 76. Système selon la revendication 73, caractérisé en ce que le second moyen de décodeur est un décodeur avec perte (2602). 77. Système selon la revendication 76, caractérisé en ce que le décodeur avec perte comprend la partie de transformation d'un décodeur. 78. Système selon la revendication 76, caractérisé en ce que le décodeur avec perte comprend la partie de conversion couleur d'un décodeur. 79. Système selon la revendication 76, caractérisé en ce 1 5 que le décodeur avec perte comprend la partie de sous- échantillonnage d'un décodeur.