★ CODING ★ LA BIBLE DU CPC 6128 ★ |
La bible du CPC 6128 : 1.03.01 L'affectation des pôles de connexion du gâte array |
Avant d'en venir aux fonctions des différentes connexions du gâte array, nous vous devons quelques explications. Il existe maintenant au moins trois versions différentes du gâte array. Sur le CPC 464, le premier ordinateur CPC, ce circuit intégré portait la référence 40007. Ce circuit intégré s'échauffait tellement pendant le fonctionnement le l'appareil, qu'il a été nécessaire de le refroidir en y collant une feuille d'aluminium. Cette situation ne pouvait durer à la longue car, même avec un refroidissement supplémentaire, le circuit intégré pouvait être détruit par échauffement. Sur la CPC 664, c'est l'IC 40008 qui fut employé. Grâce à des modifications dans sa structure interne, l'énergie perdue convertie en chaleur put être réduite. Cette version chauffait beaucoup moins. Le CPC 6128, enfin, utilise l'IC 400010. Sur ce circuit intégré, l'ordre des connexions a été modifié. Il est cependant également possible d'utiliser les anciennes versions du gâte array dans le CPC 6128. La place nécessaire a été laissée sur la plaque des composants. Le signal qui détermine tout sur le CPC est le signal quarz d'une fréquence de 16 MHz qui se trouve sur le pin 24 (pin 8) (XTAL). Le IC125, un circuit intégré TTL du type 7400, constitue avec deux de ses quatre portes logiques une commutation d'oscillateur typique. Ce signal constitue pratiquement le battement cardiaque du CPC. La fréquence d'entrée divisée par quatre est disponible pour le processeur, sous la forme d'un signal d'horloge de 4 MHz sur le pin 19 (pin 39) comme fréquence Phi. Une nouvelle division par quatre donne une fréquence de 1 MHz. Ce signal est fourni sur le pin 14 (pin 1) du gâte array. Le signal de 1 MHz a deux emplois. C'est tout d'abord le signal d'horloge pour le chip sonore et il contribue ensuite à déterminer si le processeur ou le CRTC peut adresser la RAM. S'il y a un low, les canaux d'adresse du processeur sont commutés sur la RAM à travers les circuits intégrés multiplexeurs IC 74LS153. Comme par ailleurs la commande de la RAM sur le CPC n'est pas tout à fait évidente, vous trouverez une description détaillée des signaux de commande de la RAM dans un prochain chapitre. Comme les composants de mémoire ne disposent que de 8 canaux d'adresse, l'adresse totale de 16 bits doit être multiplexée, c'est-à-dire placée sur les entrées avec un décalage dans le temps. Cette commande dans le temps est obtenue avec les signaux CAS ADDR* pin 31 (pin 6), CAS* pin 16 (pin 3) et RAS* pin 34 (pin 7). Ces signaux RAS* et CAS* sont placés directement vers les RAMs, le signal CAS ADDR* est conduit vers les multiplexeurs que nous avons déjà évoqués. Le signal MA0/CCLK sur le pin 4 (pin 40) du gâte array a également une fréquence de 1 MHz. Ce signal est par ailleurs déphasé par rapport au signal CPU ADDR*, c'est-à-dire que les deux fréquences sont high à des moments différents. MA0/CCLK a également une double fonction. Il constitue d'une part le signal d'horloge pour le CRTC qui tire tous les autres signaux de ce signal; d'autre part il est placé comme bit d'adresse auxiliaire sur un des quatre multiplexeurs d'adresse. La fonction de ce bit d'adresse auxiliaire sera également évoquée plus tard plus précisément, à propos de la commande de la RAM Le gâte array produit encore sur le pin 29 (pin 13) le signal RAMRD*. Cette connexion devient low, lorsque le processeur, après avoir fourni une adresse, veut lire des données dans la RAM et qu'il l'indique au gâte array par son signal RD* sur le pin 21 (pin 19). Comme la ROM et la RAM se chevauchent sur de grandes zones, le signal RD* du processeur ne peut être utilisé directement. Si des données doivent être lues dans la ROM le signal RAMRD* reste high et les sorties du DATA LATCH/BUFFER 74LS373 (un buffer est une mémoire provisoire) deviennent high. Dans ces moments, aucune information ne peut passer de la RAM sur le bus de données, bien que l'adresse de la mémoire soit également parvenue à la RAM et que celle-ci tienne un octet prêt dans ses sorties. En plus du RAMRD*, le signal READY du pin 22 (pin 2) du gâte array est placé sur l'IC 74LS373. Ce signal produit sur le processeur le signal pour l'insertion des cycles d'attente. La liaison supplémentaire entre le READY et le LATCH/BUFFER permet d'obtenir que l'information sur le bus de données du processeur ne se modifie pas pendant les cycles d'attente. Le 74LS373 stocke, après envoi d'un high sur le pin 11, l'information en sortie actuelle, jusqu'à ce que ce pôle devienne low. Le circuit intégré se comporte ensuite comme un simple buffer, c'est-à-dire que les sorties suivent immédiatement les modifications des entrées. Le signal ROMEN* sur le pin 27 (pin 12) du gâte array devient low lorsque le processeur veut lire des données dans la ROM. La ROM intégrée de 32 K du CPC occupe les zones d'adresses &0000 à &3FFF et &C000 à &FFFF. Cette ROM peut donc être appelée en deux moitiés distinctes. Dans les zones de mémoire où RAM et ROM se chevauchent, il faut indiquer au gâte array le choix fait avec une instruction OUT. Il est ainsi tout à fait possible de n'activer qu'une moitié de la ROM. Outre la fonction décrite, les canaux d'adresse A14 et A15 sur les pins 28 (20) et 30 (21) sont encore utilisés dans un autre but. Le gâte array a une adresse de port qui est utilisée pour programmer les différentes possibilités du gâte array. L'adresse de port est &7F00 et elle est décodée sur le pin 17 (pin 18), à travers les canaux d'adresse (A14 High, Al5 Low) et le signal IORQ*. Comme le bus de données du Z80 n'est pas directement relié aux canaux de données DO à D7 du gâte array, le GA (gâte array) met le pôle 244EN* sur low lorsque l'adresse de port &7F00 est identifiée de la façon que nous avons indiquée. Les sorties du 74LS244, un buffer de bus de données, sont ainsi libérées et l'octet fourni par le Z80 peut être écrit dans le GA. Mais le signal IORQ* a lui aussi une double signification pour le GA. Le Z80 a en effet la particularité, lorsqu'il identifie une interruption, de mettre simultanément à low les signaux IORQ* et Ml*. Cette situation est identifiée par le GA et l'impulsion d'interruption est immédiatement annulée. Si, par contre, le traitement de l'IRQ a été interdit par l'instruction DI, Disable Interrupt, le pôle 10 du GA reste low, jusqu'à ce que l'IRQ soit à nouveau autorisé. Dès que l'IRQ est à nouveau autorisé par l'instruction El, Enable Interrupt, l'interruption présente est identifiée et la sortie d'interruption redevient high. Le signal d'interruption sur le pin 32 (pin 10) est produit par une chaîne de division programmable du GA. Cette chaîne de division est alimentée par le signal HSYNC du CRTC et elle divise la fréquence existante par 52. Comme l'impulsion HSYNC se produit environ toutes les 65 microsecondes, l'intervalle entre deux impulsions d'interruption est de 3,3 millisecondes. Les impulsions sont couplées avec le signal VSYNC du CRTC. La durée du VSYNC est programmée dans le CRTC à environ 500 microsecondes. Après environ 125 microsecondes apparaît l'interruption, de sorte que la routine d'interruption a encore environ 375 microsecondes pour examiner sur le bit 0 du port B du 8255 s'il y a un VSYNC. Ce signal est utilisé comme horloge dans différentes opérations. Ce cas ne se produit cependant que toutes les 15 interruptions, pour les 14 interruptions restantes, il y a un high du VSYNC et le compteur interne n'est pas affecté. Mais les signaux HSYNC et VSYNC sont bien sûr nécessaires, de même que DISPEN pour produire le signal vidéo. Une liaison de ces signaux donne le signal SYNC* sur le pin 5 (pin 11 ) du GA.
|