FR 2944889 A1 20101029 FR 0952633 A 20090422 DEMANDE DE BREVET B08-5210FR/ODE/AR 07-MGE-371 Société anonyme dite : ST-Ericsson SA (ST-Ericsson Ltd) Procédé et système de génération de battements à partir des pulsations d'une horloge Invention de : Laurent ROUVELLOU Procédé et système de génération de battements à partir des pulsations d'une horloge La présente invention concerne la génération de battements au sein d'un équipement électronique. L'invention s'applique avantageusement à tout équipement électronique pourvu d'une horloge système. Dans certains cas particulier, ces systèmes comprennent un système d'exploitation nécessitant une génération d'impulsions avec un temps multiple non entier du temps d'horloge système. Il existe donc un besoin pour une génération d'impulsions répondant à cette nécessité. Dans d'autres cas particuliers, pour permettre une réduction de la consommation, une partie de ces impulsions est masquée, c'est-à-dire non générée pour permettre une mise en veille profonde et éviter toute consommation inutile. Il existe donc, également, un besoin pour poursuivre le comptage de ces impulsions au cours de la mise en veille, par exemple si l'appareil indique l'heure. Selon un aspect, il est proposé un procédé de génération de battements à partir des pulsations d'une horloge, l'intervalle entre chaque battement généré étant un multiple non entier de l'intervalle entre deux pulsations d'horloge, qui comprend les étapes suivantes: -comptage du nombre de pulsations; et -génération de battements. Au cours de l'étape de comptage, on compte alternativement au moins deux nombres différents avant la génération de chaque battement. Cela permet d'obtenir une convergence de la valeur moyenne de la période des battements générés vers une valeur souhaitée. Il est donc possible de générer des battements avec une cadence très précise. En outre, il n'est pas nécessaire d'utiliser des moyens logiciels qui augmentent le temps de calcul et introduisent une dérive temporelle. On obtient ainsi une génération d'impulsions qui est stable, simple et robuste, et qui ne dérive pas. Selon un mode de mise en oeuvre, ladite horloge dont les pulsations sont comptées est une horloge de mise en veille. Cette horloge étant disponible avec la même fréquence sur tous les systèmes, le procédé peut s'appliquer tel quel sur tous les systèmes utilisant la génération de battement. D'autre part cette horloge est tout le temps active, la génération de battements peut se réaliser sans interruption et par exemple la mise à jour de l'heure est possible. Cette horloge présente aussi l'avantage, étant donnée sa fréquence peu élevée, d'être basse consommation. Elle est plus intéressante que la fréquence système qui est très élevée et change d'un système à un autre. Selon un mode de mise en oeuvre, une suite de longueur variable des nombres de pulsations à compter est programmée. Ainsi en ajustant tous les paramètres de la suite des nombres à compter, à savoir la valeur des nombres VO et V1, la longueur de la suite, on peut optimiser, le cas échéant dynamiquement, l'écart entre la période souhaitée et la période des battements générés. On peut adapter tous ces paramètres en fonction de la température ou de l'âge de l'oscillateur pour compenser de manière dynamique la dérive fréquentielle. Selon un autre mode de mise en oeuvre, la suite comprend 125 éléments. Ainsi une suite dans laquelle l'alternance est optimale permet de garder la période moyenne au plus près de la période de consigne. D'autre part, la convergence est réalisée en un temps assez rapide: 125 ms. Selon un autre mode de mise en oeuvre supplémentaire, les battements générés sont des battements d'inactivité et le procédé comprend en outre une étape de détection d'une instruction de mise en veille, une étape de masquage des battements si ladite instruction d'attente est détectée, une étape de détection d'un évènement de réveil et une étape de reprise de génération des battements d'activité si ledit événement de réveil est détecté et une étape de comptage des battement. Ainsi, les battements étant masqués, on peut économiser l'énergie du système lorsque celui-ci n'est pas utilisé. Dans ce procédé, au cours de ladite étape de comptage on peut en outre compter la somme des battements non générés et masqués. Ainsi, la reprise est immédiate et toutes les impulsions sont comptées. Cela permet d'utiliser une seule horloge système et de ne pas utiliser de moyens logiciels qui augmentent le temps de calcul. De plus, on ne change pas de base de temps pour le calcul des temps masqués. Ainsi, l'inévitable imprécision temporelle qui accompagne ce changement est évitée. De plus, en comptant tous les temps y compris ceux masqués, la mise à jour de l'heure du système est possible. Selon un autre aspect, il est proposé un système de génération de battements à partir des pulsations d'une horloge, l'intervalle entre chaque battement généré est un multiple non entier de l'intervalle entre deux pulsations d'horloge, ledit système comprenant des moyens de comptage des pulsations. Selon cet aspect les moyens de comptage sont aptes à alterner un comptage d'au moins deux nombres différents de pulsations pour la génération de chaque battement. Selon un mode de réalisation, ladite horloge est une horloge de mise en veille. Selon un mode de réalisation, les moyens de comptage comprennent des moyens de stockage aptes à stocker une suite de nombres de pulsations à compter, ladite suite étant de longueur variable. Selon un autre mode de réalisation, les moyens de stockage sont aptes à stocker une suite de 125 nombres. Selon un autre mode de réalisation supplémentaire, les battements sont des battements d'inactivité, le système comprenant des moyens de masquage d'une partie de ces battements, des moyens de reprise de la génération des battements, des moyens de détection d'une instruction de mise en veille, des moyens de détection d'un événement de réveil, des moyens de comptage du nombre de battements. Dans ce système les moyens de comptage peuvent en outre être aptes à compter la somme des battements non générés et masqués. D'autres avantages et caractéristiques de l'invention apparaîtront à l'étude de la description détaillée de modes de mise en oeuvre et de réalisation, pris à titre d'exemples non limitatifs et illustrés par les dessins annexés sur lesquels : - la figure 1 illustre sous forme de schémas blocs un mode de réalisation d'un système de génération de battements; - la figure 2 illustre schématiquement la génération de deux impulsions suivant l'invention; - la figure 3 et 4 illustrent le masquage de plusieurs battements et leur comptage. Sur la figure 1, sont représentés les modules fonctionnels d'un système de génération de battements permettant d'alterner le comptage de deux nombres différents de pulsations avant la génération d'un battement. Sur cette figure sont référencés le motif de charge MTIF, les deux emplacements mémoires contenant les valeurs à charger VO, V1, le moyen de sélection de la valeur à charger SELEC, le compteur du nombre d'impulsions, l'événement (test=0) et le moyen de génération de chaque battement GENB. Le moyen de sélection de la valeur à charger SELEC peut sélectionner la valeur à charger VO ou V1 en fonction du motif de charge MTIF. Par exemple, si dans le motif se trouve un 0 le moyen de sélection SELEC sélectionne la valeur à charger VO. Si dans le motif de charge se trouve un 1, le moyen de sélection SELEC sélectionne la valeur à charger V1. Le motif peut être lu par des moyens de lecture du motif (non représentés), bit après bit. Le numéro de bit du pointeur augmente de 1 après chaque test égal 0 validé, c'est-à-dire au moment du déclenchement de la génération de chaque battement. L'augmentation est faite modulo le nombre de bit du motif de façon qu'après la génération de 128 battements, il soit possible de continuer la lecture des bits. En d'autres termes, après chaque événement déclenchant la génération de battement (test=O), les moyens de lecture avec le pointeur de bit lisent le bit suivant, celui est alors transmis au moyen de sélection SELEC. Puis, les moyens de chargement chargent la nouvelle valeur sélectionnée. Après sélection et chargement de la valeur VO ou V1, le procédé se poursuit jusqu'à la génération du battement. En fait, le nombre VO ou V1 sélectionné correspond au nombre d'impulsions d'horloge qui sont comptées avant le déclenchement de la génération de chaque battement. L'horloge dont les impulsions sont comptées peut être une horloge système. On choisira cependant préférentiellement l'horloge de mise en veille présente avec la même fréquence sur tous les équipements. Pour compter le nombre d'impulsion, le nombre VO ou V1 peut être chargé par le compteur COMPT. Ce nombre N est alors diminué de 1 après chaque comptage d'impulsion. Un test est réalisé en continu sur ce nombre N. Lorsque le nombre N atteint 0, on passe à l'événement (test=0) qui déclenche la génération du battement par les moyens de génération de battement GENB. Dans la description qui vient d'être faite, il est illustré l'alternance entre deux valeurs de comptage. Mais, bien entendu, on ne sort pas du cadre de la présente description lorsque l'alternance est réalisée entre plus de deux valeurs de comptage. Les adaptations à réaliser ne consistent qu'en des adaptations minimes. Par exemple, les moyens de lecture peuvent dans ce cas être capables de lire groupe de bit après groupe de bit. Les emplacements de stockage de valeurs doivent être aussi nombreux que le nombre de valeur à sélectionner. L'augmentation du pointeur de bit se fera avec un pas égal à la taille du groupe de bit nécessaire pour sélectionner les différentes valeurs de charge (exemple si 8 valeurs, 3bits); les autres éléments pouvant rester inchangés. Sur la figure 2, sont représentés la génération de deux battements i et i+l en fonction du temps et en fonction du nombre de pulsations comptées. L'axe des ordonnées représente le nombre pulsations à compter. Cette valeur peut par exemple être VO ou V1. L'axe des abscisses représentant le temps. I1 apparaît dans cette figure que pour un nombre de pulsations compté différent le temps est sensiblement différent. Ainsi l'erreur sur la génération d'un battement peut être compensée par l'erreur sur la génération du battement suivant. En d'autres termes, le motif MTIF peut être choisi pour qu'au bout d'un certain nombre de battements la valeur moyenne des battements corresponde exactement à la valeur de l'intervalle idéalement souhaitée;une alternance optimale permettant de garder la période moyenne au plus près de la période de consigne. Par exemple, dans le cas d'une valeur d'intervalle souhaitée de lms, avec une horloge fonctionnant à 32,768 kHz il peut être choisi des valeurs de VO ou V1 respectivement de 33 et 32. Celles-ci correspondent à des valeurs approximatives en ms de respectivement 1.007 ms et 0.977 ms. Avec ces valeurs, une valeur de 1 ms moyenne des battements peut être obtenue avec un motif comprenant 96 1 et 29 0. Ainsi la convergence est obtenue au bout de 125 ms. On va maintenant décrire en référence aux figures 3 et 4 le fonctionnement du générateur de battements comprenant un compteur apte à compter le nombre de battement générés et non générés et ce uniquement à partir d'une horloge. Outre le mode de fonctionnement normal, ce système propose un mode de mise en veille et un mode de masquage. Ces deux modes commencent dans tous les cas en même temps par une instruction de mise en veille. Ils ne se terminent pas en même temps, selon que l'événement de réveil est programmé (figure 3) ou non (figure 4). Le mode de masquage est en fait inclus dans la période du mode de mise en veille. Tant que le mode de mise en veille est actif, les battements ne sont pas générés. Le compteur comporte en fait deux compteurs RTT_SMIN et RTTTIN. Ils comptent les battements générés par la même horloge. Ils sont complémentaires. Le compteur RTTSMIN compte les intervalles au cours du mode de masquage, tandis que RTTTIN compte les intervalles restant. Ils sont mis à 0 avec le début de la période de mise en veille. Le calcul de la somme des deux compteurs permet de déterminer dans tous les cas le nombre d'intervalles au cours desquels le mode de mise en veille était actif. Ces deux compteurs comportent des moyens pour déterminer le nombre d'intervalles au cours desquels il n'y a pas de battements ou le nombre de battements non générés. Ils comportent aussi des moyens aptes à déterminer si la période de masquage est en cours. Ces moyens peuvent par exemple être des moyens logiciels. Ainsi on peut déterminer le temps réel c'est à dire la somme du temps de mise en veille et du temps de fonctionnement et cela sans utiliser deux horloges différentes. Ces horloges pourraient en effet, présenter une dérive l'une par rapport à l'autre. On obtient ainsi un système plus simple et plus précis. Les figures 3 et 4 illustrent en fait le fonctionnement de ce système dans deux cas. Sur ces deux figures quatre lignes sont à distinguer. La première ligne représente le compteur avec le nombre de pulsations VO ou V1 qui est à compter avant d'émettre un battement. I1 apparaît que ce comptage ne s'arrête pas immédiatement avec une instruction de mise en veille. Le compteur doit arriver à 0 avant de s'arrêter. La deuxième ligne représente les battements générés et les périodes d'interruption de génération de ces battements. Les points représentent des événements, par exemple la valeur RTTSMIN qui atteint la valeur prévue. Les troisième et quatrième lignes représentent les deux compteurs dont le fonctionnement a été explicité ci avant. Dans le cas d'un événement de réveil programmé, la fin du mode du mode mis en veille coïncide avec l'événement de réveil additionné du temps de latence. L'événement de réveil est programmé et se situe en fait à l'intervalle de temps suivant le nombre d'intervalles programmés RTTTWK. Ainsi, comme on peut le voir sur la figure 3, la somme du nombre d'intervalles au cours de la période de masquage et du nombre d'intervalles au cours de la période de mise en veille restant permet d'obtenir le nombre d'intervalles au cours de la période de mise en veille. Dans l'autre cas illustré figure 4, l'événement de réveil est non programmé. Cet évènement a lieu naturellement avant la fin du réveil programmé. La fin du mode de masquage et du mode de veille coïncide avec cet évènement. C'est en fait le logiciel de supervision qui va faire arrêter la période de masquage ainsi que la mise en veille. Ainsi comme on peut le voir sur la figure 4, dans le cas d'un événement non programmé, étant donné que l'on est encore en période masquée le compteur RTT TIN reste égal à zéro. La somme correspondant au nombre de battements non générés est égale à RTT SMIN. a REVENDICATIONS1. Procédé de génération de battements à partir de pulsations d'une horloge, l'intervalle entre chaque battement généré étant un multiple non entier de l'intervalle entre deux pulsations d'horloge, le procédé comprenant les étapes suivantes: - comptage du nombre de pulsations; et - génération de battements; caractérisé en ce qu'au cours de l'étape de comptage, on compte alternativement au moins deux nombres différents avant la génération de chaque battement. 2. Procédé selon la revendication 1, caractérisé en ce qu'on compte le nombre de pulsations de l'horloge de mise en veille. 3. Procédé selon l'une des revendications 1 ou 2, caractérisé en ce qu'une suite de longueur variable des nombres de pulsations à compter est programmée. 4. Procédé selon la revendication 3, caractérisé en ce que la suite des nombres de pulsations à compter comprend 125 éléments. 5. Procédé selon l'une quelconque des revendications 1 à 4, les battements générés sont des battements d'inactivité, caractérisé en ce qu'il comprend une étape de détection d'une instruction de mise en veille, une étape de masquage des battements si ladite instruction d'attente est détectée, une étape de détection d'un évènement de réveil, une étape de reprise de génération des battements d'activité si ledit événement de réveil est détecté et une étape de comptage des battements. 6. Procédé selon la revendication 5, caractérisé en ce qu'au cours de ladite étape de comptage on compte la somme des battements non générés et masqués. 7. Système de génération de battements à partir de pulsations d'une horloge, l'intervalle entre chaque battement généré étant un multiple non entier de l'intervalle entre deux pulsations d'horloge, ledit système comprenant des moyens de comptage des pulsations, caractérisé en ce que les moyens de comptage sont aptes à alterner uncomptage d'au moins deux nombres différents de pulsations pour la génération de chaque battement. 8. Système selon la revendication 6, caractérisé en ce que ladite horloge est une horloge de mise en veille. 9 Système selon l'une des revendications 7 ou 8, caractérisé en ce que les moyens de comptage comprennent des moyens de stockage aptes à stocker une suite de nombres de pulsations à compter, ladite suite étant de longueur variable. 10. Système selon la revendication 9, caractérisé en ce que les moyens de stockage aptes à stocker une suite de 125 nombres. 11. Système selon l'une quelconque des revendications 7 à 10, caractérisé en ce que les battements sont des battements d'inactivité, le système comprenant des moyens de masquage d'une partie de ces battements, des moyens de reprise de la génération des battements, des moyens de détection d'une instruction de mise en veille, des moyens de détection d'un événement de réveil et des moyens de comptage du nombre de battements. 12. Système selon la revendication 11, caractérisé en ce que lesdits moyens de comptage sont aptes à compter la somme des battements non générés et masqués.