FR 2668867 A1 19920507 FR 9013758 A 19901102 à i Procédé de codage binaire à taux de basculement des éléments binaires sensiblement uniforme, et procédés d'incrémentation et de décrémentation correspondants. Le domaine de l'invention est celui du codage binaire, c'est-à-dire de la représentation de données de nature quelconque à l'aide d'éléments binaires O ou 1. L'invention concerne notamment, mais non exclusivement, le codage de données ayant vocation à être représentées séquentiellement, suivant un ordre préétabli. Plus généralement, l'invention trouve une application privilégiée dans tous les cas o il est nécessaire de coder des données apparaissant, en moyenne, un nombre sensiblement égal de fois. Un exemple particulier d'application est ainsi le codage d'un compteur, pour lequel les données à coder sont les entiers de 0 à n-i En ce qui concerne les compteurs, on peut d'ailleurs toujours se ramener à ce cas, puisqu'il suffit pour cela de numéroter de O à n-i les données à représenter dans l'ordre o elles doivent apparaître L'invention peut s'appliquer aussi bien aux compteurs simples, systématiquement incrémentés, qu'aux compteurs susceptibles d'être tantôt incrémentés, tantôt décrémentés. L'invention peut notamment être utilisée dans le cas o on met en oeuvre des mémoires de type sensible à l'usure C'est par exemple le cas des mémoires E 2 PROM (Electrically Erasable Programmable Read-Only Memory) (Mémoire morte programmable effaçable électriquement), telles que celles contenues dans les cartes à micro-processeur. Toutefois, il est clair que l'invention peut s'appliquer au codage de tout type de données, quel que soit le système d'information et/ou de traitement de données et les supports de mémorisation utilisés. On connaît déjà de nombreux procédés de codage binaire des nombres entiers Le procédé le plus utilisé est la représentation de cet entier par sa décomposition binaire en base 2, souvent nommé codage binaire classique ou codage binaire naturel Un autre procédé bien connu consiste à représenter chaque chiffre de la décomposition en base 10 de cet entier par la décomposition en base 2 de ce chiffre f faut alors 4 éléments binaires pour coder chaque chiffre de la décomposition en base 10 Il existe encore plusieurs types de codages binaires, correspondant à des applications ou des besoins spécifiques. Ainsi, dans certaines applications, il est souhaitable que le procédé de codage utilisé soit tel que, lorsque l'on passe d'un entier à l'entier suivant, ou à l'entier précédent, le nombre d'éléments binaires qui basculent, c'est-à-dire qui changent de valeur, soit aussi faible que possible en moyenne, l'idéal étant 1 Le codage binaire classique est loin de cet idéal, puisque la moyenne de basculement est environ égale à 2. En ce qui concerne cette contrainte de basculement minimal, des solutions satisfaisantes existent depuis longtemps Ces solutions sont connues sous le nom de codes à changement minimal (en anglais: minimum- change codes), et sont décrites par exemple dans le document suivant: "Data Transmission" (Transmission des données), W R BENNETT & J R DAVEY, New York, Mc Graw-Hill, 1965 Les codes de Gray constituent un exemple particulier des codes à changement minimal. Ils sont notamment décrits dans le document de brevet américain publié le 17 mars 1953 sous le numéro 2 632 058. Les codes de Gray s'avèrent particulièrement intéressants et sont très employés, en raison de la simplicité de leur construction, de la simplicité des conversions entre ces codes et le code binaire classique, et du fait que le nombre d'éléments binaires utilisés est égal au nombre d'éléments binaires utilisés dans le codage binaire classique, lequel nombre est le plus petit possible. Cependant, il est parfois également souhaitable que les éléments binaires basculent, en moyenne, tous autant les uns que les autres, autrement dit que le basculement soit uniforme Le codage de Gray n'a pas cette propriété, puisque l'élément binaire de poids faible bascule un nombre de fois environ égal à la moitié du nombre d'entiers à coder à chaque parcours d'un compteur, tandis que l'élément binaire de poids fort ne bascule qu'une fois. La contrainte de basculement uniforme des éléments binaires se pose par exemple de façon cruciale dans le cas des mémoires du type E 2 PROM En effet, dans ces mémoires, le nombre de basculements possibles pour chaque élément binaire étant limité, par exemple de l'ordre de quelques milliers, il est avantageux de répartir de façon homogène les basculements entre tous les éléments binaires, ce qui permet d'allonger la durée de vie des composants. fl n'existe pas de codage réellement efficace vis à vis de cette contrainte particulière. L'invention a notamment pour objectif de pallier cet inconvénient. Plus précisément, l'invention a pour objectif de fournir un procédé de codage binaire de données numériques induisant un taux de basculement moyen uniforme, ou sensiblement uniforme, pour chacun des éléments binaires. Un objectif complémentaire de l'invention est de fournir un tel procédé de codage, induisant un nombre minimal, c'est-à-dire proche de ou égal à 1, de basculements d'éléments binaires lors du passage d'une valeur à son successeur et/ou à son prédécesseur. Ainsi, dans le cas d'un compteur, l'invention a notamment pour objectif de fournir un tel procédé de codage, selon lequel le nombre de basculements qu'a subi l'élément binaire le plus basculé, lorsque le compteur a été parcouru une fois ou un nombre entier de fois, est peu supérieur au nombre minimal possible, c'est-à- dire, pour chaque tour de compteur, au nombre d'entiers à coder divisé par le nombre d'éléments binaires utilisés. En d'autres termes, un des objectifs de l'invention est de fournir un procédé de codage satisfaisant, de façon pratiquement optimale, les deux contraintes de basculement minimal et de basculement uniforme. Un autre objectif de l'invention est de fournir un tel procédé de codage, utilisant un nombre d'éléments binaires égal, ou peu supérieur dans une variante de l'invention, au nombre minimal possible, c'est-à- dire le nombre d'éléments binaires utilisés dans le codage binaire classique Cette caractéristique s'avère essentielle notamment lorsque le système utilisé est limité en place mémoire. Un objectif particulier de l'invention est de fournir un tel procédé de codage, utilisable pour le codage de données dans des mémoires de type sensible à l'usure, tel que les E 2 PROM, dans des applications telles que les cartes à microprocesseur Dans ce cas, l'invention permet de maximiser la durée de vie des mémoires. Selon une première variante, l'invention a pour objectif de fournir un tel procédé de codage, à nombre de basculements encore plus réduit, au prix d'une légère augmentation du nombre d'éléments binaires. Selon une autre variante, l'invention a pour objectif de fournir un tel procédé de codage, plus spécifiquement destiné aux suites de données destinées à être parcourues plusieurs fois. De façon complémentaire, l'invention a également pour objectif de fournir des procédés d'incrémentation et de décrémentation d'une suite de données ne nécessitant pas un décodage complet de la donnée initiale. Un autre objectif de l'invention est de fournir de tels procédés de codage, d'incrémentation et de décrémentation ne nécessitant pas de calculs complexes, et mettant en oeuvre des moyens logiques élémentaires, tant dans un but de simplification que de rapidité. Ces objectifs, ainsi que d'autres qui apparaîtront par la suite, sont atteints selon l'invention à l'aide d'un procédé de codage binaire de données numériques, dans lequel lesdites données sont codées sur deux champs distincts d'éléments binaires, un champ de référence et un champ de permutation, la séquence d'éléments binaires affectée audit champ de permutation subissant une permutation fonction de la valeur contenue dans ledit champ de référence. Ces permutations permettent de faire varier, dans le champ de permuta- tion, la position des éléments binaires basculant beaucoup avec celle des éléments basculant peu, de façon à homogénéiser en moyenne les basculements sur l'ensemble du champ. Dans un mode de réalisation avantageux de l'invention, ladite permutation est une rotation dont l'amplitude est fonction de la valeur contenue dans ledit champ de référence. Cela permet notamment une mise en oeuvre simple de l'invention, à l'aide de techniques connues de rotation de suites binaires. De façon préférentielle, ladite permutation est calculée de façon à assurer un taux moyen de basculement sensiblement uniforme pour chacun des éléments binaires constitutifs dudit champ de permutation. Ainsi, par exemple, une rotation régulière du champ de permutation, en fonction de l'évolution d'un compteur, permet d'affecter successivement à chaque élément binaire physique du champ tous les éléments binaires logiques, de celui basculant le plus souvent à celui basculant le moins souvent On obtient donc, en moyenne, un taux de basculement sensiblement uniforme pour chacun des éléments binaires physiques. En revanche, la contrainte de basculement uniforme n'est pas nécessai- rement respectée dans le champ de permutation Cela s'avère toutefois peu important, les éléments binaires de ce champ basculant très rarement, par rapport à ceux du champ de permutation. Dans le cas d'un tel procédé appliqué au codage de N données distinctes, lesdits champs de référence et de permutation comprenant respectivement q et r éléments binaires, le nombre total d'éléments binaires (q+ r) est préférentiellement égal ou supérieur au nombre d'éléments binaires nécessaires au codage desdites n données distinctes selon le code binaire naturel. Le procédé selon l'invention ne nécessite en effet pas plus d'éléments binaires que le codage binaire classique, c'est-à-dire le minimum Toutefois, dans certaines variantes, il peut être intéressant d'utiliser un nombre plus important d'éléments binaires, ainsi qu'on le verra par la suite. Il est par ailleurs avantageux de respecter l'égalité r = 2 q, ou au moins l'inégalité r La taille du champ de référence est choisie de façon qu'il ne soit pas trop grand, la propriété de basculement uniforme n'ayant lieu que dans le champ de permutation. Avantageusement, le codage d'une valeur N comprend les étapes suivantes: détermination des valeurs Q et R correspondant respectivement au quotient et au reste de la division euclidienne de ladite valeur N par le nombre n R de valeurs distinctes qu'il est possible de coder dans ledit champ de permuta- tion; affectation audit champ de référence d'une première séquence d'éléments binaires, correspondant à ladite valeur Q selon une première logique de codage; affectation audit champ de permutation d'une seconde séquence d'éléments binaires, correspondant à ladite valeur R, selon une seconde logique de codage; permutation dépendant de ladite valeur Q de ladite seconde séquence d'éléments binaires dans ledit champ de permutation. Dans un mode de réalisation particulièrement simple et efficace de l'invention, ladite permutation est une rotation d'amplitude Q, ou plus générale- ment d'amplitude A fonction de la valeur Q. L'invention s'avère notamment avantageuse dans le cas o lesdites données numériques à coder forment une suite finie de valeurs évoluant séquentiel- lement. En effet, dans ce cas, on peut obtenir un taux de basculement uniforme à chaque parcours de la suite, ou, ainsi qu'on le verra plus loin, lorsque la suite a été parcourue un nombre fixé de fois. Préférentiellement, au moins la seconde logique de codage induit le basculement d'un nombre minimal d'éléments binaires dans le champ correspon- dant, lors du passage d'une desdites données à la donnée suivante et/ou précédente. Il peut par exemple s'agir d'un code de Gray. Ainsi, l'invention répond simultanément aux deux contraintes de basculement uniforme et minimal. Dans une variante de l'invention, ladite seconde logique de codage comprend les étapes suivantes: association d'une séquence d'éléments binaires à ladite valeur R; concaténation à ladite séquence d'éléments binaires d'au moins un élément binaire de valeur fixe. De cette façon, le taux de basculement de chaque élément binaire est encore réduit En effet, le ou les éléments binaires de valeurs fixes sont successive- ment affectés à chaque emplacement du champ de permutation Tant que le champ de référence n'évolue pas, cet emplacement ne voit donc aucun basculement En revanche, ce procédé de codage nécessite plus d'éléments binaires physiques que le codage binaire naturel. Selon une autre variante de l'invention, du type appliqué au codage d'une suite de données destinée à être parcourue plusieurs fois, ledit champ de référence contient une séquence d'éléments binaires correspondant au nombre de parcours de ladite suite effectués, et en ce que ledit champ de permutation contient une séquence d'éléments binaires correspondant à la donnée courante de ladite suite. Dans ce dernier cas, le procédé peut avantageusement comprendre une étape de remise à zéro et/ou d'interruption de ladite suite, effectuant l'incrémenta- tion de la valeur contenue dans ledit champ de référence, et l'affectation audit champ de permutation de la séquence d'éléments binaires correspondant à la première donnée de ladite suite. Le procédé de codage de l'invention n'impose pas, pour passer d'une valeur à la suivante, ou à celle qui précède, de décoder l'entier initial, puis de recoder le successeur ou le prédécesseur selon les principes décrits. En effet, l'invention concerne également un procédé d'incrémentation d'une suite de données codées selon le procédé décrit ci-dessus, comprenant les étapes suivantes: détermination de ladite valeur Q contenue dans ledit champ de référence, selon ladite première logique de codage; réalisation d'une permutation de décodage dépendant de ladite valeur Q, de ladite séquence d'éléments binaires contenue dans ledit champ de permutation, inverse de la permutation de codage; incrémentation selon ladite seconde logique de codage de la séquence d'éléments binaires obtenue après ladite permutation; si la valeur, selon ladite seconde logique de codage de la séquence d'éléments binaires incrémentée correspond à la première donnée de ladite suite, incrémentation selon ladite première logique de codage de la séquence d'éléments binaires contenue dans ledit champ de référence et détermination de la valeur Q correspondant; réalisation d'une permutation de décodage dépendant de ladite valeur Q, de ladite séquence d'éléments binaires incrémentée contenue dans ledit champ de permutation. De façon symétrique, l'invention présente un procédé de décrémentation d'une suite de données codées selon le procédé précédemment décrit, comprenant étapes suivantes: détermination de la valeur Q contenue dans ledit champ de référence, selon ladite première logique de codage; réalisation d'une permutation de décodage dépendant de ladite valeur Q, de ladite séquence d'éléments binaires contenue dans ledit champ de permutation, inverse de la permutation de codage; décrémentation selon ladite seconde logique de codage de la séquence d'éléments binaires obtenue après ladite permutation; si la valeur selon ladite seconde logique de codage de la séquence d'éléments binaires décrémentée correspond à la dernière donnée de ladite suite, décrémentation selon ladite première logique de codage de la séquence d'éléments binaires contenue dans ledit champ de référence, et détermination de la valeur Q correspondant; réalisation d'une permutation de codage dépendant de ladite valeur Q, de ladite séquence d'éléments binaires décrémentée contenue dans ledit champ de permutation. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante d'un mode de réalisation préférentiel de l'invention, donné à titre illustratif et non limitatif, et des dessins annexés, dans lesquels: la figure 1 présente le principe de base de l'invention, reposant sur la décomposition du codage en deux champs distincts, et la réalisation de permutation sur l'un de ces champs; la figure 2 est un schéma illustrant une méthode de codage d'une valeur selon le principe présenté en figure 1; la figure 3 illustre un procédé d'incrémentation d'une suite de données codées selon la méthode de la figure 2. Le procédé de codage selon l'invention a notamment pour but de réduire le nombre moyen de basculements de chaque élément binaire d'un code en répartissant de façon homogène les basculements sur chacun des éléments binaires. Pour cela, on utilise tout d'abord un code classique, avantageusement du type des codes à changement minimal, puis l'on effectue des permutations sur la valeur obtenue, en fonction d'une valeur de référence. Dans le mode de réalisation décrit, ces permutations sont des rotations. Toutefois, il apparaît clairement que tout type de permutation peut être utilisé, dès lors qu'il assure une répartition moyenne homogène des basculements. La figure 1 illustre le principe de l'invention. Le codage d'une valeur s'effectue sur deux champs distincts, un champ de référence 11 et un champ de permutation 12 Ainsi qu'on le verra par la suite, la contrainte de basculement uniforme n'est vérifiée que pour le champ de per- mutation 12 Cela ne tire toutefois pas à conséquence, les éléments binaires du champ de référence 11 n'étant destinés à varier que très rarement. De façon simplifiée, le codage a lieu en trois temps On détermine tout d'abord la valeur à coder dans le champ de référence 11, puis la valeur à coder dans le champ de permutation 12 Enfin, on effectue une rotation 13 du champ de permutation 12, dont l'amplitude est fonction de la valeur contenue dans le champ de référence 11 C'est l'application de ces rotations qui assure l'uniformité des basculements. La figure 2 présente un mode de codage selon l'invention. On considère le codage d'un entier N On procède tout d'abord à la division euclidienne 21 de l'entier N par le nombre n R de valeurs distinctes qu'il est possible de coder dans le champ de permutation On obtient ainsi deux valeurs Q et R, correspondant au quotient et au reste de la division (N = Q n R + R). La valeur R est codée, dans un module de codage 22, selon une logique de codage choisie, telle que, par exemple, un codage de Gray La séquence binaire obtenue subit alors une rotation 23, dont l'amplitude est fonction de la valeur Q. Dans un mode de réalisation particulier, plus précisément décrit par la suite, cette rotation 23 est d'amplitude Q Toutefois, il apparaît clairement que de nombreuses autres fonctions associant une amplitude AQ à la valeur Q peuvent être utilisées, et fournissent un résultat équivalent La séquence binaire obtenue après rotation est affectée au champ de permutation 12. De même, la valeur Q est codée, dans un module de codage 25, selon une seconde logique de codage, puis affectée au champ de référence 11. Il est à noter que les deux logiques de codage peuvent être de tout type connu Elles peuvent être identiques ou non Avantageusement, au moins pour le champ de permutation, on choisit un code à changement minimal. Avant de décrire plus particulièrement un mode de réalisation particulier de l'invention, mettant en oeuvre le codage de Gray, on rappelle rapidement le principe de ce codage. Codage de Gray: On donne ci-dessous une définition des codes de Gray, des procédés de conversion entre codage de Gray et codage binaire classique, ainsi qu'un procédé d'incrémentation et de décrémentation D'autres définitions et procédés existent, qui sont équivalents à ceux-ci. On se limite ici aux codes de Gray sur S bits, notés G 8,, o S est un entier positif On note OUX l'opération OU Exclusif bit à bit. Le code de Gray sur S bits, noté G 8, est la fonction qui, à tout entier compris entre O et 28-1, et de décomposition en base 2 égale à hhl h 1 associe l'entier dont la décomposition en base 2 est le champ d'éléments binaires g 8 g 5g 1 défini par: g 8 = h. g-1 = h, 1 OUX h 8 &s 2 = hs 2 OUX hs_ g 1 = h 1 OUX h 2 La fonction inverse (décodage de Gray sur S bits) est alors la fonction qui, au champ g 8 g 8g 1, associe le champ h 8 h1hl défini par: h 8 = g 8 h,., = gs-, OUX gs h-2 = g-2 OUX g&-1 OUX g, hi = g 1 OUX g 2 OUX OUX gs La fonction incrémentation d'un code Gray sur S bits, noté Incrs, est la fonction qui, au codage G(x) = g 6 gs g, d'un entier x compris entre O et 25-1, associe le codage G(x+ 1) de l'entier succédant à x, étant entendu que x+l désigne l'entier O dans le cas o x = 25-1 La fonction Incrs obéit à la règle suivante: Si g, OUX g 2 OUX OUX gs = 0, alors basculer gl. Sinon, et si g, = 1, alors basculer g 2. Sinon, et si g 2 = 1, alors basculer g 3. Sinon, et si g S-2 = 1, alors basculer g_-,. Sinon, basculer gs. La fonction décrémentation d'un code Gray sur S bits, noté Decrs, est la fonction qui, au codage G(x) = gsg_ g, d'un entier x compris entre O et 2 -1, associe le codage G(x-1) de l'entier précédant x, étant entendu que x-1 désigne l'entier 25-l dans le cas o x = 0 La fonction Decrs obéit à la règle suivante: Si g, OUX g 2 OUX OUX gs = 1, alors basculer gl. Sinon, et si g, = 1, alors basculer g 2. Sinon, et si g 2 = 1, alors basculer g 3. Sinon, et si g,-2 = 1, alors basculer g,_ 1. Sinon, basculer gs. Exemple de codage d'un compteur: Soit X = { 0, 1, 2,, n-l} un intervalle de N nombres entiers appelé compteur, et destiné à être parcouru séquentiellement une ou plusieurs fois Dans ce dernier cas, O sera considéré comme le successeur de n-1. Le mode de réalisation décrit ci-dessous concerne le cas o N une est puissance de 2 (n = 2 k) On peut toutefois toujours se ramener à ce cas, en remplaçant N par le plus petit entier de la forme 2 k qui lui soit supérieur ou égal. Chaque entier x est codé à l'aide d'un champ C(x) de k éléments binaires (comme dans le cas du codage binaire classique), appelé code ou codage de x Ce champ est subdivisé en deux sous-champs: un champ dit de référence, constitué de q bits, et un champ dit de permutation, constitué de r bits, et situé à droite du champ de référence, ainsi que cela est présenté en figure 1 On a donc: k = q+r. Dans une utilisation avantageuse de cette invention, on a l'égalité r = 2 q. On a alors: k = 2 q+q Ainsi, lorsque q = 1,2,3,4,5, alors k = 3,6,11, 20,37, et n = 8,64,2048,220,r De manière générale, il est avantageux de choisir q petit et tel que 2 q>k-q. On notera que si la valeur q doit être faible, il n'est pas forcément bon de choisir le plus faible possible Il est en effet facile de construire des exemples o la valeur la plus faible n'est pas la meilleure Par exemple, si q+r = 36, l'unifor- mité est mieux assurée en prenant q = 6 que q = 5. On note GQ la fonction qui, à un entier compris entre O et 25-1, associe son code de Gray sur S bits, Incr (respectivement Decrj) la fonction incrémentation (respectivement décrémentation) d'un code de Gray sur S bits, c'est-à-dire la fonction qui, au codage de Gray d'un entier compris entre O et 25-1, associe le codage de Gray de son successeur (respectivement de son prédécesseur), telles que définies ci-dessus. On note Cq une fonction de codage quelconque qui, à un entier compris entre O et 2 q-1, associe un champ de q bits et réciproquement Ainsi, Cq peut être le codage binaire classique sur q bits, ou encore, Cq peut être le codage de Gray sur q bits Gq. Le compteur est divisé en 2 q intervalles I, de longueur égale Cette longueur vaut 2 r. Pour coder un élément x de IJ, qui est l'intervalle des entiers compris entre O et 2 '4, le champ de référence est pris égal à Cq(O) et le champ de permutation égal à Gr(x). Pour coder un élément x de Il, qui est l'intervalle des entiers compris entre 2 r et 2 2 r-1, le champ de référence est pris égal à Cq( 1) et le champ de permuta- tion égal à Gr(x-2 r). On notera que le codage binaire classique de x-2 r n'est rien d'autre que le champ constitué des r bits de poids faible du codage binaire classique de x Puis, on applique une rotation à gauche d'amplitude 1 au champ de permutation, c'est- à-dire que, si le champ de permutation était égal à "grgr gl' avant la rotation, il devient "g,1 g 1 g," après la rotation. Plus généralement, pour coder un élément x de I, le champ de référence est pris égal à Cq(j) et le champ de permutation égal à Gr(x-j 2 r) Le codage binaire classique de x-j 2 r n'est donc rien d'autre que le champ constitué des r bits du codage binaire classique de x Puis on applique une rotation à gaucche d'amplitude j au champ de permutation, c'est-à-dire que, si le champ de permutation était égal à lig g 1-1 g 1 '" avant la rotation, il devient 'gr, g 1 g g,-+,' après la rotation Dans le cas o j est supérieur ou égal à r, on remplacera au préalable j par le reste de la division de j par r. Dans le cas o Cq est le codage binaire classique sur q bits, alors le procédé de conversion entre le codage binaire classique et le codage qui vient d'être défini est particulièrement simple fl suffit en effet de conserver les q bits de poids fort du codage binaire classique de x (ces q bits sont égaux au codage binaire classique de j), de transformer les r bits restants par un codage de Gray G, puis d'appliquer une rotation à gauche d'amplitude j sur ce dernier champ. Une autre possibilité avantageuse consiste à prendre pour Cq le codage de Gray Gq. A titre d'exemple, on présente le cas o N = 64, k = 6 et q = 2, et o C 2 est le codage binaire classique sur 2 bits Soit h 6 h 5 h 4 h 3 h 2 h 1 la décomposition binaire d'un entier x, j l'entier dont la décomposition binaire est h 6 h 5, x' l'entier dont la décomposition binaire est h 4 h 3 h 2 h 1 Le champ de référence est alors pris égal à h 6 h 5 Le champ de permutation est obtenu en appliquant une rotation à gauche d'amplitude j à G(x'). On obtient alors le tableau 1 suivant: TABLEAU 1 codage binaire classique codage selon l'invention 0 000000 000000 1 000001 000001 2 000010 000011 001111 001000 16 010000 010000 17 010001 010010 18 010010 010110 31 011111 010001 32 100000 100000 33 100001 100100 34 100010 101100 62 111110 111100 63 111111 110100 Pour décoder un entier codé par le procédé qui vient d'être décrit, on commence par effectuer un décodage du champ de référence, ce qui fournit un entier j Ensuite, on applique une rotation à droite de longueur j au champ de permutation Enfin, on effectue un décodage de Gray sur r bits du champ de permutation, ce qui fournit un entier x' L'entier recherché est alors égal à x'+j 2 r. En considérant l'exemple ci-dessus (tableau 1), et si l'on désire décoder le code constitué des bits '101000 ', on commence par décoder le champ de référence, égal à '10 ', ce qui fournit j = 2 on applique alors une rotation à droite de longueur 2 au champ de permutation, égal à '1000 ', ce qui donne '0010 ' On décode alors ce champ selon un code de Gray sur 4 bits, ce qui fournit y = 3 L'entier codé par le champ de comptage initial était donc 3 + 2 24 = 35 La décomposition binaire classique h 6 h 5 h 4 h 3 h 2 h 1 de cet entier est obtenue en conservant les deux bits de x poids fort, soit '10 ', et en appliquant une conversion du code de Gray vers le code binaire classique au champ '0010 ', ce qui donne '0011 ', soit au total '100011 '. Selon ce procédé, on vérifie bien que, lorsque l'on passe d'un entier à l'entier qui le succède, un seul élément binaire change de valeur dans le champ de permutation Exceptionnellement, un élément binaire change également dans le champ de référence De plus, lorsque le compteur a été entièrement parcouru, les éléments binaires du champ de permutation ont basculé à peu près autant de fois les uns que les autres Les éléments du champ de référence ont, eux, basculé très peu de fois. Incrémentation du compteur Pour passer du code d'un entier au code de l'entier successeur, autrement dit pour incrémenter le compteur, il n'est pas nécessaire ni même souhaitable de décoder l'entier initial puis de coder l'entier successeur Il suffit en effet d'appliquer la méthode suivante, présenté en ralation avec la figure 3. Tout d'abord, on effectue le décodage 31 de la valeur Q contenue dans le champ de référence On réalise ensuite une rotation 32 d'amplitude A, fonction de la valeur Q, de la séquence binaire contenue dans le champ de permutation, dans le sens contraire au sens du codage Ainsi, on obtient, dans le champ de permutation, la séquence codée correspondant à la valeur R, qu'il n'est pas nécessaire de décoder. En effet, il suffit d'incrémenter ( 33) cette séquence, selon la logique de codage choisie pour le champ de permutation Deux cas se présentent alors, selon que le test 34 indique que la nouvelle valeur R correspondant à la séquence incrémentée est nulle ou non. Si R est non nul, il suffit de pratiquer une nouvelle rotation 36 d'amplitude A sur cette séquence, dans le sens du codage, pour obtenir la séquence à affecter au champ de permutation Le champ de référence reste inchangé. En revanche, si la valeur R est devenue égale à 0, il faut alors effectuer l'incrémentation 35 de la valeur Q, selon la logique de codage utilisée pour le champ de référence Ensuite, on pratique une rotation 36 du champ de référence, d'amplitude AQ fonction de la nouvelle valeur Q. Il apparaît clairement que la méthode d'incrémentation fonctionne de façon équivalente lorsque les rotations sont remplacées par des permutations quelconques De même, il est à noter que les logiques de codage utilisées pour les deux champs peuvent être quelconques, identiques ou non. Dans l'exemple de codage décrit précédemment, la rotation a une amplitude Q Le procédé d'incrémentation est alors plus précisément le suivant. On commence par décoder le champ de référence, ce qui fournit un entier j, puis on applique une rotation à droite d'amplitude j au champ de permutation dont les bits deviennent gr g ensuite, on applique la fonction Incr (décrite précédemment) à ce champ Enfin, on applique une rotation à gauche d'amplitude j au champ de permutation De plus, si la fonction Incrr a eu pour effet de basculer g, de 1 à 0, alors on incrémente le champ de référence et on applique une rotation supplémentaire à gauche d'amplitude 1 au champ de permutation L'incrémen- tation du champ de référence n'est pas décrite ici, puisqu'elle dépend du codage Cq utilisé. Décrémentation du compteur Le principe de décrémentation d'un compteur est symétrique à celui de l'incrémentation On ne le précise ici que dans le cas particulier correspondant au mode de réalisation décrit en détail. On commence par décoder le champ de référence, ce qui fournit un entier j, puis on applique une rotation à droite d'amplitude j au champ de permutation, dont les bits deviennent gr g Ensuite, on applique la fonction Decrr à ce champ. Enfin on applique une rotation à gauche d'amplitude j au champ de permutation. De plus, si la fonction Decrr a eu pour effet de basculer g, de 0 à 1, alors on décrémente le champ de référence et on applique une rotation supplémentaire à droite d'amplitude 1 au champ de permutation La décrémentation du champ de référence n'est pas décrite ici, puisqu'elle dépend du codage Cq utilisé. Première variante de l'invention Dans une première variante de l'invention, on augmente légèrement le nombre total de bits du code de façon à diminuer encore le nombre de bascule- ments dans le champ de permutation. Cette variation est décrite ci-dessous dans le cas o N est une puissance de 2 (n= 2 k) On peut toujours se ramener à ce cas, en remplaçant N par le plus petit entier de la forme 2 k qui lui soit supérieur ou égal. Chaque entier x est codé à l'aide d'un champ C(x) de k+p éléments binaires, appelé code ou codage de x Ce champ est subdivisé en deux sous-champs: un champ dit de référence, constitué de q bits, et un champ dit de permutation, constitué de p+r bits, et situé à droite du champ de référence On a donc: k=q+r. Dans une utilisation avantageuse de cette invention, on a l'égalité p+r= 2 q. On a alors: k= 2 q+q-p Ainsi, lorsque q= 3 et p=l, k= 10 et n= 1024 On notera que lorsque p= 0, on retrouve l'invention de base. Les deux caractéristiques essentielles de cette variante sont les mêmes que pour l'invention de base, le taux de basculement étant toutefois plus faible Les notations sont également les mêmes. Le compteur est divisé en 2 q intervalles Il de longueur égale Cette longeur vaut 2 r. Pour coder un élément x de Io, qui est l'intervalle des entiers compris entre 0 et 2 r-1, le champ de référence est pris égal à Cq( 0) et le champ de permutation égal à O p I 1 Gr(x) o O p désigne un champ de p bits tous égaux à 0, et o I est le symbole de concaténation de champs d'éléments binaires. Plus généralement, on peut remplacer O p par une configuration fixe quelconque de bits. Pour coder un élément x de I 1, qui est l'intervalle des entiers compris entre 2 r et 2 2 r-1, le champ de référence est pris égal à Cq( 1) et le champ de permutation égal à O p I Gr(x-2 r) Puis on applique une rotation à gauche d'amplitude 1 au champ de permutation, c'est-à- dire que, si le champ de permutation était égal à "g+pg+ ' "gl" avant la rotation, il devient "gr+p-l ggr+p" après la rotation. Plus généralement, pour coder un élément x de Ii, le champ de référence est pris égal à Cq(j) et le champ de permutation égal à O p | I Gr(x-j 2 r) Puis on applique une rotation à gauche d'amplitude j au champ de permutation, c'est-à- dire, que si le champ de permutation était égal à "gr +pgr+p-l g avant la rotation, il devient "gr+p- glgr+p gr+p-j+li" après la rotation Dans le cas o j est supérieur * ou égal à p+r, on remplace au préalable j par le reste de la division de j par p+r. Dans le cas o Cq est le codage binaire classique sur q bits, alors le procédé de conversion entre le codage binaire classique et le codage qui vient d'être défini est particulièrement simple Il suffit en effet de conserver les q bits de poids fort du codage binaire classique de x (ces q bits sont égaux au codage binaire classique de j), de transformer les r bits restants par un codage de Gray Gr, de faire précéder les r bits résultants de p bits égaux à 0, puis d'appliquer une rotation à gauche d'amplitude j sur ce champ de p+r bits. Un autre choix avantageux consiste à prendre pour Cq le codage de Gray Gq. A titre d'exemple, on présente le cas o n= 16, k= 4, q= 2 et p= 2, et o C 2 est le codage binaire classique sur 2 bits Soit h 4 h 3 h 2 h 1 hl la décomposition binaire d'un entier x, j l'entier dont la décomposition binaire est h 4 h 3, x' l'entier dont la décomposition binaire est h 2 h 1 Le champ de référence est alors pris égal à h 4 h 3. Le champ de permutation est obtenu en appliquant une rotation à gauche d'amplitude j à G(x'), précédé de deux bits '0 '. On obtient donc le tableau suivant: TABLEAU 2 x codage binaire classique codage selon la première variante O 0000 000000 1 0001 000001 2 0010 000011 3 0011 000010 4 0100 010000 5 0101 010010 6 0110 010110 7 0111 010100 8 1000 100000 9 1001 100100 10 1010 101100 11 1011 101000 12 1100 110000 13 1101 111000 14 1110 111001 15 1111 110001 Pour décoder un entier codé par le procédé qui vient d'être décrit, on commence par effectuer un décodage du champ de référence, ce qui fournit un entier j Ensuite, on applique une rotation à droite de longueur j au champ de permutation Enfin, on effectue un décodage de Gray sur les r bits de poids faible du champ de permutation, ce qui fournit un entier x' L'entier recherché est alors égal à x'+j 2 r. Reprenant l'exemple ci-dessus, et si l'on désire décoder le code constitué des bits '101000 ', on commence par décoder le champ de référence, égal à '10 ', ce qui fournit j= 2 On applique alors une rotation à droite de longueur 2 au champ de permutation, égal à '1000 ', ce qui donne '0010 ' On décode alors le sous-champ '10 ' selon un code de Gray sur 2 bits, ce qui fournit y= 3 L'entier codé par le champ de comptage initial était donc 3 + 222 = 11 La décomposition binaire classique h 4 h 3 h 2 h 1 de cet entier est obtenue en conservant les deux bits de poids fort, soit '10 ', et en appliquant une conversion du code de Gray vers le code binaire classique au champ '10 ', ce qui donne '11 ', soit au total '1011 '. Les procédés d'incrémentation et de décrémentation décrits précédemment s'appliquent également à cette première variante. Seconde variante de l'invention La seconde variante présentée de l'invention s'applique plus particulière- ment au cas o on code un compteur destiné à être parcouru plusieurs fois, avec éventuellement possibilité d'interruption à chaque parcours. Cette variante est ci-dessus décrite dans le cas o N est une puissance de 2 (n= 2 r) On peut toujours se ramener à ce cas, en remplaçant N par le plus petit entier de la forme 2 r qui lui soit supérieur ou égal. Chaque entier x est codé à l'aide d'un champ C(x) de r+q éléments binaires, appelé code ou codage de x Ce champ est subdivisé en deux sous-champs: un champ dit de référence, constitué de q bits, et un champ de permutation, constitué de r bits, et situé à droite du champ de référence. Dans une utilisation avantageuse de cette invention, on a l'égalité r= 2 Ainsi, lorsque q= 1,2,3,4,5, alors r= 2,4,8,16,32, et n= 4,16,256, 16384,22, Les deux caractéristiques essentielles de cette variation sont les mêmes que pour l'invention de base Les notations sont également les mêmes On appelle x l'entier à coder. Lorsque le compteur est parcouru pour la première fois, le champ de référence est pris égal à Cq( 0) et le champ de permutation égal à Gr(x). Lorsque le compteur est parcouru pour la seconde fois, le champ de référence est pris égal à Cq(l) et le champ de permutation égal à Gr(x) Puis, on applique une rotation à gauche d'amplitude 1 au champ de permutation, c'est-à- dire que, si le champ de permutation était égal à "grgr, g 1 " avant la rotation, il devient "grl- ggr" après la rotation. Plus généralement, lorsque le compteur est parcouru pour la (j+l)-ème fois, le champ de référence est pris égal à Cq(j) (dans le cas o j est supérieur ou égal à r, on remplacera au préalable j par le reste de la division de j par r) et le champ de permutation égal à Gr(x) Puis, on applique une rotation à gauche d'amplitude j au champ de permutation, c'est-à-dire que, si le champ de permuta- tion était égal à "grgr-g gl" avant la rotation, il devient "grjgiggr'gj+î" après la rotation. A titre d'exemple, on présente le cas o le codage binaire classique sur 2 bits On obtient TABLEAU 3 x codage binaire classique n= 16, r= 4 et q= 2 et o C 2 est donc le tableau suivant: codage selon la seconde variante o O 0000 000000 1 0001 000001 Premier 2 0010 000011 parcours 1111 001000 0 0000 010000 001 0001 10010 Second 2 0010 010110 parcours 1111 010001 0 0000 100000 Troisième 1 00 01 100100 parcours 2 0010 101100 Quatrième parcours 14 1110 111100 1111 110100 Pour décoder un entier codé par le procédé qui vient d'être décrit, on commence par effectuer un décodage du champ de référence, ce qui fournit un entier j Ensuite, on applique une rotation à droite d'amplitude j au champ de permutation Enfin, on effectue un décodage de Gray sur k bits du champ de permutation, ce qui fournit l'entier x. Reprenant l'exemple ci-dessus, et si l'on désire décoder le code constitué des bits '101000 ', on commence par décoder le champ de référence, égal à '10 ', ce qui fournit j= 2 On applique alors une rotation à droite d'amplitude 2 au champ de permutation, égal à '1000 ', ce qui donne '0010 ' on décode alors ce champ selon un code de Gray sur 4 bits, ce qui fournit x= 3 L'entier codé par le champ de comptage initial était donc 3. Ainsi, dans cette seconde variante, la valeur contenue dans le champ de permutation correspond directement à la valeur du compteur, et la valeur contenue dans le champ de référence contient le nombre de parcours effectués de ce compteur. Si l'on désire interrompre un parcours donné et/ou remettre le compteur à zéro, alors on incrémente le champ de référence, et tous les bits du champ de permutation sont pris égaux à 0. Les procédés d'incrémentation et de décrémentation décrits peuvent s'appliquer à cette seconde variante de l'invention. REVENDICATIONS 1 Procédé de codage binaire de données numériques, caractérisé en ce que lesdites données sont codées sur deux champs ( 11,12) distincts d'éléments binaires, un champ de référence ( 11) et un champ de permutation ( 12), la séquence d'éléments binaires affectée audit champ de permutation ( 12) subissant une permutation ( 13; 23) fonction de la valeur contenue dans ledit champ de référence ( 11). 2 Procédé selon la revendication 1, caractérisé en ce que ladite permutation est une rotation ( 13; 23) dont l'amplitude est fonction de la valeur contenue dans ledit champ de référence ( 11). 3 Procédé selon l'une quelconque des revendications 1 et 2, caractérisé en ce que ladite permutation ( 13; 23) est calculée de façon à assurer un taux moyen de basculement sensiblement uniforme pour chacun des éléments binaires constitutifs dudit champ de permutation ( 12). 4 Procédé selon l'une quelconque des revendications 1 à 3, appliqué au codage de N données distinctes, lesdits champs de référence ( 11) et de permutation ( 12) comprenant respectivement q et r éléments binaires, caractérisé en ce que les conditions suivantes sont simultanément remplies le nombre total d'éléments binaires (q+r) est égal ou supérieur au nombre d'éléments binaires nécessaires au codage desdites N données distinctes selon le code binaire naturel; ladite valeur r est inférieure ou égale à 2 q. Procédé selon l'une quelconque des revendications 1 à 4, caractérisé enl ce que le codage d'une valeur N comprend les étapes suivantes: détermination ( 21) des valeurs Q et R correspondant respectivement au quotient et au reste de la division euclidienne de ladite valeur N par le nombre n R de valeurs distinctes qu'il est possible de coder dans ledit champ de permuta- tion ( 12); affectation ( 25) audit champ de référence ( 11) d'une première séquence d'éléments binaires, correspondant à ladite valeur Q, selon une première logique de codage; I affectation ( 22) audit champ de permutation ( 12) d'une seconde séquence d'éléments binaires, correspondant à ladite valeur R, selon une seconde logique de codage; permutation ( 23) dépendant de ladite valeur Q, de ladite seconde séquence d'éléments binaires dans ledit champ de permutation ( 12). 6 Procédé selon la revendication 5, caractérisé en ce que ladite permutation ( 23) est une rotation d'amplitude A fonction de ladite valeur Q. 7 Procédé selon la revendication 6 caractérisé en ce que ladite rotation ( 23) est une rotation d'amplitude Q. 8 Procédé selon l'une quelconque des revendications 1 à 7, caractérisé en ce que lesdites données numériques à coder forment une suite finie de valeurs évoluant séquentiellement. 9 Procédé selon l'une quelconque des revendications 5 à 8, caractérisé en ce qu'au moins ladite seconde logique de codage induit le basculement d'un nombre minimal d'éléments binaires dans le champ correspondant, lors du passage d'une desdites données à la donnée suivante et/ou précédente. Procédé selon la revendication 9, caractérisé en ce qu'au moins ladite seconde logique de codage correspond à un codage de Gray. 11 Procédé selon l'une quelconque des revendications 5 à 10, caractérisé en ce que ladite seconde logique de codage comprend les étapes suivantes: association d'une séquence d'éléments binaires à ladite valeur R; concaténation à ladite séquence d'éléments binaires d'au moins un élément binaire de valeur fixe. 12 Procédé selon l'une quelconque des revendications 1 à 11, du type appliqué au codage d'une suite de données destinée à être parcourue plusieurs fois, caractérisé en ce que ledit champ de référence ( 11) contient une séquence d'éléments binaires correspondant au nombre de parcours de ladite suite effectués, et en ce que ledit champ de permutation ( 12) contient une séquence d'éléments binaires correspondant à la donnée courante de ladite suite. 13 Procédé selon la revendication 12, caractérisé en ce qu'il comprend une étape de remise à zéro et/ou d'interruption de ladite suite, effectuant l'incrémenta- tion de la valeur contenue dans ledit champ de référence ( 11), et l'affectation audit champ de permutation ( 12) de la séquence d'éléments binaires correspondant à la première donnée de ladite suite. 14 Procédé d'incrémentation d'une suite de données codées selon le procédé de l'une quelconque des revendications 5 à 13, caractérisé en ce qu'il comprend les étapes suivantes: détermination ( 31) de ladite valeur Q contenue dans ledit champ de référence ( 11), selon ladite première logique de codage; réalisation ( 32) d'une permutation de décodage dépendant de ladite valeur Q, de ladite séquence d'éléments binaires contenue dans ledit champ de permutation ( 12), inverse de la permutation de codage; incrémentation ( 33) selon ladite seconde logique de codage de la séquence d'éléments binaires obtenue après ladite permutation; si la valeur, selon ladite seconde logique de codage, de la séquence d'éléments binaires incrémentée correspond à la première donnée de ladite suite ( 34), incrémentation ( 35) selon ladite première logique de codage de la séquence d'éléments binaires contenue dans ledit champ de référence ( 11) et détermination de la valeur Q correspondant; réalisation ( 36) d'une permutation de codage dépendant de ladite valeur Q de ladite séquence d'éléments binaires incrémentée contenue dans ledit champ de permutation ( 12). Procédé de décrémentation d'une suite de données codées selon le procédé de l'une quelconque des revendications 5 à 13, caractérisé en ce qu'il comprend les étapes suivantes: détermination de la valeur Q contenue dans ledit champ de référence, selon ladite première logique de codage; réalisation d'une permutation de décodage dépendant de ladite valeur Q, de ladite séquence d'éléments binaires contenue dans ledit champ de permutation, inverse de la permutation de codage; décrémentation selon ladite seconde logique de codage de la séquence d'éléments binaires obtenue après ladite permutation; si la valeur selon ladite seconde logique de codage de la séquence d'éléments binaires décrémentée correspond à la dernière donnée de ladite suite, décrémentation selon ladite première logique de codage de la séquence d'éléments binaires contenue dans ledit champ de référence, et détermination de la valeur Q correspondant; réalisation d'une permutation de codage dépendant de ladite valeur Q, de ladite séquence d'éléments binaires décrémentée contenue dans ledit champ de permutation.