FR2703483A1 - Dispositif de mise à jour de la valeur de code dans la méthode du codage arithmétique. - Google Patents

Dispositif de mise à jour de la valeur de code dans la méthode du codage arithmétique. Download PDF

Info

Publication number
FR2703483A1
FR2703483A1 FR9303590A FR9303590A FR2703483A1 FR 2703483 A1 FR2703483 A1 FR 2703483A1 FR 9303590 A FR9303590 A FR 9303590A FR 9303590 A FR9303590 A FR 9303590A FR 2703483 A1 FR2703483 A1 FR 2703483A1
Authority
FR
France
Prior art keywords
cells
register
multiplexer
diagonal
adders
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9303590A
Other languages
English (en)
Other versions
FR2703483B1 (fr
Inventor
Printz Harry William
Stubley Peter
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Compaq Computer Holding Ltd
Original Assignee
Digital Equipment International Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment International Ltd filed Critical Digital Equipment International Ltd
Priority to FR9303590A priority Critical patent/FR2703483B1/fr
Priority to US08/216,741 priority patent/US5592162A/en
Publication of FR2703483A1 publication Critical patent/FR2703483A1/fr
Application granted granted Critical
Publication of FR2703483B1 publication Critical patent/FR2703483B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

L'invention concerne un dispositif de mise à jour de la valeur de code d'un système de codage arithmétique, qui comprend une grille de n x n cellules prises parmi quatre cellules de base: - n(n-1)/2 cellules ad, au-dessus de la diagonale principale de la grille, comprenant un multiplexeur (33); - n-1 cellules d, sur cette diagonale principale comprenant un additionneur (31) et un multiplexeur (30) et au moins un registre (32); - une cellule fd, d'extrémité basse de la diagonale comprenant un additionneur (31) et un multiplexeur (30) et au moins un registre 32; - n(n-1)/2 cellules or, de recadençage de sortie comprenant un registre (35); la limite inférieure de la période d'horloge étant telle que (CF DESSIN DANS BOPI) taum u x , taua d d étant les temps d'établissement des multiplexeurs et des additionneurs; taup r o p le délai nécessaire pour un signal pour se propager à travers la largeur d'une cellule; Xm a x le plus grand décalage possible.

Description

I "Dispositif de mise à jour de la valeur de code dans la méthode du
codage arithmétique"
DESCRIPTION
Domaine technique La présente invention concerne un dispositif de mise à jour de
la valeur de code dans la méthode du codage arithmétique.
Etat de la technique antérieure Explication générale du codage arithmétique Comme décrit dans les articles de Glen G Langdon, Jr intitulé "An Introduction to Arithmetic Coding" (IBM Journal of Research and Development, 28 ( 2): 135-149, mars 1984), le codage arithmétique est une
méthode bien connue de compression de données sans perte d'information.
Le codage arithmétique établit une correspondance entre une suite de symboles dans un intervalle de nombres réels On commence avec l'intervalle l 0,1 l Lorsque chaque symbole est codé, l'intervalle courant est remplacé par un sous-intervalle de celui-ci Après le codage d'une suite de symboles, la suite originale peut être reconstruite exactement, n'importe quel
point dans l'intervalle courant étant donné.
Dans ce type de codage il est usuel de mémoriser le point le plus à gauche de l'intervalle comme résultat, la valeur obtenue étant appelée
valeur du code.
Cet algorithme de codage est récursif Pour chaque symbole à coder, l'algorithme partage l'intervalle courant en fonction des probabilités
d'occurence et de l'ordre donné par la liste des symboles qui peuvent être codés.
Puis l'algorithme remplace l'intervalle courant par le sous-intervalle correspondant au symbole à coder Cette procédure est répétée autant de fois
que nécessaire pour coder une séquence donnée.
Explication mathématique du codage arithmétique Jusqu'ici on a donné une explication géométrique du codage arithmétique On parle des intervalles et leur sous-division Pour la mise en oeuvre dans un ordinateur, il faut expliquer la méthode en utilisant les quantités
numériques Cette explication est donnée maintenant.
Dans la description qui va suivre, on adopte les désignations
suivantes: S = {So, S 1, si p(si) P(si) Ai R Xi Xmax Ri Ci i Bl Tk s N-1} ensemble de N symboles pouvant être codés symbole à coder à étape i probabilité modélisée du symbole probabilité cumulée modélisée du symbole taille de l'intervalle courant plage de valeurs admissibles de Ai décalage pour porter p(si) Ai dans R la valeur maximum possible de Xi cumulande de P(si) Ai valeur du point de code courant (emplacement de l'extrémité gauche de l'intervalle) somme Ci + Ri non décalée 1 + Xi bits de sortie
bloc de longueur fixe.
Comme expliqué plus haut, à chaque étape, l'état du codeur est donné par un sous-intervalle de l'ensemble l 0,1 l Le processus pour coder un symbole consiste à remplacer l'intervalle courant par un sous-intervalle de lui-même. Pour représenter l'intervalle courant dans un ordinateur, on maintient à jour deux quantités arithmétiques: Ci, le point plus à gauche de l'intervalle et Ai la taille de l'intervalle Donc à chaque étape l'intervalle actuel et
lCi, Ci + Ail.
Ainsi, le processus donné plus haut pour coder un symbole est exprimé par ces équations: Ai+ 1 = p(si) Ai Ci+l = Ci + P(si) Ai ( 1) ( 2) o p(si) est la probabilité modélisée du symbole si, et P(si) est la somme des probabilités de tous les symboles qui précèdent si dans la liste de l'alphabet de source
P(sk) = p(s J).
j<k Ces équations représentent arithmétiquement le même processus de sous-division et de sélection décrit ci-dessus La première est relative à la récurrence de la taille de l'intervalle, et la seconde à la récurrence de
la valeur du code.
O 10 Explication d'algorithme de précision finie pour le codage arithmétique Ces équations supposent une arithmétique d'une précision infinie Pour la mise en oeuvre d'un codage arithmétique sur des opérations arithmétiques de précision finie, on utilise l'approche de Frank Rubin dans un article intitulé "Arithmetic Stream Coding Using Fixed Precision Registers" (IEEE Transactions on Information Theory, IT- 25 ( 6): 672-675, novembre 1979) On fixe le nombre de bits qui sont utilisés pour représenter chacun des si, Ri, Ai, Ci, p(si) et P(si); on désigne ces quantités par #s, #R, #A, #C, #p et #P Il y a lieu de noter que #P = #p On choisit aussi la plage R = la, 2 cl, o a > 0, des taille d'intervalles admissibles On s'assure alors que l'on a toujours Ai e R; pour cela, à chaque étape du codage on effectue les opérations suivantes: 1 Obtenir P(si) et P(si) Calculer exactement P(si) Ai 2 Déterminer le décalage Xi tel que P(Si)Ai 2 Xi e R 3 Trouver l'approximation inférieure sur #A-bit la plus proche de P(si) Ai 2 Xi;ceci donne Ai+ 1 4 Calculer exactement Ri = P(si) Ai Calculer exactement Ci = Ci+P(si) Ai 6 Emettre le bit de retenue et les Xi bits les plus significatifs de (i; ceci forme le bloc de taille variable Bl Notez que les définitions des quantités dans l'algorithme déterminent certaines relations de longueur:
par définition de probabilité cumulée #P = #p.
par étapes 1 et 2, Xma= #p, par étape 4, #R = #P + #A = #p +#A, par étape 6, #B = 1 + Xmax = 1 + #p (la taille des Bis sont variables, mais il faut assez de bits pour représenter la plus longue valeur de Bl possible),
par étape 7, #C = #R = #p + #A.
Donc les paramètres #p et #A déterminent la longueur de
toutes les autres quantités dans ces équations.
On a ainsi expliqué comment la suite de blocs de taille variable Bi est engendré par l'algorithme Chaque bloc contient 1 +Xi bits, consistant en la
retenue de sortie et des Xi bits les plus significatifs de la somme Ci = #C-bits.
Ces blocs de longueur variable peuvent alors être assemblés en une séquence de blocs de longueur fixe Tk La séquence des blocs Tk constitue le flux de codage de sortie Le processus d'assemblage est fait par une méthode standard
qui ne nous concerne pas dans la suite du document actuel.
On peut résumer les étapes 1 à 7 de l'algorithme de précision finie cidessus par les équations: Ai+l, Xi = f (p(si)Ai) ( 3) (Ci+l, Bi) = g(Ci, Ri, Xi) ( 4)
La fonction f effectue les étapes 1 à 4 mentionnées ci-dessus.
La fonction g effectue les étapes 5 à 7.
Ex Dlication de l'état de la technique antérieure de la mise à iour de la valeur du code L'actualisation de la valeur de code Ci est décrite par l'équation ( 4) en haut La figure 5 représente la structure d'une unité qui peut réaliser cette équation Ci est la valeur de code actuel Ri est le produit P(si) Ai, et Xi est le montant de décalage; tous les deux sont obtenus de l'unité de mise à jour de taille d'intervalle (pas représenté dans cette figure) L'additionneur 19 calcule la somme i = Ri + Ci Le décaleur 20 enlève le bit de retenue de cette somme, et les Xi bits les plus significatifs, qui deviennent la quantité Bl et décale par Xi les
bits restants, qui deviennent la nouvelle valeur de Ci.
Compte tenu de la boucle existant dans l'unité de la figure 5, qui va du registre 14 à travers l'additionneur, le décaleur, puis à nouveau vers le registre 14, la période d'horloge T d'un circuit suivant cet agencement doit satisfaire à l'inégalité T 2 Tcarry (#C) + Tshift (Xmax) ( 5) si l'égalité ( 5) n'est pas respectée, on risque d'enregistrer une valeur incorrecte pour quelques bits de Ci Ici, carry(n) est le temps nécessaire à la propagation du report à travers un additionneur à N bits, et Tshift(m) est le temps nécessaire pour le passage de la somme en résultant à travers une structure qui peut effectuer un décalage pouvant atteindre m bits (comme noté plus haut, #C est
égal à #A + #p, et Xmax est égal à #p).
Il y a deux méthodes bien connues pour accélérer la logique digitale synchrone, comme celle de la figure 5, le recadençage, et la consultation
aux tables On va démontrer qu'on ne peut pas les appliquer ici.
Du fait de l'existence de cette boucle, on ne peut pas appliquer la technique de "recadençage" ou "retiming" telle que décrite dans un article de Charles E Leiserson et James B Saxe intitulé "Retiming Synchronous Circuitry"
(Algorithmica, 6 ( 1): 5-35, 1991) à ce circuit.
D'ailleurs, la mise en oeuvre de cette unité par une consultation de table nécessite ( 1 +Xmax+#C) 2#R+#C+#X bits de mémoire Pour des valeurs utilisables de ces paramètres, par exemple #C=#R= 16, Xmax= 12 et #X= 4, on aurait besoin de 232 G Bytes qui est une valeur bien trop grande pour
des applications pratiques.
Mais on voudrait prendre la valeur #p aussi grande que possible, pour la raison suivante Pour que notre système de compression puisse bien compresser son flux d'entrée, il faut deux conditions D'abord la distribution de probabilité des symboles doit être non-uniforme De plus cette non-uniformité doit se refléter dans les valeurs de probabilité qui servent au calcul Les probabilités p(si) et P(si) sont des nombres réels, tirés de l'intervalle
l 0,1 l, qui peuvent exiger une précision infinie pour représenter tout exactement.
Les quantités dont on fait le calcul sont les représentations finies binaires de ces
valeurs, chacune écrite avec #p bits.
Bien entendu, on n'a aucun contrôle sur le contenu du flux d'entrée Mais, étant donné une distribution favorable, afin de l'exploiter, on doit être en mesure de représenter les nombres qui sont juste inférieurs à 1, ainsi que ceux qui sont juste supérieurs à O Ainsi, il est souhaitable d'avoir #p aussi grand que possible de manière à pouvoir représenter la plage des probabilités la plus large possible Mais vu l'équation ( 5), plus #p est grand, plus le circuit est lent On est donc obligé de trouver un compromis entre un circuit rapide de
compression médiocre et un compresseur efficace à vitesse réduite.
L'invention présente un solution à ce problème C'est un dispositif pour la construction des unités de mise à jour de la valeur de code qui peut opérer à grande vitesse, indépendante de la taille des opérandes Le paramètre #p peut être pris aussi grand que désiré, sans conséquence négative
sur la vitesse de compression.
Exposé de l'invention La présente invention concerne un dispositif de mise à jour de la valeur de code d'un système de codage arithmétique, caractérisé en ce que, pour maintenir un nombre déterminé de bits de précision, en maintenant un nombre fixe de niveaux logiques entre deux registres, ce dispositif comprend une grille de N x N cellules prises parmi quatre cellules de base: n(n-1)/2 cellules ad, au-dessus de la diagonale principale de la grille, comprenant un multiplexeur; n-1 cellules d, sur cette diagonale principale comprenant un additionneur et un multiplexeur et au moins un registre; une cellule fd, d'extrémité basse de la diagonale comprenant un additionneur et un multiplexeur et au moins un registre; n(n-I)/2 cellules or, de recadençage de sortie comprenant un registre; la limite inférieure de la période d'horloge étant telle que T> max {Tmux+Tadd, Xmax Tprop} Tmux, Tadd étant les temps d'établissement des multiplexeurs et des additionneurs; 'prop le délai nécessaire pour un signal pour se propager à
travers la largeur d'une cellule; Xmax le plus grand décalage possible.
Dans une réalisation avantageuse, les additionneurs sont des additionneurs généralisés comprenant chacun j+k+l bits d'entrée et qui génèrent I+k bits de sortie o j, k et I sont des entiers non-négatifs, et dont les équations
donnant les sorties en fonction des entrées sont totalement arbitraires.
Dans une variante de réalisation, le dispositif de mise à jour de la valeur de code d'un système de codage arithmétique selon l'invention comprend une grille de ( 2 n-1)n cellules prises parmi six cellules de base: n(n-1)/2 cellules ir, de recadençcage d'entrée comprenant deux registres; n-1 cellules d, diagonales, comprenant un additionneur et un multiplexeur; une cellule fd, d'extrémité basse de la diagonale, comprenant un additionneur et un multiplexeur; n-1 cellules fad, situées au-dessus de la diagonale dans la colonne de gauche de la grille, comprenant un multiplexeur; (n-2)(n-1)/2 cellules ad, situées au-dessus de la diagonale, comprenant un multiplexeur; n(n- 1) cellules or, de recadençcage en sortie, comprenant un registre; la limite inférieure de la période étant telle que r > max {Tmux+Tadd, T'prop} o Trmux, Tadd sont les temps d'établissement des multiplexeurs et des additionneurs, o:'prop est le temps de propagation d'un signal le long de
n'importe quel fil.
Dans une réalisation avantageuse les additionneurs sont des additionneurs généralisés comprenant chacun j+k+l bits d'entrée et qui génèrent
I+k bits de sortie o j, k et I sont des entiers non-négatifs.
L'invention permet d'améliorer le rendement du codage d'agencements non-adaptatifs pour codage arithmétique à grande vitesse en proposant une conception avantageuse du circuit de mise à jour de la valeur du code. La présente invention permet une compression à vitesse plus rapide de données que par la technique de codage arithmétique bien connue décrite dans l'article de Glen G Langdon cité plus haut et l'article de lan H. Witten, Radford M Neal et John G Cleary intitulé "Arithmetic Coding for Data Compression" (Communications of the ACM, 30 ( 6); 520- 540, juin 1987) Elle peut constituer la base d'un produit destiné à la compression de données Ce produit pourrait être utilisé pour la compression de données devant être transmises sur un canal de communication, ou être enregistré dans un système
de fichiers.
Brève description des dessins
La figure 1 représente l'architecture d'un codeur arithmétique de l'art connu; les figures 2 à 5 illustrent différents circuits de l'art connu; les figures 6 à 17 illustrent différentes variantes d'une unité de
mise à jour de la valeur du code selon l'invention.
Principe fondamental de l'invention La figure 1 représente l'architecture d'un codeur arithmétique
de l'art connu, qui a pour but de coder le symbole si.
Il comprend une unité de mise à jour de la taille d'intervalle 10, une unité de mise à jour de la valeur du code 11 et éventuellement un circuit
tampon 12.
L'unité de mise à jour de la taille d'intervalle 10 délivre deux signaux Xi et Ri à l'unité de mise à jour de la valeur du code 11 Une sortie de cette unité 10 reliée à un registre 13 permet de délivrer à une entrée dudit module le signal Ai Une sortie de l'unité 11 reliée à un registre 14 permet d'envoyer un signal Ci à une autre entrée de ce module 11 Le circuit tampon 12 reçoit sur ses deux entrées les signaux de l'unité de mise à jour de la valeur du
code 11, à savoir Xii et Bl pour délivrer un signal Tk.
L'unité de mise à jour de l'intervalle 10 permet le maintien à jour de Ai dans le registre 13 A chaque étape de l'algorithme il prend un nouveau symbole si et la valeur courante du registre 13 Elle génère le cumulande Ri, le décalage Xi, et la nouvelle valeur Ai pour le registre Elle maintient donc à jour la taille de l'intervalle courant A 1 De même l'unité de mise à jour de la valeur du code 11 permet le maintien à jour de Ci dans le registre 14 A chaque étape il prend en compte le décalage Xi, le cumulande Ri et la valeur courante du registre 14 en produisant une nouvelle valeur pour Ri et un bloc de longueur
variable Bl de taille 1 +Xi La valeur Xi, elle, n'est pas modifiée.
Le circuit tampon de variable bloc 12 assemble la séquence de blocs de longueur variable dans des blocs de longueur fixe Tk qui constituent la
sortie du codeur.
L'unité de mise à jour de la taille d'intervalle 10 de l'art connu, représentée à la figure 1, comprend un module de calcul de probabilité 15 dont les deux sorties, délivrant les signaux p(si) et P(si), sont reliées respectivement à un premier multiplieur 16 suivi d'un module de normalisation 18 pour délivrer le signal Xi et à un second multiplieur 17 délivrant le signal Ri Une sortie du module de normalisation 18 est reliée à une entrée de chaque multiplieur 16 et
17 au travers du registre 13.
L'unité de mise à jour du point de code 11 comprend un additionneur 19 qui reçoit sur une première entrée le signal Ri, connecté à un circuit de décalage 20 qui reçoit sur une autre entrée le signal Xi, et dont une première sortie est rebouclée sur une seconde entrée de l'additionneur 19 au travers d'un registre 14, une seconde sortie du circuit de décalage 20 délivrant
un signal Bi.
Le circuit tampon 12 comprend un additionneur qui reçoit sur ses deux entrées les signaux de sortie de l'unité de mise à jour de la taille d'intervalle 10 et de l'unité de mise à jour du point de code 11, à savoir Xi et Bi,
pour délivrer le signal Tk.
L'algorithme pour le codage arithmétique doit maintenir une quantité désignée par la valeur de code Ci Chaque fois qu'un symbole est codé, la valeur de code courant doit être incrémentée et éventuellement décalée Les bits décalés sont émis dans le flux de sortie, ceux retenus deviennent la valeur nouvelle du point de code La figure 1 représente les éléments d'un circuit 11 qui maintient la valeur de code Ce circuit met en oeuvre l'algorithme suivant: 1 Calcul exact de: Ci=Ci+P(si) Aj 2 Emission du bit de retenue et des Xi bits les plus significatifs de Ci 3 Décalage de Xi positions les bits restants de Ci; le résultat est Ci+ 1 Ici, Ci est la valeur de code courant, Ai est la taille d'intervalle courant, si est le symbole suivant devant être codé, P(si) est sa probabilité cumulée et Xi est le décalage Nous écrivons Ri pour le produit P(s 1) Ai Les
quantités Xi et Ri sont obtenues à partir de la mise à jour de la taille d'intervalle.
On décrit maintenant l'invention et ses principes de fonctionnement L'invention concerne l'unité de mise à jour du point de code 11
de la figure 1 La figure 5 représente cette partie de la figure 1 prise séparément.
L'essence de l'invention est un dispositif permettant l'application de transformation par recadençage à l'unité de figure 5 Comme expliqué plus haut, dans l'état de l'art connu, on ne peut pas appliquer cette transformation à l'unité Mais il est possible, de manière avantageuse, d'appliquer cette transformation deux fois, d'abord pour éliminer des longues chaînes de logique combinatoire et éliminer des longs fils On appelle la première étape "recadençage de la logique" et la deuxième "recadençage des fils".
Dans la suite on donne la structure des circuits numériques.
Les éléments de ces circuits sont représentés dans la figure 2 et sont: un additionneur plein 21 dont les sorties répondent aux relations S = a E b 33 Cin et Cout = ab + b Cin + a Cin avec a, b valeurs d'entrée; Cin retenue d'entrée; Cout retenue de sortie; un multiplexeur ou "mux" 22 dont la sortie m répond à la
relation: m = it + -ie, avec i, t, e valeurs d'entrée.
il Ici le symbole ED représente l'opération logique "ou-exclusif", le symbole + représente l'opération logique "ou-inclusif", le symbole représente l'opération logique de négation, et la juxtaposition des variables représente l'opération logique "et" En plus, un symbole carré indique un registre qui retarde son entrée par un coup d'horloge. Dans la suite des figures une entrée non représentée sera
considérée comme transmettant un signal nul.
La première étape de l'invention est de la transformer pour obtenir la version de la figure 3 On a déplacé le registre 14 dans la boucle, mais cela n'a aucune conséquence sur la limite basse de la période d'horloge a, donnée précédemment dans l'équation ( 5) Dans le cycle o Ri et Xi sont
introduits sur les entrées, le registre contient la quantité Ci = Ci + Ri.
Si l'on considère plus particulièrement cette figure 3, on sélectionne une largeur particulière pour le circuit (dans ce cas 4 bits) et on l'introduit dans la structure de l'additionneur Pour l'additionneur on utilise la réalisation bien connue à report de retenue Le décalage est fourni avec une représentation unitaire, c'est-à-dire un ensemble de Xmax fils ( x 2 x 1 xo) qui sont tous à zéro sauf xu o u est la quantité de décalage Dans l'exemple considéré on prend Xmax = 4 Le résultat apparaît sur la figure 4 L'invention concerne donc un nouveau circuit qui intègre les fonctions désirées d'addition, de décalage et d'enregistrement et qui peut être synchronisé à une fréquence
indépendante de #C et Xmax.
Maintenant on peut expliquer l'invention Cela dépend d'un dispositif détaillé de l'unité mélangé de l'additionneur et du décaleur que l'on donne ici L'invention consiste à placer les éléments logiques le long de la diagonale d'un carré, et de construire le dispositif de l'invention pour le déphasage sur celui-ci Ceci est représenté à la figure 6 On considère une représentation unitaire de Xi de telle façon que le décaleur ait une structure simple Cela ne limite pas la généralité de notre invention, comme c'est évident de passer d'une notation binaire à une notation unitaire Une telle réalisation est possible parce que la direction de propagation de retenue et la direction de tout
décalage sont les mêmes.
On peut alors faire deux observations: d'abord, chaque boucle dans cette figure a seulement deux étapes de logique C'est vrai qu'il y a des chemins combinatoires plus longs dans la figure tels que la chaîne de propagation de retenue Mais la deuxième observation est que ces longues chaînes peuvent être subdivisées par recadençage C'est ce qu'on a appelé plus
haut le recadençage logique.
La figure 7 explique comment réaliser un tel recadençage Les lignes pointillées horizontales, qui représentent les limites de recadençage indiquent les endroits o doivent être introduits les registres Ce recadençage est
possible à cause du sens uniforme du flux d'information à travers de ces lignes.
La figure 8 représente le circuit recadencé (après avoir déplacé quelques uns de ces registres pour faciliter leur dessin) Ici, les éléments numérotés 30 ou 33 sont des multiplexeurs, ceux numérotés 31 sont les additionneurs pleins, et ceux numérotés 32, 34, 35, 36, 37, 38 et 39 sont des registres. la caractéristique essentielle qui en résulte est qu'il n'y a pas plus de deux étapes de logique entre deux registres quelconques La limite inférieure de la période horloge est T Ä max{tmux r 'add, Xmax tprop} ( 6) Dans cette expression Tmux et Tadd sont les temps de réglage ("settling time") du multiplexeur et de l'additionneur plein de la figure 2, et Tprop est le temps pour la propagation d'un signal au travers d'une cellule, quantité qui est très faible. Cette structure de la figure 8 peut être étendue au cas général d'un circuit qui est large de N bits, comme représenté à la figure 9 Cela donne l'exemple du cas n= 5 Il y a plusieurs fils non connectés qui peuvent être
ignorés, émanant des cellules situées sur le bord gauche de la grille.
Un tel circuit de taille arbitraire peut être assemblé en formant une grille N x N avec quatre cellules de base Ainsi une grille contient un total de n 2 cellules, distribuées comme suit: Nombre de cellules Type de cellule n(n-1)/2 au-dessus de la diagonale, ou (ad) n-1 intérieures à la diagonale, ou (d) 1 extrémité basse de la diagonale, ou (fd) n(n-1)/2 recadençage de sortie, ou (or) Jusqu'à présent on a considéré Xmax = N qui est la largeur du circuit C'est la supposition la plus générale possible parce qu'un décalage de plus de N bits veut dire qu'aucun bit du registre Ci sera remis en circulation (Dans ce cas, le calcul procédera comme si tous les bits étaient O Cet effet peut être obtenu dans les circuits en mettant chaque bit de la représentation unitaire de Xi à o). Mais le cas Xmax <n est possible et permet une légère simplification du circuit On élimine alors les bits Xu de la représentation unitaire avec u > Xmax, ainsi que les registres et les multiplexeurs qu'ils alimentent La figure 10 illustre le circuit de mise à jour de valeur de code pour le cas N = 4 et Xmax = 2 Ce circuit peut être recadencé comme celui de la figure 8 pour obtenir
une version rapide.
Elimination des chemins de transmission longs La longueur des chaînes de logique dans toutes les tailles du circuit représenté à la figure 9 est limitée à deux Mais les grandes tailles de ce circuit, avec une grande valeur de Xmax, contiennent des chemins de transmission longs En particulier le fil qui sort de l'additionneur le moins significatif doit étendre Xmax colonnes vers l'extrémité gauche du circuit C'est cela qui donne le terme Xmax rprop dans l'expression ( 6) pour la limite
inférieure de r.
Tandis que la plupart du retard dans les réalisations physiques de circuits digitaux logiques est le résultat du temps qu'il faut pour les éléments de logique à changer leur état, des signaux ne peuvent pas se propager instantanément Donc s'il y a des chemins de transmission longs dans un circuit, le temps pour propager un signal peut être supérieur au temps pour le
changement d'état de logique.
Pourtant, en ajoutant des registres supplémentaires et en modifiant la géométrie du circuit, on peut supprimer cet inconvénient C'est ce
qu'on a appelé plus haut le recadençage des fils.
Les figures 11, 12 et 13 montrent le procédé de modification et
la figure 14 représente un exemple de la version finale du circuit.
La figure 11 représente un circuit de mise à jour de la valeur du code pour recadençage Ce circuit est topologiquement identique à celui de la figure 8 On a seulement repositionné les entrées et les sorties Les lignes pointillées verticales 40 indiquent o on doit recadencer le circuit Une telle modification permet de subdiviser les longs chemins horizontaux en segments
de longueur limitée.
La figure 12 représente un circuit de mise à jour de la valeur du code après recadençage Cette figure est identique à la figure précédente avec un registre 41 inséré aux endroits o un fil croise une limite de recadençage Les longs chemins horizontaux ont été subdivisés, mais les fils le plus en haut à
gauche et le plus en bas à droite sont de longueur linéaire n.
Alors en ajoutant des registres pour couper certains chemins, on a allongé certains autres chemins, auparavant courts On va maintenant
présenter une solution à ce problème.
La figure 13 représente un circuit de mise à jour de la valeur du code avec recadençage Cette variante de la figure précédente, avec les registres de recadençage d'entrée et de sortie disposés dans leurs colonnes respectives Les fils fournissant le bit de poids le plus faible en entrée et le bit de
poids le plus fort en sortie sont de longueur linéaire en n.
La figure 14 représente un circuit de mise à jour de la valeur du code avec des longueurs de fils constantes cette version est obtenue en décalant chaque colonne du circuit de la figure 13 d'une quantité déterminée par rapport à la colonne voisine Tous les fils sont à présent de longueur limitée De
plus cette limite est indépendante de la largeur de bits N du circuit.
Comme précédemment on peut construire des versions de ce circuit de taille arbitraire, en formant une grille de taille N x ( 2 n-1) avec les cellules de base illustrées à la figure 15 Cette figure contient un exemple de réalisation pour le cas N = 5 La pente de la diagonale dans cette réalisation est plus marquée, car elle est due au décalage de chaque colonne de cellules par rapport ses voisines Une telle grille contient donc 2 N 2-n cellules distribuées comme suit: Nombre de cellules Types decellules n(n-1)/2 n-1 n-1 (n-2)(n-1)/2 n(n-1) recadençage d'entrée ou (ir) diagonale ou (d extrémité basse de la diagonale ou (fd) extrémités au-dessus de la diagonale ou (fad) au- dessus de la diagonale ou (ad) recadrage de sortie ou (or) La limite inférieure de la période horloge du circuit de ce dispositif est T > max {Tmux + Tadd, T'prop} ( 7) O T'propest le temps pour la propagation d'un signal à travers le plus long fil parmi les cellules ir, d, fd, fad, ad ou or de la figure 15 Il n'y a plus aucune
dépendance dans cette limite sur la largeur du circuit en bits.
Généralisation du principe Les additionneurs pleins de la figure 2 peuvent être généralisés aux unités logiques de la figure 15 Chaque unité sur la gauche, que l'on appelle
additionneur généralisé, reçoit j + k + I bits d'entrée et produit k + I bits de sortie.
Ici, j, k et I peuvent être n'importe quel entier non négatif En notation mathématique, si f représente la fonction logique réalisée par cette unité, on peut écrire: (d 0,,dl-1, eo,,ek_ 1) = f(ao aj 1 bo, -,bk-lc 0, cl-1) Les sorties do,,dl 1 sont appelées les retenues généralisées de cette unité La
figure 16 représente la structure générale d'un circuit qui utilise ces unités.
Dans les paragraphes précédents, on a considéré un circuit de la structure de la figure 16 o f a été la fonction d'un additionneur plein, avec j = k = I = 1 Mais il n'y a rien dans notre technique qui oblige que f soit n'importe quelle fonction en particulier (ni la même fonction pour chaque colonne du circuit). Etant donné un circuit de la structure de la figure 16, o la direction de propagation des retenues généralisées est la même que la direction de décalage du décaleur, on peut utiliser les dispositifs précédents pour obtenir des circuits opérationnels à haute vitesse Soit Tagen le temps de réglage d'un additionneur généralisé, tmgen le temps de réglage d'un multiplexeur généralisé, Smax le plus grand décalage possible On obtient la limite inférieure de la période horloge r >:max {fmgen + ragen, Smax tprop} par le dispositif de la figure 9, et r >:max {Tmgen + Tagen, T'prop}
par le dispositif de la figure 15.

Claims (3)

REVENDICATIONS
1 Dispositif de mise à jour de la valeur de code d'un système de codage arithmétique, caractérisé en ce que, pour maintenir un nombre déterminé de bits de précision, en maintenant un nombre fixe de niveaux logiques entre deux registres, ce dispositif comprend une grille de N x N cellules prises parmi quatre cellules de base: n(n-1)/2 cellules ad, au-dessus de la diagonale principale de la grille, comprenant un multiplexeur ( 33); n-1 cellules d, sur cette diagonale principale comprenant un additionneur ( 31) et un multiplexeur ( 30), et au moins un registre ( 32); une cellule fd, d'extrémité basse de la diagonale comprenant un additionneur ( 31), un multiplexeur ( 30) et au moins un registre ( 32); n(n-1)/2 cellules or, de recadençage de sortie comprenant un registre ( 35); la limite inférieure de la période d'horloge étant telle que T > max {Tmux+Tadd, Xmax Tprop} Tmux, Tadd étant les temps d'établissement des multiplexeurs et des additionneurs; Tprop le délai nécessaire pour un signal pour se propager à
travers la largeur d'une cellule; Xmax le plus grand décalage possible.
2 Dispositif selon la revendication 1, caractérisé en ce que les additionneurs sont des additionneurs généralisés comprenant chacun j+k+l bits d'entrée et qui génèrent l+k bits de sortie o j, k et I sont des entiers non-négatifs, et dont les équations donnant les sorties en fonction des entrées
sont totalement arbitraires.
3 Dispositif de mise à jour de la valeur de code d'un système de codage arithmétique, caractérisé en ce qu'il comprend une grille de ( 2 n-1)n cellules prises parmi six cellules de base: n(n-1)/2 cellules ir, de recadençage d'entrée comprenant deux registres; n-1 cellules d, diagonales comprenant un additionneur et un multiplexeur et au moins un registre; une cellule fd, d'extrémité basse de la diagonale comprenant un additionneur et un multiplexeur, et au moins un registre; n-1 cellules fad, situées au-dessus de la diagonale dans la colonne de gauche de la grille comprenant un multiplexeur; -(n-2)(n-1)/2 cellules ad, situées au-dessus de la diagonale comprenant un multiplexeur; n(n-1) cellules or, de recadencçage en sortie comprenant un O 10 registre; la limite inférieure de la période étant telle que Tr > max {Tmux+:add, T'prop} O Tmux, Tadd sont les temps d'établissement des multiplexeurs et des additionneurs, o 'prop est le temps de propagation d'un signal à travers le plus long fils parmi les cellules ir, d, fed, fad, ad ou or 4 Dispositif selon la revendication 3, caractérisé en ce que les additionneurs sont des additionneurs généralisés comprenant chacun j + k + i bits d'entrée et qui génèrent i + k bits de sortie o j, k et i sont des entiers non-négatifs
FR9303590A 1993-03-29 1993-03-29 Dispositif de mise à jour de la valeur de code dans la méthode du codage arithmétique. Expired - Fee Related FR2703483B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR9303590A FR2703483B1 (fr) 1993-03-29 1993-03-29 Dispositif de mise à jour de la valeur de code dans la méthode du codage arithmétique.
US08/216,741 US5592162A (en) 1993-03-29 1994-03-23 Interval width update process in the arithmetic coding method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9303590A FR2703483B1 (fr) 1993-03-29 1993-03-29 Dispositif de mise à jour de la valeur de code dans la méthode du codage arithmétique.

Publications (2)

Publication Number Publication Date
FR2703483A1 true FR2703483A1 (fr) 1994-10-07
FR2703483B1 FR2703483B1 (fr) 1995-06-02

Family

ID=9445448

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9303590A Expired - Fee Related FR2703483B1 (fr) 1993-03-29 1993-03-29 Dispositif de mise à jour de la valeur de code dans la méthode du codage arithmétique.

Country Status (2)

Country Link
US (1) US5592162A (fr)
FR (1) FR2703483B1 (fr)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5708431A (en) * 1995-11-14 1998-01-13 Lucent Technologies Inc. Method for compression coding of potentially unbounded integers
US6952823B2 (en) * 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
US6318156B1 (en) * 1999-10-28 2001-11-20 Micro Motion, Inc. Multiphase flow measurement system
US20060143180A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060143199A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US20050015608A1 (en) 2003-07-16 2005-01-20 Pkware, Inc. Method for strongly encrypting .ZIP files
US20060143253A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US7844579B2 (en) * 2000-03-09 2010-11-30 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060143249A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060155788A1 (en) * 2000-03-09 2006-07-13 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060173847A1 (en) * 2000-03-09 2006-08-03 Pkware, Inc. System and method for manipulating and managing computer archive files
US8959582B2 (en) 2000-03-09 2015-02-17 Pkware, Inc. System and method for manipulating and managing computer archive files
US8230482B2 (en) 2000-03-09 2012-07-24 Pkware, Inc. System and method for manipulating and managing computer archive files
US6879988B2 (en) * 2000-03-09 2005-04-12 Pkware System and method for manipulating and managing computer archive files
US20060143237A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
EP2296282B1 (fr) * 2002-05-02 2013-11-06 Fraunhofer-Gesellschaft zur Förderung der Angewandten Forschung e.V. Procédé et agencement d'encodage et de décodage arithmétiques utilisant plusieurs tables de consultation

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4467317A (en) * 1981-03-30 1984-08-21 International Business Machines Corporation High-speed arithmetic compression coding using concurrent value updating
IL86993A (en) * 1988-07-05 1991-07-18 Ibm Israel Method of generating a compressed representation of a source data string
JPH0834434B2 (ja) * 1990-02-26 1996-03-29 三菱電機株式会社 符号化装置及び符号化方法
US5298896A (en) * 1993-03-15 1994-03-29 Bell Communications Research, Inc. Method and system for high order conditional entropy coding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
THOMPSON ET AL: "digital arithmetic units for a high data rate", RADIO AND ELECTRONIC ENGINEER, vol. 45, no. 3, March 1975 (1975-03-01), LONDON GB, pages 116 - 120 *

Also Published As

Publication number Publication date
US5592162A (en) 1997-01-07
FR2703483B1 (fr) 1995-06-02

Similar Documents

Publication Publication Date Title
FR2703483A1 (fr) Dispositif de mise à jour de la valeur de code dans la méthode du codage arithmétique.
EP0735696B1 (fr) Procédé de décodage itératif, module de décodage et décodeur correspondants
JPH04280516A (ja) エンコード方法及び装置
EP0329533B1 (fr) Procédé de codage et procédé de décodage à longueur variable, dispositif de codage et dispositif de décodage pour la mise en oeuvre de ce procédé
FR2790621A1 (fr) Dispositif et procede d&#39;entrelacement pour turbocodage et turbodecodage
FR2900004A1 (fr) Procede et dispositif de decodage arithmetique
FR2703482A1 (fr) Procédé de mise à jour de la taille de l&#39;intervalle dans la méthode du codage arithmétique.
FR2785741A1 (fr) Dispositif et procede de codage et d&#39;entrelacement pour des turbocodes series ou hybrides
EP0463598B1 (fr) Circuit de décodage de codes convolutionnels pour l&#39;exécution de l&#39;étape de stockage et d&#39;exploration inverse des chemins survivants d&#39;un algorithme de viterbi
FR2785744A1 (fr) Procede et dispositif de codage de sequences de donnees, procede et dispositif de decodage associes
US11677416B2 (en) Hardware implementable data compression/decompression algorithm
WO2006085038A1 (fr) Procede systeme et dispositif de generation d&#39;une sequence de donnees pseudo aleatoire
FR2656124A1 (fr) Multiplieur serie programmable.
EP1720171B1 (fr) Dispositif de décalage en anneau
FR2589653A1 (fr) Dispositif de mise en oeuvre d&#39;un code a faible disparite accumulee en transmission numerique a haut debit et procede de codage utilisant un tel dispositif
EP0319421B1 (fr) Comparateur binaire et opérateur de tri de nombres binaires
EP1525663B1 (fr) Compression de donnees numeriques robuste au bruit de transmission
EP1972061B1 (fr) Procede d&#39;encodage de type cabac
FR2773284A1 (fr) Circuit de calcul de polynome de syndrome et un circuit de decodage reed-solomon
FR2787263A1 (fr) Procede de transmission avec codage de canal a entrelacement efficace et modulaire pour turbo codes
FR2901433A1 (fr) Conversion entre representations en domaines de sous-bandes pour des bancs de filtres variant dans le temps
EP3890192B1 (fr) Circuit de calcul de crc rapide utilisant un polynôme réducteur reconfigurable au vol
FR2888062A1 (fr) Codeur et turbo decodeur de code produit
WO2008102091A2 (fr) Procede de traitement d&#39;un signal numerique au sein d&#39;un modulateur delta-sigma numerique, et modulateur delta-sigma numerique correspondant.
CN112911314B (zh) 一种熵编码器的编码方法及熵编码器

Legal Events

Date Code Title Description
ST Notification of lapse