FR 2566937 A1 19860103 FR 8410352 A 19840629 MICROPROCESSEUR AVEC FONCTION D'ARRET DU COMPTEUR D'EVENEMENTS La présente invention concerne les microprocesseurs, c'est à dire des circuits électriques intégrés capables d'exécuter un grand nombre de fonctions selon des instructions qui leur sont données sous forme de programmes. L'invention porte sur l'agencement interne des circuits du microprocesseur. Les problèmes qui se posent dans la conception d'un nouveau microprocesseur sont évidemment extrêmement nombreux mais, en restant sur un plan très général, on doit considérer qu'on cherche à faire en sorte que l'utilisateur du microprocesseur ait à sa disposition un certain nombre (par exemple une centaine) de fonctions élémentaires qui, associées dans un programme de tra- vail, permettent au microprocesseur d'exécuter des opérations bien définies dans un contexte donné (commande de machine-outil par exemple). La définition des fonctions élémentaires est une com- posante importante de la conception d'un microprocesseur dès qu'on s'écarte des fonctions élémentaires évidentes telles que l'addition de nombres, la soustraction, les décalages à gauche ou à droite de registres, les branchements conditionnels, etc. En effet, il faut, pour l'utilisateur, que l'élaboration des program- mes soit facile et, pour le fabricant de microprocesseurs, que l'augmentation du nombre de fonctions élémentaires prévues ne se traduise pas par un accroissement exagér. de la surface de la puce de circuit intégré et de son nombre de bornes de sortie vers l'extérieur. Parmi les fonctions élémentaires prévues, il en est qui ne sont pas évidentes à imaginer car elles ne correspondent pas véritablement à des possibilités supplémentaires d'utilisation du microprocesseur, mais plut8t à des possibilités pour l'utilisateur de mieux maîtriser la phase de mise au point de ses programmes d'application: cette phase de mise au point est en effet délicate et il est très rare que les applications envisagées pour le microprocesseur soient suffisamment simples pour que l'utilisateur n'ait qu'a écrire un programme d'exécution, à l'enregistrer en mémoire et a le faire exécuter par le microprocesseur; au contraire, il faut le plus souvent retoucher de nombreuses fois le programme avant qu'il ne fonctionne correctement. La présente invention propose donc ici de donner aux microprocesseurs une nouvelle possibilité, utile lors de la phase de mise au point des programmes des microprocesseurs qui incor- porent un compteur d'évenements ("timer" en anglais). Un tel comp- teur d'événements est souvent prévu sur la même puce de circuit intégré que le coeur du microprocesseur, sa fonction principale étant de compter des intervalles de temps, le plus souvent en nombre de cycles élémentaires d'instructions, pour engendrer des interruptions de programmes apres des durées déterminées (exemple d'application: déclencher une temporisation apres la frappe d'une touche sur un clavier pour éliminer les risques de rebond). Selon l'invention, dans un microprocesseur qui comporte un compteur d'évènements et qui possede une borne extérieure de sélection de mode indiquant, lorsqu'elle est activée et que le microprocesseur est en phase de réinitialisation, que le micropro- cesseur doit se mettre dans un mode choisi parmi plusieurs, un registre de mode sélectionné conservant en mémoire une information sur le mode qui aété sélectionné pendant l'activation de la borne de sélection de mode, l'un des modes possibles étant un mode "non- utilisateur" servant lors de la mise au point de programmes d'application du microprocesseur, on prévoit un circuit logique établissant un ordre d'arrêt du compteur d'évenements lorsqu'on a la combinaison d'états suivante: - la borne de sélection de mode est activée, - on n'est pas en phase de réinitialisation, - et le registre de mode sélectionné indique qu'un mode ou un groupe de modes incluant un "non-utilisateur" a été sélectionné. Autrement dit, l'invention propose un moyen simple et efficace d'arrêter à partir d'une borne d'accès extérieur du microprocesseur le compteur d'évinements, ce qui présente les intérêts suivants: - on peut arrêter le compteur d'évenements à un instant quelconque de l'exécution d'un programme, en particulier lorsque l'utilisateur a demandé un point d'arrêt" (arrêt sur un évenement précis: adresse donnée, éléments extérieurs). Ceci se fait généralement par une broche extérieure (Halt) ou un automate externe. On peut lire, à l'aide d'un programme spécial d'aide i la mise au point, la valeur contenue dans le compteur à l'apparition du point d'arrêt. On aura en particulier l'avantage de ne pas risquer des interruptions dues au compteur lui-même (qui habi- tuellement giéère une interruption automatique à chaque passage par zéro de son contenu) pendant l'exécution du programme spécial d'aide à la mise au point; - on n'a pas à réserver un niveau d'interruption au programme spécial d'aide à la mise au point. En général, pour ne pas être dérangé par une interruption issue du compteur d'évinements lors de l'exécution du programme spécial d'aide i la mise au point, on force une interruption au moment du point d'arrêt afin de masquer toutes les interruptions ultérieures pouvant survenir. Cette méthode est difficilement applicable dans les microprocesseurs o les niveaux d'interruptions sont en nombre tres limité (par exemple lorsqu'il y a seulement une à quatre pla- ces de mémoire en pile prévues pour conserver les adresses de retour au programme principal en cas d'interruption); il est important de ne pas utiliser inconsidérément un niveau d'interruption pour aller lire un registre interne au micropro- cesseur et en particulier l'état du compteur d'évenements; l'invention présente donc l'avantage d'un arrêt par l'extérieur n'interférant pas avec les interruptions normales (extérieures ou par programme ou par l'état du compteur d'événements lui-même) des programmes d'utilisation en cours de mise au point. - le microprocesseur ne part pas en interruption lorsque l'utilisateur manipule le registre de contr8le du compteur d'évènements avec le programme spécial d'aide à la mise au point. Généralement le compteur délivre un signal de débordement (passage par zéro) qui, s'il est validé par un bit d'un registre de contrôle, provoque une interruption. Si au moment du point d'arrêt, lorsque le signal de débordement est présent et est masqué par le bit du registre de contrôle, l'utilisateur va modifier ce bit dans le registre de contrôle à l'aide du programme spécial d'aide à la mise au point, le microprocesseur part en interruption. La broche d'acces extérieur permet de masquer cette interruption. Généralement c'est le programme d'aide à la mise au point qui interdit la modification de ce bit; cette interdiction par programme peut être génante lors de la phase de mise au point. On prévoit que l'ordre d'arrêt du compteur d'véenements est synchronisé sur un instant approprié du cycle d'incrémentation du compteur d'évInements, par exemple sur le premier temps du cycle, afin que le compteur ne soit pas arrêté au milieu d'une phase dtincrémentation, à un instant ou son contenu n'aurait pas de signification réelle. Cependant, cette synchronisation peut se faire non pas par un circuit de synchronisation interne au microprocesseur, mais par l'utilisateur luimême qui devra appliquer un signal logique à un moment bien défini par rapport aux cycles internes du microprocesseur. D'autres caractéristiques et avantages de l'invention apparattront à la lecture de la description détaillée qui suit et qui est faite en référence au dessin annexé dans lequel: - la figure unique représente le schéma synoptique de la partie de microprocesseur concernée par l'invention. Le microprocesseur comporte un certain nombre de cir- cuits et de bornes d'accès extérieures parmi lesquelles on n'a représenté sur la figure 1 que les éléments suivants: Une borne extérieure NDS de sélection de mode qui peut être activée (niveau logique O appliqué à cette borne), ou désactivée (niveau 1). Une borne extérieure 12 destinée à recevoir un niveau logique définissant un mode ou un groupe de modes de fonction- nement particulier du microprocesseur lorsque la borne MDS est activée lors d'une phase de réinitialisation du circuit (signal RESET = 1). Ce niveau logique est enregistré dans une bascule de mémorisation 14 dont la sortie, éventuellement en combinaison avec d'autres sorties issues d'autres bornes extérieures, commande le microprocesseur pour le mettre dans un état correspondant a un mode sélectionné. Les modes de fonctionnement possibles du microprocesseur, ici au nombre de quatre, comprennent un mode normal, un mode non- utilisateur, et par exemple un mode auto-test et un mode de test de contenu de mémoire morte. Dans le mode non-utilisateur on déconnecte le coeur du microprocesseur de ses organes périphériques et on cherche notam- ment à lire, au moyen de programmes d'aide à la mise au point qui font fonctionner le coeur du microprocesseur, l'état de certains registres, bus d'adresses ou de données etc. tels que ces états ont pu apparaître au cours d'un programme exécuté en mode normal. C'est dans ce mode non-utilisateur qu'on veut pouvoir, selon l'invention, arrêter un compteur d'évènements 16 du microprocesseur, à un moment o on est effectivement passé en mode non-utilisateur, c'est à dire que la phase de réinitialisation est terminée (signal RESET revenu à zéro). Ici, la borne extérieure 12 entratne, si elle est activée pendant l'activation de la borne MDS et pendant la phase de réinitialisation du circuit, le passage du microprocesseur dans le mode non-utilisateur ou le mode test de mémoire morte (le choix entre ces deux modes se faisant par une autre borne extérieure non représentée et couplée a un registre de mémorisation similaire à la bascule 14). Si pendant l'activation de la borne MDS durant la phase de réinitialisation du circuit, la borne 12 n'était pas activée (sortie de la bascule restant à l'état logique haut), l'un des deux autres modes de fonctionnement du microprocesseur serait établi. Le niveau logique de sortie de la bascule 14 (niveau bas pour le mode nonutilisateur), le niveau logique présent sur la borne MDS (niveau bas si elle est activée pour la sélection d'un mode de fonctionnement), et le signal RESET de réinitialisation sont utilisés dans un circuit logique très simple qui fournit un ordre d'arrêt à l'incrémenteur 20 du compteur d'viènements 16 lorsque, le signal de sortie de la bascule 14 étant celui qui correspond au mode non-utilisateur et le signal RESET étant revenu à zéro (phase de réinitialisation terminée), la borne MDS est activée, c'est à dire prend ici un niveau logique bas. A cet effet, le circuit logique 18 comprend simplement un inverseur 22 recevant la sortie de la bascule 14, une porte NAND 24 recevant la sortie de cet inverseur ainsi que le signal, complémenté par un inverseur 26, issu de la borne MDS. La sortie de la porte NAND arrête, lorsqu'elle passe à zéro, l'incrémenteur 20 du compteur d'évènements 16. De plus, une porte ET 28, recevant d'une part le signal de réinitialisation RESET et d'autre part la sortie de l'inverseur 26, est connectée à l'entrée d'horloge de la bascule 14 et permet de faire basculer celle-ci pendant la phase de réinitialisation et d'empêcher son basculement en dehors de cette phase. Pendant la phase de réinitialisation, le contenu du compteur 16 est remis à zéro. Il est à noter que dans ces conditions, l'arrêt du comp- teur d'évInements se produit des l'activation de la borne MDS (passage au niveau bas) lorsqu'on est dans le mode non-utilisateur ou le mode de test de mémoire. Si on voulait qu'il se produise uniquement dans le mode nonutilisateur, il faudrait prévoir que le circuit logique reçoive aussi un signal issu de la bascule non représentée définissant le choix entre le mode non-utilisateur et le mode test de contenu de mémoire morte. Dans l'application prévue, il n'est pas gênant que l'arrêt se produise aussi en mode de test de mémoire et cela simplifie le circuit logique 18 si on prévoit un arrêt dans les deux modes correspondant à l'activation de la borne 12. On a encore représenté sur la figure, un circuit d'horloge H couplé à l'incrémenteur, pour signifier que l'incrementation s'effectue d'une manière synchronisée par l'horloge interne ou externe du microprocesseur. Si on veut que l'arrêt du compteur d'évènements se produise durant une période de temps pendant laquelle le contenu des registres 30 du compteur est stable et représentatif du compte d'véenements effectué, il faut que l'utilisateur fasse en sorte de faire passer le signal MDS au niveau bas (activation) à un instant bien déterminé du cycle d'incrémentation du compteur 16, par exemple pendant le premier temps de chaque cycle d'incrémentation. On pourra prévoir par exemple que l'activation de la borne MDS devra se produire dans un délai maximum (par exemple 150 nanosecondes) apres l'apparition d'un signal périodique de synchronisation générale du micropro- cesseur (signal SYNC établi par les circuits d'horloge H). -. uuoTl:a-ts aia i analesTllln-uou apom uniuunlout sapomap adnozZun no apom un,nb anbTpuT apom ap uoT3alas ap a-sTSa el - aaAAtis 3sa apom ap uoTiela9s ap auzoq el - uotlesTlelvTuTel ap aseqd ue sed lsau uo - a:uvATns s3iep uos$vulqmoz el n UOnbSjoI sluemeueAap inaldmoz np iga ,îp aipio un luvssTlqula (e1) anbTgoT iTnDTu un O0 alodmou ITnb ae ue asTiaez ezo 'anssaDoodoz1pn np uoTlzTIddsp sammeoad ap p uTod ns astum oI ap seos lusaaas pnan esluln -uou apom un luele salqjssod sapom sap unl 'apom ap uoTarolas ap auoq il ap uoTlvATioelluupuad auuoTizslSae B ptnb apom aI ans uoTlemaoguT aun aiTomam ua luetasuoz (tI) auuoT3Iaias ç apom ap alisj2ax un sana-tsnld Tmxsd Is;oq3 apom un suep aexam as 1lop mnassaDoadozzTm al anb taaATie isa alla,nbsjol 'luvnbTpuT (SqR) apom ap uo1ziaLas ap auaoq aun luepgssod ia (91) azodiozuT sluamaua&a,p analdmoz un quulaodmoz inassa3oadolaTr NOIZV6I9N3AA Zú699SZ