Brevet FR2705811A1 — publié le 19941202

PROCEDE DE FONCTIONNEMENT D'UNE CARTE A MICROCIRCUIT ET CARTE CORRESPONDANTE L'invention concerne les cartes à microcircuit, et plus particulièrement celles qui comportent un microprocesseur capable d'effectuer des tâches de traitement de données. Les communications de données entre une carte à microcircuit et l'environnement extérieur se font le plus souvent en mode série, les bits d'information à transmettre à la carte arrivant successivement sur une entrée de données (qui est d'ailleurs le plus souvent une entrée/sortie). Les protocoles d'échange sont alors définis par des normes pour que la carte puisse reconnaître les signaux qui arrivent. La norme ISO 7816-3 est un exemple de protocole d'échange qui repose sur le principe suivant 1. la carte est en attente de message et scrute de façon répétitive la ligne d'entrée; 2. dès qu'un changement d'état apparaît sur la ligne et est reconnu comme tel, la carte effectue l'acquisition des bits successifs qui apparaissent sur la ligne sous forme de niveaux de tension haut ou bas; ces bits successifs définissent des octets d'un message transmis à la carte. La phase d'acquisition se résume alors de la façon suivante a) la carte écoute la ligne; si un changement d'état apparaît, elle attend la moitié de la période moyenne de transmission des bits et ouvre une fenêtre d'échantillonnage sur le signal d'entrée; cette période est définie par la norme; elle est généralement de 104 microsecondes dans la norme ci-dessus; la carte ouvre donc une fenêtre d'échantillonnage au bout de 52 microsecondes après le changement d'état détecté; b) un échantillon de signal est lu par la carte et mémorisé sous forme d'une valeur de bit correspondant au niveau haut ou bas échantillonné; c) la carte attend une période moyenne d'un bit (104 microsecondes); d) elle répète les actions b) et c) jusqu'à obtenir un nombre de bits permettant de composer un octet; e) elle repasse à l'étape a). Le temps d'acquisition d'un octet est de l'ordre de la milliseconde pour un temps d'acquisition de bit de 104 microsecondes. Les attentes des temps de bit sont des attentes passives. Le programme du microprocesseur exécute une boucle d'attente un nombre déterminé de fois pour attendre le temps qu'il faut pour placer l'instant d'échantillonnage au milieu de la durée d'un temps d'acquisition de bit. Le codage du temps d'attente dépend du jeu d'instructions et des modes d'adressage du microprocesseur de la carte. Cependant, on peut évaluer le rapport entre le temps de traitement (acquisition + mémorisation d'un bit) et le temps d'attente à environ 1/9. Sur une milliseconde de temps d'acquisition d'un bit, le temps d'attente est d'environ 900 microsecondes. Il est souhaitable d'utiliser ce temps d'attente pour effectuer des traitements dans la carte, indépendamment de l'acquisition des bits d'entrée, que ces traitements soient ou non liés à cette acquisition. Des traitements indépendants de l'acquisition de données peuvent consister par exemple en un contrôle de l'intégrité de certains fichiers; des traitements dépendants de l'acquisition peuvent consister à effectuer une signature des données qui arrivent, au fur et à mesure qu'elles arrivent. La signature peut en effet reposer sur des fonctions mathématiques appliquées aux octets du message. On peut donc concevoir que la carte exécute cette fonction sur un octet de rang i pendant la phase d'acquisition de l'octet de rang suivant i+1. Des traitements effectués pendant la phase d'acquisition de données peuvent être particulièrement intéressants dans le cas où les programmes de traitement de la carte sont relativement lents et dans le cas où de nouvelles données arrivent fréquemment. L'invention propose donc un procédé pour utiliser au mieux les temps d'attente entre l'acquisition d'un bit et l'acquisition d'un bit suivant sur l'entrée de signal d'une carte a microprocesseur. Pour cela, l'invention propose un procédé de fonctionnement de carte à microprocesseur, comprenant des étapes d'acquisition de bits de données sur une entrée de signal de la carte et des étapes de traitement de données exécutées par le microprocesseur, caractérisé en ce que le microprocesseur exécute de manière récurrente et périodique une étape d'acquisition d'un bit et une étape de traitement de données, en ce que l'étape d'acquisition de bit comporte l'exécution par le microprocesseur d'un sous-programme de temporisation logicielle de durée variable, puis un échantillonnage du niveau de signal présent sur l'entrée et l'acquisition d'un bit présent à ce moment sur l'entrée, et enfin le lancement de l'exécution de l'étape de traitement de données, et en ce que 1' étape de traitement de données comporte l'exécution par le microprocesseur d'une partie de tâche logicielle de durée déterminée pouvant varier d'une fois à l'autre dans la récurrence, puis le chargement dans le sous-programme de temporisation logicielle d'une nouvelle valeur de temporisation fonction de ladite durée déterminée, puis le lancement de l'exécution d'une nouvelle étape d'acquisition. La valeur de temporisation logicielle chargée dans le sous programme de temporisation est de préférence telle que les instants d'échantillonnage se répètent à intervalles périodiques (par exemple 104 microsecondes pour respecter la norme mentionnée ci-dessus). L'invention concerne également une carte à microprocesseur comportant les moyens nécessaires à ce mode de fonctionnement, à savoir - des moyens pour exécuter de manière récurrente et périodique une tâche d'acquisition de bit sur une entrée de donnée, ces moyens comportant un programme de temporisation logicielle de durée variable-, des moyens d'échantillonnage de signal contrôlés par le microprocesseur pour effectuer l'échantillonnage après la temporisation, et des moyens de mémorisation d'un bit correspondant au niveau de signal échantillonné, - des moyens pour faire exécuter par le microprocesseur, après la tâche d'acquisition et avant une tâche d'acquisition suivante dans la récurrence, une tâche de traitement de données de durée déterminée et pouvant varier d'une fois à l'autre dans la récurrence, ces moyens comportant un programme de chargement d'une valeur de durée dans le programme de temporisation logicielle, cette valeur étant fonction de ladite durée déterminée. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit et qui est faite en référence aux dessins annexés dans lesquels - la figure 1 représente le circuit d'une carte à puce; - la figure 2 représente un chronogramme des étapes d'acquisition de bits; - la figure 3 représente les tâches effectuées pendant un temps d'acquisition de bit. Sur la figure 1 on a représenté schématiquement un circuit intégré de carte à puce à microprocesseur, destiné à être placé dans une carte ayant des contacts d'accès permettant l'échange de données entre le circuit intégré et un lecteur dans lequel la carte est insérée. Le circuit comporte un microprocesseur MP, des mémoires volatiles de travail M1 (RAM) et des mémoires non volatiles (ROM, EEPROM) M2, M3, contenant des programmes et/ou des données à conserver entre deux utilisations de la carte. Le circuit intégré peut communiquer avec le lecteur par des contacts, par exemple six contacts parmi lesquels au moins un contact d'entrée/sortie de données I/O. Les autres contacts peuvent être selon les cas des contacts de réception de tensions d'alimentation (VCC, VSS), d'horloge (CLK), d'instructions, de réinitialisation, etc. Le contact I/O peut être relié à un circuit d'interface périphérique IP contrôlé par le microprocesseur. La communication vers la carte se produit selon un protocole qui est le suivant 1. la carte scrute la ligne d'entrée I/O, c'est-à-dire que le microprocesseur vérifie périodiquement si un changement de niveau de potentiel apparaît sur la ligne. Si c'est le cas, cela déclenche l'exécution par le microprocesseur d'une commande activant une fenêtre d'échantillonnage au bout d'une durée prédéterminée après le changement d'état détecté; l'intervalle de temps est fixé en fonction de la norme : on s'arrange pour que la fenêtre d'échantillonnage soit placée au milieu de l'intervalle de temps qui sépare en principe l'apparition de deux bits consécutifs; à titre d'exemple, dans la norme ISO 7816-3, l'intervalle de temps qui sépare deux échantillons est de 104 microsecondes, et le microprocesseur va commander l'émission par le circuit d'interface IP d'une fenêtre d'échantillonnage étroite (quelques microsecondes par exemple) centrée autour d'un instant situé 52 microsecondes après la détection d'un changement d'état sur l'entrée I/O. 2. la carte lit un échantillon du niveau de tension présent sur l'entrée I/O pendant la fenêtre d'échantillonnage et mémorise l'état du bit correspondant au niveau lu; 3. elle attend une durée d'acquisition de bit, c'est-à-dire la durée de la période de transmission des bits (104 microsecondes) et elle produit une nouvelle fenêtre d' échantillonnage; 4. elle répète les actions 2 et 3 jusqu'à obtenir un nombre de bits lui permettant de composer un octet; 5. elle repasse à l'étape 1 pendant un nombre de fois fini correspondant au nombre d'octets du message envoye. La figure 2 représente un diagramme temporel correspondant à ce protocole. Sur la ligne a de la figure 2, on voit un exemple d'évolution du niveau de tension sur la ligne d'entrée I/O. Sur la ligne b on voit les fenêtres d'échantillonnage établies sous la commande du microprocesseur. Sur la ligne c on a représenté les bits lus et mémorisés par la carte. On suppose qu'un changement d'état est détecté à l'instant tO; le microprocesseur commande l'ouverture d'une fenêtre d'échantillonnage à un instant tl qui correspond à t0+52 microsecondes, puis des fenêtres toutes les 104 microsecondes, c'est-à-dire aux instants t3, t5, t7. La durée de transmission d'un bit étant de 104 microsecondes, on a marqué par les instants t2, t4, t6 les instants où un nouveau bit est en principe émis. Le premier bit débute à t0 et les instants t0, t2, t4, t6 sont espacés de 104 microsecondes les uns des autres. Les fenêtres d'échantillonnage sont placées au milieudes intervalles de temps définis par ces instants. Les bits lus pendant les fenêtres d'échantillonnage sont indiqués à la ligne c : 1, 1, 0, 1, 0, etc. Le microprocesseur exécute une série d'instructions pour ces phases d'acquisition de bit commande d'ouverture d'une fenêtre d'échantillonnage, lecture et stockage en mémoire d'un bit d'information lu. Mais la durée d'exécution de ces instructions est très inférieure à la durée de 104 microsecondes qui sépare deux instants de lecture de bit. Selon l'invention, on va profiter de cela pour faire travailler le microprocesseur à d'autres tâches que l'acquisition proprement dite, et cela sans utiliser de séquenceur câblé qui ne permettrait pas d'optimiser l'utilisation du temps disponible et qui de plus impliquerait un surcoût du circuit intégré. Pour cela, on prévoit que le microprocesseur effectue la séquence périodique suivante, répétée pour chaque nouvelle acquisition de bit en sachant que les bits arrivent sur l'entrée à intervalles périodiques 1. Etape d'acquisition de bit (tâche logicielle TA) l.a. séquence d'attente d'une durée variable, pilotée par un temporisateur logiciel dans lequel a été préalablement chargé par programme une valeur définissant une durée de temporisation désirée Tl; l.b. séquence d'acquisition de bit par échantillonnage sur le contact d'entrée/sortie de la carte, et de mémorisation du bit lu (mémorisation en mémoire volatile ou non volatile selon les cas); l.c. séquence de sauvegarde du contexte du programme d'acquisition de bit, en cours d'exécution par le microprocesseur, en vue du passage à un autre programme avec possibilité de revenir au contexte précédent; par "contexte de programme" on entend par exemple l'état des différents compteurs de programme, 11 état des registres d'état qui gèrent le fonctionnement du microprocesseur, etc. l.d. séquence de restauration du contexte du programme de traitement de donnée qui va être exécuté ensuite; ce contexte a été sauvegardé à la période précédente; l.e. lancement du programme de traitement de données. 2. Etape de traitement de donnée (tâche logicielle TM) 2.a. séquence d'exécution d'une tâche par le microprocesseur; cette tâche est par exemple la suite d'une tâche qui avait commencé pendant une période précédente et qui avait été interrompue avec sauvegarde de son contexte pour pouvoir la poursuivre; la tâche peut avoir un lien avec le bit acquis immédiatement auparavant ou avec les bits acquis aux périodes précédentes, mais ce n'est pas obligatoire; en tous cas la durée d'exécution de la tâche doit être connue; 2.b. séquence de sauvegarde du contexte de la tâche en cours d'exécution; 2.c. séquence de chargement dans le programme de temporisation logicielle d'une valeur de durée qui correspond au temps d'attente Tl de la séquence d'attente l.a ci-dessus; 2.d. séquence de restauration du contexte du programme d'acquisition de bit. 2.e. lancement de l'exécution d'une nouvelle étape d'acquisition de bit. Les tâches correspondant à ces opérations sont représentées symboliquement à la figure 3 pour une période d'acquisition de bit. Elles sont référencées comme les numéros de paragraphe de la description qui précède. Les proportions des durées respectives de tâches ne sont pas respectées sur la figure 3. C'est la tâche logicielle TM qui se charge d'ordonnancer les deux tâches. Après un temps déterminé par calcul (inférieur à une période d'acquisition de ce bit de 104 microsecondes) elle doit redonner à la tâche d'acquisition de bit la possibilité de s'exécuter. L'appel de la tâche TA figure donc dans le code de la tâche TM. Le code de TM est découpé de la façon suivante - suite d'instructions dont le temps d'exécution est calculé (étape 2.a. temps Ttm); - appel à la routine de sauvegarde du contexte, de restauration du contexte de TA et de modification de la valeur de durée d'attente logicielle Tl, et lancement d'un nouveau programme d'acquisition (étapes 2.b., 2.c., 2.d., 2.e.; temps Tch); la nouvelle valeur de Tl est fonction du temps Ttm pris pour exécuter les opérations précédentes, le temps Tch pouvant être considéré comme constant d'une période à l'autre. La durée Tl stockée dans le programme de temporisation logicielle est la différence entre la période d'acquisition de bits (Tpa) et la somme des durées suivantes : durée Tac d'exécution des programmes d'acquisition proprement dits (étapes l.b., l.c., l.d.; l.e.); durée Ttm, variable, calculée, correspondant à l'exécution d'une tâche de microprocesseur (étape 2.a.); durée Tch de routines de préparation de la nouvelle étape d'acquisition (étapes 2.b., 2.c., 2.d, 2.e). La tâche TM est exécutée progressivement, par étapes, une partie de tâche étant exécutée à chaque période d'acquisition de bit. Si la tâche TM, exécutée par le microprocesseur en temps partagé avec les tâches d'acquisition, se termine avant que la l'acquisition de la totalité des bits d'un message soit terminée, on peut prévoir qu'elle place dans son contexte une valeur remarquable de manière que la tâche d'acquisition TA ne lance plus le déroulement de la tâche TM. Pour que le procédé selon l'invention fonctionne le mieux possible, il est souhaitable que les routines d'acquisition de bit (échantillonnage, mémorisation) aient une durée aussi indépendante que possible de l'état du bit lu. Et bien entendu, il faut que les programmes de traitement de données comportent uniquement des instructions dont la durée d'exécution soit prévisible et calculable, de sorte que le programme de chargement d'une nouvelle valeur de temporisation logicielle puisse déterminer le temps déjà consommé et charger une nouvelle valeur de temps d'attente. Il est souhaitable aussi que le programme de traitement de données comporte les moyens nécessaires pour interrompre sa tâche avant d'avoir travaillé trop longtemps puisque par définition la somme des durées Tac, Ttm et Tch ne peut pas dépasser une durée fixe Tpa (période d'arrivée des bits). REVENDICATIONS 1. Procédé de fonctionnement d'une carte à puce à microprocesseur, comprenant des étapes d'acquisition de bits de données sur une entrée de signal de la carte (I/O) et des étapes de traitement de données exécutées par le microprocesseur, caractérisé en ce que le microprocesseur exécute de manière récurrente et périodique une étape d'acquisition d'un bit et une étape de traitement de données, en ce que l'étape d'acquisition de bit comporte l'exécution par le microprocesseur d'un sous-programme de temporisation logicielle de durée variable, puis un échantillonnage du niveau de signal présent sur l'entrée et l'acquisition d'un bit présent à ce moment sur l'entrée, et enfin le lancement de l'exécution de l'étape de traitement de données, et en ce que 1' étape de traitement de données comporte l'exécution par le microprocesseur d'une partie de tâche logicielle de durée déterminée pouvant varier d'une fois à l'autre dans la récurrence, puis le chargement dans le sous-programme de temporisation logicielle d'une nouvelle valeur de temporisation fonction de ladite durée déterminée, puis le lancement de l'exécution d'une nouvelle étape d'acquisition. 2. Procédé selon la revendication 1, caractérisé en ce que la valeur de temporisation logicielle chargée dans le sous programme de temporisation est telle que les instants d'échantillonnage se répètent à intervalles périodiques. 3. Carte à puce à microprocesseur, caractérisée en ce qu'elle comporte - des moyens pour exécuter de manière récurrente et périodique une tâche d'acquisition de bit sur une entrée de donnée(I/O), ces moyens comportant un programme de temporisation logicielle de durée variable, des moyens d'échantillonnage de signal contrôlés par le microprocesseur pour exécuter un échantillonnage après la temporisation, et des moyens de mémorisation d'un bit correspondant au niveau de signal échantillonné, - des moyens pour faire exécuter par le microprocesseur, après la tâche d'acquisition et avant une tâche d'acquisition suivante dans la récurrence, une tâche de traitement de données de durée déterminée et pouvant varier d'une fois à l'autre dans la récurrence, ces moyens comportant un programme de chargement d'une valeur de durée dans le programme de temporisation logicielle, cette valeur étant fonction de ladite durée déterminée.