— Extrait de l'article publié dans Quasar CPC numéro 9, Électronique, par Zik.
— Pourquoi ne pas rajouter ici quelques explications sur le fonctionnement des signaux de reset sur CPC ?
Puisqu'on me l'a demandé, voici comment faire un bouton reset sur son CPC ou CPC+ (comme celui de la Multiface Two).
Eh bien, c'est très simple, il suffit de connecter un bouton poussoir à contact poussé entre le PIN 40
et un GND
(broche 2 ou 49) de la prise d'extension…
Sur ce, bon bricolage !
Quoi ? C'est faible ? Comment ça c'est faible ? Ça explique pas ce que ça fait ? Bin vas-y fait le toi ! Tu veux pas ? Tu sais pas ou tu veux pas ?
Bon voilà que le petit blond à lunette critique, mais pour faire y a plus personne…
Les composants numériques comportant des états internes peuvent en effet démarrer dans un état « étrange », soit à cause de la rémanence due aux capacités parasites internes des composants (on a alors un état dépendant de l'état précédent l'extinction), soit parce que le temps que les différentes parties de la puce ne sont pas alimenté tout à fait en même temps. Imaginé si le Z80 commence l'exécution de son programme non pas à l'adresse mémoire 0 mais au dernier état du registre PC parce qu'il a été éteint depuis moins de 30 secondes ? Ou encore que le PSG démarre parfois avec le volume à fond en générant un magnifique signal carré à 5 kHz ? Le bonheur…
Il faut donc garantir que le système démarre avec les flip-flop dans un état connus, les registres dans un état connus (généralement à 0 mais ceci peut être une autre valeur connus définis clairement dans les datasheet du composant), etc. Bref savoir d'où on démarre…
C'est là qu'intervient notre ami le signal RESET qui équipe généralement tout composant numérique complexes comportant des états interne. Ou /RESET le plus souvent, la barre signifiant que le signal est activité à l'état bas. Celui-ci a une importance capitale pour le bon fonctionnement du système, car il permet de garantir le démarrage du système avec un état connus.
Parfois ce signal est généré en interne, mais alors se pose un autre problème ; comment garantir que TOUS les composants (Z80, GA, PPI, PSG, CRTC) soient alimentés exactement en même temps ? Ou voir pire, qu'un composant démarre puis s'arrête pendant quelques microsecondes parce que l'alimentation n'est pas encore stabilisé ? On parle tout de même de cycle d'horloge dont les plus rapides sont de 62.5 ns !1)
C'est pourquoi le CPC est équipé d'une « circuit de RESET » qui garantie le maintient activé du signal RESET pendant une période suffisante à la stabilisation de l'alimentation et la désactivation synchronisée du RESET de l'ensemble des puces.
Et donc le petit blond à lunette viens de nous dire qu'il avait compris, il suffit de forcer le signal /RESET à 0 volt pendant un cours moment pour simuler le comportement du circuit de RESET au démarrage…
Sauf que non, la solution proposée par Zik au-dessus ne touche pas au signal /RESET (qui est situé sur la broche 41 du port d'extension), mais au signal /BUS_RESET (broche 40), et ceci pour deux raisons que nous allons voir tout de suite.
Celui-ci est composé de 3 parties dont nous allons étudier le fonctionnement.
Comme je l'ai signalé précédemment, le signal de remise à zéro peut-être à activation à l'état bas (/RESET comme sur le Z80, le Gate Array, le PSG ou encore le CRTC) mais il peut être aussi à activation à l'état haut (RESET comme sur le PPI 8255). Donc ça veut dire que le signal RESET du PPI est généré en inversant le signal /RESET ? Eh bien non, c'est tout le contraire, le signal /RESET et généré depuis le RESET. Si on observe le schéma du CPC 6128, la broche 3 d'IC110 (un 74LS132, une puce comportant 4 portes logiques de type NON-ET) attaque le signal RESET du PPI puis est inversé par une deuxième porte logique de ce même IC110 (entrée du signal RESET sur les broches 4 et 5 puis sortie du signal /RESET sur la broche 6)
Donc si nous forçons la broche 41 à l'état bas, le PPI continue sont petit bonhomme de chemin sans n'avoir rien vu !
Autre problème qu'auront remarqué les connaisseurs: le 74LS132 est une puce à sortie dites « push-pull » et non « collecteur ouvert », c'est-à-dire qu'elle force l'état de la ligne à 0 volt ou +5 volts et donc si on vient appuyer sur notre petit bouton, c'est le drame: on provoque un court-circuit2)