0% ont trouvé ce document utile (0 vote)
120 vues66 pages

Partie 2

Transféré par

Fadoua Moutaoikil
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
120 vues66 pages

Partie 2

Transféré par

Fadoua Moutaoikil
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Microprocesseur 6809

Microprocesseur
6809

76
76
Organisation matérielle du 6809

• Le microprocesseur 6809 est un processeur 8 bits dont


l'organisation interne est orientée 16 bits.
• Il est fabriqué en technologie MOS (Metal Oxide Substrate)
• Il se présente sous la forme d'un boîtier 40 broches.

77
Organisation matérielle du 6809

78
Organisation matérielle du 6809

• NMI (No Masquable Interrupt)


• IRQ (Interrupt Request)
• FIRQ (Fast Interrupt Request)
• MRDY (Memory ready)
• DMA / BREQ (Direct Memory Acces/Bus Request).
• EXTAL (External clock input)
• XTAL (output of the crystal oscillator amplifier)
• E and Q are the clock signals. Q (Quadrature clock output)
• BA (Bus Available) . BS (Bus State)

79
Présentation du brochage

Le bus des données 8 bits (D o à D 7 )


• Ces huit broches sont bidirectionnelles. Elles permettent la
communication avec le bus des données interne du microprocesseur.

Le bus des adresses 16 bits (A 0 à A 15 )


• Ces broches unidirectionnelles transfèrent l'adresse 16 bits fournie par le
microprocesseur au bus d'adresse du système.

• les adresses sont validées sur le front montant de Q.

80
Présentation du brochage

Le bus de contrôle
 La broche Read/ Write: Cette broche indique le sens de transfert des
données sur le bus des données.
• R/ W = 1 lecture en cours (D 0 - D 7 sont des entrées)
• R/ W = 0 écriture en cours (D 0 - D 7 sont des sorties)

81
Présentation du brochage

• Broche d'initialisation RESET


• Un niveau bas sur cette broche entraîne une réinitialisation complète du
circuit.
Conséquences :
• l'instruction en cours est arrêté
• le registre de pagination (DP) est mis à zéro
• les interruptions IRQ et FIRQ sont masquées
• l'interrruption non masquable NMI est désactivée
• Pour être active, cette ligne doit être maintenue à un niveau bas durant un temps
suffisamment long (plusieurs cycles d'horloge).

82
Présentation du brochage

la broche : HALT (Arrêt du microprocesseur).


• Un niveau bas sur cette broche provoque l'arrêt du microprocesseur
(mais à la fin de l'exécution de l'instruction en cours). Il n'y a pas perte
des données. (BA = BS = 1)
Dans ce cas :
• les demandes d'interruption IRQ et FIRQ sont inhibées
• les demandes d'accès direct (DMA) à la mémoire sont autorisée.
• les demandes d'interruptions RESET et NMI sont prises en compte mais
leur traitement est différé (retardé).

83
Présentation du brochage

les broches d'interruption


• NMI (No Masquable Interrupt)
• IRQ (Interrupt Request)
• FIRQ (Fast Interrupt Request)
• Entrées (actives sur un niveau bas) qui peuvent interrompre le
fonctionnement normal du microprocesseur sur front descendant
de Q.

84
Présentation du brochage

• Les lignes d'état du bus


• BA (Bus available) et BS (Bus state): Information qui permet de connaître
l'état du microprocesseur à tout moment.

85
Présentation du brochage
 1er cas :
Le microprocesseur est en fonctionnement normal, il gère les bus d'adresses et de
données.
 2ème cas :
le microprocesseur est en phase de reconnaissance d'interruption pendant deux cycles.
Cet état correspond à la recherche des vecteurs d'interruption : Reset, NMI, IRQ, SW1,2
et 3. (SW=Software )
 3ème cas :
Ce signal apparaît lorsque le microprocesseur rencontre l'instruction de synchronisation
externe (niveau bas sur SYNC). Il attend alors cette synchronisation sur une des lignes
d'interruption. Les bus sont en haute impédance pendant ce temps.
 Dernier cas :
Correspond à l'arrêt du microprocesseur (niveau bas sur HALT).
Le microprocesseur laisse la gestion des bus des données et des adresses à un circuit
annexe (contrôleur de DMA). Les bus sont en haute impédance. La ligne BA au niveau
haut indique que les bus sont en haute impédance.
86
Présentation du brochage

Entrées d'horloge XTAL et EXTAL (Extension crystal)


 La fréquence du quartz (horloge) est quatre fois la fréquence du
microprocesseur.
 Eout représente le signal d'horloge commun au système. Il permet la
synchronisation du microprocesseur avec la périphérie.
 Qout représente le signal d'horloge en quadrature avec Eout
• Les données sont lues ou écrites sur le front descendant de Eout.
• Les adresses sont correctes à partir du front montant de Qout.

87
Architecture 6809

• Le microprocesseur 6809 comporte NEUF registres internes


programmables accessibles par l'utilisateur:

88
Architecture 6809

89
Architecture 6809

• Accumulateurs : A, B et D
• Les calculs arithmétiques et les instructions de comparaison ainsi que les
manipulations de données se font grâce aux accumulateurs A et B.
• Ces deux registres sont interchangeables sauf pour quelques instructions
(ABX, DAA) et les opérations sur 16 bits.
• ABX : Addition de l'accumulateur B à X(Non signé)
• DAA : Ajustement décimal de l'accumulateur A

• D= A B (Concaténation de A et B->16bits): A est l’octet de poids fort.

90
Architecture 6809

• Registres d'index : X,Y (registres de 16 bits)


• Ces deux pointeurs d'utilisation parfaitement identique sont utilisés dans les
modes d'adressage indexé.
• Sont utilisés aussi:
• comme registres de stockage de résultats intermédiaires
• comme compteurs de boucle.
• Les données - 16 bits- contenues dans ces registres servent de pointeur de
données (adresses).
• Ces adresses "peuvent être modifiées" par une constante, prise comme
valeur de déplacement (offset) qui permet alors de calculer une adresse
effective.

91
Architecture 6809

• Pointeurs de pile: S,U (registres 16 bits)


• le pointeur de pile S (Système) est utilisé automatiquement par le
microprocesseur pour mémoriser l'état de tous ses registres internes
dans le cas où il doit exécuter un sous programme (d'interruption ou non).
• le pointeur de pile U (Utilisateur) est géré exclusivement par le
programmeur pour effectuer, avec facilité, le passage des paramètres
entre les programmes et les sous programmes.
• Les registre U et S peuvent faire office de pointeurs - registres d'index.

92
Architecture 6809

• Registre compteur programme PC


• Le contenu de ce registre (16 bits) détermine l'adresse de l'instruction qui
doit être exécuté par le processeur.
• Il pointe en permanence l'adresse de la prochaine instruction à exécuter.
• Dans certain cas, ce compteur programme peut être utilisé comme un
index.

93
Architecture 6809

• Registre de page: DP
• Ce registre (8 bits) est prévu pour étendre les possibilités d'adressage
direct à tout l'espace mémoire, sous contrôle du logiciel.

94
Architecture 6809

• Registre de codes condition: CCR


• Le registre codes condition (8 bits) définit à tout instant l'état des
indicateurs du processeur.

95
Architecture 6809

96
Microprocesseur 6809

MODE D’ADRESSAGE
ET
PROGRAMMATION EN
ASSEMBLEUR

97
Mode d’adressage

• Un mode d'adressage est un moyen d'accéder à une case


mémoire donnée.
• Exemple: (addition de deux nombres z=x+y )
• Pour connaitre un nombre x, il fallait spécifier son adresse sur 16 bits (ou
deux octets).
Le fait de définir x par la donnée de son adresse constitue un mode
d'adressage
• Le MPU (Microprocessor Unit) 6809 possède:
• 59 instructions de base
• NEUF modes d'adressage (9 façons de coder les adresses)
• 1 464 possibilités d’instructions
=>Le µp6809 sait automatiquement quelle est l'opération à effectuer
ainsi que les registres concernés.
98
Mode d’adressage

• Au moyen des signaux qu’il génère sur le bus d’adresses, le


microprocesseur a la possibilité d’adresser les divers circuits
mémoires et interfaces, qui lui sont connectés au travers des bus
afin d'accéder à leur contenu.

• Cette accès se traduit par une opération d’adressage


• Cette opération peut se faire de plusieurs façons grâce à la
présence de différents modes d’adressage.

• Remarque : La puissance d’un microprocesseur dépend de son


jeu d’instructions mais aussi des ses modes d’adressage.

99
Structure d'une instruction

 Elle comporte de un à 5 octets ( dépend du mode d'adressage).


• Le premier (parfois le deuxième) octet indique l'action à effectuer
 correspond au code de l'instruction
• Les octets suivants précisent les opérandes ou sur quelques registres
cette action agira.

 Dans le champ opérande on peut trouver :


• des nombres,
• des noms de variables,
• des étiquettes,
100 • des expressions arithmétiques ou logiques.
Structure d'une instruction

101
Modes d'adressage

• Les modes d'adressage sont :


• l’adressage inhérent ou implicite
• l’adressage immédiat
• l’adressage étendu (direct)
• l’adressage étendu indirect
• l’adressage direct
• l’adressage par registre
• l’adressage indexé direct
• l’adressage indexé indirect
• l’adressage relatif

102
1.Mode d'adressage inhérent

L'adressage inhérent est utilisé par les instructions qui agissent


sur les registres internes du MPU et non sur la mémoire. Il
existe deux types de mode d'adressage inhérent :

Adressage inhérent simple


• Le code opération contient toute l'information nécessaire à l'exécution de
l'instruction.
• Ces instructions codées sur un octet sont: ABX, INCB, NOP…..
• Exemple: ABX  addition de l'accumulateur B à l'index X.

103
1.Mode d'adressage inhérent

104
1.Mode d'adressage inhérent

Adressage inhérent paramétré


L'instruction comporte un octet supplémentaire permettant de
préciser les opérandes intervenant dans l'instruction. La
présence de cet octet supplémentaire est indispensable pour les
instructions de type:
• Échange et transfert de registres : EXG, TFR

• Instructions d'accès aux piles: PSHS, PSHU, PULS, PULU

• Attente d'interruption : CWAI (Clear WAit Interrupt)

105
1.Mode d'adressage inhérent

 Échange et transfert de registres:


• le premier octet détermine le code opération pur,
• le second détermine les registres source et destination:
 Exemple : TFR U,S  transfert de U dans S
• Exemple : TFR X,Y  transfert de X dans Y

106
1.Mode d'adressage inhérent

107
1.Mode d'adressage inhérent

 Instructions d'accès aux piles:


• le premier octet détermine le code opératoire pur,
• le post-octet détermine les registres concernés par l'accès à la pile.
 Exemple: PSHS A, B, X  sauvegarde de A, B, X dans la pile

108
1.Mode d'adressage inhérent

• Mnémoniques d’empilement
• PSHS liste explicite de registres à empiler ou (implicitement)
• PSHS #$xy

109
1.Mode d'adressage inhérent

• Mnémoniques d’empilement
• PSHS liste explicite de registres à empiler ou (implicitement)
• Exemple: PSHS #$FF

110
1.Mode d'adressage inhérent

 Attente d'interruption:
 le premier octet est associé à l'instruction CWAI, le second sert à masquer ou à
valider les interruptions.
 Exemple : CWAI # $ FF  attente d'interruption

111
2. Mode d'adressage immédiat

• Dans ce mode d'adressage, le code opératoire 8 bit est suivi


d'une valeur qui est l'opérande de l'instruction.
• Ce type d'adressage permet de charger les registres internes du
microprocesseur avec la valeur de l'opérande.
• Le symbole « # » signifie immédiat dans la syntaxe assembleur.
• Il existe trois types d’instructions dans ce mode d’adressage :
 Instructions sur deux octets
 Instructions sur trois octets
 Instructions sur quatre octets

112
2. Mode d'adressage immédiat

 Instructions sur deux octets:


• Le premier octet contient le code opératoire,
• le second contient la constante 8 bits.
• Ce type d’instruction est réservé pour travailler sur les registres 8
bits du microprocesseur
• Exemple : LDA #$15  charger la valeur $15 dans
l’accumulateur A. Le premier octet contient le code opératoire

113
2. Mode d'adressage immédiat
• Exemple : LDA #$15  charger la valeur $15 dans l’accumulateur A. Le
premier octet contient le code opératoire

114
2. Mode d'adressage immédiat

 Instructions sur trois octets


• Le premier octet contient le code opératoire,
• le second et le troisième contiennent la constante 16 bits.
• Ce type d’instructions est réservé pour travailler sur les registres 16 bits
du microprocesseur.
 Exemple : ADDD #$2005  addition du contenu de
l’accumulateur D et de $2005, le résultat se trouve dans D.

115
2. Mode d'adressage immédiat
• Exemple : ADDD #$2005  addition du contenu de l’accumulateur D et de
$2005, le résultat se trouve dans D.

116
2. Mode d'adressage immédiat

• Instructions sur quatre octets


• Dans ce type d’instruction, le code opératoire utilise deux octets mémoire,
la constante également.
• Le premier octet ($10) (préfixe) est nécessaire pour les instructions :
CMPD, CMPS, CMPU, CMPY, LDS, LDY, STY, STS.

 Exemple: LDY #$2008  charger l’index Y avec la valeur $2008

117
2. Mode d'adressage immédiat
• Exemple: LDY #$2008  charger l’index Y avec la valeur $2008

118
3. Mode d'adressage direct

 On exprime le lieu de l'action par l'expression de l'adresse


effective. Le code opérande indique la partie basse de cette
adresse. La partie haute de l’adresse est fournie par le contenu
du Registre Direct de Page (DP).
 Intérêt : Ce mode nécessite moins de place mémoire (1 octet
donc taille mémoire réduite) par conséquent l’exécution de
l’instruction est plus rapide.

 Remarque : Avec ce mode, la mémoire est découpée en 256


pages de 256 octets chacune.
 Ce mode est intéressant dans le cadre des systèmes
d’exploitation temps réel multitâche, où on alloue à chaque tâche
une page.
119
3. Mode d'adressage direct

120
3. Mode d'adressage direct
 Instructions sur deux octets
• Le premier octet définit le code opératoire,
• le second définit le poids faible de l’adresse effective.
 Exemple :LDA $08 ou LDA < $08  Charge l'Accumulateur A avec le
contenu dont l'adresse est formée par [DP] et l'opérande
chargement de l’accumulateur A avec le contenu de $ 2008 ( DP= $20)

121
3. Mode d'adressage direct

 Instructions sur trois octets


• Le code opératoire (sur 2 octet)
• L'opérande ( 1 octet ) : Poids Faible (8 bits) de l’Adresse Effective
 Exemple : LDY $05 ou LDY < $05  chargement du registre Y avec le
contenu de $2005/06 (DP=$20)
 Charge le registre Y avec le contenu sur 16 bits dont les adresses sont [DP]
et partie basse et partie basse+1.

122
3. Mode d'adressage direct
 Instructions sur trois octets
 Exemple : LDY $05 ou LDY < $05  chargement du registre Y avec le
contenu de $2005/06 (DP=$20)

123
4. Mode d'adressage étendu (direct)

124
4. Mode d'adressage étendu (direct)

125
4. Mode d'adressage étendu (direct)

126
4. Mode d'adressage étendu (direct)

127
5. Mode d'adressage étendu indirect

128
5. Mode d'adressage étendu indirect

129 Rq: Le post-octet est toujours $9F.


5. Mode d'adressage étendu indirect

130
5. Mode d'adressage étendu indirect

131
Exécution d ’un programme en 6809: Présentation du programme
Exemple
Le programme Mémoire données
Mémoire programme
FE00: 86 0000:
FE01:2D 0001:
FE02:8B 0002:
LDA #$45 86 2D 0003:
FE03:5A
ADDA #$5A 8B 5A 0004:
FE04:B7
STA $0003 B7 00 03
FE05:00 0005:
FE06:03
FE07:

132
A Exécution d ’un programme en 6809:le programme en langage assembleur est codée en mémoire par des valeurs hexadécimales

Le programme Mémoire données


Mémoire programme
Code Code Code FE00: 86 0000:
opération opérande hexadécimal FE01:2D 0001:
LDA #$45 86 2D FE02:8B 0002:
FE03:5A 0003:
ADDA #$5A 8B 5A
FE04:B7 0004:
STA $0003 B7 00 03 FE05:00 0005:
FE06:03
FE07:

Le microprocesseur
Bus de données

A B
N (Négatif)
X
Registre d ’instructions Z (Zéro)
Y
V (Débord.)
S ALU
Décodeur C (Retenue)
U
PC FE00
Contrôleur Séquenceur

Bus d’adresses

133 Bus de contrôle


B Exécution d ’un programme en 6809:1er cycle de fonctionnement

Le programme Mémoire données


Mémoire programme
Code Code Code FE00: 86 0000:
opération opérande hexadécimal FE01:2D 0001:
LDA #$45 86 2D FE02:8B 0002:
FE03:5A 0003:
ADDA #$5A 8B 5A
FE04:B7 0004:
STA $0003 B7 00 03 FE05:00 0005:
FE06:03
FE07:

Le microprocesseur
Bus de données

A B
86 X
N 0 (Négatif)

Registre d ’instructions Z 0 (Zéro)


Y
V 0 (Débord.)
S ALU
Décodeur C 0 (Retenue)
U
PC FE01
Contrôleur Séquenceur

Bus d’adresses

134 Bus de contrôle


C Exécution d ’un programme en 6809:2ème cycle de fonctionnement

Le programme Mémoire données


Mémoire programme
Code Code Code FE00: 86 0000:
opération opérande hexadécimal FE01:2D 0001:
LDA #$45 86 2D FE02:8B 0002:
FE03:5A 0003:
ADDA #$5A 8B 5A
FE04:B7 0004:
STA $0003 B7 00 03 FE05:00 0005:
FE06:03
FE07:

Le microprocesseur
Bus de données

A 2D B
86 N 0 (Négatif)
X
Registre d ’instructions Z 0 (Zéro)
Y
V 0 (Débord.)
S ALU
Décodeur C 0 (Retenue)
U
PC FE02
Contrôleur Séquenceur

Bus d’adresses

135 Bus de contrôle


D Exécution d ’un programme en 6809:3ème cycle de fonctionnement

Le programme Mémoire données


Mémoire programme
Code Code Code FE00: 86 0000:
opération opérande hexadécimal FE01:2D 0001:
LDA #$45 86 2D FE02:8B 0002:
FE03:5A 0003:
ADDA #$5A 8B 5A
FE04:B7 0004:
STA $0003 B7 00 03 FE05:00 0005:
FE06:03
FE07:

Le microprocesseur
Bus de données

2D

A 2D B
8B N 0 (Négatif)
X
Registre d ’instructions Z 0 (Zéro)
Y
V 0 (Débord.)
S ALU
Décodeur C 0 (Retenue)
U
PC FE03
Contrôleur Séquenceur

Bus d’adresses

136 Bus de contrôle


E Exécution d ’un programme en 6809:4ème cycle de fonctionnement

Le programme Mémoire données


Mémoire programme
Code Code Code FE00: 86 0000:
opération opérande hexadécimal FE01:2D 0001:
LDAA #$45 86 2D FE02:8B 0002:
FE03:5A 0003:
ADDA #$5A 8B 5A
FE04:B7 0004:
STAA $0003 B7 00 03 FE05:00 0005:
FE06:03
FE07:

Le microprocesseur
Bus de données

2D 5A

A 87 B
8B + N 1 (Négatif)
X
Registre d ’instructions Z 0 (Zéro)
Y
V 1 (Débord.)
S ALU
Décodeur C 0 (Retenue)
U 87
PC FE04
Contrôleur Séquenceur

Bus d’adresses

137 Bus de contrôle


F Exécution d ’un programme en 6809:5ème cycle de fonctionnement

Le programme Mémoire données


Mémoire programme
Code Code Code FE00: 86 0000:
opération opérande hexadécimal FE01:2D 0001:
LDAA #$45 86 2D FE02:8B 0002:
FE03:5A 0003:
ADDA #$5A 8B 5A
FE04:B7 0004:
STAA $0003 B7 00 03 FE05:00 0005:
FE06:03
FE07:

Le microprocesseur
Bus de données

A 87 B
B7 N 0 (Négatif)
X
Registre d ’instructions Z 0 (Zéro)
Y
V 0 (Débord.)
S ALU
Décodeur C 0 (Retenue)
U
PC FE05
Contrôleur Séquenceur

Bus d’adresses

138 Bus de contrôle


G Exécution d ’un programme en 6809:6ème cycle de fonctionnement

Le programme Mémoire données


Mémoire programme
Code Code Code FE00: 86 0000:
opération opérande hexadécimal FE01:2D 0001:
LDAA #$45 86 2D FE02:8B 0002:
FE03:5A 0003:
ADDA #$5A 8B 5A
FE04:B7 0004:
STAA $0003 B7 00 03 FE05:00 0005:
FE06:03
FE07:

Le microprocesseur
Bus de données

A 87 B
B7 00 N 0 (Négatif)
X
Registre d ’instructions Z 0 (Zéro)
Y
V 0 (Débord.)
S ALU
Décodeur C 0 (Retenue)
U
PC FE06
Contrôleur Séquenceur

Bus d’adresses

139 Bus de contrôle


H Exécution d ’un programme en 6809:7ème 8ème et 9ème cycle de fonctionnement

Le programme Mémoire données


Mémoire programme
Code Code Code FE00: 86 0000:
opération opérande hexadécimal FE01:2D 0001:
LDA #$45 86 2D FE02:8B 0002:
FE03:5A 0003: 87
ADDA #$5A 8B 5A
FE04:B7 0004:
STA $0003 B7 00 03 FE05:00 0005:
FE06:03
FE07:

Le microprocesseur
Bus de données 87

A 87 B
B7 00 03 N 0 (Négatif)
X
Registre d ’instructions Z 0 (Zéro)
Y
V 0 (Débord.)
S ALU
Décodeur C 0 (Retenue)
U
PC FE07
Contrôleur Séquenceur

Bus d’adresses 0003

140 Bus de contrôle


CONCLUSION Exécution d ’un programme en 6809: le temps d’exécution du programme

Le programme Mémoire données


Mémoire programme
Code Code Code FE00: 86 0000:
opération opérande hexadécimal FE01:2D 0001:
LDA #$45 86 2D FE02:8B 0002:
FE03:5A 0003:
ADDA #$5A 8B 5A
FE04:B7 0004:
STA $0003 B7 00 03 FE05:00 0005:
FE06:03
FE07:

LDA -- 2 cycles de fonctionnement


ADDA -- 2 cycles de fonctionnement
9 cycles de
fonctionnement
STA -- 5 cycles de fonctionnement
(plus long car accès à la mémoire donnée)

Temps d’exécution
Tcycle= 4 .Thorloge (pour le 6809) du programme

141
Fhorloge = 4MHz (quartz de 4MHz)
Thorloge= 1/4 μs  Tcycle= 1 μs
9 μs

Vous aimerez peut-être aussi