Mise à jour le, 29/12/2019
Visiteurs N°
Accueil |
Sommaires |
Micro-ordinateurs |
Physique |
Technologies |
Formulaires Mathématiques |
Accès à tous nos Produits |
Aperçu de tous nos Produits |
Nos Leçons aux Formats PDF |
Informatique |
Forums |
Divers et autres |
Conclusion du Z80 de la Carte CPU | Bas de page |
Explication du Fonctionnement du Circuit Microprocesseur "Z80" :
4. 3. - FONCTIONNEMENT DU CIRCUIT MICROPROCESSEUR Z80
Cette expérience a permis d'obtenir les signatures des signaux d'adresse générés par le Z80 ; ceux-ci sont périodiques comme le montre la figure 21.
Chaque début de lecture d'une instruction se fait sur commande du Z80 par un signal généré par le microprocesseur ; RD vient du mot anglais READ (lire).
Pour des raisons de place, on a seulement indiqué sur la figure 21 les quatre premiers signaux d'adresse, relatifs aux seize premières adresses parmi les 65 536 possibles. Les autres signaux jusqu'à A15, qui ne sont pas montrés figure 21, ont une allure périodique analogue.
Le bit A15 reste au niveau bas pendant 32 768 impulsions de et au niveau haut pendant les 32 768 impulsions suivantes.
La séquence des bits qui entrent dans le registre à décalage dépend de la sortie d'adresse considérée et du signal d'horloge utilisé. Puisque dans notre circuit de test c'est le signal qui fait office d'horloge, la séquence de A0 et donc : 01 01 01 01 ... et ainsi de suite ; celle de A1 est par contre 00 11 00 11 ... ; celle de A2 00 00 11 11 00 00 ... ; celle de A3 00 00 00 00 11 11 11 11 ... etc.
Voyons maintenant plus en détail le fonctionnement du circuit que l'on vient d'expérimenter, en examinant le schéma électrique de la figure 18-b. La partie du circuit dessiné à gauche du Z80 sert à générer le signal d'horloge pour le microprocesseur.
(Nous reportons ici le schéma de la figure 18-b afin d'en faciliter la lecture).
Deux triggers de Schmitt, reliés comme les oscillateurs du digilab, produisent un signal rectangulaire dont la fréquence est d'environ 1 MHz. Ce signal est appliqué à l'entrée d'horloge de la bascule 74LS74 dont la sortie, adaptée par le transistor T1, permet de commander l'entrée d'horloge f du Z80.
Nous avons déjà eu l'occasion, lors de la pratique N°1, de nous attarder sur le fonctionnement du circuit d'adaptation construit autour de T1.
Les entrées , , , sont reliées à la tension positive d'alimentation par l'intermédiaire de quatre résistances de 1 kW de façon à assurer le fonctionnement régulier du Z80.
Les entrées D0 à D7 sont, par contre, reliées à la masse de manière que le microprocesseur lise toujours l'instruction NOP.
La sortie A15 est reliée au générateur de cycle de mesure qui est formé de trois bascules de type D ; celle repérée par FF2 sert à "lisser" le signal issu de A15.
En effet, les signaux d'adresse générés par le Z80 ne se présentent pas exactement comme l'illustre la figure 21, car pendant le temps où le Z80 décode et exécute l'instruction (ici NOP), les sept bits les moins significatifs (A0 à A6) du bus d'adresse contiennent une adresse de rafraîchissement pour mémoires dynamiques.
En effet, les mémoires de ce type perdent leur contenu si elles ne sont pas "rafraîchies" périodiquement.
A chaque cycle, c'est-à-dire à chaque impulsion se présentant à la sortie , il y a incrémentation de l'adresse de rafraîchissement.
Simultanément, le contenu du registre d'interruption (dont le rôle sera examiné ultérieurement) est présenté sur les entrées d'adresse A8 à A15. Comme une remise à zéro (RESET) du microprocesseur est effectuée, ces bits passent à zéro à chaque impulsion de .
Le bit A7 est, quant à lui, forcé à 0 lorsque le contenu du registre d'interruption et l'adresse de rafraîchissement sont présentés sur le bus d'adresse.
Il en résulte que les signaux A7 à A15 ont l'allure indiquée figure 22.
Pour obtenir la signature des différentes sorties d'adresse, on a besoin d'une impulsion de durée égale à la période du signal A15.
Puisque celui-ci est forcé lors de chaque instruction à 0 comme le montre la figure 22, il convient de le mettre en forme pour obtenir un signal analogue à ceux de la figure 21.
Pour cela, il suffit de relier la sortie A15 à l'entrée D de FF2 et de prendre comme signal d'horloge le signal RD obtenu en inversant le signal avec l'inverseur 74LS14.
Ainsi, la bascule FF2 mémorise le signal présent sur l'entrée D lorsque l'horloge RD passe du niveau bas au niveau haut, c'est-à-dire lorsque passe au niveau bas.
On transfère donc à la sortie Q le signal A15 sans les impulsions dues au bit (égal à 0) de poids fort du registre d'interruption (I).
Ce transfert est illustré par le chronogramme de la figure 23.
Le signal A15 ainsi produit et celui obtenu au moyen du bouton-poussoir P1 commandent à leur tour le générateur de cycle de mesure constitué des deux bascules FF3 et FF4.
Celles-ci sont contenues dans le circuit intégré 74LS74 inséré sur le support ICX.
Le fonctionnement de ce générateur est simple. Observez la figure 24 : lorsque l'on appuie sur P1, on envoie une impulsion d'horloge à la bascule FF3 dont l'entrée D2 est câblée au niveau haut ; la sortie Q2 passe donc au niveau haut.
L'entrée D3 de la bascule FF4, étant reliée à Q2, est au niveau haut.
Le premier front de montée du signal A15 fait basculer FF4 ; ainsi, la sortie Q3 passe au niveau haut et 3 passe au niveau bas.
L'entrée CLEAR de FF3, reliée à 3, est également portée au niveau bas et remet donc FF3 à zéro ; Q2 repasse au niveau bas ainsi que D3.
Au front montant suivant de A15, la bascule FF4 dont l'entrée D3 était au niveau bas. Q3 repasse alors au niveau bas et 3 au niveau haut. On désactive ainsi l'entrée CLEAR de FF3 qui est prête pour un autre cycle.
Comme le montre le chronogramme reproduit figure 24, on obtient à la sortie (Q3) du générateur de cycle de mesure un signal qui reste au niveau haut pendant un temps exactement égal à la période de A15.
C'est le temps nécessaire au microprocesseur pour qu'il génère toutes les adresses possibles de 0000 à FFFF.
Le signal Q3 est envoyé sur une entrée de la porte ET désignée par A ; sur l'autre entrée, arrive le signal RD. La sortie de cette porte est reliée à l'entrée d'horloge du registre à décalage qui, de cette façon, reçoit les impulsions RD seulement lorsque Q3 est au niveau haut.
En appuyant une seconde fois sur P1, on peut faire démarrer un autre cycle de mesure ; en outre, à chaque nouvelle mesure, il est nécessaire d'initialiser le registre en le remettant à zéro, ce que l'on obtient en ramenant au niveau bas l'entrée par l'intermédiaire de l'interrupteur SW0.
4. 4. - CONCLUSION
Dans la pratique précédente, vous avez appris à mieux connaître le Z80 ainsi que les circuits qui l'entourent. On peut donc commencer à construire un schéma synoptique de l'unité centrale plus détaillé que celui présenté dans la Théorie 1. (Voir figure 3)
Nous avons vu que le Z80 possède seize sorties pour les adresses et huit entrées / sorties pour les données.
Le Z80 communique grâce à ces broches spécialisées avec la mémoire et les périphériques, par exemple avec le clavier ou l'afficheur.
On pourrait relier directement le Z80 à une seule mémoire comme le montre la figure 25 mais cette mémoire devrait avoir une très grande capacité.
En effet, puisque les bits d'adresse sont au nombre de seize, il est possible d'adresser 65 536 données différentes (c'est-à-dire 64K), chacune de huit bits, la mémoire devrait donc avoir une capacité de 65 536 x 8 = 524 288 bits.
Une mémoire RAM statique de cette capacité est difficile à trouver et coûteuse ; de plus, elle n'est pas intéressante. En effet, il est nécessaire dans la plupart des cas, d'utiliser au moins deux types de mémoire : une ROM (ou PROM ou EPROM) et une RAM.
Les mémoires à lecture seule (ROM) servent à conserver la partie du programme qui ne doit pas être modifiée ; Les mémoires RAM, par contre, sont utilisées pour stocker temporairement les données traitées par le microprocesseur.
Dans certains cas, les RAM sont utilisées pour écrire un programme en cours de développement ou d'essai.
On a déjà dit que les mémoires sont coûteuses ; donc, si une capacité de 4K est suffisante par exemple, il est inutile d'employer une mémoire de 64K. Ainsi, sur la carte CPU ou UC, on trouve en plus du microprocesseur six supports de mémoires permettant d'insérer, de façon adéquate, différents types de mémoire, l'adressage étant facilité par des straps.
Il faut maintenant savoir répartir ces mémoires et connaître la manière de les relier au Z80.
Étant donné qu'il y a six supports par exemple et qu'on a la possibilité d'adresser au maximum 65 536 positions mémoire, chacune de ces six mémoires pourra contenir au maximum 65 536 / 6 = 10 922 données de huit bits chacune.
Ces composants ont donc huit entrées / sorties sur lesquelles se présente la donnée à lire ou à écrire, comme on le voit figure 26.
Les entrées / sorties de toutes les mémoires sont reliées en parallèle entre elles et raccordées au bus du Z80.
Si le circuit était réalisé comme représenté figure 26, il ne pourrait pas fonctionner. En effet, si deux ou plusieurs mémoires émettaient simultanément des données vers le Z80, il se produirait un mélange de celles-ci.
Il est donc nécessaire qu'une seule mémoire à la fois soit habilitée à fonctionner de façon que, pendant que l'on envoie des données par exemple à la mémoire 2, les autres mémoires soient déconnectées du circuit.
De même, il faut que les autres mémoires n'envoient pas d'autres données sur la même ligne lorsque le microprocesseur lit des données dans la mémoire 1.
En d'autres termes, il faut sélectionner une mémoire, c'est-à-dire indiquer à quelle mémoire le microprocesseur veut accéder à un instant donné pour lire ou écrire des données.
Dans ce but, chaque boîtier de mémoire possède une ou plusieurs entrées de validation désignées habituellement par CE (initiales de Chip Enable) ou CS (Chip Select) ; selon le niveau de tension appliqué à ces entrées, le composant est sélectionné ou non.
C'est le microprocesseur, dans notre cas le Z80, qui devra commander les entrées de validation.
Il existe deux méthodes : la sélection linéaire et le décodage mémoire.
La méthode de la sélection linéaire est la plus simple et consiste à utiliser les bits les plus significatifs de l'adresse pour sélectionner les mémoires comme le montre le schéma de la figure 27.
La mémoire 6 est sélectionnée lorsque le bit A15 vaut 1, la mémoire 5 lorsque le bit A14 vaut 1, etc.
L'avantage de cette méthode est qu'elle ne réclame aucun circuit supplémentaire. Elle présente toutefois un gros inconvénient : elle est très rigide et ne permet pas d'organiser la mémoire d'une façon assez souple, c'est-à-dire de disposer les composants dans les espaces de mémoire (ensembles de positions mémoire) les mieux appropriés.
Le plan de mémoire qui en résulte (c'est-à-dire la disposition des boîtiers de mémoire à l'intérieur du champ d'adresse) n'est absolument pas pratique.
En effet, la mémoire 6 est sélectionnée par toutes les adresses qui ont le bit A15 égal à 1, soit celles qui vont de :
1000 0000 0000 0000
à 1111 1111 1111 1111
La moitié des adresses possibles est donc réservée à la mémoire 6 qui, pour être exploitée entièrement, devrait avoir une capacité de 32K.
Il vaut donc mieux utiliser la méthode du "décodage de mémoire". Supposons que l'on veuille partager la mémoire de telle sorte que le dernier boîtier comprenne toutes les adresses qui vont de :
1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
à 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Il s'agit donc d'une mémoire de 2K. On remarque que les cinq bits les plus significatifs (A11 à A15) sont toujours égaux à 1 ; en appliquant ces bits à une porte ET, comme indiqué figure 28, on obtient un signal qui peut valider la mémoire parce que la sortie du ET est seulement active lorsque les adresses données par le Z80 sont comprises dans l'intervalle mentionné ci-dessus.
Il est possible d'utiliser un réseau de décodage différent pour chaque mémoire mais il est plus commode encore d'employer un décodeur unique pour toutes les mémoires ; dans notre cas, il est constitué par la PROM CPU de type 74S472 que vous avez testée lors de la Pratique 1.
Cette PROM reçoit les bits d'adresse compris entre A10 et A15 et fournit sur ces six sorties les signaux de sélection des mémoires notés , , , et .
La PROM a été programmée de telle sorte qu'un signal de sélection devienne actif (niveau bas) lorsque l'adresse émise par le Z80 se situe dans le champ d'adresse assigné à la mémoire correspondante.
La figure 29 montre comment la PROM de décodage est reliée au Z80 et aux mémoires.
Dans cette pratique, vous avez appris qu'il existe un circuit RESTART (redémarrage).
Ainsi, les bits d'adresse A12, A13, A14 et A15 ne vont pas directement à la PROM de décodage, mais passent d'abord par le circuit RESTART.
Un schéma synoptique de la carte CPU englobant tous les circuits que vous avez vu jusqu'à présent, est dessiné figure 30.
On remarque que le décodeur de mémoire fournit deux autres signaux de sortie notés 7 et 8 dont le premier est envoyé au circuit WAIT.
Lorsque l'on prévoit d'utiliser une mémoire lente, on programme la PROM de façon que 7 soit au niveau bas (niveau actif) chaque fois que le Z80 accède à cette mémoire.
Ainsi, le Z80 reste en attente le temps nécessaire. La sortie 8 a une autre utilisation qui sera vue plus tard.
Il est à noter également que les mémoires ont une autre entrée de validation notée (abrégé de Output Enable ou validation de sortie) et reliée à la broche du Z80. Nous avons déjà vu la fonction de cette sortie : lorsque le Z80 veut lire une donnée d'une mémoire, il envoie un niveau bas de tension à la broche . De cette manière, on valide la sortie des données de la mémoire sélectionnée sur les lignes D0 à D7.
D'autres entrées que l'on peut voir sur le schéma de la figure 30 sont relatives à des demandes et commandes provenant de l'extérieur de la carte.
La commande indique une demande d'interruption que le Z80 ne peut ignorer ; lorsque celle-ci passe au niveau bas, le Z80 interrompt le programme en cours pour exécuter celui d'interruption.
La commande est par contre une demande d'interruption que le Z80 peut ignorer ; une autre demande d'interruption peut parvenir de la carte CPU elle-même, plus précisément d'un circuit appelé CTC (initiales de Counter Timer Circuit, circuit temporisateur compteur). Dans certaines conditions, par exemple à la fin d'un calcul, il peut signaler une demande d'interruption, en activant l'entrée . Un dernier signal de commande est dont nous allons voir le rôle.
Nous savons que les mémoires ont en commun le bus de données. Il peut arriver qu'un dispositif extérieur à la carte CPU doive utiliser le bus ; dans ce cas, il envoie une demande au Z80 par l'intermédiaire du signal (abréviation de Bus Request) et le microprocesseur cède le contrôle du bus dès que l'instruction en cours est terminée.
Nous aurons l'occasion de revenir par la suite sur la fonction des différentes entrées dont nous venons de faire une rapide description.
Pour l'instant, il suffit de savoir que les adresses et les données parcourent des lignes ou bus reliant entre eux de nombreux dispositifs.
Rappelez-vous enfin que tous les signaux comme , sont actifs lorsqu'ils sont au niveau bas : ceci est indiqué par la barre.
Cette pratique vous a permis d'élargir vos connaissances sur la carte CPU et notamment le fonctionnement du Z80 . Bien évident, nous allons pas construire un micro-ordinateur car cela représente un travail énorme et coûteux.
Cliquez ici pour la leçon suivante ou dans le sommaire prévu à cet effet. |   Haut de page |
Page précédente | Page suivante |
Envoyez un courrier électronique à Administrateur Web Société pour toute question ou remarque concernant ce site Web.
Version du site : 10. 4. 12 - Site optimisation 1280 x 1024 pixels - Faculté de Nanterre - Dernière modification : 02 Septembre 2016.
Ce site Web a été Créé le, 14 Mars 1999 et ayant Rénové, en Septembre 2016.