Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
DIGITAL COUNTER AND METHOD FOR MEASURING A PERIOD OF TIME
Document Type and Number:
WIPO Patent Application WO/2012/025191
Kind Code:
A1
Abstract:
The invention relates to a method for measuring a period of time between a first event and a second event using a hardware counter (2) and a software counter (3). The invention also relates to a digital counter (1) using such a method.

Inventors:
GARCIA LUCIEN (FR)
HOU JEROME (FR)
Application Number:
PCT/EP2011/003881
Publication Date:
March 01, 2012
Filing Date:
August 03, 2011
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
CONTINENTAL AUTOMOTIVE FRANCE (FR)
CONTINENTAL AUTOMOTIVE GMBH (DE)
GARCIA LUCIEN (FR)
HOU JEROME (FR)
International Classes:
H03K21/40; G04F10/04
Foreign References:
US20050089132A12005-04-28
JPS57141135A1982-09-01
US4086470A1978-04-25
US6882697B12005-04-19
Attorney, Agent or Firm:
CONTINENTAL AUTOMOTIVE FRANCE (FR)
Download PDF:
Claims:
REVENDICATIONS

1. Procédé de mesure d'une durée entre deux événements (i et j), le procédé mettant en œuvre un compteur numérique (1) comprenant :

• un compteur matériel (2) dont la valeur est codée sur n bits, et

• un compteur logiciel (3) dont la valeur est codée sur m bits,

le procédé comportant une étape d'incrémentation du compteur logiciel (3) à au moins deux valeurs prédéterminées du compteur matériel (2), aucune de ces deux valeurs ne coïncidant avec un débordement du compteur matériel (2),

caractérisé en ce que la valeur du compteur numérique (1) est codée sur m + n - 1 bits consécutifs dont :

· n bits de poids faible correspondent à la valeur du compteur matériel (2), et

• m-1 bits de poids fort sont définis en fonction de la valeur des compteurs logiciel (3) et matériel (2),

le procédé comprenant en outre :

• une étape d'initialisation du compteur logiciel (3) en fonction de la valeur du compteur matériel (2) lors du premier événement (i),

• une étape de lecture et de sauvegarde de la valeur du compteur matériel (2) lors du premier événement (i) et de la valeur du compteur matériel (2) lors du second événement (j),

• une étape de calcul du nombre de débordements du compteur matériel (2) entre les deux événements consistant à :

o calculer la différence entre la valeur du compteur logiciel (3) lors du second événement (j) et la valeur du compteur matériel (2) lors du premier événement (i), et

o prendre la valeur correspondant à la partie entière de la différence précédemment calculée,

• une étape de calcul de la durée entre les deux événements sur la base de la valeur du compteur matériel (2) lors du premier événement (i), la valeur du compteur matériel (2) lors du second événement (j) et le nombre de débordements précédemment calculé.

2. Procédé selon la revendication 1 , caractérisé en ce que l'étape d'incrémentation du compteur logiciel (3) est réalisée lorsque la valeur du compteur matériel (2) correspond à un quart et à trois quarts de sa valeur maximale.

3. Procédé selon la revendication 2, caractérisé en ce que l'étape d'initialisation du compteur logiciel (3) consiste à attribuer au compteur logiciel (3) : • une valeur initiale égale à la moitié de la valeur du compteur matériel (2) lorsque la valeur du compteur matériel (2) lors du premier événement (i) est supérieure ou égale à zéro et strictement inférieure à un quart de sa valeur maximale,

· une valeur initiale égale à la valeur maximale du compteur matériel (2) lorsque la valeur du compteur matériel (2) lors du premier événement (i) est supérieure ou égale à un quart de sa valeur maximale et strictement inférieure à trois quarts de sa valeur maximale et,

• une valeur initiale égale à trois demis de la valeur maximale du compteur matériel (2) lorsque la valeur du compteur matériel (2) lors du premier événement (i) est supérieure ou égale à trois quarts de sa valeur maximale et strictement inférieure à sa valeur maximale.

4. Procédé selon la revendication 1 , caractérisé en ce que l'étape de calcul de la durée entre les deux événements (i et j) consiste à ajouter, au nombre de débordements du compteur matériel (2) entre les deux événements, la valeur correspondant à la différence entre la valeur du compteur matériel (2) lors du second événement (j) et la valeur du compteur matériel (2) lors du premier événement (i).

5. Procédé selon la revendication 2, caractérisé en ce que le niveau de priorité de l'étape d'initialisation et de l'étape d'incrémentation du compteur logiciel (3) est déterminé pour permettre la réalisation de l'incrémentation avant l'expiration d'un temps correspondant au quart de la période du compteur matériel (2).

6. Compteur numérique (1) propre à mesurer une durée entre deux événements (i et j) comprenant :

• un compteur matériel (2) dont la valeur est codée sur n bits, et

· un compteur logiciel (3) dont la valeur est codée sur m bits,

le compteur logiciel (3) étant incrémenté à au moins deux valeurs prédéterminées du compteur matériel(2), aucune de ces deux valeurs ne coïncidant avec un débordement du compteur matériel (2),

caractérisé en ce que la valeur du compteur numérique (1) est codée sur m+n-1 bits consécutifs dont :

• n bits de poids faible correspondant à la valeur du compteur matériel (2), et

• m-1 bits de poids fort sont définis en fonction de la valeur des compteurs logiciel (3) et matériel (2),

le compteur numérique (1) permettant de mettre en œuvre un procédé conforme aux revendications 1 à 5

7. Compteur numérique (1) selon la revendication 6, caractérisé en ce qu'il est relié à un processeur propre à lire la valeur du compteur matériel (2), initialiser le compteur logiciel (3) et réaliser les calculs, le processeur étant relié à au moins un support de mémorisation sur lequel il stocke des données.

8. Compteur numérique (1) selon la revendication 6, caractérisé en ce que la période (T) du compteur matériel (2) est déterminée par le nombre de bits (n) sur lequel la valeur du compteur matériel (2) est codée et par la fréquence à laquelle le compteur matériel (2) est incrémenté, cette fréquence étant une fraction entière de la fréquence d'horloge du processeur.

9. Compteur numérique (1) selon la revendication 6, caractérisé en ce que le nombre n de bits est égal à 24 et en ce que le nombre m de bits est égal à 9 de sorte que la valeur du compteur numérique (1) est codée sur 32 bits consécutifs.

Description:
Compteur numérique et procédé de mesure d'une durée

L'invention se rapporte à un compteur numérique tel qu'utilisé par exemple dans les microprocesseurs informatiques et un procédé de mesure d'une durée entre deux événements.

Un compteur numérique selon l'art antérieur comprend un compteur matériel dont la valeur est codée sur n bits. La valeur du compteur matériel est incrémentée par une horloge. Ainsi, cette valeur augmente depuis une valeur initiale, typiquement 0, jusqu'à une valeur maximale A. Lorsque le compteur matériel atteint sa valeur maximale A, on dit que le compteur matériel déborde. Suite à un débordement, le compteur matériel est réinitialisé. L'évolution périodique de la valeur du compteur matériel est représentée sur la figure 1 par la courbe M.

Ainsi, lorsque le compteur matériel est utilisé pour quantifier une durée inférieure à la période T du compteur matériel, par exemple la durée (b-a) représentée sur la figure 1 , le compteur matériel se suffit à lui-même.

Par contre, lorsque le compteur matériel est utilisé pour quantifier une durée supérieure à la période T du compteur matériel, par exemple la durée (c-a) représentée sur la figure 2, le compteur matériel n'est pas suffisant.

Pour mesurer des durées supérieures à la période T du compteur matériel, les compteurs numériques connus de l'art antérieur comportent au moins un compteur matériel, un processeur et un compteur de débordements. Le compteur de débordements est utilisé pour quantifier le nombre de débordements du compteur matériel. Plus particulièrement, le processeur incrémente le compteur de débordements d'une unité à chaque fois que le compteur matériel déborde. Le comportement idéal du compteur de débordements est représenté sur la figure 2 par la courbe N. On y observe qu'idéalement l'incrémentation du compteur de débordements est réalisée exactement au moment du débordement du compteur matériel. Dans l'exemple représenté sur la figure 2, la durée (c-a) entre un premier événement (i) et un second événement (j) est ainsi égale à la durée b2 additionnée du temps correspondant à trois débordements, à laquelle on soustrait la valeur de la durée a2.

Le comportement réel de ce type de compteurs numériques est tel que l'incrémentation du compteur logiciel ne peut pas être strictement simultané avec le débordement du compteur matériel pour les raisons exposées ci-dessous.

Tout d'abord, lorsque le compteur matériel atteint sa valeur maximale A, une interruption des traitements en cours est générée pour permettre au processeur d'incrémenter le compteur de débordements. Or cette interruption est d'ores et déjà retardée par rapport au débordement du compteur matériel, au moins du fait que le processeur doit sauvegarder les traitements en cours. Ce retard ne peut être que minimisé, mais pas annulé, si le niveau de priorité de l'interruption est très élevé par rapport au niveau de priorité des traitements en cours. Mais encore, ce retard est dû au temps consommé pour réaliser distinctement et successivement les étapes incontournables suivantes :

· une étape de lecture de la valeur instantanée du compteur matériel et de comparaison avec la valeur maximale A du compteur matériel avant l'étape de génération de l'interruption,

• puis une étape d'incrémentation du compteur de débordements.

Ainsi, les incrémentations du compteur de débordements ne sont, en pratique, pas simultanées aux débordements du compteur matériel. Le comportement réel du compteur de débordements est représenté sur la figure 3 par la courbe O et le retard de l'interruption par rapport au débordement du compteur matériel est représenté sur la même figure par le symbole Δ (avec Δ « T).

Ce problème est connu de l'art antérieur et des solutions logicielles existent pour corriger le retard de l'incrémentation du compteur de débordements par rapport au débordement du compteur matériel. Une de ces solutions logicielles consiste à déterminer si une interruption est en attente ou non et d'ajuster le compte du compteur de débordements en conséquence. Une autre solution logicielle, non exclusive de la première, consiste à requérir l'interruption pour une valeur seuil déterminée du compteur matériel inférieure à sa valeur maximale A. Cette solution nécessite une étape de lecture de la valeur instantanée du compteur matériel et de comparaison avec ladite valeur seuil déterminée et peut être optimisée en fonction de ladite valeur seuil déterminée. Toutefois, d'une part ces solutions logicielles sont compliquées et lourdes à mettre en œuvre (si bien que, nécessitant un haut niveau de priorité, elles retardent considérablement les traitements en cours), d'autre part elles ne permettent que de corriger l'erreur commise sans l'éliminer.

Pour éliminer ladite erreur commise, la nécessité d'une coïncidence entre chaque débordement du compteur matériel et une interruption du processeur pour incrémenter le compteur de débordements doivent être contournées. Pour ce faire, le brevet référencé US 6,882,697 B1 enseigne une solution logicielle qui consiste à lire au moins deux fois, au cours d'un même période T, la valeur du compteur matériel en choisissant les moments de lecture de telle sorte qu'aucun d'eux ne coïncide avec le débordement du compteur matériel. Plus particulièrement, la solution proposée consiste en la combinaison du compteur matériel avec un premier compteur logiciel sur une première demi-période du compteur matériel et la combinaison du compteur matériel avec un second compteur logiciel sur une seconde demi-période du compteur matériel, de sorte que la demi-période pendant laquelle un des deux compteurs logiciels est combiné au compteur matériel ne coïncide pas avec le moment auquel l'autre compteur logiciel est incrémenté. Ainsi, chaque combinaison donne sur sa demi-période de définition la durée appropriée. Cette solution présente tout d'abord l'inconvénient de requérir deux parties logicielles ce qui rend sa mise en uvre complexe et lourde. Elle présente également l'inconvénient qu'il est nécessaire de déterminer sur quelle demi-période du compteur matériel le second événement marquant la fin de la durée à mesurer se produit pour choisir lequel des deux compteurs logiciels donne en combinaison avec le compteur matériel la durée à mesurer.

L'invention vise à pallier un ou plusieurs des inconvénients de l'état de la technique en proposant un compteur numérique et un procédé de mesure d'une durée entre deux événements qui soient plus simples, plus rapides et/ou plus stables, qui permettent d'éviter le problème lié au retard de l'interruption par rapport au débordement du compteur matériel, qui ne soient pas uniquement adaptés à un système monoprocesseur, mais également à un système multiprocesseur, et/ou dont l'impact sur les traitements en cours est très limité.

Pour ce faire est proposé un procédé de mesure d'une durée entre deux événements, le procédé mettant en œuvre un compteur numérique comprenant :

• un compteur matériel dont la valeur est codée sur n bits, et

• un compteur logiciel dont la valeur est codée sur m bits,

le procédé comportant une étape d'incrémentation du compteur logiciel à au moins deux valeurs prédéterminées du compteur matériel, aucune de ces deux valeurs ne coïncidant avec un débordement du compteur matériel,

tel que, la valeur du compteur numérique étant codée sur m+n-1 bits consécutifs dont :

• n bits de poids faible correspondent à la valeur du compteur matériel, et

• m-1 bits de poids fort sont définis en fonction de la valeur des compteurs logiciel et matériel,

le procédé comprend en outre :

• une étape d'initialisation du compteur logiciel en fonction de la valeur du compteur matériel lors du premier événement,

• une étape de lecture et de sauvegarde de la valeur du compteur matériel lors du premier événement et de la valeur du compteur matériel lors du second événement,

• une étape de calcul du nombre de débordements du compteur matériel entre les deux événements sur la base de la valeur du compteur logiciel et de la valeur du compteur matériel lors du second événement, et

· une étape de calcul de la durée entre les deux événements sur la base de la valeur du compteur matériel lors du premier événement, la valeur du compteur matériel lors du second événement et le nombre de débordements précédemment calculé.

Le procédé permet ainsi d'éviter les contraintes temps réel et est plus simple, au moins en ce qu'il ne nécessite qu'un seul compteur logiciel valable sur toute la plage de valeurs du compteur matériel et en ce qu'il ne nécessite aucun test logiciel particulier lors du second événement, la simple lecture des compteurs matériel et logiciel lors de ce second événement permettant le calcul de la durée à mesurer.

Selon une particularité, l'étape de calcul du nombre de débordements du compteur matériel entre les deux événements consiste en :

· une étape de calcul de la différence entre la valeur du compteur logiciel lors du second événement et la valeur du compteur matériel lors du premier événement, et

• une étape de calcul de la valeur correspondant à la partie entière de la différence précédemment calculée.

Le procédé utilise ainsi astucieusement le calcul d'une valeur entière pour atteindre une stabilité numérique accrue.

Selon une autre particularité, l'étape d'incrémentation du compteur logiciel est réalisée lorsque la valeur du compteur matériel correspond à un quart et à trois quarts de sa valeur maximale.

Selon une autre particularité, l'étape d'initialisation du compteur logiciel consiste à attribuer au compteur logiciel :

• une valeur initiale égale à la moitié de la valeur du compteur matériel lorsque la valeur du compteur matériel lors du premier événement (i) est supérieure ou égale à zéro et strictement inférieure à un quart de sa valeur maximale, · une valeur initiale égale à la valeur maximale du compteur matériel lorsque la valeur du compteur matériel lors du premier événement (i) est supérieure ou égale à un quart de sa valeur maximale et strictement inférieure à trois quarts de sa valeur maximale et,

• une valeur initiale égale à trois demis de la valeur maximale du compteur matériel lorsque la valeur du compteur matériel lors du premier événement (i) est supérieure ou égale à trois quarts de sa valeur maximale et strictement inférieure à sa valeur maximale.

Selon une autre particularité, l'étape de calcul de la durée entre les deux événements consiste à ajouter, au nombre de débordements du compteur matériel entre les deux événements, la valeur correspondant à la différence entre la valeur du compteur matériel lors du second événement et la valeur du compteur matériel lors du premier événement. Selon une autre particularité, le niveau de priorité de l'étape d'initialisation et de l'étape d'incrémentation du compteur logiciel est déterminé pour permettre la réalisation de l'incrémentation avant l'expiration d'un temps correspondant au quart de la valeur maximale du compteur matériel.

Le procédé permet ainsi d'attribuer aux tâches consistant à initialiser et incrémenter le compteur logiciel un niveau de priorité bas par rapport au niveau de priorité des traitements en cours, ces derniers étant alors retardés au minimum.

Il est également proposé un compteur numérique propre à mesurer une durée entre deux événements comprenant :

· un compteur matériel dont la valeur est codée sur n bits, et

• un compteur logiciel dont la valeur est codée sur m bits,

le compteur logiciel étant incrémenté à au moins deux valeurs prédéterminées du compteur matériel, aucune de ces deux valeurs ne coïncidant avec un débordement du compteur matériel,

tel que la valeur du compteur numérique est codée sur m+n-1 bits consécutifs dont :

• n bits de poids faible correspondent à la valeur du compteur matériel, et

• m-1 bits de poids fort sont définis en fonction de la valeur des compteurs logiciel et matériel,

le compteur numérique étant tel que :

• le compteur logiciel est initialisé en fonction de la valeur du compteur matériel lors du premier événement,

• la valeur du compteur matériel lors des premier et second événements est lue et sauvegardée,

· le nombre de débordements du compteur matériel entre les deux événements est calculé sur la base de la valeur du compteur logiciel et de la valeur du compteur matériel lors du second événement, et

• la durée entre les deux événements est calculée sur la base du nombre de débordements, la valeur du compteur matériel lors du second événement et la valeur du compteur matériel lors du premier événement.

Selon une particularité, le compteur numérique est relié à un processeur propre à lire la valeur du compteur matériel, initialiser le compteur logiciel et réaliser les calculs, le processeur étant relié à au moins un support de mémorisation sur lequel il stocke des données.

Selon une autre particularité, la période du compteur matériel est déterminée par le nombre de bits sur lequel la valeur du compteur matériel est codée et par la fréquence à laquelle le compteur matériel est incrémenté, cette fréquence étant une fraction entière de la fréquence d'horloge du processeur.

Selon une particularité, le nombre n de bits est égal à 24 et le nombre m de bits est égal à 9 de sorte que la valeur du compteur numérique est codée sur 32 bits consécutifs.

D'autres caractéristiques et avantages de l'invention ressortiront à la lecture de la description qui suit, en référence aux figures annexées, parmi lesquelles :

• la figure 1 représente un graphe sur lequel figurent deux courbes, une courbe M représentant l'évolution périodique d'un compteur matériel et une courbe S représentant un signal dont la durée à mesurer est inférieure à la période T du compteur matériel,

• la figure 2 représente un graphe sur lequel figurent trois courbes, la courbe M telle que sur la figure 1 , une courbe S représentant un signal dont la durée à mesurer est supérieure à la période T du compteur matériel et la courbe N représentant l'évolution en fonction du temps d'un compteur de débordements idéal,

• la figure 3 représente un graphe sur lequel figurent trois courbes, la courbe M et la courbe S telles que sur la figure 2 et la courbe O représentant l'évolution en fonction du temps d'un compteur de débordements réel,

· la figure 4 représente schématiquement le compteur numérique selon l'invention comprenant un compteur matériel et un compteur logiciel juxtaposés,

• la figure 5 représente un graphe sur lequel figurent cinq courbes ; la courbe M et la courbe S telles que sur la figure 2, la courbe F représentant l'évolution de la valeur du compteur logiciel selon l'invention, la courbe G représentant l'évolution de la différence entre la valeur de la courbe F et la valeur correspondante de la courbe M, et la courbe P représentant l'évolution de la valeur entière de la courbe G, cette dernière étant rigoureusement identique à la courbe N de la figure 2 qui représente l'évolution en fonction du temps d'un compteur de débordements idéal, et

• la figure 6 représente un graphe sur lequel figurent d'une part les mêmes cinq courbes que sur la figure 5, d'autre part la courbe Q représentant l'évolution de la valeur instantanée du compteur de débordements P à laquelle est ajoutée la valeur correspondante du compteur matériel, l'unité de l'ordonnée étant exprimée en termes de l'unité de mesure de temps du compteur matériel. Le compteur numérique est propre à permettre la mesure d'une durée entre deux événements, un premier événement i et un second événement j. Ladite durée peut être la durée de réception d'un signal d'entrée, la durée d'émission d'un signal de sortie, aussi bien que la durée de traitement d'une tâche. Sur la figure 5, la courbe S illustre l'état temporellement changeant d'un tel signal, la durée à mesurer étant égale à (c-a).

Le compteur numérique 1 comporte premièrement un compteur matériel 2, dont l'évolution périodique est représentée par la courbe M sur la figure 5. La valeur du compteur matériel est par ailleurs codée sur n bits. Ainsi, la valeur maximale du compteur matériel, dénotée 'Α' sur les figures 1 , 2, 3, 5 et 6, est égale à 2 n -1. Le nombre 'n' de bits est de préférence égal à 24. La valeur du compteur matériel codée sur n bits est un nombre qui exprime le temps mesuré par le compteur matériel dans une unité de mesure de temps du compteur matériel. L'unité de mesure de temps du compteur matériel correspond au temps en secondes entre deux incrémentations du compteur matériel. Par exemple, ladite valeur du compteur matériel codée sur n bits est ainsi celle portée en ordonnée sur la figure 6. Le temps en unité de mesure de temps du compteur matériel correspondant à la différence (c-a) correspond à la différence (c'-a') à laquelle est ajouté le produit de la valeur maximale du compteur matériel et du nombre de débordements (x) du compteur matériel entre les deux événements. Le temps en secondes correspondant à la différence (c-a) correspond au temps en unité de mesure de temps du compteur matériel correspondant à la différence (c-a) que multiplie l'unité de mesure de temps du compteur matériel.

Le compteur numérique 1 comporte deuxièmement un compteur logiciel 3. La valeur du compteur logiciel est codée sur m bits. Ce nombre m de bits est de préférence égal à 9. Toutefois, l'unité de base des registres des processeurs étant souvent l'octet, nous serons amenés à manipuler ces 9 bits sur une variable de type 16 bits, aussi appelée doublet. La valeur du compteur logiciel codée sur m bits est un nombre correspondant au nombre d'incrémentations du compteur logiciel en unité de mesure de temps d'une incrémentation du compteur logiciel. L'unité de mesure de temps d'une incrémentation du compteur logiciel correspond au temps entre deux incrémentations du compteur logiciel. Ce temps dépend de la différence entre la valeur du compteur matériel lors d'une incrémentation du compteur logiciel et la valeur du compteur matériel lors de l'incrémentation suivante, cette différence exprimant un temps en unité de mesure de temps du compteur matériel. Par exemple, ladite valeur du compteur matériel codée sur n bits est ainsi celle portée en ordonnée sur la figure 6.

Dans un second exemple, un changement d'échelle temporelle peut être opéré qui consiste à multiplier l'ordonnée de la figure 6 par l'unité de mesure de temps du compteur matériel pour que celle-ci s'exprime non plus en unité de mesure de temps du compteur matériel, mais directement en secondes.

Comme représenté sur la figure 4, la valeur du compteur numérique 1 est quant à elle codée sur m+n-1 bits consécutifs, soit de préférence 32 bits consécutifs, dont n bits de poids faible correspondent à la valeur du compteur matériel 2 et m-1 bits de poids fort sont définis en fonction de la valeur des compteurs logiciel et matériel. Plus particulièrement, la valeur du bit de poids le plus faible du compteur logiciel dépend au moins de la valeur du bit de poids le plus fort du compteur matériel. Cette concaténation des compteurs matériel et logiciel permet avantageusement d'exprimer la valeur du compteur numérique sur 32 bits consécutifs par la manipulation des bits codant la valeur du compteur matériel et la valeur du compteur logiciel, cette manipulation étant réalisée d'une façon simple et parfaitement maîtrisée en utilisant des opérateurs de manipulation de bits. Nous reviendrons plus bas sur ce point.

Le compteur numérique comporte également un processeur et un support de mémorisation relié audit processeur. Le processeur comprend une horloge. Les tâches remplies par le processeur sont ainsi synchronisées par un signal d'horloge d'une fréquence déterminée. L'horloge travaille de préférence à une fréquence de 5 MHz. La période T du compteur matériel est fixée en secondes par le nombre de bits sur lequel sa valeur est codée et par la fréquence à laquelle il est incrémenté. Cette dernière peut être la fréquence d'horloge ou plus généralement une fraction entière de la fréquence d'horloge. L'inverse de la fréquence d'incrémentation du compteur matériel n'est autre que l'unité de mesure de temps du compteur matériel.

Le processeur est propre à remplir une pluralité de tâches, chaque tâche ayant un niveau de priorité déterminé. De façon non exhaustive, le processeur est ainsi propre à lire et écrire sur le support de mémorisation des données et réaliser des calculs, ou plus particulièrement manipuler des bits comme par exemple les bits codant la valeur des compteurs matériel, logiciel et numérique.

Dans son acceptation la plus large, le compteur logiciel est incrémenté à chaque passage du compteur matériel par au moins deux de ses valeurs. Ces deux valeurs sont prédéterminées et notamment différentes des valeurs nulle et maximale du compteur matériel. C'est justement du fait que l'on incrémenté le compteur logiciel au moins deux fois par période du compteur matériel que le bit de poids le plus fort du compteur matériel n'est pas représentatif d'un débordement du compteur matériel et qu'il est enseigné ici de concaténer les compteurs logiciel et matériel pour reconstruire un compteur de débordements, puis le compteur numérique.

Dans le premier mode de réalisation du compteur numérique et afin de limiter l'impact de la gestion du compteur numérique sur les traitements en cours, il a été choisi de se limiter à deux valeurs prédéterminées par lesquelles passe le compteur matériel pour justifier de l'incrémentation du compteur logiciel. En effet, plus grand sera le nombre de ces valeurs prédéterminées, plus nombreuses et donc plus coûteuses en temps seront les tâches du processeur associées au fonctionnement du compteur numérique. Toutefois, il faut noter que l'invention telle que revendiquée ne doit pas être limitée à ce seul choix. Il est tout aussi envisageable de prédéterminer un nombre entier quelconque de valeurs par lesquelles passe le compteur matériel pour justifier de l'incrémentation du compteur logiciel.

Dans le premier mode de réalisation du compteur numérique, il a été choisi que la première valeur et la seconde valeur prédéterminées par lesquelles passe le compteur matériel pour justifier de l'incrémentation du compteur logiciel soient fixées à un quart et à trois quarts de la valeur maximale du compteur matériel, respectivement. Ce choix particulier permet de réaliser la gestion de l'incrémentation du compteur logiciel de manière éloignée (dans le temps) d'un débordement du compteur matériel et ainsi de contourner les contraintes temps réel. De façon corrélée, ce choix présente également l'avantage de simplifier grandement la mise en œuvre du compteur numérique, car il permet d'exploiter pleinement la périodicité du compteur matériel. D'une part, le temps écoulé entre un premier débordement du compteur matériel et son passage par la première valeur prédéterminée est égale au temps écoulé entre le passage du compteur matériel par la seconde valeur prédéterminée et un second débordement, ce temps écoulé étant égal au quart de la période du compteur matériel. D'autre part, le temps correspondant au passage du compteur matériel de la première valeur prédéterminée à la seconde valeur prédéterminée est égal à une demi-période du compteur matériel. L'exploitation de ces symétries permettent de rendre plus simple et plus stable l'implémentation du procédé mettant en œuvre le compteur numérique. Toutefois, il faut noter que l'invention telle que revendiquée ne doit pas être limitée à ce seul choix. En effet, il est tout aussi envisageable que la première valeur prédéterminée soit comprise dans un premier intervalle allant par exemple de 10 % à 40 % de la valeur maximale du compteur matériel et que la seconde valeur prédéterminée soit comprise dans un second intervalle allant par exemple de 60 % à 90 % de la valeur maximale du compteur matériel.

Notons de plus qu'il suffit que le nombre entier quelconque de valeurs par lesquelles passe le compteur matériel pour justifier de l'incrémentation du compteur logiciel soit un nombre pair pour pouvoir exploiter pleinement la périodicité du compteur matériel selon les particularités explicitées ci-dessus. En tout état de cause, il est préféré de se limiter à deux valeurs prédéterminées, à seule fin de limiter l'impact du compteur numérique sur les traitements en cours. Dans le premier mode de réalisation du compteur numérique, il est donc justifié d'incrémenter le compteur logiciel d'une unité de mesure de temps du compteur logiciel, chaque fois que le compteur matériel passe par une valeur égale à un quart de sa valeur maximale ou à trois quarts de sa valeur maximale. L'évolution temporelle du compteur logiciel ainsi obtenu est représentée par la courbe F de la figure 5. Plus rigoureusement, cette courbe F représente le comportement idéal du compteur logiciel décrit ci-dessus. En effet, chaque incrémentation du compteur logiciel y est représentée comme simultanée avec le passage du compteur matériel par une valeur égale à un quart ou à trois quarts de sa valeur maximale.

Le comportement idéal du compteur de débordements, tel que représenté sur la figure 2, a été reproduit sur les figures 5 et 6 par la courbe P. Notamment, nous constatons graphiquement que les deux courbes F et P représentent une évolution régulière en escalier et diffèrent entre elles en ce que la courbe F est constamment plus haute que la courbe P et en ce que les marches de l'escalier F sont deux fois moins hautes et deux fois moins longues que les marches de l'escalier P.

Si l'on trace la courbe représentant l'évolution de la valeur du compteur logiciel à laquelle est retranchée la valeur du compteur matériel, on obtient la courbe G telle qu'illustrée sur les figures 5 et 6. Cette courbe G est comprise et oscille entre la courbe F au-dessus et la courbe P au-dessous. Il est observable que, si l'on prend à chaque instant la valeur entière de la courbe G, l'on obtient la courbe P. Ainsi, un compteur de débordements idéal est obtenu ou reconstruit à partir de la valeur du compteur matériel et de la valeur du compteur logiciel idéal à chaque instant.

Le comportement non idéal ou réel du compteur logiciel pourrait être représenté par une courbe de même évolution que la courbe F, mais dont chaque incrémentation serait retardée par rapport au passage du compteur matériel par une valeur égale à un quart ou à trois quarts de sa valeur maximale. En supposant que le retard de l'incrémentation est constant d'une incrémentation à l'autre, une courbe représentant ledit comportement réel du compteur logiciel serait obtenue en translatant la courbe F selon l'axe des temps (en abscisse) d'une valeur quelconque Δ très inférieure à la période T du compteur matériel. Si ladite valeur quelconque est comprise entre zéro inclus et un quart exclus de la période du compteur matériel, en prenant à chaque instant la valeur entière de la courbe G obtenue en combinaison avec cette courbe F translatée, on obtient la courbe P. Ainsi, un compteur de débordements idéal est obtenu à partir de la valeur du compteur matériel et de la valeur du compteur logiciel selon son comportement réel à chaque instant.

En d'autres termes, reconstruire le compteur de débordements sur la base d'un compteur logiciel non idéal est strictement équivalent au fait de reconstruire le compteur de débordements sur la base d'un compteur logiciel idéal, un retard de l'incrémentation du compteur logiciel n'induisant aucune différence, si toutefois ce retard n'excède pas le quart de la période du compteur matériel. Une marge d'erreur, représentée sur les figures 5 et 6 par la référence C, est ainsi autorisée sans que cela n'affecte la mesure de durée.

Pour réaliser chaque incrémentation du compteur logiciel dans un temps correspondant à un quart de la période du compteur matériel, l'incrémentation ne nécessite pas un niveau de priorité très élevé, voire peut être effectuée en tâche de fond. De plus, si le processeur a des opérations de plus hauts niveaux de priorité à effectuer, il peut les effectuer selon leur priorité sans que cela n'affecte la précision de la mesure de durée. De ce fait, l'impact de chaque incrémentation du compteur logiciel sur les traitements en cours ainsi que sur la mesure de durée à réaliser est limité, voire nul.

De plus, reconstruire le compteur de débordements sur m-1 bits en fonction du compteur logiciel dont la valeur est codée sur m bits et du compteur matériel dont la valeur est codée sur n bits, ou équivalemment prendre la partie entière d'une différence entre deux valeurs codées sous la forme de bits, est une opération informatique très simple et très stable réalisable par des opérateurs de manipulation de bits, tels que précédemment évoqués. En l'occurrence et dans le premier mode de réalisation de l'invention, une première étape de la reconstruction du compteur de débordements consiste à étendre les compteurs matériel et logiciel sur 32 bits. Une seconde étape consiste à utiliser un opérateur de décalage de bits pour décaler de 23 bits vers la gauche les 9 bits du compteur logiciel. Une seconde étape consiste à utiliser un opérateur de calcul pour soustraire aux 32 bits codant la valeur du compteur logiciel les 32 bits codant la valeur du compteur matériel. Une troisième étape consiste à générer et utiliser un masquage de bits pour masquer les 24 bits de poids faible parmi les 32 bits codant la différence précédemment calculée. La partie entière de la différence entre le compteur logiciel et le compteur matériel est ainsi obtenue, éventuellement à chaque instant, qui correspond à la valeur d'un compteur de débordements idéal ainsi reconstruit.

Notons que la valeur du compteur de débordements étant codée sur m-1 bits, la valeur maximale du compteur de débordements est égale à 2 m 1 -1.

Ainsi, au lieu d'avoir un compteur de débordements qui est incrémenté une seule fois d'une valeur correspondant à la valeur maximale du compteur matériel lors du débordement du compteur matériel, le compteur numérique comprend un compteur logiciel qui est incrémenté deux fois d'une valeur correspondant à la moitié de la valeur maximale du compteur matériel, une fois lorsque le compteur matériel a une valeur sensiblement égale au quart de sa valeur maximale et une fois lorsque le compteur matériel a une valeur sensiblement égale aux trois quarts de sa valeur maximale, ce compteur logiciel permettant de reconstruire le comportement d'un compteur de débordements idéal.

Le compteur numérique peut comporter en outre un comparateur et des moyens d'interruption. Le comparateur est agencé pour comparer la valeur instantanée du compteur matériel à une des deux valeurs prédéterminées égales à un quart de la valeur maximale du compteur matériel et à trois quarts de la valeur maximale du compteur matériel. En réponse à une comparaison positive du comparateur, les moyens d'interruption requièrent du processeur qu'il incrémente le compteur logiciel de la moitié de la valeur maximale du compteur matériel. Le comparateur peut effectuer la comparaison susmentionnée à intervalle de temps régulier plus court que le quart de la période du compteur matériel et choisi pour ne pas retarder les traitements en cours. Par exemple, lorsque le quart de la période du compteur matériel est égal à environ 800 ms, il est adéquat et suffisant que le comparateur soit utilisé toutes les 100 ms.

Le compteur matériel tel que précédemment décrit est associé à un procédé de mesure d'une durée entre deux événements i et j le mettant en œuvre. Ledit procédé est plus spécifiquement décrit ci-dessous. Les différentes étapes de ce procédé sont réalisées par le processeur.

Le procédé comporte au moins une étape de lecture de la valeur du compteur matériel lors du premier événement i.

Le procédé comporte en outre une étape de sauvegarde sur le support de mémorisation de la valeur du compteur matériel lors du premier événement i.

Le procédé comprend en outre une étape d'initialisation du compteur logiciel en fonction de la valeur du compteur matériel lors du premier événement i. Plus particulièrement, cette étape consiste à attribuer au compteur logiciel une valeur initiale déterminée en fonction de l'intervalle de valeurs dans lequel est comprise la valeur du compteur matériel lors du premier événement i. Lorsque la valeur du compteur matériel lors du premier événement i est supérieure ou égale à zéro et strictement inférieure à un quart de sa valeur maximale, une valeur initiale égale à la moitié de la valeur du compteur matériel est attribuée au compteur logiciel. Lorsque la valeur du compteur matériel lors du premier événement i est supérieure ou égale à un quart de sa valeur maximale et strictement inférieure à trois quarts de sa valeur maximale, une valeur initiale égale à la valeur maximale du compteur matériel est attribuée au compteur logiciel. Lorsque la valeur du compteur matériel lors du premier événement i est supérieure ou égale à trois quarts de sa valeur maximale et strictement inférieure à sa valeur maximale, une valeur initiale égale à trois demis de la valeur maximale du compteur matériel est attribuée au compteur logiciel. Il est à noter que de cette étape d'initialisation découle le fait que, sur la figure 5, la courbe F est constamment plus haute que la courbe P. Le procédé comprend en outre une étape d'incrémentation du compteur logiciel telle que décrite ci-dessus au moins dans son acceptation la plus large et dans le premier mode de réalisation du compteur numérique. L'incrémentation consiste à modifier la précédente valeur du compteur logiciel. Cette dernière étant codée sur m bits, correspondants aux m bits de poids forts du compteur numérique, il suffit au processeur de modifier ces m bits pour que la nouvelle valeur codée soit égale à la précédente additionnée de la valeur correspondant à la moitié de la valeur maximale du compteur matériel.

Le procédé comporte en outre une étape de sauvegarde sur le support de mémorisation de la valeur du compteur matériel lors du second événement j.

Le procédé comprend en outre une étape de calcul du nombre de débordements du compteur matériel entre les deux événements sur la base de la valeur du compteur logiciel et la valeur du compteur matériel lors du second événement j. Ce calcul consiste à retrancher la valeur du compteur matériel lors du second événement à la valeur du compteur logiciel lors du second événement et à prendre la partie entière de cette différence. Comme décrit ci-dessus, cette opération permet d'obtenir à n'importe quel instant le nombre de débordements qui serait donné par un compteur de débordements idéal, malgré le retard de l'incrémentation du compteur logiciel, si toutefois ce retard n'excède pas un quart de la période du compteur matériel. Comme décrit ci-dessus, le processeur modifie les m bits de poids fort qui correspondaient jusque là à la valeur du compteur logiciel pour que la nouvelle valeur codée soit égale au nombre de débordements calculé. Les m bits de poids fort représentent ainsi un temps correspondant au nombre entier de périodes T du compteur matériel inclues dans la durée à mesurer.

Le procédé comprend en outre une étape de calcul de la durée entre les deux événements sur la base de la valeur du compteur matériel lors du premier événement i, la valeur du compteur matériel lors du second événement j et le nombre de débordements précédemment calculé. Ce calcul consiste à retrancher la valeur du compteur matériel lors du second événement à la valeur du compteur matériel lors du premier événement et à ajouter cette différence au nombre de débordements précédemment calculés. Pour ce faire, le processeur modifie les n bits de poids faible qui correspondaient jusque là à la valeur du compteur matériel pour que la nouvelle valeur codée sur ces n bits soit égale à la différence entre la valeur du compteur matériel lors du second événement et la valeur du compteur matériel lors du premier événement. Les n bits de poids faible représentant ainsi un temps correspondant à la différence entre la durée à mesurer et le nombre entier de périodes T du compteur matériel inclues dans la durée à mesurer sont copiés par le processeur via un opérateur d'assignation sur les n bits de poids faible précédemment masqués (comme décrit ci-dessus).

Le compteur numérique qui est exprimé par une valeur codée sur un nombre fini de m+n-1 bits présente une valeur maximale. Plus particulièrement, la valeur maximale du compteur numérique, dénotée D sur la figure 6, est égale à 2 m+n 1 -1. Le compteur numérique est ainsi capable de mesurer des durées ne dépassant pas sa valeur maximale que multiplie l'unité de mesure de temps du compteur matériel.

Il est à noter qu'il n'est pas exclu de devoir procéder à une normalisation d'au moins une des valeurs codées sur n ou m bits. L'objectif est que la durée à mesurer soit ainsi reconstruite sur les m+n-1 bits consécutifs codant la valeur du compteur numérique, de sorte qu'il suffise de convertir ces m+n-1 bits en une valeur correspondante, par exemple en base 10, pour obtenir la mesure de durée désirée atteinte en une unité temporelle maîtrisée, et ce sans qu'il soit encore nécessaire de manipuler ou de considérer séparément lesdits m+n-1 bits. Ainsi, à la fin du procédé, la durée à mesurer correspond au tout formé par le compteur numérique. Le compteur numérique présente donc l'avantage de permettre de coder une durée à mesurer en utilisant un compteur matériel dont la valeur est codée sur n bits sur un nombre total étendu de m+n-1 bits.

De préférence, le support de mémorisation sur lequel le processeur écrit les m+n-1 bits du compteur numérique est un support de mémorisation non volatile, pour sécuriser la consistance de la mesure.

Les différents calculs décrits plus haut sont, dans le présent cas où les différentes valeurs évoquées sont codées sous forme binaire, réalisés par des opérateurs de manipulations de bits. Parmi ces opérateurs, peuvent notamment être utilisés des opérateurs de calcul (addition, soustraction) permettant de modifier mathématiquement la valeur d'une variable, des opérateurs d'assignation, des opérateurs d'incrémentation, des opérateurs de comparaison par exemple pour implémenter l'étape d'initialisation, des opérateurs logiques, des opérateurs bit-à-bit par exemple pour générer un masquage de bits, et/ou des opérateurs à décalage de bits. Pour réaliser ces calculs, le processeur se base sur un fichier exécutable, par exemple généré par compilation d'un programme en langage C.

Le procédé de mesure de la durée entre deux événements et le compteur numérique permettent d'évaluer la durée entre deux événements de manière plus précise et/ou plus stable que les procédés de l'art antérieur et cela, sans nécessiter de processeurs plus puissants, ni d'algorithmes plus complexes. Ainsi, la quantification de cette durée est précise, quelle que soit cette durée, et sans que les interruptions ne nécessitent un niveau de priorité élevé. En outre, cette quantification dépend peu de la vitesse du processeur. Le compteur numérique présente également l'avantage d'être robuste et d'être peu encombrant. En outre, ses résultats ne dépendent pas du compteur matériel utilisé.

Selon un domaine d'application du compteur numérique, le procédé décrit ci- dessus est tout particulièrement utile pour réaliser une acquisition du temps de cycle d'un arbre à came équipant un moteur à combustion interne d'un véhicule automobile. Ce temps de cycle est connu au moins de façon approximative et une mesure précise en est requise. Le compteur numérique et le procédé décrits plus haut permettent de trouver un compromis avantageux entre une fréquence d'incrémentation élevée du compteur matériel et un impact limité, voire nul, de la mesure sur les traitements en cours du processeur. Augmenter la fréquence d'incrémentation du compteur matériel permet d'augmenter la précision. Toutefois, le prix à payer est que le nombre de débordements du compteur matériel ou d'incrémentation du compteur logiciel augmente de même.

Les résultats ci-dessous présentés ont été obtenus avec un microcontrôleur MPC5534 dont le processeur travaille à une fréquence de 40 MHz.

Comme représenté, le procédé permet de mesurer la durée entre les deux fronts i et j du signal représentant la durée du cycle de l'arbre à came et donc de mesurer la durée du cycle de l'arbre à came.

Avec les procédés de mesure d'une durée de l'art antérieur, le temps d'exécution pour chaque lecture logicielle du compteur numérique était de 400 ns, tandis que la charge du processeur utilisé pour l'acquisition du cycle de l'arbre à came avec 10 fronts i et j et 4 arbres à came à 6000 tours / mn était de 0,8 %.

Avec le procédé et le compteur numérique, le temps d'exécution pour chaque lecture logicielle du compteur numérique est de 200 ns, tandis que la charge du processeur utilisé pour l'acquisition du cycle de l'arbre à came avec 10 fronts i et j et 4 arbres à came à 6000 tours /mn est seulement de 0,04 %. Ainsi, le procédé et le compteur numérique permettent un gain en termes de temps d'exécution et de ressource du processeur.

En outre, l'utilisation d'une valeur codée sur 32 bits est optimisée pour les architectures de microcontrôleur 32 bits. En effet, pour ces architectures, toutes les opérations sur des valeurs codées sur 32 bits seront simplifiées comparativement aux opérations sur des valeurs codées sur 24 bits. Notamment, aucune vérification de la saturation ou des opérations nécessaires pour des valeurs codées sur 24 bits ne seront nécessaires pour des valeurs codées sur 32 bits.

Le compteur numérique et le procédé sont tout particulièrement destinés à être mis entre œuvre dans les véhicules automobiles et en particulier pour déterminer la vitesse d'un véhicule. Pour cela, un capteur mesure la vitesse du véhicule et il envoie des fronts plus ou moins rapides en fonction de la vitesse du véhicule. Le procédé et le compteur numérique selon l'invention permettent d'évaluer la durée en deux fronts et donc d'en déduire la vitesse du véhicule.

De façon avantageuse, le compteur numérique est aussi bien adapté à un système monoprocesseur qu'à un système multiprocesseurs, à condition que les données du compteur logiciel soit gérées sur une mémoire partagée entre les processeurs.

Il doit être évident pour les personnes versées dans l'art que la présente invention permet des modes de réalisation sous de nombreuses autres formes spécifiques sans l'éloigner du domaine d'application de l'invention comme revendiqué. Par conséquent, les présents modes de réalisation doivent être considérés à titre d'illustration mais peuvent être modifiés dans le domaine défini par la portée des revendications jointes.