Académique Documents
Professionnel Documents
Culture Documents
re
anne.
Plan du cours
Introduction Architecture du microprocesseur architecture externe architecture interne le schma fonctionnel l'UAL l'accumulateur le compteur d'instructions le registre d'adresses le registre d'instructions le registre d'tat les registres temporaires de l'UAL les registres gnraux la logique de contrle
Historique
Le microprocesseur est l'aboutissement de progrs technologiques tant dans les domaines mcanique, informatique et lectronique. Quelques dates :
1690 : Pascal invente la machine calculer entirement mcanique (addition et soustraction) 1800 : Jacquart invente le mtier tisser avec cartes perfores. 1810 : Invention de l'orgue de barbarie (succession de cartes perfores). 1940 : Premier ordinateur relais mcaniques (Navy) 1946 : Premier ordinateur tubes vide (1800). (grande dissipation : 150 kw, problme de rendement et de fiabilit) 1948 : Progrs de la physique quantique avec dcouverte de l'effet transistor. 1950 : Ralisation des premires mmoires ferrites. 1958 : Dveloppement du premier circuit intgr (4 5 tr/puce). 1964 : Ordinateur transistors ( base de circuits TTL : 50 transistors dans une puce) 1970 : Premiers circuits L.S.I.- naissance du premier microprocesseur 4 bits avec 1000 transistors sur une puce. 1975 : Naissance du microprocesseur Motorola 6800 (8 bits) . 1980 : Apparition du microprocesseur 16 bits avec 50000 transistors sur la puce. 1984 : Apparition du microprocesseur 32 bits avec un million de transistor sur la puce. 1994 : Apparition du Pentium avec 3,5 millions de transistors.
3
C'est en 1971 que le premier microprocesseur est sorti des laboratoires d'Intel. Travaillant sur 4 bits et d'une puissance faible l'intrt de ce nouveau composant lectronique ne fut pas vident jusqu' ce que l'ide de le transformer en calculatrice fut trouve. Sept ans plus tard, l'arrive du 8088 multiplie dj cette puissance de calcul par 200 ! Cette date correspond la naissance des vritables micro-ordinateurs. Arrivent ensuite les microprocesseurs 68000 et 80286 (16 bits) avec les Macintosh et P.C. que nous connaissons. Ils ont introduisent l'image et le son. Ensuite, tout n'est plus qu'une question de course la puissance de calcul. Chaque bond technologique apporte sont innovation. Aujourd'hui, le multimdia puis le 3 D et le temps rel. Demain, le monde virtuel !
Principes de base
Les premiers automatismes taient raliss partir de la logique cable selon le synoptique suivant :
Tableau de commande
les systmes logique cable sont conus l'aide de circuits intgrs logiques. Certains de ces circuits font appel :
La logique combinatoire
i j
ei
sj
la logique squentielle
n j
ei
sj
(les sorties dpendent toujours des entres mais aussi des tats antrieurs)
5
Le microprocesseur donne naissance au principe de la logique programme. Le fonctionnement n'est plus dfini par un ensemble de circuits logiques, cbls entre eux, mais par une suite ordonne d'instructions stockes en mmoire et gres par cet lment.
Nouveau synoptique :
Tableau de commande
Interface
Mmoire (instructions)
Microprocesseur
Interface
A B A A
A B B
A B
rsultat AB AB AB
B AB
AB
AB
1re tape
A
2me tape
AB
3me tape
B
4me tape
AB
5me tape A B + AB
7
Ralisation
E remplac C P S Buffer command
A B + AB
PP
PP
P P
P P
P P
NON
OU
ET
M3
M2
M1
La notion de programme
Un programme qui ralise une fonction particulire comprend : Une suite d'instructions. Chaque instruction est constitue de plusieurs microinstructions. Chaque micro-instruction gnre plusieurs micro-commandes destines aiguiller correctement les informations.
Dans l'exemple du ou exclusif, le programme comprend une instruction constitue de 5 micro-instructions ou phases. Chaque phase gnre des micro-commandes qui, au travers des 12 fils, aiguillent correctement les informations.
Remarques : les phases sont commandes par une logique squentielle synchrone. Les micro-instructions sont stockes sous forme de mots dans une mmoire.
Choix entre les deux logiques Courbe d'volution du cot par rapport la complexit.
Cot logique cble logique programme
Critres de choix :
avantage
inconvnient
logique cable
rapidit
spcificit
logique programme
souplesse
lenteur
logique cble : Pour une configuration hardware donne, nous avons une fonction donne. Il y a ncessit de modifier le hardware pour changer de fonction. logique programme Le hardware est fig. C'est le programme qui cre la fonction. Pour une suite d'instructions donne, nous avons une fonction donne. Il y a ncessit de modifier le programme pour une nouvelle fonction
10
Le microprocesseur
Dfinition le microprocesseur, not aussi M.P.U. (Microprocessor unit) ou encore C.P.U. (Central Processing Unit) est un circuit intgr complexe appartenant la famille des VLSI (Very large scale intgration) capable d'effectuer squentiellement et automatiquement des suites d'oprations lmentaires.
Son rle Ce circuit remplit deux fonctions essentielles : le traitement des donnes On parle d'unit de traitement. Cette fonction est ddie l'U.A.L. Elle concerne la manipulation des donnes sous formes de transfert, oprations arithmtiques, oprations logiques.... le contrle du systme Cette fonction se traduit par des oprations de dcodage et d'excution des ordres exprims sous forme d'instruction.
11
Dfinition :
La notion de puissance est la capacit de traiter un grand nombre d'oprations par seconde sur de grands nombres et en grande quantit. Intrinsquement la puissance se joue donc sur les trois critres suivants: La longueur des mots : donnes et instructions (on parle de largeur du bus des donnes). Le nombre d'octets que le microprocesseur peut adresser (on parle de largeur du bus des adresses). La vitesse d'excution des instructions lie la frquence de fonctionnement de l'horloge de synchronisation exprime en MHZ. l'aspect dimensionnel renseigne assez bien de la puissance du composant.
12
Autre s priphriques :
Contrleur de disque Contrleur d'accs mmoire Circuit de gestion M.M.U.
n 11
n'
i 2
3 PIA 6821
i' 1
3 ACIA 6850
p s
t e
b z
c 6840
O1
Compteur O2 programmable O3
13
et Des registres que l'on nomme couramment : Le Compteur d'Instructions (C.I.) Le Registre d'tat Le Registre d'Instructions (R.I.) Le Registre d'Adresses (R.A.) Le Registre temporaire des donnes De base, il existe 6 registres fondamentaux dans une architecture de microprocesseur 8 bits. (Des registres supplmentaires sont ajouts pour rendre la vie plus facile aux programmeurs) Cet ensemble est interconnect au travers de diffrents bus. On trouve trois types de bus :
Le bus des donnes (bi-directionnel) Le bus des adresses (uni-directionnel) Le bus de contrle (bi-directionnel)
Remarquer le bus interne de donnes qui relie tous les diffrents lments du micro-processeur.
14
Son rle : Ce circuit permet de traiter et tester les donnes. Toute instruction qui modifie une donne fait toujours appel l'UAL.
L'entre de L'UAL est connecte au bus interne via p des registres "temporaires" p un registre particulier appel "accumulateur". La sortie de l'accumulateur. Noter : les deux entres sont prcdes par une mmoire tampon. On les appelle encore des registres tampons ou verrou. Ces registres permettent de stocker des octets aux entres de l'U.A.L. L'UAL tant constitu d'une logique combinatoire, elle est dpourvue de moyen propre de stockage. Ce type de registre ne peut tre manipul par le programmeur. Il lui est totalement transparent. l'UAL est connecte uniquement l'entre de
15
L'accumulateur
C'est le registre le plus important du microprocesseur, il sert systmatiquement lorsque le p a besoin de "manipuler" des donnes. La plupart des oprations logiques et arithmtiques sur les donnes font appel au couple "UAL - accumulateur" selon la procdure suivante:
alu
Il en est de mme pour les dplacements et transferts des donnes d'un endroit un autre comme : de mmoire mmoire. de mmoire units d'entre-sortie (I/O). Cette action se fait en deux temps : source vers Accumulateur et ensuite Accumulateur vers destination. Les instructions supportes par un accumulateur sont trs nombreuses. Au niveau de la programmation, il reprsente une grande souplesse d'utilisation! Les autres registres ne permettent que des oprations limites. Certains microprocesseur, possdent des accumulateurs de longueur double tel D chez Motorola et HL chez Intel - dissocis en deux et gnralement baptiss individuellement A et B ou H et L respectivement. Gros avantage prsent par un p possdant plusieurs accumulateurs : les oprations logiques et arithmtiques se font entre accumulateurs limitant ainsi les accs (transferts) avec l'extrieur.
16
Le Compteur d'Instructions
Appel encore Compteur Programme (P.C.) ou Compteur Ordinal (C.O.) Son rle Pointer TOUJOURS le premier octet d'une instruction. Commentaires : Le programme excuter est une succession d'instructions ordonnes (chaque instruction pouvant prend plusieurs octets!) qui se trouve rang dans une zone mmoire, gnralement des adresses successives. le P.C. "repre" le premier octet de chaque instruction du programme. La taille du PC a une longueur de 16 bits ce qui lui permet d'adresser 65536 adresses mmoire soit 64 k octets (le champ mmoire). Notons qu'il est connect au bus interne des donnes. A la mise sous tension, une valeur particulire est dpose sur le bus d'adresses (Dans le cas du 6809, cette valeur est $FFFE). Le contenu des cases mmoires ($FFFE-$FFFF) reprsente en gnral l'adresse o se trouve le premier octet de la premire instruction du programme.
$FFFE $FFFF adresse haute adresse basse
Cette adresse est transmise aux circuits mmoires par l'intermdiaire du bus d'adresse via le Registre d'Adresses. Le P.C. pointe toujours l'adresse du dbut de l'instruction suivante. (A retenir, car parfois il est utile de connatre l'adresse prsente.) Il est possible de recharger le [P.C.] avec une adresse qui ne correspond pas au droulement squentiel du programme. On trouve les dtournements conditionnel et inconditionnel.
17
Le registre d'adresses
Son rle : Le Registre d'adresses ou (R.A.) sert d'interface entre le bus des donnes interne et le bus des adresses. Il "pilote" le bus d'adresses du microprocesseur. Commentaires : D'une longueur de 16 bits, il est constitu de deux registres 8 bits (partie haute et partie basse). Son contenu provient de diffrentes sources : Le Compteur d'instruction Un registre gnral Un emplacement mmoire Le contenu du registre d'adresse pointe la zone mmoire utile au microprocesseur. Une fois que le premier octet de l'instruction en cours est dcod ... Le contenu du Compteur d'Instructions est chang (contient l'adresse du dbut de l'instruction venir). Le contenu du Registre d'adresses change! donc [C.I.] [R.A.] Ce changement correspond... soit une incrmentation du contenu afin de lire l'information complmentaire de l'instruction en cours. soit un chargement d'une nouvelle valeur correspondant une nouvelle zone mmoire utilise temporairement par le microprocesseur (zone diffrente de celle o se trouve le programme).
d'une lecture en mmoire indirectement selon les modes d'adressage utilils) d'un calcul (addition, ...)
(directement
ou
19
Le Registre d'instructions
Commentaires : Le registre est charg pendant le cycle de base extraction-excution. Il reoit l'information (octet) grce au bus de donnes auquel il est connect. L'information qu'il "capture" sur le bus des donnes est utilis par le dcodeur d'instructions. Suivant le protocole ci-dessous : La donne extraite de la mmoire est stocke dans le R.I. (c'est la phase extraction). Ensuite ce contenu est interprt par le dcodeur d'instructions qui agit alors sur la logique de contrle (c'est la phase excution). Cet octet indique au microprocesseur deux choses : Une action (une lecture, une criture ou autre ...) Un lieu d'action (un registre, un accumulateur, une case mmoire...) Le rsultat de cette interprtation se traduit par des niveaux logiques sur le bus de contrle.
20
Le registre d'tat
L'existence de ce registre permet de distinguer le simple calculateur du vritable ordinateur. Son rle Stocker les rsultats des tests effectus par l'U.A.L. aprs traitement sur les donnes Commentaires : L'existence de ces rsultats permet d'crire des programmes avec des branchements conditionnels (nouvelle adresse dans le C.I.). En fonction de l'tat des bits de ce registre le microprocesseur peut, alors, excuter des programmes diffrents. le microprocesseur prend en quelque sorte des "dcisions". Les bits les plus couramment utiliss sont : a- Le bit de retenue Ce bit est dans l'tat actif lorsque le huitime bit du rsultat de l'opration gnre une retenue.` b- le bit de zro Ce bit est actif lorsque l'opration a pour effet de mettre tous les bits d'un accumulateur ou d'un registre la valeur logique 0 (trs utilis pour raliser des compteurs). c- Le bit de signe Information qui indique que le bit le plus significatif (MSB) du contenu de l'accumulateur est un 1 logique.
21
Exemples d'application Pour une soustraction - Selon les rgles de l'arithmtique du complment 2 cela signifie que le nombre est ngatif. Ces 3 bits de base sont parfois complts par des bits supplmentaires choisis par le constructeur.
22
En plus des 6 registres de base que possdent tous les microprocesseurs 8 bits, il peut en exister d'autres destins faciliter la tche du programmeur. On les nomme registres gnraux.
Sur notre schma fonctionnel type, nous avons 3 registres gnraux B, C et D. Ce ne sont pas des registres puissants (tel un accumulateur) puisqu'ils n'ont pas de liaison directe avec la sortie de l'U.A.L. Ces registres peuvent nanmoins affecter le Registre d'Etat.
Parfois, ils peuvent constituer un registre 16 bits - appel paire de registre (ex : BC chez Intel ou D chez Motorola). Ainsi, il est possible de raliser des oprations sur un mot (ex : incrmentation de la paire).
23
La logique de contrle
Appel encore Squenceur ou Unit de contrle (U.C.) Son rle : Permet tous les lments constitutifs du microprocesseur de travailler ensemble et dans l'ordre. Commentaires : La logique de contrle est pilote par le Registre d'Instruction via le dcodeur d'instruction. Cette unit joue en quelque sorte un rle d'intendance puisqu'elle dcide de la disponibilit du bus tel ou tel lment logique. La logique de contrle possde une architecture complexe et trs spcialise. L'lment central est reprsent par le dcodeur d'instructions qui dcode les informations (premier octet) stockes dans le R.I. pour gnrer les signaux ncessaires l'excution de l'instruction . La logique de contrle gnre sur les lignes de contrle des niveaux logiques qui activent les diffrents circuits environnant tels que mmoires et circuits I/O. Cette unit fournit, partir d'un signal de rfrence qui est l'horloge, tous les signaux de synchronisation utiles au bon fonctionnement de l'ensemble. Cette horloge est cre partir d'un oscillateur interne qui utilise un signal en provenance d'un quartz externe.
24
Deux actions complmentaire noter : Cette unit assure : le contrle de mise sous tension du microprocesseur (initialisation des registres). le traitement des interruptions.
25
OV
+5V
Horloge
Bus de commande
{
{
39 38 35 34 33 5 6 2 3 4 40 37 36 32
XTAL EXTAL Q E DMA/BREQ BS BA NMI IRQ FIRQ HALT RESET MRDY R/W D0 D7
24
A0
8 23
A15
31
Signaux mmoire
Brochage du MC 6809
OV
+5V
Horloge
35 34 39 33 5 6 2 3 4 40 37 36 38
Q E TSC BUSY BS BA NMI IRQ FIRQ HALT RESET AVMA LIC R/W
A0
8 23
Bus de commande
{
Signal mmoire
A15
D0 D7
24
31
32
Brochage du MC 6809 E
26
Architecture du 6809
Le microprocesseur 6809 est un processeur 8 bits dont l'organisation interne est oriente 16 bits. Il est fabriqu en technologie MOS canal N et se prsente sous la forme d'un botier DIL 40 broches. Il est monotension(5V).
Il existe deux versions diffrencies par l'horloge. le 6809 est rythm par une horloge interne (f=1 MHZ, 1.5 MHZ et 2 MHZ). le 6809E est rythm par une horloge externe. Ce dernier est adapt aux applications multiprocesseur. Il prsente la particularit de pouvoir tre synchronis par une horloge extrieure. Compatibilit complte entre les 2 versions.
27
Prsentation du brochage
l'alimentation (Vss - Vcc) Le bus des donnes 8 bits (Do D7) Ces huit broches sont bidirectionnelles. Elles permettent la communication avec le bus des donnes interne du microprocesseur. Chaque broche peut "piloter" 1 charge TTL et 8 entres de circuits appartenant la famille 680 0. Bus en logique 3 tats. Le bus des adresses 16 bits (A0 A15 ) Ces broches unidirectionnelles transfrent l'adresse 16 bits fournie par le microprocesseur au bus d'adresse du systme. Mmes caractristiques lectriques que pour le bus des donnes. Bus en logique 3 tats.
Le bus de contrle La broche Read/ Write Cette broche indique le sens de transfert des donnes sur le bus des donnes. Ligne logique 3 tats lecture en cours (D0 - D7 sont des entres) R/ W = 0 criture en cours (D0 - D7 sont des sorties) R/ W = 1
28
Les lignes d'tat du bus BA (Bus available) et BS (Bus state) Information qui permet de connatre l'tat du microprocesseur tout moment. BA 0 0 1 1 BS 0 1 0 1 Etat normal reconnaissance d'interruption reconnaissance de synchronisation externe arrt bus disponible 1er cas : Le microprocesseur est en fonctionnement normal, il gre les bus d'adresses et de donnes. 2me 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. 3me cas : Ce signal apparat 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 impdance pendant ce temps. Dernier cas : Correspond l'arrt du microprocesseur (niveau bas sur HALT). Le microprocesseur laisse la gestion des bus des donnes et des adresses un circuit annexe (contrleur de DMA). Les bus sont en haute impdance. La ligne BA au niveau haut indique que les bus sont en haute impdance.
29
Broche d'initialisation RESET Un niveau bas sur cette broche entrane une rinitialisation complte du circuit. Consquences : l'instruction en cours est arrt le registre de pagination (DP) est mis zro les interruptions IRQ et FIRQ sont masques l'interrruption non masquable NMI est dsarme Pour tre active cette ligne doit tre maintenue un niveau bas durant un temps suffisamment long (plusieurs cycles d'horloge). schma adopt gnralement
Vcc Vcc Seuil Reset V 0 t min t V
Le P.C. est initialis avec le contenu des vecteurs d'initialisation qui se trouvent aux adresses $FFFE et $FFFF. Ce contenu reprsente l'adresse du dbut du programme qui sera excut par le microprocesseur.
15
$FFFE $FFFF
2 2
P.C.
30
la broche : HALT (Arrt du microprocesseur). Un niveau bas sur cette broche provoque l'arrt du microprocesseur (mais la fin de l'excution de l'instruction en cours). Il n'y a pas perte des donnes. (BA = BS = 1) Dans ce cas : les demandes d'interruption IRQ et FIRQ sont inhibes les demandes d'accs direct (DMA) la mmoire sont autorise. les demandes d'interruptions RESET et NMI sont prises en compte mais leur traitement est diffr. les broches d'interruption NMI (No Masquable Interrupt) IRQ (Interrupt Request) FIRQ (Fast Interrupt Request) Entres (actives sur un niveau bas) qui peuvent interrompre le fonctionnement normal du microprocesseur sur front descendant de Q. Entres d'horloge XTAL et EXTAL (Extension crystal)
EXTAL XTAL ou Horloge EXTAL XTAL
La frquence du quartz (horloge) est quatre fois la frquence du microprocesseur. Eout reprsente le signal d'horloge commun au systme. Il permet la synchronisation du microprocesseur avec la priphrie. Qout reprsente le signal d'horloge en quadrature avec Eout.
Les donnes sont lues ou crites sur le front descendant de Eout. Les adresses sont correctes partir du front montant de Qout.
31
Cette broche permet de suspendre l'utilisation des bus du microprocesseur, pour faire de l'accs direct ou du rafrachissement mmoire. fonctionnement : Pendant que Q est au niveau haut (si DMA/BREQ bas) cela entrane l'arrt du microprocesseur la fin du cycle en cours ... et non de l'instruction. (BA = BS = 1 ce qui veut dire que tous les bus sont en haute impdance). le circuit ayant gnr cette commande dispose de 15 cycles machines avant que le microprocesseur ne reprenne le contrle des bus.
32
TSC (Tree States Control). Cette broche a le mme rle que l'entre DMA/BREQ prcdente. Possibilit de faire du DMA afin de raliser des oprations de : rafraichissement partage de bus avec un autre microprocesseur LIC (Last Instruction Cycle). Cette broche de sortie est l'tat haut pendant le dernier cycle de chacune des instructions excutes par le microprocesseur. Le cycle qui suit ce signal est donc toujours un cycle de recherche de code opratoire d'une instruction.
AVMA (Advanced Valid Memory Access) (Contrle des ressources communes en multiprocesseur) C'est une broche de sortie qui signale un prochain accs au bus par le microprocesseur. Cette sortie au niveau haut signifie que le microprocesseur utilisera les bus au cours du cycle suivant. La nature prdictive de ce signal permet d'amliorer le fonctionnement d'un systme multiprocesseurs bus partag. Elle permet un contrle efficace des ressources communes d'un dispositif multiprocesseur.
33
BUSY : Occupation des bus : Sortie mise au niveau haut pendant les instructions du type : lecture, criture et excution du premier octet d'un oprande constitu de deux octets (une adresse par exemple). Dans un systme multiprocesseur, ce signal indique le besoin pour un microprocesseur de disposer des bus au cours du prochain cycle pour assurer l'intgrit de l'opration en cours. Cela vite l'adressage simultane d'une mme zone mmoire par 2 microprocesseurs.
Exemple d'application :
LIC BUSY AVMA LIC BUSY AVMA
TSC
TSC
LIC : fin d'excution de l'instruction BUSY : besoin du bus au prochein cycle AVMA : va utiliser les bus au prochain cycle
34
Les accumulateurs A, B ou D. Les registres A et B sont des accumulateurs. Ces registres sont interchangeables (mme rle/instruction) sauf pour les instructions ABX et DAA et les oprations sur 16 bits. Certaines instructions regroupent les registres A et B pour former un seul accumulateur D de 16 bits. Dans ce cas l'accumulateur A reprsente l'octet de poids fort. Les registres pointeurs les registres d'index (registres de 16 bits) Les registres d'index X et Y sont utiliss pour les modes d'adresse index. Les donnes - 16 bits- contenues dans ces registres servent de pointeur de donnes (adresses). Ces adresses "peuvent tre modifies" par une constante, prise comme valeur de dplacement (offset) qui permet alors de calculer une adresse effective. [le pivot + offset] cela revient [X] ou [Y] + le dplacement Le contenu de ces registres peut-tre incrment ou dcrment pour grer des donnes stockes sous forme de table.
les registres S et U (registres 16 bits). - le pointeur de pile S (Systme) est utilis automatiquement par le microprocesseur pour mmoriser l'tat de tous ces registres internes dans le cas o il doit excuter un sous programme (d'interruption ou non).
35
- le pointeur de pile U (Utilisateur) est gr exclusivement par le programmeur pour effectuer, avec facilit, le passage des paramtres entre programmes et sous programmes. (nanmoins, il peut-tre utilis pour sauvegarder un contexte mais cette fois, ce n'est pas automatique !) Les registre U et S peuvent faire office de pointeurs - registres d'index.
Gestion de ces pointeurs : Ces registres "pointent" toujours le haut de la zone mmoire qui leur est attribue. (haut dans le sens adresse la plus grande). On appelle cette zone une pile. Cette pile fonctionne en mode LIFO (Last In First Out) : Remarque : (Le fonctionnement type premier entr - premier sorti s'apparente plus au fonctionnement d'un pipeline appel pile FIFO (First In First Out)).
Le Compteur de Programme (PC) C'est le registre (16 bits) qui pointe la zone o se trouve les instructions devant tre excutes.
36
Le registre de codes condition (CCR) Ce registre donne tout instant l'tat des indicateurs (ou Flag) du microprocesseur. Il y a deux types d'indicateurs : Les indicateurs sur la nature des rsultats lis aux manipulations des donnes. Les indicateurs lis au fonctionnement en interruption. Prsentation des diffrents indicateurs CCRb0 (indicateur de retenue baptis : C) Indique l'existence d'une retenue lors d'une opration arithmtique effectue par l'ALU. CCRb1 (indicateur de dbordement baptis : V) Il est mis 1 si le rsultat en complment 2 d'une opration arithmtique dborde. CCRb2 (indicateur de rsultat nul baptis : Z) Il est mis 1 si le rsultat de l'opration est nul. Cet indicateur est affect par les instructions de chargement, de stockage, des oprations arithmtiques et logiques. CCRb3 (indicateur de rsultat ngatif baptis : N) Il recopie le bit de poids fort (MSB) de l'octet contenu dans le registre avec lequel on vient de travailler. (Un rsultat ngatif en complment 2 positionne ce flag 1). CCRb5 (indicateur de demi-retenue (Half curry) baptis : H). Il reprsente le bit de demi-retenue. Il est utilis par l'ALU comme indicateur de retenue entre les bits b3 et b4 (retenue du demi-octet le moins significatif) dans le cas d'une addition sur 8 bits. Ce flag est pris en compte dans l'instruction DAA pour raliser l'opration d'ajustement dcimal.1
1
Les bits CCRb4, CCRb6 et CCRb7 sont utiliss dans des cas trs particulier que l'on verra dans le chapitre "Interruption".
37
$0000
CCR
E F D
H I
N Z V C
CCR A B
SSSS - 12
{B
7 0
X Y S U PC DP
15 7 0 SSSS
38
Octet1 Octet2
Code opration
Octet1 Octet2
Octet1
Code opration
Octet2 Octet3
{ {
Ces instructions font rfrence des donnes ou a des adresses de diverses faons, ces rfrences tant les modes d'adressage dont dispose le microprocesseur.
Structure d'une instruction Octeti code opratoire ordre oprations : arithmtique logique transfert expression directe ou indirecte (modes d'adressage) facultatif adresse Octeti+1 post-octet Octeti+2 Octeti+3
code oprande
Dure d'une instruction L'excution complte d'une instruction n'est pas instantane! L'unit de mesure est la priode de l'horloge : T encore appel "Cycle Machine". ex: Frquence de l'horloge E= 1 MHz donc T = 1 ms.` La dure dpend de la complexit de l'instruction, son expression est :
extraction-excution
40
Registre d'Instructions
Dcodeur d'Instructions
logique de contrle mission de signaux vers les circuits R/W Registres Mmoires Priphriques Registre d'Adresses
extrieur
est
ncessaire
pour
raliser
La dure totale de l'excution d'une instruction est : m.TE +1.TE +1.TE soit (m+2)TE.
41
Le jeu d'Instructions
Les instructions sont rparties en groupes dtermins par leurs caractristiques. Classification
Instructions de traitement des donnes Instructions arithmtiques addition (DAA, ABX, ADC) multiplication (MUL) soustraction (SBC, SUB) Instructions logiques rotation droite et gauche (ROL, ROR) dcalage droite et gauche (ASR, LSR et ASL, LSL) les fonctions logiques de base (AND, OR, EOR) l'incrmentation/dcrmentation et complmentation (COM - NEG - NOP - INC - DEC - CLR) Instruction de transfert de donnes transferts internes entre registres (EXG - TFR) transferts externes avec la mmoire (LD - ST) Instructions de tests et de branchements instructions de tests sur un bit / un octet (BIT, TST) instruction de comparaison (CMP) instruction de branchement conditionnel (branchement les indicateurs du CCR sont actifs Instructions de branchement inconditionnel et de saut. (provoquent la rupture de la squence sans condition) saut relatif (BRA, BRN : 1 ou 2 octets) saut absolu (JMP : 2 octets)
42
si
Instructions dappel et de retour de sous-programme Appel : saut absolu (JSR) saut relatif (BSR) Retour : RTS le contenu (PC) sauvegard dans la pile est restitu dans le registre PC. Reprise du programme lendroit o il a t interrompu.
Instructions oprant sur les pointeurs U, S et X, Y. Load effective adress (in register) : LEA. Permet de manipuler des donnes sur 16 bits. Ces donnes reprsentent gnralement des adresses. Instructions oprant sur les pointeurs S et U Emplilement des registre dans la pile (PSH) Dpilement des registres de la pile (PUL) Aprs chaque sauvegarde/extraction, le pointeur est automatiquement dcrment/incrment de 1
Dfinition d'une pile : zone mmoire RAM gre par des pointeurs qui permettent de transfrer rapidement des donnes dans des cases mmoires selon un protocole bien tabli.
Ordre des actions : Toujours suivie de loprande qui permet de slectionner les registres :
b0 A CCR
43
Le microprocesseur 6809 possde 59 instructions de base. Combines avec le jeu des modes dadressage (9 au total), elles fournissent 1464 codes opratoires diffrents. (Pour le 6800 ou 6802, on avait 72 instructions de base et 193 codes opratoire)
ladressage inhrent ou implicite ladressage immdiat ladressage tendu ladressage tendu indirect ladressage direct ladressage par registre ladressage index direct ladressage index indirect ladressage relatif
Au moyen des signaux quil gnre sur le bus dadresses, le microprocesseur a la possibilit dadresser les divers circuits mmoires et interfaces, qui lui sont connects au travers des bus afin d'accder leur contenu.
44
Cette accs se traduit par une opration dadressage Cette opration peut se faire de plusieurs faons grce la prsence de diffrents modes dadressage.
Remarque : La puissance dun microprocesseur dpend de son jeu dinstructions mais aussi des ses modes dadressage.
45
Ladressage inhrent est utilis par les instructions qui agissent seulement sur les registres internes du microprocesseur. Ici, le code opratoire de linstruction contient toute linformation dadressage ncessaire (adresse source ou/et adresse destination).
46
Adressage par registre Le code opratoire est immdiatement suivi dans la mmoire dun octet qui dfinit un registre ou le jeu de registres devant tre utiliss par linstruction. Cet octet est appel post-octet. Le tableau ci-dessous prsente le codage de ce post-octet : b7 b4 Source Post-octet transfert/change code 0000 0001 0010 0011 0100 0101 1000 1001 1010 1011 Exemple : Registre D X Y U S PC A B CCR DP b3 b0 Destinataire
47
CCR E F H I N Z V C D X Y S U PC DP
15 7 0
{A B
1F 12
Adr Adr+1
Adr+2
48
Adressage immdiat
La donne se trouve immdiatement aprs le code opratoire de linstruction. La donne existe sous la forme de 1 ou 2 octets. (le code opratoire est immdiatement suivi en mmoire de la donne sur laquelle porte lopration) Cette adressage concerne tous les registres internes sauf le DP. Exemples : LDA #$35
CCR E F H I N Z V C D X Y S U PC
15
{A B
35
7 0
86 35
Adr Adr+1
DP
adr
7 0
Adr+2
LDY#$1997
CCR E F H I N Z V C D X Y S U PC
15
{A B
1997 adr
7 0
10 8E 19 97 Adr+4
DP
49
Adressage direct On exprime le lieu de l'action par l'expression de l'adresse effective. Le code oprande indique la partie basse de cette adresse. La partie haute de ladresse est fournie par le contenu du Registre Direct de Page (DP).
Intret : Ce mode ncessite moins de place mmoire (1 octet donc taille mmoire rduite) par consquent lexcution de linstruction est plus rapide. Remarque : Avec ce mode, la mmoire est dcoupe en 256 pages de 256 octets chacune. Ce mode est intressant dans le cadre des systmes dexploitation temps rel multitche, o on alloue chaque tche une page.
Exemples : LDA $97 Charge l'Accumulateur A avec le contenu dont l'adresse est forme par [DP] et l'oprande
CCR E F H I N Z V C D X Y S U PC DP
15 7
A B
37
7 0
96 97
Adr Adr+1
adr 19
0
Adr+2
37
1997
LDY $97 Charge le registre Y avec le contenu sur 16 bits dont les adresses sont [DP] et partie basse et partie basse+1.
50
CCR E F H I N Z V C D X Y S U PC DP
15 7
A B
10 9E 97
1960 adr 19
0
Adr+3
19 60
1997 1998
51
Adressage tendu(direct)
On exprime le lieu de l'action par l'expression de l'adresse effective. Le contenu des deux octets qui suivent immdiatement le code opratoire spcifi reprsente ladresse (16bits) de la donne. L'instruction occupe de 3 4 octets. exemples : LDA $1997 Charge laccumulateur A avec le contenu de ladresse 1997.
CCR E F H I N Z V C D X Y S U PC DP
15
A B
37
7 0
B6 19 97
adr
7 0
Adr+3 37 1997
52
CCR E F H I N Z V C D X Y S U PC
15
A B
10 BE 19 97
1960 adr
7 0
DP
Adr+4
19 60
1997 1998
53
Adressage tendu indirect Identique au mode dadressage tendu mais on accde la donne en passant par une adresse intermdiaire spcifie aprs le code opratoire. Les deux octets qui suivent le code opratoire pointent une adresse dont le contenu reprsente ladresse de la donne recherche. Le code opratoire est form de deux octets - le post-octet est toujours $9F. Exemples : LDA [$1997] Chargement de laccumulateur A avec le contenu dont ladresse se trouve en 1997-1998.
CCR E F H I N Z V C D X Y S U PC DP
15 7 0
{A B
37
7 0
37
1960
A6 9F 19 97
adr
Adr+4
19 60
1997 1998
LDY [$1997] Chargement du registre Y avec le contenu dont l'adresse (partie haute) se trouve en $1997.
CCR E F H I N Z V C D X Y S U PC
15
{A B
37 60
1960 1961
10 AE 9F 19 97
3760 adr
7 0
DP
Adr+4
19 60
1997 1998
54
Adressage index
Deux possibilits : adressage index direct et indirect Dans ce mode, les registres pointeurs (X, Y, U, S et PC) sont utiliss pour effectuer le calcul de ladresse effective de la donne recherche. Il existe 5 types dadressage index. l'adressage index avec dplacement nul l'adressage index avec dplacement constant (non nul). l'adressage index avec dplacement accumulateur l'adressage index avec auto-incrmentation/dcrmentation l'adressage index relatif au Compteur Programme (PC)
Loctet qui suit le code opratoire (le post-octet) spcifie : la nature de lindexation le type dadressage (direct ou indirect) le registre pointeur utilis. (le tableau ci-joint montre le format de ce post-octet.)
Constitution du post-octet. b7=1 b4 : indicateur d'indirection o non b4 = 1 : mode indirect b4 = 0 : mode direct b7=0 b4 reprsente le signe
55
b5 et b6 reprsente le registre concern b0,b1,b2 et b3 indiquent le mode dadressage. Remarquer loctet $9F dj vu dans le mode dadressage indirect.
56
Le registre pointeur contient ladresse effectivee (A.E.) de la donne. Un chargement pralable du registre est impratif.
A B
37
7 0
A6 84
1997
DP
adr
7 0
Adr+1
37
1997
57
Ladresse effective de la donne est la somme du dplacement (constante en complment deux) et du contenu du registre nomm pris comme base.
Syntaxe :
Un code opratoire + un post-octet + un oprande.
Trois formes sont possibles selon l'expression de la valeur de la constante qui suit le post-octet. Le dplacement s'exprime sur 4 bits + un bit de signe. Le dplacement est compris dans l'intervalle [-161O 151O] Le post-octet suffis. Exemple : LDA -2,X Code A6 1E soit 0 00 1 1110
Le dplacement s'exprime sur 7 bits + un bit de signe. Le dplacement est compris dans l'intervalle [-1281O 1271O] Un octet supplmentaire aprs le post-octet est ncessaire. Exemple : LDA 53,X Code A6 88 soit 1 00 0 1000 35 (5316)
Le dplacement est compris dans l'intervalle [-327681O +327671O] Deux octets supplmentaires aprs le post-octet sont ncessaires. Exemple : LDA $997,X Code A6 89 soit 1 00 0 1001 09 97
59
Ce mode est semblable au mode prcdent except que la valeur du dplacement (exprim en complment 2) se trouve dans un accumulateur afin dtre ajout au contenu du registre pointeur nomm pour former lA.E. de la donne.
Les contenus de laccumulateur et du pointeur ne sont pas modifis par cette addition.
Intret la valeur du dplacement est calcule par le programme en cours dexcution, en fonction des vnements.
60
Exemples :
LDA B,X
Chargement du registre A avec le contenu se trouvant l'adresse exprime par la somme des contenus des registres B et X.
CCR E F H I N Z V C D X Y S U PC DP
15 7
A B
00 37
7
A6 85
0
1960
+
adr
0
adr+2
00
1997
LDX D,Y
Charge le registre X avec le contenu se trouvant l'adresse exprime par la somme des contenus des registres D et X ainsi que D+1 et X.
CCR E F H I N Z V C D X Y S U PC DP
15 7
A B
09 97
7
AE AB
0
+
adr+2 20 00 1997 1998
61
62
Le registre concern contient ladresse de la donne. En plus de l'utilisation en mode index avec dplacement nul, il est possible de modifier le contenu du registre selon le mcanisme suivant : La pr-dcrmentation Le pointeur est dcrement de un ou deux avant utilisation. La post-incrmentation Le pointeur est incrment de un ou de deux aprs utilisation. Dans tous les cas, le contenu du registre est modifi. Intret : Une incrmentation/dcrmentation permet de grer des tables de donnes 8 bits (octets). Deux incrmentations/dcrmentations permettent de grer des tables de donnes de 16 bits (mots ou adresses) Les aspects pr-dcrementation et post-incrmentation sont trs utiles pour crer des piles logicielles supplmentaires dont le comportement est identique celui des piles S et U (hardware) (gestion efficace de blocs-mmoire organiss en donnes 8 bits ou 16 bits)
63
Exemples :
LDA 0,-X
Code
A6 82 soit 1 00 0 0010
Chargement de l'accumulateur A avec le contenu se trouvant l'adresse exprime par le contenu de X dcrment de 1.
LDY 0,--X
Code
10 AE 83 soit 1 00 0 0011
Chargement du registre Y avec le contenu se trouvant l'adresse exprime par le contenu de X dcrment deux fois.
LDA 0,X+
Code
A6 80 soit 1 00 0 0000
Chargement de l'accumulateur A avec le contenu se trouvant l'adresse exprime par le contenu de X. Aprs le chargement, le contenu de X est incrment de 1.
LDD 0,X++
Code
EC 81 soit 1 00 0 0001
64
Chargement de l'accumulateur D avec le contenu se trouvant l'adresse exprime par le contenu de X. Aprs le chargement, le contenu de X est incrment deux fois.
65
Un programme qui contient des instructions exprimes dans le mode tendu ou direct, faisant rfrence des adresses situes lintrieur de sa zone dimplantation en mmoire ne pourra pas tre excut si lon transfre son code objet dans une autre zone mmoire. On dit, dans ce cas, que le programme nest pas translatable. Cet inconvnient peut-tre vit en utilisant le mode dadressage index avec dpacement relatif au PC. Syntaxe : code opratoire destination-(adr+4), PC
l'expression de "destination-(adr+4)" est code en complment 2. Exemples : Chargement du registre A avec le contenu se trouvant l'adresse $1997. Code $1000 adr adr+1 adr+2 adr+3 A6 8D 09 93
soit 1 00 0 1101
Justification : Si adr=$1000 alors destination ($1997) est gale $1997-$1004 soit $993. Il faut tenir compte de la longueur de l'instruction puisque le PC pointe toujours l'instruction suivante. LDA $FO,PC
66
chargement de laccumulateur A avec le contenu mmoire dont ladresse est la valeur de PC + $FO. Code adr adr+1 adr+2 A6 8C F0
La donne se trouve l'adresse (adr+3)-$10 donc en amont du programme. Avantage du mode index relatif au PC : Si lensemble du programme est charg une autre adresse, le mme code objet permet toujours de retrouver la donne dans le corps du programme et dobtenir ainsi une excution correcte. Le mme traitement appliqu lensemble des instructions du programme, le rendra entirement translable et totalement indpendant de son implantation physique dans la mmoire. Les adresses des donnes tant toutes refrences par rapport la valeur relle du PC au moment de lexcution.
Illustration :
LEAX ETIQ, PC Chargement du registre X avec le contenu dont l'adresse est exprime par la valeur issue de l'opration ETIQ-(adr+4).
67
CCR E F H I N Z V C D X Y S U PC
15
A B
1122
30 8D 00 11
adr DP
7 0
Dans ce mode, lAdresse Effective est contenue lemplacement indiqu par le contenu du registre dindex utilis auquel on additionne le dplacement. Ici, lA.E. transite par une adresse intermdiaire. Syntaxe : A.E(H)={[Registre] + expression du dplacement}. A.E(L)={[Registre] + expression du dplacement+1}. Tous les modes dadressage index peuvent travailler en indirection sauf les modes : auto-incrmentation/dcrmentation par 1 dplacement constant cod sur 5 bits Illustration : LDA [$960,X]
68
Chargement de A avec le contenu mmoire dont ladresse est le contenu de [X+960, X +961].
CCR E F H I N Z V C D X Y S U PC
15
A B
37
7 0
1OOO
A6 99 09 60
adr DP
7 0
37
1997
69
Quelques exemples : 1- Adressage index indirect avec dplacement nul. LDA [0,X] Chargement de A avec le contenu mmoire dont ladresse est [X, X +1].
2- Adressage index indirect avec dplacement constant. LDA [$35,X] Chargement de A avec le contenu mmoire dont ladresse est [X+$35, X +$36].
3- Adressage index indirect avec dplacement accumulateur. Le dplacement exprim en complment deux est contenu dans A, B ou D. LDU [D, Y] Chargement du registre U avec le contenu mmoire dont ladresse est [Y+D] et [Y+D+1]
indirect
avec
double
auto-
Addition du contenu de A et du contenu-mmoire dont ladresse est [U] et [U+1], suivi de deux incrmentations.
70
5- Adressage index indirect relatif au compteur programme. Les dplacements sont cods sur 8 ou 16 bits en complment 2. LDA [$1997, PC] Chargement de A avec la valeur dont ladresse est la valeur issue de l'opration PC + $1997. Adressage relatif
Constitution
code opratoire code oprande adr. relatif court adr. relatif long 1 octet 1 octet + $10 1 octet 2 octets
Le code opratoire reprsente le test et le type de branchement (court ou long : $10) raliser. Le code oprande reprsente le dplacement sign qui est ajout au contenu du PC Dans le mode d'adressage relatif court, le dplacement est exprim sur un octet en complment deux -128 dplacement +127 Dans le mode d'adressage relatif long, le dplacement est exprim sur deux octets en complment deux -32768 dplacement +32767
71
Dans la syntaxe assembleur il faut rajouter un (L) comme prfixe dans le cas d'un saut long.
72
Quelques exemples :
Adressage relatif court avec un dplacement positif. BEQ LOOP branchement si Z=1
CCR E F H I N 1 V C D X Y S U PC DP
15 7 0
A B
27 33
7 0
adr
Adr+2
op
$1997
?
CCR E F H I N 1 V C D X Y S U PC DP
15 7 0
A B
10 26 16 7B
adr
Adr+4 op $3010
73
74
Principe de fonctionnement
Cellules mmoires
Compteur ordinal
code opratoire
Registre d'Instruction
Dcodage
Logique de contrle
Squenceur de commandes
Excution
75
Fonctionnement squentiel
La ralisation de toute instruction s'effectue selon le cycle extractionexcution qui se dcompose comme suit : 1er temps : Phase d'extraction Recherche de linstruction suivi du dcodage
2me temps : Phase d'excution Excution du code opratoire Cette tape est plus ou moins longue suivant la complexit de l'instruction.
Chaque opration lmentaire constituant ce cycle est valide par un signal dhorloge.
Illustration :
76
Excution
cycle machine dpot de l'adresse puis stockage du code dans le R.I. dcodage du code
77
Simulations
Premier exemple : $0000 $0002 $0004 Deuxime exemple : $0000 $0003 $0006 $0009 $000C $000F $0012 Commentaire :
#$10 #$29 12
86 8B
10 29
# 3 3 3 3 3 3 2
~ 5 5 5 5 5 5 3
PC H L 00 0C
00
15
00 00
0A 0B
Son architecture et ses diffrents modes dadressage permettent daborder des concepts logiciels tels que : La gnration de programmes translatales, rentrant et stucturs.
Prsentation de ces concepts 1- Dfinition d'un programme translatable Ce type de programme fonctionne quelque soit ladresse laquelle il est implant en mmoire. Possible grce aux modes dadressage relatif (BSR, BRA) et index par rapport au PC (LDA valeur, PC). L'avantage de ce mode de programme est qu'il est utilisable dans n'importe quelle application. Le principe du programme relogeable existe aussi. Dans ce cas, ( la diffrence du cas prcdent) les adresses relatives sont transformes en adresses absolues aprs dition des liens.
2- Dfinition d'un programme rentrant. Un programme rentrant est un programme qui peut-tre utilis nimporte quel niveau de priorit (Pour cela il doit tre interruptible).
79
Dans ce cas, le programme dinterruption peut utiliser la mme squence de programme que celle quil vient dinterrompre. Il ne doit pas perturber les informations et rsultats de la tche interrompue. ncessit dutiliser deux zones de sauvegarde des donnes. Le concept de rentrance est possible avec un microprocesseur possdant plusieurs pointeurs de pile pour grer plusieurs zones de sauvegarde. Rendu possible avec l'existence des instructions de manipulation de pile hardware PSH et PUL et logicielle STA, -X et LDA, X+.
Equivalence : LDX STX LDA STA ,U++ ,--U ,U+ ,-U quivalent quivalent quivalent quivalent PULU PSHU PULU PSHU X X A A
Illustration :
80
Appel procdure
Programme d'interruption
Sauvegarde du contexte dans la pile S
81
Les langages de programmation Un langage est un ensemble de rgles ou commandes utilises par un programmeur afin de raliser un programme crit tout d'abord sous la forme d'un algorithme et ensuite traduit par un organigramme. Le langage volu Les critres pris en compte lors du choix dun langage sont : le temps de programmation la maintenance la transportabilit Un programme crit dans un langage volu donn peut tre implant "facilement" sur diverses machines sans rcriture. (compilateurs appropris) Un programme crit dans un langage volu est traduit en binaire de deux manires diffrentes. En faisant appel soit un interprteur soit un compilateur. Tous deux sont des progammes puissants de traduction. Un interprteur agit pendant lexcution du programme. Chaque ligne du programme est traduite en instruction binaire juste avant son excution. A mesure quune ligne est excute, la traduction de la ligne suivante commence. Un compilateur traduit dabord le programme en langage hexadcimal et ensuite le code gnr est sauvegard sous la forme dun nouveau programme binaire. (ressemble beaucoup un assembleur). Le compilateur prsente linconvnient par rapport linterprteur, de ncessit beaucoup plus de mmoire mais par contre il est beaucoup plus rapide lexcution.
82
Lapprentissage dun langage volu rapporte strictement rien en ce qui concerne la connaissance de larchitecture fondamentale dun microprocesseur. Par contre la programmation langage machine ou assembleur ncessite une bonne connaissance de larchitecture du microprocesseur. Quelles sont les raisons pour lesquelles on choisit un langage moins volu? Deux raisons cela : Gain en place mmoire : Le langage volu ncessite pour effectuer la mme tche beaucoup plus dinstructions machines. Exemple : une simple instruction du type WRITELN peut faire appel une centaine dinstruction. Ainsi plus despace-mmoire est ncessaire. Gain de temps lexcution : Plus dinstructions de base implique un temps dexcution plus lent moins de disposer de microprocesseur puissant (rapide) avec un grand champ mmoire.
Le langage dassemblage Ce langage est lintermdiaire entre un langage volu comme C ou Pascal et le langage machine. Le langage dassemblage est li au microprocesseur.
83
Chaque processeur possde son propre ensemble dinstructions Ses avantages : minimise le code meilleur contrle sur le matriel. [bien adapt lcriture des routines dentres/sorties] Lassembleur est un petit compilateur ! Ce langage sappuie sur labrviation de terme anglais pour chaque instruction. Exemple de la fonction de remise zro (CLEAR) : CLR
84
Vocabulaire Le langage dassemblage C'est un langage constitu dinstructions et de pseudo-instructions. Un programme crit dans ce type de langage est une suite de lignes symboliques crites dans un ordre logique.
Lassembleur Cest un programme de traduction qui traite chaque ligne du programme source pour fournir le code machine. Il dtecte les erreurs. Le rsultat de son travail sappelle le programme objet.
Macro-assembleur Cest un assembleur qui permet de traiter des macro-instructions : ensemble dinstructions regroupes sous formes de fonction.
Cross-assembleur Cest un assembleur qui permet de dvelopper en langage dassemblage, une application utilisant un microprocesseur donn laide dun systme possdant un microprocesseur diffrent. Le systme, dit hte, engendre du code machine pour le microprocesseur cible. Intressant pour les petits systmes car dans ce cas, on bnficie des avantages dun systme plus important : Editeur, Systme dexploitation, etc...
Dsassembleur :
85
C'est un logiciel qui travaille linverse de lassembleur. A partir dun programme machine, il construit le langage mnmonique. Exemple : $86 traduction de LoaD accumulateur A
86
Lassembleur 6809 Le langage dassemblage est un langage de programmation utilise dans les systmes de dveloppement, dispositifs daide lcriture de programmes. Il permet de traduire un programme source crit en langage symbolique (ou mnmonique) en un langage binaire. Cette opration appele "Assemblage" est ralise par un programme appropri appel "Assembleur". Il gnre directement un programme excutable par le microprocesseur encore appel "programme objet".
Comme tout langage, ce dernier possde une syntaxe et un vocabulaire propres quil est indispensable de connatre afin dtablir le programme source.
Syntaxe du langage assembleur (rgles dcriture) Chaque ligne dinstruction du programme comporte quatre parties appeles "champs". Chaque champ est spar par un blanc (espace). Illustration :
Etiquette
Code
Code
Commentaire
87
88
Etiquette Ce champ nest pas obligatoire. Une tiquette est un symbole dau plus 6 caractres alpha-numriques, commenant obligatoirement par une lettre de lalphabet. Dans le cas, o le champ tiquette est vide au moins un blanc doit prcder le champ suivant. Si le 1er caractre de la ligne est une *, la ligne est alors considre comme un commentaire Le rle de ltiquette est de permettre de rprer la position dune instruction dans le programme.
Le champ opration Il contient soit un code mnmonique de lopration effectuer soit une directive dassemblage.
Le champ oprande Il complte le champ opration et contient la "donne" ncessaire lexcution de linstruction. Sa syntaxe est varie et dpend du mode dadressage attribu linstruction. On trouve : des tiquettes (des noms) des symboles (nom de registre) des nombres des expressions : Combinaison des 3 lments ci dessus.
89
Les nombres peuvent tre reprsents dans diffrentes bases dcimale, octale(@), hexadcimale ($) et binaire (%). Lidentificateur de la base seffectue grce un suffixe ou un prfixe dans le cas de certain assembleur (H). Sans indication particulire, un nombre est interprt comme un dcimal. Les expressions Elles se composent dune suite de nombres et de symboles spars par des oprateurs logiques, arithmtiques et des parenthses. Elles servent spcifier une valeur selon les rgles de la logique et de larithmtique. Le champ commentaire facultatif, il permet de documenter le programme. Tous les caractres dcriture disponibles dans l'diteur sont utilisables.
90
Une directive dassemblage (ou pseudo-instruction) est une commande que le programmeur utilise pour donner des directives lassembleur et qui agit sur le processus dassemblage. On distingue 5 catgories de directive. Affectation de symboles : EQU et SET Gestion de lespace mmoire : ORG et RMB Inscription de constantes en mmoire : FCB, FDB et FCC Assistance la programmation : END et OPT Prsentation des listings : TITLE et PAGE
EQU : affectation dune valeur un symbole ou tiquette Syntaxe : Symbole EQU Expression
Rle : Cette directive affecte au symbole situ dans le champ tiquette la valeur (8 ou 16 bits) de lexpression place dans le champ oprande. Les symboles utiliss avec EQU ne peuvent pas tre redfinis dans la suite du programme.
SET : affectation temporaire dune valeur un symbole. Rle : SET est semblable EQU except que laffectation est temporaire. Les symboles dfinis avec cette directive peuvent tre nouveau dfinis par la suite dans le mme programme.
91
Exemples : ARG ARG ARG SET SET SET $2 ARG*$2 ARG*ARG ARG=$2 ARG=$4 ARG=$10(1610)
Rle : Dfinition dune adresse dorigine. Charge le PC la valeur spcifie par lexpression situe dans le champ oprande. Remarque : Plusieurs ORG peuvent-tre utiliss dans un mme programme source. On stucture ainsi lespace mmoire en blocs : le programme principal les sous programmes la gestion des interfaces Chaque bloc est initialis par un ORG.
RMB : Reserve Memory Bytes (Rservation doctets en mmoire) Syntaxe : Symbole RMB Expression
Rle : Provoque lors de lassemblage un "saut" du PC, dun nombre doctets gal la valeur de lexpression. Le but tant de rserver une zone mmoire pour un usage particulier.
FCB : Form Constant Byte (dfinition dune constante dun octet) Syntaxe : Symbole FCB expr1, expr2...
92
Rle : Inscrit la valeur exprime sur 8 bits des expression du champ oprande dans les cases mmoires dfinies par la valeur du PC. Pour chaque criture en moire : PC = PC+1 Remarque : Les expressions peuvent tre numriques ou alphanumriques. Le symbole ' plac devant le caractre, le dsigne comme tant alphabtique, dans ce cas, le code ASCII est mis en mmoire. Exemples : ORG $4000 $4000 01 DATA FCB 1,$62+$48,'A,'B AA FCB $FF 41 FCB '4,$4 42 FCB DIX+2 FF DIX EQU $A 34 LDX DATA 04 END 0C 8E 40 00
FDB : Form Double Byte Constant (dfinition dune constante de deux octets) Syntaxe : Symbole FDB Exp1, Exp2,...
Rle : Identique FCB mais cette fois, lexpression (valeur numrique et symbole) reprsente une valeur sur 16 bits. le PC est incrment de 2 pour chaque mot crit. Exemples : DATA ORG FDB FDB $4000 $1997,$5432+$ABCD 'A,'B $4000 19 97 FF 00 05 00
93
DIX FIN
FF 00 41 00 42 00 35
0A 00 10 00 04 00 00
94
FCC : Forme Constant Character string (dfinition dune constante chane de caractres Syntaxe : Symbole FCC dlimiteur chane dlimiteur
Rle : Inscrit en mmoire le code ASCII des caractres situs dans le champ oprande entre les dlimiteurs. Et PC = PC+1 pour chaque caractre inscrit. RemarqueS : Les deux dlimiteurs doivent tre identiques et peuvent tre n'importe lequel des caractres imprimables (on prend en gnral //). L'expression FCC /A/ est quivalent FCB 'A Illustration :
MESS
$2000
46 49 4E 4C 55 4E 44
49 4D 41 52 44 49 35
Rle : Cette directive marque la limite du programme source. Les lignes situes aprs cette directive sont ignores par l'assembleur.
95
Rle : Fait avancer le papier de l'imprimante au dbut de la page suivante. NAME : nom du programme Syntaxe : NAME PMAK
Rle : Cette directive permet de donner un nom au programme qui apparait en tte de page.
Rle : Cette directive fournit des complments d'informations lors de l'assemblage. Les options sont crites dans le champ oprande et sont spares par des virgules. Diffrentes options : ABS : ABSolu, le programme est crit avec un adressage absolu. REL : RELogeable, le programme est crit avec un adressage relatif. CRE : permet d'obtenir la table dite des rfrences croises. L : demande l'impression du listing aprs opration d'assemblage termin.
96
Lopration dassemblage
Elle seffectue gnralement en deux tapes (2 passes). 1re passe : Consiste en une lecture de lensemble du programme source. Au cours de cette phase, 3 analyses sont effectues : Analyse lexicographique : Compare le code opratoire une table interne (fichier comprenant les codes). Analyse syntaxique : Cette analyse dtecte : les tiquettes manquantes les codes opratoires errons les oprandes manquants
Analyse smantique : Cette analyse permet de dire si une ligne syntaxiquement correcte un sens. Dtecte un symbole non dfini par ailleurs. Lassembleur construit la table des symboles employs. Il regroupe tous les symboles dfinis par le programmeur en leur donnant une valeur chacun deux (Cration de la table des rfrences croiss). Il gnre un code intermdiaire qui servira au second passage. Les directives dassemblage sont galement interprtes. 2me passe :
97
Lassembleur gnre le code objet en tenant compte des adresses et des donnes relles qui figurent dans la table des symboles. 3me passe : Cette phase fournit le listing avec son code objet.
98
OPT
ABS
Dfinition des variables DEBUT EQU $4000 TIRQ EQU $5000 TFIRQ EQU $6000 MEM EQU $2000 PIA EQU $EF20 Rservation des cases mmoires ORG MEM MEM1 RMB 1 MEM2 RMB 2 PILE RMB 100 PPILE EQU * Rservation des ports ORG PIA DDRA RMB 1 CRA RMB 1 Programme principal ORG DEBUT LDS #PPILE " " " " BRA * Traitement des interruptions IRQ ORG TIRQ " " RTI Traitement des interruptions FIRQ ORG TFIRQ " "
99
RTI Initialisation des vecteurs d'interruption ORG $FFF6 FDB TFIRQ FDB TIRQ FDB TSWI FDB TNMI FDB DEBUT END
100
Environnement :
Assembleur
Le systme dexploitation se charge en RAM aprs la commande g (ou MDOS) Toutes commandes KDOS doit comprendre la source et la destination du fichier concern (par dfaut 0). Deux lecteurs de disquette : disque 1 : On utilise le label 0, on y trouve la disquette systme, toujours protge en criture. disque 2 : avec le label 1, on y trouve la disquette des programmes utilisateurs : fichier.ASM et fichier.LO Exemples de commande systme : CAT (pour catalogue)
101
102
Q quivalent S(ave) : sauvegarde du programme lendroit prcis par la commande BUILD. Q (une deuxime fois) sortie de lditeur. Retour KDOS.
Une fois charg, on se trouve automatiquement dans le moniteur. Excution du programme excutable : G $adr
103
La programmation stucture
Ce type de concept facilite la mise au point et la maintenance dun programmme. Une bonne comprhension du programme est possible dans le cas o le programme est crit comme une suite de modules simples. Avec pour chaque module une entre et une sortie. Il peut tre vu comme un sous-programme ou comme une macroinstruction. Ainsi le programme principal apparat comme une suite dappels de sousprogramme dans lequel il ny a pas de rupture de squence ni saut systmatique.
104
module 2 entres
105
test A
Transformation
proc C
Avec Proc C : Ecriture du programme en langage pascal : Dfinition des procdures : Procdure PROC_A ; Procdure PROC_B ; Procdure PROC_C Le programme Begin if test_A then if test_C then begin BLOC PROC_C end else PROC_A else if test B then PROC_C else begin PROC_B
106
107
Stucture conditionnelle de base Organigramme de la stucture "Si alors sinon" [if then, else]
dpart
test ? S1 S2
fin
end if
non
fin
Une variante :
excuter S, jusqu C
[do until]
108
dpart
oui
Structure du case of :
dpart
fin
Avantages de la programmation structure : Squences des oprations simples Nombre de structures limit Terminologie standard Facilit de lecture
109
(description possible des organigrammes) Accrot la productivit du programmeur On dmontre que le jeu donn des structures est complet c.a.d que tout programme peut-tre rdig laide des structures de base vues ci-dessus.
Inconvnients : Excution lente et ncessit de beaucoup de mmoire. Obligation dune srie de boucles emboites.
bibliographie : Z80 (627) Programmation en langage assembleur - dition Radio SECF de Laure A. Levent hal
110
Le fonctionnement en interruption
Dfinition
Une interruption est une procdure qui permet de suspendre l'excution d'un programme au profit d'un autre, avec la possibilit de reprendre l'excution du programme initial l o il avait t suspendu.
Interruptions "matrielles"
Le microprocesseur est capable de rpondre des sollicitations extrieures. Ainsi peut-il traiter des informations en "temps rel". Pour cela, le microprocesseur est "coupl" au monde extrieur par des lignes sur lesquelles s'effectue, de faon indterministe, un change de messages sous forme de signaux logiques ! A partir des sollicitations extrieures, le microprocesseur doit changer "d'tat" en fonction des priorits relatives de l'opration en cours et de celle qui est demande. Selon le cas, il interrompt ou non le droulement "normal" du programme. Contrainte : Si la demande est prise en compte, le microprocesseur doit tre capable de traiter rapidement cette demande externe.
111
Le microprocesseur 6809 possde pour cela quatre lignes, baptises "entre d'interruption" matrielles qui sont par ordre de priorit : RESET NMI FIRQ IRQ R-initialisation du microprocesseur. Non Masquable Interrupt. Fast Interrupt Request. Interrupt Request.
a- Fonction du flag I
+ Masque concernant l'interruption IRQ.
Lorsque ce flag est mis 1, le microprocesseur ne prend pas en compte les demandes d'interruption arrivant sur le ligne IRQ. Avec ce type d'interruption, le contexte total microprocesseur (12 octets ) est sauvegard sur la pile S. du
112
b- Fonction du flag F + Masque concernant l'interruption FIRQ. Tableau Etat du flag F F=1 F=0 FIRQ Inhibe Autorise
Lorsque ce flag est mis 1, le microprocesseur ne prend pas en compte les demandes d'interruption arrivant sur le ligne FIRQ. Ici, le contexte partiel du microprocesseur (3 octets) est sauvegard sur la pile S. (seuls les contenus des registres PC et CCR sont concerns.
!
On peut forcer l'tat des deux bits l'aide des instructions suivantes : ANDCC d'une part et ORCC d'autre part ! Tableau Instruction
ANDCC #$EF ORCC #$10
Etat du flag
CCRb4=0 CCRb4=1 CCRb6=0 CCRb6=1
c- Fonction du flag E
113
Ce flag est positionn par le microprocesseur afin d'indiquer le type de sauvegarde devant tre ralise (partielle ou complte). Il fait office en quelque sorte de mmoire interne. Tableau Etat du flag E E=1 E=0 Etat de la sauvegarde complte partielle
Ce flag est utilis (sous forme de test), systmatiquement lors de l'instruction RTI, par le microprocesseur, pour dterminer quelle action mener afin de revenir proprement dans le programme suspendu ( nombre de registres a dpils).
114
Interruptions "logicielles
Hormis les demandes d'interruptions matrielles, il existe d'autres causes d'interruption de programme. Ce sont les interruption "soft". Elles se traduisent par des instructions par entire que l'on place dans les programmes. Elles reprsentent des vnement "dterministes".
On en dnombre trois, qui sont : SWI SWI2 SWI3 (SoftWare Interrupt) (SoftWare Interrupt n2) (SoftWare Interrupt n3)
115
Quelques remarques importantes Les lignes NMI, FIRQ, IRQ et RESET ainsi que l'instruction SWI positionnent automatiquement le flag CCRb4 1 (masquage de l'IRQ). Les lignes NMI, FIRQ et RESET ainsi que l'instruction SWI positionnent automatiquement le flag CCRb6 1 (masquage de la FIRQ). Rien n'empche de repositionner 0 ces flags si on le souhaite!
116
Les bits I et F tant positionns 1 lors de l'excution d'un programme d'interruption, il est possible, nanmoins d'autoriser la prise en compte de nouvelles interruptions en les repositionnant O. Illustration :
Programme principal ORG DEBUT Programme d'interruption (premier niveau)
I=1 et E=1 IRQ ANDCC #$EF
t1
t2
ti
BRA * END
RTI
RTI
SP t2
{ {
CCR
CCR
SP t1
SP t0
117
Tableau rcapitulatif
Interruptions
Nature Niveaux de priorit 1 Entre Instruc- Vecteur tion RESET $FFFE $FFFF 2 3 4 5 6 6 FIRQ IRQ SWI2 SWI3 NMI SWI $FFFC $FFFD $FFFA $FFFB $FFF6 $FFF7 $FFF8 $FFF9 $FFF4 $FFF5 $FFF2 $FFF3 Logicielle Logicielle Rapide et masquable Masquable Logicielle Non masquable Totale E=1 Totale E=1 Partielle E=0 Totale E=1 Totale E=1 Totale E=1 Aucun Aucun Aucun I=1 I=F=1 de l'interruption Initialisation Sauvegarde sur la pile Aucune Masquage ralise NMI I=F=1 I=F=1
118
Instructions d'interruption
Instruction
Dpilement
CWAI
SYNC
RTI
119
Le traitement dune interruption se fait selon un protocole bien tabli que nous allons dtaill. Ds la mise au niveau bas de la broche adhoc, ou bien ds la rencontre de linstruction SWI, le microprocesseur entame une "procdure implicite", programme dans la silice, dont les organigrammes respectifs sont reprsents plus loin. On remarque que chaque organigramme se termine par un chargement du PC avec la valeur contenue dans le vecteur de linterruption demande. Ceci provoque un saut ladresse correspondante. Dans un systme simple et fig, o la demande dinterruption ne peut provenir que dune seule source, et o lon nenvisage quun seul programme dinterruption, il est possible dimplanter directement le dbut de ce programme ladresse contenue dans le vecteur dinterruption. La sortie de la procdure implicite aboutira directement lexcution du programme. Dans ce cas gnral o plusieurs "utilisateurs" peuvent demander linterruption et o un "utilisateur" au moins veut pouvoir choisir entre plusieurs programmes dinterruption diffrents, la "procdure implicite" doit aboutir dabord un programme de gestion de linterruption. Le programme de gestion dune interruption IRQ par exemple, doit assurer les oprations suivantes :
120
dabord identifier le demandeur faire respecter une hirarchie dans les demandeurs lorsquil y a des appels simultans. La priorit entre demandes simultanes de diffrentes interruptions est ralise en partie par le jeu des masques. brancher le microprocesseur (par un changement du PC) au programme dinterruption souhait par le demandeur.
121
Mode inconditionnel
Dans ce cas, le transfert est excut quelque soit ltat du priphrique. Ceci suppose que ce dernier est toujours prt envoyer la donne ou disponible pour recevoir celle-ci. (Possible pour des priphriques rapides).
Mode conditionnel
Dans ce cas, au transfert sajoute des changes de signaux de commande entre un interface (le PIA) et le priphrique. ceci afin dassurer un minimum de synchronisation. (technique de la poigne de main ou handshaking).
Principes
Avant deffectuer un transfert, le microprocesseur teste ltat du priphrique et ne ralise lopration quaprs stre assur de sa diponibilit.
122
Ltat du priphrique (prt ou occup, registre de rception plein ou registre de transmission vide...) est gnralement indiqu par un bit dtat appel flag. Dans le cas o il y a beaucoup dinterfaces il excute des boucles dattente sur des vnements extrieurs en passant son temps tester les indicateurs dtat de chacun (technique du sondage ou polling). Consquence de cette technique le microprocesseur immobilis dans cette tche. Trs pnalisant ! Le remde... Le mode interruptible Dans ce cas, les transferts dE/S seffectuent la demande du priphrique. (Exemple du clavier : le microprocesseur ne peut pas savoir quel moment
lutilisateur appuyera sur une touche du clavier).
est
Celui-ci envoie par lintermdiaire du circuit dinterface une demande dinterruption au microprocesseur. Si celle-ci nest pas masque ou inhibe, le microprocesseur termine lexcution de linstruction en cours, puis se branche dans le programme dIT grce au vecteur dinterruption. Cette mthode permet de dcharger le microprocesseur des oprations de polling. Avantage : Les priphriques peuvent fonctionner leur propre vitesse sans pnaliser pour autant le microprocesseur.
123
Questions :
Que faire sil y a plusieurs priphriques susceptibles de faire des demandes dIT? Dans ce cas, il faut pouvoir identifier le priphrique demandeur .
Trois possibilits :
2- On runit les diffrentes sorties de demande dinterruption avec un cblage en "ou cble". Cela oblige alors de faire une recherche du demandeur par scrutation.
3- On utilise des circuits spciaux qui rpondent au mieux ce problme avec prise en compte des priorits au niveau des demandes simultanes.
124
Cas 1 Pas de problme. Chaque priphrique possde son propre vecteur dinterruption. On sait quel est le mcanisme mis en place lors de la prise en compte dune telle demande : sauvegarde du contexte integral ou partiel. chargement du PC d'interruption spcifique. avec le contenu de vecteur
Schma :
INTi INTn
Vecteur INTi
"
125
cas 2 On considre une seule entre de demande dinterruption sur le microprocesseur avec plusieurs interfaces. On est amen alors adopter le schma suivant :
"ou" cbl en logique ngative +5V IRQ Interface +Vcc
+Vcc
MICROPROCESSEUR
INT
IRQ
Interface
IACK IRQ Interrupt ACKnowledge (quivalent BA=0 et BS=1) Interface indicateur d'tat
{
126
Avec la structure du "ou cbl", le programme d'interruption doit comporter un mcanisme de recherche (de scrutation) pour connaitre quel est le contrleur qui a provoqu la demande. Ainsi apparat la notion de Priorit! La gestion des priorits peut se faire de faon logicielle ou matrielle.
Mthode logicielle
Aprs prise en compte de l'interruption (le contenu de vecteur allant dans le PC), la premire tche du programme d'interruption est de tester chaque indicateur d'tat des interfaces afin de savoir qui a effectu la demande. Ici l'ordre de scrutation dtermine le niveau de priorit des interfaces entre eux. Dans cet esprit, il est ncessaire de grer une table dans laquelle se trouve les adresses (pointeurs d'entre) des diffrents sous-programmes d'IT. On peut "voir" ces adresses comme des vecteurs d'IT de second niveau propre chaque interface.
127
Mthode matrielle
On peut tablir la hirarchie entre les interfaces en utilisant une logique supplmentaire qui permet d'identifier directement l'origine de la demande. C'est dire que l'on cre directement le vecteur d'IT de second niveau. Avantage : Prise en compte rapide de la demande d'IT en provenance d'un interface (la phase de recherche disparat...).
128
&
Registre de sortie
Logique de contrle
RS1 RS0 CS
Buffer
actives. Registre de sortie qui fournit l'octet constituant une partie de l'adresse du vecteur.
et
microprocesseur).
129
Seconde illustration Vectorisation par dcodeur de priorit et Mux. Ici, les sorties du codeur de priorit sont multiplexes avec les lignes d'adresse A1, A2 et A3.
7 0
Registre tampon
IRQ A0 A1 A2 A3
Codeur de priorit
A0 B0 B1 B2 Dc. A/B A2 A1 A0
Ai Bi
ROM
A1 A2 A3 A4 i+1 Ai CS 8
6809
O1 O2 O3
A15 BA BS
&
CS
Commentaires : La ligne A0 est relie directement la mmoire car on agit sur les adresses.
Ainsi, le microprocesseur accde directement au vecteur d'IT correspondant la demande. Il n'y a donc plus besoin de la scrutation logicielle des interfaces.
Le multiplexeur est actif seulement en phase de reconnaissance d'IT (BA=0 et BS=1) et lorsque le vecteur d'IT est dpos sur le bus d'adresse ($FFF8 et $FFF9 dans notre exemple). Le reste du Mux se traduit par l'apparition d'un code (010203).
130
Une solution, plus souple et plus conomique en circuits, est possible lorsque l'interface comporte un registre d'interruption qui peut-tre programm par le microprocesseur (au mme titre qu'un registre de contrle).
Lors de la prise en compte de l'IT, le contenu de ce registre fourni la partie basse du vecteur (le choix est donc plus grand). La partie haute du vecteur est impos par le microprocesseur.
Schma de principe :
Microprocesseur
Demande d'IT
S R
ACK
Registre d'interruption
Registre d'adresses 16
Bus d'adresses
131
Avec ce type d'interface, la gestion des IT peut se faire suivant le principe de la "Daisy chain ". Grce ce chanage de priorit, le microprocesseur dispose rapidement du vecteur. L'interface de plus forte priorit dpose sur le bus des donnes l'octet bas du vecteur. Schma de principe :
Bus de donnes
d0...d7 Microprocesseur
(Adresse n2)
8 +Vcc
INT
Bus de contrle
Interrupt Enable Output IEO
IEO
IEO
IEI
IEI
IEI
Adresse n1
Accus de rception Priorit leve Interrupt Enable Input
Adresse n2
Demandeur de l'IT
Adresse n3
Priorit faible
Lgende : Un dispositif inactif, c'est dire ne demandant pas d'IT, propage le signal prsent sur son entre IEI vers sa sortie IEO. Lorsqu'un interface est actif : a- Il impose IEO bas (il n'y a plus propagation de l'information prsent sur IEI). b- Il attend l'acquittement du microprocesseur pour prsenter l'adresse (octet haut) du programme d'interruption sur le bus de donnes. Ainsi, seul le premier dispositif actif de la chane peut rpondre au microprocesseur. La priorit est obtenue dans ce cas par la position de l'interface dans la chane!
132
Schma de principe
1 IEIi &
INTi
1 IEOi+1
(sortie ACK)
&
bi Interface i
IEOi = IEIi . IEIi . bi INTi = INTi-1 + IEIi . bi
Commentaires
Au repos : INTi = 0 et bi =0
IEIi = IOIi+1 = 1
Soit bi = 1 alors INTi et INT haut (envoi d'une interruption vers le microprocesseur). Consquence : L'accus se rception ACK = IEIi-1=1 implique IEOi-1=IEIi=1 (le signal ACK est pris en compte par l'tage i).
Mais IEOi =0 (plus de signal ACK pour les tages suivants i+1. IEOi+n toujours bas quelque soit le signal bi+n.
Si maintenant bi-1=1 alors le signal INT toujours bas. L'accus de rception (signal ACK) est pris en compte par l'tage i-1 mais plus par l'tage i et encore moins par les autres. L'interface i-1 est prioritaire sur l'interface i et i+n.
133
NOTIONS D'ENTREE ET DE SORTIE Un microprocesseur avec son programme est "sourd" et "aveugle". Cependant il lui est ncessaire de communiquer avec l'extrieur pour raliser une action. Schma :
Extrieur (environnement) Intrieur Clavier Relais Bouton poussoir Interface d'entre C.A.N. etc... Interface de sortie Console Imprimante Afficheur Moteur C.N.A. Voyant etc...
Microprocesseur
Entre
Dfinition d'un signal d'entre.
Sortie
C'est un signal venant de l'extrieur sur lequel le microprocesseur peut vrifier (par lecteur) son niveau logique. Il ne peut en aucun cas modifier l'tat de celui-ci.
Dfinition d'un signal de sortie. C'est un signal allant vers l'extrieur sur microprocesseur contrle le niveau logique. Il peut mettre ce signal aux niveaux haut et bas. lequel le
134
L'INTERFACAGE AVEC L'ENVIRONNEMENT Le microprocesseur ne travaille pas uniquement avec ses accumulateurs, ses registres et sa mmoire. Il lui faut communiquer avec l'extrieur. Pour cela, on utilise des units d'change pour assurer le dialogue entre le microprocesseur et la priphrie. Ces changes tant assurs par l'intermdiaire des bus de donnes, de contrle et d'adresses. Ces units d'change (appeles interfaces) occupent un certain nombres de cases mmoires dans le champ mmoire du microprocesseur. Ils sont programmables pour s'adapter aux priphriques connects. Plusieurs types d'interfaces existent sur le march. En rsum, on trouve deux catgories :
Les interfaces passifs : Ces units ou coupleur permettent l'interfaage matriel entre des priphriques, divers et varis, et le bus de donnes. La gestion des signaux d'change incombe au microprocesseur
Dans le cas o le nombre de transferts est faible, le microprocesseur assure cette tche assez rapidement. La situation est critique dans le cas o l'on doit grer un priphrique avec des fonctions complexes. L'interfaage avec ce type d'unit implique un dveloppement matriel et logiciel plus important. (d'o temps microprocesseur plus long).
135
Aussi trouve-t-on pour contourner cet inconvnient des units dites spcialises (appeles contrleurs). Ces contrleurs rpondent mieux la spcificit de certains priphriques comme les disques souples ou durs, les crans vido ou bien encore, facilite la mise en oeuvre de protocole tel que celui du G.P.I.B.- I.E.E.E. Ces units une fois programmes allge considrablement le travail du microprocesseur qui peut faire bien autre chose.
Les interfaces actifs : Pour les priphriques vraiment complexes, on trouve des units d'change appeles interfaces dites intelligentes. Ici, le microprocesseur ne perd plus de temps pour grer les changes. Ceux-ci sont pris compltement en charge par l'unit. Bien souvent, ils sont dots d'un microprocesseur eux-mmes. Ils ont charge gnralement de grer des coupleurs simples ou spcialiss. Certains de ces contrleurs intelligents sont plus spcialiss que d'autres pour accomplir une tche bien prcise et trs complexe. Citons par exemple la gestion d'cran graphique.
Remarque : Notons que le co-processeur qui dispense le microprocesseur de toutes tches de calcul peut tre considr comme une interface intelligent spcialise !
Tableau :
136
Nous allons dcouvrir les units simples suivantes : P.I.A., A.C.I.A., et P.T.M. et spcialises : le contrleur de gestion d'cran.
137
138
b1 = 0 Front actif b1 = 1 Front actif B2 = 0 accs DDRX B2 = 1 accs ORX b0 = 0 IRQ inhibe b0 = 1 IRQ valide
b7=1 Si transition attendue sur CX1 Remise 0 par une lecture de ORX
b7 Flag CX1
b6 Flag CX2
b5
b4
b3
b2 ORX/ DDRX
b1
b0
Commande CX2
Commande CX1
b4 = 0 Front actif b5 = 1 CX2 en sortie b5 = 0 CX2 en entre b4 = 1 Front actif b3 = 0 IRQ inhibe b3 = 1 IRQ valide
Mode programm
b4 = 1
b4=0
B3 = 0 Mode dialogue
b3 = 0 CX2= 0 b3 = 1 CX2= 1 cot A CA2 sur le 1er de E suivant une lecture de ORA et CA2 lorsque CA1 reoit la transition attendue cot B CB2 sur le 1er de E suivant une criture dans ORB et CB2 lorsque CB1 reoit la transition attendue
B3 = 1 Mode impulsion
cot A CA2 sur le 1er de E suivant une lecture de ORA et CA2 sur le prochain de E qui suit une dslection du PIA cot B CB2 sur le 1er de E suivant une criture de ORB et CB2 sur le prochain139de E qui suit une dslection du PIA
140
Procdure trs utilise pour de faibles dbits dinformations (50 ->19 200 bits/seconde : vitesse de travail de bon nombre de priphriques). Format du mot : Il comprend entre 5 et 8 bits, lensemble tant prcd dun bit de start et suivi de 1 ou 1,5 ou 2 bits de stop. Le bit de start est synchronis sur une horloge mais la suite des caractres est asynchrone. Illustration :
ligne au repos +5V t bit(s) de stop (toujours haut)
b0 b1 b2 b3 b4 b5 b6 b7
141
Le circuit travaille en parallle (bus donnes 8 bits) cot microprocesseur et en srie cot priphrique (tltype, clavier, imprimante, Modem, etc... Les niveaux logiques dlivrs par lACIA sont compatibles TTL. Pour configurer les signaux au standard RS-232C, il est ncessaire dadjoindre des circuits, de conversion de niveaux (TTC R232), les 1489 et (RS232 TTC), les 1488. Il faut distinguer les niveaux fournis par lACIA : TTC (logique positive) et ceux dlivrs par la ligne. Illustration :
+5V t
start b0 b1 b2 b3 b4 b5 b6 b7 stop
+12V t -12V
Gnralement, les infos sont vhicules, dans le code ASCII, soit par boucle de courant recommand pour les milieux fortement perturbs : niveau 0 : circuit ouvert niveau 1 : 20 mA
142
soit par liaison RS 232 (20Kbits) RS 423 (100 Kbits) RS 422 (10 mgabits) niveau 1 : -12V niveau 0 : +12V
143
Prsentation
Schma :
+5V 0V horloge de rception Rxclk rception des donnes donnes d0 ...d1 adresses A0 ... A15 CS0 CS1 CS2 RS R/W IRQ E transmission des donnes horloge de transmissionTxclk
Remarque : il ny a pas dentre Reset. Ce circuit intgre : un metteur de donnes asynchrone un rcepteur de donnes asynchrone une logique de commande Modem des entres dhorloge spares pour lmission et la rception. Lmission et la rception peuvent fonctionner simultanment (full-duplex) et avec des vitesses diffrentes. Ce circuit comprend quatre registres internes : 1 1 1 1 registre de transmission registre de rception. registre de contrle registre d'tat
144
contrle
Etude matrielle
Ce circuit possde 24 broches. Cot microprocesseur : Le bus des donnes : d0 ... d7 Assure lchange des donnes autre le microprocesseur et lACIA. Lorsque le botier nest pas slectionn ces lignes bidirectionnelles sont en haute impdance. Le bus de contrle : La ligne E : Signal dactivation des changes. La ligne R/W : ligne de contrle du transfert des donnes avec le microprocesseur. R/W = 1 ; seuls les buffers de sorties sont activs (possibilit de lire un registre). R/W = O ; seuls les buffers dentre sont activs (possibilit dcriture dans un registre) Cette ligne est utilise galement comme ligne supplmentaire pour ladressage des registres internes (cf plus loin). On remarque labsence de la ligne RESET - Ce qui signifie que linitialisation se fait par soft. Le bus des adresses : CSO, CS1 ET /CS2 (Chip Select) Ces 3 lignes sont relies via le dcodeur au bus des adresses du microprocesseur pour slectionner le botier, la slection est valide lorsque la combinaison est : (110)
145
RS (Register select) Cette entre permet de slectionner les registres internes (2 octets mmoire). Elle est utilise conjointement avec la ligne R/W de sorte que lon puisse choisir un registre parmi les 4 disponibles. (Voir plus loin tableau rcapitulatif). IRQ (Interrupt request) Ligne de sortie a drain ouvert (pas de R de rappel) active sur un niveau bas - relie aux entres IRQ ou NMI du microprocesseur ou au PIC (6828 : priority interrupt control).
Cot extrieur 1- Les lignes "horloge" Txclk : horloge de transmission Sert de synchronisation (rfrence) pour la transmission des donnes sur la ligne Txdata. Le registre de dcalage concernant la transmission est synchronis sur un front descendant de ce signal.
Rxclk : horloge de rception Sert de synchronisation pour la rception des donnes sur la ligne Rxdata. Le registre de dcalage (chargement et dcalage), spcifique la rception, est pilot par un front montant de ce signal. Les vitesses de transmission et rception peuvent varier de O 500 Kbits/s. Il y a possibilit de diviser ces deux horloges par 16 ou 64.
146
2- Les lignes de contrle dun priphrique type modem. a- Ligne CTS (Clear To send) Entre permettant de savoir si le modem est prt recevoir des infos. Un niveau bas signifie que le modem est prt . Un niveau haut signifie que le modem est absent (ou non prt). Influence sur le bit (TDRE) du SR Remarque : Sil ny a pas de modem (ou autre) mettre toujours cette entre au niveau bas. b- Ligne DCD (Data carrier detect) Dtection de porteuse ou perte de la porteuse. Entre permettant de savoir si la porteuse au niveau du modem est prsente. Une absence de celle-ci inhibe la rception, cela se traduit par un niveau haut sur cette entre. (dfaut sur la ligne !) Un niveau bas signifie une prsence de la porteuse au niveau du modem, tat normal. remarque : non utilise, elle doit tre toujours au niveau bas ! Cette entre peut gnrer une interruption IRQ, si CR7 = 1 et si un front montant est apparu sur DCD.
c- La sortie RTS (Request To Send) Demande dmission. Cette sortie permet de solliciter le modem (ou autre) pour une transmission par le microprocesseur (mission demande par le microprocesseur). Ltat de cette sortie dpend du mot crit dans le CR. La demande dmission se traduit par RTS au niveau bas.
147
RTS
demande d'envoi
148
Organisation interne
le TDR (Transmit Data Register) Registre de transmission dans lequel on place le mot (8 bits) transmettre. lcriture du mot a lieu sur le front descendant de E. Fonctionnement : Si pas de transmission en cours, alors le contenu du TDR est transfr dans le registre dcalage automatiquement aprs une instruction dcriture. Si par contre, un caractre est en cours de transmission, le transfert TDR dans le registre dcalage est diffr que l'opration de dcalage est en cours (b0 en 1er)
Grce au double registre, le caractre suivant peut-tre crit dans TDR mme si le caractre prcdent est encore en cours de transmission dans le registre dcalage.
Ds que le transfert lieu - Un bit du registre dtat est positionn "1" (voir plus loin)
Le RDR (Rception Data Register) Registre de rception dans lequel on reoit le mot (8 bits) en provenance du priphrique. Fonctionnement : Quand un caractre complet est reu, il est automatiquement transfr du registre de dcalage de rception dans le RDR. A ce moment l, un bit dans le registre dtat est
149
positionn "1". Le caractre peut alors tre lu par le microprocesseur. Tant que le bit dans le registre dtat est 1, le transfert automatique est suspendu !
Du fait du double registre, la lecture peut-tre diffre tant que la rception du mot suivant nest pas termin.
Cest le bit b0 de la donne qui est reu en 1er.
Le registre dtat SR (Status Register) Permet au microprocesseur de connatre tout instant ltat dune transmission ou dune rception. Le registre de contrle CR (Control Register) Permet de configurer le circuit en adquation avec le priphrique. Reoit les paramtres de fonctionnement sous forme dun mot de contrle (8 bits) crit sur le front descendant de E - aussi bien pour la transmission que la rception. Ces registres ont la particularit d'tre soit en criture soit en lecture uniquement. Etant donn que l'ACIA est vu par le microprocesseur comme deux cases-mmoire, le complment du dcodage est ralis par la ligne R/W barre.
150
Les combinaisons entre RS et R/W permettent de slectionner l'ensemble des registres selon le schma suivant : RS R/W 0 1 0 CR SR 1 TDR RDR criture seulement. lecture seulement.
0 1
RS R/W SR
1 1
RS R/W RDR
Accs SR
Accs RDR
151
CR5 et CR6 : Ces deux bits contrlent la fois la sortie RTS et la demande dinterruption en transmission. Autorisent ou non une interruption provoque par le fait que le TDR est vide (TDRE = 1 voir plus loin).
153
Pourquoi ? Dune faon gnrale, lenvoi dun caractre vers la priphrie est toujours prcd dun test sur TDR pour sassurer que celui-ci est vide. Ce test pour tre obtenu par : 1- Une scrutation permanente du bit dans le SR (dans ce cas on choisit CR6 et CR5 = 00). 2- Une interruption gnre par lACIA vers le microprocesseur chaque fois que le TDR est vide (dans ce cas, on choisit CR6 et CR5 = 01). Remarque : LACIA met systmatiquement CR6 et CR5 = 01 la mise sous tension pour viter lenvoi dinformation intempestives. CR5 et CR6 = 11 permet denvoyer un break sur la ligne de sortie cest--dire un niveau bas.
CR7 (Ne concerne que le rcepteur). Ce bit sert de masque dinterruption concernant les vnements suivants : 1- Registre de rception plein 2- Front montant sur lentre DCD indiquant la perte de la porteuse. Ce bit mis 1 traduit ces vnements par une demande dinterruption IRQ bas.
154
donc plus de donne!) Remarque : SR0 = 0 --> RDR vide --> on attend ! SR1 Concerne le registre de Transmission. SR1 = 1 : lorsque la donne est disponible dans le TDR. Remise 0 par : Une criture dans le TDR Un Master reset Une entre CTS haut (par prt recevoir) Remarque : SR1 = 0 --> TDR est plein --> on attend ! SR2 : Indique ltat lectrique de la ligne DCD barre. SR2 = 1 si DCD = 1 (absence de la porteuse) Ceci peut gnrer une interruption IRQ si autorise (CR7 = 1) Ce bit est remis 0 par : Une lecture du SR suivie par une lecture du RDR aprs avoir DCD retour bas bien sr !
155
SR3 Indique ltat de lentre CTS SR3 = 1 signifie que CTS est haut ( modem pas prt recevoir) Consquence : forage de SR1 0 (TDR plein) ce qui signifie que la transmission est interrompue ! Ce bit n'est pas affect par un Master reset.
156
SR4 Indique une erreur de formatage (FE) SR4 = 1 : indique un problme de synchronisation qui se caractrise par une absence du (des) bit(s) de stop. Mise 0 de SR4 aprs : une lecture du RDR aprs disparition du problme un MASTER RESET un niveau bas sur DCD SR5 Indique un dbordement (OVRN) SR5 = 1 signifie que plusieurs caractres ont t reus avant la lecture du caractre prcdent. Si problme rsolu, mise 0 de SR5 aprs : Lecture du RDR. Un niveau haut sur DCD ou un Master RESET. SR6 Indique une erreur de parit (PE) SR6 = 1, indique que la parit reue avec le caractre est incorrect. SR6 est remis zro aprs : Une lecture du RDR si pb rsolu ! Un MASTER RESET. SR7 SR7=1 : Indique quil y a une demande dinterruption.
157
Cette demande peut provenir des vnements suivants : RDR plein (SR0 = 1) si CR7 = 1 TDR vide (SR1 = 1) si CR5 = CR6 = 1 DCD haut si CR7 = 1 Remise 0 de ce bit aprs : par une lecture de RDR par une criture de TDR par une lecture de SR et du RDR (DCD)
158
Etude Logicielle
Programmer un ACIA consiste crire dans son registre de contrle un octet pour dfinir le mode de fonctionnement. A la mise sous tension, la logique interne dinitialisation met lACIA dans un tat dattente pour viter des transitions intempestives en sortie. lAcia sort de cet tat par linitialisation programme "Master reset" - qui lui permet de prendre en compte le chargement du CR avec le mot appropri. Principes de fonctionnement En gnral, le programme de transmission commence par une interrogation du bit SR1 appel TDRE (TDR vide) - Ce bit est mis 1 lorsque le caractre prcdemment charg dans le TDR est transfr dans le registre dcalage de transmission (rajout des bits de start, stop et parit) pour y tre dcal au rythme de Txclk et apparatre sous forme srie sur la ligne TxData. Le TDR est alors libre daccueillir un nouveau mot sans risquer "dcraser" le mot prcdent. Pour procder lcriture dun nouveau mot, le microprocesseur doit donc se mettre en polling sur TDRE, ou exploiter la demande dinterruption gnre lors du passage au niveau 1 de TDRE.
159
Les donnes sont reues en srie par lentre RxData en provenance du priphrique, une frquence sous multiple de lhorloge de transmission. Le rapport est programm linitialisation de lACIA. suivant lun des 3 modes. Ensuite transfr dans le RDR avec limination des bits de start, de stop et de parit. Une squence de rception commence par une lecture de SR pour tester le bit RDRF = 1, soit par une mise en polling sur ce bit, soit la suite dune demande dinterruption. Ds que RDRF = 1, la rception du mot est termine et celui-ci peut tre lu par le microprocesseur.
La parit du mot reu est contrle lors de cette rception. Le registre dtat indique si le registre de rception contient un caractre avec dventuelles erreurs de parit, de format ou doverflow.
160
161
Remarques : Ce fonctionnement en mode interruption laisse le microprocesseur libre de faire autre chose entre chaque criture et/ou chaque lecture. En effet les frquences usuelles de fonctionnement de lACIA sont : Pour le Minitel 75 b/s en rception et 1200 b/s en mission Pour un tltype, 300 b/s Pour une imprimante srie lente, 1200 b/s Pour des systmes plus rapides, 2400, 4800, 9600 ou 19200 b/s, ce qui dans ce dernier cas, requiert 52 micro-secondes par bit soit environ 500 microsecondes par mot. Dure pendant laquelle le microprocesseur peut travailler
162
Illustrations de la remise 0 des bits SR2 et SR7. Gnration d'une interruption en rception si CR7=1 et RDRF=0. Remise O des flags SR2 et SR7 par une lecture de SR suivie une lecture de RDR si l'entre DCD barre revenu "bas".
Master Reset
SR2
SR7
RDRF
Lecture de SR
Lecture de RDR
SR7 n'est Le master Reset affect. remet le bit SR7 0. Il avait t mis 1 par la perte de la DCD barre est haut pendant un Master porteuse. Reset. SR2 reflte l'tat de DCD barre.
pas
163
retrouv de RDR a Aprs qu'une inter- lecture ruption soit appa- remet SR2 et SR7 niveau si toutefois rue, suite DCD 0 barre haut, une l'entre DCD barre Avec Master Reset toujours "bas".
son bas.
SR2
SR7
RDRF
Lecture de SR
Lecture de RDR
Aprs qu'une interruption soit apparue, suite l'entre DCD barre haut, une lecture de SR suivie d'une
RDR barre a retrouv mais son niveau bas. ne que DCD Une perte de la porteuse a t
164
enregistre. Prcdemment les lectures de SR et RDR ont eu lieu suite RDRF =1. Le bit SR7 reste 1. Quand RDRF retombe, une deuxime lecture de
SR et de RDR remet SR7 0. L encore SR2 suit l'entre DCD. Si une transition positive de DCD barre se produit pendant une lecture de SR et RDR, elle
165
rle Du point de vue de l'utilisateur, ce contrleur comporte) 2 registres On t(rouve le registre demande ( et le registre de masque. a - le registre de demande comporte 8 entres "demandes d'interruption" INO IN7. R R)
qui reprsente 8
ces entres sont hirarchises de telle faon que IN 7. soit la plus prioritaire alors que INO est la moins prioritaire. b - le registre de masque. Permet la mise en place de la hirarchie. Il comprend le dont es combinaisons binaires indiquent les numros des entres. Il inhibe la prise en compte des demandes d' infrieur son contenu. Fonctionnement : - ce circuit ne permet qu'un seul mode de fonctionnement - Les priorits sont fixs et dtermins l'avance. Une possde donc aucun registre de contrle ni d'tat. Le registre de masque est le seul registre programmable.
166
de niveau
Son initialisation est particulire ! Une instruction d'criture l'adresse 1111 1111 111X XXXO charge ce registre avec la valeur indique xxxx Cette valeur varie de OOOO 1OOO avec OOOO indiquant : aucun niveau masqu et 1OOO indiquant : tous niveaux d' masqus. adresses correspondantes sont comprises dans l'intervalle suivant : ($ F F E O, $ F F F O) La programmation de ce registre n'est pas fait donne. (n'importe quelle valeur ce moment l). Schma : le de
167
Ai relis au adresses up Zi relis au adresses de la mmoire( cteur transmis -- par le contrleur vers la mmoire) INI signaux de demande d'I T en provenance de la priphrie. le signal I R Q est la demande d'I T adresse au up Niveau bas si une entre INi , de niveau de priorit gal ou suprieur au masque est active (bas) Le 6828 doit tre activ par $ F F F 8 et $ F F F 9 Une solution : A15 A14 et A1O, A9, A8, A7, A6 et A5 dcods Comme l'indique le schma le contrleur d'IT doit tre inserr entre les A1 Au du d'adresses up et celui de la mmoire ROM. Ainsi suite une demande d'I T, le up dpose sur le d'adresses le mot $F F F 8 qui en fait adresse le P I C lequel positionne les Z1, Z2, Z3, et Z4 qui font office d'adresse pour la mmoire. Le groupe Z1, Z2, Z3 et Z4 formant un vecteur relatif la demande d'I T intervenu. A ce moment l, le valeur : d'adresses de la mmoire contient la 1111 1111 111Z4 Z3Z2Z10 car Ao = 0
168
Reste mettre, dans cette case mmoire et la suivante l'octet haut et bas respectivement de l'adresse du sous-programme d'IT excuter.
Remarque : Le P I C possde une sortie STRECM qui permet de prolonger la priode de l'horloge du up dans le cas o l'accs la ROM est peu rapide. Car par rapport au cycle du up l'adresse "fabrique" n'est valid qu'aprs un temps de retard d au PIC.
169
Il faut donc faire attention la synchronisation ! chronogramme de traitement d'I T par le P I C : Processus suivi : Une entre INJ passe O le contrle active IRQ qui passe O Le processeur excute les oprations pralables au traitement de l'instruction : sauvegarde, I = 1 etc. Le up dpose $FFF8 sur le d'adresse. Le contrleur gnre le vecteur Zi relatif INj Le microprocesseur lit le contenu de la deuxime case mmoire relative INj (Ao = 1) Le up dpose $ F F F 9 sur le bus d'adresses. Le contrleur est adress et le signal S T R E T C H est activ Le contrleur gnre le vecteur Zi relatif INj Le microprocesseur lit le contenu de la deuxime case mmoire relative INj (Ao = 1) et se branche l'adresse ainsi obtenue.
170
le signal S T R E T C H retourne l'tat haut. Et enfin ! le microprocesseur excute le sous-programme relatif l'entre INj Remarque : Lorsque le contrleur n'est pas adress (adresse autre que le vecteur IRQ par ex), il laisse passer les d'adresses A4, A3, A2 et A1. Ce circuit joue donc le rle d'un slecteur avec 8 entres et 4 sorties - comme le montre le schma suivant :
171
172