FR 2642205 A1 19900727 FR 8900749 A 19890123 DESCRIPTION PROCEDE DE COMPTAGE-DECOMPTAGE, NOTAMMENT POUR PAIEMENT ELECTRONIQUE, UTILISANT UNE MEMOIRE EEPROM. La présente invention a pour objet un procédé de compt-age-décomptage. Bien que pouvant s'appliquer à des grandeurs queLconques (nombre d'impuLsions, de pieces détachées, d'objets divers...), Le procédé de L'invention trouve une application particuLière au comptage-décomptage de valeurs fiduciaires, autrement dit de monnaie. Le procédé de L'invention est donc, en particuLier, un procédé de paiement éLectronique. Le fonctionnement de nombreux systemes actuels de paiement éLectronique de petites sommes consiste en l'utiLisation de cartes à mémoire dites "porte-jetons". On sait que La carte à mémoire est un support pLastique dans LequeL est impLanté un composant éLectronique contenant un microprocesseur. CeLui-ci contient une mémoire de donnees de pLusieurs centaines de bits réalisée en technoLogie "EPROM". IL s'agit d'une mémoire à Lecture seuLement, programmabLe éLectriquement une fois (ElectricaLLy Programmable Read OnLy Memory). Le traitement effectué dans la carte à mémoire "porte-jetons" consiste à faire correspondre à chaque bit d'une zone de La mémoire de données, une unité de paiement dite "jeton". Un terminal point de vente, muni d'un Lecteur de cartes, execute une transaction par "griLLage" de bits dans la mémoire de données. Le "grilLage" d'un bit consiste à faire passer électri- quement un éLément binaire de La mémoire de L'état binaire "1" correspondant au crédit d'une unité à L'état binaire "O" correspondant à un crédit nuL. La mémoire de données étant réalisée en technoLogie "EPROM", ce changement d'état est éLectriquement irréversibLe. Les défauts de ce système sont multiples : d'une part, il n'est pas possible de recharger la carte, et d'autre part, La consommation de bits est élevée Le nombre de bits griLLés est en effet égaL au nombre d'unités à débiter. L'invention décrite dans FR-A-2 591 007 remédie à ces inconvénients. A cette fin, La mémoire EPROM est partagée en deux zones d'égaLe capacité. La structure physique et Logique de L'EPROM permet d'associer à chaque bit un rang. Deux bits sont dits homologues s'iLs ont meme rang dans Les deux zones ; iLs forment un coupLe noté (x, y) où x est La vaLeur binaire (0 ou 1) du bit de La première zone, dite "zone de paiement" et où y est La va Leur binaire du bit de La deuxième zone, dite "zone de rechargement". SeLon ce document, Le crédit disponible dans La carte s'exprime en unités, Le nombre d'unités disponibLes étant égaL au nombre de coupLes (1, 1) dont le rang est à La fois supérieur à 1 ou au rang du coup Le (0,1) de rang Le pLus éLevé, si un teL coupLe (0,1) existe, et inférieur au rang d'un coupLe Limite déterminé. Bien que donnant satisfaction, ce procédé présente un inconvénient tenant au fait que, seLon L'unité choisie, la taille de la mémoire utile doit être assez grande. Par exempLe, iL est nécessaire d'utiliser une mémoire de 140 000 bits pour créditer La carte de 700F en choisissant comme unité Le centime. L'invention décrite dans FR-A-2 608 297 remédie à cet inconvénient. A cette fin, eLLe utilise pLusieurs espaces mémoire formés chacun d'une zone de paiement et d'une zone de rechargement. Ces espaces mémoire sont rangés seLon La va Leur que L'on attribue à Leurs couples libres (1,1). Ces valeurs sont des muLtipLes d'une unité choisie. Par exempLe, un premier espace mémoire aura pour unité Le centime et un second espace mémoire aura pour unité Le franc. L'utilisation d'un espace mémoire suppLémen- taire, ayant une unité pLus faible, permet d'obtenir la précision souhaitée, sans pour autant augmenter La capacité de La mémoire. Par exempLe, on pourra effectuer des transactions financières au centime prés, sans avoir une mémoire de très grande capacité comme dahs L'art antérieur. Par aiLLeurs, L'espace mémoire suppLémentaire de faibLe unité n'a pas à présenter une capacité égaLe à La somme de toutes Les unités qu'iL faudra pouvoir traiter. En effet, par un mécanisme de retenue, on modifiera Le soLde de L'espace mémoire de pLus forte vaLeur d'une unité suppLémentaire lorsque Le montant qui serait à écrire dans L'espace mémoire de faibLe va Leur atteindrait ou dépasserait L'uni té de va Leur supérieure (par exempLe Lorsque ce montant atteint ou dépasse 100 centimes). IL suffit que L'espace mémoire de pLus faibLe vaLeur présente un nombre suffisant de coupLes Libres à L'état (1,1) pour qu'une transaction impLiquant des centimes soit toujours possibLe. La présente invention a pour but de perfectionner ces procédés grace à l'utilisation d'une mémoire EEPROM, c'est-à-dire éLectriquement effaçabLe, au Lieu d'une mémoire EPROM, qui n'est pas effaçabLe éLectriquement, et n'est programmabLe éLectriquement qu'une seuLe fois. L'utiLisation d'une mémoire EEPROM pose des probLèmes particuLiers lorsqu'on veut tirer tout le profit qu'on est en droit d'attendre de ce nouveau composant. IL ne s'agit donc pas de substituer une mémoire EEPROM à une mémoire EPROM mais de concevoir de nouveLLes opérations de crédit et de débit. Avec une mémoire EEPROM, iL est aisé de modifier un grand nombre de fois (10 000 fois environ) Les données enregistrées et par suite de compter des vaLeurs sur un ou pLusieurs octets. Le mécanisme de comptage Le pLus simpLe consisterait à programmer en code binaire, par exempLe sur deux octets de La mémoire, des vaLeurs aLLant Jusqu'à 65536. A chaque programmation d'une nouveLLe vaLeur, soit pLus petite (débit), soit pLus grande (crédit), que La précédente, certains éLéments binaires passeront de O à 1 (écriture) et d'autres de 1 à O (effacement). IL n'y aura donc pas de différenciation en ce qui concerne Les commandes de La mémoire, qui sont respectivement une écriture et un effacement. Les deux commandes devront servir qu'iL s'agisse d'un débit ou d'un crédit. C'est un inconvénient important pour Les appLications comme Le paiem-ent éLectronique par carte porte-monnaie, où Les crédits du compteur ne sont pas effectués dans Les mêmes conditions que Les débits. En effet, Le porte-monnaie éLectronique n'est crédité que si L'émetteur de La monnaie L'autorise, aLors que Le débit est Libre. Ainsi, Les terminaux de débit (Les "monnayeurs"), moins sécurisés que Les terminaux de crédit, sont de conception nettement pLus simpLe. Ce mode d'utiLisation à "sens unique" du compteur est égaLement nécessaire pour d'autres appLications que Le paiement, comme Le comptage kiLométrique d'un véhicuLe, d'un voLume d'eau consommée, d'une puissance éLectrique consommée,... Cette difficuLté est faciLement résoLue dans le cas des cartes à microprocesseur, car Le programme de commande du microprocesseur, par conception, est apte à différencier La commande "débit" de -La commande "crédit". La programmation du compteur n'est donc pas accessibLe de L'extérieur de La carte, mais entièrement gérée par son LogicieL. AppLiqué aux cartes à Logique câbLée comme Le vise La présente invention, Le probLème devient nettement pLus compLexe. Le but de L'invention est justement de remédier à cet inconvénient en présentant un procédé de comptage pour mémoires EEPROM, différent du comptage binaire et qui permet de différencier Le débit du crédit tout en étant faciLement réaLisabLe en Logique câbLée. L'invention peut utiLiser par exempLe (mais non excLusivement) un circuit du commerce connu sous Le nom "TS1301" ST et commerciaLisé par SGS-THOMSON. Le circuit TS1301 comprend deux commandes de programmation de La mémoire EEPROM : - une commande d'écriture bit à bit (passage de L'état binaire 0 à 1), - une commande d'effacement par zone muLtipLe de 16 bits minimum (passage de 1 à 0). Dans Le procédé de comptage de L'invention, Le débit du compteur n'est possibLe que si L'on écrit dans La mémoire (passage d'un état 0 vers un état 1) ; Le crédit nécessite L'effacement de La mémoire (passage de L'état 1 vers L'état 0). SeLon L'invention, on s'y prend aLors de La manière suivante. 'A L'état initiaL, Les ceLLuLes de La mémoire sont toutes à 0. Sur un octet (par exempLe pour des montants aLLant jusqu'à 256) est écrit, en code binaire, Le compLément du montant crédité. La mémoire est ensuite partagée en deux zones de comptage : - une première zone représente La zone de comptage des unités de poids fort (U) ; sa Longueur est égaLe à La va Leur du crédit notée dans L'octet précédent (n unités de poids fort = n bits) ; à chaque bit de La zone est associé un rang ; Le débit de n unités consis te à écrire Le nième bit (en fait Les n bits peuvent etre écrits) à partir du dernier bit à L'état Logique 1 ou à partir du début de La zone s'iL n'y a pas encore de bit à 1 ;Le soLde est donné par Le nombre de bits à L'état O entre Le dernier bit à 1 et La fin de La zone ; - une deuxième zone représente La zone de comptage des unités de poids faible (u) ; à chaque coup Le de bits ou doubLet, noté (x, y) compté à partir du début de La zone est associé un rang ; chaque doublet peut prendre trois états : - Libre : (O, 0), - marqué : (1, O) ou (O, 1), - annulé : (1, 1). La deuxième zone a au moins un nombre de doublets égaL au nombre d'unités faibles dans une unité grande, et de préférence davantage pour tenir compte des doublets qui seront annuLés. L'écriture d'un montant dans cette zone de n unités consiste à faire passer, à compter du dernier doublet à L'état (1, O) ou du début de La zone s'iL n'y en a pas, Le nième doublet Libre de L'état (O, 0) à L'état marqué (1, O). Les montants écrits dans cette zone sont des vaLeurs qui s'ajoutent au soLde Lu dans La premiere zone (on peut prendre La convention inverse, Le montant écrit se soustrayant aLors du solde Lu dans La première zone). Si Le montant totaL (N) à écrire dans cette zone dépasse La va Leur de L'unité de La zone de comptage des unités (U) de poids forts, une unité de poids fort est ajoutée au solde de La premiere zone ou retranchée au débit à effectuer (ou L'inverse si La convention est inverse). Le nouveau montant restant à écrire dans La deuxième zone est (n = N-U). Si Le montant à débiter (d) dans cette zone est inférieur ou égal au montant écrit (n), Le nouveau montant restant à écrire dans La deuxième zone est m = n - d. Si Le montant à débiter (d) dans cette zone est supérieur au montant écrit (n), une unité (U) de poids fort est ajoutée au débit à effectuer dans La première zone, Le nouveau montant restant à écrire dans La deuxième zone étant égaL au montant écrit (n) additionné de La va Leur (U-d), m = n+ U - d. Le nouveau montant restant à écrire dans La deuxième zone est obtenu en annuLant Le marquage précédent, en faisant passer Le doubLet marqué de L'état (1,0) à L'état annuLé (1,1) et en faisant passer Le mieme coup Le Libre à compter du début de La zone de L'état (û,O) à L'état (1,0). Pour effectuer un nouveau versement d'un montant C', on utilise La connexion d'effacement de la mémoire EEPROM pour effacer La mémoire en totaLité (Les 1 deviennent des 0). On charge aLors un crédit d'un montant égaL à C' auquel on ajoute le soLde de La mémoire avant effacement. De toute façon, Les caractéristiques de L'invention apparaîtront mieux à La Lumière de La description qui suit. Cette description se réfère à des dessins annexés sur lesquels - La figure 1 montre L'état initiaL de La mémoire, - La figure 2 illustre un chargement de 10F, - La figure 3 iLLustre un premier débit de 2,4F, - La figure 4 iLLustre une première opération pour une deuxième opération de débit de 5,4F, - La figure 5 iLLustre une deuxième opération pour ce deuxième débit, - La figure 6 iLLustre une troisième opération pour ce deuxième débit, - La figure 7 illustre une première opération pour un nouveau versement de 11F, - La figure 8 illustre une deuxième opération pour ce nouveau versement, - La figure 9 montre un orgranigramme de gestion du compteur, - La figure 10 montre un organigramme de rechargement. Dans ce qui suit, on suppose, à titre expLicatif et nuLLement Limitatif, que L'unité de poids fort est Le franc et L'unité de poids faibLe La dizaine de centimes. On voit sur La figure 1 une série de "O" représentant Le contenu de toutes Les ceLLuLes de La mémoire. Pour charger C = 10F dans La mémoire, on modifie Le contenu de ceLLe-ci comme illustre sur La figure 2 :on écrit un octet égaL au compLément à deux, soit 11110101 (zone marquée). La première zone de comptage marquée ZI contient autant de bits que Le montant écrit, en L'espèce 10. La zone Z2 constitue La seconde zone de comptage. ELLe est formée de doubLets qui sont tous de type (0, 0). Une première opération de débit est iLLus- trée sur La figure 3, dans Le cas où L'on débite 2,4F. Pour ce La, on débite 3 francs et on crédite 6 dizaines de centimes. Pour ce La, on écrit un "1" au rang 3 dans La zone Z1 (bit B1) (de sorte que Le crédit en francs passe de 10 à 7) (on pourrait écrire aussi bien trois "1") et on écrit un doubLet (0, 1) au sixième rang de La zone Z2 (doubLet D1), ce qui correspond à un soLde de 60 centimes, (avec une convention inverse on marquerait Le quatrième doubLet dans Z2 et Le deuxième bit dans Z1). Une deuxième opération de débit, de 5,4F, est illustrée par Les figures 4, 5 et 6. IL faut diminuer de cinq unités Le soLde en unites de poids fort et de quatre unités Le soLde de poids faible : - on annule d'abord Le sixième doublet (1, O) (D1) en écrivant un second "1" , ce qui donne (1, 1) (D2) Figure 4), ce doublet D2 n'etant pLus pris en compte par La suite, puis on marque Le deuxième doubLet (car 6-4 = 2) en Le faisant passer à (10) (soit D3) (Figure 5), - iL reste à débiter La première zone Z1 de cinq unités, ce qui s' effectue en écrivant un "1" au cinquième bit après Le "1" déjà écrit (Figure 6) (bit B2). Après ce deuxième débit, Le soLde est de 2,2F (iL reste deux "0" dans La zone Z1 et deux doublets dans La zone Z2). Pour effectuer un nouveau versement de 11F, on ajoute 11F au soLde, pour Le porter à C' = 13,2F. Pour ceLa, on efface d'abord toute La mémoire (Fig. 7) mettant ainsi à profit Les propriétés des mémoires EEPROM, puis on écrit Le compLément de 13 dans La zone A (soit C'= 11110010), ce qui conduit à une première zone Z1 ayant treize ceLLuLes à "O", et on marque Le deuxième doublet à (1, O) dans La zone Z2 (D3). Après cette description, on voit que L'invention satisfait aux exigences de sécurité en La matière. L'écriture d'un nouveau crédit consiste à effacer toute La zone de comptage et à réécrire un nouvel octet de crédit égaL au soLde restant avant rechargement augmente du montant versé. L'effacement de La zone A est conditionne par La présentation preaLabLe d'un mot de passe correct. La modification de L'octet crédit par "écriture" (un 0 passe à 1), ne peut qu'entraîner une diminution du crédit. Le crédit écrit dans La zone des petites unités peut être modifie par marquage apres chaque transaction d'un nouveau crédit maximum inférieur à L'un-ité de poids fort. Cependant, en choisissant par exempLe L'unité de poids fort égale au pLus petit paiement admis (par exempLe 50 centimes), Le nombre de marquages (ou débits) écrit dans La zone des petites unités doit être obLigatoirement pLus petit que ou égaL à ce Lui de La zone Z1 des unités de poids fort. A titre iLLustratif queLques ordres de grandeur des capacités mémoire utiLes peuvent être in diqués. Pour un rechargement moyen de 100 francs, un débit moyen de 2,5 francs, Les francs pour unité de La zone Z1, Les dizaines de centimes pour La zone Z2, iL faut 8 + 100 + 80 + 18, soit 206 bits au totaL (c'est La capacité mémoire disponibLe sur Le circuit TS1301). Ce circuit est Limité à 64 effacements, Le montant totaL rechargé est donc de 6400 francs. Pour un rechargement moyen de 500 francs, un débit moyen de 2 francs, Les 1/2 francs pour unité de La zone Z1, Les centimes pour unité de La zone Z2, iL faut 9 + 200 + 98 + 500, soit 807 bits au totaL. NatureLLement, ce qui vient d'être dit pour Les francs et Les centimes est vrai pour La monnaie américaine ou canadienne (doLLars et cents ou dizaines de cents), pour Les yens et ses sous-muLtipLes, etc... Par aiLLeurs, on pourrait utiLiser pLus d'un octet dans La zone A pour charger Le montant des versements. IL est cLair, en outre, que Les "O" et Les "1" évoqués dans La description qui précède ne désignent pas des quantités mais des états Logiques. Ce sont donc de pures conventions. On pourra aisément renverser ce L Les-ci et UtiLiser, en Leurs Lieu -et pLace, des "1" et des "0". IL va de soi enfin qu'on peut Légèrement modifier certaines opérations du procédé décrit par diverses conventions sur Lkes soLdes, sans pour ceLa sortir de L'invention ; Le nombre de doublets à (O, O) avant un doublet marqué (1, 0) peut être considéré comme étant soit à ajouter, soit à soustraire au soLde de La zone de poids fort. On peut également imaginer des mécanismes de retenue : pour débiter 80 centimes, on peut debiter 80 centimes s'il existe au moins 8 doublets disponibLes dans Z2 ; mais on peut aussi débiter 1F dans Z1 et créditer 20 centimes dans Z2.L'essentieL reste que Le passage d'un "0" à un "1" (qui est une opération peu sécurisée), ne soit jamais équivaLente à un crédit, mais entraîne ipso facto une diminution du solde. La figure 9 iLLustre un organigramme de gestion du compteur. La signification des bLocs est La suivante 100 : Lecture de La mémoire dans La carte, 102 : caLcuL du montant crédité, 104 : calcul du soLde dans La première zone SO, 106 : caLcuL du soLde dans La deuxième zone S1, 108 : calcul du soLde dans La carte S=SO+S1, 110 : saisie du débit d, 112 : d est-iL inferieur ou égaL à S ? 114 : caLcuL du nouveau soLde Si=S-d, SO+S1:=S, 116 : écriture dans La deuxième zone du nouveau soLde S1, 118 : écriture dans La première zone du nouveau solde SO, 120 : Fin. Les cercles D et R indiquent des programmes de rechargement. La figure 10 iLLustre un programme de rechargement. La signification des différents bLocs est La suivante 200 : saisie du montant du versement V, 202 : caLcuL du nouveau crédit Si=S+V:, SO+S1=Si, 204 : Si est-iL inférieur ou egaL à CM ? où CM est Le crédit maximum rechargeabLe dans La carte, 206 : présentation du mot de passe émetteur de La carte, 208 : Le code est-iL correct ? 210 : y a-t-iL un autre versement ? 112 : fin 214 : effacement de La mémoire, 216 : écriture du compLément de SO en code binaire, 218 : écriture de S1 dans La deuxième zone. REVENDICATIONS 1. Procédé de comptage-décomptage, notamment pour paiement éLectronique de vaLeurs fiduciaires, au moyen d'opérations appliquées à une mémoire possedant des cellules de mémorisation de 1 bit, caractérise par Le fait qu'on utilise une mémoire de type EEPROM (mémoire à Lecture seulement effaçable éLectriquement), cette mémoire ayant une entrée d'écriture et une entrée d'effacement, et par Le fait qu'iL comprend Les opérations suivantes a) on met initiaLement Le contenu de toutes Les cellules à 0, b) pour charger un crédit d'un montant C, on écrit Le complément à 2 de C (soit C dans une zone (A) de La mémoire constituée d'au moins un octet, on définit une première zone de comptage tZ1) ayant un nombre de. bits à O égaL à C et on réserve Le reste de La mémoire comme seconde zone de comptage (Z2) et, dans cette seconde zone (Z2), on traite Les cellules deux à deux pour constituer des doublets de bits, chaque doublet prenant L'une queLconque des vaLeurs (O, O), (1,0), (0,1), (1,1), c > on attribue La première zone (Z1) au comptage d'unités ayant un poids fort et La seconde zone (Z2) au comptage d'unités ayant un poids faibLe, d) pour effectuer un premier débit d'un montant égaL à M unites (U) de poids fort et N unites (u) de poids faibLe, on utiLise La connexion d'écriture de La mémoire pour écrire au moins un "1" au (M+1)ième bit de La premiere zone (Z1) et L'écriture d'un "1" dans Le (U-N)ième doublet (D1) pour Le faire passer de (O, 0) à (1, O) ou (O, 1), e) Le soLde est pris égaL au nombre de bits encore à 0 apres Le dernier bit à "1" de La première zone (Z1), nombre auqueL est ajouté ou soustrait Le nombre de doublets à (O, O) entre Le début de La seconde zone et Le premier doubLet (D1) possédant un "1", f) pour effectuer un second débit, on écrit d'abord dans La seconde zone (Z2) un second "1" dans Le dernier doubLet qui en possède déjà un, pour Le faire passer à (1, 1) et on ne considère pLus ce doubLet par La suite, puis on réitère L'opération précédente d) en prenant comme borne de départ dans La première zone (Z1) Le dernier bit écrit à "1" et en tenant compte du soLde d'unités de poids faibLe, ces deux dernières étapes pouvant être chronoLogiquement inversées, g) pour effectuer un nouveau versement, on utiLise La connexion d'effacement de La mémoire pour tout effacer La mémoire et remettre à "O" tous Les bits des zones A, Z1, Z2, on ajoute Le soLde de La mémoire avant effacement au montant à verser et on charge Le montant obtenu C' par L'opération b).