Un générateur d'horloge programmable


Voici un oscillateur à quartz pour circuit à microprocesseur qui permet de générer des fréquences d’horloge autres que celles standards, tout en étant équipé de quartz que l’on trouve facilement dans le commerce. Ce circuit est idéal pour les numériseurs vidéo, il permet de piloter des dispositifs qui requièrent parfois une fréquence d’horloge pouvant aller jusqu’à 100 MHz !


Il existe de nombreuses applications ainsi que des circuits électroniques particuliers, à microcontrôleur ou à microprocesseur, pour lesquels des fréquences d’horloge très élevées ou de valeurs inhabituelles sont nécessaires.
Dans ces cas-là, il n’est pas toujours facile de trouver le quartz qu’il faut dans le commerce. Il est donc souvent nécessaire de s’adapter. Par ailleurs, dans certains dispositifs, on utilise une seule et unique fréquence qui doit être, par exemple, multiple de la fréquence de balayage d’une image télévisuelle.
La seule solution à adopter est alors de ne pas monter le quartz prévu mais d’utiliser un générateur d’horloge, c’est-à-dire l’un de ces composants que l’on voit généralement contenus dans des boîtiers métalliques rectangulaires et que l’on trouve sur les cartes mères des ordinateurs à microprocesseur.
Dans cet article, nous vous proposons la réalisation d’un générateur de fréquence d’horloge ou générateur d’horloge plus simplement. En fait, c’est un module en tout semblable aux modules intégrés dans des boîtiers métalliques, mais ayant la particularité d’être polyvalent. En effet, ce générateur accepte des quartz de n’importe quelle fréquence comprise entre 1 et 25 MHz. Il peut donc générer, en fonction du facteur multiplicateur imposé par le dip-switch, des fréquences pouvant aller jusqu’à 100 MHz.
Il s’agit donc d’un module universel à utiliser pour fournir la fréquence d’horloge à tout type de dispositif ou circuit électronique, même dans les applications qui requièrent des quartz introuvables ou bien des fréquences inhabituelles.
La pièce maîtresse du montage est le circuit intégré ICD2053B du constructeur CYPRESS, spécialiste des mémoires ainsi que des générateurs d’horloge programmables.
Cette société est l’un des plus importants fournisseurs des constructeurs de cartes mères pour PC.
Le microprocesseur est un parfait multiplicateur de fréquence, programmable de l’extérieur grâce à des instructions sérielles fournies par un dispositif d’élaboration (par exemple, un microcontrôleur, comme dans le cas qui nous occupe…) capable de dialoguer via un bus I2C.

Le multiplicateur intégré
On trouve désormais de plus en plus de générateurs d’horloge programmables, surtout dans les PC, car ils ont l’avantage d’être universels et malgré tout, tout aussi précis que les fixes, mais surtout parce qu’ils peuvent modifier la fréquence générée en fonction d’une demande précise provenant du circuit de contrôle.
Pensez aux CPU modernes utilisées dans les ordinateurs : les cartes mères d’aujourd’hui ont des BIOS très sophistiqués, dont l’une des nombreuses fonctions est de gérer le contrôle de la température du microprocesseur.
Dans le cas où celle-ci dépasserait la valeur déterminée (en raison, par exemple, d’une panne du ventilateur) l’horloge est alors ralentie pour éviter une surchauffe qui serait fatale au microprocesseur.
En effet, la dissipation de puissance de n’importe quel dispositif électronique numérique est proportionnellement liée à la fréquence de travail.
Si l’on utilisait des générateurs d’horloge fixes dans les cartes mères, il nous serait alors impossible d’effectuer cette opération.
En adoptant ces circuits intégrés, générateurs d’horloges réglables modernes, le programme de base (le BIOS), peut intervenir en réglant la fréquence sur la valeur requise. Le fait que presque toutes les cartes mères vendues dans le commerce aujourd’hui soient munies d’un microprocesseur CYPRESS ou d’un équivalant n’a donc rien d’étonnant.

Le multiplicateur ICD2053B
Notre ICD2053B est composé d’un PLL (Phase-Locked Loop - boucle à verrouillage de phase) placé sur un VCO (Voltage-Controlled Oscillator - oscillateur contrôlé par une tension) très précis, capable de garantir une tolérance inférieure à 0,1 % par rapport à la valeur générée.
Son oscillateur travaille en prenant comme base la fréquence du quartz relié entre les broches 1 et 8 et produit une fréquence multiple de cette dernière.
Vient ensuite un diviseur, géré par l’intermédiaire d’un registre duquel dépend le facteur de division, et qui détermine ensuite la fréquence de sortie exacte, que l’on pourra prélever sur la broche de sortie 5 (CLKOUT).
Sans trop vouloir rentrer dans les détails du fonctionnement et de la programmation (si besoin est, vous pouvez consulter les caractéristiques techniques du circuit intégré disponible sur le site Internet : www.cypress.com), on peut dire que l’ICD2053B contient deux registres appelés “Control” et “Program”.
Le registre “Control” sert à paramétrer des modalités de travail particulières, telles que l’habilitation de la sortie lorsque le générateur “tourne” à plein régime, la mise en oeuvre du multiplexeur et la gestion de la broche 7. Cette dernière assume un rôle différent, en fonction de la position du registre de contrôle. Pour être parfaitement exact, lorsque la broche 7 se trouve au niveau logique 0, l’ICD2053B transmet sur la broche 5 la fréquence produite par l’oscillateur interne. A l’inverse, lorsque la broche 7 se trouve au niveau logique 1, c’est une fréquence identique à celle du quartz que l’on récupérera sur la broche 5. Par ailleurs, si le troisième bit du registre se trouve au niveau logique 0, la fonction OE est alors activée : la broche 7 sert en effet de “Output Enable” (activateur de sortie), c’est pourquoi si la sortie de l’horloge (broche 5) se trouve au niveau logique 0, elle passe en “three state”, tandis que si elle est portée au niveau logique 1 (ou si elle reste ouverte, étant donné qu’elle est munie d’une résistance de pull-up), on pourra alors prélever la fréquence produite par le VCO du PLL interne sur la sortie CLKOUT.
Quant au registre “Program”, c’est le cerveau de l’oscillateur, car c’est par lui qu’est établi le facteur de division de l’horloge générée. Le registre contient des commandes de programmation à 22 bits, transmises par le dispositif qui contrôle le microprocesseur par l’intermédiaire de la ligne sérielle de contrôle à 2 fils (le bus I2C).

Le schéma électrique
Dans notre montage, le programme MF379, chargé de gérer le générateur d’horloge ICD2053B, est implanté dans un microcontrôleur de chez MICROCHIP, un PIC12C672 8 bits à architecture RISC. Le programme MF379 est destiné à fournir les instructions requises sous forme sérielle, au format I2C, en utilisant les broches 2 et 3 du microcontrôleur.
La fréquence établie dépend à son tour du niveau logique des broches 7, 6, 5 et 4, c’est-à-dire de la condition des micro-interrupteurs du dip-switch DS1. Ces micro-interrupteurs peuvent être réglés par l’utilisateur, avec une extrême simplicité, en se référant tout simplement au tableau donné en figure 6 et en choisissant parmi les 16 combinaisons possibles. En fait, le générateur d’horloge ICD2053B ainsi contrôlé, peut fournir des fréquences comprises entre 2,5 et 10 MHz, à intervalle de 500 kHz, le tout en partant d’un quartz de 1 MHz. Donc, le facteur de multiplication global peut varier de 2,5 à 10, en passant par ces différents pas : 2,5 ; 3 ; 3,5 ; 4 ; 4,5 ; 5 ; 5,5 ; 6 ; 6,5 ; 7 ; 7,5 ; 8 ; 8,5 ; 9 ; 9,5.
Comme nous l’avons déjà dit, le circuit peut produire des fréquences horloges pouvant atteindre une fréquence de 100 MHz. Pour ce faire, il suffit de remplacer le quartz de 1 MHz par un quartz de 10 MHz (C.Q.F.D.).
D’autre part, nous vous rappelons que le microprocesseur accepte des quartz (horloge de référence) de 1 à 25 MHz.
Pouvant ainsi compter sur une multiplication maximale x10, à l’aide d’un élément de 10 MHz, on pourrait facilement naviguer entre 25 et 100 MHz.
Ou encore, avec un quartz de 4 MHz, on pourrait naviguer entre 10 et 40 MHz, etc.
Dans le microcontrôleur, un programme qui “tourne” à l’allumage permet de régler le registre “Control” de l’ICD2053B mais il commande également le registre “Program”.
Pour être exact, à la mise sous tension et après avoir initialisé les ports I/O (entrée/sortie), le programme paramètre le “Control Register” de façon à placer la même fréquence que celle du quartz (fREF) sur la sortie CLKOUT du multiplicateur de fréquence (broche 5 de U1). Ensuite, il envoie rapidement les données qui définissent le facteur de multiplication, informations qui découlent de la lecture du dip-switch relié aux broches 4, 5, 6 et 7 de U2.
Le tableau de la figure 6 montre comment positionner les micro-interrupteurs pour obtenir les différents facteurs de multiplication.
Une fois le “Program Register” paramétré, l’ICD2053B peut donc faire sortir le signal d’horloge produit par PLL.
Ainsi, le microcontrôleur sait qu’il peut débloquer la sortie (broche 5 de U1) et laisser sortir la fréquence produite par le multiplicateur.
Signalons que la broche 2 du Bus de communication série utilisé par le PIC pour contrôler le composant CYPRESS, sert de canal pour les données, tandis que la broche 3 est la ligne de l’horloge qui scande la transmission sérielle des commandes.

Figure 1 : Schéma électrique du générateur d’horloge programmable.

Figure 2 : Le circuit intégré ICD2053B de CYPRESS

Figure 2a.


Figure 2b.


Figure 2c.


Figure 2d.


Le microprocesseur utilisé dans le générateur d’horloge est un multiplicateur de fréquence programmable, généralement utilisé pour les cartes mères modernes des ordinateurs, en lieu et place du traditionnel oscillateur fixe. Entre autres fonctions, ce circuit intégré permet de diminuer la fréquence d’horloge lorsque la température du processeur central augmente dans des proportions trop importantes.
Par ailleurs, il est particulièrement utile dans les portables car il permet de corriger la fréquence d’horloge lorsque les batteries sont en train de se décharger.
Le circuit intégré ICD2053B est composé d’un PLL placé sur un VCO très précis, capable de garantir une tolérance inférieure à 0,1 % par rapport à la valeur générée. Son oscillateur travaille en prenant comme référence la fréquence du quartz relié entre les broches 1 et 8 et produit une fréquence multiple de cette dernière.
On trouve ensuite un diviseur, géré par l’intermédiaire d’un registre dont le réglage détermine le facteur de division, facteur qui détermine à son tour la fréquence de sortie exacte, prélevée sur la broche 5 (CLKOUT).
A l’intérieur du ICD2053B se trouvent deux registres, appelés “Control” et “Program”. Le registre “Control” permet de programmer certaines fonctions concernant les ports de sortie, tandis que le registre “Program” permet de choisir véritablement la fréquence à générer.
Les données sérielles envoyées aux deux registres se distinguent par le fait que celles qui sont dirigées vers le “Control Register” sont caractérisées par un protocole qui prévoit une commande de type “011110”, c’est-à-dire de 4 niveaux logiques hauts successifs. Cela implique que toute autre donnée de commande envoyée “Program Register” devra comporter au moins un “0” après chaque séquence de trois “1” logiques.

Figure 3 : Schéma d’implantation des composants du générateur d’horloge programmable.

Figure 4a : Photo d’un des prototypes du générateur d’horloge programmable vu du côté composants.

Figure 4b : Vue de la même platine mais du côté soudures. Voyez comment est monté le circuit intégré ICD2053B.

Figure 5 : Dessin, à l’échelle 1, du circuit imprimé du générateur d’horloge programmable.

Liste des composants
R1 = 10 kΩ
C1 = 100 nF polyester 5 mm
U1 = Intégré CMS ICD2053B
U2 = μcontrôleur PIC12C672-MF379
Q1 = Quartz (voir texte)
DS1 = Dip-switchs 4 micro-interrupteurs

Divers :
1 Support 2 x 4 broches
2 Borniers 2 pôles
3 Broches en bande sécable
1 Circuit imprimé réf. N017


Figure 6 : Le positionnement des micro-interrupteurs de DS1.

Ce tableau permet de régler le multiplicateur de fréquence en fonction de la configuration des micro-interrupteurs du dip-switch DS1.
N’oubliez pas que la fréquence la plus petite est égale à 2,5 fois celle du quartz (x2,5) et que le niveau 1 correspond au micro-interrupteur fermé (ON), tandis que le niveau 0 équivaut au micro-interrupteur ouvert (OFF).
Par exemple, pour obtenir la multiplication par 5, on trouve la combinaison des niveaux logiques “0101”, pour laquelle le bit le moins important est celui qui correspond au micro-interrupteur numéro 1.

Figure 7 : Notre montage permet de générer des fréquences inhabituelles, en partant de quartz d’une valeur que l’on trouve facilement dans le commerce.

La réalisation et l’utilisation
Une fois en possession du circuit imprimé, vous pouvez commencer le montage en insérant et en soudant tout d’abord la résistance et le strap, puis le dip-switchs ainsi que le support de 2 x 4 broches pour le microcontrôleur.
A propos de DS1, remarquez qu’il doit être placé de façon à ce que son premier micro-interrupteur soit bien dirigé vers le bord du support comme le montre la figure 3, pour qu’il coïncide avec la broche 7 du microcontrôleur.
L’intégré ICD2053B est le composant qui nécessite le plus d’attention, étant donné qu’il doit être soudé sur son propre emplacement, du côté cuivré du support comme vous pouvez le voir sur la figure 4b. Tournez donc le circuit imprimé, puis posez le microprocesseur sur les pistes en cuivre correspondantes, en faisant bien attention que la broche 1 et la broche 8 soient dirigées vers les contacts réservés au quartz. Bloquez ensuite l’une des broches à l’aide d’une petite quantité de soudure, de façon à maintenir le circuit intégré immobile, puis soudez les autres broches.
Vous pouvez alors insérer et souder le quartz, après l’avoir choisi d’une valeur vous permettant d’obtenir la fréquence d’horloge que vous désirez. Si vous avez l’intention de changer de quartz, soudez d’abord sur le circuit imprimé, 3 contacts de support en bande sécable puis insérez le quartz (voir figure 7).
Le générateur d’horloge est maintenant prêt, et vous pouvez immédiatement en vérifier le bon fonctionnement en insérant le microcontrôleur MF379 dans son support, en faisant bien attention à ce que la broche 1 et le repère-détrompeur soient bien dirigés vers le bornier d’alimentation.
Au sujet de l’alimentation, précisons que le circuit requiert une tension continue et stabilisée de 3,3 à 5 volts. Le courant absorbé reste modeste et ne dépasse pas les 50 mA.

Aucun commentaire:

Enregistrer un commentaire