Zilog z80

De TI-Planet Wiki
Révision datée du 31 janvier 2015 à 21:16 par Adriweb (discussion | contributions) (Adriweb a déplacé la page Zilog Z80 vers Zilog z80 : Respect de la casse)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche
Zilog Z80

Processeur Zilog Z80
Type processeur 8 bits/2x8 bits
Fabricant Zilog
Sortie Juillet 1976
CPU
Fréquence de 2.5 à 20 MHz
Programmation
Interfaces
Connection 16 sorties
Autre

Le processeur Zilog Z80, très utilisé dans les années 80, et sa déclinaison le Z84C00 utilisé dans les calculatrices TI.

Un des premiers processeurs Z80 fabriqués.

Le Zilog Z80 est un microprocesseur 8-bits conçu et fabriqué par Zilog. Une des particularités de ce processeur est le couplage de certains registres 2 fois 8 bits et le bus d’adresses 16 bits, permettant un traitement de l’information nettement plus rapide qu’avec un processeur 8 bits classique.

Ce processeur fut commercialisé pour la toute première fois en juillet 1976. Au début des années 1980 il fut très populaire dans la conception des ordinateurs 8-bits comme le Radio Shack TRS-80, les Sinclair ZX80, ZX81, ZX Spectrum, le standard MSX, les Amstrad CPC et plus tard dans les systèmes embarqués. Avec la famille des MOS 6502, il domina le marché des micro 8-bit à partir de la fin des années 1970 jusqu’au milieu des années 1980.

Le Z80 a été conçu pour être compatible avec l’Intel 8080, et donc la majorité du code pour 8080 pouvait fonctionner sans grandes modifications sur le Z80.

Le système d’exploitation CP/M fut conçu pour fonctionner sur les systèmes à base de 8080 et pouvait aussi fonctionner sans modification sur les systèmes à base de Z80.

Les systèmes à base de Z80 étaient en général plus puissants et avaient plus de fonctionnalités que les systèmes à base de 8080. Certaines versions de CP/M et beaucoup d’applications pour CP/M n’existaient qu’en version pour Z80.

Historique et vue d'ensemble

Brochage du Z80

Le Z80 a vu le jour lorsque Federico Faggin, après avoir travaillé sur le 8080, quitta Intel à la fin de 1974 pour fonder Zilog avec Ralph Ungermann, pour, en juillet 1976, mettre le Z80 sur le marché. Il a été conçu pour être compatible au niveau binaire avec l’Intel 8080 de sorte que la plus grande partie du code 8080, notamment le système d’exploitation CP/M, fonctionne sans modification dessus.

Le Z80 a rapidement pris la relève du 8080 sur le marché, et est devenu l’un des processeurs 8-bit les plus populaires. Peut-être une des clés de la réussite du Z80 fut le rafraîchissement intégré de la DRAM, et d’autres caractéristiques qui permettaient aux systèmes d’être construits avec moins de puces annexes.

Pour la première génération NMOS, la fréquence d’horloge maximale augmenta progressivement. Tout d’abord à 2,5 MHz, puis par le bien connu 4 MHz (Z80a), jusqu’à 6 (Z80b) et 8 MHz (Z80h). Une version Complementary metal oxide semi-conductor (CMOS) fut développée avec des fréquences limites allant de 4 MHz à 20 MHz (pour la version vendue dans les années 2000). La version CMOS a également un mode veille de basse consommation, avec conservation de l’état du processeur (sans limite basse de fréquence). Les Z180 et eZ80, dérivés entièrement compatibles, sont actuellement spécifiés pour un maximum de 33 et 50 MHz respectivement.

Les calculatrices TI utilisent un processeur Z80b à 6 MHz pour les TI-81, 82, 82 stats(.fr), 83 et 83 Plus. Les modèles 84 Plus et supérieurs utilisent un processeur cadencé à 15 MHz.

On remarquera que c'est là l'origine de leur numéro de code en "TI-8x", excepté pour la TI-89 qui a incrémenté le numéro par tradition. Cependant, les premières TI-81 et TI-82 n'utilisaient pas de z80, mais une imitation 100% compatible: le Toshiba T84C00.

Des utilisations du processeur comprennent donc des calculatrices Texas Instruments, les consoles de jeux vidéo de salon Sega Master System, portables GameBoy et Game Gear. Certaines consoles plus puissantes dotées d’autres processeurs centraux comme la Megadrive avec son Motorola 68000 utilisaient le Z80 comme processeur complémentaire afin de gérer le son ou les entrées/sorties du système.

Les calculatrices utilisant le Motorola 68000 n'utilisent pas de z80 en parallèle.

En 2007, le Z80 n’est plus utilisé que dans des systèmes embarqués, tel que des photocopieurs, des fax et autres appareils de bureautique sous la forme de contrôleurs « tout en un », ceci, en raison de l’importante bibliothèque disponible pour ce processeur, et la facilité de son interfaçage avec les claviers matriciels et les afficheurs LCD.

Composition du Z80

Ce microprocesseur a 16 sorties ce qui lui permet d'adresser 65536 octets, en théorie.

Il se compose de 5 parties :

  • une unité de contrôle ;
  • un compteur de programme ;
  • un registre d'instructions ;
  • une unité arithmétique et logique ;
  • 24 registres utilisateur.

Les registres

On distingue deux catégories de registres : les principaux et les secondaires qui, contrairement à ce qu'indique leur nom, ont une réelle utilité car ils servent de registres image quand les échanges sont indispensables lors des calculs.

Les registres principaux sont composés de deux familles : des registres simples 8 bits, pouvant être couplés en registres pairs 16 bits et des registres IX, IY, SP 16 bits pouvant être dépareillés en registres 8 bits (sauf SP), servant à indexer la mémoire car contenant un I comme index. Les registres comportant des L signifient Low et ceux comportant des H signifient High.

Le nom d'un registre de8 bits est composé d'une seule lettre, tandis que celui d'un registre 16 bits est composé de deux lettres. Le couplage des registres de 8 bits se fait en nommant les deux registres, en commençant par celui de poids fort (par exemple, BC est le couplage 16 bits des registres B et C).

Le registre A, est le plus important, il est appelé aussi accumulateur. De très nombreuses instructions en langage machine se servent de ce registre. Il est très utilisé dans les opérations de comparaisons.

Le registre F appelé « flag » (drapeau en anglais), contient 8 indicateurs (drapeaux) sur le résultat du dernier calcul effectué. On trouve notamment :

  • le bit du signe ;
  • le bit de zéro (indique un résultat nul) ;
  • le bit de retenue (carry) ;
  • le bit de parité (1 si le nombre de 1 est pair).

Les registres B et C sont utilisés comme compteurs et en conjonction avec les registres D et E dans des opérations simples. Les registres H et L ont les mêmes propriétés et ont un appareil d'instruction très riche, ils sont utilisés pour contenir des adresses mémoire mais leurs capacités sont inférieures à celles du registre A. Comme les registres I et R.

Les registres IX et IY sont des registres pairs, ils peuvent être indexés et sont utiles pour les travaux sur des listes de tables. Pour le ZX 81, ils servaient à la gestion du système comme l'affichage, le programmeur en langage machine devait les restaurer après utilisation ce qui était un inconvénient sur cette machine.

Le registre SP, appelé stack pointer sert à ranger des résultats intermédiaires dans une pile. PUSH et POP sont deux instructions clé de ce registre qui permettent respectivement de placer et de retirer un élément de la pile.

Les familles d'instructions

La première famille se compose des octets de chargement LD ( load ) qui charge la mémoire dans un registre et inversement. Elle se compose aussi des instructions d'échange (EX) qui effectuent des échanges entre registres ou entre registres et valeurs.

La deuxième famille se compose d'instructions arithmétiques comme l'addition, la soustraction, la décrémentation et l'incrémentation.

La troisième famille se compose d'instructions logiques comme AND et OR qui effectuent des opérations en comparaison de deux registres bit à bit. AND transformera deux 1 en un seul 1, un 1 et un 0 en un 0 etc...XOR a une valeur de ou exclusif et CPN lève différents drapeaux du registre F selon les résultats.

La quatrième famille se compose d'instructions de branchements conditionnels et inconditionnels qui commandent des ruptures de séquence : JR ( saut relatif), JP (saut simple), CALL, RST qui renvoient à un endroit du code machine comme les instructions en basic GOTO et GOSUB, RET qui ferme la boucle comme l'instruction basic RETURN.

Ensuite, il y a les familles d'instructions de pile ( stockage sur pile et dépilage ), les familles d'instructions de rotation qui modifient le décompte des bits dans un registre, les familles d'instructions de bit travaillant sur un bit particulier, les familles d'instructions d'entrée-sortie, les familles d'instructions d'interruption, les familles d'instructions de transfert etc...

Sources

Composition du Z80, les registres, les familles d'instruction : "La pratique du ZX 81, 1984, éditions du PSI"

Voir Aussi