Brevet FR2749113A1 — publié le 19971128

PROCEDE ET DISPOSITIF PROGMRAABLE DE GENERATICON DE TRAINS D'IMPRLSIONS DE LARGEUR VARIABLE La présente invention concerne la génération de trains d'impulsions au moyen d'un microprocesseur. Elle concerne plus particulièrement la génération de trains de largeur variable d'impulsions de fréquence variable, les largeurs respectives des trains et des impulsions étant programmables au moyen d'une unité centrale de traitement d'un microprocesseur. Une telle génération de trains d'impulsions sert, par exemple, dans des télécommandes à infrarouge pour piloter des diodes d'émission infrarouge, la séquence dans laquelle sont générés les trains d'impulsions et/ou leur nombre d'impulsions constituant un code de commande propre à être décodé par un récepteur des signaux infrarouges émis. Plus généralement, la présente invention s'applique à la génération d'une séquence d'impulsions discontinue pour laquelle on souhaite programmer, à la fois, la fréquence des impulsions et la largeur des trains ou séries d'impulsions successives. La figure 1 représente, partiellement et sous forme de schéma-bloc, un exemple de réalisation classique d'un générateur programmable de trains d'impulsions. Un tel générateur comporte une unité centrale de trai- tement (CPU) 1 chargée d'exécuter un programme d'instructions préalablement stocké dans une mémoire (non représentée). L'unité centrale de traitement 1 est classiquement associée à un compteur programmable (TIMER) 2 pouvant servir de base de temps pour des échanges entre le microprocesseur et un périphérique externe, par exemple, une diode d'émission infrarouge (non représentée). L'unité centrale 1 est également associée à un diviseur de fréquence préliminaire (prescaler) 3 dont le rôle est de met- tre en forme une horloge externe CLKE et de délivrer, notamment à l'unité 1 et au compteur 2, une horloge de travail CLK0. Le divi- seur PS 3 est programmable par l'intermédiaire d'un premier registre (PS-REG) 4 pour fixer le taux de division de l'horloge externe CLKE et, ainsi, la fréquence de travail de l'unité cen- trale 1. Le compteur 2 est programmable depuis l'unité centrale 1 par l'intermédiaire de certains bits du registre 4 et d'un deuxième registre (T-REG) 5. La fréquence de comptage est donnée par le signal d'horloge CLK0. L'unité centrale 1 communique avec les registres 4 et 5 par l'intermédiaire de bus d'adresses 6, de données 7 et de com- mande (non représenté). Bien que cela n'ait pas été représenté pour des raisons de clarté, l'unité centrale 1 communique égale- ment par l'intermédiaire des bus avec le compteur 2 pour en assu- rer la commande ainsi qu'avec d'autres éléments classiques (non représentés) du microprocesseur. Le compteur 2 est, par exemple, constitué d'un compteur numérique à bascules (non représentées) associé à un comparateur (non représenté) qui compare la valeur délivrée par le compteur à bascules avec un seuil enregistré dans le registre 5. Lorsque le seuil est atteint, le compteur 2 positionne son signal de sortie S dans un état haut ou bas en fonction de l'état d'un bit de contrôle contenu dans le registre 4. Le compteur 2 est initialisé par un signal ResetC provenant de l'unité 1. La figure 2 représente, sous forme de chronogrammes, un exemple de séquence S de trains d'impulsions obtenue au moyen d'un générateur tel que représenté à la figure 1. La séquence S est ici constituée de trois trains T1, T2 et T3 comportant res- pectivement trois, deux et quatre impulsions I. Les fronts mon- tants et descendants de chaque impulsion I sont générés par le circuit tel que représenté à la figure 1, c'est-à-dire que pour chaque changement d'état du signal S, l'unité 1 doit charger dans les registres 4 et 5, respectivement, un bit de contrôle indi- quant l'état haut ou bas que doit prendre le signal S à l'issue du comptage et un seuil de comptage déterminant la position dans le temps du front suivant. Dans l'exemple représenté, toutes les impulsions I ont la même largeur. La largeur et la fréquence des impulsions doivent cependant pouvoir être ajustées. Dans l'appli- cation aux télécommandes à infrarouge, la fréquence des impul- sions est généralement constante pour une même séquence de trains. De plus, la largeur des impulsions correspond générale- ment à un facteur de forme (largeur d'une impulsion rapportée à la période) compris entre 30 et 50 %, fixé pour toute la séquence. Le signal CLK0 n'a pas été représenté à la figure 2. On notera que la fréquence du signal CLK0 est nettement supérieure à la fréquence des impulsions I d'un train. En effet, l'unité 1 doit effectuer deux cycles de programmation des registres 4 et 5 entre chaque front du signal S et un cycle de programmation nécessite plusieurs cycles d'horloge. Un inconvénient d'un générateur classique tel que représenté à la figure 1 est que le besoin d'écrire dans les registres 4 et 5, préalablement à chaque front souhaité du signal S, occupe considérablement l'unité de centrale de traitement 1. Celle-ci n'est alors pas disponible pour effectuer d'autres tâches. La présente invention vise à pallier cet inconvénient en proposant un procédé et un dispositif programmable de généra- tion de trains d'impulsions qui minimisent le recours à l'unité centrale de traitement. L'invention vise également à rendre la fréquence des impulsions indépendante de la fréquence de travail de l'unité centrale. Pour atteindre ces objets, la présente invention pré- voit un procédé de génération de trains d'impulsions au moyen d'un microprocesseur, consistant: à générer un signal d'enveloppe au moyen d'un compteur programmable par une unité centrale de traitement, la largeur de créneaux du signal d'enveloppe correspondant à la largeur des trains d'impulsions; à générer un signal de porteuse de fréquence détermi- née; et à moduler le signal d'enveloppe par la porteuse. Selon un mode de réalisation de la présente invention, la porteuse est synchrone avec le signal d'enveloppe. Selon un mode de réalisation de la présente invention, la largeur d'un créneau du signal d'enveloppe est un multiple entier de la période de la porteuse. Selon un mode de réalisation de la présente invention, la fréquence de la porteuse est programmable par l'unité centrale de traitement. Selon un mode de réalisation de la présente invention, la porteuse est obtenue par division de fréquence d'un signal d'horloge externe. Selon un mode de réalisation de la présente invention, la porteuse est obtenue par division de fréquence d'un signal d'horloge de l'unité centrale. L'invention concerne également un générateur de trains d'impulsions comportant un microprocesseur pourvu d'une unité centrale de traitement et d'un compteur programmable, et un divi- seur de fréquence programmable délivrant une porteuse de modula- tion d'un signal d'enveloppe généré par le compteur programmable. Selon un mode de réalisation de la présente invention, une sortie du compteur programmable délivrant le signal d'enve- loppe est envoyée sur une entrée d'une bascule dont une entrée d'horloge reçoit la porteuse fournie par le diviseur programma- ble, une sortie de la bascule étant envoyée sur une première entrée d'une porte logique de type ET dont une seconde entrée reçoit la porteuse et dont une sortie délivre les trains d'impul- sions. Selon un mode de réalisation de la présente invention, le diviseur programmable comporte une entrée d'initialisation recevant le signal d'enveloppe généré par le compteur. Selon un mode de réalisation de la présente invention, l'unité centrale est pilotée par un signal d'horloge délivré par un premier diviseur de fréquence préliminaire d'une fréquence externe, le diviseur programmable étant associé à un deuxième diviseur de fréquence préliminaire de la fréquence externe. Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles: les figures 1 et 2 qui ont été décrites précédemment sont destinées à exposer l'état de la technique et le problème posé; la figure 3 représente, schématiquement, un mode de réalisation d'un générateur de trains d'impulsions selon la pré- sente invention; la figure 4 illustre, sous forme de chronogrammes, le fonctionnement d'un générateur tel que représenté à la figure 3; et la figure 5 représente, sous forme de schéma-bloc, un mode de réalisation d'un générateur tel que représenté à la figure 3. Pour des raisons de clarté, les mêmes éléments ont été désignés par les mêmes références aux différentes figures. Pour les mêmes raisons, seuls les éléments du générateur qui sont nécessaires à la compréhension de l'invention ont été représentés aux figures et seront décrits par la suite. 274gl 9113 Selon l'invention, on associe à une unité centrale de traitement 1 et à un compteur programmable 2, un diviseur pro- grammable 10 d'une fréquence d'horloge, par exemple, la fréquence d'horloge CLK0 de l'unité centrale 1. Le rôle du diviseur 10 est de fournir une porteuse P de modulation d'un signal d'enveloppe E délivré par le compteur 2 programmé par l'unité 1. Les signaux E et P, respectivement délivrés par le compteur 2 et par le divi- seur 10, sont combinés, par exemple au sein d'une porte logique "ET" 11 qui délivre un signal S en forme de trains d'impulsions. Le fonctionnement d'un générateur selon l'invention est illustré par la figure 4. Cette figure représente, sous forme de chronogrammes, un exemple de signaux P, E et S. Comme pour la figure 2, le signal CLK0 n'a pas été représenté pour des raisons de clarté. Selon l'invention, le signal E est obtenu d'une manière similaire aux impulsions générées au moyen d'un circuit classique tel que représenté à la figure 1. Cependant, la largeur des cré- neaux Cl, C2 et C3 du signal E correspond désormais à la largeur des trains d'impulsions souhaités, respectivement T1, T2 et T3. Le diviseur 10 fournit le signal P de modulation du signal E. La largeur des impulsions I est déterminée par la programmation du taux N de division du diviseur 10. La figure 5 représente partiellement et sous forme de schéma-bloc un mode de réalisation d'un générateur tel que repré- sente à la figure 3. Ce générateur comporte, comme le générateur classique de la figure 1, une unité centrale de traitement 1, un compteur programmable 2, un diviseur de fréquence préliminaire (PSl) 3 et deux registres 4 et 5. Pour respecter la largeur des impulsions souhaitées, on veillera à ce que les impulsions I du signal P soient synchrones avec les fronts montants du signal E délivré par le compteur 2. Pour ce faire, le diviseur 10 est initialisé (ResetD) par un front montant du signal E. Le compteur 2 est quant à lui initia- lisé par l'unité 1 (ResetC). Le diviseur 10 est programmé par l'unité 1, par exem- ple, par l'intermédiaire d'un registre (non représenté). Cette programmation intervient à chaque fois que l'on souhaite modifier la largeur des impulsions I. De préférence, le signal E est envoyé sur une première entrée de la porte logique 11 par l'intermédiaire d'une bascule 12 pour que la largeur de chaque créneau C du signal E corres- ponde à un multiple entier de la porteuse de modulation, c'est-à- dire du signal P. Le signal P est envoyé, non seulement sur une deuxième entrée de la porte 11, mais également sur une entrée d'horloge de la bascule 12. Un front descendant du signal E n'est donc transmis à la porte 11 qu'à l'apparition d'un front montant du signal P. Ainsi, la sortie du compteur 2 est remise en forme pour correspondre à un multiple entier de la période du signal P. cela garantit que la largeur de toutes les impulsions I d'un même train T1, T2 ou T3 est identique. Cela présente un intérêt parti- culier dans l'application aux télécommandes à infrarouge dans la mesure o cela garantit qu'une dernière impulsion d'un train ne soit pas coupée par le front descendant du signal E et, ainsi, de respecter le facteur de forme sur tout le train d'impulsions. Le diviseur 10 est, par exemple, un diviseur programma- ble par un nombre (N) entier de la fréquence d'horloge CLKO de l'unité centrale 1. A titre de variante représentée en pointillés à la figure 5, le diviseur 10 est associé à un deuxième diviseur de fréquence préliminaire (PS2) 13 recevant, en entrée, le même signal d'horloge externe CLKE que le diviseur préliminaire 3. Le diviseur 13 est alors également programmable par l'unité 1 mais le signal d'horloge qu'il délivre peut être différent du signal CLKO. Un avantage d'une telle variante est que le générateur peut alors s'adapter à différentes normes de fréquences d'impul- sions, sans qu'il soit nécessaire de changer la fréquence externe. Par exemple, cela permet de s'adapter à différentes nor- mes de fréquences d'impulsions de télécommandes à infrarouge. Pour des raisons de clarté, on a supposé que la fré- quence du compteur programmable 2 était la même que la fréquence de travail de l'unité centrale 1. Le compteur programmable 2 peut cependant être piloté par une fréquence inférieure à celle de l'unité 1, comme c'est souvent le cas en pratique et de manière classique. De préférence, le générateur selon l'invention est programmable pour fonctionner, soit en modulant le signal d'enve- loppe E par le signal P, soit en délivrant directement le signal E pour retrouver le fonctionnement d'un générateur classique. Pour ce faire, le signal S est, par exemple, délivré par l'inter- médiaire d'un multiplexeur de sélection d'une entrée parmi deux entrées qui reçoivent, respectivement, le signal E et le signal de sortie de la porte 11. Un avantage de la présente invention est que l'unité centrale de traitement n'a besoin d'écrire dans les registres 4 et 5 que deux fois par train d'impulsions. Un autre avantage de la présente invention est qu'elle permet d'obtenir, pour une fréquence d'horloge CLKO donnée, des impulsions I plus courtes qu'au moyen d'un générateur classique. En effet, dans un générateur classique, la largeur minimale d'une impulsion est fixée par le nombre de cycles d'hor- loge CLKO nécessaire pour procéder à la programmation du bit de contrôle dans le registre 4, puis à celle du seuil de comptage dans le registre 5. Selon l'invention, ce nombre de cycles d'horloge nécessaire aux programmations des registres 4 et 5 correspond désormais à la largeur minimale d'un train d'impulsions. La pro- grammation du diviseur 10 intervient uniquement quand on souhaite modifier la largeur des impulsions I, ce qui, en pratique, n'in- tervient pas dans une même séquence. De plus, pour une fréquence d'impulsions donnée, la présente invention permet de réduire la fréquence de travail de l'unité centrale 1 et, ainsi, de diminuer la consommation du cir- cuit qui est liée, notamment, à cette fréquence de travail. Cet avantage est particulièrement intéressant dans des applications o le circuit est alimenté par piles, comme c'est le cas d'une télécommande à infrarouge. Bien entendu, la présente invention est susceptible de diverses variantes et modifications qui apparaîtront à l'homme de l'art. En particulier, la réalisation pratique du diviseur pro- grammable 10 est à la portée de l'homme de l'art. De même, la programmation de l'unité centrale de traitement 1 en fonction des trains d'impulsions souhaités est à la portée de l'homme de l'art sur la base des indications fonctionnelles données ci-dessus. En outre, on notera que les registres 4 et 5, indiqués à titre d'exemple, pourront être remplacés par un registre unique et que l'organisation du contenu du ou des registres pourra être modifiée, pourvu qu'elle respecte les fonctionnalités décrites. On notera également que le compteur programmable 2 peut être un compteur classique quelconque. REVENDICATIONS 1. Procédé de génération de trains d'impulsions au moyen d'un microprocesseur, caractérisé en ce qu'il consiste: à générer un signal d'enveloppe (E) au moyen d'un comp- teur (2) programmable par une unité centrale de traitement (1), la largeur de créneaux (C) du signal d'enveloppe (E) correspon- dant à la largeur des trains d'impulsions (T); à générer un signal de porteuse (P) de fréquence déter- minée; et à moduler le signal d'enveloppe (E) par la porteuse (P). 2. Procédé selon la revendication 1, caractérisé en ce que la porteuse (P) est synchrone avec le signal d'enveloppe (E). 3. Procédé selon la revendication 1 ou 2, caractérisé en ce que la largeur d'un créneau (C) du signal d'enveloppe (E) est un multiple entier de la période de la porteuse (P). 4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce que la fréquence de la porteuse (P) est programmable par l'unité centrale de traitement (1). 5. Procédé selon l'une quelconque des revendications 1 à 4, caractérisé en ce que la porteuse (P) est obtenue par division de fréquence d'un signal d'horloge externe (CLKE). 6. Procédé selon l'une quelconque des revendications 1 à 4, caractérisé en ce que la porteuse (P) est obtenue par division de fréquence d'un signal d'horloge (CLKO) de l'unité centrale (1). 7. Générateur de trains d'impulsions comportant un microprocesseur pourvu d'une unité centrale de traitement (1) et d'un compteur programmable (2), caractérisé en ce qu'il comporte un diviseur de fréquence programmable (10) délivrant une porteuse (P) de modulation d'un signal d'enveloppe (E) généré par le comp- teur programmable (2). 8. Générateur selon la revendication 7, caractérisé en ce qu'une sortie du compteur programmable (2) délivrant le signal d'enveloppe (E) est envoyée sur une entrée d'une bascule (12) dont une entrée d'horloge reçoit la porteuse (P) fournie par le diviseur programmable (10), une sortie de la bascule (12) étant envoyée sur une première entrée d'une porte logique de type ET (11) dont une seconde entrée reçoit la porteuse (P) et dont une sortie (S) délivre les trains d'impulsions (T). 9. Générateur selon la revendication 7 ou 8, caracté- risé en ce que le diviseur programmable (10) comporte une entrée d'initialisation (ResetD) recevant le signal d'enveloppe (E) généré par le compteur (2). 10. Générateur selon l'une quelconque des reven- dications 7 à 9, caractérisé en ce que l'unité centrale (1) est pilotée par un signal d'horloge (CLKO) délivré par un premier diviseur de fréquence préliminaire (3) d'une fréquence externe (CLKE), le diviseur programmable (10) étant associé à un deuxième diviseur de fréquence préliminaire (13) de la fréquence externe (CLKE).