FR 2545956 A1 19841116 FR 8407428 A 19840514 La présente invention concerne un appareil de décodage de données codées dans le schéma des longueurs de suites. Dans un schéma de codage en longueurs de suites, la donnée à coder est divisée en suites, c'est-à-dire en chaînes de signaux d'une même valeur, et chaque suite est représentée par un code de longueurs de suites indiquant le nombre de signaux dans la suite Par exemple, les signaux peuvent être des nombres binaires (bits), auquel cas le code de longueurs de suites représente le nombre de " 1 " ou de " O " binaires dans la suite. Le codage par longueurs de suites est souvent utilisé pour coder par exemple des données d'images mises sous forme numé- rique, représentant un texte ou un graphique Ces données sont typiquement caractérisées par l'existence de grandes longueurs de suites entre transitions, de sorte qu'un codage par longueurs de suites peut entraîner une compression importante du nombre des signaux nécessaires à la représentation d'une image Cette compres- sion permet de réaliser une économie correspondante pour la place d'emmagasinage, et, ou bien, le temps de transmission des données. Une manière classique d'effectuer le décodage d'un signal codé par longueurs de suites consiste à charger dans un compteur le code de longueurs de suites, puis à décompter jusqu'à zéro, tout en délivrant un signal ayant la valeur voulue à chaque comptage Lorsque le compteur atteint zéro, une transition est faite à une autre valeur de comptage, le compteur est chargé au moyen du code suivant de longueurs de suites, et le processus se répète. Pour réaliser en temps réel une visualisation de haute qualité (de haute résolution), il est nécessaire de fournir les données à l'unité de visualisation (par exemple un écran à tube cathodique à balayage d'image) avec une vitesse très élevée. Le décodeur de longueurs de suites doit donc être en mesure de décoder les données avec une vitesse élevée Ceci demande utilisation de circuits rapides et, par conséquent, coûteux Plus spécialement, un décodeur de longueurs de suites classique demande un compteur *pouvant compter à la vitesse des éléments d'image du dispositif de visualisation. Le brevet britannique no 1 598 343 décrit un dispo- sitif de décodage de longueurs de suites dans lequel des groupes de N signaux sont délivrés en parallèle pour permettre une réduc- tion, par le facteur N, de la vitesse voulue de fonctionnement des circuits de décodage Toutefois, dans ce brevet,des codes spéciaux, appelés codes de transition, sont nécessaires, en plus des codes normaux de longueurs de suites, pour préciser le contenu des groupes dans lesquels des transitions ont lieu. Un but de l'invention est de proposer un appareil de décodage de longueurs de suites dans lequel il est obtenu une réduction de la vitesse nécessaire de fonctionnement sans qu'il soit besoin de codes de transition spéciaux. Selon l'invention, il est proposé un appareil de décodage de données codées par longueurs de suites comprenant: (a) une entrée destinée à recevoir une succession de codes de longueurs de suites représentant chacun la longueur d'une suite de signaux de même valeur, (b) une sortie destinée à délivrer une succession de groupes de signaux, chaque groupe contenant un nombre N prédé- terminé de signaux qui sont délivrés *en parallèle, (c) un registre de position qui emmagasine l'indi- cation de la position, à l'intérieur d'un groupe de signaux, de la dernière transition entre valeurs des signaux, (d) un moyen de calcul qui utilise le contenu du registre de position et le code de longueurs de suites reçu pour calculer le nombre x de groupesà délivrer avant la transition suivante, et la position de la prochaine transition à l'intérieur du groupe, et (e) un moyen logique qui produit la transition pour la position calculée après que le nombre x calculé de groupesa été délivré. On peut voir que l'invention ne demande en entrée que des codes normaux de longueurs de suites et ne fait pas appel à des codes de transition spéciaux pour indiquer les positions des transitions à l'intérieur des groupes de sortie. La description suivante, conçue à titre d'illustration de l'invention, vise à donner une meilleur compréhension de ses caractéristiques et avantages; elle décrit un mode de réalisation dans lequel les données sont binaires et sont délivrées sous forme d'une succession de bytes de 8 bits, c'est-à-dire que N = 8, en s'appuyant sur les dessins annexés, parmi lesquels: la figure 1 est un schéma de principe d'un dispositif de visualisation d'image sous forme numérique qui comprend un décodeur de longueurs de suites selon l'invention la figure 2 est un schéma logique du décodeur de longueurs de suites; la figure 3 est un schéma logique d'une unité logique de sortie faisant partie du décodeur de longueurs de suites; la figure 4 est un organigramme illustrant le fonc- tionnement du décodeur de longueurs de suites; et la figure 5 est un schéma logique d'un décodeur de configurations de masquage Jfaisant partie du décodeur de longueurs de suites. Vue d'ensemble Sur la figure 1, il est représenté un dispositif d'affichage de graphiques qui reçoit des données d'image codées. Les données d'entrée peuvent par exemple provenir d'un dispositif d'emmagasinage, ou bien elles peuvent être reçues d'un canal de transmission. Les données d'entrée sont doublement codées, d'abord au moyen d'un code de longueurs de suites, puis au moyen d'un schéma de codage de Huffmann Le codage de Huffmann est bien connu dans la technique et ne fait pas partie de l'invention, si bien qu'il ne sera pas décrit. Les données d'entrée sont d'abord décodées à l'aide d'un circuit décodeur de Huffmann 10, et les données codées par longueurs de suites résultantes sont placées dans un tampon Il du type délivrant ses signaux de sortie dans l'ordre chronologique d'entrée Le sign al de sortie du tampon Il est délivré à un décodeur 12 de longueurs de suites selon l'invention Le décodeur de longueurs de suites 12 produit un signal de commande MAINT à destination du tampon Il; lorsque MAINT est au niveau haut (c'est- à-dire MAINT = 1),le tampon 11 maintient statiquement son signal de sortie et, lorsque MAINT est au niveau bas (MAINT = 0), le tampon est autorisé à avancer à son signal de sortie suivant. Le signal de sortie décodé venant du décodeur de longueurs de suites 12 est délivré à un tampon 13 d'image complète en même temps qu'un signal de commande VAL indiquant si le signal de sortie du décodeur 12 est ou non valable Lorsque VAL = 1, le signal de sortie est accepté par le tampon d'image complète 13. Le tampon d'image complète maintient une image complète de données d'image, en vue de sa délivrance à un dispositif à tube à rayons cathodiques à balayage d'image 14. Schéma de codage par longueurs de suites Le schéma de codage par longueurs de suites utilise des mots code de deux types différents: des mots code de fin et des mots code d'établissement Chaque mot code possède sept bits, le premier bit étant un bit de commande (MCE) qui indique s'il s'agit d'un mot code de fin (MCE = 0) ou d'un mot code d'établis- sement (MCE = 1) Les six autres bits forment un code de longueur (LON). Les longueurs de suites courtes, c'est-à-dire jusqu'à 63 bits, sont codées par un unique mot code de fin, le code de longueur étant égal au nombre de bits de la suite Les longueurs de suites plus grandes ( 64 bits ou plus) sont représentées par un mot code d'établissement suivi d'un mot code de fin Le mot code d'établissement représente la longueur d'une suite en multiples de 64 bits, tandis que le mot code de fin représente le reste (éventuellement zéro) Il faut noter qu'un mot code d'éta- blissement est toujours suivi d'un mot code de fin, et ne peut terminer une suite. Ainsi, par exemple, une longueur de suite de 201 bits sera représentée par le mot code d'établissement 1 000011 ( 3 fois 64 bits) suivi du mot code de fin 0,001001 ( 9 bits). Décodeur de longueurs de suites On se reporte à la figure 2, qui représente de manière détaillée le décodeur de longueursde suites 12 Le décodeur de lon- gueurs de suites contient un registre de sortie 20 qui maintient un byte de 8 bits Ce registre est chargé à chaque battement d'un signal d'horloge de 10 M Hz au moyen d'un byte fourni par un circuit logique de sortie 21 Si le signal de commande VAL est égal à " 1 ", le byte est alors délivré, au battement d'horloge suivant, au tampon d'image complète 13 Le circuit logique de sortie 21 est décrit de manière détaillée ci-dessous en relation avec la figure 3. Le décodeur de longueurs de suites comporte également un compteur 22 à neuf étages qui maintient le nombre de bytes à délivrer venant du registre 20 avant la transition suivante Un registre 23, appelé registre de position de bit, maintient un code de 3 bits représentant la position de bit à l'intérieur du byte pour laquelle a lieu la transition suivante Par exemple, si le registre 23 de position de bit maintient le code 011 (soit 3 en notation décimale), ceci indique que la transition suivante se produira après le troisième bit du byte considéré. Tous les étages du compteur 22 sont connectés à une porte NI 24 produisant un signal de commande CZ; "CZ = 1 ' indique que le contenu du compteur est entièrement constitué de valeurs " O ". Ce signal est inversé pour produire les signaux MAINT et VAL à destination des tampons il et 13 (voir figure 1) ci-dessus mentionnés. Le contenu du registre de position de bits 23 est délivré à une porte NI 25 afin de produire un signal de commande BZ. Ainsi, "BZ = 1 " indique que le contenu du registre 23 est entière- ment constitué de valeurs " O ", c'est-à-dire que la transition suivante aura lieu à la frontière entre deux bytes Le signal de sortie du registre 23 est également délivré à un circuit déco- deur 26 qui produit une configuration de masquage à 8 bits cons- tituée de valeurs " O " et " 1 ", une transition ayant lieu à la posi- tion de bit indiquée par le contenu du registre 23 Les signaux de sortie du circuit décodeur sont représentés sur le tableau 1 ci-dessous. Tableau 1 Registre 23 Configuration de masquage 000 11111111 001 01111111 00111111 011 00011111 Tableau 1 (suite) Registre 23 Configuration de masquage 00001111 101 00000111 110 00000011 111 00000001 Le circuit décodeur 26 est décrit de manière détaillée ci-dessous en relation avec la figure 5. En fonctionnement, le compteur 22 est normalement décrémenté d'une unité à chaque battement du signal d'horloge, au moyen d'un signal de commande COMPT Toutefois, lorsque le compteur atteint zéro, le signal COMPT suivant est supprimé et, à sa place, un signal CIIARG est produit Ceci provoque le chargement de valeurs nouvelles dans le compteur 22 et le registre 23 Ces valeurs nouvelles sont obtenues à partir du mot code d'entrée au moyen de multi- plexeurs 27 et 28 et d'un additionneur 29 à 6 étages. Les multiplexeurs sont tous deux commandés par le bit de commande MCE du mot code d'entrée Lorsque MCE = 0, le multiplexeur 27 sélectionne le code de longueur LON présentement appliqué en entrée et le multiplexeur 28 sélectionne un signal d'entrée de 6 bits dans lequel les 5 bits les plus significatifs sont obtenus par câblage sur une tension représentant une valeur " O ", le sixième bit étant obtenu par connexion à la sortie de report C de l'additionneur 29 Lorsque MCE = 1, le multiplexeur 27 sélec- tionne un signal d'entrée à 6 bits, tous constitués de valeurs " O ", et le multiplexeur 28 sélectionne le code de longueur LON. Le signal de sortie du multiplexeur 27 est délivré à une entrée de l'additionneur 29, son autre entrée recevant le signal de sortie du registre de position de bit 23 Les trois bits les moins significatifs du signal de sortie de l'additionneur sont appliqués au registre 23, tandis que les trois bits les plus signi- ficatifs vont aux trois étages les plus significatifs du compteur 22. Le signal de sortie du multiplexeur 28 est appliqué aux six étages les plus significatifs du compteur 22. Ainsi, si le mot code d'entrée est un mot code de fin (MCE = 0), le code de longueur LON s'ajoute au contenu existant du registre 23 Alors, au signal CHARG suivant, les trois bits les moins significatifs du résultat sont écrits dans le registre 23, et les quatre bits les plus significatifs (comprenant le bit de report C) sont écrits dans le compteur 22 Si le mot code d'entrée est un mot code d'établissement (MCE = 1), le code de longueur LON subit un décalage vers la gauche de six places (ce qui correspond à une multiplication par 64) de la part du multiplexeur 28 avant d'être écrit dans le compteur, et, dans ce cas, le contenu du registre 23 reste sans changement. On peut voir que les multiplexeurs 27 et 28 et l'additionneur 29 utilisent le mot code d'entrée pour calculer t (a) le nombre de bytes à délivrer avant la transition suivante, et (b) la position du bit, à l'intérieur du byte, pour laquelle la transition a lieu. Au signal CHARG, le nombre de bytes calculé est chargé dans le compteur 22 et la position de bit calculée est chargée dans le registre 23. Par exemple, on suppose que le registre de position de bit 23 maintient la valeur 011 On suppose alors que le mot code d'entrée suivant est 0 101011, c'est-à-dire qu'il s'agit d'un mot code de fin représentant une longueur de suite de 43 bits. L'additionneur 29 effectue alors l'addition suivante + 011 Au signal CHARG, les trois premiers bits du résul- tat ( 101) sont chargés dans le compteur, ce qui indique qu'il y a cinq bytes à délivrer avant la transition suivante Dans le même temps, les trois derniers bits ( 110) sont chargés dans le registre 23, ce qui indique que la transition aura lieu-après le sixième bit du byte. Circuit logique de sortie On se reporte maintenant à la figure 3, qui repré- sente de manière détaillée le circuit logique de sortie 21. Ce circuit comporte un décodeur 3:8 classique, désigné par la référence 30, qui est commandé par les trois signaux MCE, BZ et CZ ci-dessus mentionnés Seuls deux des signaux de sortie, soit Dl et D 3, de ce décodeur sont utilisés Ces deux signaux de sortie sont normalement au niveau haut, représenté par la valeur binaire " 1 " Dl passe au niveau bas si MCE = O, BZ = O et CZ = 1, tandis que D 3 passe au niveau bas si MCE = 0, BZ = 1 et CZ = 1. Le signal Dl commande un multiplexeur 2:1 désigné par la référence 31; lorsque Dl = 0, le multiplexeur 31 sélectionne un premier ensemble de huit entrées qui sont connectées à huit portes OU exclusif 32, et, lorsque Dl = 1, il sélectionne un deuxième ensemble d'entrées qui sont connectées à la sortie d'une porte d'équivalence 33 unique. Les portes OU exclusif 32 possèdent chacune deux entrées Les entrées situées à droite sont connectées aux bits respectifs du registre de sortie 20, tandis que les entrées situées à gauche reçoivent la configuration de masquage à 8 bits venant du décodeur de masquage 26 (figure 2). La porte d'équivalence 33 possède deux entrées qui reçoivent le bit le moins significatif du registre de sortie 20 et le signal D 3 du décodeur 30. Le signal de sortie du multiplexeur 31 est le signal de sortie du circuit logique 21 et il est délivré au re- gïstre de sortie 20 On peut voir que ce signal de sortie dépend des états des signaux de commande MCE, BZ et CZ, ainsi que du contenu existant du registre de sortie, dans la manière ci-dessous indiquée. 1) Si CZ = O ou si MCE = 1, les deux signaux Dl et D 3 sont au niveau haut, si bien que le multiplexeur 31 sélectionne le signal de sortie de la porte d'équivalence 33, lequel est, dans ce cas, égal au bit le moins significatif du registre de sortie 20. Par conséquent, le registre de sortie 20 est chargé au moyen d'un byte dont les bits sont tous égaux au bit le moins significatif de son contenu actuel. 2) Si M E = O, BZ = 1 et CZ = 1, alors le signal D 3 passe au niveau bas Ceci amène la porte d'équivalence 33 à inverser le bit venant du registre de sortie Par conséquent, dans ce cas, le registre de sortie 20 est chargé au moyen d'un byte dont les bits sont tous égaux à l'inverse du bit le moins significatif de son contenu actuel. 3) Si MCE = 0, BZ = O et CZ = 1, le signal Dl passe alors au niveau bas Ceci amène le multiplexeur 31 à sélectionner les signaux de sortie des portes OU exclusif 32 Alors, le registre de sortie est chargé au moyen d'un byte formé par l'addition bit à bit modulo 2 du contenu actuel du registre de sortie avec la configuration de masquage venant du circuit décodeur 26 (comme indiqué dans le tableau 1 ci-dessus) Ceci a pour effet d'inverser tous les bits du registre de sortie qui font suite à la position de bit indiquée par le registre 23. Par exemple, si le registre de sortie ne contient que des valeurs " 1 " et si le registre de position de bit 23 maintient la valeur 011 (soit 3 en notation décimale), alors X l'addition modulo 2 est la suivante registre de sortie 1111 1111 configuration de masquage 0001 1111 OU exclusif = 1110 0000 On peut voir que tous les bits venant après le troisième sont inversés. Fonctionnement On va maintenant décrire le fonctionnement du décodeur de longueurs de suites 12 en relation avec l'organi- gramme de la figure 4 Sur cette figure, les boîtes en forme de losange représentent des décisions de commande, en fonction des valeurs des signaux de commande MCE, BZ et CZ, tandis que les bottes rectangulaires représentent des opérations. Boite 41: Si le compteur n'a pas encore atteint la valeur "O" (CZ = O), le signal VAL est au niveau haut si bien que le contenu actuel du registre de sortie 20 est délivré au tampon d'image complète lors du battement d'horloge suivant. Botte 42: Le registre de sortie est ensuite chargé au moyen d'un byte nouveau venant du circuit logique de sortie 21. Puisque CZ = O, tous les bits de ce byte nouveau sont constitués du dernier bit (le moins significatif) du byte actuel. Boite 43: Dans le même temps, le compteur 22 est décrémenté d'une unité, par le signal COMPT La boucle correspondant aux boîtes 41-43 se répète à chaque battement d'horloge jusqu'à ce que le compteur 22 atteigne une valeur "o". Botte 44: Lorsque le compteur atteint la valeur " O " (CZ = 1), si le mot code actuel est un mot code de fin (MCE = 0) et si la transition suivante se trouve à la frontière du byte actuel et du byte suivant (BZ = 1), alors le registre de sortie 20 est chargé au moyen d'un byte dont les bits sont tous égaux à l'inverse du dernier bit du byte actuel. Boite 45: Au contraire, si la transition se trouve à l'intérieur du byte suivant (BZ = 0), le registre de sortie 20 est chargé au moyen de l'addition modulo 2 du contenu actuel et de la configuration de masquage venant du décodeur 26 Ceci produit un byte présentant une transition à la position voulue. Boite 46: Si le mot code actuel est un mot code d'établissement (MCE = 1), la fin de la suite n'a pas encore été atteinte, puisque, comme ci-dessus mentionné, un mot code d'éta- blissement doit toujours être suivi par un mot code de fin Par conséquent, dans ce cas, le registre de sortie est chargé au moyen d'un byte dont tous les bits sont égaux au dernier bit du byte courant. Boite 47: Puisque le compteur a maintenant atteint la valeur " O ", un signal CHARG est produit Ceci amène le charge- ment respectif du byte et de la position de bit de la transition suivante dans le compteur 22 et le registre de position de bit 23. Ensuite, la séquence se répète. Il faut noter que le système décrit permet de traiter des situations ou plus d'une transition se produit à l'intérieur du même byte Dans ce cas, le compteur 22 reste à zéro pendant plus d'un battement d'horloge A chacun de ces battements d'horloge, le contenu du registre de sortie 20 est additionné modulo 2 (opé- ration effectuée par une porte OU exclusif) avec la configuration de masquage venant du décodeur 26 (boîte 45) afin de produire une autre transition dans le byte Pendant ce temps, aucun byte n'est délivré par le registre 20, puisque le compteur 22 est toujours à zéro Finalement, un code de longueur est reçu qui amène le compteur 22 à se positionner sur une valeur non nulle, après quoi le byte contenant les transitions multiples est délivré (boîte 41). Décodeur de configuration de masquage On se reporte maintenant à la figure 5, qui représente de manière détaillée le décodeur 26 de configuration de masquage. Le décodeur est constitué de deux multiplexeurs 2:1 désignés par les références 50 et 51 Le multiplexeur 50 délivre les quatre bits les plus significatifs de la configuration de masquage, tandis que la sortie (inversée) du multiplexeur 51 délivre les quatres bits les moins significatifs. Le signal de sortie du registre 23 de position de bit est représenté sous forme de trois bits RI, R 2, R 3, Le bit RI le plus significatif commande la validation (VA) des multiplexeurs, le multiplexeur 50 étant validé lorsque R= O et le multiplexeur 51 étant validé lorsque RI = 1 Le bit moyen R 2 est appliqué à l'entrée de sélection (SE) des deux multiplexeurs de façon que, lorsque R 2 = 0, l'entrée située à gauche soit sélectionnée et, lorsque R 2 = 1, l'entrée située à droite soit sélectionnée. Les entrées des deux multiplexeurs sont câblées de façon à recevoir des configurations de tensions de niveau haut (valeur binaire 'l" 1) et de niveau bas (valeur binaire "O"), et le bit R 3 le moins significatif, de la manière indiquée sur la figure. On peut facilement voir en examinant la figure 5 que ceci produit en sortie les configurations de masquage voulues qui sont repré- sentées sur le tableau 1. Bien entendu, l'homme de l'art sera en mesure d'imaginer, à partir de l'appareil 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. R E y E N D I C A T I O N S 1 Appareil de décodage de données codées par longueurs de suites, comprenant: (a) une entrée destinée à recevoir une succession de codes de longueurs de suites qui représentent chacun la longueur d'une suite de signaux de même valeur, et (b) une sortie destinée à délivrer une succession de groupes de signaux, chaque groupe contenant un nombre N pré- déterminé de signaux qui sont délivrés en parallèle, caractérisé par (a) un registre de position ( 23) qui emmagasine une indication de la position, à l'intérieur d'un groupe de signaux, de la dernière transition entre valeurs de signaux, (b) un circuit de calcul ( 29) qui utilise le contenu du registre de position ( 23) et le code de longueurs de suites reçu (LON) pour calculer le nombre x de groupesà&délivrer avant la transition suivante, et la position de cette transition suivante à l'intérieur du groupe, et (c) un circuit logique ( 21, 26) qui produit la transition à la position calculée après que le nombre x calculé de groupes a été délivré. 2 Appareil selon la revendication 1, caractérisé en ce que le circuit de calcul ( 29) comprend un additionneur qui additionne le code de longueurs de suites reçu (LON) au contenu du registre de position ( 23) afin de produire un résultat dont la partie la plus significative indique le nombre x de groupesà délivrer avant la transition suivante et dont'la partie la moins significative indique la position de la transition suivante à l'intérieur du groupe. 3 Appareil selon la revendication 1 ou 2, caractérisé en ce que le circuit logique comprend: (a) un circuit décodeur ( 26) produisant une confi- guration de masquage binaire qui consiste en N bits avec une transition entre valeurs binaires à la position calculée, et (b) un circuit logique de sortie ( 21) combinant la configuration de masquage avec le dernier groupe de signaux à délivrer. 4 Appareil selon la revendication 1, 2 ou 3, carac- térisé en ce qu'il comporte un registre de sortie ( 20) qui maintient un groupe de N signaux et un compteur ( 22) qui compte le nombre x et, à chaque comptage, délivre le contenu du registre de sortie ( 20), puis positionne chaque signal se trouvant dans le registre de sortie ( 20) sur une valeur égale à la valeur du dernier signal contenu dans celui-ci. Appareil selon l'une quelconque des revendications 1 à 4, caractérisé en ce que lesdits signaux sont des nombres binaires.