FR 2791505 A1 20000929 FR 9904109 A 19990325 -1 2791505 DECODEUR BPSK SYNCHRONE La présente invention concerne un procédé et un dispositif pour décoder un signal pulsé codé BPSK ("Binary Phase Shift Keying"), c'est-à-dire codé par sauts de phase. La présente invention concerne notamment le décodage de données codées BPSK envoyées par une carte à puce sans contact, et la réalisation d'une tête de lecture de carte à puce sans contact d'une structure simple et peu coûteuse. Conformément au projet de norme ISO 14443, une carte à puce sans contact fonctionnant par induction électromagnétique émet des données sous la forme d'un signal codé BPSK. Le signal codé est une sous- porteuse d'une fréquence de 847 KHz obtenue par division de la fréquence de 13,56 MHz du champ magnétique ambiant émis par une tête de lecture de la carte à puce. Un bit est codé par un nombre déterminé de cycles de la sous-porteuse, et un changement de la valeur d'un bit, relativement au bit précédent, est codé par une inversion de la phase de la sous- porteuse. A la réception, le signal codé a l'aspect d'un signal pulsé composé d'impulsions ayant un rapport cyclique de 0,5 et présentant des sauts de phase. La détection des sauts de phase permet de déduire la valeur des bits envoyés par la carte à puce. Dans l'art antérieur, il est habituel de décoder un signal codé BPSK au moyen d'un circuit à verrouillage de phase PLL ("Phase-Loocked Loop"), dont l'élément essentiel est un oscillateur contrôlé en tension VCO ("Voltage- Controlled Oscillator"). Toutefois, un circuit à verrouillage de phase est un circuit complexe d'un coût non négligeable au regard des autres éléments d'une tête de lecture de carte à puce sans contact. Une autre technique classique pour décoder un signal codé BPSK consiste à effectuer un échantillonnage et un traitement du signal au moyen d'un algorithme numérique. 2 2791505 Toutefois, l'échantillonnage et le traitement d'un signal à 847 KHz nécessitent une fréquence d'échantillonnage élevée et un microprocesseur rapide qui présente également l'inconvénient d'être d'un coût non négligeable. Ainsi, la présente invention a pour objectif de prévoir un procédé de décodage BPSK qui puisse être mis en oeuvre au moyen d'éléments simples et peu coûteux afin, notamment, de permettre la réalisation d'une tête de lecture de carte à puce sans contact de faible coût et de faible encombrement. Cet objectif est atteint par la prévision d'un procédé pour décoder un signal pulsé codé par sauts de phase, dans lequel un bit est codé par N impulsions du signal codé et un changement de la valeur d'un bit relativement au bit précédent est codé par une inversion de la phase du signal codé, procédé comprenant les étapes consistant à: échantillonner le signal pulsé codé au moyen d'un signal pulsé d'échantillonnage de même fréquence que le signal codé, avec une fenêtre d'échantillonnage d'une durée inférieure à la durée d'une impulsion du signal codé, et pour chaque groupe de N impulsions du signal codé, compter le nombre d'impulsions échantillonnées issues de l'échantillonnage du signal codé, et en déduire la valeur du bit codé par le groupe de N impulsions. Selon un mode de réalisation, une première valeur logique d'un bit est présumée décodée lorsque le nombre d'impulsions échantillonnées est supérieur ou égal à un nombre prédéterminé, et l'autre valeur logique d'un bit est présumée décodée lorsque le nombre d'impulsions échantillonnées est inférieur audit nombre prédéterminé. Selon un mode de réalisation, le nombre prédéterminé est égal à la moitié du nombre N d'impulsions de codage d'un bit. Selon un mode de réalisation, l'échantillonnage du signal codé est réalisé par combinaison du signal codé et du signal d'échantillonnage au moyen de la fonction logique ET, le signal d'échantillonnage étant composé d'impulsions de plus courte durée que les impulsions du signal codé, définissant chacune une fenêtre d'échantillonnage. Selon un mode de réalisation, le procédé comprend une étape de synchronisation du signal d'échantillonnage visant à caler les impulsions du signal d'échantillonnage sur les impulsions d'un bit de démarrage. De préférence, l'étape de synchronisation est réalisée pendant la réception d'au moins un bit de synchronisation précédant le bit de démarrage, dont la valeur est l'inverse de celle du bit de démarrage, et consiste à régler la phase du signal d'échantillonnage de manière qu'aucune impulsion échantillonnée n'apparaisse. La présente invention concerne également un dispositif pour le décodage d'un signal pulsé codé par sauts de phase, comprenant des moyens pour mettre en oeuvre le procédé de l'invention. Selon un mode de réalisation, le dispositif comprend un modulateur de largeur d'impulsions pour délivrer le signal d'échantillonnage, un échantillonneur recevant en entrée le signal codé et le signal d'échantillonnage, délivrant le signal échantillonné, et un compteur recevant sur son entrée de comptage le signal échantillonné. Selon un mode de réalisation, le dispositif comprend des moyens pour recevoir le signal pulsé codé par couplage inductif. La présente invention concerne également un lecteur de carte à puce sans contact, comprenant un dispositif selon l'invention. Ces caractéristiques et avantages de la présente invention, ainsi que d'autres, seront exposés plus en détail dans la description suivante du procédé de l'invention et d'un exemple de mise en oeuvre du procédé dans une tête de lecture de carte à puce sans contact, en relation avec les figures jointes parmi lesquelles: - les figures 1A, lB, 1C sont des chronogrammes de signaux électriques illustrant le procédé de l'invention, - les figures 2A, 2B, 2C représentent plus en détail une partie des chronogrammes des figures lA, lB, IC et illustrent une étape de synchronisation, - la figure 3 représente sous forme de blocs le schéma électrique d'une tête de lecture de carte à puce sans contact ainsi que le schéma électrique d'un circuit intégré de carte à puce sans contact, et - la figure 4 représente l'organigramme d'un programme exécutant le procédé de l'invention. La figure 1A représente un signal pulsé Sl codé par sauts de phase, comprenant classiquement des impulsions Pi ayant un rapport cyclique de 0,5. Le signal SI1 est par exemple un signal codé envoyé par une carte à puce sans contact et reçu par un lecteur de carte. Le signal Si est le résultat du codage BPSK d'une suite de bits, chaque bit étant codé par un nombre déterminé d'impulsions pj, ici huit impulsions Pi à Ps. Le signal Si comprend des bits de synchronisation Bsyi, ici deux bits Bsy1, Bsy2, un bit de démarrage Bst, et des bits de données Bi formant une suite de bits B0, B1, B2, B3... devant être décodée. Sur la figure 1A, on a représenté les premières impulsions Pi des bits de synchronisation Bsy1, Bsy2, les 8 impulsions du bit de démarrage Bst et du premier bit de données B0, ainsi que les premières impulsions Pi du bit B1. Un changement de la valeur d'un bit relativement au bit précédent est codé par une inversion de la phase du signal SI1, se traduisant par un saut de phase du signal SI à l'instant o le nouveau bit est émis. Par convention, les bits de synchronisation Bsyi sont à "1" alors que le bit de démarrage Bst est à "0", de sorte que le signal SI1 codé BPSK présente un saut de phase PS1 entre l'impulsion P8 du deuxième bit de synchronisation Bsy2 et l'impulsion Pl du bit de démarrage Bst. Sur la figure lA, le signal SI1 présente également un saut de phase PS2 entre l'impulsion P8 du bit de démarrage Bst et l'impulsion Pi du premier bit de données B0, ce qui signifie que la valeur du bit B0 est l'inverse de celle du bit Bst, soit ici la valeur "1". Selon l'invention, on échantillonne le signal SI1 au moyen d'un signal d'échantillonnage S2 de même fréquence que le signal SI, représenté sur la figure 2B. Ce signal est constitué d'impulsions sl, s2, s3... d'une durée inférieure à celle des impulsions pi, par exemple le quart de la durée des impulsions pj, définissant des fenêtres d'échantillonnage. Les signaux Si et S2 sont combinés au moyen de la fonction logique ET, pour produire un signal échantillonné S3 représenté sur la figure 2C. Le signal S3 est composé d'impulsions échantillonnées qi qui apparaissent quand les impulsions si sont calées sur les impulsions Pi- Le procédé selon l'invention comprend une étape de synchronisation du signal S2 sur le bit de démarrage Bst, effectuée pendant la réception des bits de synchronisation Bsyi. Cette étape consiste à régler la phase du signal SI1 de manière que les impulsions si soient calées sur les impulsions Pi du bit de démarrage Bst, pour que la réception du bit de démarrage Bst provoque l'apparition d'impulsions échantillonnées qi. Les chronogrammes des figures 2A, 2B, 2C représentent plus en détail l'étape de synchronisation. Dans cet exemple, on suppose que la première impulsion sl du signal S2 est calée sur la première impulsion pi du bit de synchronisation Bsyl et qu'une impulsion échantillonnée ql apparaît. Aussi, à la période suivante, on décale l'impulsion suivante S2 d'un huitième de période T. Si une impulsion échantillonnée q2 apparaît à nouveau, comme c'est le cas sur la figure 2C, on décale encore l'impulsion suivante s3 d'un huitième de période et ainsi de suite jusqu'à ce que les impulsions échantillonnées qi n'apparaissent plus. Le signal d'échantillonnage S2 est alors synchronisé au signal Si. Si l'on se réfère à nouveau aux figures lA à 1C, on voit ainsi que la réception du bit de démarrage Bst a pour effet de faire apparaître à nouveau les impulsions échantillonnées qi, en raison du saut de phase PSl. La valeur de chaque bit suivant B0, B1, B2 relativement au bit précédent est déterminée par un comptage du nombre d'impulsions échantillonnées qi apparaissant au cours des 8 impulsions pi constituant le bit. Par exemple, le fait que 8 impulsions échantillonnées ql à q8 (Xqg = 8) apparaissent pendant la durée du bit B0 confirme que le bit B0 a la même valeur que le bit Bst, soit la valeur "0". De même, le fait qu'aucune impulsion échantillonnée (Xqi = 0) n'apparaisse pendant la durée du bit B1 permet de déduire que la phase du signal SI a changé et que le bit B1 présente une valeur inverse de celle du bit B0, soit la valeur "1". Ainsi, le procédé selon l'invention permet de détecter les sauts de phase du signal SI au moyen d'un signal d'échantillonnage S2 de même fréquence que le signal Si, par un simple comptage des impulsions échantillonnées. Il n'est pas nécessaire de prévoir une fréquence d'échantillonnage élevée et des moyens de calcul rapides, comme cela est le cas dans l'art antérieur. Par ailleurs, l'utilisation d'un signal d'échantillonnage S2 constitué d'impulsions si d'une durée inférieure à celle des impulsions Pi est un aspect optionnel mais avantageux du procédé de l'invention permettant de générer le signal échantillonné S3 en combinant les signaux SI et S2 au moyen d'une simple porte ET. Il n'est pas nécessaire d'avoir recours à un circuit échantillonneur-bloqueur ("sample- hold"), d'une structure complexe et coûteuse, qui serait déclenché par les fronts montants ou descendants du signal S2. En pratique, la fonction logique ET de l'échantillonneur SMP peut être réalisée de façon simple au moyen d'un transistor de type FET ou équivalent piloté par le signal d'échantillonnage S2, ayant sa source connectée à la masse et son drain connecté à l'entrée du compteur CMPT et à la sortie de l'amplificateur AMP. La figure 3 représente le schéma électrique d'une tête de lecture RDH de carte à puce sans contact mettant en oeuvre le procédé de l'invention. La tête de lecture RDH comprend un microprocesseur MP1, une mémoire MEM1 pour stocker un programme et des données, un circuit d'antenne résonant comprenant une bobine L1 et une capacité Cl en parallèle, un circuit TGN pour exciter le circuit d'antenne LlC1 et un générateur d'horloge CKG1 délivrant des signaux d'horloge Hi et H2. Le signal d'horloge Hi est appliqué au microprocesseur MP1 et le signal H2 appliqué au circuit excitateur TGN. La fréquence du signal H2 est de 13,56 MHz conformément au projet de norme ISO 14443. La fréquence du signal Hi est égale à celle du signal H2 ou est un multiple de celle-ci. La tête de lecture RDH comprend également un décodeur DEC selon l'invention, comprenant un échantillonneur SMP, un modulateur de largeur d'impulsion PWM et un compteur CPT. L'échantillonneur SMP prend ici la forme d'une porte ET dont la sortie est appliquée à l'entrée du compteur CPT. La porte ET reçoit en entrée la sortie du modulateur PWM et la sortie d'un amplificateur AMP connecté au circuit d'antenne L2C2 par l'intermédiaire d'un filtre passe-bande FLT calé sur les 847 KHz. Le modulateur PWM est piloté par le signal d'horloge Hi et comprend un registre REG1 recevant une consigne Cl définissant le rapport cyclique des impulsions qu'il délivre, ainsi qu'un registre REG2 recevant une consigne C2 définissant la période de ces impulsions. Bien que cela ne soit représenté sur la figure 3 dans un souci de simplicité, les sorties du modulateur PWN, de l'amplificateur AMP et du compteur CPT sont accessibles au microprocesseur. Le microprocesseur MPl est par exemple un microprocesseur du commerce dans lequel le modulateur PWM et le compteur CPT sont des éléments intégrés, comme le microprocesseur PICl6C6X commercialisé par la société Microchip Technology En regard de la tête de lecture RDH, la figure 3 représente également le schéma d'un circuit intégré IC de carte à puce sans contact. Le circuit IC comprend un microprocesseur MP2, une mémoire MEM2 et un circuit d'antenne L2C2. Le circuit d'antenne comprend une capacité intégrée C2 et une bobine d'antenne L2 généralement incorporée dans le corps d'une carte plastique (non représentée). Le circuit IC comprend également un circuit de modulation de charge LM, un générateur d'horloge CKG2 comprenant des diviseurs de fréquence ainsi qu'un codeur COD de type BPSK dont la sortie pilote le circuit modulateur LM. Le circuit LM et le générateur CKG2 sont connectés tous deux aux bornes du circuit d'antenne L2C2. Le modulateur LM comprend par exemple un transistor Tl en série avec une résistance de charge Rl. Le générateur CKG2 délivre un signal d'horloge H3 appliqué au codeur COD. Lorsque le circuit d'antenne LlCl génère un champ magnétique FLD alternatif, par exemple de 13,56 MHz (norme ISO 14443), une tension induite Vac de même fréquence apparaît dans le circuit d'antenne L2C2. La fréquence de la tension Vac est divisée par le générateur d'horloge CKG2 qui délivre un signal d'horloge H13 de 847 KHz (norme ISO 14443). Le microprocesseur MP2 délivre au codeur COD des données DTx à transmettre, comprenant deux bits de synchronisation Bsyi à "1" (ou plus, selon convention), un bit de démarrage Bst égal à "0" et des bits de données B0, B1, B2... Le codeur COD délivre une sous-porteuse codée BPSK d'une fréquence de 847 KHz, appliquée au transistor de modulation T1. Cette sous-porteuse constituée d'impulsions ayant un rapport cyclique de 0,5 est conforme au signal Si décrit plus haut en relation avec la figure 1A. La sous- porteuse Si se répercute par couplage inductif dans le circuit d'antenne primaire L1Cl, et est extraite du signal d'excitation à 13,56 MHz par le filtre FLT pour se retrouver en entrée de l'échantillonneur SMP (porte ET) après avoir été amplifiée. Pour décoder la sous-porteuse S1, le procédé de l'invention est mis en oeuvre par le microprocesseur MP1 sous la gouverne d'un programme chargé dans la mémoire MEM1. Les principales étapes de ce programme, illustrées par l'organigramme de la figure 4, sont décrites ci-après. Au cours de l'étape 10, le microprocesseur MP1 surveille la sortie de l'amplificateur AMP et attend la première impulsion qi du bit de synchronisation Bsy1. Pendant cette période d'attente, le microprocesseur programme le modulateur PWM en chargeant dans les registres REG1 et REG2 des consignes Ci et C2 choisies de manière que le modulateur PWM délivre un signal S2 du type de celui représenté sur la figure 2B, ayant la même fréquence que la sous-porteuse Si, soit ici 847 KHz, et constitué par des impulsions si d'une durée au moins égale ou inférieure à un quart de la période de la sous-porteuse S1. L'étape 15 commence lorsque la première impulsion qi du bit de synchronisation Bsy1 est reçue. Le microprocesseur règle la phase du signal S2 de la manière décrite plus haut en relation avec les figures 2A à 2C. A cet effet, le microprocesseur observe la sortie de l'échantillonneur SMP. La différence de phase initiale entre les signaux Si et S2 étant aléatoire, des impulsions qi peuvent apparaître ou ne pas apparaître. Si des impulsions qi apparaissent, le microprocesseur décale pas- à-pas la phase du signal S2 jusqu'à ce que les impulsions échantillonnées qi disparaissent (figure 2C). Le décalage progressif de la phase du signal S2 est réalisé par exemple en inhibant le générateur PWM pendant un certain nombre de cycles d'horloge Hi. Si aucune impulsion qi n'apparaît, le décalage de la phase du signal S2 n'est pas, en principe, nécessaire. Par sécurité, on peut toutefois prévoir un cycle de balayage de phase permettant de choisir la phase optimale du signal S2. Par exemple, sur la figure 2B, un décalage supplémentaire peut être appliqué au signal S2 pour que l'impulsion S5 se trouve bien centrée entre les deux impulsions P5 et P6 du signal Si. L'étape de synchronisation étant terminée, le microprocesseur remet le compteur CPT à zéro au cours de l'étape 20 et attend en surveillant la sortie du compteur CPT, que la première impulsions échantillonnée qi et les sept impulsions suivantes du bit de démarrage Bst soient délivrées par l'échantillonneur SMP. L'étape 20 est suivie d'une étape de temporisation 25 d'une durée correspondant à 8 impulsions Pi du signal Si, soit 8 cycles d'horloge H2. Le signal d'horloge Hi du microprocesseur étant proportionnel ou égal au signal H2, un telle temporisation peut être obtenue de façon simple par une suite d'instructions sans opération de type NOP ("No Operation"), correspondant chacune à un certain nombre de cycles d'horloge Hi. Au cours des étapes 30 et 35, le microprocesseur lit à la sortie du compteur CPT le nombre d'impulsions échantillonnées q, délivrées par l'échantillonneur SMP et en déduit la valeur du bit reçu. Le bit de démarrage étant par convention égal à 0, le bit reçu est égal à 0 si huit impulsions qi ont été enregistrées ou est égal à 1 si aucune impulsion q1 n'a été reçue. Au terme de ces étapes, le microprocesseur revient à l'étape de temporisation 25 pour la réception du bit suivant. Il En pratique, il peut se produire que le microprocesseur fasse des erreurs de comptage des impulsions qi entraînant un décalage de la fenêtre de comptage. Si l'on se réfère à la figure lC, on voit par exemple que l'oubli ou la perte d'une impulsion qi décale à droite la fenêtre de comptage, de telle sorte qu'un bit à 0 peut correspondre à un comptage de 7 ou de 8 impulsions qi selon la valeur du bit suivant. Pour prendre en compte une telle éventualité, on considère qu'un bit à 0 est reçu si le nombre d'impulsions échantillonnées qi est supérieur ou égal à la moitié du nombre N d'impulsions pi servant à coder un bit, soit ici 4 impulsions. Inversement, on considère qu'un bit à 1 est reçu quand le nombre d'impulsions qi est inférieur à 4. Des essais réalisés par la demanderesse montrent qu'une telle approximation permet de compenser les erreurs de synchronisation de la fenêtre de comptage dans la plupart des cas. Dans certains cas, il peut arriver que le décalage de la fenêtre de comptage entraîne la perte d'un bit. Toutefois, une telle erreur est détectée au moment de la vérification de la signature (CRC) de la trame binaire envoyée par le circuit IC. Comme diverses autres erreurs de transmission sont susceptibles de se produire, notamment en raison de perturbations du champ magnétique, les erreurs isolées dues au procédé de l'invention n'ont pas de conséquence pratique significative. En définitive, le procédé de démodulation BPSK selon l'invention constitue une alternative avantageuse aux procédés analogiques classiques nécessitant une boucle à verrouillage de phase et aux procédés numériques classiques nécessitant des fréquences d'échantillonnage élevées et un algorithme de traitement du signal. Le procédé de l'invention peut être mis en oeuvre avec un microprocesseur à faible coût ayant un signal d'horloge relativement lent de l'ordre de 13,56 MHz. Le procédé de l'invention peut aussi être mis en oeuvre au moyen d'un circuit logique programmable ou d'un processeur spécifique de type ASIC ("Application Specific Integrated Circuit"). Bien entendu, le procédé de l'invention n'est pas réservé au décodage de données envoyées par une carte à puce sans contact et concerne de façon générale le décodage de données codées BPSK, quelle que soit la manière dont ces données sont reçues. REVENDICATIONS 1. Procédé pour décoder un signal pulsé codé par sauts de phase (SI), dans lequel un bit (Bsyj, Bst, Bi) est codé par N impulsions (Pi) du signal codé (S1) et un changement de la valeur d'un bit relativement au bit précédent est codé par une inversion de la phase du signal codé (S1), procédé caractérisé en ce qu'il comprend les étapes consistant à: échantillonner le signal pulsé codé (Si) au moyen d'un signal pulsé d'échantillonnage (S2) de même fréquence que le signal codé (Si), avec une fenêtre d'échantillonnage d'une durée inférieure à la durée d'une impulsion (Pi) du signal codé (Si), et - pour chaque groupe de N impulsions du signal codé (SI), compter le nombre (Zqi) d'impulsions échantillonnées (qi) issues de l'échantillonnage du signal codé (Si), et en déduire la valeur du bit codé par le groupe de N impulsions. 2. Procédé selon la revendication 1 dans lequel: - une première valeur logique d'un bit est présumée décodée lorsque le nombre (Eqi) d'impulsions échantillonnées (qi) est supérieur ou égal à un nombre prédéterminé, et l'autre valeur logique d'un bit est présumée décodée lorsque le nombre (Yqi) d'impulsions échantillonnées (qi) est inférieur audit nombre prédéterminé. 3. Procédé selon la revendication 2, dans lequel le nombre prédéterminé est égal à la moitié du nombre N d'impulsions de codage d'un bit. 4. Procédé selon l'une des revendications 1 à 3, dans lequel l'échantillonnage du signal codé (S1) est réalisé par combinaison du signal codé (Si) et du signal d'échantillonnage (S2) au moyen de la fonction logique ET, le signal d'échantillonnage étant composé d'impulsions (si) de plus courte durée que les impulsions (Pi) du signal codé (S1), définissant chacune une fenêtre d'échantillonnage. 5. Procédé selon l'une des revendications 1 à 4, comprenant une étape de synchronisation du signal d'échantillonnage (S2) visant à caler les impulsions (si) du signal d'échantillonnage (S2) sur les impulsions (Pi) d'un bit de démarrage (Bst). 6. Procédé selon la revendication 5, dans lequel l'étape de synchronisation est réalisée pendant la réception d'au moins un bit de synchronisation (Bsyi) précédant le bit de démarrage (Bst), dont la valeur est l'inverse de celle du bit de démarrage (Bst), et consiste à régler la phase du signal d'échantillonnage (S2) de manière qu'aucune impulsion échantillonnée (qi) n'apparaisse. 7. Dispositif pour le décodage d'un signal pulsé codé par sauts de phase (Sl), caractérisé en ce qu'il comprend des moyens (MP1, MEM1, DEC, PWM, SMP, CPT) pour mettre en oeuvre le procédé selon l'une des revendications 1 à 6. 8. Dispositif selon la revendication 7, comprenant: - un modulateur de largeur d'impulsions (PWM) pour délivrer le signal d'échantillonnage (S2), - un échantillonneur (SMP) recevant en entrée le signal codé (Sl) et le signal d'échantillonnage (S2), délivrant le signal échantillonné (S3), et - un compteur (CPT) recevant sur son entrée de comptage le signal échantillonné (S3). 9. Dispositif selon l'une des revendications 7 et 8, comprenant des moyens (LlCl, FLT, AMP) pour recevoir le signal pulsé codé (Sl) par couplage inductif. 10. Lecteur de carte à puce sans contact (RDH), comprenant un dispositif selon l'une des revendications 7 à 9.