Brevet FR2725330A1 — publié le 19960405

La présente invention concerne les systèmes de compression et de décompression de données; plus particulièrement, l'invention concerne un procédé et un appareil permettant de coder et de décoder, en parallèle, des données dans un système de compression et de décompression. La compression de données est actuellement beaucoup utilisée, notamment pour enregistrer et transmettre de grandes quantités de données. Il existe de nombreuses techniques différentes de compression de données. Les techniques de compression se divisent en deux grandes catégories, le codage avec pertes et le codage sans pertes. Un codage avec pertes désigne un codage qui amène des pertes d'informations, de sorte qu'il n'existe aucune garantie qu'on puisse reconstituer parfaitement les données initiales. Dans la compression sans pertes, toutes les informations sont conservées et les données sont comprimées d'une manière qui permet une reconstruction parfaite. Dans la compression sans pertes, on convertit des symboles d'entrée en des mots codés de sortie. Si la compression est réussie, les mots codés sont représentés à l'aide de moins de bits que les symboles d'entrée. Les procédés de codage sans pertes comprennent les procédés du type dictionnaire de codage (par exemple Lempel-Ziv), le codage de la longueur des successions de symboles, ou des points mémoire, le codage énumératif et le codage entropique. Le codage entropique comprend tout procédé de codage sans pertes qui tente de comprimer des données à proximité de la limite entropique à l'aide de probabilité de symboles connues ou estimées. Les codes entropiques comprennent les codes de Huffman, les codes arithmétiques et les codes entropiques binaires. Les codes entropiques binaires sont des codes sans pertes qui n'agissent que sur des décisions binaires (oui/non), souvent exprimées sous la forme du symbole le plus probable (MPS) et du symbole le moins probable (LPS). Des exemples de codeurs entropiques binaires sont le codeur Q, dû à la Société IBM, et un codeur appelé le codeur B. Pour plus d'informations sur le codeur B, on pourra se reporter au brevet des Etats-Unis d'Amérique n 5 272 478, délivré le 21 décembre 1993 sous le titre "Method and Apparatus for Entropy Coding" à J.D. Allen et cédé au cessionnaire de la présente demande. On pourra aussi se reporter M. J. Gormish et J. D. Allen, "Finite State Machine Binary Entropy Coding" résumé dans Proc. Data Compression Conf:rence, 30 mars 1993, Snowbird, UT, p. 449. Le codeur B est un codeur entropique binaire qui utilise une machine à états finis pour la compression. La figure 1 est un schéma fonctionnel montrant un système de compression et de décompression selon la technique antérieure qui utilise un codeur entropique binaire. Pour le codage, des données sont appliquées à l'entrée d'un modèle de contexte (CM) 101. Le modèle de contexte 101 traduit les données d'entrée en un ensemble, ou séquence, de décisions binaires et fournit le compartiment de contexte relatif à chaque décision. La séquence des décisions binaires et leurs compartiments de contexte associés sont respectivement délivrés, par le module de contexte 101, au module d'estimation de probabilité (PEM) 102. Le PEM 102 reçoit chaque compartiment de contexte et produit 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 la P-classe. Chaque P-classe est utilisée comme intervalle de probabilités. Le PEM 102 détermine aussi si la décision binaire (résultat) est ou non dans son état plus probable (c'est-à-dire si la décision correspond au MPS). Un module 103 générateur de train de bits (BG) reçoit, comme signaux d'entrée, l'estimation de probabilité (c'est- à-dire la P-classe) et la détermination du fait que la décision binaire était susceptible d'être vraie, ou probable. En réponse, le module BG 103 produit un train de données comprimées, délivrant zéro bit ou plus, de façon à représenter les données d'entrée initiales. En ce qui concerne le décodage, un module de contexte (CM) 104 fournit un compartiment de contexte à un module d'estimation de probabilité (PEM) 105, et le PEM 105 fournit la classe de probabilité (P-classe) à un module générateur de train de bits (BG 106) en fonction du compartiment de contexte. Le module BG 106 est couplé de façon à recevoir la classe de probabilité. En réponse à la classe de probabilité et à la donnée comprimée, le module BG 106 renvoie un bit qui représente le fait que la décision binaire (c'est-à-dire l'événement) est ou non 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 renvoie le résultat au CM 104. Le CM 104 reçoit le bit renvoyé et utilise le bit renvoyé pour produire la donnée initiale et met à jour le compartiment de contexte en vue de la décision binaire suivante. Un problème qui se pose avec les décodeurs utilisant des codes entropiques binaires, comme le codeur Q d'IBM et le codeur B, est qu'ils sont lents, même lorsqu'ils sont réalisés sous une forme matérielle. Leur fonctionnement demande une unique grande boucle de réaction, lente. Pour ré-établir le processus de décodage, le modèle de contexte utilise des données décodées passées pour produire un contexte. Le module d'estimation de probabilité utilise le contexte pour produire une classe de probabilité. Le générateur de train de bits utilise la classe de la probabilité et la donnée comprimée 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/non probable" pour produire un bit résultat (et pour mettre à jour l'estimation de probabilité relative au contexte). Le bit résultat est utilisé par le modèle de contexte pour mettre à jour l'historique de ses données passées. Pour décoder un unique bit, toutes ces opérations sont nécessaires. Puisque le modèle de contexte doit attendre le bit résultat pour mettre à jour son historique avant de pouvoir fournir le nouveau contexte, le décodage du bit suivant doit attendre. Il est souhaitable d'éviter de devoir attendre que la boucle de réaction est achevée son parcours pour effectuer le décodage du bit suivant. En d'autres termes, il est souhaitable de décoder plus d'un bit, ou d'un mot codé, à la fois dans le but d'augmenter la vitesse à laquelle des données comprimées sont décodées. Un autre problème lié aux décodeurs utilisant des codes entropiques binaires est qu'il faut traiter des données de longueur variable. Dans la plupart des systèmes, les mots codés à décoder ont des longueurs variables. Selon une variante, d'autres systèmes codent des symboles de longueur variable (données non codées). Lors du traitement d'une donnée de longueur variable, il est nécessaire de décaler la donnée sur le niveau de bit pour fournir la donnée suivante correcte de l'opération de décodage ou de codage. Ces manipulations des niveaux des bits du train de données peuvent nécessiter un équipement matériel ou des logiciels qui sont coûteux et, ou bien, lents. De plus, des systèmes de la technique antérieure demandent que ce décalage soit effectué dans des boucles de réaction réagissant de façon cruciale vis-à-vis du temps, ce qui limite les performances du décodeur. Il serait également avantageux de retirer la manipulation des niveaux des bits du train de données dans des boucles de réaction réagissant de manière critique vis-à-vis du temps, de façon qu'on puisse utiliser une mise en parallèle pour augmenter la vitesse. L'invention propose un système de compression et de décompression sans pertes. L'invention propose aussi un codeur agissant en temps réel et un décodeur agissant en temps réel qui, respectivement, code et décode des données en parallèle. Le codeur et le décodeur selon l'invention créent un système entropique parallèle équilibré qui effectue un codage en temps réel et un décodage en temps réel dans un équipement matériel rapide et peu coûteux. On va maintenant décrire un procédé et un appareil de décompression et de compression de données. L'invention propose un codeur destiné à être utilisé dans un système de compression possédant un décodeur qui sert à décoder des informations produites par le codeur. Le codeur selon l'invention comporte une unité de codage destinée à produire des informations de mots codés en réponse à des données. Le codeur comporte également une unité de réordonnement qui produit un train de données codées en réponse aux informations de mots codés venant de l'unité de codage. L'unité de réordonnement comprend une unité de réordonnement des valeurs de comptage des successions de symboles, qui est destinée à ranger les mots codés suivant un ordre de décodage, et une unité de mise en paquets des bits servant à combiner des mots codés de longueurs variables en mots entrelacés de longueur fixe et à délivrer les mots entrelacés de longueur fixe suivant un ordre demandé par le décodeur. La description suivante, conçue à titre d'illustration de l'invention, vise à donner une meilleure compréhension de ses caractéristiques et avantages; elle s'appuie sur les dessins annexés, parmi lesquels: - la figure 1 est un schéma fonctionnel d'un codeur entropique binaire et d'un décodeur associé, selon la technique antérieure; - la figure 2A est un schéma fonctionnel du système de décodage selon l'invention; - la figure 2B est un schéma fonctionnel d'un mode de réalisation du système de codage selon l'invention; - la figure 2C est un schéma fonctionnel d'un mode de réalisation du système de codage selon l'invention, qui traite des compartiments 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 selon l'invention, qui traite des classes de probabilité en parallèle; - la figure 3 représente un train de codes non entrelacés selon l'invention; la figure 4 représente un mode de réalisation du train de codes entrelacés, tel qu'on l'a obtenu à partir d'un ensemble de données fourni à titre d'exemple; - la figure 5 est un exemple d'une table d'estimations de probabilité et d'un générateur de train de bits associé au codeur R selon l'invention; la figure 6 est un schéma fonctionnel d'un mode de réalisation d'un codeur selon l'invention; - la figure 7 est un schéma fonctionnel d'un mode de réalisation d'un générateur de bits selon l'invention; - la figure 8 est un schéma fonctionnel d'un mode de réalisation de l'unité de réordonnement selon l'invention; - la figure 9 est un schéma fonctionnel d'un mode de réalisation de l'unité de réordonnement de valeurs de comptage des successions de symboles selon l'invention; - la figure 10 est un schéma fonctionnel d'un autre mode de réalisation de l'unité de réordonnement de valeurs de comptage de successions selon l'invention; - la figure 11 est un schéma fonctionnel d'un mode de réalisation de l'unité de mise en paquets des bits selon l'invention; - la figure 12 est un schéma fonctionnel d'un mode de réalisation du circuit logique de mise en paquets selon l'invention; - la figure 13 est un schéma fonctionnel d'un mode de réalisation du générateur de bits du codeur selon l'invention; - la figure 14A est un schéma fonctionnel d'un mode de réalisation du système de décodage selon l'invention; - la figure 14B est un schéma fonctionnel du décodeur selon l'invention; - la figure 14C est un schéma fonctionnel d'un mode de réalisation de la structure FIFO (registre du type "premier entré, premier sorti") selon l'invention; - la figure 15A représente un mode de réalisation de la structure "pipeline" de décodage selon l'invention; - la figure 15B représente un mode de réalisation du décodeur selon l'invention; - la figure 16A est un schéma fonctionnel d'un mode de réalisation du dispositif de décalage selon l'invention; - la figure 16B est un schéma fonctionnel d'un autre mode de réalisation du dispositif de décalage selon l'invention; - la figure 17 est un schéma fonctionnel d'un système comportant un modèle de contexte externe; - la figure 18 est un schéma fonctionnel d'un autre système comportant un modèle de contexte externe; - la figure 19 est un schéma fonctionnel d'un mode de réalisation d'un décodeur selon l'invention; - la figure 20 est un schéma fonctionnel d'un mode de réalisation d'un décodeur ayant des générateurs de bits séparés; 27253;530 - la figure 21 est un schéma fonctionnel d'un mode de réalisation d'un générateur de bits selon l'invention; - la figure 22 est un schéma fonctionnel d'un mode de réalisation de l'unité de traitement de succession longue selon l'invention; - la figure 23 est un schéma fonctionnel d'un mode de réalisation de l'unité de traitement de succession courte selon l'invention; - la figure 24 est un schéma fonctionnel d'un mode de réalisation du circuit logique d'initialisation et de commande selon l'invention; - la figure 25 est un schéma fonctionnel d'un mode de réalisation de réordonnement de données à l'aide d'un décodeur du type fouineur; - la figure 26 est un schéma fonctionnel d'un autre mode de réalisation de l'unité de réordonnement; - la figure 27 est un schéma fonctionnel d'un autre mode de réalisation d'une unité de réordonnement utilisant une file d'attente fusionnée; - la figure 28 est un schéma fonctionnel d'un système à largeur de bande élevée utilisant l'invention; - la figure 29 est un schéma fonctionnel d'un système d'appariement de largeurs de bande utilisant l'invention; - la figure 30 est un schéma fonctionnel d'un système vidéo fonctionnant en temps réel, utilisant l'invention; - la figure 31 représente un mode de réalisation de la mémoire de données codées selon l'invention; - la figure 32 est un diagramme temporel montrant le décodage selon l'invention; et - la figure 33 est un graphe représentant le rendement de décodage en fonction de la probabilité de MPS pour différents codes R2(k) et R3(k) utilisés dans l'invention. On va maintenant décrire un procédé et un appareil de codage et de décodage parallèles de données. Dans la description suivante, de nombreux détails particuliers sont précisés, tels que des nombres de bits, des nombres de codeurs, des probabilités particulières, des types de données, etc., de façon à offrir une compréhension complète de l'invention. L'homme de l'art comprendra toutefois que l'invention peut être mise en oeuvre pratiquement sans ces détails particuliers. De plus, des circuits bien connus ont été représentés sous forme de schémas fonctionnels, et non de façon détaillée, pour éviter de compliquer la description de l'invention. Certaines parties de la description détaillée qui va suivre sont présentées sous la forme d'algorithmes et de représentations symboliques d'opérations effectuées sur des bits de données à l'intérieur d'une mémoire d'ordinateur. Ces descriptions et représentations à base d'algorithmes sont les moyens utilisés par les spécialistes du domaine du traitement de données pour communiquer de la manière la plus efficace, à d'autres spécialistes, la substance de leurs travaux. Ici, comme cela est généralement le cas, un algorithme est conçu sous la forme d'une succession cohérente d'opérations conduisant à un résultat voulu. Ces opérations sont des opérations demandant des manipulations physiques de quantités matérielles. Ordinairement, bien que ceci ne soit pas nécessaire, ces quantités prennent la forme de signaux électriques ou magnétiques pouvant être enregistrés, transférés, combinés, comparés et traités de toutes sortes de manière. Il s'est parfois révélé commode, principalement pour des raisons d'usage courant, de faire référence à ces signaux sous la forme de bits, de valeurs, d'éléments, de symboles, de caractères, d'expressions, de nombres, etc. Il faut toutefois avoir bien présent à l'esprit que tous ces termes ainsi que d'autres termes analogues peuvent être associés à des quantités matérielles appropriées et ne sont que des étiquettes commodes qu'on applique à ces quantités. A moins qu'on ne dise spécialement le contraire, comme cela apparaîtra de façon évidente dans la discussion suivante, on comprendra que, tout au long de la description de l'invention, des discussions utilisant des termes tels que "traitement", "calcul", "détermination", "affichage", ou autres, se rapporte à l'action et aux processus d'un système informatique, ou d'un dispositif analogue de calcul électronique, qui, à l'intérieur de registres et de mémoires du système informatique, manipulent des données représentant des quantités matérielles (électroniques) et les transforment en d'autres données représentant de même des quantités matérielles, à l'intérieur des mémoires et des registres, ou d'autres moyens d'enregistrement d'informations, de dispositifs de transmission ou d'affichage du système informatique. L'invention concerne aussi un appareil permettant d'effectuer les opérations indiquées. Un tel appareil peut être spécialement construit dans le but visé, ou bien il peut être constitué par un ordinateur de type universel spécialement activé ou reconfiguré par un programme d'ordinateur mémorisé dans l'ordinateur. Les algorithmes et les affichages présentés ici ne sont pas intrinsèquement liés à un quelconque ordinateur particulier ou à un autre appareil. On peut utiliser des machines de type universel en liaison avec des programmes selon les enseignements présentés ici, ou bien il peut se révéler commode de construire un appareil plus spécialisé pour effectuer les opérations voulues du procédé. La structure nécessaire à cette variété de machine apparaîtra dans la description suivante. De plus, l'invention n'est pas décrite en liaison avec un langage de programmation particulier. On aura compris que toute une variété de langages de programmation peut être utilisée pour mettre en oeuvre les enseignements de l'invention, comme décrit ci-après. Codage entropique parallèle L'invention concerne un système de codage entropique parallèle. Le système comporte un codeur et un décodeur. Dans un mode de réalisation, le codeur effectue le codage sur des données en temps réel. De même, dans un mode de réalisation, le décodeur selon l'invention effectue le décodage sur des données en temps réel. Ensemble, le codeur en temps réel et le décodeur en temps réel forment un système de codage équilibré. L'invention propose un système qui décode en parallèle, sans pertes, des données codées. Les données sont décodées en parallèle à l'aide de plusieurs ressources de décodage. Chacune des ressources de décodage se voit affecter des données (par exemple des mots codés), venant du train de données, à décoder. L'affectation du train de données s'effectue immédiatement, les ressources de décodage décodant les données concurremment, ce qui réalise un décodage parallèle du train de données. Pour permettre l'affectation des données d'une manière amenant une utilisation efficace des ressources de décodage, le train de données est ordonné. Cest ce qu'on appelle la parallélisation du train de données. La mise en ordre des données permet que chaque ressource de décodage décode n'importe quelle donnée ou toutes les données codées sans devoir attendre un effet de réaction de la part du modèle de contexte. La figure 2A illustre le système de décodage selon l'invention, en l'absence de la boucle de réaction lente de la technique antérieure. Un tampon d'entrée 204 reçoit des données codées (c'est-à-dire des mots codés) et un signal de réaction venant d'un décodeur 205 et il fournit des données codées suivant un ordre prédéterminé (par exemple l'ordre des compartiments de contexte) au décodeur 205 de l'invention, lequel décode les données codées. Le décodeur 205 comporte plusieurs décodeurs (par exemple 205A, 205B, 205C, etc.). Dans un mode de réalisation, chacun des décodeurs 205A, 205B, 205C, etc. reçoit des données associées à un groupe de contextes. Chacun des décodeurs du décodeur 205 reçoit des données codées pour chaque compartiment de contexte de son groupe de contextes de la part du tampon d'entrée 204. En utilisant ces données, chaque décodeur 205A, 205B, 205C, etc. produit les données décodées se rapportant à son groupe de compartiments de contexte. Il n'est pas demandé au modèle de contexte d'associer des données codées avec un groupe particulier de compartiments de contexte. Les données décodées sont envoyées par le décodeur 205 à une mémoire de données décodées 207 (par exemple 207A, 207B, 207C, etc.). On note que la mémoire207 de données décodées peut mémoriser des données intermédiaires qui ne sont ni codées ni décodées, par exemple des valeurs de comptage de successions symboles. Dans ce cas, la mémoire de données décodées 207 mémorise les données sous une forme compacte, mais non sous celle d'un codage entropique. Agissant de façon indépendante, le modèle de contexte 206 est couplé de façcon à recevoir les données précédemment décodées de la part de la mémoire de données décodées 207 (c'est-à-dire 207A, 207B, 207C, etc.) en réponse à un signal de réaction qu'il envoie à la mémoire de données décodées 207. Par conséquent, il est existe deux boucles de réaction indépendantes, une entre le décodeur 205 et le tampon d'entrée 204 et une deuxième entre le modèle de contexte 206 et la mémoire de données décodées 207. Puisque la grande boucle de réaction est ainsi éliminée, les décodeurs contenus dans le décodeur 205 (par exemple 205A, 205B, 205C, etc.) sont en mesure de décoder leurs mots codés associés aussitôt qu'ils les ont reçus du tampon d'entrée 204. Le modèle de contexte fournit la partie mémoire du système de codage et divise un ensemble de données (par exemple une image) en différentes catégories (par exemple des compartiments de contexte) sur la base de la mémoire. Selon l'invention, les compartiments de contexte sont considérés comme des ensembles ordonnés indépendants de données. Dans un mode de réalisation, chaque groupe de compartiments de contexte possède son modèle d'estimation de probabilité et chaque compartiment de contexte possède son propre état (o des modèles d'estimation de probabilité sont partagés). Ainsi, chaque compartiment de contexte pourrait utiliser un modèle d'estimation de probabilité différent et, ou bien, un générateur de train de bits différent. Ainsi, les données sont ordonnées, ou parallélisées, et les données venant du train de données sont affectées à des codeurs séparés pour être décodées. Adjonction du parallélisme au modèle de codage entropique classique Pour paralléliser le train de données, on peut diviser les données en fonction du contexte, de la probabilité, du "quadrillage", de la séquence de mots codés (basée sur des mots codés), etc. Le réordonnement du train de données codées est indépendant du parallélisme, du procédé utilisé pour paralléliser les données ou de la probabilité en tout autre point. Sur la figure 2B, est représentée la partie codeur parallèle d'un système de codage selon l'invention alimenté par des données différenciées à l'aide d'un modèle de contexte (CM). Comme représenté sur la figure 2B, la partie codeur parallèle dépendant du contexte comprend un 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é de façon à recevoir des données d'entrée codées. Le CM 214 est également couplé aux PEM 215 à 217. Les PEM 215 à 217 sont aussi respectivement couplés aux BG 218 à 220, qui délivrent respectivement des trains de codes 1, 2 et 3. Chaque paire PEM et BG constitue un codeur. Ainsi, le codeur parallèle est représenté à l'aide de trois codeurs. Bien que trois codeurs parallèles seulement soient représentés, on peut en utiliser un nombre quelconque. Le CM 214 divise le train de données en des contextes différents, de la même manière qu'un CM classique, et envoie les différents trains aux ressources de codage matérielles parallèles. Des contextes, ou des groupes de contextes, distincts sont envoyés aux estimateurs de probabilité (PEM) 215 à 217 et à des générateurs de bits (BG) 218 à 219 séparés. Chacun des BG 218 à 220 délivre un train de données codées. La figure 2C est un schéma fonctionnel d'un mode de réalisation de la partie décodeur du système de décodage selon l'invention. Comme on peut le voir sur la figure 2C, un décodeur parallèle dépendant du contexte est représenté, lequel possède des BG 221 à 223, des PEM 224 à 226 et un CM 227. Les trains de codes 1 à 3 sont appliqués respectivement aux BG 221 à 223. Les BG 221 à 223 sont aussi respectivement couplés aux PEM 224 à 226. Les PEM 224 à 226 sont couplés au CM 227, qui délivre les données d'entrée reconstruites. Le signal d'entrée provient de plusieurs trains de codes, comme représenté par les trains de codes 1 à 3. Un train de codes est affecté à chaque paire PEM et BG. Chacun des BG 221 à 223 renvoie un bit indiquant si la décision binaire se trouve ou non dans son état le plus probable, que les PEM 224 à 226 utilisent pour renvoyer des bits décodés (par exemple la décision binaire). Chacun des PEM 224 à 226 est associé à l'un des BG 221 à 223, indiquant quel code doit être utilisé pour produire le 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 issus des générateurs de train de bits suivant leur séquence appropriée, de manière à re-créer les données initiales. Ainsi, le CM 227 obtient les bits des données décomprimées à partir de la paire PEM et BG appropriée, en réordonnant les données suivant l'ordre initial. On note que les commandes relatives à cette opération circulent dans le sens inverse du train de données. La paire BG et PEM peut décoder une données avant que le CM 227 en est besoin, en opérant avec un ou plusieurs bits d'avance. Selon une autre possibilité, le CM 227 peut demander (mais non recevoir) un bit de la part d'une paire BG et PEM, puis demander un ou plusieurs bits aux autres paires BG et PEM avant d'utiliser le bit initialement demandé. La configuration représentée sur la figure 2C est conçue de manière à assurer un couplage serré du PEM et du BG. Le codeur Q d'IBM est un bon exemple de codeur possédant une paire PEM et BG étroitement couplée. Les boucles de réaction locales entre ces éléments ne constituent pas une limite fondamentale aux performances du système. Dans une conception différente, le PEM pourrait différencier les données et les envoyer à des unités BG parallèles. Par conséquent, il n'y aurait qu'un seul CM et un seul PEM, et le BG serait démultiplié à plusieurs exemplaires. On pourra utiliser, de cette manière, un codage de Huffman adaptatif et un codage par machine à états finis. Un système de décodage analogue, utilisant le PEM pour différencier les données et les envoyer à des BG parallèles, est représenté sur la figure 2D. Dans ce cas, les classes de probabilité sont manipulées en parallèle etchaque générateur de train de bits se voit attribuer une classe de probabilité particulière et reçoit connaissance du résultat. Comme représenté sur la figure 2D, les trains de données codées 1 à 3 sont appliqués respectivement aux générateurs de train de bits (par exemple les BG 232, 233, 234, etc.), qui sont connectés de façon à les recevoir. Chacun des générateurs de train de bits est couplé à un PEM 235. Le PEM 235 est également couplé à un CM 236. Selon cette configuration, chacun des générateurs de train de bits décode des données codées et les résultats du décodage sont sélectionnés par le PEM 235 (au lieu que ce soit par le CM 236). Chacun des générateurs de train de bits reçoit des données codées de la part d'une source associée à une classe de probabilité (c'est-à-dire o la donnée codée pourrait provenir d'un quelconque compartiment de contexte). LE PEM 235 sélectionne les générateurs de train de bits en utilisant une classe de probabilité. La classe de probabilité est imposée par le compartiment de contexte qui lui est fourni par le CM 236. De cette manière, on obtient les données codées en traitant en parallèle des classes de probabilité. De nombreuses formes de mise en oeuvre existent pour les systèmes de décodage en parallèle selon l'invention. Dans un mode de réalisation, les trains de données codées correspondant aux compartiments de contextes multiples peuvent être entrelacés suivant un unique train qui est ordonné par les demandes des divers codeurs. Dans un mode de réalisation de l'invention, les données codées sont ordonnées de façon que chaque codeur reçoive de façon constante des données même si les données codées sont délivrées au décodeur sous la forme d'un train unique. On notera que l'invention peut être utilisée avec tous les types de données, y compris les données d'images. En utilisant de petits codeurs simples, que l'on peut démultiplier à plusieurs exemplaires dans des circuits intégrés pour un coût réduit, il est possible de décoder rapidement en parallèle des données codées. Dans un mode de réalisation, les codeurs sont mis en oeuvre matériellement à l'aide de puces du type matrice de portes prédiffusée programmable par l'utilisateur (FPGA) ou d'une puce personnalisée du type ASIC à cellules normales. La combinaison du parallélisme et de générateurs de train de bits simples permet d'effectuer un décodage des données codées à des vitesses dépassant celles des décodeurs de la technique antérieure, tout en maintenant, ou en dépassant, le rendement de compression des systèmes de décodage de la technique antérieure. Ordonnement des canaux pour des trains de données multiples De nombreuses questions conceptuelles différentes et de nombreux problèmes différents affectent les performances du système. On en mentionnera quelques-uns ci-dessous. Toutefois, les modes de réalisation présentés sur les figures 2B et 2C (ainsi que 2D) utilisent les trains de codes multiples. Des systèmes à canaux parallèles qui pourraient s'accommoder de ce mode de réalisation sont imaginables: lignes téléphoniques multiples, têtes multiples de dispositif de commande de disque, etc. Dans certaines applications, un seul canal est disponible, ou approprié. De fait, si des canaux multiples sont nécessaires, il peut y avoir une médiocre utilisation de la largeur de bande, en raison de la nature bruyante des trains de codes individuels. Dans un mode de réalisation, on effectue une concaténation, c'est-à- dire un enchaînement, des trains de codes et on les envoie de façon contiguë au décodeur. Un en-tête placé en position initiale contient des pointeurs qui pointent l'emplacement du bit de début de chaque train. La figure 3 illustre un mode de réalisation de la disposition de ces données. Comme on peut le voir sur la figure 3, trois pointeurs 301 à 303 indiquent la position de début respective du code concaténé des trains de codes 1, 2 et 3. Le fichier de données comprimées complet est disponible dans un tampon pour le décodeur. Lorsque cela est nécessaire, les mots de code sont extraits de l'emplacement approprié via le pointeur approprié. Le pointeur est ensuite mis à jour sur le mot codé suivant de ce train de codes. On note que ce procédé demande la mémorisation d'une trame codée entière dans le décodeur et, pour des raisons pratiques, dans le codeur. Si un système en temps réel, ou une circulation de données moins bruyantes, est nécessaire, alors on peut utiliser deux tampons de trame pour effectuer la mémorisation à la fois dans le codeur et dans le décodeur. Passage de l'ordre des données à l'ordre des mots codés On note qu'un décodeur décode des mots codés suivant un ordre déterministe imposé. Avec un codage parallèle, l'ordre des demandes faites au train de codes est déterministe. Par conséquent, si les mots codés venant de trains de codes parallèles peuvent être entrelacés suivant l'ordre correct dans le décodeur, alors un unique train de codes suffira. Les mots codés sont délivrés au décodeur dans le même ordre sur une base d'exactitude dans le temps. Dans le codeur, un modèle du décodeur détermine l'ordre des mots codés et met en paquets les mots codés suivant un unique train. Ce modèle peut être un décodeur réel. Lorsque les données ont des longueurs variables, un problème se pose en ce qui concerne la délivrance des données aux éléments de décodage en parallèle. L'opération inverse de la mise en paquets d'un train de mots codés de longueurs variables nécessite l'utilisation d'un dispositif de décalage des bits servant à aligner les mots codés. Les dispositifs de décalage de bits sont souvent coûteux et, ou bien, lents lorsqu'ils sont mis en oeuvre sous forme matérielle. La commande du dispositif de décalage de bits dépend de la taille du mot codé considéré. Cette boucle de réaction de commande empêche que le décalage à longueur variable soit effectué rapidement. On ne peut obtenir tous les avantages qu'il y a à alimenter des décodeurs multiples à l'aide d'un unique train si l'opération de suppression de la mise en paquets du train s'effectue dans un dispositif de décalage d'un seul bit, qui n'est pas assez rapide pour suivre les décodeurs multiples. La solution proposée selon l'invention sépare le problème de la distribution des données codées entre les codeurs parallèles de celui de l'alignement des mots codés de longueurs variables en vue du décodage. Les mots codés de chaque train de codes indépendant sont mis en paquets de mots de longueur fixe, que l'on appelle des mots entrelacés. A l'extrémité décodeur du canal, ces mots entrelacés peuvent être répartis entre les unités de décodage en parallèle à l'aide de lignes de données câblées rapides et d'un circuit de commande simple. Il convient que la longueur des mots entrelacés soit plus grande que la longueur maximale des mots codés, de façon qu'un nombre de bits au moins suffisant pour former complètement un mot codé soit contenu dans chaque mot entrelacé. Les mots entrelacés peuvent contenir des mots codés et des parties de mots codés. La figure 4 illustre l'entrelacement d'un ensemble de trains de codes parallèles, présenté à titre d'exemple. Ces mots sont entrelacés en fonction de la demande ayant lieu dans le décodeur. Chaque décodeur indépendant reçoit un mot entrelacé tout entier. L'opération de décalage des bits s'effectue alors localement dans chaque décodeur, ce qui maintient le parallélisme du système. On note que, sur la figure 4, le premier mot codé de chaque mot entrelacé est le mot codé restant le plus bas de l'ensemble. Par exemple, les premiers mots entrelacés viennent du train de codes 1, à partir du mot codé le plus bas (c'est-à-dire le mot codé n' 1). Celui- ci est suivi du premier mot entrelacé du train de codes 2, puis du premier mot entrelacé du train de codes 3. Toutefois, le mot codé inférieur suivant non complètement contenu dans un mot entrelacé déjà ordonné est le mot codé n' 7. Par conséquent, le mot suivant du train est le deuxième mot entrelacé du train de code 2. Dans un autre mode de réalisation, l'ordre dans lequel l'ensemble suivant de mots entrelacés (par exemple le mot codé commençant avec le mot codé n* 8 du train 1, le mot codé commençant avec le mot codé n* 7 du train 2, le mot codé commençant avec le mot codé n* 11 du train 3) sont insérés à l'intérieur du train de codes entrelacés s'appuie sur le premier mot codé de l'ensemble précédent de mots entrelacés (par exemple le mot codé commençant avec le mot codé n* 1 du train 1, le mot codé commençant avec le mot codé n* 2 du train 2, le mot codé commençant avec le mot codé n 4 du train 3) et ceux-ci sont ordonnés du mot entrelacé ayant le premier mot codé de numéro le plus bas au mot entrelacé ayant le premier mot codé de numéro le plus haut. Ainsi, dans ce cas, puisque le mot entrelacé commencçant avec le mot codé n* 1 est en premier, alors le mot entrelacé suivant du train 1 est le premier du deuxième groupe de mots entrelacés à insérer dans le train entrelacé, celui-ci étant suivi par le mot entrelacé suivant du train 2, puis par le mot entrelacé suivant du train 3. On note que, après que le deuxième groupe de mots entrelacés a été inséré dans le train entrelacé, le mot entrelacé suivant du train 2 est le mot entrelacé qu'on doit entrelacer ensuite dans le train, puisque le mot codé n7 est le mot codé le plus bas du deuxième ensemble de mots entrelacés (et est suivi par le mot codé n 8 du train 1, puis par le mot codé n* 11 du train 3). Le fait d'utiliser le décodeur réel comme modèle pour le train de données permet de tenir compte de tous les choix conceptuels et de tous les retards vis-à-vis de la création du train entrelacé. En tout cas, cela ne représente pas un coût élevé, pour des systèmes du type duplex, d'avoir à la fois des codeurs et des décodeurs. On note que ceci peut être généralisé à tout ensemble parallèle de mots de données de longueurs variables (ou de tailles différentes) qui sont utilisés dans un ordre déterministe. Types de codes et générateurs de train de bits pour décodage en parallèle L'invention pourrait employer des codeurs existants, par exemple des codeurs Q ou des codeurs B, comme éléments de production de train de bits que l'on démultiplie en parallèle. Toutefois, on peut utiliser d'autres codes et d'autres codeurs. Les codeurs et leurs codes associés, que l'on emploie selon l'invention, sont des codeurs simples. Selon l'invention, l'utilisation d'un générateur de train de bits ayant un code simple au lieu d'un code complexe, comme le code arithmétique employé par le codeur Q ou les codes à états multiples utilisés par le codeur B, offre des avantages. Un code simple est avantageux en ce que la mise en oeuvre matérielle est beaucoup plus rapide et plus simple et demande moins de silicium qu'un code complexe. Un autre avantage selon l'invention est qu'on peut améliorer le rendement de codage. Un code qui utilise une quantité définie d'informations d'états ne peut pas satisfaire parfaitement la limite d'entropie de Shannon pour toutes les probabilités. Des codes connus mis en oeuvre sous forme matérielle qui permettent à un unique générateur de train de bits de manipuler des probabilités ou des contextes multiples ont des contraintes qui réduisent le rendement de codage. Le fait de supprimer les contraintes nécessitées par des contextes ou des classes de probabilité multiples permet l'utilisation de codes qui se rapprochent mieux de la satisfaction de la limite d'entropie de Shannon. Codes R Le code (et le codeur) employé par un mode de réalisation de l'invention est appelé un code R. Les codes R sont des codes adaptatifs qui convertissent un nombre variable de symboles d'entrée identiques en un mot codé. Dans un mode de réalisation, les codes R sont paramétrisés de façon que de nombreuses probabilités différentes puissent être manipulées par une unique conception de décodeur. De plus, les codes R de l'invention peuvent être décodés à l'aide d'un équipement simple et rapide. Selon l'invention, les codes R sont utilisés par un codeur R pour effectuer le codage ou le décodage. Dans un mode de réalisation, un codeur R est formé de la combinaison d'un générateur de train de bits et d'un module d'estimation de probabilité. Par exemple, sur la figure 1, un codeur R comporterait la combinaison du module d'estimation de probabilité 102 avec le générateur de train de bits 103 et la combinaison du module d'estimation de probabilité 105 avec le générateur de train de bits 106. Des mots codés représentent des successions du symbole le plus probable (MPS). Un MPS représente la délivrance d'une décision binaire avec une probabilité de plus de 50 %. Au contraire, le symbole le moins probable (LPS) représente la délivrance d'une décision binaire avec une probabilité de moins de %. On note que, lorsque les deux délivrances sont également probables, la désignation par MBS ou LPS est sans importance pour autant que le codeur et le décodeur utilisent la même désignation. La séquence de bits résultante du fichier comprimé est présentée dans le tableau 1, pour un paramètre donné, qui est appelé MAXRUN. TA ïB!EAU 1 - Codage de production de bits Mot codé Signification 0 Nombre MAXRUN de MPS consécutifs 1N Nombre N de MPS consécutifs, suivi par LPS, avec N possible d'utiliser le complément à 1 des mots codés. Pour le décodage, si le premier bit du train de codes est "0o, on place alors la valeur de MAXRUN dans le compteur de MPS, et on efface l'indication LPS. Ensuite, on rejette le bit "0"o. Si le premier bit est "1", on examine alors les bits suivants pour extraire les bits N, puis on place la valeur de comptage appropriée (N) dans le compteur de MPS et on positionne l'indicateur LPS. On rejette ensuite les bits du train de codes contenant le mot codé IN. Les codes R sont produits selon les règles du tableau 1. On note qu'un code R donné, soit Rx(k) est défini par la valeur MAXRUN. Par exemple: MAXRUN pour Rx(k) = x * 2k-1, donc MAXRUN pour R2(k) = 2 * 2k-1, MAXRUN pour R3(k) = 3 * 2k-1, ect. On note que les codes R sont un sous ensemble des codes de Golomb. On note aussi que les codes de Rice utilisent les codes R2(.) seulement. Les codes R selon l'invention permettent d'utiliser les deux codes R2(k) et R3(k), ainsi que d'autres codes, Rn(k) si cela est souhaitable. Dans un mode de réalisation, on utilise les codes R2(k) et R3(k). On note que Rn existe pour n = 2 et pour n égal à tout nombre impair (par exemple R2, R3, R5, R7, R9, R11, R13, R15). Dans un mode de réalisation, relatif au code R2(k), la valeur de comptage de la succession de symboles, soit r, est codée en N; la valeur de comptage, r, est décrite en k bits, de sorte que 1N se représente à l'aide de (k+1) bits. De plus, dans un mode de réalisation, se rapportant à un code R3(k), les bits N peuvent contenir un bit pour indiquer si n 2(k-1), et k-1 ou k bits pour indiquer la valeur de comptage de succession, r, de sorte que la variable N est représentée respectivement par un total de k ou de (k+ 1)bits. Dans d'autres modes de réalisation, on pourrait utiliser le complément à 1 de N dans le mot codé. Dans ce cas, le MPS tend à produire des trains de codes ayant de nombreux "0" et le LPS tend à produire des trains de codes ayant de nombreux "1". Les tables 2, 3, 4 et 5 décrivent quelques codes R efficaces qui sont utilisés pour un mode de réalisation de l'invention. Il faut noter qu'on peut aussi utiliser, dans l'invention, d'autres codes de la longueur des successions de symboles. Un exemple d'autres codes de longueur de successions de symboles est présenté dans le tableau 6. Les tables 7 et 8 montrent des exemples des codes utilisés dans un mode de réalisation. TABLEAU 2- R2(0) TABLEAU 3- R2(1) Donnée non codée Mot codé Donnée non codée Mot codé 0 0 00 0 1 1 01 10 1 il TABLEAU 4 - R3(1) TABLEAU 5 - R2(2) Donnée non codée Mot codé Donnée non codée Mot codé 000 O 0000 O 001 100 0001 100 01 101 001 101 1 11 01 110 1 111 TABLEAU - 6 Autre code R2(2) TABLEAU 7 - Autre code R3(2) Autre R2(2) Préféré R3(2) 0000 O 000000 O 0001 111 000001 1000 001 101 00001 1010 01 110 0001 1001 1 100 001 1011 01 110 1 111 TABLEAU 8 - Autre code possible pour R2(2) Préféré R2(2) 0000 O 0001 100 001 110 01 101 1 111 Modèle d'estimation de probabilité pour codes R Dans un mode de réalisation, le code R2(0) n'effectue aucun codage: un signal d'entrée "0" est codé en "0" et un signal d'entrée "1" est codé en "1" (ou inversement) et se révèle optimal pour des probabilités égales à 50 %. Le code R2(1) du mode de réalisation actuellement préféré est optimal pour des probabilités proches de 0,707 (c'est-à-dire 70,7 %), et le code R3(1) est optimal pour la probabilité 0,794 (79,4 %). Le code R2(2) est optimal pour la probabilité 0,841 (84,1 %). Le tableau 9 ci-après décrit le code quasi-optimal de longueur de successions de symboles, o la dissymétrie de la probabilité est définie par l'équation suivante: dissymétrie de la probabilité = -log2 (LPS). TABLEAU 9 Probabilité dissymétrie de probabilité Meilleur code de Golomb 0, 500o 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) On note que les codes sont quasi-optimaux en ce que l'intervalle des probabilités, comme indiqué par la dissymétrie de probabilité, ouvre l'espace de façon relativement uniforme même si les probabilités optimales ne se différencient pas autant pour les valeurs de k supérieures pour que les valeurs de k inférieures. On considère la probabilité pour laquelle un code R est optimal. De fait, seul R2(2) satisfait la courbe entropique. La chose à considérer en pratique est l'intervalle de probabilités pour lequel il existe un code R particulier qui est meilleur que tous les autres codes R dans une classe donnée. Les tableaux suivants présentent les intervalles de probabilités pour la classe des codes R2 et la classe des codes R2 et R3. Pour la classe des codes R2 compris entre 0 et 12, les intervalles sont présentés dans le tableau 10 ci-après. Par exemple, lorsqu'on n'utilise que les codes R2, le code R2(0) est le meilleur lorsque la probabilité est comprise entre 0,50 et 0,6180. De même, le code R2(1) est le meilleur lorsque la probabilité est comprise entre 0,6180 et 0,7862. TABLEAU 10 - Codes R2 de 0 à 12 Code Probabilités R2(0) 0,6180 R2(1) 0,7862 R2(2) 0,8867 R2(3) 0,9416 R2(4) 0,9704 R2(5) 0,9851 R2(6) 0,9925 R2(7) 0,9962 R2(8) 0,9981 R2(9) 0,9991 R2(10) 0,9995 R2(11) 0,9998 R2(12) _ Pour la classe des codes R2 et R3, les solutions sont présentées dans le tableau 11 ci-après. Par exemple, lorsqu'on utilise les codes R2 et R3, le code R2(1) est le meilleur lorsque la probabilité est comprise entre 0,6180 et 0,7549. TABLEAU 11 - Codes R2 et R3 Code Probabilités R2(0) 0,6180 R2(1) 0,7549 R3(1) 0,8192 R2(2) 0,8688 R3(2) 0,9051 R2(3) 0,9321 R3(3) 0,9514 R2(4) 0,9655 R3(4) 0,9754 R2(5) 0,9826 R3(5) 0,9876 R2(6) 0,9913 R3(6) 0,9938 R2(7) 0,9956 R3(7) 0,9969 R2(8) 0,9978 R3(8) 0,9984 R2(9) 0,9989 R3(9) 0,9992 R2(10) 0,9995 R3(10) 0,9996 R2(11) 0,9997 R3(11) 0,9998 R2(12) _ Un code R2(k) o k est fixe est appelé un code de longueur de successions de symboles. Toutefois une valeur fixe pour k n'est optimale que sur un intervalle de probabilités. On note que, lorsqu'on code au voisinage d'une probabilité optimale, un code R selon l'invention utilise des mots codés O et 1N avec des fréquences approximativement identiques. En d'autres termes, la moitié du temps, le codeur R de l'invention délivre un code et, l'autre moitié du temps, le codeur R délivre l'autre code. En examinant le nombre de mots codés O et 1N, on peut déterminer si le meilleur code est ou non en train d'être utilisé. Ainsi, si un trop grand nombre de mots codés 1N sont en train d'être délivré, alors la longueur des successions de symboles est trop grande; inversement, s'il y a un trop grand nombre de mots codés 0, alors la longueur des successions de symboles est trop courte. Le modèle d'estimation de probabilité qui est utilisé par Langdon examine le premier bit de chaque mot codé pour déterminer si la probabilité source est au-dessus ou au-dessous de l'estimation courante. On pourra se reporter à G. G. Langdon, "An Adaptive Run-Length Coding Algorithm", IBM Technical Disclosure Bulletin vol. 26, n' 7B, décembre 1983. En fonction de cette détermination, on augmente ou on diminue k. Par exemple, si un mot codé indiquant MPS apparaît, l'estimation de probabilité est trop basse. Par conséquent, selon Langdon, on augmente k de la valeur 1 pour chaque mot codé 0. Si un mot codé indiquant un nombre de MPS inférieur à MAXRUN suivi par un LPS (par * exemple un mot codé 1N) apparaît, l'estimation de probabilité est trop élevée. Alors, selon Langdon, on diminue k de la valeur 1 pour chaque mot codé 1N. L'invention autorise une estimation de probabilité plus complexe que le simple fait d'augmenter ou de diminuer k d'une unité à chaque mot codé. L'invention comporte un état de module d'estimation de probabilité qui détermine le code à utiliser. De nombreux états peuvent utiliser le même code. Les codes sont affectés aux états à l'aide d'une table d'états ou d'une machine d'états. Dans un mode de réalisation de l'invention, l'estimation de probabilité change d'état à chaque sortie de mot codé. Ainsi, le module d'estimation de probabilité augmente ou diminue l'estimation de probabilité (c'est-àdire sa valeur estimée) selon qu'un mot codé commence par 0 ou 1. Par exemple, si un mot codé "0" et délivré, une augmentation de la valeur estimée de la probabilité de MPS se produit. Inversement, si un mot codé "1" est délivré, la valeur estimée de la probabilité de MPS diminue. Le codeur de Langdon connu n'utilisait que des codes R2(k) et augmentait ou diminuait k pour chaque mot codé. L'invention utilise en alternance les codes R2(k) et R3(k), en liaison avec la table d'états ou la machine d'états, afin de permettre que la vitesse d'adaptation soit accordée avec l'application. Ainsi, s'il y a une petite quantité de données stationnaires, l'adaptation doit être plus rapide pour aboutir à un codage optimal, et, lorsqu'il y a une plus grande quantité de données stationnaires, le temps d'adaptation doit être plus long de sorte que le codage peut être choisi de façon à procurer une meilleure compression du reste des données. On note que, lorsque des nombres variables de changements d'état peuvent survenir, les caractéristiques spécifiques de l'application peuvent aussi influer sur la vitesse d'adaptation. En raison de la nature des codes R, l'estimation associée aux codes R est simple et demande peu d'équipement matériel, tout en étant très puissante. La figure 33 montre le graphe du rendement de codage (longueur de codage normalisée par rapport à l'entropie) en fonction de la probabilité de MPS. La figure 33 montre comment certains des codes R de l'invention couvrent l'espace des probabilités. Par exemple, la figure 33 montre que, pour une probabilité de MPS d'environ 0,55, le rendement du code R2(0) vaut 1,01 fois la limite d'entropie (c'est-à- dire est plus mauvais de 1% que la limite d'entropie). Au contraire, le code R2(1) possède un rendement de 1,09 fois la limite d'entropie (soit plus mauvais de 9 % que la limite d'entropie). Cet exemple montre que l'utilisation du mauvais code dans ce cas particulier de probabilité basse amène une perte de 8 % sur le rendement du codage. Le fait d'inclure les codes R3(k) permet de couvrir plus d'espace de probabilité, avec une plus grande efficacité. Un exemple de table des états d'estimation de probabilité selon l'invention est présenté sur la figure 5. Comme on peut le voir sur la figure 5, la table des états d'estimation de probabilité fait apparaître à la fois un compteur d'états et le code associé à chacun des états distincts de la table. On note que la table comporte les états positifs aussi bien que négatifs. La table est représentée comme ayant 37 états positifs et 37 états négatifs, y compris les états zéro. Les états négatifs comportent un MPS différent de celui des états positifs. Dans un mode de réalisation, les états négatifs peuvent être utilisés lorsque le MPS vaut 1 et les états négatifs peuvent être utilisés lorsque le MPS vaut 0, ou inversement. On note que le tableau présenté sur la figure 5 n'est qu'un exemple et que d'autres tables pourraient comporter un nombre d'états plus grand ou moins grand et une affectation différente des états. Initialement, le codeur est dans l'état 0, qui correspond au code R2(0), (c'est-à-dire pas de codage) pour une estimation de probabilité égale à 0,50. A chaque fois qu'un mot codé a été traité, le compteur d'états s'incrémente ou se décrémente en fonction du premier bit du mot codé. Dans un mode de réalisation, un mot codé 0 augmente la valeur d'un compteur d'états; un mot codé commençant par 1 diminue la valeur du compteur d'état. Par conséquent, chaque mot codé amène l'exécution d'un changement d'état par le compteur d'état. En d'autres termes, le module d'estimation de probabilité change d'état. Toutefois, des états consécutifs pourraient associés au même code. En ce cas, l'estimation de probabilité s'effectue sans changement du code à chaque mot codé. En d'autres termes, l'état change pour chaque mot codé; toutefois, l'état est cartographié sur les mêmes probabilités en certaines occasions. 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). Avec la table d'états selon l'invention, l'estimation de probabilité est autorisée à rester en liaison avec le même codeur de manière non linéaire. On doit noter que, pour les probabilités inférieures, un plus grand nombre d'états sont associés au même code R. Il en est ainsi puisque, pour des probabilités basses, la perte de rendement est importante lorsqu'on utilise un code erroné. La table des états des codes des longueurs de successions de symboles a pour fonction d'assurer le transfert entre les états après chaque mot codé. Dans une table d'états conçue pour changer de code à chaque changement d'état, lorsque le basculement entre états a lieuaux plus faibles probabilités, le code bascule entre un code qui est très proche de la limite de rendement entropique et un code qui est éloigné de la limite de rendement entropique. Ainsi, une pénalité (qui s'exprime en termes de nombre de bits de données codées) peut résulter de la transition entre états. Les modules d'estimation de probabilité de la technique antérieure, comme le module de Langdon, subissent une perte de performance en raison de cette pénalité. Dans les codes de longueurs de successions associés aux probabilités plus élevées, la pénalité associée à un code erroné n'est pas aussi grande. Par conséquent, selon l'invention, des états supplémentaires sont ajoutés pour les plus faibles probabilités, de sorte que les changements correspondant à un basculement entre deux états corrects augmentent, ce qui réduit le manque de rendement du codage. On note que, dans certains modes de réalisation, le codeur peut avoir un état initial d'estimation de probabilité. En d'autres termes, le codeur pourrait démarrer dans l'un, prédéterminé, des états, par exemple l'état 18. Dans un mode de réalisation, une table d'états différente pourra être utilisée de façon que certains états soient utilisés pour les quelques premiers symboles, afin de permettre une adaptation rapide, et une deuxième table d'états pourrait être utilisée pour les symboles restants, ce qui correspond à une adaptation lente, pour permettre un accord fin de l'estimation de probabilité. De cette manière, le codeur peut se trouver en mesure d'utiliser plus tôt, dans le processus de codage, un code plus efficace. Dans un autre mode de réalisation, le train de codes pourrait spécifier une estimation de probabilité initiale pour chaque contexte. Dans un mode de réalisation, les incréments et les décréments ne sont pas établis selon un nombre fixe (par exemple 1). Au lieu de cela, l'état d'estimation de probabilité pourrait être incrémenté d'un nombre variable en fonction de la quantité de données déjà rencontrées ou de l'amplitude de changement des données (stabilité). Des exemples de telles tables sont donnés par les tables 21 à 25 décrites ci-après. Si la table d'états est symétrique, comme c'est le cas de la table présentée à titre d'exemple sur la figure 5, il suffit de mémoriser, ou de mettre en oeuvre sous forme matérielle, la moitié seulement de la table (y compris l'état zéro). Dans un mode de réalisation, le nombre d'états est mémorisé sous la forme du complément (à 1) signe-amplitude, de façon à permettre de tirer avantage de la symétrie. De cette manière, on peut utiliser la table en prenant la valeur absolue du nombre complément à 1 pour déterminer l'état et en examinant le signe pour déterminer si le MPS vaut 1 ou 0. Ceci permet de réduire le matériel nécessaire à l'incrémentation et à la décrémentation de l'état, du fait qu'on utilise la valeur absolue de l'état pour indexer la table et que le calcul de la valeur absolue du nombre complément à 1 est trivial. Dans un autre mode de réalisation, pour assurer une plus grande efficacité du matériel utilisé, on peut remplacer une table d'états par une machine d'états câblée ou programmable. Un convertisseur état-code câblé constitue une forme de réalisation de la table d'états. Vue d'ensemble du système de codage entropiQue parallèle équilibré L'invention propose un système de codage entropique parallèle équilibré. Le système de codage entropique parallèle comporte à la fois un codage en temps réel et un décodage en temps réel exécutés à l'aide d'un matériel rapide et, ou bien, de coût réduit. L'invention peut être utilisée dans de nombreuses applications de codage sans pertes, y compris, sans limitation, la compression- décompression en temps réel de données sur disque magnétique ou sur disque optique du type dit 'inscriptible", la compression-décompression en temps réel de données de réseaux d'ordinateurs, la compression- décompression en temps réel de données d'image dans une mémoire d'image comprimée d'une machine à plusieurs fonctions (par exemple copieur, télécopieur, analyseur, imprimante, etc.), et la compression-décompression en temps réel de données audio. La spécification des performances du codeur requiert quelque attention. La manière directe consisterait à concevoir un codeur qui permet d'atteindre une certaine vitesse de traitement des données initiales, étant donné un canal de données codées suffisamment rapide. Toutefois, dans de nombreuses applications, l'utilisation du codeur a pour but réel l'utilisation efficace du canal de données codées. L'utilisation du canal de données codées est influencée par le débit maximal de traitement de salves de l'interface des données initiales, par la vitesse du codeur et par la compression obtenue sur les données. L'influence de ces effets doit être examinée sur l'ensemble d'une certaine quantité locale de données, qui dépend de la quantité mise en tampon dans le codeur. Il est souhaitable d'obtenir un codeur qui utilise efficacement le canal de données codées tout en maintenant la vitesse du codeur et une compression élevée et en permettant encore néanmoins le débit maximal de traitement de salves. On décrit ci-après le codeur selon l'invention. Un décodeur pouvant être utilisé avec le codeur est également décrit. Codage en temps réel selon l'invention La figure 6 est un schéma fonctionnel du système de codage selon l'invention. Dans un mode de réalisation, le codeur selon l'invention effectue un codage en temps réel. Comme représenté sur la figure 6, le système de codage 600 comporte un codeur 602 couplé à un dispositif 603 formant une unité modèle de contexte (CM) et mémoire d'états qui sert à produire une information codée prenant la forme de l'information de mots codés 604, en réponse à des données initiales 601. L'information de mots codés 604 est reçue par une unité de réordonnement 606, qui est couplée à une mémoire de réordonnement 607. En réponse à l'information de mots codés 604, l'unité de réordonnement 606 produit, en coopération avec la mémoire de réordonnement 607, un train de données codées 608. Il faut noter que le système de codage 600 ne voit pas son action limitée aux mots codés et peut, dans d'autres modes de réalisation, agir sur des formes d'onde analogiques discrètes, des configurations binaires de longueurs variables, des symboles de canal, des alphabets, des événements, etc., grâce aux enseignements de l'invention. Le codeur 602 comporte un modèle de contexte (CM), un module d'estimation de probabilité (PEM) et un générateur de train de bits (BG). Le modèle de contexte et le PEM du codeur 602 sont sensiblement identiques à ceux du décodeur (sauf en ce qui concerne le sens de circulation des données). Le générateur de bits du codeur 602 est analogue au générateur de bits du décodeur, et est décrit ci-après. Le résultat du codage par le codeur 602 est la délivrance de zéro ou plusieurs bits, qui représentent les données initiales. Dans un mode de réalisation, le signal de sortie du générateur de trains de bits comporte également un ou plusieurs signaux de commande. Ces signaux de commande fournissent un trajet de commande aux données du train de bits. Dans un mode de réalisation, l'information de mots codés peut comprendre une indication de début de succession de symboles, une indication de fin de succession, et un index identifiant la valeur de comptage de succession (que ce soit par contexte ou classe de probabilité) du mot codé. On va décrire ci-dessous un mode de réalisation du générateur de train de bits selon l'invention. L'unité de réordonnement 606 reçoit les bits et les signaux de commande produits par le générateur de train de bits (s'il en existe) du codeur 602 et produit des données codées. Dans un mode de réalisation, les données codées délivrées par l'unité de réordonnement 606 comprennent un train de mots entrelacés. Dans un mode de réalisation, l'unité de réordonnement 606 effectue deux fonctions. L'unité de réordonnement 606 déplace des mots codés de la fin des successions, telles que créées par le codeur, au début des successions, comme exigé par le décodeur, et combine des mots codés de longueurs variables en des mots entrelacés de longueur fixe et les délivre dans l'ordre approprié exigé par le décodeur. L'unité de réordonnement 606 utilise une mémoire de réordonnement temporaire 607. Dans un mode de réalisation, o le codage est effectué dans un poste de travail, la mémoire d'enregistrement temporaire 607 peut être d'une taille dépassant 100 mégaoctets. Dans le système équilibré selon l'invention, la mémoire d'enregistrement temporaire 607 est beaucoup plus petite (par exemple environ lkilo-octet) et est fixe. Par conséquent, dans un mode de réalisation, le codage en temps réel est effectué à l'aide d'une quantité fixe de mémoire, même si ceci augmente la mémoire demandée par le décodeur ou le débit binaire (par exemple lorsqu'une délivrance est effectuée avant la fin du traitement d'une succession). Le décodeur selon l'invention est en mesure de déterminer les effets de la mémoire limitée de l'unité de réordonnement en faisant appel par exemple à une signalisation implicite, explicite ou interne au train de bits (comme décrit ci- après). L'unité de réordonnement 606 possède une mémoire finie pour effectuer le réordonnement, mais la mémoire "necessaire" est illimitée. Il faut considérer l'effet de la mémoire limitée à la fois pour la file d'attente assurant le passage de la fin de succession au début de succession et pour le réordonnement des mots entrelacés. Dans un mode de réalisation, le système de codage (ainsi que le système de décodage correspondant) selon l'invention effectue le codage (ou le décodage) à l'aide d'une unique puce de circuit intégré. Dans un autre mode de réalisation, un unique circuit intégré contient le système de codage selon l'invention, qui comporte son codeur et son décodeur, et la mémoire. Il est possible d'ajouter une mémoire externe séparée pour faciliter le codage. Un circuit intégré ou un module à plusieurs puces peut contenir à la fois le matériel de codage-décodage et la mémoire. Le système de codage selon l'invention peut tenter d'augmenter la largeur de bande effective jusqu'à un facteur N. Si la compression obtenue est inférieure à N: 1, alors le canal de données codées sera complètement utilisé, mais l'augmentation de largeur de bande effective obtenue ne sera égale qu'au taux de compression. Si la compression obtenue est supérieure à N: 1, alors la largeur de bande effective est atteinte et possède une largeur de bande supplémentaire o il est possible d'écrire. Dans les deux cas, la compression obtenue doit concerner une région locale des données définie par la quantité de mémorisation en tampon qui est prévue dans le système de codage. Le générateur de bits du codeur selon l'invention La figure 7 montre un mode de réalisation du générateur de bits du codeur selon l'invention. Le générateur de bits 701 est couplé de façon à recevoir une classe de probabilité et un bit non codé (par exemple une indication MPS ou LPS) comme signaux d'entrée. En réponse aux signaux d'entrée, le générateur de bits 701 délivre plusieurs signaux. Deux des signaux de sortie sont des signaux de commande qui indiquent le début de la succession et la fin d'une succession (chaque mot codé représente une succession de symboles), à savoir un signal de début 711 et un signal de fin 712, respectivement. Il est possible qu'une succession commence et finisse en même temps. Lorsqu'une succession commence ou finit, un signal de sortie 'd'index' 713 est constitué par l'indication de la classe de probabilité (ou le contexte) associée au bit non codé. Dans un mode de réalisation, le signal de sortie d'index 713 représente une combinaison de la classe de probabilité du bit et d'une identification du groupe de mémorisation pour les systèmes dans lesquels chaque classe de probabilité est reproduite dans plusieurs groupes de mémorisation. Le signal de sortie 714 désigne un mot codé produit par le générateur de bits 701 lorsqu'une succession se termine. Une mémoire 702 est couplée au générateur de bits 701 et contient la valeur de comptage de succession qui est associée à une classe de probabilité donnée. Pendant la production des bits, le générateur de bits 701 lit la mémoire 702 en s'appuyant sur l'index (par exemple la classe de probabilité). Après lecture de la mémoire 702, le générateur de bits 701 effectue, comme suit, la production des bits. Tout d'abord, si la valeur de comptage de succession est égale à zéro, alors le signal de début 711 est affecté à l'indication du début d'une succession. Ensuite, si le bit non codé est égal au LPS, alors le signal de fin 712 est affecté à l'indication de la fin de la succession. De plus, si le bit non codé est égal à un LPS, le signal de sortie 714 de mot codé est fixé de façon à indiquer que le mot codé est un mot codé 1N et la valeur de comptage de succession est effacée, par exemple est positionnée à zéro (puisque c'est la fin de la succession). Si le bit non codé n'est pas égal au LPS, alors la valeur de comptage de succession est incrémentée et un essai détermine si la valeur de comptage de succession est égale à la valeur maximale de comptage de succession qui est relative au code. S'il en est ainsi, alors le signal de fin 712 est affecté, le signal de sortie de mot codé 714 est fixé à zéro, et la valeur de comptage de succession est effacée (par exemple la valeur de comptage de succession est positionnée à zéro). Si l'essai détermine que la valeur de comptage de succession n'est pas égale au maximum associé au code, alors la valeur de comptage de succession est incrémentée. On note que le signal d'index 713 représente la classe de probabilité reçue au titre de signal d'entrée. Selon l'invention, la production de mots codés 1N s'effectue de façon que leur longueur puisse être déterminée sans aucune information supplémentaire. Le tableau 12 illustre la représentation de mots codés 1N par des mots codés R3(2) pour le codeur et le décodeur. Le décodeur s'attend à ce que le bit "1" d'un mot codé "iN" soit le LSB et que la partie de comptage "N" se trouve dans l'ordre MSB...LSB approprié. Dans l'ordre du décodeur, il n'est pas possible de distinguer le mot codé de longueur variable d'un remplissage de positions inoccupées à l'aide de zéros si l'on ignore quel code particulier a été utilisé. Dans l'ordre du codeur, le mot codé est inversé et la position du bit "1" le plus signifi- catif indique la longueur des mots codés "'IN". Pour produire des mots codés dans l'ordre du codeur, il faut inverser le complément de la valeur de comptage. On peut réaliser ceci en inversant la valeur de comptage de 13 bits, puis en la décalant de façon à l'aligner avec le LSB. Comme décrit de façon détaillée ci-après, l'unité de mise en paquets des bits réinverse les mots codés pour les remettre dans l'ordre du décodeur. Toutefois, cette inversion des mots codés n'amène pas d'augmentation de la complexité de l'unité 606 de mise en paquets des bits, car celle-ci doit de toute façon effectuer un décalage. TABLEAU 12 - Représentation de mots codés "IN" pour des mots codés R3(2) Donnée non mot codé Inverse de la Ordre du décodeur Ordre du codeur codée valeur de codage(la valeur de comptage est soulignée) 000000 O 0000000000000 0000000000000 000001 1000 00 0000000000001 00000000010(0 00001 1010 01 000000000001 000000000101 0001 1001 10 OOOOOOOOO1QO 1 0000000001001 001 1011 il11 0000000001101 0000000001011 01 110 O0 OO OQ1 000000000000011 Q 1 111 1 0000000000111 0000000000111 Pour des codes R3, la production de mots codés "N" demande également que le bit qui fait suite au "1" indique si une valeur de comptage courte ou longue est présente. En utilisant plusieurs groupes de mémorisation, l'invention permet un traitement dit "pipeline", ou en chevauchement. Par exemple, dans le cas d'une mémoire à accès multiples, une opération de lecture a lieu dans la mémoire pour un bit non codé, tandis qu'une opération d'écriture a lieu dans la mémoire pour le bit non codé précédent. Modèle de réalisation d'échantillonnage AHDL Un mode de réalisation du générateur de bits du codeur selon l'invention comprend une matrice de portes prédiffusée programmable par l'utilisateur (FPGA). Le modèle de réalisation traite tous les codes R2 et R3 jusqu'à R2(12). Le code source AHDL (langage de description pour matériel Altera) est "listé" ci-dessous. Le modèle de réalisation comprend plusieurs parties, comme représenté sur la figure 13. Tout d'abord un dispositif "ENCBG" 1301 constitue la partie principale du modèle de réalisation, et comporte le circuit logique permettant de manipuler le début, la fin et la continuation des successions de symboles. En deuxième lieu, le dispositif "KEXPAND" 1302 sert à étendre la classe de probabilité en la longueur maximale de succession, un masque à longueur variable, et la longueur du premier mot codé long associé aux codes R3. Le dispositif "KEXPAN" 1302 est identique au dispositif utilisé dans la fonction décodeur et portant le même nom. En troisième lieu, le dispositif "LPSCW" 1303 reçoit une valeur de comptage et une information relative à la classe de probabilité comme signaux d'entrée et produit le mot codé "1N" approprié. Le modèle utilise deux étages de pipeline. Dans le premier étage de pipeline, la valeur de comptage est incrémentée, la classe de probabilité est étendue, et une opération de soustraction et de comparaison concernant les mots codés R3 longs est effectuée. Toutes les opérations sont effectuées dans le deuxième étage de pipeline. encbg.tdf TITRE "générateur de bits du codeur"; INCLUDE "kexpand.inc"; INCLUDE "lpscw.inc"; SUBDESIGN encbg k[3.0l, r3, bit, count in[12..0], clk : INPUT; startrun, end run, index[4..0], count_out[12..0], codeword[ 12..0] : OUTPUT; ) VARIABLE k q[3..0], r3_q, kqq[3..0], r3qq, bit_q, bit_q, count_in_q[12.. 0], start_-run, endrun, startrunq, index[4..O], countout[12..O], countplus[12..0], max rl[12..0], codeword[12..0] DFF; kexpand: kexpand; lpscw_ lpscw; BEGIN lpscw_.clk =clk; k_q[].clk = clk; r3_q.clk = clk; kqq[].clk = clk; r3_qq.clk = clk; bitq.clk = clk; bitqq.clk = clk; count_inq[.clk = clk; start run.clk = clk; end run.clk = cl;' startrun q.clk = clk; indexo.clk = clk,; countouto,clk = clk; count_plus[l.clk = clk; max rl[].clk = clk; codeword0.clk = clk; k q0 = k]; r3_q =r3; k_qq0 = kq[ r3_qq = r3_q; bit q = bit; bit qq = bit_q; count in qD = countin0; count. pluso = count_in q[ + 1; startrun = startrunq; statrunq = (count in q0 == 0); index[O] = r3_qq; index[4.. 1] = kqqo; kexpand_.k_rego] = k_qO; kexpand_.r3 reg = r3_q; lpscw_.r3 = r3_q; lpscw_.kq[ = kq; lpscw_.r3_q = r3_qq; lpscw_.count0 = count_in_q0; Ipscw.mask[] = kexpand.mask[]; Ilpscw_.r3_splitU = kexpand_. r3split[]; lpscw_.maxrlq [] = max -rl[; maxrl 0 = kexpand. maxrl[]; IF (bit qq) THEN % LPS % end run = VCC; countout[l = O; codewordo = lpscw.cw0; ELSIF (count plus[] == max rl]) THEN end run = VCC; countout0 = 0; codeword[ = O; ELSE end run = GND; count out0 = count_plus[I; codeword0 = O; END IF; END; !pscw.tdf SUBDESIGN lpscw ( r3, kq[3..O0], r3_q, count[12. .01], mask[1 1..0], r3_split[10..0], maxrl q[12..0], clk : input; cw[12.. O0 : output; ) VARIABLE temp[12..O0]: NODE; temprev[12..O0]:NODE; temp sh[12..O0]: NODE; split[ 1..O0] NODE; r3 long DFF; countminus[l..0]: DFF; mask q[ll..0]: DFF; count_q[12..0] O DFF; BEGIN r3_long.clk = clk; countmrninus[.clk = clk; mask qO.clk = clk; count_q[l.clk = clk; split[10..O] = r3_split[]; split[11] = GND; r3_long = (r3) AND (count[11..0].= split[]); count_minuso = countE[1 1..0] - split[]; maskq0 = mask[] countq[] = count[l; % pipeline stage -9% IF(r3 long) THEN temp[ll..O] = (count_minus[]) XOR maskq[]; E-SE temp[11..O] = count q[ 1 1..0] XOR mask_q[]; MEND IF; temp[12] = GND; temp rev[O] = temp[12] temprev[1] = temp[11] temprev[2] = temp[10]; temprev[3] = temp[9] temprev[4] = temp [8] temprev[5] = temp[7] temprev[6] = temp[6] temprev[7] = temp[5] temp rev[8] = temp[4]; temprev[9] = temp[3]; temprev[10] = temp[2] temp_rev[1ll] = temp[l]; temp rev[12] = temp [0] CASE kq[] IS WHEN 0 => tempsh[ = 0; WHEN 1 => tempsh[0] = temp rev[12]; temp sh[12..1]= 0; WHEN 2 => tempsh[1..O0] = temp rev[12..11]; tempsh[12..2] = O; WHEN 3 => tempsh[2..O0 = temprev[12..10]; tempsh[12..3] = 0; WHEN 4 => tempsh[3.. 0] = temprev [12..9]; temp_sh[12..4] = O; WHEN 5 => temp sh[4..O0] = temp_rev[12..8]; temp_sh[12..S5] = O; WHEN 6 => tempsh[5..O] = temprev[12..7]; tempsh[12..6] = 0; WHEN 7 => temp_sh[6. .O] = temp rev[12..6]; tempsh[12..771 = O; WHEN 8 => tempsh[7..O0] = temprev[12..5]; tempsh[12..8] = 0; WHEN 9 => temp_sh[8. .O0] = temprev[12..4]; tempsh[12..9] = 0; WHEN 10 => tempsh[12.. 10] = 0; tempsh[12..10] = 0; WHEN 1 1 => tempsh[10..O0] = temprev[12..2]; temp sh[12..11] = 0; WHEN 12 => tempsh[11..O0] = temp _rev[12..1}; temp sh[12] = GND; END CASE, IF (NOT r3 q) THEN %R2 Y cw[] = temp sh[] OR maxtlq; ELSIF (NOT r3 long) THEN % R3 SHORT% cw[11..O] = temp sh[12..1] ORmaxrlq[11..0]; cwv[12] =GND; ELSE %R3 LONG% cw[12..1] = temp sh[12..1] OR (maxrl q[1 1..0] AND NOT mask q[1 1..0]); cw[0] = temp sh[0]; END IF; END; kexpand.tdf TITRE "décodeur, logique d'extension de k" SUBDESIGN kexpand ( k reg[3..0], r3 reg : input; maxrl[12..0], mask[11.. 0], r3split[10..0] output; ) BEGIN TABLE k reg[,r3_reg => ma.xrl[], mask[0, r3split[] 0, O => 1, O, X; 1, 0 =>2, 1, X; 1, 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; 5. 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; 11, 0 = > 2048, 2047, X; 11, 1 = > 3072, 2047, 1024; 12, 0 = > 4096, 4095, X; END TABLE, END; L'unité de réordonnement selon l'invention La figure 8 est un schéma fonctionnel d'un mode de réalisation de l'unité de réordonnement. Comme représenté sur la figure 8, l'unité de réordonnement 606 comprend une unité 801 de réordonnement des valeurs de comptage des successions de symboles et une unité 802 de mise en paquets des bits. L'unité de réordonnement des valeurs de comptage de successions 801 déplace des mots codés de la fin des successions, telles que créées par le codeur, au début des successions, comme demandé par le décodeur, tandis que l'unité 802 de mise en paquets des bits combine des mots codés de longueurs variables en mots entrelacés de longueur fixe et les délivre dans l'ordre approprié voulu par le décodeur. On peut utiliser un décodeur "fouineur" pour exécuter le réordonnement relatif à n'importe quel décodeur, o un décodeur est inclus dans le codeur et fournit des demandes de données dans l'ordre dans lequel les mots codés seront nécessaires au décodeur réel. Pour faire fonctionner un décodeur fouineur, le réordonnement des valeurs de comptage de successions peut devoir être fait indépendant pour chaque train. Dans le cas de décodeurs qui peuvent être facilement modélisés, on peut utiliser, pour permettre le réordonnement, plusieurs files d'attente dites horodatées ou une unique file d'attente fusionnée. Dans un mode de réalisation, le réordonnement de chaque mot codé peut être accompli à l'aide d'une structure de données du type file d'attente et est indépendant de l'utilisation de plusieurs trains de données codées. On présente ci-après une description de la manière d'effectuer le réordonnement. La première opération de réordonnement qui est effectuée dans le codeur consiste à réordonner chacune des valeurs de comptage de successions de fac,çon que la valeur de comptage de succession soit spécifiée au début de la succession (lorsque le décodeur demande le décodage). Ce réordonnement est nécessaire, car le codeur ne détermine pas ce qu'est une valeur de comptage de succession (et un mot codé) avant la fin d'une succession de symboles. Ainsi, la valeur de comptage de succession résultante qui est produite à partir du codage des données est réordonnée de facçon que le décodeur soit en mesure de décoder correctement les valeurs de comptage des successions pour retrouver le train de données. On revient à la figure 8. L'unité de réordonnement 606 selon l'invention comprend une unité 801 de réordonnement de valeurs de comptage de successions et une unité 802 de mise en paquets des bits. L'unité 801 de réordonnement des valeurs de comptage de successions est couplée de façon à recevoir plusieurs signaux d'entrée, qui comprennent le signal de début 711, le signal de fin 712, le signal d'index 713 et le mot codé 714. Ces signaux seront décrits de façon plus détaillée en liaison avec l'unité de réordonnement de valeurs de comptages de successions de la figure 9. En réponse à ces signaux d'entrée, l'unité 801 de réordonnement de valeurs de comptage de successions produit un mot codé 803 et un signal 804. Le signal 804 indique le moment o il faut repositionner la valeur de comptage de succession. Le mot codé 803 est reçu par l'unité 802 de mise en paquets des bits. En réponse au mot codé 803, l'unité de mise en paquets des bits 802 produit des mots entrelacés 805. L'unité 801 de réordonnement des valeurs de comptage des successions et l'unité 802 de mise en paquets des bits vont être décrites de façon plus détaillée ci-dessous. Unité de réordonnement des valeurs de comptage des successions de symboles Comme décrit ci-dessus, le décodeur reçoit des mots codés au moment o le début de la donnée codée par le mot codé est nécessaire. Toutefois, le codeur ne connaît pas l'identité du mot codé avant la fin de la donnée codée par le mot codé. Un schéma fonctionnel d'un mode de réalisation de l'unité 801 de réordonnement de valeurs de comptage de successions est décrit sur la figure 9. Le mode de réalisation décrit doit traiter quatre courants entrelacés, o chaque mot entrelacé a 16 bits, les mots codés ayant une longueur qui varie de 1 à 13 bits. Dans un tel cas, l'unité de réordonnement 300 peut être montée en pipeline, ou en chevauchement, pour traiter tous les trains. En outre, on utilise un codeur qui associe des valeurs de comptage de successions avec des classes de probabilité de façon que le nombre maximal de la valeur de comptage de succession pouvant être activée à tout moment soit petit, et on suppose que ce nombre maximal vaut 25 pour ce mode de réalisation. On note que l'invention n'est pas limitée à quatre trains entrelacés, à des mots entrelacés de 16 bits ou à des longueurs de mots codés de 1 à 13 bits, et qu'elle peut être utilisée pour traiter un plus grand ou un plus petit nombre de trains de mots entrelacés ayant plus de 16 bits ou moins de 16 bits et des longueurs de mots codés s'étendant de 1 bit à plus de 13 bits. Comme représenté sur la figure 9, une mémoire de pointeur 901 est couplée de façon à recevoir le signal d'entrée d'index 713 et produit un signal de sortie d'adresse qui est appliqué à une entrée d'un multiplexeur (MUX) 902. Les deux autres entrées du MUX 902 sont couplées de façon à recevoirune adresse se présentant sous la forme d'un pointeur de tête, venant d'un compteur de tête 903 et une adresse se présentant sous la forme d'un pointeur de queue, venant d'un compteur de queue 904. Le signal de sortie du MUX 902 est une adresse fournie à une mémoire 908 de mots codés et servant à faire accès à celle-ci. Le signal d'entrée d'index 713 est également appliqué en entrée à un multiplexeur (MUX) 905. Une autre entrée du MUX 905 est couplée au signal d'entrée de mot codé 714. La sortie du MUX 905 est couplée à l'entrée d'un module 906 de détection de validité et à un bus de données 907. Le bus de données 907 est couplé à une mémoire 908 de mots codés et à une entrée du MUX 905. Au bus de données 907 est également couplée une sortie d'un module de commande 909. Le signal d'entrée de début 711 et le signal d'entrée de fin 712 sont appliqués à des entrées séparées du module de commande 909. Les signaux de sortie du module 906 de détection de validité decomprennent le signal de sortie de mot codé 803 et le signal 804 (figure 8). L'unité 801 de réordonnement des valeurs de comptage de successions comprend également un circuit logique de commande (non représenté pour ne pas compliquer la description) qui sert à coordonner les opérations des divers composants de l'unité 801 de réordonnement des valeurs de comptage de successions. Pour réitérer, le signal d'entrée d'index 113 identifie une succession. Dans un mode de réalisation, l'index indique l'une de 25 classes de probabilité. Dans un tel cas, cinq bits sont nécessaires pour représenter l'index. On note que, si plusieurs groupes de mémorisation de classes de probabilité sont utilisés, alors des bits supplémentaires peuvent être nécessaires pour spécifier le groupe de mémorisation particulier. Dans un mode de réalisation, le signal d'entrée d'index identifie la classe de probabilité associée à la valeur de comptage de succession. Le signal d'entrée de mot codé 714 est, au moment o la fin d'une succession survient, le mot codé et, dans les autres cas, est un signal "indifférent". Le signal d'entrée de début 711 et le signal d'entrée de fin 712 sont des signaux de commande qui indiquent si une succession commence, se termine, ou fait les deux en même temps. Une succession commence et se termine en même temps lorsque la succession est constituée d'un unique bit non codé. L'unité 801 de réordonnement de valeurs de comptage de successions réordonne les valeurs de comptage de successions produites par le générateur de bits en réponse à ses signaux d'entrée. La mémoire 908 de mots codés mémorise les mots codés pendant le réordonnement. Dans un mode de réalisation, la mémoire de mots codés 908 est plus grande que le nombre des valeurs de comptage de successions qui peuvent être actives à la fois. Ceci conduit à une meilleure compression. Si la mémoire de mots codés était plus petite que le nombre de valeurs de comptage de successions qui peuvent actives à la fois, ceci limiterait le nombre des valeurs de comptage de successions actives au nombre qui pourrait être contenu dans la mémoire. Dans un système qui réalise une bonne compression, il se produit souvent que, pendant que les données relatives à un mot codé ayant une longue valeur de comptage de succession sont en train de s'accumuler, de nombreux mots codés ayant de courtes valeurs de comptage de successions commencent (et, peut être, se terminent aussi). Ceci nécessite de disposer d'une grande mémoire, si l'on veut éviter de devoir expulser la succession longue avant son achèvement. La mémoire de pointeur 901 mémorise les adresses relatives aux emplacements de mémorisation des mots codés pour des classes de probabilité qui se trouvent au milieu d'une succession et il adresse la mémoire de mots codés 908 suivant un mode d'accès direct. La mémoire de pointeur 901 possède un emplacement de mémorisation de l'adresse de la mémoire de mots codés 908 pour chaque classe de probabilité qui peut se trouver au milieu d'une succession. Dès qu'une succession de symboles arrive à achèvement pour une classe de probabilité particulière, l'adresse mémorisée dans la mémoire de pointeur 901 pour cette classe de probabilité est utilisée pour faire accès à la mémoire de mots codés 908, et le mot codé complet est inscrit dans la mémoire de mots codés 908 à cet emplacement. Jusqu'à ce moment, cet emplacement de la mémoire de mots codés 908 contenait un élément non valable. Ainsi, la mémoire de pointeur 901 mémorise l'emplacement du mot codé non valable pour chaque valeur de comptage de succession. Le compteur de tête 903 et le compteur de queue 904 fournissent aussi des adresses permettant de faire accès à la mémoire de mots codés 908. L'utilisation du compteur de tête 903 et du compteur de queue 904 permet d'adresser la mémoire de mots codés 908 dans le mode file d'attente, ou tampon circulaire, (par exemple une mémoire FIFO c'est-à-dire du type premier entré, premier sorti). La mémoire de queue 904 contient l'adresse de l'emplacement disponible suivant dans la mémoire de mots codés 908 de façon à permettre l'insertion d'un mot codé dans la mémoire de mots codés 908. Le compteur de tête 903 contient l'adresse, dans la mémoire de mots codés 908, du mot codé suivant à délivrer. En d'autres termes, le compteur de tête 903 contient l'adresse de la mémoire de mots codés pour le mot codé suivant à retirer de la mémoire de mots codés 908. Il est utilisé un emplacement pour chaque index possible (par exemple classe de probabilité) de la mémoire de pointeur 901 pour rappeler o le pointeur de queue 904 se trouvait lorsqu'une succession a commencé, de facçon que le mot codé approprié puisse être placé à cet emplacement de la mémoire de mots codés 908 lorsque la succession prend fin. Le module de commande 909 produit un signal de validité au titre d'une partie de la donnée mémorisée dans la mémoire de mots codés 908, afin d'indiquer si un élément de la mémoire mémorise ou non une donnée de mot codé valable. Par exemple, si le bit de validité se trouve à un niveau logique 1, alors l'emplacement de la mémoire de mots codés contient une donnée valable. Toutefois, si le bit de validité est à un niveau logique 0, alors l'emplacement de la mémoire de mots codés contient une donnée non valable. Le module de détection de validité 906 détermine si un emplacement de mémoire contient un mot codé valable à chaque fois qu'un mot codé est lu dans la mémoire de mots codés 809. Dans un mode de réalisation, le module 906 de détection de validité détermine si l'emplacement de mémoire possède un mot codé valable ou un code non valable spécial. Au moment du début d'une nouvelle succession, un élément constituant une donnée non valable est placé dans la mémoire de mots codés 908. L'élément constituant une donnée non valable joue le rôle de garde-place dans le train de données mémorisé dans la mémoire de mots codés 908, de sorte que le mot codé relatif à la succession peut être mémorisé dans la mémoire à l'emplacement correct (pour assurer une mise en ordre appropriée permettant la modélisation du décodeur) lorsque la succession arrive à sa fin. Dans un mode de réalisation, l'élément constituant une donnée non valable comporte l'index via le MUX 905 et une indication de non-validité (par exemple un bit de non-validité) venant du module de commande 909. L'adresse de la mémoire de mots codés 908, à laquelle l'élément non valable est mémorisé, est donnée par le pointeur de queue 904, et elle est ultérieurement mémorisée dans la mémoire de pointeur 901 au titre de rappel de l'emplacement associé à la valeur de comptage de succession dans la mémoire de mots codés 908. Le reste de la donnée apparaît entre le pointeur de tête 903 et le pointeur de queue 904 dans la mémoire de mots codés 908 sous la forme de valeurs de comptage de successions complètes (c'est-à-dire de valeurs de comptage de successions réordonnées). Le nombre maximal d'emplacements de mémoire non valables est compris entre 0 et 1-1, o 1 est le nombre de valeurs de comptage de successions. Lorsqu'un mot codé est achevé à la fin d'une succession, la valeur de comptage de succession est placée dans la mémoire de mots codés 908 à l'aide de l'adresse mémorisée dans la mémoire de pointeur 901. Lorsqu'une succession commence, l'index associé à la succession est mémorisé dans la mémoire de mots codés 908, de sorte que, si la mémoire de mots codés 908 est pleine, alors que la succession n'est pas encore achevée, l'index est utilisé en liaison avec le signal 804 pour repositionner le compteur de successions correspondant. En plus de mémoriser des mots codés ou des index dans la mémoire de mots codés 908, on utilise un bit, appelé ici le bit de "validité", pour indiquer celui de ces deux types de données qui est mémorisé. Si on n'est pas au commencement ou à la fin d'une succession, l'unité de réordonnement de valeurs de comptage de successions est au repos (non occupée). Si l'on est au début d'une succession, et qu'on n'arrive pas à la fin d'une succession, et si la mémoire est pleine, alors un mot codé est délivré par la mémoire de mots codés 908. Le mot codé qui est délivré est le mot codé mémorisé à l'adresse contenue dans le pointeur de tête 903 pour cette classe de probabilité. Ensuite, si l'on est au début d'une succession et non à la fin d'une succession (indépendamment du fait que la mémoire soit ou non pleine), le signal d'entrée d'index 713 est écrit dans la mémoire de mots codés 908, via le multiplexeur 905 au titre de l'adresse désignée par le pointeur de queue 904. Le pointeur de queue 904 est également écrit dans la mémoire de pointeur 901 à l'adresse qui est désignée par la donnée présente sur le signal d'entrée d'index 713 (par exemple à l'emplacement de la mémoire de pointeur901 qui correspond à la classe de probabilité). Après écriture du pointeur de queue 904, le pointeur de queue 904 est incrémenté. Si l'on est à la fin d'une succession, et non au début d'une succession, alors l'adresse mémorisée dans la mémoire de pointeur901 qui correspond à l'index (classe de probabilité) est lue et est utilisée au titre de l'emplacement de la mémoire de mots codés servant à mémoriser le mot codé complet sur le signal d'entrée de mots codés 714. Si l'on est au début d'une succession et à la fin d'une succession (c'est- à-dire que la succession commence et finit en même temps), et que la mémoire est pleine, alors un mot codé est délivré par la mémoire de mots codés 908. Ensuite, si l'on est au début d'une succession et à la fin d'une succession (indépendamment du fait que la mémoire est ou non pleine), le signal d'entrée de mot codé 714 est écrit dans la mémoire de mots codés 908 à l'adresse spécifiée par le pointeur de queue 904. Le pointeur de queue 904 est alors incrémenté de sorte qu'il contient l'emplacement disponible suivant (par exemple il est incrémenté de 1). Selon la présente invention, l'unité 801 de réordonnement des valeurs de comptage des successions peut délivrer des mots codés à des instants différents. Dans un mode de réalisation, des mots codés peuvent être délivrés lorsqu'il sont valables ou non valables. Des mots codés peuvent être délivrés lorsqu'ils sont non valables s'il existe la condition "mémoire pleine" et qu'une succession n'est pas achevée. Des mots codés non valables peuvent aussi être délivrés pour maintenir un débit minimal (c'est-à-dire pour la commande du débit). De plus, des mots codés non valables peuvent être délivrés pour vider la mémoire de mots codés 908 lorsque toutes les données ont subi un réordonnement des valeurs de comptage de successions ou lorsque l'unité de réordonnement de valeurs de comptage de successions saute au milieu de la mémoire de mots codés 908 en conséquence d'une opération de repositionnement. On note que, dans ce cas, le décodeur doit avoir été informé du fait que le codeur fonctionne de cette manière. Comme décrit ci-dessus, un mot codé est délivré à chaque fois que la mémoire de mots codés 908 est pleine. Dès que la mémoire est pleine, à chaque fois qu'un signal (c'est-à-dire le début d'un nouveau mot codé) est appliqué à l'entrée de la mémoire de mots codés 908, un signal de sortie est délivré par la mémoire de mots codés 908. On notera que la mise à jour d'un tel élément ne provoque pas la délivrance d'un signal de sortie par la mémoire de mots codés 908 lorsque la condition "mémoire pleine' existe. Ainsi, l'achèvement d'une succession, suivi par l'écriture du mot codé résultant à son emplacement de mémoire préalablement assigné, ne provoque pas la délivrance d'un signal de sortie par une mémoire pleine. De même, lorsqu'une succession prend fin et que l'adresse correspondante de la mémoire de pointeur 901 et l'adresse du compteur de tête 903 sont les mêmes, le mot codé peut être délivré immédiatement et le compteur de tête 903 peut alors être incrémenté sans qu'il soit fait accès à la mémoire de mots codés 908. Dans un mode de réalisation, la condition 'mémoire pleine' apparaît lorsque le pointeur de queue 904 est égal au pointeur de tête 903 après l'incrémentation du pointeur de queue. Par conséquent, aussitôt que le pointeur de queue 904 a été incrémenté, le circuit logique de commande de l'unité 801 de réordonnement de valeurs de comptage de successions compare le pointeur de queue 904 et le pointeur de tête 903 et, s'ils sont identiques, le circuit logique de commande détermine que la mémoire de mots codés 908 est pleine et qu'un mot codé doit être délivré. Dans un autre mode de réalisation, des mots codés peuvent être délivrés avant que la mémoire soit pleine. Par exemple, si la partie de la file d'attente adressée par la tête contient des mots codés valables, il peut y avoir délivrance. Ceci nécessite que le début de la file d'attente soit examiné de façon répétée afin que soit déterminé le statut des mots codés qui s'y trouvent. On note que la mémoire de mots codés 908 se vide à la fin du codage d'un fichier. A l'aide de l'unité 801 de réordonnement de valeurs de comptage de successions, la délivrance d'un mot codé commence par la lecture d'une valeur (par exemple une donnée) dans la mémoire de mots codés 908 à une adresse spécifiée par le pointeur de tête 903. La délivrance de mots codés est commandée et coordonnée à l'aide du circuit logique de commande. Le module de détection de validité 906 effectue un essai pour déterminer si la valeur est un mot codé. En d'autres termes, le module de détection de validité 906 détermine si le mot codé est valable. Dans un mode de réalisation, le module de détection de validité 906 détermine la validité d'un quelconque élément en contrôlant le bit de validité mémorisé avec chaque élément. Si la valeur est un mot codé (c'est-à-dire que le mot codé est valable), alors la valeur est délivrée sous la forme d'un mot codé. Inversement, si la valeur n'est pas un mot codé (c'est-à-dire que le mot codé est non valable), alors, n'importe quel mot codé peut être délivré qui possède une succession de MPS au moins aussi longue que la valeur courante de comptage de succession. Le mot codé "0"est un mot codé qui représente correctement la succession courante, jusqu'à ce point, et peut être délivré. Après la délivrance, le pointeur de tête 903 s'incrémente sur la position suivante de la mémoire de mots codés 908. Sinon, l'utilisation du "'lN" ayant les plus courtes longueurs admissibles de successions permet au décodeur de vérifier simplement si un mot codé a ou non été expulsé avant l'émission d'un LPS. Dans un mode de réalisation, l'unité de réordonnement de valeurs de comptage de successions 801 fonctionne avec un temps à deux cycles d'horloge. Dans le premier cycle d'horloge, des signaux d'entrée sont reçus dans l'unité 801 de réordonnement de valeurs de comptage de successions. Dans le deuxième cycle d'horloge, une délivrance est effectuée par la mémoire de mot codés 908. Alors que des mots codés peuvent être délivrés à chaque fois que le pointeur de tête 903 adresse un mot codé valable, il peut être souhaitable, dans certaines formes de mise en oeuvre, de ne délivrer un mot codé que lorsque le tampon est plein. Ceci fait que le système possède un retard fixe, s'exprimant en termes de nombre de mots codés, au lieu d'un retard variable. Si la mémoire 908 est en mesure de conserver un nombre prédéterminé de mots codés, entre l'instant o une succession commence et est appliquée en entrée et l'instant o elle est délivrée, le retard sera ce nombre de mots codés, puisqu'une délivrance n'est pas effectuée avant qu'il ne soit plein. Par conséquent, il existe un retard constant compté en mots codés. On note que le retard de réordonnement continue d'être variable dans d'autres mesures, par exemple la quantité de données codées ou initiales. En permettant à la mémoire 908 de se remplir avant de produire un signal de sortie, on fait en sorte que l'opération de délivrance produise un mot codé par cycle. On note que, si un emplacement de la mémoire de mots codés est repéré comme non valable, les bits non utilisés peuvent servir à mémoriser une identification de celle des valeurs de comptage de successions à laquelle cet emplacement est destiné (c'est-à-dire que le compartiment de contexte ou la classe de probabilité que doit satisfaire l'emplacement y est mémorisé). Cette information est utile pour traiter le cas o la mémoire est pleine. Plus particulièrement, l'information peut être utilisée pour indiquer au générateur de bits qu'un mot codé associé à cette longueur particulière de succession n'était pas terminé et qu'il faut maintenant permettre son achèvement. Dans un tel cas, une décision a été prise de délivrer un mot codé non valable, laquelle peut avoir eu lieu en raison d'une condition "mémoire pleine". Ainsi, lorsque le système repositionne le compteur de successions, l'information indique lorsque, en termes de générateurs de bits et de valeurs de comptage de successions, le système va de nouveau commencer. En ce qui concerne le signal d'entrée d'index, pour des raisons se rapportant au traitement pipeline effectué lorsque des groupes de mémorisation de classes de probabilité sont utilisés, l'index peut comporter un identificateur de groupe de mémorisation. Ainsi, il peut y avoir plusieurs valeurs de comptage de successions pour une classe de probabilité particulière. Par exemple, deux valeurs de comptage de successions peuvent être utilisées pour le code "80 %", l'une étant utilisée, puis l'autre. Puisque les mots codés ont des longueurs variables, ils doivent être mémorisés dans la mémoire de mots codés 908 d'une manière qui permette de déterminer leur longueur. Alors qu'il serait possible de mémoriser la taille explicitement, ceci ne minimiserait pas l'utilisation de la mémoire. Pour des codes R, la mémorisation d'une valeur zéro dans la mémoire peut indiquer un mot codé à un seul bit "zéro", et les mots codés "IN" peuvent être mémorisés de façon qu'un codeur de priorité puisse être utilisé pour déterminer la longueur à partir du premier bit "1". Si la mémoire de mots codés 908 est à plusieurs accès (par exemple à deux accès), cette forme de réalisation peut être montée en pipeline pour permettre la manipulation d'un mot codé par cycle d'horloge. Puisqu'il serait possible de faire accès à tout emplacement de la mémoire de mots codés 908 à partir de plusieurs accès, on pourrait écrire un emplacement de la mémoire de mots codés 908, par exemple pendant qu'un élément non valable ou un mot codé est en train d'y être mémorisé, en même temps qu'on peut lire une autre partie, par exemple lorsqu'un mot codé est en train d'être délivré. On note que, dans ce cas, il peut être nécessaire de modifier les multiplexeurs pour permettre le traitement des données multiples et des bus d'adresse multiples. A chaque fois que le codeur délivre un mot codé "0" et repositionne un compteur de successions parce que la mémoire de mots codés est pleine, le décodeur doit en faire autant. Ceci demande que le décodeur soit modélisé sur la file d'attente de la mémoire de mots codés du codeur. La manière dont ceci peut être réalisé va être discutée ci-après. On note que, pour économiser l'énergie dans des mises en oeuvre utilisant des dispositifs CMOS, on peut invalider les compteurs pour les mots codés "IN" lorsque des mots codés "0" sont délivrés pour des successions non valables. Ceci est dû au fait qu'un mot codé "iN' en train d'être décodé est valable, tandis qu'un mot codé o"0" peut ne pas être valable. Autre mode de réalisation basé sur le contexte La figure 10 est un schéma fonctionnel d'un autre mode de réalisation d'une unité de réordonnement des valeurs de comptage des successions, qui reordonne des données reçues en fonction d'un contexte (par opposition à la classe de probabilité). L'unité 1000 de réordonnement de valeurs de comptage de successions effectue le réordonnement à l'aide des codes R. Comme présenté sur la figure 10, l'unité de réordonnement 10 comporte une mémoire de pointeur 1001, un compteur de tête 1002, un compteur de queue 1003, un multiplexeur de données (MUX) 1004, un multiplexeur d'adresse 1005, un bloc de détermination de longueur de calcul 1006, un bloc de détection de validité 1007, et une mémoire de mots codés 1008. La mémoire de mots codés 1008 mémorise des mots codés pendant le réordonnement. La mémoire de pointeur 1001 mémorise des adresses d'emplacements de la mémoire de mots codés destinés à des compartiments de contexte qui se trouvent au milieu d'une succession. Le compteur de tête 1002 et le compteur de queue 1003 permettent de faire accès à la mémoire de mots codés 1008 suivant un mode file d'attente, ou tampon circulaire, en plus de pouvoir y faire accès de façon aléatoire à l'aide de la mémoire de pointeur 1001. Pour les codes R, la mémorisation d'une valeur zéro dans la mémoire peut indiquer un mot codé à un seul bit "o", et les mots codés "IN" peuvent être mémorisés de façon qu'un codeur de priorité puisse être utilisé pour déterminer la longueur à partir du premier bit "1". Le module de détermination de longueur de calcul 1006 fonctionne comme un codeur de priorité. (Si d'autres codes de longueurs variables étaient utilisés, il serait plus efficace du point de vue de la mémoire d'ajouter un bit "1" pour repérer le début du mot codé que d'ajouter log2 bits afin de mémoriser explicitement la longueur.) L'unité de réordonnement de valeurs de comptage de successions 1000 comporte également un circuit logique de commande permettant, en coulisses, de coordonner de commander le fonctionnement des composants 1001 à 1008. Le fonctionnement de l'unité de réordonnement de valeurs de comptage de successions 1000 est très semblable à celui de l'unité de réordonnement de valeurs de comptage de successions qui utilise les estimations de probabilité. Si l'on se trouve au début d'une nouvelle succession, alors un élément non valable contenant le compartiment de contexte s'inscrit dans la mémoire de mots codés 1008 à l'adresse indiquée par le pointeur de queue 1003. L'adresse du pointeur de queue 1003 est ensuite mémorisée dans la mémoire de pointeur 1001, à l'adresse du compartiment de contexte de la valeur de comptage de succession courante. Ensuite, le pointeur de queue 1003 s'incrémente. Lorsqu'une succession se termine, alors le pointeur présent dans la mémoire de pointeur 1001 qui correspond à la valeur de comptage de succession est lu dans la mémoire de pointeur 1001, et le mot codé s'inscrit en parallèle dans la mémoire de mots codés 1008 en un emplacement désigné par ce pointeur. Si l'on ne se trouve ni au début ni à la fin d'une succession, et si un emplacement de la mémoire de mots codés 1008 désigné par l'adresse du pointeur de tête 1002 ne contient pas de donnée non valable, alors le mot codé adressé par le pointeur de tête est lu et est délivré. Ensuite, le pointeur de tête 1002 s'incrémente. Dans le cas o une succession commence et se termine en même temps, le mot codé est inscrit dans la mémoire de mots codés 1008 à l'adresse désignée par le pointeur de queue 1003, après quoi le pointeur de queue 1003 s'incrémente. De la même façon, lorsqu'une succession se termine et lorsque l'adresse correspondante de la mémoire de pointeur 1001 et l'adresse du compteur de tête 1002 sont identiques, le mot codé peut être délivré immédiatement, et la valeur contenue dans le compteur de tête 1002 peut s'incrémenter sans qu'il soit fait accès à la mémoire de mots codés 1008. Pour des systèmes "basés sur le contexte" de comptage de successions, chaque contexte demande un emplacement de mémorisation dans la mémoire de pointeur 1001, de sorte que la largeur de la mémoire des états des BG et des PEM peut étendue pour former cette mémoire. La largeur de la mémoire de pointeur 1001 est égale à la taille nécessaire pour une adresse de la mémoire de mots codés. Le nombre des emplacements de la mémoire de mots codés 1008 peut être choisi par le concepteur en fonction de la forme particulière de la mise en oeuvre. La taille limitée de cette mémoire réduit le rendement de compression, de sorte qu'il s'agit de trouver un compromis entre le coût et la compression. La largeur de la mémoire de mots codés est égale à la taille du mot codé le plus grand, plus un bit destiné à l'indication de validité ou de non-validité. Un exemple utilisant le code R2(2), que montre le tableau 13 ci- dessous, va être présenté pour illustrer l'opération de réordonnement. Le tableau 14 montre les données à réordonner (0=MPS, symbole plus probable; 1=LPS, symbole moins probable), repérées par un contexte. Il n'y a que deux contextes. Le numéro du bit non codé indique le temps, compté en cycles d'horloge de bits non codés. Le début et la fin des successions sont indiqués, respectivement par S et E, et des mots codés sont présentés à la fin des successions. TABLEAU 13 - Code R2(2) Donnée initiale Mot codé 0000 O 0001 100 001 110 01 101 1 111 TABLEAU 14 - Exemple de données à coder Num6ro de bit Donnée Contexte Début (S) ou fin (E) Mot codé non codé de succession 1 O O S 2 O 1 S 3 O O0 4 1 1 E 101 O O0 6 O 1 S 7 0 0 E O 8 i 1 E 101 9 O 0 S O 1 S il o 0 _ 0_1 12 0 1 13 O 0 14 0 1 1 0 E 100 *16 O 1 E O L'opération de réordonnement relatif aux données de l'exemple est présentée dans le tableau 15. Une mémoire de mots codés ayant quatre emplacements, O à 3, est utilisée, laquelle est assez grande pour qu'il n'y ait pas de débordement dans cet exemple. Chaque rangée montre l'état du système après une opération, qui est soit le début, soit la fin d'une succession pour un certains contexte, ou bien la délivrance d'un mot codé. On utilise "x" pour indiquer des emplacements de mémoire qui sont "indifférents". Pour certains bits non codés, la succession ne commence ni ne finit, si bien que l'unité de réordonnement de valeurs de comptage de successions est non occupée. Pour des bits codés qui terminent des successions, un ou plusieurs mots codés peuvent être délivrés, ce qui peut amener plusieurs changements dans l'état du système. TABLEAU 15 - Exemple d'opérations de réordonnement Numéro Entrée pointeurs mémoire de Mémoire de mots codés Sortie de bit pointeur non codé tête queue O 1 O 1 2 3 1 débutO O _ x fnon X X X _ _ _ __ _ _ __ _ _ _ valable _ _ __ _ 2 début 1 O 2 O 1 non non x x _ _ _ _ ___ __ _ _ _ valable valable k _ 3 (unité de réordonnement non occupée) 4 fin!01 2 | O | non 101 |I x 1,1 01 vae I I I ab| (unité de réordonnement non occupée) 6 début 1 O 3 O 2 non 101 non x I____ _ _I__ I _ _ Ivalable valable 7 fin 0,0 O 3 x 2 O 101 non x valable oI 3 x 2 x 101 non x O _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ valable _ _ _ _ _ 2 3 x 2 x x non x 101 valable 8 fin 2 3 x x x x 101 x 1,101 3 3 x x x x x x 101 9 début O 3 O 3 x x x x non valable début 1 3 1 3 O non x x non __ __alable _valable 12 (unité de réordonnement non occupée) fin 3 1 x 0 non x x 100 0,100. valable _ _ O 1 x O non x x X 100 _ _ __ _ _ _ valable 16 fin 1,0 O 1 x x O x xT___ _ _,1 1 1 IXX X X X I I o Comme on peut le voir sur la figure 15, les pointeurs de tête et de queue sont initialisés à zéro, pour indiquer que rien n'est contenu dans la mémoire de mots codés (par exemple file d'attente). La mémoire de pointeur est représentée comme possédant deux emplacements de mémorisation, un pour chaque contexte. Chaque emplacement possède la valeur "indifférent" avant le bit numéro 1. La mémoire de mots codés est représentée comme ayant une profondeur de quatre mots codés, tous initialement de valeur "indifférent". En réponse aux données reçues pour le bit numéro 1, le pointeur de tête reste à pointer l'emplacement 0 de la mémoire de mots codés. Puisque le décodeur attend des données, l'emplacement disponible suivant de la mémoire de mots codés, soit 0, est attribué au mot codé et une valeur "non valable" est écrite dans l'emplacement de mémoire 0. Puisque le contexte est "0"o, l'adresse de l'emplacement de la mémoire de mots codés qui est attribué au mot codé est mémorisée à l'emplacement de la mémoire de pointeur destiné au contexte zéro (emplacement 0 de la mémoire de pointeur). Ainsi, un "0" est mémorisé à l'emplacement 0 de la mémoire de pointeur. Le pointeur de queue s'incrémente jusqu'à la position 1 suivante de la mémoire de mots codés. En réponse aux données correspondant au bit numéro 2, le compteur de tête reste à pointer le premier emplacement de mémorisation (puisqu'il n'y a pas eu de délivrance pour provoquer son incrémentation). Puisque la donnée correspond au deuxième contexte, à savoir le contexte 1, l'emplacement suivant de la mémoire de mots codés est attribué au mot codé en tant qu'emplacement 1 de la mémoire de mots codés, comme indiqué par le pointeur de queue, et une valeur non valable est écrite dans l'emplacement. L'adresse, à savoir l'emplacement 1 du mot codé, est écrite dans l'emplacement de la mémoire de pointeur qui correspond au contexte 1. Ainsi, l'adresse de la deuxième position de la mémoire de mots codés est écrite dans l'emplacement 1 de la mémoire de pointeur. Ensuite, le pointeur de queue s'incrémente. En réponse à la donnée correspondant au bit numéro 3, l'unité de réordonnement est "non occupée", puisqu'aucune succession ne commence ou ne finit. En réponse à la donnée correspondant au bit numéro 4, une fin de succession est indiquée pour le contexte 1. Ainsi, le mot codé "101" est écrit dans l'emplacement de la mémoire de mots codés qui est affectée au contexte 1 (emplacement 1 de la mémoire de mots codés), comme indiqué par l'emplacement de la mémoire de pointeur associé au contexte 1. Les pointeurs de tête et de queue restent les mêmes, et la valeur contenue dans l'emplacement de la mémoire de pointeur associé au contexte 1 ne sera pas de nouveau utilisée, si bien qu'il y a une valeur "indifférent". En réponse à la donnée correspondant au bit numéro 5, l'unité de réordonnement est "non occupée", puisqu'aucune succession ne commence ou ne finit. En réponse à la donnée correspondant au bit numéro 6, les mêmes opérations que celles décrites ci-dessous pour le bit 2 se produisent. En réponse à la donnée correspondant au bit numéro 7, la fin de la succession associée au mot codé du contexte 0 se produit. Dans ce cas, le mot codé "0" est écrit dans l'emplacement de la mémoire de mots codés (emplacement 0 de la mémoire de mots codés), comme indiqué par l'emplacement de la mémoire de pointeur associé au contexte 0 (emplacement 0 de la mémoire de pointeur). Ensuite, la valeur présente sur l'emplacement de la mémoire de pointeur n'est de nouveau pas utilisée, de sorte qu'il y a une valeur "indifférent". On note que l'emplacement de la mémoire de mots codés désigné par le pointeur de tête contient une donnée valable. Par conséquent, la donnée valable est délivrée et le pointeur de tête s'incrémente. L'incrémentation du pointeur de tête fait qu'il vise un autre emplacement de la mémoire de mots codés, qui contient un mot codé valable. Ainsi, ce mot codé est délivré et le pointeur de tête s'incrémente de nouveau. On note que, dans cet exemple, les mots codés sont délivrés lorsqu'ils sont capables, en opposition avec le cas o cela se produit lorsque la mémoire de mots codés est complètement pleine. Le traitement des bits non codés continue de s'effectuer selon la description précédente. On note que les emplacements de la mémoire de mots codés ne sont pas spécialement destinés à être utilisés avec des contextes particuliers, de sorte que des mots codés venant de n'importe quel contexte peuvent être mémorisés dans un emplacement particulier de la mémoire de mots codés pendant le codage d'un fichier de données. L'unité de mise en paquets des bits La mise en paquets des bits est illustrée sur la figure 4, o des données traitées par l'unité de réordonnement avant et après la mise en paquets des bits sont présentées. On se reporte de nouveau à la figure 4. Seize mots codés de longueurs variables sont représentés, qui sont numérotés de 1 à 16 pour indiquer l'ordre d'utilisation par le décodeur. Chaque mot codé est affecté à l'un de trois trains codés. Les données de chaque train codé sont coupées en mots de longueur fixe, appelés mots entrelacés. (on note qu'un unique mot codé de longueur variable peut être découpé en deux mots entrelacés.) Dans cet exemple, les mots entrelacés sont ordonnés dans un unique courant entrelacé de façon que l'ordre du premier mot codé de longueur variable (ou mot codé partiel) se trouvant dans un mot entrelacé particulier détermine l'ordre du mot entrelacé. D'autres types de critères d'ordonnement peuvent être mis en oeuvre. L'avantage qu'il y a à entrelacer les multiples trains codés est qu'on peut utiliser un unique canal de données codées pour transférer les données et qu'un décalage de longueur variable peut être exécuté pour chaque train en mode parallèle ou en mode pipeline. L'unité 802 de mise en paquets des bits selon l'invention reçoit les mots codés de longueurs variables de la part de l'unité 801 de réordonnement des valeurs de comptage des successions et les met en paquets en des mots entrelacés. L'unité 802 de mise en paquets des bits comprend un circuit logique permettant la manipulation de mots codés de longueurs variables et une unité de réordonnement du type file d'attente fusionnée servant à délivrer, dans l'ordre correct, des mots entrelacés de longueur fixe. Dans un mode de réalisation, les mots codés sont reçus de la part de l'unité de réordonnement de valeurs de comptage de successions, avec un débit pouvant atteindre un mot codé par cycle d'horloge. Un schéma fonctionnel d'un mode de réalisation de l'unité de mise en paquets des bits 802 est présenté sur la figure 11. Dans le mode de réalisation suivant, quatre courants entrelacés sont utilisés, chaque mot entrelacé possède 16 bits, et les mots codés ont des longueurs qui varient entre 1 et 13 bits. Dans un mode de réalisation, une unique unité de mise en paquets des bits est montée en pipeline afin de traiter tous les trains. Si l'unité de mise en paquets des bits 802 selon l'invention utilise une mémoire à deux accès (ou un fichier de registre), elle peut délivrer un mot entrelacé par cycle d'horloge. Ceci peut se révéler plus rapide qu'il n'est nécessaire pour suivre le reste du codeur. On se reporte de nouveau à la figure 11. L'unité de mise en paquets des bits 802 comporte un circuit logique de mise en paquets 1101, un compteur de train 102, une mémoire 1103, des pointeurs de queue 1104 et un compteur de tête 1105. Le circuit logique de mise en paquets 1101 est couplé de façon à recevoir les mots codés et est connecté au compteur de train 1102. Le compteur de train 1102 est également couplé à la mémoire 1103. A la mémoire 1103, sont également couplés les pointeurs de queue 1104 et le compteur de tête 1105. Le compteur de train 1102 conserve la trace du train entrelacé auquel le mot codé d'entrée courant est associé. Dans un mode de réalisation, le compteur de train 1102 compte à répétition les trains allant de 0 à N-1, o N est le nombre de trains. Dès que le compteur 1102 a atteint N-1, il commence à compter de nouveau à partir de 0. Dans un mode de réalisation, le compteur de train 1102 est un compteur à 2 bits et il compte de 0 à 3 (pour quatre trains entrelacés). Dans un mode de réalisation, le compteur de train 1102 est initialisé à zéro (par exemple par l'intermédiaire d'un repositionnement global). Le circuit logique de mise en paquets 1101 fusionne le mot codé d'entrée courant avec les mots codés précédemment introduits afin de former des mots codés entrelacés. La longueur de chacun des mots codés peut varier. Ainsi, le circuit logique de mise en paquets 1101 forme des paquets de ces mots codés de longueurs variables pour obtenir des mots de longueur fixe. Les mots codés entrelacés créés par le circuit logique de mise en paquets 1101 sont délivrés à la mémoire 1103, dans l'ordre, et sont mémorisés dans la mémoire 1103 jusqu'à ce que soit venu le moment voulu de les délivrer en sortie. Dans un mode de réalisation, la mémoire 1103 est une mémoire vive statique (SRAM) ou un fichier de registre ayant soixante-quatre mots de 16 bits. Les mots entrelacés sont mémorisés dans la mémoire 1103. Selon l'invention, la taille de la mémoire 1103 est suffisamment grande pour traiter deux cas. Un cas est celui du fonctionnement normal o un train entrelacé possède des mots codés de longueur minimale tandis que les autres trains entrelacés ont des mots codés de longueur maximale. Le premier cas demande 3x13=39 emplacements de mémorisation. L'autre cas est celui de l'initialisation, o, de nouveau, un train possède des mots codés de longueur minimale, ou mots codés courts, et les autres possèdent des mots codés de longueur maximale, ou mots codés longs. Dans le deuxième cas, alors que 2x3x13=78 emplacements de mémorisation sont suffisants, le fonctionnement du PEM permet une limitation plus serrée, à savoir 56. La mémoire 1103 effectue, en coopération avec le compteur de train 1102 et les pointeurs de queue 1104, le réordonnement. Le compteur de train 1102 indique le train courant d'un mot codé en train d'être reçu par la mémoire 1103. Chaque train entrelacé est associé à au moins un pointeur de queue. Les pointeurs de queue 1104 et le compteur de tête 1105 effectuent un réordonnement des mots codés. La raison pour laquelle il y a deux pointeurs de queue par train découle du fait que le mot entrelacé N est demandé par le décodeur lorsque la donnée contenue dans le mot entrelacé N-1 contient le début du mot codé suivant. Un premier pointeur de queue détermine l'emplacement de la mémoire 1103 destiné à mémoriser le mot entrelacé suivant d'un train entrelacé donné. L'autre pointeur de queue détermine l'emplacement de la mémoire o il faut mémoriser le mot entrelacé venant après le mot entrelacé suivant. Ceci permet que l'emplacement du mot entrelacé N soit spécifié lorsque l'instant ou le décodeur demande le mot entrelacé N-1 est connu. Dans un mode de réalisation, les pointeurs sont huit registres à 6 bits (deux pointeurs de queue par train). Dans un mode de réalisation, au début du codage, les pointeurs de queue 1104 sont positionnés de façon que les huit premiers mots entrelacés (deux de chaque train) soient mémorisés dans la mémoire 1103 en séquence à raison d'un en provenance de chaque train. Apres l'initialisation, à chaque fois que le circuit logique de mise en paquets 1101 commence un nouveau mot entrelacé pour un train de codes particulier, le pointeur de queue "suivant" est positionné sur la valeur du pointeur de queue "suivant venant après", et le pointeur de queue "suivant venant après" associé au train de codes est positionné sur l'emplacement de mémorisation disponible suivant. Ainsi, il y a deux pointeurs de queue pour chaque train. Dans un autre mode de réalisation, un seul pointeur de queue est utilisé pour chaque train et indique o le mot entrelacé suivant doit être mémorisé dans la mémoire 1103. Le compteur de tête 1105 est utilisé pour déterminer l'emplacement de mémorisation du mot entrelacé suivant à faire délivrer par l'unité de mise en paquets des bits 802. Dans le mode de réalisation décrit, le compteur de tête 1105 comprend un compteur à 6 bits qui s'incrémente pour délivrer un mot entrelacé entier à la fois. La mémoire 1103, en plus d'être utilisée pour le réordonnement, peut aussi être utilisée comme moyen de mise en tampon du type FIFO entre le codeur et le canal. Il peut être souhaitable que cette mémoire soit plus grande que ce qui est nécessaire pour le réordonnement, si bien qu'un signal indiquant que le FIFO est presque plein peut être utilisé pour faire attendre le codeur lorsque le canal ne peut pas suivre le codeur. Un codeur à un bit par cycle ne peut pas produire un mot entrelacé par cycle. Lorsqu'un codeur est bien apparié à un canal, le canal n'acceptera pas un mot entrelacé à chaque cycle, et un peu de mise en tampon du type FIFO est nécessaire. Par exemple, un canal qui peut accepter un mot entrelacé de 16 bits tous les 32 cycles d'horloge serait un modèle bien apparié pour une extension de la largeur de bande effective de 2:1 lorsque la compression est de 2:1 ou plus. 56 2725330 Circuit logique de mise en paquets selon l'invention Un schéma fonctionnel du circuit logique de mise en paquets est présenté sur la figure 12. Comme représenté sur la figure 12, le circuit logique de mise en paquets 1101 comprend une unité 1201 de traitement de taille, un groupe d'accumulateur 1202, un dispositif de décalage 1203, un multiplexeur (MUX) 1204, un groupe de registres 1205, et un circuit logique 1206 du type porte OU. L'unité 1201 de traitement de taille est couplée de façon à recevoir des mots codés et est connectée aux accumulateurs 1202. Les accumulateurs ainsi que les mots codés sont couplés au dispositif de décalage 1203. Le dispositif de décalage 1203 est couplé au MUX 1204 et au circuit logique 1206 du type porte OU. Le MUX 1204 est également couplé aux registres 1205 et à la sortie du circuit logique de type porte OU 1206. Les registres sont également couplés au circuit logique du type porte OU 1206. Dans un mode de réalisation, les mots codés sont appliqués en entrée sur un bus à 13 bits ayant des bits non utilisés sous forme de zéros. Ces bits non utilisés mis sous forme de zéros sont adjacents aux "1" des mots codés "IN" de sorte qu'un codeur de priorité de l'unité de traitement de taille 1201 peut être utilisé pour déterminer la longueur des mots codés "IN" et produire la taille pour les mots codés "0". Les accumulateurs 1202 sont formés de plusieurs accumulateurs, à raison d'un pour chaque train entrelacé. L'accumulateur associé à chaque train entrelacé maintient un enregistrement du nombre de bits se trouvant déjà dans le mot entrelacé courant. Dans un mode de réalisation, chaque accumulateur comprend un additionneur à 4 bits (avec report) et un registre à 4 bits utilisé pour chaque train. Dans un mode de réalisation, le signal de sortie de l'additionneur est le signal de sortie de l'accumulateur. Dans un autre mode de réalisation, le signal de sortie du registre est le signal de sortie de l'accumulateur. A l'aide de la taille des mots codés telle que reçue de la part de l'unité de traitement de taille 1201, les accumulateurs déterminent le nombre de bits à décaler afin de concaténer, ou enchaîner, le mot codé courant dans le registre contenant le mot entrelacé courant relatif à ce train. Sur la base de la valeur courante de l'accumulateur, le dispositif de décalage 1203 aligne le mot codé courant de façon qu'il suive de manière appropri&ée tous les mots codés précédents de ce mot entrelacé. Ainsi, la donnée contenue dans le codeur est décalée suivant l'ordre du décodeur. Le signal de sortie du dispositif de décalage 1203 est de 28 bits, ce qui permet de traiter le cas o un mot codé de 13 bits doit être adjoint aux 15 bits du mot entrelacé courant, de façon que les bits du mot codé courant se terminent dans les 12 bits supérieurs des 28 bits en train d'être délivrés. On note que le dispositif de décalage 1203 fonctionne sans réaction, et peut donc être monté en mode pipeline. Dans un mode de réalisation, le dispositif de décalage 1203 comprend un dispositif de décalage en barillet. Les registres 1205 mémorisent les bits contenus dans les mots entrelacés courants. Dans un mode de réalisation, un registre à 16 bits pour chaque train entrelacé conserve les bits précédents du mot entrelacé courant. Initialement, un mot codé d'un train est reçu par le dispositif de décalage 1203, tandis que l'unité de traitement de taille 1201 indique la taille du mot codé à l'accumulateur qui correspond au train. L'accumulateur possède une valeur initiale zéro, fixée via un repositionnement global. Puisque la valeur de l'accumulateur est zéro, le mot codé n'est pas décalé, puis fait l'objet, dans le circuit logique OU 1206, d'une réunion logique avec le contenu du registre correspondant au train. Toutefois, dans certains modes de réalisation, des mots codés 1N doivent être décalés de façon à se trouver correctement alignés même au début d'un mot entrelacé. Ce registre a été initialisé à zéro et, par conséquent, le résultat de l'opération de réunion logique est de placer le mot codé aux positions de bits situées le plus à droite dans le signal de sortie du circuit logique OU 1206, avec renvoi en réaction via le MUX 1204 au registre en vue d'un stockage qui durera jusqu'au mot codé suivant du train. Ainsi, initialement, le dispositif de décalage 1203 fonctionne comme un moyen de passage direct. On note que le nombre de bits du premier mot codé est maintenant mémorisé dans l'accumulateur. A la réception du mot codé suivant de ce train, la valeur contenue dans l'accumulateur est envoyée au dispositif de décalage 1203 et le mot codé est décalé vers la gauche, de ce nombre de bits, pour réaliser la combinaison avec tous les bits précédemment introduits du mot entrelacé. Des zéros sont placés aux autres positions de bits du mot décalé. Les bits venant du registre qui correspond au train sont combinés avec les bits venant du dispositif de décalage 1203 à l'aide du circuit logique OU 1206. Si l'accumulateur ne produit pas d'indication de report (par exemple un signal), alors plus de bits sont nécessaires pour rendre complet le mot entrelacé courant, et la donnée résultant de l'opération de réunion logique est mise en réserve dans le registre via le MUX 1204. Dans un mode de réalisation, le MUX 1204 comprend un multiplexeur2:1. Lorsque l'accumulateur produit un 58 2725330 report, les 16 bits des données ayant subi la réunion logique qui sortent du circuit logique OU 1206 constituent un mot entrelacé complet et sont donc délivrés. Le MUX 1204 fait que le registre se charge à l'aide de n'importe quels bits supplémentaires (par exemple les 12 bits supérieurs du signal de 28 bits sortant du dispositif de décalage 1203) après les 16 premiers, et il charge le reste à l'aide de zéros. La commande du MUX 1204 et de la délivrance du mot entrelacé est constituée par le signal de report venant de l'accumulateur. Dans un mode de réalisation, le multiplexeur 1204 comprend seize multiplexeurs 2:1, quatre de ceux-ci ayant un signal d'entrée qui vaut toujours zéro. Options de réordonnement L'invention propose de multiples options pour l'exécution du réordonnement des données. Par exemple, dans un système ayant plusieurs trains de codes, les trains de codes doivent être réordonnés en mots entrelacés, comme représenté sur la figure 4. L'invention propose de nombreuses manières d'effectuer ce réordonnement en mots entrelacés. Un procédé de réordonnement des données en mots entrelacés consiste à utiliser un décodeur 'fouineur", tel que représenté sur la figure 25. Comme on peut le voir sur la figure 25, plusieurs unités de réordonnement des valeurs de comptage des successions, soit 2501A à 2501n sont couplées de façon à recevoir des informations de mots codés en même temps que le train de mots codés. Chacune produit un signal de sortie de mot codé et un signal de sortie de taille. Une unité logique de mise en paquets des bits 1101 distincte, soit l'une respective des unités de mise en paquets des bits 2502A à 2502n, est couplée de façon à recevoir les signaux de sortie de mot codé et de taille de la part de l'une des unités de réordonnement de valeurs de comptage de successions 2501A à 2501n. Les unités logiques de mise en paquets des bits, 2502A à 2502n, délivrent des mots entrelacés, qui sont appliqués à la fois au MUX 2503 et au décodeur fouineur 2504. Le décodeur 2504 produit un signal de commande de sélection qui est reçu par le multiplexeur2503 et indique au multiplexeur2503 quel mot entrelacé il faut délivrer dans le train de codes. Chaque train de données codées possède une unité de réordonnement de valeurs de comptage de successions, comprenant l'unité 801 de réordonnement de valeurs de comptage de successions présentée sur la figure 8. Chaque unité de mise en paquets des bits combine des mots codés de longueurs variables en des mots entrelacés de taille fixe, pouvant être de 8, 16 ou 32 bits par mot. Chaque 59 2725330 unité de mise en paquets des bits contient des registres et un circuit de décalage, comme décrit ci-dessus. Le décodeur 2504 comprend un décodeur complètement fonctionnel (comprenant un BG, un PEM et un CM) qui donne accès aux mots entrelacés venant de toutes les unités de mise en paquets des bits (soit sur des bus séparés, comme représenté sur la figure 25, soit par l'intermédiaire d'un bus commun). A chaque fois que le décodeur 2504 sélectionne un mot entrelacé venant de l'une des unités de mise en paquets des bits, ce mot est transmis dans le train de codes. Puisque le décodeur se trouvant à l'extrémité réceptrice demandera les données dans le même ordre que le décodeur fouineur identique, les mots entrelacés sont transmis dans l'ordre correct. Un codeur doté d'un décodeur fouineur peut être intéressant dans un système en semi-duplex, puisque le décodeur fouineur peut également être utilisé comme décodeur normal. Un avantage de l'approche utilisant un décodeur fouineur est qu'elle peut s'appliquer à n'importe quel décodeur déterministe. D'autres solutions, discutées ci-après, ne faisant pas appel à un décodeur fouineur, utilisent des modèles plus simples de décodeur pour réduire le coût du matériel. En ce qui concerne les décodeurs qui décodent plusieurs mots codés au cours du même cycle d'horloge, la modélisation du décodeur à l'aide d'un matériel moindre que celui constituant un décodeur proprement dit peut ne pas être possible, ce qui nécessite l'utilisation d'un décodeur fouineur. Comme cela sera décrit ci-après, dans le cas de décodeurs qui ne décodent, au plus, qu'un mot codé par cycle, il existe des modèles plus simples. Une autre technique permettant de réordonner des données dans des systèmes de décodage du type pipeline qui décodent au plus un mot codé par cycle d'horloge repose sur le fait que la seule information nécessaire pour modéliser les demandes du décodeur concernant des données codées est la connaissance de l'ordre des mots codés (tous les mots codés étant considérés, et non pas simplement, indépendamment, les mots codés de chaque train de données codées). Si l'on associe un "horodatage" à chaque mot codé lorsque celui-ci entre dans l'unité de réordonnement des valeurs de comptage des successions, le mot entrelacé mis en paquet, quel qu'il soit, qui est associé à l'horodatage le plus ancien, sera le mot codé entrelacé suivant à délivrer. Une unité de réordonnement du codeur est présentée à titre d'exemple sous forme de schéma de principe sur la figure 26. Comme on peut le voir sur la figure 26, le système de codage est le même que celui de la figure 25, à l'exception du fait qu'une information d'horodatage est reçue par chaque unité 2501A à 2501n de réordonnement de valeurs de comptage de successions. Cette information d'horodatage est également envoyée aux unités 2502A à 2502n de mis en paquets des bits. Les unités 2502A à 2502n de mise en paquets des bits fournissent des mots entrelacés au MUX 2503 et les horodatages qui leurs sont associés au circuit logique 2601. Le circuit logique 2601 fournit un signal de commande au MUX 2503 de façon à sélectionner le mot entrelacé devant être délivré au train de codes. Dans ce mode de réalisation, le décodeur fouineur est remplacé par une simple comparaison, qui détermine quelle est l'unité 2502A à 2502n de mise en paquets des bits qui possède le mot codé (ou une partie de mot codé) ayant l'horodatage le plus ancien. Un tel système apparaît au MUX 2503 sous la forme de multiples files d'attente ayant des horodatages. Le circuit logique 2601 choisit simplement entre diverses files d'attente. Le contenu logique de chacune des unités de réordonnement de valeurs de comptage de successions 2503A à 2503n ne varie que légèrement (par rapport à l'unité 801 de réordonnement de valeur de comptage de succession) de façon à pouvoir écrire un horodatage lorsqu'une succession commence. Chacune des unités 2501A à 2501n de réordonnement des valeurs de comptage des successions est équipée de façon à mémoriser l'horodatage dans la mémoire de mots codés. Le fait de mémoriser des horodatages ayant suffisamment de bits pour pouvoir énumérer tous les mots codés du train de données codées est suffisant, mais, dans certains modes de réalisation, on peut utiliser moins de bits. Une brève description des opérations utilisées en liaison avec des files d'attente multiples ayant des horodatages est présentée ci-après. Cette description sera comprise de l'homme de l'art. Il s'agit des opérations du codeur. Aucune simplification n'a été faite pour les cas o une succession commence et finit à la fois pour le même mot codé. Les opérations peuvent être contrôlées pour chaque symbole codé (même si, en pratique, toutes les vérifications ne sont pas nécessaires). Les mots entrelacés sont supposés être d'une taille de 32 bits. if (no current codeword for context) ( place time in Queue (used todetermine next Queue) place context pointer in Queue place invalid data in Queue point context to Queue entry increment Queue tail if (already a codeword and MPS) increment context runcount } i (MAXRUN or LPS) place correct data in Queue (context pointer unneeded) zero pointer & runcount in context memory update probability estimate in context memory ! if (valid data at head of next queue) { place 32 bits of data on output clear Queue entry increment Queue head ! while (any queue is almost full) find the next Queue which must place data on the output while (less than 32 bits of valid data) { use context pointer to find context zero pointer & run count in context memory place MAXRUN code word in Queue data } Les opérations du décodeur sont analogues, même s'il n'est pas nécessaire que les mots codés soient mis en réserve dans la file d'attente. Il est encore nécessaire de sauvegarder l'horodatage des mots codés dans la file d'attente. La fonction des horodatages ci-dessus présentés est de mémoriser les informations concernant l'ordre des mots codés. Une manière équivalente d'exprimer le même concept passe par l'utilisation d'une unique file d'attente pour tous les mots codés, c'est-à-dire d'une file d'attente fusionnée. Dans un système à file d'attente fusionnée, comme représenté sur la figure 27, une unique unité 2701 de réordonnement des valeurs de comptage des successions est utilisée pour tous les trains entrelacés. L'unité 2701 de réordonnement de valeurs de comptage de successions produit des signaux de sortie de mots codés, de taille et de train à destination des unités 2502A à 2502n, qui délivrent des mots entrelacés à la MUX 2503 et une information de position au circuit logique 2702, lequel signale au MUX 2503 de délivrer des mots entrelacés au titre d'un partie du train de codes. Dans le cas de trains arbitraires, la mémoire de réordonnement de valeurs de comptage de succesions mémorise une identification, ID, de train entrelacé pour chaque mot codé. Chaque train entrelacé possède son propre pointeur de tête. Lorsqu'une unité de mise en paquets des bits a besoin de plus de données, son pointeur de tête correspondant est utilisé pour extraire autant de mots codés qu'il en faut pour former un nouveau mot entrelacé. La détermination des mots codés qui font partie du train voulu peut demander l'examen de nombreux emplacements de la mémoire de mots codés. Sinon, il peut se révéler nécessaire de 62 2725330 rechercher, dans la mémoire de mots codés, des zones supplémentaires pour mettre en oeuvre une liste liée. Un autre procédé d'entrelacement de trains selon l'invention utilise une file d'attente fusionnée ayant une affectation fixe des trains. Ce procédé fait appel à unique pointeur de queue, comme dans le cas de la file d'attente fusionnée, mais aucun un horodatage n'est nécessaire. De plus, plusieurs pointeurs de tête sont utilisés, comme dans le cas précédent, de sorte qu'il n'y a pas de signaux auxiliaires dans la délivrance des données venant d'un train particulier. Pour réaliser cela, on effectue l'affectation des mots codés à des trains entrelacés selon la règle suivante, dans le cas de N trains: le mot codé M est affecté au train M modulo (mod) N. On note que, selon ce procédé, des trains entrelacés peuvent avoir des mots codés provenant de n'importe quel compartiment de contexte ou n'importe quelle classe de probabilité. Si le nombre de trains est une puissance de 2, on peut calculer M mod N en rejetant certains des bits plus significatifs. Par exemple, on suppose que la mémoire de réordonnement des mots codés est adressée à l'aide de 12 bits et qu'on utilise quatre trains entrelacés. Le pointeur de queue a une longueur de 12 bits, et les deux bits les moins significatifs identifient le train codé du mot codé suivant. Dans le cas de quatre pointeurs de tête à 10 bits, chacun est implicitement affecté à l'une des quatre combinaisons possibles des deux bits les moins significatifs. Les pointeurs de queue et de tête sont tous deux incrémentés comme des compteurs binaires normaux. Dans le décodeur, le dispositif de décalage possède des registres servant à mémoriser des mots entrelacés. Le dispositif de décalage présente, au générateur de bits, des données codées correctement alignées. Lorsque le générateur de bits utilise certaines données codées, il en informe le dispositif de décalage. Le dispositif de décalage présente des données correctement alignées venant du train entrelacé suivant. Si le nombre de trains de données codées est N, le dispositif de décalage dispose de N-1 cycles d'horloge pour faire sortir les données utilisées en les décalant et il demande peut être un autre mot codé entrelacé avant d'utiliser de nouveau ce train entrelacé particulier. Le décodeur selon l'invention L'invention contient un décodeur qui permet au codeur en temps réel de fonctionner avec une mémoire de réordonnement limitée. Dans un mode de réalisation, le décodeur comporte aussi des exigences de mémoire réduites et une complexité réduite grâce au maintien d'une valeur de comptage de succession pour chaque classe de probabilité, au lieu que ce soit pour chaque compartiment de contexte. Un mode de réalisation du svstème de décodage selon l'invention La figure 14 montre un schémaz fonctionnel d'un mode de réalisation du système matériel de décodage selon l'invention. Comme représenté sur la figure 14A, le système du décodeur 1400 comporte une structure FIFO (premier entré, premier sorti) 1401, des décodeurs 1402, une mémoire 1403 et un modèle de contexte 1404. Les décodeurs 602 comprennent plusieurs décodeurs. Des données codées 1410 sont appliquées de façon à être reçues par la structure FIFO 1401. La structure FIFO 1401 est couplée de façon à fournir les données codées aux décodeurs 1402. Les décodeurs 1402 sont couplés à la mémoire 1403 et au modèle de contexte 1404. Le modèle de contexte 1404 est également couplé à la mémoire 1403. Un signal de sortie du modèle de contexte 604 comprend les données décodées 1411. Dans le système 1400, les données codées 1410 appliquées à l'entrée de la structure FIFO 1401 sont mises en ordre et entrelacées. La structure FIFO 1401 contient des données placées dans l'ordre voulu. Les trains sont délivrés aux décodeurs 1402. Les décodeurs 1402 demandent des données à ces trains dans un ordre série et déterministe. Bien que l'ordre dans lequel les décodeurs 1402 demandent les données codées ne soit pas trivial, il n'est pas aléatoire. Du fait que les mots codés sont placés suivant cet ordre dans le codeur et non pas dans le décodeur, il est possible d'entrelacer les données codées en un seul train. Dans un autre mode de réalisation, les données codées 1410 peuvent comprendre un unique train de données non entrelacées o des données relatives à chaque compartiment de contexte, classe de contexte ou classe de probabilité sont adjointes au train de données. Dans ce cas, on remplace le FIFO 1410 par une zone de mémorisation 1410 qui recevra toutes les données codées avant leur transmission aux décodeurs 1402, de sorte que les données pourront être segmentées de facçon correcte. Lorsque les données codées 1410 sont reçues par le FIFO 1401, le modèle de contexte 1404 détermine le compartiment de contexte courant. Dans un mode de réalisation, le modèle de contexte 1404 détermine le compartiment de contexte courant à partir des pixels et, ou bien, des bits antérieurs. Bien que ceci ne soit pas représenté, on peut prévoir une mise en tampon de ligne pour le modèle de contexte 1404. La mise en tampons de ligne fournit la donnée nécessaire, ou le modèle de donnée, grâce à laquelle le modèle de contexte 1404 détermine le compartiment de contexte courant. Par exemple, lorsque le contexte est basé sur les valeurs de pixels du voisinage du pixel courant, la mise en tampons de ligne peut être utilisée pour mémoriser les valeurs des pixels du voisinage, que l'on utilise pour produire le contexte spécifique. En réponse au compartiment de contexte, le système du décodeur 1400 extrait de la mémoire 1403, pour le compartiment de contexte courant, l'état du décodeur. Dans un mode de réalisation, l'état du décodeur comporte l'état du module d'estimation de probabilité (PEM) et l'état du générateur de bits. L'état du PEM détermine quel code il faut utiliser pour décoder de nouveaux mots codés. L'état du générateur de bits conserve un enregistrement des bits de la succession courante. Cet état est fourni aux décodeurs 1402 par la mémoire 1403 en réponse à une adresse fournie par le modèle de contexte 1404. L'adresse fait accès à un emplacement de la mémoire 1403 qui mémorise l'information correspondant au compartiment de contexte. Dès que l'état du décodeur relatif au compartiment de contexte courant a été extrait de la mémoire 1403, le système 1400 détermine le bit non comprimé suivant et traite l'état du décodeur. Les décodeurs 1402 décodent ensuite le nouveau mot codé, si cela est nécessaire, et, ou bien, mettent à jour la valeur de comptage de succession. L'état du PEM est mis à jour, si cela est nécessaire, ainsi que l'état du générateur de bits. Les décodeurs 1402 écrivent ensuite le nouvel état du décodeur dans la mémoire 1403. La figure 14B présente un mode de réalisation d'un décodeur selon l'invention. Comme représenté sur la figure 14B, le décodeur comporte un circuit logique 1431 de décalage, un circuit logique 1432 de génération de bits, un circuit logique 1433 "nouveau k", un circuit logique 1434 de mise à jour de PEM, un circuit logique 1435 "nouveau mot codé", un circuit logique 1436 "état de PEM en code", un circuit logique 1437 "code en masque", un circuit logique d'extension "code en MaxRL", "masque" et "fractionnement de R3", un circuit logique 1439 de décodage, un multiplexeur 1440 et un circuit logique 1441 de mise à jour de valeurs de comptage de successions. Le circuit logique de décalage 1431 est couplé de façon à recevoir le signal d'entrée de données codées 1443, ainsi que le signal d'entrée d'état 1442 (provenant de la mémoire). La sortie du circuit logique de décalage 1431 est de plus couplée à l'entrée du circuit logique de génération de bits 1432, du circuit logique de génération de "nouveau k" 1433, et du circuit logique de mise à jour de PEM 1434. Le circuit logique de génération de bits 1432 est également couplé de façon à recevoir le signal d'entrée d'état 1442 et il produit le signal de sortie de données décodées à destination du modèle de contexte. Le circuit logique "nouveau k" 1433 produit un signal de sortie qui est appliqué à une entrée du circuit logique "code en masque" 1437. Le circuit logique de mise à jour de PEM 1434 est couplé au signal d'entrée d'état 1442 et produit le signal de sortie d'état (à destination de la mémoire). Le signal d'entrée d'état 1442 est également couplé aux entrées du circuit logique "nouveau mot codé" 1435 et au circuit logique "état de PEM en code" 1436. La sortie du circuit "état de PEM en code" 1436 est couplée à l'entrée du circuit logique d'extension 1438. La sortie du circuit logique d'extension 1438 est couplée au circuit logique de décodage 1439 et au circuit logique de mise à jour de valeurs de comptage de successions 1441. Une autre entrée du circuit logique de décodage est couplée à la sortie du circuit logique "code en masque" 1437. La sortie du circuit logique de décodage 1439 est couplée à une entrée du multiplexeur 1440. L'autre entrée du multiplexeur 1440 est couplée au signal d'entrée d'état 1442. L'entrée de sélection du multiplexeur 1440 est couplée à la sortie du circuit logique "nouveau mot codé" 1435. La sortie du multiplexeur 1440 et celle du circuit logique d'extension 1438 sont respectivement couplées à deux entrées du circuit logique de mise à jour de valeurs de comptage de succesions 1441 ainsi que le signal de sortie du circuit logique "code en masque" 1437. Le signal de sortie du circuit logique de mise à jour de valeurs de comptage de succesions 1441 est incorporé dans le signal de sortie d'état envoyé à la mémoire. Le circuit logique de décalagel431 applique un décalage aux données du train de données codées. Sur la base du signal d'entrée de données codées et du signal d'entrée d'état, le circuit logique de génération de bits 1432 produit des données décodées à destination du modèle de contexte. Le circuit logique "nouveau k" 1433 utilise également les données décodées et le signal d'entrée d'état pour produire une nouvelle valeur de k. Dans un mode de réalisation, le circuit logique "nouveau k" 1433 utilise l'état du PEM et le premier bit de la donnée codée pour produire la nouvelle valeur de k. Sur la base de la nouvelle valeur de k, le circuit logique "code en masque" 1437 produit un masque RLZ (longueur de succession zéro) pour le mot codé suivant. Le masque RLZ du mot codé suivant est envoyé au circuit logique de décodage 709 et au circuit logique de mise à jour de valeurs de comptage de successions 1441. Le circuit logique de mise à jour de PEM 1434 met à jour l'état du PEM. Dans un mode de réalisation, l'état du PEM est mis à jour à l'aide du présent état. L'état mis à jour est envoyé à la mémoire. Le circuit logique "nouveau mot codé" 1435 détermine si un nouveau mot codé est nécessaire. Le circuit logique "état de PEM en code" 1436 détermine le code permettant de décoder à l'aide du signal d'entrée d'état 1442. Le code est appliqué à l'entrée du circuit logique d'extension 1438 qui produit alors la longueur de succession maximale (MaxRL), le masque courant et la valeur de fractionnement de R3. Le circuit logique de décodage 1439 décode le mot codé de façon à produire un signal de sortie de valeur de comptage de succession. Le multiplexeur 1440 sélectionne le signal de sortie du circuit logique de décodage 1439 ou le signal d'entrée d'état 142 et envoie le signal sélectionné au circuit logique 1441 de mise à jour de valeurs de comptage de successions. Le circuit logique 1141 met à jour la valeur de comptage de succession. Le système de décodage 1400, comportant le décodeur 1430, selon l'invention fonctionne en mode pipeline. Dans un mode de réalisation, le système de décodage 600 selon l'invention détermine des compartiments de contexte, estime des probabilités, décode des mots codés et produit des bits à partir de valeurs de comptage de successions, dans un mode pipeline. Un mode de réalisation de la structure pipeline du système de décodage est décrit en liaison avec la figure 15A. Sur la figure 15A, un mode de réalisation du processus de décodage en mode pipeline selon l'invention est présenté comme ayant six phases, numérotées de 1 à 6. Dans la première phase, le compartiment de contexte courant est déterminé (1501). Dans la deuxième phase, après détermination du compartiment de contexte, une lecture en mémoire a lieu (1502), au cours de laquelle l'état courant du décodeur, pour le compartiment de contexte, est extrait de la mémoire. Comme établi ci-dessus, l'état du décodeur comporte l'état du PEM et l'état du générateur de bits. Dans la troisième phase du processus de décodage en mode pipeline selon l'invention, un bit décomprimé est produit ( 1503). Ceci permet qu'un bit soit rendu disponible au modèle de contexte. Deux autres opérations ont lieu pendant la troisième phase. L'état du PEM est converti en un type de code (1504) et il est déterminé si un nouveau mot codé doit être décodé (1505), ces deux opérations ayant également lieu dans la troisième phase. Au cours de la quatrième phase, le système de décodage traite un mot codé et, ou bien, met à jour la valeur de comptage de succession (1506). Plusieurs sous-opérations interviennent dans le traitement du mot codé et la mise à jour de la valeur de comptage de succession. Par exemple, un mot codé est décodé pour déterminer la valeur de comptage de succession suivante ou bien la valeur de comptage de succession est mise à jour pour le mot codé courant (1506). Si cela est nécessaire lors du décodage de nouveaux mots codés, un plus grand nombre de données codées sont extraites du FIFO d'entrée. Une autre sous-opération ayant lieu dans la quatrième phase est la mise à jour de l'état du PEM (1507). Enfin, dans la quatrième phase du décodage en mode pipeline, le nouvel état du PEM est utilisé pour déterminer que le mot codé à longueur de succession zéro (comme décrit ultérieurement) est pour le code suivant si la valeur de comptage de succession du mot codé courant est zéro (1508). Lors de la cinquième phase du décodage en mode pipeline selon l'invention, l'état du décodeur, o l'état du PEM a été mis à jour, est écrit dans la mémoire (1509), et le décalage commence pour le mot codé suivant (1510). Dans la sixième phase, le décalage effectué au mot codé suivant est réalisé (1510). Le décodage en mode pipeline selon l'invention commence en réalité par une décision indiquant si on fait ou non démarrer le processus de décodage. Une telle détermination repose sur le fait qu'il y a ou non assez de données à présenter au décodeur selon l'invention. S'il n'y a pas assez de données en provenance du FIFO, le système de décodage est mis en attente. Dans un autre cas, le système de décodage peut être mis en attente pendant la délivrance de données décodées à un dispositif périphérique qui n'est pas en mesure de recevoir toutes les données délivrées par le décodeur pendant qu'elles sont en train d'être produites. Par exemple, lorsque le décodeur fournit un signal de sortie à une interface d'affichage vidéo et à son circuit vidéo associé, les circuits vidéo peuvent être trop lents, de sorte que le décodeur doit être mis en état d'attente pour permettre aux circuits vidéo d'effectuer le rattrapage nécessaire. Dès que la décision a été prise de faire commencer le processus de décodage, le compartiment de contexte est déterminé par le modèle de contexte. Selon l'invention, le compartiment de contexte courant est fixé par examen de données antérieures. De telles données antérieures peuvent être mémorisées dans des tampons de ligne et peuvent comporter des données provenant de la ligne courante et, ou bien, de lignes précédentes. Par exemple, le cas dans lequel des bits provenant des lignes courantes et précédentes sont utilisés en tant que modèle type de contexte pour un bit donné. Des bits d'un ou plusieurs tampons de ligne peuvent être formés à l'aide d'un modèle type en liaison avec les données précédentes, si bien que le compartiment de contexte relatif à la donnée courante est choisi en fonction du fait que la donnée précédente en train d'être examinée est ou non appariée avec le modèle type. Ces tampons de ligne peuvent comporter des registres à décalage de bits. Un modèle type peut être utilisé pour chaque plan mémoire d'une image à n bits. Dans un mode de réalisation, la sélection du compartiment de contexte s'effectue par délivrance d'une adresse à la mémoire pendant la phase suivante du pipeline. L'adresse peut comporter un nombre prédéterminé de bits, par exemple trois bits, permettant d'identifier le plan mémoire. En utilisant trois bits, on peut identifier la position des bits dans les données des pixels. Le modèle type utilisé pour déterminer le contexte peut également être représenté sous la forme d'une partie de l'adresse. Les bits utilisés pour identifier le plan mémoire et les bits identifiant le modèle type peuvent être combinés pour créer une adresse se rapportant à un emplacement spécifique de la mémoire qui contient l'information d'état relative au compartiment de contexte défini par ces bits. Par exemple, en utilisant trois bits pour déterminer la position des bits dans un pixel particulier et les dix bits précédents de la même position de chacun des pixels précédents du modèle type, on peut produire une adresse de contexte à 13 bits. A l'aide de l'adresse créée par le modèle de contexte, on peut faire accès à la mémoire (par exemple une mémoire vive, ou RAM) pour obtenir l'information d'état. L'état contient l'état du PEM. L'état du PEM contient l'estimation de probabilité courante. Puisque plus d'un état utilisent le même code, l'état du PEM ne contient pas une classe de probabilité ou une désignation de code, mais plutôt un index permettant d'entrer dans une table, comme par exemple le tableau présenté sur la figure 5. De plus, lorsqu'on utilise une table telle que celle présentée sur la figure 5, l'état du PEM permet aussi d'utiliser le symbole le plus probable (MPS) comme moyen d'identification de la position de l'état courant du PEM, dans la partie positive ou la partie négative de la table. L'état du générateur de bits peut comporter la valeur de comptage et une indication du fait qu'un LPS est ou non présent. Dans un mode de réalisation, la valeur du MPS pour la succession courante est également incluse en vue du décodage du mot codé suivant. Selon l'invention, l'état du générateur de bits est stocké en mémoire de façon à réduire la place nécessaire aux compteurs de successions. Si le coût d'encombrement du système par les compteurs relatifs à chaque contexte est faible, l'état du générateur de bit n'a pas être stocké en mémoire. Une fois la quatrième phase terminée, le nouvel état du générateur de bits et le nouvel état du PEM sont écrits dans la mémoire. De plus, dans la cinquième phase, le train de données codées est décalé au mot codé suivant. L'opération de décalage est réalisée dans la sixième phase. La figure 14C est un schéma fonctionnel d'un mode de réalisaation de la structure FIFO 1401 selon l'invention, illustrant la mise en tampon de mots entrelacés pour deux décodeurs. On note qu'il est possible de faire fonctionner n'importe quel nombre de décodeurs à l'aide des enseignements de l'invention. Comme représenté, la donnée d'entrée et le FIFO sont suffisamment larges pour contenir deux mots entrelacés. Le FIFO 1401 comprend un élément FIFO 1460, des registres (REG) 1461 et 1462, des multiplexeurs (MUX) 1463 et 164 et un bloc de commande 1465. Les deux mots d'entrée sont appliqués en tant que mots entrelacés d'entrée. Les sorties du FIFO 1460 sont couplées aux entrées des registres 1461 et 1462. Les entrées du multiplexeur 1463 sont couplées aux sorties des registres 1461 et 1462. Le bloc de commande 1465 est couplé de façon à produire des signaux de commande destinés au FIFO 1460, aux registres 1461 et 1462, et aux multiplexeurs 1463 et 1464. Des mots entrelacés sont obtenus comme données de sortie (données de sortie 1 et 2) fournies aux deux décodeurs. Chaque décodeur utilise un signal de demande afin d'indiquer que le mot courant a été utilisé et qu'un nouveau mot est nécessaire ensuite. Les signaux de demande émis par les décodeurs sont appliqués aux entrées du bloc de commande 1465. Le bloc de commande 1465 délivre également un signal de demande FIFO pour demander plus de données à la mémoire. Initialement, le FIFO et les registres 1461 et 1462 sont remplis de données et une bascule de validité contenue dans l'unité de commande 1465 est positionnée. A chaque fois qu'une demande a lieu, le bloc de commande 1465 fournit les données selon le schéma logique présenté dans le tableau 16. 2725330 TABLEAU 16 Les deux Demande Demande Multiplexeur Multiplexeur Les deux Activation du sont 1 2 1 2 suivants sont FIFO et des valables valables registres 0 0 0 X* X 0 0 0 0 1 X REG 1462 1 1 O 1 O REG 1462 X 1 1 O 1 1 REG 1462 FIFO O 1 1 O O X X 1 O 1 O 1 X REG 1461 O O 1 1 O REG1461 X O O 1 1 1 REG 1461 REG 1462 1 1 X signifie "indifférent" La figure 15B est une vue conceptuellemnent différente du décodeur selon l'invention. Comme représenté sur la figure 15B, une donnée (codée) de longueur variable est appliquée en entrée à un décodeur. Le décodeur délivre une donnée (décodée) de longueur fixe. Le signal de sortie est en outre renvoyé, sous la forme d'un signal de réaction retardée, en entrée dans le décodeur. Dans le décodeur selon l'invention, le décalage de longueur variable utilisé dans le décodage repose sur la donnée décodée qui est disponible après un certain retard. Le signal de réaction retardé ne réduit pas la capacité de traitement dans les décodeurs du type pouvant tolérer des retards. Les données d'entrée de longueur variable sont divisées en mots entrelacés de longeur fixe, comme décrit en liaison avec la figure 4. Le décodeur utilise les mots de longeur fixe, comme décrit sur la figure 16A ci-après. Le décodeur et le retardateur forment un modèle de décodeur en mode pipeline, comme décrit en liaison avec les figures 15 et 32, ou des décodeurs parallèles multiples, comme décrit en liaison avec les figures 2A à 2D. Ainsi, l'invention fournit un décodeur tolérant vis-à-vis des retards. Les décodeurs tolérants vis-à- vis des retards selon l'invention permettent de manipuler en parallèle des données de longueurs variables. Les décodeurs de la technique antérieure (par exemple des décodeurs de Huffman) ne sont pas tolérants vis-à-vis des retards. L'information déterminée par le décodage de tous les mots codés précédents est obligatoire pour réaliser le décalage de longueur variable nécessaire au décodage du mot codé suivant. A l'inverse, l'invention fournit des décodeurs tolérants vis-à-vis des retards. Le décalage dans le système de décodage Le décodeur selon l'invention prévoit un circuit logique de décalage permettant de décaler les mots entrelacés dans le générateur de bits approprié en vue du décodage. Le dispositif de décalage selon l'invention ne nécessite aucun type particulier de parallélisme "par contexte" ou "par probabilité". On suppose un décodeur qui attribue un mot codé M à un train M mod N (M%N en langage C), o N est le nombre de trains. Selon l'invention, des données codées venant du train courant sont présentées jusqu'à ce qu'un mot codé soit demandé. Ce n'est qu'ensuite que les données commutent au train suivant. La figure 16A illustre un mode de réalisation du dispositif de décalage du décodeur selon l'invention. Le dispositif de décalage 1600 est destiné à quatre trains de données. Ceci autorise quatre cycles d'horloge pour chaque opération de décalage. Les mots entrelacés sont de 16 bits et le mot codé le plus long est de 13 bits. Comme représenté sur la figure 16A, le dispositif de décalage 1600 comprend quatre registres (REG) 1601 à 1604 qui sont couplés de facçon à recevoir leurs entrées de la part des données codées entrelacées. Les sorties des registres respectifs 1601 à 1604 sont connectées à des entrées du multiplexeur (MUX) 1605. La sortie du MUX 1605 est couplée à l'entrée d'un dispositif de décalage en barillet (BS) 1606. La sortie du dispositif de décalage en barillet 1606 est respectivement connectée aux entrées d'un registre 1607, de dispositifs formant un multiplexeur et un registre (MUX & REG) 1608 à 1610, et d'une unité de taille 1611. La sortie de l'unité de taille 1611 est connectée à un accumulateur (ACCUM) 1612. La sortie de l'accumulateur 1612 est renvoyée au dispositif de décalage en barillet 1606. La sortie du registre 1607 est appliquée à l'entrée du dispositif multiplexeur et registre 1608. La sortie du dispositif multiplexeur et registre 1608 estconnectée à l'entrée du dispositif multiplexeur et registre 1609. La sortie du dispositif multiplexeur et registre 1609 est connectée à l'entrée du dispositif multiplexeur et registre 1610. La sortie du dispositif multiplexeur et registre 1610 est la donnée codée alignée. Dans un mode de réalisation, les registres 1601 à 1604 sont des registres de 16 bits, le dispositif de décalage en barillet 1606 est un dispositif de décalage en barillet de 32 bits à 13 bits et l'accumulateur 1612 est un accumulateur de 4 bits. Des registres 1601 à 1604 acceptent des mots de 16 bits de la part du FIFO et les appliquent à l'entrée du dispositif de décalage en barillet 1606. Au moins 32 bits de la donnée non décodée sont fournis au dispositif de décalage en barillet 1606 de façon permanente.Les quatre registres 1601 à 1604 sont initialisés, pour commencer, à l'aide de deux mots de 16 bits de données codées. Ceci permet qu'il y ait toujours au moins un nouveau mot codé disponible pour chaque train. Pour des codes R, l'unité 1611 de taille de mot codé détermine si un mot codé "0" ou "IN" est présent et, s'il s'agit d'un mot codé "IN", elle détermine alors combien de bits après le "1" font parties du mot codé courant. Une unité de taille, ayant la même fonction, a été décrite en liaison avec la figure12. Dans le cas d'autres codes, la détermination de la taille d'un mot codé est de toute façon bien connue dans la technique. Le dispositif de décalage 1600 comprend un FIFO (registre du type premier entré, premier sorti) constitué de quatre registres, dont trois ont des entrées multiplexées. Chacun des registres 1607 à 1610 contient au moins un mot codé, si bien que la largeur des registres et des multiplexeurs est de 13 bits pour leur permettre de contenir le mot codé le plus long possible. Chaque registre possède également une bascule de commande qui lui est associée (mais qui n'est pas représentée pour éviter de compliquer la description), la bascule indiquant si un registre particulier contient un mot codé ou s'il attent que le dispositif de décalage en barillet 1606 fournisse un mot codé. Le FIFO n'est jamais vide. Un seul mot codé peut être utilisé par cycle d'horloge et un seul mot codé peut être décalé à chaque cycle d'horloge. Le retard nécessaire à l'exécution du décalage est compensé, car le système commence avec quatre mots codés d'avance. Chaque fois que le décalage fait d'un mot codé le signal de sortie de donnée codée alignée, les autres mots codés des registres 1607 à 1610 se décalent vers le bas. Lorsque le mot codé restant dans le FIFO se mémorise dans le registre 1620, le dispositif de décalage en barillet 1606 fait lire des mots codés dans les registres 1601 à 1604, via le multiplexeur 1605, afin de remplir les registres 1607 à 1609. On note que le FIFO peut être conçu pour remplir le registre 1607 à l'aide du mot codé suivant dès que son mot codé a été décalé dans le registre 1608. Le dispositif de décalage en barillet 1606, l'unité 1611 de calcul de taille de mot codé et un sélecteur accumulateur 1612 effectuent la manipulation du décalage à longueurs variables. L'accumulateur 1612 possède quatre registres, à raison d'un pour chaque train de données codées, qui contiennent l'alignement du mot codé courant pour chaque train de données. L'accumulateur 1612 est un accumulateur à quatre bits qui est utilisé pour commander le dispositif de décalage 73 2725330 en barillet 1606. L'accumulateur 1612 augmente sa valeur de la valeur fournie en entrée par l'unité 1611 de taille de mots codés. Lorsque l'accumulateur 1612 déborde (à chaque fois que la valeur de comptage du décalage atteint ou dépasse 16), les registres 1601 à 1604 se décalent en mode cadencé. Un sur deux des décalages de 16 bits fait qu'un nouveau mot de 32 bits est demandé au FIFO. Le signal d'entrée fourni à l'accumulateur 1611 est la taille du mot codé, laquelle est déterminée par le code courant et le premier ou les deux premiers bits du mot codé courant. On note que, dans certains modes de réalisation, les registres 1601 à 1604 doivent être initialisés à l'aide de données codées avant que le décodage puisse commencer. Lorsqu'un mot codé est demandé par le système, les registres contenus dans le FIFO se décalent en mode cadencé, si bien que des mots codés migrent vers la sortie. Lorsque le dispositif de décalage en barillet 1606 est prêt à délivrer un nouveau mot codé, celui-ci est multiplexé dans le premier registre vide du FIFO. Dans ce mode de réalisation, un signal formant un nouveau mot codé, venant du générateur de bits, est reçu avant que la décision de commutation entre les trains soit prise. Si on ne peut pas garantir que le signal du mot codé suivant fourni par le générateur de bits sera reçu avant la décision de commutation entre trains, il est possible d'utiliser un système de prévision tel que celui présenté sur la figure 16B. Comme représenté sur la figure 16B, un dispositif de décalage 1620 faisant appel à un moyen de prévision est représenté sous la forme d'un schéma fonctionnel. Le dispositif de décalage 1620 comporte un dispositif de décalage 1600 qui produit comme signaux de sortie la donnée codée courante et la donnée codée suivante. La donnée codée courante est appliquée à l'entrée d'une unité logique 1621 de prétraitement de mot codé et à l'entrée d'une unité logique 1624 de traitement de mot codé. La donnée codée suivante est appliquée à l'entrée d'une unité logique 1622 de prétraitement de mot codé. Les sorties des deux unités logiques de prétraitement 1621 et 1622 sont connectées aux entrées d'un multi- plexeur (MUX) 1623. Le signal de sortie du multiplexeur 1623 est appliqué à une autre entrée du circuit logique de traitement de mot codé 1624. Le circuit logique utilisant le mot codé est divisé en deux parties, le circuit logique de prétraitement de mot codé et le circuit logique de traitement de mot codé. Les deux unités identiques de prétraitement en mode pipeline 1621 et 1622 fonctionnent avant que le courant entrelacé puisse être décalé. L'une des unités de prétraitement 1621 et 1622 produit l'information correcte s'il y a commutation du train, et l'autre produit l'information s'il n'y a pas commutation du train. Lorsque le train commute, le signal de sortie du circuit approprié de prétraitement de mot codé est multiplexé par le multiplexeur 1623 dans le circuit logique 1624 de traitement de mot codé, lequel effectue l'opération correspondante avec le mot codé approprié. Mémoire et modèles de contexte extérieurs à la puce Dans un mode de réalisation, il peut être souhaitable d'utiliser plusieurs puces pour la mémoire externe ou les modèles de contexe externes. Dans ces modes de réalisation, il est souhaitable de réduire le retard entre la production d'un bit et la mise à disposition du bit pour le modèle de contexte dans lequel plusieurs circuits intégrés sont utilisés. La figure 17 représente un schéma fonctionnel d'un mode de réalisation d'un système ayant à la fois une puce de modèle de contexte (CM) externe 1701 et une puce de codeur 1702 ayant une mémoire pour chaque contexte. On note que seules les unités se rapportant au modèle de contexte de la puce de codeur sont présentées; il sera clair, pour l'homme de l'art que la puce de codeur 1702 contient des unités de génération de bits, d'estimation de probabilité, etc. Comme on peut le voir sur la figure 17, la puce de codeur 1702 comprend un modèle de contexte d'ordre zéro 1703, des modèles de contexte 1704 et 1705, un circuit logique de sélection 1706, un circuit de commande de mémoire 1707 et une mémoire 1708. Le modèle de contexte d'ordre zéro 1703 et les modèles de contexte 1704 et 1705 produisent des signaux de sortie qui sont appliqués aux entrées du circuit logique de sélection 1706. Une autre entrée du circuit logique de sélection 1706 est connectée à une sortie de la puce de modèle de contexte externe 1701. La sortie du circuit logique de sélection 1706 est connectée à une entrée de la mémoire 1708. A une entrée de la mémoire 1708, est également connectée la sortie du circuit de commande de mémoire 1707. Le circuit logique de sélection 1706 permet d'utiliser un modèle de contexte externe ou bien un modèle de contexte interne (par exemple le modèle de contexte d'ordre zéro 1703, le modèle de contexte 1704, le modèle de contexte 1705). Le circuit logique de sélection 1706 permet que la partie interne d'ordre zéro du modèle de contexte 1703 soit utilisée même lorsque le modèle de contexte externe 1701 est utilisé. Le modèle de contexte zéro 1703 fournit un bit ou plus, tandis que la puce de modèle de contexte externe 1701 fournit le reste. Par exemple, les bits immédiatement précédents peuvent être renvoyés en réaction et extraits du modèle de contexte d'ordre zéro 1703, tandis que les bits antérieurs vont au modèle de contexte externe 1701. De cette manière, l'information cruciale temporelle reste interne à la puce. Ceci élimine les retards de communication avec l'extérieur de la puce concernant les bits récemment produits. La figure 18 est un schéma fonctionnel d'un système doté d'un modèle de contexte (CM) externe 1801, d'une mémoire externe 1803 et d'une puce de codeur 1802. Comme représenté sur la figure 18, certaines lignes d'adresse de la mémoire sont commandées par le modèle de contexte externe 1801, tandis que d'autres sont commandées par le modèle de contexte d'ordre zéro de la puce de décodeur 1802. Ainsi, le contexte relevant du cycle de décodage passé immédiat est commandé par le modèle de contexte d'ordre zéro. Ceci permet à la puce de décodeur de fournir l'information de contexte relevant du passé immédiat avec un minimum de retard de communication. La puce de modèle de contexte 1802 traite le reste de l'information de contexte en n'utilisant que des bits décodés plus loin dans le passé, ce qui autorise un certain retard de communication. Dans de nombreux cas, l'information de contexte attachée au passé immédiat est un état de Markov d'ordre zéro, et l'information de contexte venant de plus loin est un état de Markov d'ordre supérieur. Le mode de réalisation représenté sur la figure 18 élimine le retard de communication qui est propre à la mise en oeuvre du modèle d'ordre zéro dans la puce de modèle de contexte externe 1801. Toutefois, il peut encore y avoir un retard entre la détermination du compartiment de contexte et le bit produit, qui est dû à la puce du décodeur 1802 et à la mémoire 1803. Il faut noter que d'autres architectures pourraient être utilisées pour la mémoire. Par exemple, on peut utiliser un système ayant, dans une puce, le modèle de contexte et la mémoire et, dans une autre puce, le codeur. Un système peut également comporter une puce de codeur ayant une mémoire interne utilisée pour * certains contextes et une mémoire externe utilisée pour d'autres contextes. Générateur de bits utilisant une mémoire La figure 19 représente un décodeur doté d'un générateur de bit, monté en pipeline, qui utilise une mémoire. Comme représenté sur la figure 19, le décodeur 1900 comprend un modèle de contexte 1901, une mémoire 1902, un bloc "état de PEM en code", un générateur de bits en mode pipeline 1905, une mémoire 1904 et un dispositif de décalage 1906. Le signal d'entrée du modèle de contexte 1901 comprend les données codées venant du générateur 1905 de train de bits monté en pipeline. Les entrées du dispositif de décalage 1906 sont couplées de facçon à recevoir les données codées. La sortie de la mémoire 1902 est couplée au bloc "état de PEM en code" 1903. Les sorties du bloc "état de PEM en code" 1903 76 2725330 et les données codées alignées délivrées par le dispositif de décalage 1906 sont connectées aux entrées du générateur de bits 1905. La mémoire 1904 est également connectée au générateur de bits 1905 à l'aide d'un bus directionnel. Le signal de sortie du générateur de bits 1905 est constitué par les données décodées. Le modèle de contexte 1901 délivre un compartiment de contexte en réponse à l'application de données codées à son entrée. Le compartiment de contexte est utilisé comme adresse permettant de faire accès à la mémoire 1902, en fonction du compartiment de contexte, pour obtenir un état de probabilité. L'état de probabilité est reçu par le bloc "état de PEM en code" 1903 qui produit la classe de probabilité en fonction de l'état de probabilité. La classe de probabilité est ensuite utilisée comme adresse pour faire accès à la mémoire 1904 afin d'obtenir la valeur de comptage de succession. La valeur de comptage de succession est alors utilisée par le générateur de bits 1905 pour produire les données décodées. Dans un mode de réalisation, la mémoire 1902 comprend une mémoire de 1024x7 bits (o 1024 est le nombre de contextes différents), tandis que la mémoire 1904 comprend un mémoire de 25x14 bits (o 25 et le nombre des valeurs de comptage de successions différentes). Puisque les états du générateur de bits (valeurs de comptage de successions, etc.) sont associés à des classes de probabilité, et non à des compartiments de contexte, il y a un retard supplémentaire de traitement pipeline à prendre en commpte avant qu'un bit soit rendu disponible au modèle de contexte. Puisque la mise à jour d'un état du générateur de bits demande plusieurs cycles d'horloge (le retard de passage en revue de la mémoire des états du générateur de bits), plusieurs états de générateur de bits seront utilisés pour chaque classe de probabilité. Par exemple, si le traitement pipeline s'appuie sur six cycles d'horloge, alors la mémoire d'états du générateur de bits possède six éléments par classe de probabilité. On utilise un compteur pour sélectionner l'emplacement de mémoire voulu. Même avec plusieurs éléments par classe de probabilité, la taille de la mémoire sera typiquement inférieure au nombre de contextes. La mémoire peut être mise en oeuvre au moyen de plusieurs groupes de mémorisation d'une SRAM ou d'un fichier de registre à plusieurs accès. Puisqu'une seule valeur de comptage de succession peut être associée à plusieurs contextes, un mode de réalisation doit améliorer l'état d'estimation de probabilité d'un ou plusieurs contextes. Dans un mode de réalisation, l'état de PEM du contexte qui amène une succession à s'achever est mis à jour. Au lieu qu'il faille une lecture, une modification et une écriture d'une valeur de comptage de succesion pour permettre de la lire de nouveau, on peut utiliser une valeur de comptage de succession aussitôt que la modification a été réalisée. La figure 32 montre le diagramme temporel d'une opération de décodage dans un mode de réalisation de l'invention. Comme représenté sur la figure 32, il est question d'une opération de décodage à trois cycles. Les noms des signaux sont énoncés dans la colonne gauche du diagramme temporel. La validité d'un signal pendant un cycle quelconque est indiquée à l'aide d'une barre pendant le cycle (ou pendant une partie de celui-ci). Dans certains cas, l'unité ou le circuit logique responsable de la production du signal ou de la fourniture du signal valable est présenté au voisinage de l'indication de validité du signal, dans une "boite" en trait interrrompu. A certains moments, des exemples d'éléments et d'unités particuliers décrits ici sont présentés. On note que toute partie du signal qui se prolonge dans un autre cycle indique la validité du signal pendant le seul laps de temps o le signal est présenté comme s'étendant dans l'autre cycle. De plus, certains signaux sont montrés comme étant séparément valables pendant plus d'un cycle. Un exemple en est donné par le signal de valeur de comptage de succession type, qui est valable en un point à la fin du deuxième cycle, puis, de nouveau, pendant le troisième cycle. On note que ceci indique que le signal est simplement en train d'être enregistré à la fin du cycle. Une liste de dépendances est également présentée dans le tableau 17 ci-après, qui présente des dépendances vis-à-vis de ce même cycle d'horloge ou du cycle d'horloge précédent, pour le temps courant o le signal est indiqué comme valable. 78 2725330 TABLEAU 17 Nom unité* dépendances** fichier de registre 1 CM {bitprécédent, registre de décalage du CM] "état en code" CM fichier de registre 1 dispositif de décalage en SH {registre accumulateur, registres de données codées barrillet non alignées} taille SH sortie du dispositif de décalage en barillet (données codées alignées) {kR3} ace (accumulateur) SH taille {valeur précédente du registre accumulateur} fichier de registre 2 BG {k, R3 enregistrés} a (mot codé nécessaire) BG fichier de registre 2 "code en (masque, MaxRL, BG {k, R3 enregistrés} fractionement de R3)" géné. bits (générateur de BG fichier de registre 2 bits) sortie du dispositif de décalage en barillet (données codées alignées) "code en (masque, MaxRL, fractionnement de R3) {fichier de registre 1, MPS enregistré} décodeur BG signal de sortie du dispositif de décalage en barillet (données codées alignées) "code en (masque, MaxRL, fractionnement de R3)" table du PEM PEM {k R3 enregistrés} g (mise à jour du PEM)++ PEM {enregistrés: sortie de la table du PEM, LPS présent, continu.} -1 (mise à jour de valeur BG {enregistrés: mot codé nécessaire, valeur de de comptage de suc- comptage de succession, LPS présen4 continu.} cession) y (continu., LPS présent, BG {enregistrés: mot codé nécessaire, valeur de mise à jour) à comptage de succession, LPSprésent, continu.} * CM = modèle de contexte, SH = dispositif de décalage, BG = générateur de bits, PEM = machine d'estimation de probabilité. **{italique} ceci signifie des dépendances vis-à-vis du cycle d'horloge précédent. ++ dans un mode de réalisation, la plus grande partie des combinaisons logiques permettant de mettre à jour l'état du PEM sont effectuées au cours de l'opération "table du PEM", et l'opération "mise à jour du PEM" n'est qu'une simple opération de multiplexage. Signalisation implicite Dans certains modes de réalisation, le décodeur doit modéliser le tampon de réordonnement fini du codeur. Dans un mode de réalisation, cette modélisation s'effectue au moyen d'une signalisation implicite. Comme expliqué précédemment en liaison avec le codeur, lorsqu'un mot codé commence d'être traité dans le codeur, de la place est réservée, dans le tampon approprié, pour le mot codé, dans l'ordre o les mots codés devront être placés sur le canal. Lorsque la dernière place libre dans un tampon est réservée pour un nouveau mot codé, alors certains mots codés sont mis dans le train de bits comprimé, qu'ils aient ou non été complètement déterminés. Lorsqu'il doit être mis fin au traitement d'un mot partiellement codé, on peut choisir un mot codé qui soit court et qui spécifie correctement les symboles reçus jusqu'à cet instant. Par exemple, dans un système de codeurs R, s'il est nécessaire de mettre fin prématurément au traitement d'un mot codé pour une série de 100 MPS dans un code ayant une longueur maximale de succession de 128, on peut alors utiliser le mot codé de 128 MPS, puisque celui-ci spécifie correctement les 100 premiers symboles. En variante, on peut utiliser un mot codé montrant 100 MPS, suivis par un LPS. Lorsque le mot codé a été complètement traité, il peut être retiré du tampon de réordonnement et ajouté au train de codes. Ceci peut permettre également de placer des mots codés antérieurement traités dans le train de code. Si la mise en oeuvre de l'achèvement du traitement d'un mot codé partiel aboutit à l'enlèvement d'un mot codé hors du tampon plein, alors le codage peut se poursuivre. Si un tampon est encore plein, alors le mot codé suivant doit de nouveau être complètement traité et ajouté au train de codes. Ce processus continue jusqu'à ce que le tampon qui était plein ne soit plus plein. Le décodeur peut modéliser le codeur pour effectuer une signalisation implicite en utilisant un codeur pour chaque emplacement de mémorisation d'information sur l'état du générateur de bits. Dans un mode de réalisation, chaque compteur de succession (la classe de probabilité dans cet exemple) possède un compteur qui a la même taille que les compteurs de tête ou de queue contenus dans les codeurs (par exemple 6 bits). A chaque fois qu'une nouvelle succession démarre (un nouveau mot codé est extrait), la valeur de comptage correspondante est chargée avec la taille de la mémoire de mots codés. A chaque fois qu'une succession démarre (un nouveau mot codé est extrait), tous les compteurs sont décrémentés. Un compteur atteignant zéro fait que la valeur de comptage de succession correspondante est effacée (et le drapeau "LPS présent" est effacé). Options de signalisation pour une mémoire finie Le codage en temps réel selon l'invention demande que le décodeur manipule des successions de MPS qui ne soient pas suivies par un LPS et qui n'aient pas la longueur de succession maximale. Ceci se produit lorsque le codeur commence le traitement d'une succession de MPS, mais n'a pas une mémoire de réordonnement limitée suffisante pour attendre que la succession soit complètement traitée. Cette situation demande qu'un nouveau mot codé soit décodé à la prochaine occasion o ce compartiment sera utilisé, et une telle situation doit être signalée au décodeur. Trois moyens potentiels de modifier le décodeur sont décrits ci-après. Lorsque le tampon est plein, la valeur de comptage de succession relative au compartiment de contexte ou à la classe de probabilité qui a été expulsée doit être repositionnée. Pour mettre en oeuvre ceci efficacement, la mémorisation du compartiment de contexte ou de la classe de probabilité dans la mémoire de mots codés est utile. Puisque ceci n'est nécessaire que pour des successions qui n'ont pas encore de mot codé associé, la mémoire utilisée pour stocker le mot codé peut être partagée. On note que, dans certains systèmes, au lieu d'expulser un mot codé incomplet, on peut amener les bits dans le contexte, ou la classe de probabilité, du mot codé (ou d'un quelconque mot codé) qui attend dans le tampon lorsque le tampon est plein. Le décodeur détecte cela et utilise le compartiment de contexte, ou la classe de probabilité, correspondant (faux). Une signalisation interne au train utilise des mots codés pour fournir l'information correspondante au décodeur. Dans un mode de réalisation, on change les définitions des codes R2(k) et R3(kc) afin d'inclure des successions à longueur non maximale de MPS qui ne sont pas suivies par un LPS. Ceci peut être réalisé par addition d'un bit au mot codé qui doit survenir avec la probabilité la plus basse. Ceci permet d'utiliser un préfixe décodable de façon unique pour les valeurs de comptage de successions ayant des longueurs non maximales. Le tableau 18 montre une modification apportée aux codes R2(2) qui permet une signalisation interne au train. Les inconvénients de ce procédé sont qu'il faut modifier la logique de décodage des codes R et qu'il apparaît un coût de compression à chaque fois que le mot codé ayant la plus basse probabilité apparaît. TABLEAU 18 Donnée initiale Mot codé 0000 O 0001 1000 001 101 01 110 1 111 000 100100 00 100101 0 10011 Dans certains modes de réalisation, le décodeur effectue une signalisation implicite en utilisant des horodatages. Un compteur garde la trace du "temps" courant en s'incrémentant à chaque fois qu'un mot codé est demandé. De plus, à chaque fois qu'un mot codé commence, le "temps" courant est mis en réserve dans la mémoire associée au mot codé. A tout moment après la première fois qu'un mot codé a été utilisé, on compare la valeur de "temps" mémorisée correspondante, plus la taille du tampon de réordonnement du codeur, avec le "temps" courant. Si le "temps" courant est le plus grand, un signal implicite est produit, de sorte qu'un nouveau mot codé est demandé. Ainsi, la mémoire de réordonnement limitée du codeur a été simulée. Dans un mode de réalisation, on utilise suffisamment de bits de valeur de "temps" pour permettre que tous les mots codés ne soient pas énumérés. Pour réduire la mémoire nécessaire, on maintient au minimum le nombre de bits utilisés pour les horodatages. Si les horodatages utilisent un petit nombre de bits, de sorte que les valeurs de temps peuvent être réutilisées, il faut prendre la précaution que tous les anciens horodatages soient notés avant que le compteur ne commence de réutiliser les temps. Soit N la valeur la plus grande entre le nombre de bits d'adresse associés à la file d'attente et la mémoire d'états du générateur de bits. On peut utiliser des horodatages ayant N+1 bits. La mémoire d'états du générateur de bits doit permettre des accès multiples, peut être deux lectures et deux écritures par bit décodé. On utilise un compteur pour parcourir cycliquement la mémoire d'états du générateur de bits, en l'incrémentant d'une unité à chaque bit décodé. Tout emplacement de mémorisation qui est trop ancien est effacé, de sorte qu'un nouveau mot codé est extrait lorsqu'il est utilisé dans le 82 2725330 futur. Ceci garantit que tous les horodatages sont contrôlés avant la réutilisation d'une quelconque valeur de temps. Si la mémoire d'états du générateur de bits est plus petite que la file d'attente, il est possible de réduire la vitesse de comptage (compteur d'horodatage) et la largeur de bande de la mémoire qui sont nécessaires. Ceci est dû au fait que chaque horodatage (un seul par mémoire d'états du générateur de bits) doit être contrôlé une fois seulement pendant le nombre de cycles nécessaires à l'utilisation de la file d'attente tout entière. En outre, le stockage des horodatages dans une mémoire différente pourrait réduire la largeur de bande nécessaire de la mémoire. Dans le système qui utilise des mots codés "0" pour des successions partielles, les horodatages n'ont pas à être contrôlés pour des mots codés "IN". Dans un système qui utilise des mots codés "IN" pour des successions partielles, l'horodatage n'a à être contrôlé qu'avant la production d'un LPS. Dans certains modes de réalisation, une signalisation implicite est mise en oeuvre à l'aide d'une file d'attente pendant le décodage. Un tel procédé peut être utile dans un système fonctionnant en semi-duplex, o l'équipement matériel de codage est disponible pendant le décodage. Le fonctionnement de la file d'attente est presque le même que pendant le codage. Lorsqu'un nouveau mot codé est demandé, son index est mis dans la file d'attente et est repéré comme étant non valable. Lorsque la donnée venant d'un mot codé est complètement traité, l'élément qui lui correspond dans la file d'attente est repéré comme étant valable. Lorsqu'on prélève des données dans la file d'attente pour faire de la place à de nouveaux mots codés, si la donnée prélevée est repérée comme non valable, l'information d'état du générateur de bits provenant de cet index est effacée. Cette opération d'effacement peut nécessiter que la mémoire d'états du générateur de bits soit en mesure de supporter une opération d'écriture supplémentaire. Au contraire, une signalisation explicite transmet un débordement de tampon sous forme de données comprimées. Un exemple de cela consisterait à avoir un compartiment de contexte auxiliaire qui n'est utilisé qu'une fois pour chaque décodage de compartiment de contexte normal ou bien une fois pour chaque mot codé qui est décodé. Des bits décodés à partir du compartiment de contexte auxiliaire indiquent si la situation o un nouveau mot codé est nécessaire a lieu et un nouveau mot codé doit être décodé pour le compartiment de contexte normal correspondant. Dans ce cas, les mots codés relatifs à ce contexte spécial doivent être réordonnés de manière appropriée. Puisque l'utilisation de ce contexte est fonction de quelque chose qui est connue de l'unité de réordonnement (typiquement, il est utilisé une fois pour chaque mot codé), la mémoire nécessaire pour réordonner le contexte auxiliaire peut être limitée ou modélisée de façon implicite. De plus, on peut limiter les codes autorisés possibles pour ce contexte auxiliaire. La signalisation implicite modélise le tampon limité du codeur lors des décodages afin de produire un signal qui indique qu'un nouveau mot codé doit être décodé. Dans un mode de réalisation, un horodatage est maintenu pour chaque contexte. Dans un mode de réalisation, le tampon de réordonnement de taille finie du codeur est modélisé directement. Dans un système fonctionnant en semi- duplex, puisque le circuit de réordonnement du codeur est disponible pendant le décodage, il peut être utilisé pour produire les signaux destinés au décodeur. La manière exacte dont la signalisation implicite est effectuée dépend des conditions détaillées selon lesquelles le codeur reconnaît et manipule la situation correspondant à un tampon plein. Pour un système utilisant une file d'attente fusionnée ayant une affectation fixe, l'utilisation de plusieurs pointeurs de tête autorise plusieurs choix sur ce que "tampon plein" signifie. Etant donné une forme choisie pour le codeur, on peut concevoir un modèle approprié. Ce qui suit est une description du fonctionnement du codeur et d'un modèle destiné à être utilisé par le décodeur en liaison avec une file d'attente fusionnée à affectation du train, en parallèle avec un système de probabilité. Par exemple, on suppose que le tampon de réordonnement possède 256 emplacements, que quatre trains entrelacés sont utilisés et que chaque mot entrelacé est de 16 bits. Lorsque le tampon contient 256 éléments, un élément doit être envoyé à l'extérieur à destination d'un moyen de mise en paquets des bits (par exemple une unité de mise en paquets des bits) avant que l'élément destiné au 257ème mot codé puisse être placé dans la file d'attente. Les éléments peuvent être expulsés plus tôt si cela est nécessaire. Dans certains systèmes, l'enlèvement du premier élément du tampon nécessite d'avoir enlevé suffisamment de bits pour avoir un mot codé entrelacé tout entier. Par conséquent, si des mots codés à 1 bit sont possibles, l'enlèvement du mot codé 0 peut demander également l'enlèvement des mots codés 4, 8, 12,..., 52, 56, 60 pour des mots entrelacés de 16 bits. Pour assurer que tous ces éléments du tampon sont des éléments valables, l'opération consistant à faire entrer un élément en force puisque la mémoire est pleine peut s'exécuter à l'adresse 64, à 192 emplacements de l'emplacement o un nouveau mot codé est introduit (256-16x4=192). 84 2725330 Dans le décodeur, il existe un compteur pour chaque probabilité. Lorsqu'on fait appel à un nouveau mot codé pour faire démarrer une succession, le compteur se charge à 192. A chaque fois qu'un nouveau mot codé est utilisé par une quelconque probabilité, tous les compteurs subissent une décrémentation. Si un compteur atteint zéro, la longueur de succession relative à cette probabilité est fixée à zéro (et le drapeau "LPS présent" est effacé). Il peut se révéler commode d'utiliser plusieurs groupes de mémorisation du type RAM (mémoire à plusieurs accès, simulation avec mémoire rapide, etc.), à raison d'un groupe de mémorisation pour chaque train de données codées. Ceci permet à toutes les unités de mise en paquets des bits de recevoir simultanément des données, de sorte que la lecture de plusieurs mots codés relatifs à un train particulier n'empêche pas la lecture pour d'autres trains. Dans d'autres systèmes, plusieurs unités de mise en paquets des bits doivent appliquer à une unique mémoire une règle d'arbitrage basée sur l'ordre dans lequel les mots codés sont stockés dans le tampon. Dans ces systèmes, le fait d'enlever un élément dans un tampon n'amène pas à la formation complète d'un mot entrelacé. Chaque unité de mise en paquets des bits reçoit typiquement une certaine fraction d'un mot entrelacé, en séquence. Chaque unité de mise en paquets des bits reçoit au moins un nombre de bits égal à la plus courte longueur de mot codé (par exemple 1 bit) et au plus un nombre de bits égal à la plus grande longueur de mots codés (par exemple 13 bits). Des mots entrelacés ne peuvent pas être émis avant d'être complets, et ils doivent être émis dans l'ordre d'initialisation. Dans cet exemple, une unité de mise en paquets des bits peut avoir à mettre en tampon treize mots entrelacés, ceci étant le nombre maximal de mots entrelacés qui peuvent être traités complètement pour des mots codés de longueur maximale, tandis qu'un autre train comporte un mot entrelacé en attente qui est en train de recevoir des mots codés de longueur minimale. Un système dans lequel tout mot codé demande deux écritures et une lecture en mémoire peut se révéler moins souhaitable du point de vue de la mise en oeuvre matérielle qu'un système qui effectue deux écritures et deux lectures. Si cela était souhaitable pour le système à quatre trains pris en exemple, les unités 1 et 2 de mise en paquets des bits pourraient se partager un cycle de lecture de la mémoire et les unités 1 et 3 de mise en paquets des bits pourraient se partager l'autre cycle de lecture (ou tout autre combinaison arbitraire). Alors que ceci ne réduirait pas la taille nécessaire pour la mise en tampon, cela donnerait une vitesse de transfert plus élevée dans l'unité de mise en paquets des bits. Ceci peut permettre aux unités de mise en paquets des bits de mieux utiliser la capacité du canal de données codées. Systèmes à mémoire de taille fixe Un avantage procuré par un système qui possède plusieurs états de générateur de bits par classe de probabilité est que ce système peut faire fonctionner un codage avec pertes lorsqu'une mémoire de taille fixe déborde. Ceci peut être utilisé dans le cas d'une compression d'images associée à un tampon d'image complète et dans d'autres applications qui ne peuvent mémoriser qu'une quantité limitée de données codées. Pour des systèmes à mémoire de taille fixe, les états du générateur de bits associés à chaque probabilité se voient chacun affecté d'une partie de la donnée. Par exemple, dans le cas de données à huit bits, chacun des huit états pourrait être affecté à un plan mémoire particulier. Dans ce cas, un dispositif de décalage serait également affecté à chaque partie de la donnée, en opposition avec les dispositifs de décalage produisant séquentiellement le mot codé suivant. Il faut noter que la donnée n'a pas besoin être divisée par le plan mémoire. De plus, dans le codeur, aucun entrelacement n'est effectué, chaque partie de la donnée étant simplement mise en paquets. Une mémoire est affectée à chaque partie de la donnée. On va présenter quelques informations sur la gestion de la mémoire relative aux données codées pour des systèmes qui mémorisent toutes les données dans une mémoire de taille fixe et pour des systèmes qui transmettent des données dans un canal ayant une largeur de bande admissible maximale. Dans ces deux systèmes, une dégradation honorable en un système avec pertes est souhaitée. Des trains de données différents sont utilisés pour des données ayant des importances différentes, de sorte que des trains moins importants peuvent être stockés ou non transmis lorsqu'on ne dispose pas d'une place en mémoire ou d'une largeur de bande suffisantes. Lors de l'utilisation de la mémoire, les données codées doivent être stockées de façon qu'il puisse y être fait accès dans des conditions o les trains de données moins importantes pourront être écartés sans que ceci entraîne une perte de capacité de décodage pour les trains de données importantes. Puisqu'une donnée codée a une rongeur variable, on peut utiliser une affectation dynamique de la mémoire. La figure 31 représente un exemple d'unité d'affectation dynamique de la mémoire pour trois trains de données codées. Un fichier de registre 3100 (ou un autre moyen de stockage) contient un pointeur associé à chaque train, plus un autre 86 2725330 pointeur servant à indiquer l'emplacement de mémoire libre suivant. La mémoire 3101 est divisée en pages de taille fixe. Initialement, chaque pointeur affecté à un train pointe le début d'une page de mémoire et le pointeur libre la page disponible suivante de la mémoire. Une donnée codée venant d'un train particulier est stockée à l'emplacement de mémoire adressé par le pointeur correspondant. Ensuite, le pointeur s'incrémente sur l'emplacement de mémoire suivant. Lorsque le pointeur atteint le point maximal de la page courante, on assiste à ce qui suit. L'adresse du début de la page libre suivante (mémorisée dans le pointeur libre) est mémorisée avec la page courante. (On pourrait utiliser une partie de la mémoire de données codées ou une mémoire distincte, ou encore un fichier de registre.) Le pointeur courant se positionne sur la page libre suivante. Le pointeur libre s'incrémente. Toutes ces actions affectent une nouvelle page de mémoire à un train particulier et produisent des liaisons permettant que l'ordre d'affectation puisse être déterminé pendant le décodage. Lorsque toutes les pages de la mémoire sont utilisées et qu'il existe encore des données en provenance d'un train qui est plus important que la donnée la moins importante, une des trois choses suivantes peuvent se passer. Dans les trois cas, la mémoire assignée au train de données moins importantes est réassignée au train de données plus importantes et aucune donnée du train de données moins importantes n'est mémorisée ultérieurement. Tout d'abord, la page qui est en train d'être utilisée par le train le moins important se voit simplement affectée aux données plus importantes. Puisque la plupart des codeurs entropiques typiques utilisent une information d'état interne, toutes les données moins importantes qui étaient stockées précédemment dans cette page sont perdues. En deuxième lieu, la page qui est en train d'être utilisée par le train moins important est simplement affectée au train de données plus importantes. Au contraire du cas précédent, le pointeur est fixé sur l'extrémité de la page et, lorsque des données plus importantes sont écrites sur la page, le pointeur correspondant décrémente. Ceci a pour avantage de préserver les données moins importantes qui se trouvent au début de la page dans le cas o le train de données plus importantes ne demande pas la page tout entière. Troisièmement, au lieu que la page courante de données moins importantes soit réaffectée, une page quelconque de données moins importantes peut être réaffectée. Ceci exige que les données de toutes les pages soient codées indépendamment, ce qui peut avoir pour effet de réduire la compression obtenue. Ceci demande également que les données non codées correspondant au début de toutes les pages soient identifiées. Puisqu'une page quelconque de données moins importantes peut être rejetée, on dispose alors d'une plus grande souplesse pour effectuer une dégradation satisfaisante vers un codage avec pertes. La troisième possibilité peut se révéler particulièrement intéressante dans un système qui réalise une compression à taux fixe sur certaines régions d'image. Un nombre spécifié de pages de mémoire peut être attribué à une région d'image. Le fait que des données moins importantes soient ou non retenues peut dépendre de la compression atteinte dans la région considérée. (La mémoire affectée à une région peut ne pas être complètement utilisée si la compression avec pertes demande moins que la quantité de mémoire affectée.) Le fait d'obtenir un taux de compression fixe sur une région de l'image peut permettre un accès direct aux régions de l'image. La possibilité ainsi offerte d'écrire des données dans chaque page à partir de ses deux extrémités peut être employée dans le but d'une meilleure utilisation de la quantité totale de mémoire disponible dans le système. Lorsque toutes les pages sont attribuées, une page quelconque possédant suffisamment de place libre à la fin peut être affectée à une utilisation partant de la fin. La possibilité d'utiliser les deux extrémités d'une page doit être comparée avec le coût du maintien de la trace de l'emplacement dans le cas o on rencontre les deux types de données. (Ceci diffèere du cas o l'un des types de données n'est pas important et peut être simplement écrasé.) On considère maintenant un système dans lequel des données sont transmises sur un canal au lieu d'être stockées dans une mémoire. On utilise des pages de mémoire d'une taille fixe, mais seule une page est nécessaire pour chaque train. (Deux pages peuvent être nécessaires s'il faut effectuer une sorte de mouvements de va-et-vient pour réaliser la mise en tampon vis-à-vis du canal, de sorte que, tandis qu'on écrit sur une page, on peut lire l'autre et délivrer les signaux lus.) Lorsqu'une page de mémoire est pleine, elle est émise sur le canal, et l'emplacement de mémoire peut être réutilisé dès que la page a été émise. Dans certaines applications, la taille de page de la mémoire peut être égale à la taille des paquets de donnée utilisés sur le canal, ou bien à un multiple de la taille des paquets. Dans certains systèmes de communications, par exemple le mode de transfert asynchrone (ATM), on peut attribuer des priorités aux paquets. Le 88 2725330 système ATM présente deux niveaux de priorité, le niveau prioritaire et le niveau secondaire. Les paquets secondaires ne sont émis que si une largeur de bande suffisante est disponible. On peut utiliser un seuil pour déterminer quels sont les trains prioritaires et quels sont les trains secondaires. Un autre procédé consisterait à utiliser un seuil dans le codeur pour ne pas émettre de trains qui seraient en deça du seuil. Générateurs de bits séparés pour chaque code La figure 20 est un schéma fonctionnel d'un système ayant des générateurs de bits séparés pour chaque code. Comme représenté sur la figure 20, le système de décodage 2000 comprend un modèle de contexte 2001, une mémoire 2002, un bloc "état de PEM en code" 2003, un décodeur2004, des générateurs de bits 2005A à 2005n, et un dispositif de décalage 2006. La sortie du modèle de contexte 2001 est couplée à une entrée de la mémoire 2002. La sortie de la mémoire 2002 est couplée à une entrée du bloc "état de PEM en code" 2003. La sortie du bloc "état de PEM en code" 2003 est couplée à une entrée du décodeur 2004. Le signal de sortie du décodeur 2004 est appliqué, comme signal d'activation, aux générateurs de bits 2005A à 2005n. Les générateurs de bits 2005A à 2005n sont en outre couplés de facçon à recevoir les données codées fournies par le dispositif de décalage 2006. Le modèle de contexte 2001, la mémoire 2002 et le bloc "état de PEM en code" 2003 fonctionnent comme leurs contreparties de la figure 19. Le modèle de contexte 2001 produit un compartiment de contexte. La mémoire 2002 délivre un état de probabilité basé sur le compartiment de contexte. L'état de probabilité est reçu par le bloc "état de PEM en code" 2003, qui produit une classe de probabilité pour chaque état de probabilité. Le décodeur 2004 active l'un des générateurs de bits 2005A à 2005n lors du décodage de la classe de probabilité. (On note que le décodeur 2004 est un circuit décodeur de M en 2M, analogue à un décodeur 74x138 3:8, connu par lui-même, et qui n'est pas un décodeur du type codage entropique.) On note que, puisque chaque code possède un générateur de bits séparé, certains générateurs de bits peuvent utiliser des codes autres que les codes R. En particulier, un code associé à des probabilités voisines de 60 % peut être utilisé pour mieux quadriller l'espace de probabilité entre R2(0) et R2(1). Par exemple, le tableau 19 montre un semblable code. 89 2725330 TABLEAU 19 Donnée non codée Mot codé 000 00 001 01 01 10 1 11 Si cela est nécessaire pour permettre d'atteindre la vitesse voulue, un prédécodage d'un ou plusieurs bits peut être effectué pour garantir que les données décodées seront rapidement disponibles. Dans certains modes de réalisation, pour éviter la nécessité de prévoir la capacité de mettre à jour une grande valeur de comptage de succession à chaque cycle d'horloge, on partitionne le décodage des mots codés et le comptage des valeurs de successions pour les codes longs. Le générateur de bits associé aux codes R2(0) n'est pas complexe. Un mot codé est demandé à chaque fois qu'un bit est demandé. Le bit produit est simplement le mot codé (en réunion logique du type exclusif avec le MBS). Les codes associés à une courte longueur de succession, par exemple R2(1), R3(1), R2(2) et R3(2), sont manipulés de la manière suivante. Tous les bits d'un mot codé sont décodés et mémorisés dans une machine à états qui comprend un petit compteur (respectivement à 1, 2 ou 3 bits) et un bit indiquant "LPS présent". Le compteur et le bit "LPS présent" fonctionnent comme un décodeur du type code R. Pour des codes plus longs, comme R2(k) et R3(k), avec k>2, les générateurs de bits sont partagés en deux unités, comme représenté sur la figure 21. Sur la figure 21, une structure de générateur de bits pour codes R2(k), avec k>2, est présentée comme possédant une unité de traitement de succession courte 2101 et une unité de traitement de succession longue 2102. On note que, même si cette structure est destinée à être utilisée avec des codes R2(k>2), son fonctionnement est analogue pour les codes R3(k>2) (et semblera évident à l'homme de l'art). L'unité 2101 de traitement de succession courte est couplée de facçon à recevoir un signal d'activation et un mot codé [0...2] comme signaux d'entrée du générateur de bits, ainsi qu'un signal "zéros partout" et un signal "valeur de comptage zéro" (indiquant une valeur de comptage de zéro), venant tous deux de l'unité 2101 de traitement de succession longue. En réponse à ces signaux d'entrée, l'unité 2101 de traitement de succession courte délivre un bit décodé et une indication de signal suivant, ce qui indique qu'un nouveau mot codé est nécessaire. L'unité de traitement de succession courte 2101 produit également un signal d'activation de comptage, un signal de chargement de comptage et un signal de maximum de comptage à destination de l'unité 2102 de traitement de succession longue. L'unité de traitement de succession longue 2102 est en outre couplée de façon à recevoir un mot codé [k...3] au titre de signal d'entrée du générateur de bits. L'unité de traitement de succession courte 2101 manipule des successions dont la longueur peut aller jusqu'à quatre et est analogue à un générateur de bits du type R2(2). Dans un mode de réalisation, l'unité de traitement de succession courte 2101 est identique pour tous les codes R2(k>2). Le rôle de l'unité de traitement de succession longue 2102 est de déterminer le moment o les derniers bits 1 à 4 de la succession doivent être délivrés. L'unité de traitement de succession longue 2102 possède des entrées, un circuit logique ET et un compteur, dont la taille varie avec k. Un mode de réalisation de l'unité de traitement de comptage de succession longue 2102 est représenté sur la figure 22. Comme on peut le voir sur cette figure, l'unité de traitement de succession longue 2102 comprend un circuit logique ET2201 couplé de façon à recevoir le mot codé [k...3] et délivre un signal "uns partout" comme niveau logique 1 si tous les bits du mot codé sont des "1", ce qui indique que le mot codé courant est un mot codé 1N et que la valeur de comptage de la succession est inférieure à 4. Un circuit logique NON 2202 est également couplé de façon à recevoir le mot codé et à l'inverser. La sortie du circuit logique NON 2202 est couplée à une entrée d'un compteur de bits 2203. Le compteur de bits 2203 est également couplé de façon à recevoir le signal d'activation de comptage, le signal de chargement de comptage et le signal de maximum de comptage. En réponse à ces signaux d'entrée, le compteur de bits 2203 produit un signal de comptage zéro. Dans un mode de réalisation, le compteur 2003 est un compteur de (k-2) bits et est utilisé pour découper des valeurs de comptage de successions longues en successions de quatre MPS et, éventuellement, un certain reste. Le signal d'activation de comptage indique que quatre MPS ont été délivré et que le compteur doit être décrémenté. Le signal de chargement de comptage est utilisé lors du décodage de mots codés "IN" et fait que le compteur se voit charger par le complément des bits k à 3 du mot codé. Le signal de maximum de comptage est utilisé lors du décodage de mots codés "0" et charge le compteur avec sa valeur maximale. Un signal de sortie de comptage zéro indique que le compteur est à zéro. Un mode de réalisation de l'unité de traitement de comptage de succession zéro 2101 est présenté sur la figure 23. Sur cette figure, l'unité de traitement de comptage de succession courte contient un module de commande 2301, un compteur de deux bits 2302 et un compteur de trois bits 2303. Le module de commande 2301 reçoit le signal d'activation, le mot codé [0. 2], ainsi que les signaux 'uns partout" et "valeur de comptage zéro" de la part de l'unité de traitement de comptage de succession longue. Le compteur de deux bits est utilisé pour compter des successions de quatre bits de MPS faisant partie de successions plus longues. Une unité compteur R2(2) et bit LPS (trois bits au total) 2303 est utilisée pour produire les bits 1 à 4 se trouvant à la fin d'une succession. Le signal d'entrée d'activation indique qu'un bit doit être produit sur la sortie "bit". Lorsqu'il n'est pas excité, le signal d'entrée "comptage zéro" indique qu'une succession de quatre MPS doit être délivrée. A chaque fois que le compteur..DTD: de MPS 2302 atteint zéro, le signal de sortie "activation de comptage" est excité. Lorsque le signal d'entrée "comptage zéro" est excité, l'unité compteur R2(2) et LPS est utilisée ou bien un nouveau mot codé est décodé, et le signal de sortie suivant est excité. Lorsque le nouveau mot codé est décodé, les actions effectuées sont déterminées par le mot codé présenté en entrée. Si le signal d'entrée est un mot codé "o", le compteur de MPS 2302 est utilisé et le signal de sortie "maximum de comptage" est excité. Pour des mots codés "IN", les trois premiers bits du mot codé sont chargés dans l'unité compteur R2(2) et LPS 2303, et le signal de sortie "maximum de comptage" est excité. Si le signal d'entrée "uns partout" est excité, alors l'unité de compteur R2(2) et LPS 2303 est utilisée pour produire des bits; sinon, le compteur de MPS est utilisé jusqu'à ce que le signal d'entrée "valeur de comptage zéro" soit excité. Si l'on envisage le système d'un point de vue perspectif, il faut, pour que le système fonctionne bien, que le nombre de codes soit petit, typiquement de ou moins. La taille du multiplexeur nécessaire pour les signaux de sortie de bit et de mot codé suivant et celle du décodeur servant à activer un générateur de bits particulier doivent être limitées pour permettre un fonctionnement rapide. De plus, la sortance du mot codé fourni par le dispositif de décalage ne doit pas être trop élevée pour permettre un fonctionnement à grande vitesse. 92 2725330 Des générateurs de bits séparés pour chaque code permettent un traitement en mode pipeline. Si tous les mots codés aboutissaient à au moins deux bits, le traitement des mots codés pourrait être effectué en mode pipeline en deux cycles au lieu d'un. On pourrait doubler la vitesse du décodeur en faisant que les générateurs de bits soient une partie limitante du système. Un moyen d'obtenir cela consisterait à faire que le mot codé à longueur de succession zéro (un mot codé indiquant juste un LPS) soit suivi par un seul bit qui est le bit non codé suivant. Ceux-ci peuvent être appelés des codes RN(k)+1 et ils coderaient toujours au moins deux bits. On note que des mots codés R2(0) et, peut être, certains des autres mots codés courts ne demandent pas d'être traités en mode pipeline pour permettre un fonctionnement rapide. Des générateurs de bits séparés conduisent de même à l'utilisation d'une signalisation implicite. On peut obtenir une signalisation implicite permettant le codage à l'aide d'une mémoire finie en opérant de la manière suivante. Chaque générateur de bits possède un compteur dont la taille est celle d'une adresse de file d'attente, par exemple 9 bits dans le cas o on utilise une file d'attente de taille 512. A chaque fois qu'un nouveau mot codé est utilisé par un générateur de bits, le compteur se voit charger par la valeur maximale. A chaque fois qu'un générateur de bits quelconque demande un mot codé, les compteurs de tous les générateurs de bits se décrémentent. A chaque fois qu'un compteur atteint zéro, l'état du générateur de bits correspondant s'efface (par exemple le compteur de MPS, l'unité compteur R2(2) et LPS, et le compteur de valeurs de comptage de successions longues sont effacés). Puisque l'effacement peut se produire même si un générateur de bits particulier n'est pas activé, il n'y a pas de problème avec les valeurs de comptage d'attente. Initialisation de la mémoire pour chaque compartiment de contexte Dans les cas o la mémoire de chaque compartiment de contexte contient une information d'estimation de probabilité, une largeur de bande de mémoire supplémentaire peut être nécessaire pour initialiser le décodeur (par exemple la mémoire) très rapidement. L'opération d'initialisation rapide du décodeur peut poser un problème lorsque le décodeur possède de nombreux contextes et qu'ils doivent tous être effacés. Lorsque le décodeur utilise de nombreux contextes (1K ou plus) et que la mémoire ne peut pas être effacée globalement, il faut un nombre de cycles d'horloge anormalement grand pour effacer la mémoire. Pour effacer les contextes rapidement, certains modes de réalisation de l'invention utilisent un bit supplémentaire, appelé ici le bit de statut d'initialisation, lequel est mémorisé avec chaque contexte. Ainsi, un bit supplémentaire est mémorisé avec l'état de PEM (par exemple 8 bits) pour chaque contexte. La mémoire associée à chaque compartiment de contexte et le circuit logique de commande d'initialisation sont présentés sur la figure 24.Comme on peut le voir sur la figure 24, une mémoire de contexte 2401 est couplée avec un registre 2402. Dans un mode de réalisation, le registre 2402 est constitué par un registre à 1 bit qui indique l'état approprié courant qui est associé au compartiment de statut initialisé. Le registre 2402 est couplé à une entrée d'un circuit logique OU exclusif 2403. Une autre entrée du circuit logique OU exclusif 2403 est couplée à une sortie de la mémoire 2401. La sortie du circuit logique OU exclusif2403 donne le signal de validité et est couplée à une entrée d'un circuit logique de commande 2404. Une autre entrée du circuit logique de commande 2404 est couplée à la sortie d'un compteur 2405 et au signal de compartiment de contexte. Une sortie du circuit logique de commande 2404 est couplée aux entrées de sélection de multiplexeurs (MUX) 2406 et 2407 et à une entrée du compteur 2405. Une autre sortie du circuit logique de commande 2404 est couplée à l'entrée de sélection du multiplexeur 2408. Les entrées du multiplexeur 2406 sont couplées à la sortie du compteur 2405 et à une indication de compartiment de contexte. La sortie du multiplexeur 2406 est couplée à la mémoire 2401. Les entrées du multiplexeur 2407 sont couplées au nouvel état de PEM et à zéro. La sortie du multiplexcur 2407 est couplée à une entrée de la mémoire 2401, tandis que la sortie de la mémoire 2401 et l'état initial du PEM sont couplés aux entrées du multiplexeur 2408. La sortie du multiplexeur 2408 fournit l'état de PEM de sortie. La valeur contenue dans le registre 2402 fait l'objet d'une complémentation à chaque opération de décodage (c'est-à-dire à chaque ensemble de données, et non à chaque bit décodé). Le circuit logique OU exclusif 2403 compare la validité de l'emplacement de mémoire auquel il a été fait accès avec la valeur du registre pour déterminer si l'emplacement de mémoire auquel il a été fait accès est valable pour cette opération de décodage. On utilise le circuit logique OU exclusif2403 pour vérifier si le bit de statut initialisé est apparié à l'état approprié contenu dans le registre 2402. Si la donnée contenue dans la mémoire 2401 n'est pas valable, alors le circuit logique de commande 2404 fait en sorte que la donnée soit ignorée par le circuit logique "état en code" et que l'état de PEM initial soit utilisé à sa place. On réalise cela à l'aide du multiplexeur 2408. Lorsqu'un nouvel état de PEM est écrit dans la mémoire, le bit initialisé se positionne sur la valeur courante du registre, de sorte qu'il sera considéré comme valable lors de l'accès suivant. Chaque élément de la mémoire de compartiment de contexte doit avoir un bit de statut initialisé qui est positionné sur la valeur courante du registre pour qu'une autre opération de décodage puisse commencer. Le compteur 2405 passe par tous les emplacements de mémoire pour assurer qu'ils sont initialisés. A chaque fois qu'un compartiment de contexte est utilisé, mais que son état de PEM n'est pas mis à jour, le cycle d'écriture non utilisé peut être employé pour vérifier ou mettre à jour l'emplacement de mémoire pointé sur la valeur du compteur 2405. Une fois l'opération de décodage réalisée, si le compteur 2405 n'a pas atteint la valeur maximale, les contextes restants sont initialisés avant le début de l'opération suivante. Pour commander le fonctionnement, il est fait appel au processus logique suivant. writeJit - false; counter - O; allinitialized - false; while (counter c maximum context bin+1) read PEM state from context memory if ( (counter == context bin read) and (writeit)) writeit = false counter = counter + 1 if ( (PEM state changed) write new PEM state else if (write_it) write initial PEM state to memory location "counter" counter = counter + 1 else read memory location "counter" if (initialized bit in read location is in wrong state) write_it = true else counter = counter + 1 all_initialized = true; while (decoding) read PEM state from context memory if (PEM state changed) write new PEM state PEM à adaptation rapide Le PEM utilisé selon l'invention peut comporter un schéma d'adaptation qui permet une adaptation plus rapide quelle que soit la quantité de données disponibles. De ce fait, l'invention permet une adaptation initiale plus rapide du décodage et permet aussi une adaptation plus lente lorsque plus de données sont disponibles, ceci constituant un moyen permettant de réaliser une estimation plus précise. De plus, le PEM peut être fixé dans une matrice de portes prédiffusée programmable par l'utilisateur (FPGA) ou une mise en oeuvre ASIC de table/machine d'états de PEM. Les tableaux 20 à 25 ci-après décrivent une certain nombre de machines d'états d'estimation de probabilité. Certains tableaux n'utilisent pas de codes R3 ou n'utilisent pas de codes longs afin de réduire le coût matériel correspondant. Tous les tableaux, sauf le tableau 20, utilisent des états spéciaux d'adaptation rapide" assurant une adaptation rapide au début du codage, jusqu'au moment ou le premier LPS apparaît. Ces états d'adaptation rapide sont présentés "en italique" dans les tables. Par exemple, comme on peut le voir dans le tableau 21, lorsque le décodage commence, l'état courant est l'état 0. Si un MPS apparaît, alors le décodeur passe à l'état 35. Aussi longtemps que des MPS apparaissent, le décodeur effectue des transitions ascendantes à partir de l'état 35, pour finalement faire une transition à l'état 28. Si un LPS apparaît à un moment quelconque, le décodeur quitte les transitions aux états d'adaptation rapide pour un état qui représente l'état de probabilité correct des données qui ont été reçues jusqu'à ce point. On note que, pour chaque table, après qu'un certain nombre de MPS ont été reçus, le décodeur quitte les transitions aux états d'adaptation rapide. Dans le mode de réalisation voulue, une fois qu'on est sorti des états d'adaptation rapide, il n'y a pas de mécanisme pour y ramener, sauf en faisant redémarrer le processus de décodage. Dans d'autres modes de réalisation, la table d'états peut être conçue de façon à permettre un retour à ces états d'adaptation rapide, en autorisant une adaptation plus rapide, l'invention permettant que le décodeur arrive plus rapidement aux codes plus complexes, ce qui permettrait éventuellement de tirer avantage d'une compression améliorée. On note qu'il est possible d'éliminer l'adaptation rapide dans un tableau particulier en modifiant l'élément du tableau relatif à l'état 0 courant, de façon que la table n'effectue de transition que d'un seul état vers le haut ou vers le bas, en fonction du signal d'entrée de données. Dans toutes les tables, la donnée relative à chaque état est le code de cet état, de l'état suivant pour une mise à jour positive (vers le haut) et de l'état suivant pour une mise à jour négative (vers le bas). Des astérisques indiquent des états o le MPS doit être changé pour une mise à jour négative. 96 2725330 TABLEAU 20 Etat Code Etat Etat Etat Code Etat Etat suivan suivant courant suivantsuivant couranjtd courant vers l vers le vers levers le haut bas haut bas 0 r2(0) 1 0* 18 r3(3) 19 17 1 r2(0) 2 0 19 r2(4) 20 18 2 r2(0) 3 1 20 r3(4) 21 19 3 r2(0) 4 2 21 r2(5) 22 20 4 r2(0) 5 3 22 r3(5) 23 21 r2(0) 6 4 23 r2(6) 24 22 6 r2(1) 7 5 24 r3(6) 25 23 7 r2(1) 8 6 25 r2(7) 26 24 8 r2(1) 9 7 26 r3(7) 27 25 [9 r2(1) 10 8 27 r2(8) 28 26 r2(1) 11 9 28 r3(8) 29 27 1il r2(1) 12 10 29 r2(9) 30 28 12 r3(1) 13 il 30 r3(9) 31 29 13 r3(1) 14 12 31 r2(10) 32 30 14 r3(1) 15 13 32 r3(10) 33 131 r2(2) 16 14 33 r2(11) 34 32 16 r3(2) 17 15 34 r3(11) 34 33 17 r2(3) [ 16 Commutation au MPS TABILEAU 21 Etat Code Etat Etat Etat Code Etat Etat suivantsuivant suivantsuivant courantv vers Levers Le courant vers le versle haut bas haut bas 0 r2(0) 35 35' 22 r3(5) 23 21 1 r2(0) 2 1* 23 r2(6) 24 22 2 r2(0) 3 1 24 r3(6) 25 23 3 r2(0) 4 2 25 r2(7) 26 24 4 r2(0) 5 3 26 r3(7) 27 25 r2(0) 6 4 27 r2(8) 28 26 6 r2(1) 7 5 28 r3(8) 29 27 7 r2(1) 8 6 29 r2(9) 30 28 8 r2(1) 9 7 30 r3(9) 31 29 9 r2(1) 10 8 31 r2(10) 32 30 r2(1) 11 9 32 r3(10) 33 31 11 r2(1) 12 10 33 r2(11) 34 32 12 r3(1) 13 11 34 r3(11) 34 33 13 r3(1) 14 12 35 r2(0) 36 1* 14 r3(1) 15 13 36 r2(1) 37 2 r2(2) 16 14 3 7 r2(2) 38 4 16 r3(2) 17 15 38 r2(3) 39 6 17 r2(3) 18 16 39 r2(4) 40 10 18 r3(3) 19 17 40 r2(5) 41 16 19 r2(4) 20 18 4 1 r2(6) 142 19 r3(4) 21 19 42 r2(7) 43 22 21 r2(5) 22 20 43 r2(8) 28 25 Commutation au MPS TABLEAU 22 Etat Code Etat Etat Etat Code Etat Etat suivant suivant suivant suivan courant vers le vers Le courant vers Le vers lE haut bas haut bas 0 r2(0) 35 35* 22 r2(5) 23 21 1 r2(0) 2 1* 23 r2(6) 24 22 2 r2(O) 3 1 24 r2(6) 25 23 3 r2(O) 4 2 25 r2(7) 26 24 4 r2(0) 5 3 26 r2(7) 27 25 r2(0) 6 4 27 r2(8) 28 26 6 r2(1) 7 5 28 r2(8) 29 27 7 r2(1) 8 6 29 r2(9) 30 28 8 r2(1) 9 7 30 r2(9) 31 29 9 r2(1) 10 8 31 r2(10) 32 30 r2(1) 11 9 32 r2(10) 33 31 i1 r2(1) 12 10 33 r2(11) 33 32 12 r2(1) 13 11 13 r2(2) 14 12 35 r2(0) 36 1* 14 r2(2) 15 13 36 r2(1) 37 2 r2(2) 16 14 3 7 r2(2) 38 4 16 r2(2) 17 15 38 r2(3) 39 6 17 r2(3) 18 16 39 r2(4) 40 10 18 r2(3) 19 17 4B r2(5) 41 16 19 r2(4) 20 18 4 1 r2(6) 42 119 r2(4) 21 19 42 r2(7) 43 22 21 r2(5) |22 20 4 3 r2(8) |28 225 *Commutation au MPS TABLEAU 23 ode EiCode Etat Etat EtatCode suivantsuivant suivant Suivant courant vers levers le courant vers le vers Le haut bas haut bas 0 r2(0) 35 35* 22 r2(5) 23 21 1 r2(0) 2 1* 23 r2(6) 24 22 2 r2(0) 3 1 24 r2(6) 25 23 3 r2(0) 4 2 25 r2(7) 26 24 1 4 r2(0) 5 3 26 r2(7) 27 25 r2(0) 6 4 27 r2(8) 28 26 6 r2(1) 7 5 28 r2(8) 29 27 7 r2(1) 8 6 29 r2(9) 30 28 8 r2(1) 9 7 30 r2(9) 31 29 9 r2(1) 10 8 31 r2(10) 32 30 r2(1) 11 9 32 r2(10) 33 31 11 r2(1) 12 10 33 r2(11) 34 32 12 r3(1) 13 11 34 r2(11) 134 33 13 r3(1) 14 12 35 r2(O) 36 1* 14 r3(1) 15 13 36 r2(1) 37 2 r2(2) 16 14 37 r2(2) 38 4 16 r3(2) 17 15 38 r2(3) 39 6 17 r2(3) 18 16 39 r2(4) 40 10l 18 r3(3) 19 17 4 O r2(5) 41 16 19 r2(4) 20 18 41 r2(6) 42 19 r3(4) 21 1;9 42 r2(7) 143 22 21 r2(5) |22 |20 43 r2(8) 28 125 Commutation au MPS TABLEAU 24 Etat Code Etat Eat Etat Code Etat Etat suivant suivant suivant suivan courant vers le vers le courant vers le vers l haut bas haut bas 0 r2(0) 35 35* 22 r3(5) 23 21 1 r2(0) 2 1' 23 r2(6) 24 22 2 r2(0) 3 1 24 r3(6) 25 23 3 r2(0) 4 2 25 r2(7) 26 24 4 r2(0) 5 3 26 r2(7) 27 25 r2(0) 6 4 27 r2(7) 27 26 6 r2(1) 7 5 7 r2(1) 8 6 8 r2(1) 9 7 9 r2(1) 10 8 r2(1) 11 9 il r2(1) 12 10 12 r3(1) 13 11 13 r3(1) 14 12 35 r2(0) 136 11' 14 r3(1) 15 13 36 r2(1) 37 2 r2(2) 16 14 37 r2(2) 38 4 16 r3(2) 17 15 38 r2(3) 39 6 17 r2(3) 18 16 39 r2(4) 40 - 10 18 r3(3) 19 17 4 a r2(5) 41 16 19 r2(4) 20 18 4 1 r2(6) 42 19 r3(4) 21 19 4 2 r2(7) 25 2 2 21 r2(5) 22 20 Commutation au MPS TABLEAU 25 Etat Code Etat Etat Etat Code Etat Etat suivantsuivant suivant suivart courant vers le vers Le courant vers le vers le haut bas haut bas 0 r2(0) 35 35* 22 r2(5) 23 21 1 r2(0) 2 1* 23 r2(6) 24 22 2 r2(0) 3 1 24 r2(6) 25 23 3 r2(O) 4 2 25 r2(7) 26 24 4 r2(O) 5 3 26 r2(7) 27 25 r2(0) 6 4 27 r2(7) 28 26 6 r2(1) 7 5 28 r2(7) 28 27 7 r2(1) 8 6 8 r2(1) 9 7 9 r2(1) 10 8 r2(1) 11 9 11 r2(1) 12 10 12 r2(1) 13 il 13 r2(2) 14 12 35 r2(0) 36 1* 14 r2(2) 15 13 36 r2(1) 37 2 r2(2) 16 14 37 r2(2) 38 4 16 r2(2) 17 15 38 r2(3) 39 6 17 r2(3) 18 16 39 r2(4) 40 10 18 r2(3) 19 17 40 r2(5) 41 16 19 r2(4) 20 18 41 r2(6) 42 19 r2(4) 21 19 42 r2(7) 25 22 21 r2(5) |22 1 20 43 r2(8) 28 25 Commutateur au MPS 102 2725330 L'addition d'une adaptation rapide à l'estimation de la probabilité ne fait qu'aider au début du codage. On peut utiliser d'autres procédés pour améliorer l'adaptation pendant le codage lorsque la nature statistique d'un compartiment de contexte varie plus vite et que les tables de PEM précédemment décrites ne peuvent plus suivre. Un procédé permettant de maintenir une adaptation rapide tout au long du codage consiste à ajouter un terme d'accélération à la mise à jour des états du PEM. On pourrait incorporer cette accélération à une table d'états de PEM en répétant tous les codes un nombre constant de fois (par exemple 8). On pourrait ensuite ajouter ou soustraire, à l'état courant, un terme d'accélération M (par exemple un entier positif) lors de la mise à jour. Lorsque M vaut 1, le système fonctionne comme un système sans accélération et l'adaptation la plus lente a lieu. Lorsque M est supérieur à 1, une adaptation plus rapide a lieu. Initialement, M peut être fixé à une certaine valeur supérieure à 1, de façon à donner une adaptation initiale rapide. Un procédé selon l'invention pour mettre à jour la valeur de M s'appuie sur le nombre de mots codés consécutifs. Par exemple, si un nombre prédéterminé de mots codés apparaissent consécutivement, alors, on augmente la valeur de M. Par exemple, si quatre mots codés consécutifs sont "0o O" ""o "o0" ou bien "IN" "IN" "iN" "iN", alors la valeur de M augmente. Inversement, on peut utiliser un schéma de commutation entre des mots codés "0" et "IN" pour faire décroître la valeur de M. Par exemple, si quatre mots codés consécutifs sont "O" "IN" "o" "IN" ou bien "iN" "0" "iN" "0", alors la valeur de M diminue. Un autre procédé d'accélération utilise des tables d'états dans lesquelles chaque code est répété S fois, o S est un entier positif. S est un paramètre d'accélération inverse. Si S vaut 1, l'adaptation est rapide, et, si S est plus grand, l'adaptation est plus lente. On peut fixer initialement la valeur de S à 1 de facçon à donner une adaptation initiale rapide. En utilisant un procédé analogue à celui décrit ci- dessus, on peut adapter la valeur de S lorsque quatre mots codés consécutifs sont "0" "0" "0". "0" ou bien "iN" "IN" "IN' "iN". Dans ce cas, la valeur de S diminue. Au contraire, si quatre mots codés consécutifs sont "0" "lN" "0" "IN" ou bien "IN" "0" "iN" "0", alors la valeur de S augmente. Il peut exister plusieurs significations à la définition de "mots codés consécutifs". Dans un système "par contexte", des mots codés consécutifs peuvent désigner des mots codés consécutifs dans un certain compartiment de contexte. Dans un système "par probabilité", des mots codés consécutifs peuvent désigner des mots codés consécutifs dans une certaine classe de probabilité. Sinon, dans l'un ou l'autre système, des mots codés consécutifs peuvent désigner des mots codés consécutifs d'un point de vue global (sans référence au compartiment de contexte ou à la classe de probabilité). En ce qui concerne ces trois exemples, les bits de mémorisation nécessaires pour maintenir un historique des mots codés sont, respectivement, 3x"nombre de compartiments de contexte", 3x"nombre de classes de probabilité" et 3. Le maintien d'une accélération pour chaque compartiment de contexte peut assurer la meilleure adaptation. Puisqu'un maintien médiocre de la trace historique est souvent le fait d'un changement global dans les données non codées, le fait de déterminer l'accélération d'un point de vue global peut aussi amener une bonne adaptation. Applications du système Une propriété de tout système de compression est qu'il réduit les exigences en matière de stockage d'un ensemble de données. On peut substituer le système parallèle selon l'invention à toute application se satisfaisant ordinairement d'un système de codage sans pertes, et on peut l'appliquer à des systèmes utilisant des signaux audio, du texte, des bases de données, des données exécutables en ordinateurs, ou d'autres données, signaux ou symboles numériques. Des exemples de systèmes de codage sans pertes comprennent la compression employée dans les télécopieurs, la compression employée dans les bases de données, la compression d'images graphiques en grilles de points, et la compression de coefficients de transformation utilisés selon des normes de compression d'images telles que JPEG et MPEG. L'invention autorise des mises en oeuvre matérielles efficaces de taille réduite et des mises en oeuvre logicielles relativement rapides de faible ampleur, ce qui fait d'elle un bon choix même dans le cas d'applications qui ne demandent pas une vitesse élevée. L'intérêt réel présenté par l'invention par rapport à la technique antérieure est la possibilité de fonctionner à des vitesses très élevées, notamment pendant le décodage. Ainsi l'invention peut faire une utilisation complète des coûteux canaux rapides, tels que les réseaux d'ordinateurs rapides et les canaux de diffusion par satellites ou par installation terrestre. La figure 28 illustre un tel système, dans lequel des données de diffusion ou un réseau d'ordinateurs rapides fournissent des données à un système de décodage 2801, qui décodent les données en parallèle de façon à produire des données de sortie. Des codeurs entropiques matériels courants (par exemple le codeur Q) ralentiraient le débit de ces systèmes. Tous ces systèmes sont conçus, à grand prix, pour avoir une largeur de bande 104 2725330 importante. Ce serait "anti-économique" d'utiliser un décodeur qui ralentit le débit. Le système parallèle selon l'invention non seulement autorise ces largeurs de bande importantes, mais aussi il augmente effectivement la largeur de bande efficace du fait que les données peuvent être transmises sous forme comprimée. Le système parallèle selon l'invention est également applicable à l'obtention d'une largeur de bande plus efficace à la sortie de canaux modérément rapides tels que les ISDN, CD-ROM, et SCSI. Un semblable système d'appariement de largeurs de bande est présenté sur la figure 29, o des données venant de sources telles qu'un CD-ROM, le réseau Ethernet, l'interface SCSI, ou toute autre source analogue, sont appliquées à un système de décodage 2901, qui reçoit et décode les données afin de produire des données de 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 possède, par exemple un équipement vidéo en temps réel ou un équipement multimédia du type ordinateur. Le système selon l'invention peut jouer le rôle de moyen d'appariement de largeur de bande. Le système selon l'invention se révèle un choix excellent pour la partie codeur entropique d'un système vidéo en temps réel tel que le système HDTV (télévision haute définition) et les normes vidéo MPEG. Un tel système est présenté sur la figure 30. Sur cette figure, le système vidéo en temps réel comporte un système de décodage 3001 qui se voit appliquer des données d'image comprimées. Le système 3001 décode les données et les délivre à un décodeur avec pertes 3002. Le décodeur avec pertes 3002 pourrait être la partie de transformation, de conversion de couleur et de sous-échantillonnage d'un décodeur HDTV ou MPEG. L'unité 3003 peut être un poste de télévision ou un écran de contrôle vidéo. Bien entendu, l'homme de l'art sera en mesure d'imaginer, à partir des procédés, systèmes et dispositifs, dont la description vient d'être donnée à titre simplement illustratif et nullement limitatif, diverses variantes et modifications ne sortant pas du cadre de l'invention. REVENDICATIONS 1. Procédé de codage d'un train de données, caractérisé en ce qu'il comprend les opérations suivantes: produire une information de mots codés représentative du train de données en réponse au train de données, o l'information de mots codés comprend une pluralité de mots codés et o, de plus, plusieurs mots codés sont produits à partir de données du train de données qui sont traitées en parallèle; produire des données codées en réponse à l'information de mots codés, o l'opération de production de données codées comprend l'opération consistant à faire que chaque mot codé de ladite pluralité de mots codés de l'information de mots codés est délivré de façon que l'ordre des mots codés qui sont délivrés est basé sur le début de la partie du train de données représentée par chaque mot codé. 2. Procédé selon la revendication 1, caractérisé en ce que chaque mot codé de la pluralité de mots codés est délivré au début de chaque succession. 3. Procédé selon la revendication 1, caractérisé en ce que l'opération de production de données codées comprend en outre l'opération consistant à combiner des mots codés de longueurs variables en structures de données de longueur fixe. 4. Procédé selon la revendication 3, caractérisé en ce que chacune des structures de données de longueur fixe comprend un mot entrelacé. 5. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre l'opération consistant à délivrer des données codées de façon que les mots codés soient ordonnés suivant l'ordre du décodage. 6. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre l'opération consistant à ordonner les mots codés. 7. Procédé selon la revendication 1, caractérisé en ce que l'opération de production de l'information de mots codés comprend les opérations suivantes: produire l'état de probabilité d'un mot codé; sélectionner un code de génération de bits sur la base de l'état de probabilité, et faire accès à une mémoire pour obtenir une valeur de comptage de succession associée à la classe de probabilité. 8. Système de codage servant à coder un train de données, ledit système de codage étant caractérisé en ce qu'il comprend: un codeur (214-220; 602) couplé de façon à recevoir le train de données pour produire une information de mots codés comportant des mots codés, 106 2725330 o de plus, plusieurs mots codés sont produits par le codeur à partir de données qui sont traitées en parallèle; et une unité de réordonnement (606; 801, 802) couplée au codeur de façon à produire des données codées en réponse à l'information de mots codés, o l'unité de réordonnement réordonne les mots codés produits par le codeur suivant un ordre de décodeur, de sorte que l'ordre des mots codés qui sont délivrés est basé sur le début de la partie du train de données représentée par chaque mot codé. 9. Système de codage selon la revendication 7, caractérisé en ce que l'unité de réordonnement mémorise les mots codés de manière à indiquer la taille des mots codés. 10. Système de codage selon la revendication 9, caractérisé en ce que des mots codés IN sont réordonnés de façon que le bit "1" le plus significatif indique la longueur de chaque mot codé. 11. Système de codage selon la revendication 8, caractérisé en ce que l'unité de réordonnement comprend: au moins une unité (801) de réordonnement de valeurs de comptage de successions servant à produire chaque mot codé de ladite pluralité de mots codés de l'information de mots codés au début de chaque succession; et au moins une unité (802) de mise en paquets des bits servant à combiner des mots codés de longueurs variables en structures de données de longueur fixe. 12. Système de codage selon la revendication 11, caractérisé en ce que chacune des structures de données de longueur fixe comprend un mot entrelacé. 13. Système de codage selon la revendication 8, caractérisé en ce que l'unité de réordonnement ordonne les mots codés. 14. Système de codage selon la revendication 13, caractérisé en ce qu'il comprend en outre une mémoire couplée à l'unité de réordonnement afin de mémoriser des mots codés dans un certain ordre. 15. Système de codage selon la revendication 8, caractérisé en ce que le codeur: un modèle de contexte (214); une machine d'estimation de probabilité (215-217) couplée au modèle de contexte; et une structure de générateur de bits (218-220) couplée à la machine d'estimation de probabilité de façon à produire des mots codés en réponse au train de données. 16. Système de codage selon la revendication 15, caractérisé en ce que le codeur comprend en outre une mémoire mémorisant une pluralité de valeurs de comptage de successions, et en ce qu'il est fait accès à la mémoire à l'aide d'une classe de probabilité délivrée par la machine d'estimation de la probabilité afin de fournir une valeur de la pluralité de valeurs de comptage de successions au générateur de bits en vue de sa délivrance au titre d'une partie de l'information de mots codés. 17. Système de codage selon la revendication 15, caractérisé en ce que la structure de générateur de bits comprend: un générateur de bits servant à fournir une information de mots codés en réponse à un index et à une indication MPS/LPS; et une mémoire couplée au générateur de bits servant à fournir une valeur de comptage de succession au générateur de bits, o le générateur de bits lit la mémoire en fonction de l'index et effectue une génération de bits sur la base des données obtenues lors de la lecture de la mémoire. 18. Système de codage selon la revendication 17, caractérisé en ce que l'information de mots codés comprend un premier signal indiquant si l'indication MPS/LPS comprend le début d'une succession, un deuxième signal indiquant si l'indication MPS/LPS comprend la fin d'une succession, et un signal de sortie de mots codés. 19. Système de codage selon la revendication 11, caractérisé en ce que l'unité de mise en paquets des bits ordonne des mots entrelacés de façon à produire le train de données codées sous la forme de trains entrelacés ordonnés en fonction d'un Nième mot codé précédent dans chaque mot entrelacé de chaque train. 20. Système de codage selon la revendication 11, caractérisé en ce que l'unité de réordonnement comprend un décodeur fouineur servant à sélectionner des mots entrelacés au titre du signal de sortie envoyé dans le train de codes. 21. Système de codage selon la revendication 20, caractérisé en ce que l'unité de réordonnement comprend une pluralité d'unités de réordonnement de valeurs de comptage de successions qui sont couplées à une pluralité d'unités de mise en paquets de bits, o chaque unité de la pluralité d'unité de mise en paquets des bits produit des mots entrelacés et le décodeur fouineur sélectionne un mot entrelacé dans la pluralité de mots entrelacés au titre d'un signal de sortie envoyé dans le train de codes. 22. Système de codage selon la revendication 11, caractérisé en ce que l'information de mots codés comporte un horodatage, et l'unité de réordonnement comprend en outre un circuit logique destiné à délivrer des mots entrelacés sur la base des horodatages associés. 23. Système de codage selon la revendication 22, caractérisé en ce que l'unité de réordonnement comprend une pluralité d'unités de réordonnement de valeurs de comptage de successions qui sont couplées à une pluralité d'unités de mise en paquets de bits, et en ce que, de plus, le circuit logique fait que des mots entrelacés sont délivrés en fonction d'un horodatage associé. 24. Système de codage selon la revendication 23, caractérisé en ce que les mots entrelacés sont délivrés en fonction de l'horodatage le plus ancien. 25. Système de codage selon la revendication 11, caractérisé en ce qu'une unique file d'attente fournit des mots codés à une pluralité d'unités de mise en paquets de bits, et en ce que la pluralité d'unités de mise en paquets des bits produit des mots entrelacés destinés à être délivrés au titre d'une partie du train de codes. 26. Système de codage selon la revendication 25, caractérisé en ce que la file d'attente unique comporte une unique unité de réordonnement de valeurs de comptage de successions, et en ce que le circuit logique détermine le mot entrelacé suivant à délivrer au titre du train de codes. 27. Système de codage selon la revendication 11, caractérisé en ce qu'une unique file d'attente fournit des mots codés à une unique unité de mise en paquets de bits. 28. Système de codage destiné à être utilisé dans un système de compression ayant un décodeur qui sert à décoder une information produite par le codeur, ledit système de codage étant caractérisé en ce qu'il comprend: un codeur (214-220; 602) servant à produire une information de mots codés en réponse à des données; une unité de réordonnement (606; 801, 802) couplée au codeur, o l'unité de réordonnement produit un train de données codées en réponse à l'information de mots codés, l'unité de réordonnement comprenant une unité de réordonnement de valeurs de comptage de successions (801) servant à placer chaque mot codé au début de la donnée qui lui correspond et une unité de mise en paquets de bits (802) couplée de façon à recevoir des mots codés de la part de l'unité de réordonnement de valeurs de comptage de successions pour combiner des mots codés de longueurs variables en une pluralité de mots entrelacés de longueur fixe et pour délivrer la pluraltité de mots entrelacés de longueur fixe suivant un ordre demandé par le décodeur. 109 2725330 29. Système de codage selon la revendication 28, caractérisé en ce que l'unité de réordonnement comprend en outre une mémoire servant à stocker des mots codés pendant le réordonnement. 30. Système de codage selon la revendication 28, caractérisé en ce que le codeur comprend en outre un modèle de contexte (214), un mécanisme d'estimation de probabilité (215-217) qui est couplé au modèle de contexte, et un générateur de train de bits (218-220) qui est couplé au mécanisme d'estimation de probabilité. 31. Système de codage selon la revendication 30, caractérisé en ce que l'unité de réordonnement de valeurs de comptage de successions comprend en outre: une première mémoire destinée à stocker les mots codés; et un premier indicateur et un deuxième indicateur servant à adresser la premiere mémoire à la manière d'une file d'attente, o le premier indicateur pointe sur un premier élément désigné comme étant un signal de sortie de la première mémoire, et le deuxième indicateur pointe sur un deuxième élément désigné comme étant un emplacement de mémorisation disponible suivant et non assigné de la première mémoire. 32. Système de codage selon la revendication 31, caractérisé en ce qu'il comprend en outre une mémoire de pointeur servant à mémoriser une information d'adresse correspondant à des emplacements de la première mémoire qui sont désignés au moment courant pour le stockage de mots codés en liaison avec chaque index. 33. Système de codage selon la revendication 32, caractérisé en ce que chaque index indique une classe de probabilité. 34. Système de codage selon la revendication 32, caractérisé en ce que chaque index indique au moins un contexte. 35. Système de codage selon la revendication 28, caractérisé en ce que l'unité de réordonnement comprend en outre une file d'attente de mémorisation de mots codés servant à stocker des mots codés, un pointeur de tête servant à indiquer au moins un mot codé à délivrer en sortie, et un pointeur de queue servant à indiquer au moins un emplacement de mémorisation destiné à l'insertion de mots codés dans la file d'attente de mémorisation de mots codés. 36. Système de codage selon la revendication 35, caractérisé en ce que chaque élément de mot codé se trouvant dans la file d'attente de mémorisation de mots codés comporte une indication de validité, et en ce que, de plus, un mot codé 2725330 est délivré par la file d'attente de mémorisation de mots codés lorsque le pointeur de tête spécifie l'adresse du mot codé et que l'indication de validité du mot codé indique sa validité. 37. Système de codage selon la revendication 28, caractérisé en ce que l'unité de mise en paquets des bits comprend un circuit logique de mise en paquets des bits servant à recevoir des mots codés de la part de l'unité de réordonnement et à fusionner les mots codés en mots entrelacés pour une pluralité de trains. 38. Système de codage selon la revendication 37, caractérisé en ce que le circuit logique de mise en paquets des bits comprend en outre une pluralité d'accumulateurs et une pluralité de registres, o chaque registre de la pluralité de registres est associé à un accumulateur de la pluralité d'accumulateurs et à un train de la pluralité de trains, chaque registre étant destiné à mémoriser un mot entrelacé pour son train associé et chaque accumulateur indiquant l'emplacement suivant, dans le registre associé, qui est destiné à stocker le mot codé courant pour le train, de sorte que chaque mot codé relatif à un train de la pluralité de trains est annexé au contenu du registre associé au train considéré de la pluralité de trains en fonction de la valeur se trouvant dans l'accumulateur associé. 39. Système de codage selon la revendication 38, caractérisé en ce qu'il comprend en outre un dispositif de décalage couplé à la pluralité d'accumulateurs afin de décaler des mots codés en réponse à au moins un signal venant de la pluralité d'accumulateurs, o les mots codés sont décalés pour être annexés au contenu d'un registre de la pluralité de registres en fonction de la valeur de l'accumulateur en vue de la mise en paquets de parties d'au moins deux mots codés dans chaque mot entrelacé. 40. Système de codage selon la revendication 37, caractérisé en ce qu'il comprend en outre une mémoire de réordonnement destinée à mémoriser des mots entrelacés dans un ordre désigné par le décodeur. 41. Système de codage selon la revendication 40, caractérisé en ce qu'il comprend en outre une pluralité de pointeurs correspondant à une pluralité de trains de données entrelacées, o chaque pointeur de la pluralité de pointeurs désigne un emplacement, dans la mémoire de réordonnement, destiné au mot entrelacé suivant pour chaque train de la pluralité de trains. 42. Système de codage selon la revendication 28, caractérisé en ce qu'il comprend une pluralité d'unités de réordonnement de valeurs de comptage de successions, o chacune des unités de réordonnement de valeurs de comptage de successions est associée à l'un des trains de données codées, et en ce qu'il Ili 2725330 comprend de plus une pluralité d'unités de mise en paquets de bits servant à produire des mots entrelacés pour chaque train de données codées et un décodeur servant à sélectionner, au titre du signal de sortie codé, les mots entrelacés dans la pluralité d'unités de mise en paquets des bits. 43. Système de codage selon la revendication 28, caractérisé en ce qu'il comprend une pluralité d'unités de réordonnement de valeurs de comptage de successions, o chacune des unités de réordonnement de valeurs de comptage de successions est associée à l'un des trains de données codées et produit une pluralité de mots codés ainsi qu'un horodatage associé à chaque mot codé de la pluralité de mots codés, et en ce qu'il comprend de plus une pluralité d'unités de mise en paquets de bits servant à produire des mots entrelacés pour chaque train de données codées et un circuit logique servant à sélectionner chacun des mots entrelacés sur la base des horodatages des mots codés de chacun des mots entrelacés. 44. Système de codage selon la revendication 43, caractérisé en ce que le circuit logique sélectionne le mot entrelacé qui contient le mot codé ayant l'horodatage le plus ancien. 45. Système de codage selon la revendication 28, caractérisé en ce que l'unité de mise en paquets des bits comprend une pluralité d'unités de mise en paquets de bits qui sont couplées de façon à recevoir des mots codés de la part d'un train d'une pluralité de trains, et en ce qu'il comprend en outre un circuit logique servant à sélectionner des mots entrelacés devant être délivrés par chaque unité de la pluralité d'unités de mise en paquets des bits sur la base du train suivant. 46. Système de codage selon la revendication 28, caractérisé en ce que l'unité de réordonnement comprend en outre une mémoire finie. 47. Système de codage pour traitement de données, caractérisé en ce qu'il comprend: un générateur d'index servant à produire des index en fonction des données; et une table d'états couplée de façon à fournir une estimation de probabilité en fonction des indices, o la table d'états comporte une première pluralité d'états et une deuxième pluralité d'états, o chacun des états correspond à un code, et en ce que, de plus, les transitions entre codes différents correspondant à la première pluralité d'états se produisent plus rapidement lors de transition entre états de la première pluralité d'états que les transitions entre codes différents correspondant à la deuxième pluralité d'états lors de transitions entre états de la deuxième pluralité d'états. 112 2725330 48. Système de codage selon la revendication 47, caractérisé en ce que la première pluralité d'états n'est utilisée que pour un nombre prédéterminé d'index. 49. Système de codage selon la revendication 47, caractérisé en ce que la première pluralité d'états n'est utilisée que pour un nombre prédéterminé d'index qui indexent initialement la table d'états. 50. Système de codage selon la revendication 47, caractérisé en ce que chacun des états de la première pluralité d'états est associé à un code R2. 51. Système de codage selon la revendication 48, caractérisé en ce que la première pluralité d'états comporte au moins une transition à la deuxième pluralité d'états, de sorte que la table d'états effectue une transition de la première pluralité d'états à la deuxième pluralité d'états, après le nombre prédéterminé d'index. 52. Système de codage selon la revendication 47, caractérisé en ce que chaque état de la première pluralité d'états est associé à un code différent. 53. Système de codage selon la revendication 47, caractérisé en ce que la table d'états effectue une transition d'un état de la première pluralité d'états à un état de la deuxième pluralité d'états en réponse à un symbole dit le moins probable. 54. Système de codage selon la revendication 47, caractérisé en ce que la table d'états passe à un état augmenté en réponse à un symbole dit le plus probable. 55. Système de codage pour traitement de données, caractérisé en ce qu'il comprend: un générateur d'index servant à produire des index en fonction des données; et une table d'états couplée de facçon à fournir une estimation de probabilité en fonction des index, o la table d'états comporte une pluralité d'états, o chacun des états correspond à un code, et chaque état de la table d'états est répété un nombre prédéterminé de fois; o l'exécution de transitions entre états de la table d'états se produit sur la base d'un terme d'accélération qui peut être modifié, de sorte qu'une première vitesse d'exécution de transitions entre états ayant lieu dans une première période de temps est différente d'une deuxième vitesse d'exécution de transitions ayant lieu pendant une deuxième période de temps. 56. Système de codage selon la revendication, caractérisé en ce que des mises à jour apportées à la table d'états comprennent une modification de l'état du PEM par incrémentation ou décrémentation du terme d'accélération. 113 2725330 57. Système de codage selon la revendication 56, caractérisé en ce qu'aucune accélération adaptative n'a lieu lorsque le terme d'accélération consiste en un nombre prédéterminé. 58. Système de codage selon la revendication 56, caractérisé en ce que le terme d'accélération est mis à jour sur la base du nombre de mots codés consécutifs. 59. Système de codage selon la revendication 58, caractérisé en ce que des mots codés consécutifs comprennent des mots codés consécutifs dans un contexte. 60. Système de codage selon la revendication 58, caractérisé en ce que des mots codés consécutifs comprennent des mots codés consécutifs dans une classe de probabilité. 61. Système de codage selon la revendication 56, caractérisé en ce que le terme d'accélération est mis à jour sur la base du nombre de mots codés qui alternent. 62. Décodeur entropique destiné à décoder un train de données d'une pluralité de mots codés, caractérisé en ce qu'il comprend: une pluralité de générateurs de train de bits destinés à recevoir le train de données; et une table d'états couplée à la pluralité de générateurs de train de bits afin de fournir une estimation de probabilité à la pluralité de générateurs de train de bits, o la pluralité de générateurs de train de bits produit un résultat décodé pour chaque mot codé du train de données en réponse à l'estimation de probabilité à l'aide d'un code Rn(k) pour plusieurs valeurs de n, et o, de plus, la table d'états comporte une première pluralité d'états et une deuxième pluralité d'états, et l'exécution de transitions entre codes différents de la première pluralité d'états, a lieu plus vite lors de transitions dans la première pluralité d'états que l'exécution de transitions entre codes lors de transitions dans la deuxième pluralité d'états. 63. Décodeur entropique selon la revendication 62, caractérisé en ce que les états de la première pluralité d'états contiennent chacun un code R2(k). 64. Décodeur entropique selon la revendication 62, caractérisé en ce que la première pluralité d'états n'est utilisée que pendant l'initialisation. 65. Décodeur entropique destiné à décoder un train de données d'une pluralité de mots codés, caractérisé en ce qu'il comprend;: une pluralité de générateurs de train de bits servant à recevoir le train de données; et une table d'états couplée de façon à recevoir une estimation de probabilité en fonction des indices, o la table d'états comporte une pluralité d'états, chacun des états correspondant à un code, et chaque code de la table d'états étant répété un nombre prédéterminé de fois; o l'exécution de transitions entre états de la table d'états a lieu sur la base d'un terme d'accélération qui peut être modifié, de façon qu'une première vitesse d'exécution de transitions entre états pendant une première période de temps est différente d'une deuxième vitesse d'exécution de transitions pendant une deuxième période de temps. 66. Décodeur entropique selon la revendication 65, caractérisé en ce que chaque code de la table d'états est répété un nombre constant de fois. 67. Décodeur entropique selon la revendication 66, caractérisé en ce que des mise à jour apportées à la table d'états comprennent la modification de l'état du PEM par un terme d'accélération. 68. Décodeur entropique selon la revendication 67, caractérisé en ce qu'aucune accélération adaptative n'a lieu lorsque le terme d'accélération consiste en un nombre prédéterminé. 69. Décodeur entropique selon la revendication 67, caractérisé en ce que le terme d'accélération est mis à jour sur la base du nombre de mots codés consécutifs. 70. Décodeur entropique selon la revendication 67, caractérisé en ce que le terme d'accélération est mis à jour sur la base du nombre de mots codés qui alternent. 71. Décodeur destiné à décoder une pluralité de mots entrelacés, ledit décodeur étant caractérisé en ce qu'il comprend: un dispositif de décalage (1906; 2006) servant à recevoir le train de données et à délivrer des données codées correctement alignées; un décodeur de longueur de succession (1905) couplé au dispositif de déphasage de façon à recevoir les données codées correctement alignées au titre de mots codés en vue de la détermination du type de mots codés; une machine d'estimation de probabilité couplée au décodeur de longueur de succession afin de déterminer le code associé au décodeur de longueur de succession, de sorte que le décodeur de longueur de succession produit une longueur de succession et une indication du fait que le LPS est ou non apparu en réponse à chaque mot codé; 2725330 o le dispositif de décalage comprend un mécanisme de décalage de longueur variable permettant de décaler des mots codés du train de données; et une pluralité de registres couplés de façon à recevoir des mots codés de la part du train en réponse au mécanisme de décalage, de sorte que les données codées alignées sont délivrées sous la forme d'une série de mots codés. 72. Décodeur selon la revendication 71, caractérisé en ce qu'une partie des registres sont couplés de façon à recevoir des données de la part d'un autre registre de la pluralité de registres ou de la part du train de données. 73. Décodeur selon la revendication 71, caractérisé en ce que le mécanisme de décalage variable comporte un dispositif de décalage en barillet servant à décaler des données du train dans la pluralité de registres. 74. Décodeur selon la revendication 71, caractérisé en ce que le dispositif de décalage comprend un FIFO ayant une pluralité de registres, o chacun des registres reçoit des données comme signal d'entrée à partir des données codées entrelacés, et au moins un registre de la pluralité de registres est couplé de façon à recevoir des mots codés de la part d'un autre registre de ladite pluralité de registres. 75. Décodeur selon la revendication 71, caractérisé en ce que le dispositif de décalage comprend: une première pluralité de registres couplés de façon à recevoir des données de mots codés, o chaque registre de la première pluralité de registres est couplé à un train distinct de la pluralité de trains; un multiplexeur couplé de façon à recevoir des données de mots codés de la part de chaque registre de la première pluralité de registres au titre de signal d'entrée et délivrer des mots codés en provenance d'un train de la pluralité de trains, à la fois; un dispositif de décalage en barillet couplé à la sortie du multiplexeur pour décaler les données de mots codés venant du multiplexeur afin qu'elles soient délivrées sous la forme de données codées alignées; un circuit logique couplé au dispositif de décalage en barillet afin d'indiquer un nombre de bits dont il faut décaler le mot codé; et un FIFO ayant une pluralité de registres couplés de façon à recevoir des mots codés de la part dudit multiplexeur (1605), o le FIFO comporte une pluralité de registres, o chaque registre de la pluralité de registre reçoit des données comme signal d'entrée enprovenance des données codées entrelacées et 116 2725330 au moins un registre de la pluralité de registres est couplé de façon à recevoir des mots codés en provenance d'un autre registre de ladite pluralité de registres. 76. Système de décodage destiné à décoder des données, ledit système de décodage étant caractérisé en ce qu'il comprend: une structure FIFO (1401) couplée de façon à recevoir les données; un modèle de contexte (1404) servant à fournir des contextes; une mémoire (1403) couplée au modèle de contexte et servant à mémoriser une information d'état, o la mémoire fournit une information d'état en réponse à chaque contexte fourni par le modèle de contexte; une pluralité de décodeurs (1402) couplés de façon à recevoir des données codées de la part de la structure FIFO et de la mémoire afin de décoder des mots codés fournis par la structure FIFO à l'aide de l'information d'état venant de la mémoire, o la pluralité de décodeurs fournit des valeurs de comptage de successions qui peuvent être produites pour une pluralité de codes. 77. Système de décodage selon la revendication 76, caractérisé en ce que la structure FIFO fournit des données codées à la pluralité de décodeurs indépendamment du contexte et de la classe de probabilité. 78. Système de décodage selon la revendication 76, caractérisé en ce que le décodeur comprend une mémoire de valeurs de comptage de successions servant à stocker des valeurs de comptage de successions, et en ce que, de plus, la mémoire de valeurs de comptage de successions est accessible sur la base de la classe de probabilité. 79. Système de décodage selon la revendication 76, caractérisé en ce que la structure FIFO fournit des données pour deux décodeurs. 80. Système de décodage selon la revendication 76, caractérisé en ce que la structure FIFO comprend une pluralité de sorties, à raison d'une pour chaque décodeur. 81. Système de décodage selon la revendication 80, caractérisé en ce que la structure FIFO comprend une paire de multiplexeurs et un circuit logique de commande permettant de sélectionner la paire de multiplexeurs afin d'assurer qu'un mot codé est fourni à chaque décodeur. 82. Système de décodage selon la revendication 81, caractérisé en ce que les multiplexeurs de la paire de multiplexeurs sont sélectionnés par le circuit logique de commande sur la base de demandes reçues de la part d'un décodeur de la pluralité de décodeurs. 83. Système de codage destiné à coder des données d'entrée, caractérisé en ce qu'il comprend: une unité de codage (602) couplée de façon à recevoir les données d'entrée afin de produire des données codées sous la forme d'une pluralité de trains, o des données codées sont attribuées à un train de la pluralité de trains sur la base d'un ensemble de critères; une mémoire de taille fixe (603) couplée à l'unité de codage afin de mémoriser les trains de la pluralité de trains de données codées, o les données codées de moindre importance sont écartées dans le cas o la mémoire de taille fixe déborde. 84. Système de codage selon la revendication 83, caractérisé en ce que la mémoire comprend une pluralité de zones de mémorisation, et les données codées mémorisées dans chaque zone de la pluralité de zones de mémorisation comprennent des données codées ayant un niveau d'importance distinct. 85. Système de codage selon la revendication 84, caractérisé en ce que des données codées ayant un certain niveau d'importance sont mémorisées dans au moins une zone de mémorisation de la mémoire mémorisant des données codées ayant un autre niveau d'importance. 86. Système de codage selon la revendication 85, caractérisé en ce que les données codées ayant le certain niveau d'importance écrasent des données codées dudit autre niveau d'importance dans ladite ou lesdites zones de mémorisation de la mémoire. 87. Procédé d'initialisation d'une pluralité de contextes dans un système pendant le codage de données, ledit procédé étant caractérisé en ce qu'il comprend les opérations suivantes: initialiser la pluralité de contextes, o il est fait accès à chacun des contextes en fonction d'une valeur de compteur; obtenir un état de PEM pour le contexte courant, o l'opération d'obtention comprend les opérations suivantes: faire accès à une indication de mémorisation pour chaque contexte indiquant l'état de PEM; déterminer si l'emplacement de mémoire auquel il a été fait accès est valable pour une opération courante en comparant le numéro de contexte courant avec la valeur de compteur, la donnée étant déterminée comme valable si la valeur de compteur indique que l'emplacement a déjà été initialisé; 118 2725330 utiliser l'état de PEM initial pour le contexte et ignorer l'état de PEM courant pour un contexte lorsque la donnée de l'emplacement de mémorisation auquel il a été fait accès n'est pas valable; et utiliser l'état de PEM assigné courant pour le contexte si la donnée est valable. 88. Procédé selon la revendication 87, caractérisé en ce qu'il comprend en outre l'opération consistant à écrire un nouvel état de PEM si l'état de PEM a changé. 89. Décodeur destiné à décoder des données d'entrées, caractérisé en ce qu'il comprend: un modèle de contexte servant à fournir un compartiment de contexte; une mémoire couplée au modèle de contexte et servant à fournir un état de probabilité sur la base du compartiment de contexte; un circuit logique couplé à la mémoire et servant à produire une classe de probabilité sur la base de l'état de probabilité; un décodeur couplé au circuit logique et servant à produire un signal d'activation sur la base de la classe de probabilité; une pluralité de générateurs de bits couplés au décodeur et couplés de façon à recevoir les données codées, o chaque générateur de la pluralité de générateurs de bits est spécialement affecté à au moins un code distinct, o le décodeur active un générateur de la pluralité de générateurs de bits sur la base de la classe de probabilité, de sorte que ce générateur de la pluralité de générateurs de train de bits décode les données codées. 90. Décodeur selon la revendication 89, caractérisé en ce qu'au moins un générateur de la pluralité de générateurs de bits décode des données à l'aide d'un code R et au moins un générateur de la pluralité de générateurs de bits décode des données à l'aide d'un code qui n'est pas un code R. 91. Décodeur selon la revendication 89, caractérisé en ce que des générateurs de bits relatifs à des longueurs de successions courtes fonctionnent comme décodeurs à codes R. 92. Décodeur selon la revendication 89, caractérisé en ce que des générateurs de bits destinés à des grandes longueurs de successions comprennent une unité de succession courte et une unité de succession longue, o l'unité de succession courte manipule des codes d'une première longueur prédéterminée et l'unité de succession longue manipule tous les bits restants et détermine lesquels des bits restants, s'il y en a, doivent être délivrés. 119 2725330 93. Procédé de décodage de données d'entrée, caractérisé en ce qu'il comprend les opérations suivantes: fournir un compartiment de contexte; faire accès à une mémoire à l'aide du compartiment de contexte afin d'obtenir un état de probabilité; produire une classe de probabilité sur la base de l'état de probabilité; activer un générateur d'une pluralité de générateurs de bits, o chaque générateur de la pluralité de générateurs de bits est spécialement affecté à un code distinct, de sorte que seul ce code distinct est utilisé pour le décodage, de facçon que ledit générateur de la pluralité de générateurs de train de bits décode les données codées. 94. Système codeur destiné à coder des données d'entrée, caractérisé en ce qu'il comprend: un modèle de contexte servant à fournir un compartiment de contexte; une mémoire couplée au modèle de contexte et servant à fournir un état de probabilité sur la base du compartiment de contexte; un circuit logique couplé à la mémoire et servant à produire une classe de probabilité sur la base de l'état de probabilité; un codeur couplé au circuit logique servant à produire un signal d'activation sur la base de la classe de probabilité; une pluralité de générateurs de bits couplés au décodeur et couplés de façon à recevoir les données d'entrée, o chaque générateur de la pluralité de générateur de bits est spécialement affecté à au moins un code distinct, o le codeur active un générateur de la pluralité de générateurs de bits sur la base de la classe de probabilité, de sorte que ledit générateur de ladite pluralité de générateurs de train de bits code les données d'entrée. 95. Système codeur selon la revendication 94, caractérisé en ce qu'au moins un générateur de la pluralité de générateurs de bits code des données à l'aide d'un code R et au moins un générateur de la pluralité de générateurs de bits code des données à l'aide d'un code qui n'est pas un code R. 96. Système codeur selon la revendication 94, caractérisé en ce que les générateurs de bits pour longueurs de successions courtes fonctionnent comme des codeurs à codes R. 97. Système codeur selon la revendication 94, caractérisé en ce que des générateurs de bits pour grandes longueurs de successions comprennent une unité pour succession courte et une unité pour succession longue, o l'unité pour 2725330 succession courte manipule des codes d'une première longueur prédéterminée et l'unité pour succession longue manipule tous les bits restants et détermine lesquels des bits restants, s'il en existe, doivent être délivrés. 98. Procédé de codage de données d'entrée, caractérisé en ce qu'il comprend les opérations suivantes: fournir un compartiment de contexte; faire accès à une mémoire à l'aide du compartiment de contexte afin d'obtenir un état de probabilité; produire une classe de probabilité sur la base de l'état de probabilité; activer un générateur d'une pluralité de générateurs de bits, o chaque générateur de la pluralité de générateurs de bits est spécialement affecté à au moins un code distinct, de sorte que seul ledit code distinct est utilisé pour le codage, de façon que ledit générateur de la pluralité de générateurs de train de bits code les données d'entrée. 99. Procédé de décodage de données codées comprenant une pluralité de mots codés, ledit procédé étant caractérisé en ce qu'il comprend les opérations suivantes: charger une valeur de comptage dans un compteur associé à chaque compteur de successions, o la valeur de comptage correspond à la taille d'une mémoire de mots codés utilisée pendant le codage lorsqu'une nouvelle succession commence, ladite valeur de comptage étant chargée lorsqu'un nouveau mot codé destiné à chaque dit compteur de successions est extrait; décrémenter la valeur de comptage à chaque fois qu'un mot codé est extrait; et effacer l'état de générateur de bits associé audit nouveau mot codé lorsque le compteur a décrémenté jusqu'à zéro. 100. Procédé selon la revendication 99, caractérisé en ce que chaque compteur de successions correspond à un état de PEM. 101. Procédé selon la revendication 99, caractérisé en ce que chaque compteur de successions correspond à un compartiment de contexte. 102. Procédé de décodage de données comprenant une pluralité de mots codés, ledit procédé étant caractérisé par les opérations suivantes: incrémenter une valeur de compteur à chaque fois qu'un mot codé est demandé, o la valeur de compteur comprend une indication de temps courant; mémoriser la valeur de compteur au titre d'indication de temps mémorisé lorsqu'un premier mot codé commence; 121 2725330 comparer l'indication de temps mémorisé à laquelle on a ajouté la taille d'une mémoire de codeur avec l'indication de temps courant; o l'état de générateur de bits relatif au premier mot codé est effacé et un deuxième mot codé est demandé lorsque l'indication de temps courant dépasse l'indication de temps mémorisé plus la taille de la mémoire du codeur. 103. Procédé selon la revendication 102, caractérisé en ce que l'indication de temps mémorisé comprend un horodatage. 104. Procédé selon la revendication 102, caractérisé en ce qu'il comprend en outre l'opération consistant à réutiliser l'indication de temps mémorisé pour un mot codé venant ensuite. 105. Procédé de décodage de données codées comprenant une pluralité de mots codés, ledit procédé étant caractérisé en ce qu'il comprend les opérations suivantes: mémoriser un index correspondant à un mot codé, o l'index est mémorisé dans une file d'attente et l'index est mémorisé lorsque le mot codé est demandé; repérer comme non valable l'élément correspondant à l'index dans la file d'attente; mémoriser le mot codé dans l'élément et repérer comme valable l'élément si le mot codé est complet; délivrer des données venant de la file d'attente à décoder, o le mot codé est délivré pour être décodé si l'élément de la file d'attente est valable; et délivrer une donnée de l'élément de la file d'attente et indiquer au décodeur que la donnée est non valable si l'élément de la file d'attente est repéré comme non valable lors de la délivrance de la donnée hors de la file d'attente, o l'information d'état de générateur de bits est effacée par le décodeur en réponse à la réception d'une donnée de la file d'attente repérée comme non valable. 106. Décodeur destiné à décoder des données codées, ledit décodeur étant caractérisé en ce qu'il comprend: un mécanisme de modélisation de contexte servant à fournir des contextes, o le mécanisme de modélisation de contexte comprend une pluralité de circuits intégrés, une mémoire couplée au modèle de contexte servant à mémoriser une information d'état, o la mémoire fournit une information d'état en réponse à chaque contexte fourni par le modèle de contexte; et 122 2725330 une pluralité de décodeurs couplés à la mémoire afin de décoder des mots codés à l'aide de l'information d'état venant de la mémoire, o la pluralité de décodeurs décode des mots codés à l'aide d'une pluralité de codes R, la pluralité de codes R comportant au moins une succession, de longueur non maximale, de symboles dits le plus probables, qui n'est pas suivie par un symbole dit le moins probable. 107. Décodeur selon la revendication 106, caractérisé en ce que des valeurs de comptage de successions de longueur non maximale ont un préfixe décodable de facçon unique. 108. Système de décodage d'un train de codes ayant une pluralité de mots codés, ledit système étant caractérisé en ce qu'il comprend: un mécanisme de modélisation de contexte servant à fournir des contextes, o le mécanisme de modélisation de contexte comprend une pluralité de circuits intégrés; une mémoire couplée au modèle de contexte afin de mémoriser une information d'état, o la mémoire fournit une information d'état en réponse à chaque contexte fourni par le modèle de contexte; et une pluralité de décodeurs couplés à la mémoire et servant à décoder des mots codés à l'aide de l'information d'état venant de la mémoire. 109. Système selon la revendication 108, caractérisé en ce que le mécanisme de modélisation de contexte comprend au moins un modèle de contexte fournissant des contextes depuis un premier circuit intégré de la pluralité de circuits intégrés et au moins un modèle de contexte fournissant des contextes depuis un deuxième circuit intégré de la pluralité de circuits intégrés. 110. Système selon la revendication 109, caractérisé en ce que le ou les modèles de contexte placés sur ledit premier circuit intégré de la pluralité de circuits intégrés comprend un modèle de contexte d'ordre zéro. 111. Système selon la revendication 108, caractérisé en ce que des contextes venant de la pluralité de circuits intégrés sont fournis directement à la mémoire. 112. Système selon la revendication 108, caractérisé en ce qu'une première partie d'un premier contexte est fournie par un premier circuit intégré et une deuxième partie du premier contexte est fournie par un deuxième circuit intégré. 113. Système de codage selon la revendication 17, caractérisé en ce que l'état de générateur de bits du générateur de bits est mis à jour, et en ce que, de 123 2725330 plus, le générateur de bits est réutilisé avant que l'état mis à jour ne soit décrit dans la mémoire. 114. Système de codage selon la revendication 113, caractérisé en ce que le générateur de bits est réutilisé pendant la phase modification d'un cycle lecture-modification-écriture. 115. Système de codage selon la revendication 17, caractérisé en ce que le générateur de bits produit une valeur de comptage de succession de longueur non minimale lorsqu'il est réutilisé avant l'écriture d'un état mis à jour dans la mémoire. 116. Système de codage selon la revendication 17, caractérisé en ce que le générateur de bits code des données en utilisant des codes R qui sont définis de façon que chaque longueur de succession soit suivie par au moins un bit non codé, de sorte que deux mots codés de la même longueur de succession ne sont jamais décodés dans une rangée. 117. Système de décodage d'un train de codes ayant une pluralité de mots codés, ledit système étant caractérisé en ce qu'il comprend: un mécanisme de modélisation de contexte servant à fournir des contextes; une mémoire couplée au modèle de contexte servant à mémoriser une information d'état, o la mémoire fournit une information d'état en réponse à chaque contexte fourni par le modèle de contexte; et une pluralité de décodeurs couplés à la mémoire et servant à décoder des mots codés à l'aide de l'information d'état venant de la mémoire, o au moins un décodeur de la pluralité de décodeurs comprend un décodeur tolérant vis-à-vis des retards. 118. Système selon la revendication 115, caractérisé en ce qu'au moins un décodeur de la pluralité de décodeurs effectue un décalage de longueur variable sur la base de données décodées qui sont disponibles après un retard. 119. Système selon la revendication 117, caractérisé en ce que chaque décodeur de la pluralité de décodeurs reçoit comme signal d'entrée des données de longueurs variables. 120. Système selon la revendication 119, caractérisé en ce que les décodeurs de la pluralité de décodeurs décodent des données d'entrée de longueurs variables en parallèle. 121. Système selon la revendication 117, caractérisé en ce que le signal de sortie de la pluralité de décodeurs est divisé en mots entrelacés de longueur fixe.