CODINGCLASSEURS WEKA ★ CLASSEURS WEKA : Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

2/6 - L'horloge interneCoding Classeurs Weka
Les AMSTRAD CPC 464, 664 et 6128 sont bâtis autour d'un microprocesseur Z 80 A « tournant » à 4 MHz, ce qui est relativement rapide : beaucoup d'ordinateurs personnels équipés d'autres microprocesseurs se contentent de 1 MHz,

La famille Z 80 comprend cependant des composants plus rapides (Z 80 B : 6MHz) et plus lents (2 80 CPU : 2,5 MHz), ce qui fait que le choix effectué se situe dans une très bonne moyenne.

Le Z 80 A doit donc recevoir sur sa broche 6 (CLK ou dock) un signal rectangulaire de 4 MHz, c'est-à-dire quatre millions d'impulsions ou périodes d'horloge par seconde.

Cette fréquence est dérivée d'un signal à 16 MHz produit par un oscillateur à quartz équipé de deux inverseurs appartenant soit à un 74LS00 (TTL Schottky), soit à un 74HCU04 (CMOS rapide).

La division par quatre est opérée dans le circuit « Gate Array » ou « ULA », qui en profite pour élaborer d'autres fréquences à partir de cette référence très stable.
En particulier, le signal 1 MHz CPU est utilisé par le synthétiseur de son AY-3-8912 et par le contrôleur vidéo 6845.

La fréquence de tous les sons pouvant être émis par l'AMSTRAD est donc obligatoirement un sous-multiple de 1 MHz, puisque le synthétiseur fonctionne par division de fréquence. En même temps, la précision obtenue sur la sortie « audio » sera celle du quartz, c'est-à-dire extrêmement bonne.

Par contre, il ne sera pas possible de synthétiser n'importe quelle fréquence : les notes de musique seront « arrondies » au plus proche sous-multiple de 1 MHz, ce qui peut être perceptible pour une oreille très « juste ».

Il ne pourra pas non plus être question de produire, par exemple, les paires de fréquences utilisées pour composer des numéros de téléphone en code « multifréquences » car la « résolution » offerte est très inférieure à la tolérance acceptée par les centraux.

Retenons donc que la stabilité des fréquences générées est excellente, mais que l'erreur par rapport à la fréquence désirée peut être relativement importante, particulièrement aux fréquences les plus hautes qui correspondent à de plus petits rapports de division.

Pour produire des fréquences inaccessibles au générateur de son, on peut toutefois songer à piloter un port de sortie (par exemple le STROBE de l'imprimante) par une routine en langage machine soigneusement « accordée ».

Ce procédé, qui peut être employé pour toutes sortes d'autres « chronométrages », exploite le fait que la fréquence d'horloge est le véritable « chef d'orchestre » du microprocesseur : chaque instruction exécutée, chaque opération effectuée, dure un nombre entier de périodes d'horloge (0,25 microseconde pour 4 MHz). Pour étalonner une routine (ou une partie de routine), il suffit d'additionner le nombre de périodes d'horloge correspondant à chaque instruction, en tenant compte des différents « chemins » possibles (par exemple selon le résultat de comparaisons).
Comme il n'est généralement pas possible d'accélérer une routine (sauf si elle a été maladroitement écrite), le « réglage » se fait par ralentissement : pour perdre « beaucoup » de temps (des millisecondes ou des secondes), on fait « tourner en rond » le programme dans des boucles utilisant généralement l'instruction DJNZ. L'ajustement fin se fait ensuite par introduction d'instructions NOP, qui ne font rien d'autre que « perdre » quatre périodes d'horloge soit une microseconde (un millionnième de seconde).

On peut donc dire que l'unité de temps dans laquelle compte le microprocesseur est la microseconde.

Pour calculer la durée d'exécution d'une routine, la connaissance du nombre de cycles machine (voir annexe 2 de la partie 11 ) ne suffit pas : certains cycles comportent plus de périodes d'horloge que d'autres.

Le tableau 1 donne donc la durée d'exécution des principales instructions, exprimée en périodes d'horloge de 0,25 µS.

En théorie, on pourrait envisager d'altérer la durée d'exécution des instructions et la fréquence des sons émis par le synthétiseur, en modifiant légèrement la fréquence du quartz de l'oscillateur d'horloge.

En pratique, ce genre d'intervention risque de fausser la fréquence des signaux vidéo produits par le contrôleur d'écran, qui travaille lui aussi par division de la fréquence auxiliaire de 1 MHz : l'affichage écran pourrait alors se trouver sérieusement perturbé.

Cette solution n'est toutefois pas à écarter à 100 % lorsqu'il s'agit de résoudre des problèmes très spéciaux, pour lesquels le moniteur n'est pas forcément indispensable.

On se souviendra cependant que les routines de gestion des différents autres périphériques (lecteur de cassettes ou de disquettes, imprimante, etc.) sont évidemment cadencées par la même horloge, et ne supportent guère d'importants écarts.

TABLEAU 1

LD r, r'
LD r, n

LD r, (HL)
LD r, (IX+d)

LD r,(IY+d)

LD(HL),r
LD(IX+d), r
LD (IY+d), r
LD (HL), n
LD (IX + d), n
LD (IY + d), n
LD A, (BC)
LD A, (DE)
LD A, (nn)
LD (BC), A
LD (DE), A
LD (nn), A
LD A, I
LD A, R
LD I, A
LD R, A
LD dd, nn
LD IX, nn
LD IY, nn
LD HL, (nn)
LD dd, (nn)
LD IX, (nn)
LD IY, (nn)
LD (nn), HL
LD (nn), dd
LD (nn), IX
LD (nn) IY

4
7

7
19

19

7
19
19
10
19
19
7
7
13
7
7
13
9
9
9
9
10
14
14
16
20
20
20
16
20
20
20

LD SP, HL
LD SP, IX

LD SP, IY

PUSH qq
PUSH IX
PUSH IY

POP qq
POP IX
POP IY

EX DE, HL
EX AF, AF'
EXX

EX (SP), HL
EX (SP), IX
EX (SP), IY

LDI
LDIR
LDD
LDDR

CPI
CPIR
CPD
CPDR

6
10

10

11
15
15

10
14
14

4
4
4

19
23
23

16
21/16
16
21/16

16
21/16
16
21/16

ADD A, r
ADD A, n
ADD A, (IX + d)
ADD A, (HL)
ADD A, (IY + d)
INC r
INC (HL)
INC (IY + d)
INC (IX+d)
INC (IY + d)
DAA
CPL
NEG
CCF
SCF
NOP
HALT
DI
EI
IM 0
IM 1
IM 2
ADD HL, ss
ADC HL, ss
SBC HL, ss
ADD IX, pp
ADD IY, rr
INC ss
INC IX
INC IY
DEC ss
DEC IX
DEC IY
RLCA
RLA
RRCA
RRA

4
7
7
19
19
4
11
23
23
4
4
8
4
4
4
4
4
4
8
8
8
11
15
15
15
15
6
10
10
6
10
10
4
4
4
4

RLC r

RLC (HL)
RLC (IX+ d)
RLC (lY + d)

RLD
RRD
OTDR

BIT b, r
BIT b, (HL)
BIT b, (IX + d)b
BIT b, (IY + d)b

SET b, r
SET b, (HL)
SET b, (IX + d)
SET b, (lY + d)

JP nn
JP cc, nn
JRe

JR C, e
JR NC, e

JP Z, e
JR NZ, e

JP (HL)
JP (IX)

8

15
23
23

18
18
21/16

8
12
20
20

8
15
23
23

10
10
12/7

12/7
12/7

12/7
12

4
8

JP (IY)

DJNZ, e

CALL nn
CALL cc, nn

RET
RET cc
RETI
RETN

RST p

IN A, (n)
IN r, (C)

INI
INIR
IND
INDR

OUT (n), A
OUT (C), r
OUTI
OTIR
OUTD

8

8/13

17
10/17

10
5/11
14
14

11

11
12

16
21/16
16
21/16

11
12
16
21/16
16

ADC A, r
ADC A, n
ADC A, (HL)
ADC A, (IX + d)
ADC A, (lY + d)

SUB r
SUB n
SUB (HL)
SUB (IX+d)
SUB (lY + d)

SBC A, r
SBC A, n
SBC A, (HL)
SBC A, (IX +d)
SBC A, (IY + d)

AND r
AND n
AND (HL)
AND (IX + d)
AND (IX + d)

OR r
OR n
OR (HL)
OR (IX + d)
OR (IY + d)

XOR r
XOR n
XOR (HL)
XOR (IX + d)
XOR (lY + d)

CP r
CP n
CP (HL)
CP (IX + d)
CP (lY + d)

DEC r
DEC (HL)
DEC (IX+d)
DEC (IY+d)

RL r
RL (HL)
RL (IX+d)
RL (lY+d)

RRC r
RRC (HL)
RRC (IX + d)
RRC (lY + d)

4
7
7
19
19

4
7
7
19
19

4
7
7
19
19

4
7
7
19
19

4
7
7
19
19

4
7
7
19
19

4
7
7
19
19

4
11
23
23

8
15
23
23

8
15
23
23

RR r
RR (HL)
RR (IX + d)
RR (IY + d)

SLA r
SLA (HL)
SLA (IX + d)
SLA (lY + d)

SRA r
SRA (HL)
SRA (IX + d)
SRA (IY + d)

SRL r
SRL (HL)
SRL (IX + d)
SRL (IY + d)

RES r
RES (HL)
RES (IX + d)
RES (IY + d)

8
15
23
23

8
15
23
23

8
15
23
23

8
15
23
23

8
15
23
23

Tableau 1 : Durée d'exécution (à 4 MHz) des principales instructions du Z 80, exprimées en périodes d'horloge de 0,25 µS. Lorsque deux durées sont indiquées, elles correspondent aux deux fonctionnements possibles de l'instruction : par exemple, RET cc prend 2,75 µS si la condition cc est fausse, et seulement 1,25 µS si cc est vraie. INIR, pour sa part, dure 5,25 µS si B ≠ 0, et 4 µS si B = 0.

Page précédente : 2/5.2 - Les circuits intégrés digitaux
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 257 millisecondes et consultée 2028 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.