Beruflich Dokumente
Kultur Dokumente
SERTI
Systme Microprocesseur
I- Architecture interne dun systme Microprocesseur :
Larchitecture interne dun systme Microprocesseur se compose essentiellement de trois blocs : le
microprocesseur, la mmoire et les entres/sorties. Ces trois blocs sont relis entre eux par trois bus de
communication qui sont le bus de donnes, le bus dadresses et le bus de commande.
Bus de donnes (8 bits)
UCT
Mmoire
Entres/Sorties
1.1 Le microprocesseur :
Un microprocesseur est limplantation en un seul botier, en technologie VLSI, dune unit
centrale de traitement de donnes CPU et dune unit arithmtique et logique ALU. Son
principal travail est de fournir aux autres lments qui lui sont raccords, la synchronisation
ncessaire et le traitement des informations qui lui sont achemines.
1.2 La mmoire :
Cest la partie o lon retrouve les programmes excutables et les donnes traiter. Elle est
divise en deux parties, qui sont la mmoire morte ou lecture seule et la mmoire vive ou la
mmoire lecture/criture.
1.2.1 Mmoire morte :
Cest la mmoire de lecture, elle contient le programme du systme. Elle est appele ROM
(Read Only Memory), son avantage est dtre permanente, son contenu ne disparat pas quand
le systme nest pas aliment. La ROM contient un programme de chargement initial ou
moniteur qui permet le fonctionnement du systme ds la mise sous tension.
1.2.2 Mmoire vive :
Cest la mmoire de lecture et dcriture du systme quon appel RAM (Random Access
Memory). Le contenu de ce type de mmoire est perdu lorsque lalimentation est coupe. La
RAM devra tre charge, avant utilisation, partir du clavier ou partir dune mmoire de
masse (disque, ).
-1-
MC 68 A 09 C P
Botier :
P=Plastique
L=Cramique
Circuit intgr de
Motorola
Famille M6800
Plage de temprature :
Vide = 0 70
C = -40 85
Vide = 1Mhz
A = 1.5 Mhz
B = 2Mhz
Dsignation de la pice pour
la famille M6800
-2-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
M
C
6
8
0
9
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
/HALT
XTAL
EXTAL
/RESET
MRDY
Q
E
/DMA
R//W
D0
D1
D2
D3
D4
D5
D6
D7
A15
A14
A13
4.2 Alimentation :
Le microprocesseur 6809 est aliment par une tension unique de +5 volts, 5 % sur la broche
VCC. La broche VSS constitue la masse du botier (0 volt).
4.3 XTAL et EXTAL :
Ce sont sur ces broches que le cristal est install afin de dterminer la vitesse dopration. Le
quartz ou la frquence externe est quatre fois la frquence de travail dsire. On retrouve sur
ces broches, une onde sinusodale la frquence du crystal dont lamplitude est denviron 2.5
volts. Une horloge TTL peut tre branche la place du crystal sur la broche EXTAL, XTAL
est relie la masse.
4.4 E et Q :
Dbut du
cycle
Fin du
cycle
E
Mmorisation des donnes
Q
Adresse valide
-3-
E est le signal dhorloge du systme pour la synchronisation avec les priphriques. Le signal Q
est un signal la mme frquence mais dphas de + 90 par rapport au signal E du CPU. Les
adresses du CPU sont valides partir du front montant de Q. Les donnes sont mmorises sur
un front descendant de E.
4.5 /RESET :
Un niveau bas sur cette entre entrane une rinitialisation du microprocesseur :
- Linstruction en cours est arrte
- Le registre de page directe (DPR) est mis zro
- Les interruptions /IRQ et /FIRQ sont masques
- Linterruption /NMI est dsactive
Le vecteur RESET est ladresse $FFFE. Ladresse constitue par les cases mmoires $FFFE
et $FFFF est charge dans le compteur de programme (PC) puis le microprocesseur excute le
programme correspondant partir de cette adresse.
4.6 MRDY :
Cette entre de commande Memory Ready permet lallongement du cycle dhorloge E afin de
ralentir le microprocesseur lorsquil tente de communiquer avec des dispositifs plus lents.
Normalement MRDY est branche 5 volts. On peut allonger E par des multiples de de
cycle machine et sa valeur maximale est de 10 microsecondes.
4.7 Bus de donnes D0 D7 :
La communication entre le microprocesseur et les autres botiers se fait par lintermdiaire dun
bus de donnes bidirectionnel de 8 bits. Les lecteurs de bus du CPU sont en logique trois
tats.
4.8 Bus dadresses A0 A15 :
Le transfert des adresses du microprocesseur vers le bus dadresses du systme se fait par
lintermdiaire de 16 broches unidirectionnelles. Lorsque le microprocesseur excute un cycle
de travail interne, toutes les lignes dadresses sont un niveau haut, donc ladresse est $FFFF.
De plus, la ligne R//W est positionne un niveau haut (lecture) et les lignes dtats BA et BS
sont au niveau 0 (fonctionnement normal). Les lecteurs de bus sont en logique trois tats.
4.9 R//W :
Cette broche de sortie dtermine la direction de transfert sur le bus de donnes. Si R//W=1, le
microprocesseur est en lecture, D0 D7 sont en entres. Si R//W=0, le microprocesseur est en
criture, D0 D7 sont en sorties. Cette broche est en tat de haute impdance lorsque le
microprocesseur libre les bus.
4.10 /HALT :
Cette entre permet dinterrompre le droulement dun programme de faon matrielle. Le
microprocesseur termine linstruction en cours puis positionne BA et BS un niveau haut
(libration des bus). Tant que la ligne /HALT est 0, le microprocesseur ne travail pas, il
reprend la suite du programme lorsque la ligne remonte 1. Aucun registre nest affect durant
larrt.
Tant que le microprocesseur est larrt :
- Les horloges E et Q fonctionnent normalement
- Les demandes dinterruptions /IRQ et /FIRQ sont masques
- Les demandes dinterruptions prioritaires /RESET et /NMI sont prises en compte,
mais leur traitement est retard.
-4-
4.11 /DMA :
DMA : Direct Memory Access
Cette entre permet de suspendre lutilisation des bus par le CPU pour faire un accs direct la
mmoire. Le passage ltat bas de /DMA entrane larrt du programme la fin de
linstruction en cours. BA et BS passent un niveau 1 et indiquent la disponibilit des bus au
circuit demandeur. Aprs 16 cycles, le CPU reprend les bus pour un rafrachissement interne.
Evidement les lignes BA et BS nous informent de cet tat.
4.12 BA et BS :
BA : Bus Available, BS : Bus State
Ce sont des lignes de sorties qui indiquent ltat du microprocesseur. Lorsque BA=1, les lignes
A0 A15, D0 D7 et R//W sont dans un tat de haute impdance. Les signaux BA et BS sont
trs utiles pour les applications possdant un priphrique capable de grer les bus dadresses et
de donnes la place du microprocesseur. Les quatre combinaisons possibles des lignes BA et
BS permettent de connatre chaque instant ltat du microprocesseur. Ces indications sont
valides sur le front montant de Q.
- BA BS = 0 0 le microprocesseur est en fonctionnement normal. Il gre les bus
dadresses et de donnes.
- BA BS = 0 1 le microprocesseur est en phase de reconnaissance dinterruption
pendant deux cycles. Cet tat correspond la recherche matrielle du vecteur
dinterruption (/RESET, /FIRQ, /IRQ, SWI)
- BA BS = 1 0 ce signal est positionn lorsque le microprocesseur rencontre
linstruction de synchronisation externe (SYNC). Les bus sont en haute impdance
pendant quil attend cette synchronisation sur une ligne dinterruption.
- BA BS = 1 1 cet tat correspond larrt du microprocesseur pendant lautorisation
venant du MPU de permettre un circuit externe de prendre le contrle des bus du
systme. Pendant ce temps les bus du MPU sont en haute impdance.
4.13 /NMI, /FIRQ, /IRQ :
NMI : Non Masquable Interrupt
FIRQ : Fast Interrupt Request
IRQ : Interrupt Request
Ce sont des entres qui permettent dinterrompre le processeur. Les interruptions ont des
niveaux de priorits diffrents. Linterruption NMI est la plus prioritaire, suivie de FIRQ et en
dernier IRQ. Les deux masques (F) et (I) font partie du registre de condition (CCR).
Lorsquune interruption est demande et nest pas masque, un programme dinterruption est
excut. Lorsque celui-ci est termin, le microprocesseur retourne au programme interrompu
pour complter son excution.
V- Dcodage dadresses :
Le dcodeur dadresses a pour fonction de gnrer des signaux pour la slection des diffrents botiers
avec lesquels le microprocesseur doit communiquer. Pour viter que deux botier rpondent
simultanment et crent alors un conflit sur les bus, chaque botier doit rpondre une plage
dadresses diffrente des autres botiers. Les portes logiques et les dcodeurs sont les dispositifs
utiliss pour raliser un dcodeur dadresses
-5-
A14
A15
Y0
Y1
Y2
Y3
6809
74LS138
E
7400
/G
A11 A10 A9 A8
X
X
X
X
A7 A6
X
X
A5
X
A4
X
A3
X
A2
X
A1
X
A0
X
-6-
Accumulateurs :
- A : Accumulateur de 8 bits
- B : Accumulateur de 8 bits
- D : Accumulateur de 16 bits (AB)
Registre de page direct DPR
Registre de condition CCR (drapeaux)
Les registres dindex X et Y :
Les registres dindex sont employs avec le mode dadressage index. Ils servent gnralement
au traitement dun bloc mmoire et pour pointer des donnes en mmoire. On peut, par
exemple, effacer un bloc mmoire ou dplacer le contenu dune rgion mmoire. Le 6809
possde deux registres dindex de 16 bits nomms X et Y.
Les pointeurs de piles U et S :
Ce sont des registres de 16 bits qui servent pointer ladresse des donnes temporaires dans
une rgion mmoire appele pile. Le 6809 possde deux pointeurs de piles, le registre S est le
pointeur de pile du systme tandis que le registre U est le pointeur de pile de lutilisateur. Le
pointeur de pile S est automatiquement utilis pendant les appels de sous programmes ou des
interruptions, alors que le pointeur de pile U est contrl exclusivement par le programmeur.
Le compteur de programme PC :
Ce registre de 16 bits agit comme un compteur binaire 16 bits avec une valeur de dpart
programmable. On lui spcifie la valeur de dpart par lintermdiaire dune commande.
Lutilisateur peut aussi, lintrieur de son programme, changer le contenu du PC par une
instruction de branchement. Le rle de ce registre est exclusivement de signaler au
microprocesseur quel endroit se situe la prochaine instruction excuter. Dans la recherche
de linstruction par le microprocesseur, le contenu du PC est mis sur le bus dadresses et au
mme moment, un signal de lecture est gnr permettant ainsi la donne dans la case
mmoire adresse, de se propager travers le bus de donnes vers le microprocesseur pour tre
traite. De faon automatique, le PC sincrmente de 1 aprs que le CPU ait reu la donne de
manire pointer la prochaine instruction.
Les accumulateurs :
Le MC6809 possde deux accumulateurs : laccumulateur A et laccumulateur B. Ce sont des
registres de 8 bits servant traiter des donnes. Toutes les oprations arithmtiques ou logiques
se font par lintermdiaire des accumulateurs et de lALU. Le MC6809 a la particularit de
combiner les deux accumulateurs A et B pour en former un seul de seize bits, appel
accumulateur D, permettant ainsi la ralisation doprations sur 16 bits. Lorsque les
accumulateurs A et B sont concatns pour obtenir laccumulateur D, les 8 bits les plus
significatifs proviennent de laccumulateur A tandis que les 8 bits les moins significatifs, de
laccumulateur B.
Le registre de page direct :
La mmoire adressable par le MC6809 est de 64 Koctets, qui pourra tre rpartie en 256 pages
de 256 octets chacune. Le registre DPR (8 bits) permet dindiquer quelle page parmi les 256
pages est accessible. Ce registre peut tre modifi avec une valeur dsire. Il est implicitement
utilis lorsque le microprocesseur excute une instruction dans le mode dadressage direct. Ce
registre est automatiquement remis zro lors dune ractivation matrielle RESET.
Le registre de code condition :
Ce registre (8 bits) permet de connatre les rsultats dune opration effectue par lALU. Le bit
Z, mis 1, indique que le rsultat donne zro, le bit N, mis 1, indique que le rsultat est un
nombre ngatif, etc. Les bits de ce registre sont mis jours aprs lexcution de certaines
-7-
instructions. Le registre de condition est utilis pour prendre des dcisions et de raliser des
sauts conditionnels dans un programme.
7 6 5 4 3 2 1 0
E F H I N Z V C
D0 D7
A0 A15
Registre
dinstruction
16
/RESET
/NMI
PC
B
U
S
A
D
R
E
S
S
E
S
U
S
Y
X
D
A
B
DPR
/FIRQ
Contrle des
interruptions
B
U
S
/IRQ
/DMA
R//W
Contrle des
bus
D
O
N
N
E
E
S
/HALT
BA
BS
XTAL
Horloge
EXTAL
MRDY
CCR
E
Q
ALU
-8-
Programmation en assembleur
I- Les langages de programmation :
Il existe plusieurs langages de programmation, toutefois, le langage machine est le seul compris par les
microprocesseurs. Ce langage est incontestablement le plus rapide excuter.
Le langage assembleur permet dutiliser des mnmoniques pour remplacer les codes machines
difficiles interprter.
Les langages volus bnficient de librairies de fonctions rendant la programmation plus simple
dvelopper
Exemple de
Programme de
Nom
programme
traduction en
Remarques
machine
En binaire :
10100101
- Le seul langage
01100000
compris par le CPU
01100101
Hexadecimal Loader - Le programme en
01100001
- accepte les codes langage machine est
10000101
hexadcimaux
appel programme
Langage machine
01100010
- les traduit en objet
En hexadcimal :
binaire
- Le programme
A5
- les places en ordre hexadecimal loader
60
dans la mmoire
fait
partie
dun
65
programme appel
61
MONITEUR.
85
62
- Le programme crit
Assembleur :
sous
forme
de
accepte
les mnmoniques
est
LDA $60
mnmoniques
appel programme
Langage assembleur
ADC $61
- les traduits en source
STA $62
binaire
- il contient les
les
places champs : tiquette,
gnralement dans mnmonique
un fichier
(instruction
avec
oprande)
et
commentaire.
II- Programmation dun microprocesseur :
Un programme est une suite logique dinstructions dont lobjectif est de produire un comportement
dsir de la machine. Tout les microprocesseurs comprennent un seul type de programme appel
programme machine quon peut nomm aussi programme binaire ou objet.
Voici un programme objet excutable par un MC6809 :
Code binaire
Fonction
Instruction
re
1000 0110
Opcode
1 instruction
0101 1010
Oprande
1011 0111
Opcode
2me instruction
0000 0001
Oprande
0000 0000
Oprande
0011 1111
Opcode
3me instruction
-9-
Le terme opcode signifie operational code ou code dopration. Ce code reprsente un ordre donn au
microprocesseur. Lorsquune oprande est prsente, elle suit toujours lopcode et reprsente, soit une
valeur immdiate ou relle ou une adresse vers laquelle le microprocesseur doit communiquer. Il est
toutefois possible que loprande ne soit pas requise sil sagit dopration interne du microprocesseur
(mode inhrent).
La reprsentation du programme sous la forme binaire est difficile comprendre et cest pour cette
raison quelle nest pas utilise. Pour amliorer la situation, on peut utiliser la reprsentation
hexadcimale. Cela permet de diminuer les erreurs lors de lentre du programme en mmoire.
Le mme programme sous la forme hexadcimale :
Code
Fonction
Instruction
hexadcimal
86
Opcode
1re instruction
5A
Oprande
B7
Opcode
2me instruction
01
Oprande
00
Oprande
3F
Opcode
3me instruction
Le programme objet, mme transform en hexadcimal, nest pas trs commode car il est difficile,
pour un humain, dinterprter ce que fera celui-ci. Dans le but de faciliter la comprhension du
programme, il sera associ chaque instruction une mnmonique qui est une reprsentation de
linstruction sous forme dun mot court qui est habituellement descriptif et plus facile mmoriser.
Le mme programme en assembleur. Pour plus de clart, lopcode et loprande ont t runis sur la
mme ligne.
Code hexa.
Opcode
Oprande
Instruction
re
86 5A
LDA
#$5A
1 instruction
B7 01 00
STA
$0100
2me instruction
3F
SWI
3me instruction
III- Jeux dinstructions du 6809 :
La carte de codification prsente lensemble des instructions utilisables par le MC6809. Cette carte
contient :
- Toutes les instructions possibles pour le microprocesseur ranges par ordre pour
chaque mode dadressage, avec lopcode correspondant en hexadcimal (OC), le
nombre de cycle de linstruction (~) et son nombre doctets (#).
- Elle indique aussi si linstruction opre avec la mmoire ou avec un registre, dans ce
cas avec quel registre.
IV- Dure dexcution dun programme :
La dure dexcution dune instruction se calcule en tenant compte du nombre de cycles de
linstruction, multipli par la priode du cycle machine du microprocesseur. Dans le cas du MC6809,
la frquence dhorloge dterminant la dure du cycle machine est gale la frquence du crystal
divise par quatre.
Par exemple, si la frquence du crystal du MC6809 vaut 4 Mhz, alors la frquence dhorloge (E ou Q)
vaut 1Mhz. Donc la dure dun cycle machine est gale la priode de lhorloge et vaut : priode de E
= 1 / frquence de E = 1 s.
Pour une instruction durant 5 cycles, le temps dexcution est donc 5 fois le temps dun cycle machine,
c'est--dire 5 s. Le nombre de cycles de linstruction se trouve dans la colonne de la carte de
codification dont lentte commence par le signe ~.
- 10 -
Opcode
Oprande
LDA
DECA
BNE
RTS
#$05
Encore
Nbre de
cycles
2
2
3
5
Cet exemple montre un sous programme permettant de crer un dlai dont la dure dpend de
la valeur place dans le registre A. On peut voir, par lanalyse du programme que seules les
instructions DECA et BNE vont se rpter 5 fois. Le calcul du nombre de cycles total pour le
programme est :
nombre de cycles = 2 + 5 * (2 + 3) + 5 = 32 cycles
Avec un crystal de 4 Mhz, un cycle vaut 1 s et la dure du sous programme est :
Dure = 32 * 1 s = 32 s
V- Les champs dans un programme en langage assembleur :
Voici un exemple en langage assembleur. Les champs tiquettes, mnmonique et commentaires sont
crs par le programmeur. Les champs adresse hexa et code machine sont gnrs par un programme
nomm assembleur.
Adresse
Code
Etiquette
Mnmonique
Commentaires
Hexa
machine
Opration Oprande
ORG
$0200
Adresse du prog
0200
A5
DONNEE
DB
$A5
Dclaration de la variable
DONNEE
0200
PORTB
EQU
$6002
Dclaration
de
la
constante PORTB
0201
B6 02 00
DEBUT
LDA
DONNEE Lire la donne et la
placer ds le registre A
0204
B7 60 02
STA
PORTB
Dposer A dans le
PORTB
0207
7E 02 01
JMP
DEBUT
Le programme boucle sur
lui mme
END
Directive fin de prog.
pour lassembleur
Adresse :
La progression des adresses dpend de la longueur en octets de linstruction.
Code machine :
Ce sont des codes sous forme hexadcimale correspondant linstruction. On les trouve sur la carte de
codification du MC6809.
Etiquette :
Ce sont des mots reprsentatifs qui servent de rfrences. Elles remplacent des adresses ou des
constantes.
Mnmonique :
Cest linstruction complte incluant lopration et loprande :
- Opration : Cest linstruction de base
- Oprande : Cest la donne de linstruction. Elle peut reprsenter une valeur, une
adresse ou un registre. Certaine instructions nutilisent pas doprandes.
- 11 -
Commentaire :
Champ optionnel mais trs utile pour la comprhension du programme. Seules les lignes cls doivent
tre commentes.
VI- Rdaction dun programme :
La rdaction dun programme se divise en 6 tapes, toutes aussi importantes les une que les autres :
- Description de la tche
- Rdaction dun algorithme
- Rdaction dun ordinogramme
- Rdaction dun programme
- Dpannage
- Documentation
6.1 Description de la tche :
Il faut dcrire clairement, simplement mais sans omission, la tche que le programme doit tre
capable de raliser.
Pour le programmeur, une bonne description de la tche facilitera la rdaction de lalgorithme,
de lordinogramme et du programme.
Pour lutilisateur, une bonne description de la tche permettra de mieux exploiter le
programme, tout en restant conscient de ces limites.
6.2 Algorithme :
Lalgorithme est la description, tape par tape, des oprations effectuer sur un ensemble de
donnes pour arriver aux rsultats souhaits. Les diffrentes tapes doivent tre ordonnes
squentiellement.
6.3 Ordinogramme :
Un ordinogramme est une reprsentation graphique dun algorithme. Il prsente trois
avantages :
- Facilite le codage ou lcriture du programme
- Facilite la comprhension du programme
- Utile pour le dpannage du programme
Aprs le trac de lordinogramme, il faut en vrifier le cheminement logique par des
exemples thoriques avec quelques donnes numriques avant dcrire les instructions
en dtail.
- Traitement dinformation
- 12 -
- Renvoi de page
- Sous-programme. Contient le nom du sous-programme
- 13 -
CHENILLARD
DELAI
CODE $01
VALUE $xxxx
CODE LEDs
Dcrmenter VALUE
DELAI
VALUE
Dcalage
gauche de CODE
oui
0
non
oui
Retour
non
CODE0
- 14 -
- 15 -
- 16 -
JSR [OUTCAR]
; appel du sous-programme, on forme ladresse effective du sousprogramme par lassemblage de loctet lu par le CPU ladresse
de OUTCAR constituant la partie msb de ladresse effective, et
loctet lu ladresse OUTCAR+1 constituant loctet lsb de
ladresse effective
STB [,Y]
- 18 -
Gnralement, une centaine doctets sont ncessaires pour la dimension de la pile. Certains
programmes utilisent la pile pour y emmagasiner temporairement une quantit importante
dinformations, le programmeur doit prvoir une zone mmoire plus grande.
Lexemple suivant montre linitialisation du pointeur de pile dans un programme autonome.
****************************
* Programme dinitialisation et
* dutilisation de la pile S
****************************
ORG $E000
tabli ladresse du programme
LED
EQU $2000
adresse du dispositif de sortie
DEBUT
LDS #0100
initialise le pointeur de pile
ENCORE
LDA #01
valeur de dpart
GAUCHE
STA LED
criture port de sortie
BSR DELAI
appel du sous-programme DELAI
LSLA
dcalage gauche du contenu de A
BNE GAUCHE
test si rotation termine
BRA ENCORE
recommence
*****************************
* Sous-programme DELAI
*****************************
DELAI
PSHS X
sauve le registre X
LDX #$30D4
tabli la dure du DELAI
REPETE
LEAX -1,X
dcrmente le compteur X
BNE REPETE
test si rendu zro
PULS X
on rcupre la valeur de X
RTS
9.4 Observation sur le fonctionnement de la pile :
Dans le programme prcdent, le pointeur de pile du systme est initialis par la valeur $0100.
Lorsque le microprocesseur quitte le programme principal pour aller excuter le sousprogramme DELAI, le registre PC est automatiquement sauv pour conserver ladresse de
retour.
La valeur de ladresse de retour, que le microprocesseur doit sauvegarder lorsquil va excuter
le sous-programme DELAI, est ladresse de linstruction qui suit lappel du sous-programme.
Dans ce cas, cette adresse correspond $E00B.
Selon lordre dempilement tablit par le fabricant, loctet le moins significatif de ladresse de
retour du sous-programme a t sauv dans la pile ladresse $00FF et loctet le plus
significatif ladresse $00FE.
La valeur du pointeur de pile au moment o le microprocesseur commence la lecture de la
premire instruction du sous-programme est $00FE. Seul le registre PC a t sauvegard
jusqu maintenant.
La valeur du pointeur de pile, au moment o le microprocesseur commence la lecture de la
deuxime instruction du sous-programme, est $00FC. Le registre X est ajout dans la pile par
linstruction PSHS X, et le pointeur de pile S est automatiquement ajust.
La valeur du pointeur de pile, aprs que le microprocesseur ait excut linstruction RTS du
sous-programme, est $0100. Le pointeur est donc revenu sa position initiale puisque tous les
registres sauvegards dans la pile ont t retirs.
Le programme plante si on oublie de placer linstruction PULS X avant linstruction RTS. Au
moment o lon croit reprendre la valeur du PC, le pointeur de pile pointe la valeur
sauvegarde pour le registre X et cest cette valeur qui sera retourne au PC.
- 19 -
- 20 -
VSS
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
CB1
CB2
VCC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
M
C
6
8
2
1
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
- 21 -
CA1
CA2
/IRQA
/IRQB
RS0
RS1
/RESET
D0
D1
D2
D3
D4
D5
D6
D7
E
CS1
/CS2
CS0
R//W
Voici un rsum des signaux et du brochage du PIA. Dun point de vue fonctionnel, les signaux
appartiennent 4 catgories.
Signaux rservs aux donnes des
priphriques
Signaux rservs aux donnes
microprocesseur
Signaux de contrle et de
synchronisation
avec
les
priphriques
Signaux de contrle et de
synchronisation
avec
le
microprocesseur
PA0 PA7
PB0 PB7
D0 D7
CA1, CA2
CB1, CB2
E, R//W, /RESET, CS0, CS1,
/CS2, RS0, RS1, /IRQA, /IRQB
CPU
6809
R//W
/RESET
A0
A1
FIRQ
D0
R//W
/RESET
RS0
RS1
IRQA
IRQB
D0
D7
D7
+5v
CS0
CS1
/CS2
CA1
Priphrique
A
PA
CA2
PIA
6821
CB1
Priphrique
B
PB
CB2
Dcodeur dadresses
La figure de branchement du PIA montre comment le PIA est implant dans le systme (micro kit). Le
dcodeur dadresse fournit un signal de slection rpondant ladresse de base $8000.
IV- Les registres du PIA :
Physiquement, le PIA utilise quatre adresses pour la slection des registres. Deux registres (PA et
DDRA) rpondent la mme adresse. Laccs lun ou lautre se fait par le bit 2 du registre de
contrle CRA. Le mme raisonnement est utilis pour le port B.
RS1
RS0
Registre slectionn
0
0
PA si CRA2=1 ou DDRA si CRA2=0
0
1
Registre de contrle CRA
1
0
PB si CRB2=1 ou DDRB si CRB2=0
1
1
Registre de contrle CRB
Du point de vue programmation, lutilisateur a accs 6 registres internes. Par consquent, le
microprocesseur peut rejoindre 6 registres en lecture et en criture comme des cases mmoire. Ces
registres sont diviss en deux groupes A et B de trois registres chacun.
- CRA et CRB : sont les registres qui contrlent les paramtres de fonctionnement du
PIA.
- DDRA et DDRB : sont les registres de direction dont chacun des bits fixe le sens de
transfert (entre ou sortie) pour chacune des lignes relies aux priphriques. Un tat
1 dfinit une ligne en sortie et un tat 0 dfinit une ligne en entre.
- ORA et ORB : sont les registres de sorties qui mmorisent les donnes (en sortie)
lors dune criture.
Chaque ligne dun port peut tre programme individuellement en entre ou en sortie, par lcriture
dun mot dans un registre de direction. Les registres de direction rglent la direction du transfert de
donnes entre les priphriques et le microprocesseur. Ainsi lorsquun 0 est crit dans le bit DDRA6
du registre DDRA, la ligne PA6 est programme en entre. A linverse, lorsquun 1 est crit dans le bit
DDRB6 du registre DDRB, la ligne PB6 est programme en sortie.
Les bits des lignes programmes en sortie sont mmoriss dans un registre. Par exemple, le signal
envoy au priphrique via la ligne de sortie PB6 est mmoris dans le bit ORB6 du registre de sortie
ORB. Ensuite, puisque le bit DDRB6=1 dans le registre de direction DDRB, le transfert du bit ORB6
sur la ligne PB6 est autoris.
Ltat dune ligne programme en entre nest pas mmoris dans un registre de sortie. Ainsi ltat de
la ligne PA6 est transmis directement au buffer qui lamplifie puis lenvoie sur la ligne D6 du bus de
donnes vers le microprocesseur.
- 23 -
V- La programmation du PIA :
Avant dutiliser le PIA pour communiquer avec des priphriques, lutilisateur doit dfinir le sens (en
entre ou en sortie) de chacune des lignes du port A et du port B. Ensuite, il sagit de rejoindre les
registres priphriques ORA et ORB. Ces tapes constituent linitialisation du PIA. Elles se rsument
par lalgorithme suivant :
- Mettre 0 les bits, CRA2 et CRB2 des registres de contrle pour prparer laccs
aux registres de direction DDRA et DDRB.
- Ecrire dans les registres de direction DDRA et DDRB un code de 8 bits
programmant en entre ou en sortie chacune des lignes des ports. Un bit mis 1
assigne une ligne en sortie, tandis quun bit mis 0 programme une ligne en entre.
- Mettre 1 les bits CRA2 et CRB2 des registres de contrle pour prparer laccs
aux registres priphriques ORA et ORB.
Avant dutiliser un PIA, il faut absolument excuter un sous-programme dinitialisation qui
programme les registres internes suivant la configuration des entres/sorties dsire. Aprs son
initialisation, le PIA est prt rgir lchange de donnes entre le microprocesseur et les priphriques.
A cette tape, les donnes sont lues et crites dans les ports A et B 2 adresses correspondant aux
registres priphriques ORA et ORB.
VI- Tableau rsum des fonctions du registre CRA du PIA :
Ce tableau montre la fonction de chaque bit du registre de contrle CRA associ au port A du PIA, le
mme tableau est utilis pour le port B. Par exemple, si le PIA est utilis en mode simple, c'est--dire
sans utiliser les lignes de contrles, seul le bit 2 du CRA dtermine laccs DDRA ou PA.
7
6
5
4
3
2
1
0
IRQ de
IRQ de
Accs
CA1
CA2
Contrle de CA2
DDRA ou PA
Contrle de CA1
0
0
0
0
aucune
aucune
0
CA2 actif
0
0
CA1
0 interruption
transition
transition
CA2
sur
interruption
DDRA
actif
sur
masque
active sur
active sur
en
masque
CA1
CA2
entre
1
1
1
1
1
transition
transition
CA2 actif interruption
1
CA1
1 interruption
active sur
active sur
sur
permise
PA
actif sur
permise
CA1
CA2
CRA5=1 : CA2 est programme en sortie
- CRA4 CRA3 = 0 0 Mode dialogue (Hand Shake)
Enable
R//W
CA2
CA1
- 24 -
Aux front actif de CA1 (FM ou FD) la ligne de contrle CA2 transite ltat haut
Pendant la lecture du port A (R//W=1) CA2 passe ltat bas.
Remarque :
Cest dans le mode dialogue que le mode de fonctionnement des ports A et B diffre.
CRB5=1 : CB2 est programme en sortie
- CRB4 CRB3 = 0 0 Mode dialogue
Enable
R//W
CB2
CB1
Aux front actif de CB1 (FM ou FD) la ligne CB2 passe ltat haut
Pendant lcriture sur le port B (R//W=0) CB2 passe ltat bas.
- CRB4 CRB3 = 0 1 Mode impulsion (Pulse Strobe)
Enable
R//W
CA2
Pendant la phase de lecture du port A, CA2 transite chaque front descendant de lhorloge
Enable (E).
De mme pendant la phase dcriture du port B, CB2 bascule chaque front montant de E.
- CRA4 CRA3 = 1 x Mode programme (ou mode Set/Reset)
Dans ce mode ltat de CA2 (resp. CB2) est impos par le bit programm au bit CRA3 (resp.
CRB3).
- 25 -