Vous êtes sur la page 1sur 172

UNIVERSITE FRANCOIS-RABELAIS TOURS

ECOLE D'INGENIEURS EN INFORMATIQUE POUR L'INDUSTRIE

Notes du cours "Microprocesseur" de 1

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

Introduction au jeu d'instructions du microprocesseur


le jeu d'instructions le code mnmonique les modes d'adressage

la pile Les interruptions Les mmoires Les interfaces


le P.I.A. (Interface parallle) le P.T.M. (Compteur programmable) l'A.C.I.A. (Interface srie)

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

Commentaires sur le graphe issu de Sciences et Vie n spcial 1996.

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

Automatisme logique cble

Capteurs Processus Actionneurs

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

(les sorties sont dfinis uniquement partir des variables d'entre)

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

Capteurs Processus Actionneurs

Principe de la logique programme


Illustration partir d'un circuit simple constitu de 3 cases mmoires et 3 portes logique ET, OU et NON. On se propose de raliser la fonction : A exclusif B Schma :
Mmoire M1 Mmoire M2 Mmoire M3 ET OU NON

Initialisation [M1] = A et [M2] = B Droulement :

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

lgende : C = 0 porte bloque C = 1 porte transparente donc S = E 1 2 3 4 5 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1


A AB B
AB

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

Complexit Petits systmes Grands systmes

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

Puissance d'un microprocesseur

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

Systme base du microprocesseur 6809.


8 16 6809

Autre s priphriques :
Contrleur de disque Contrleur d'accs mmoire Circuit de gestion M.M.U.

n 11

m ROM 2K m' 12 RAM 4K

n'

i 2

3 PIA 6821

i' 1

3 ACIA 6850

p s

f 6845 Contrleur graphique

t e

h 68488 Contrleur de bus IEEE

b z

c 6840

O1

Compteur O2 programmable O3

13

SCHEMA FONCTIONNEL D'UN MICROPROCESSEUR (8bits)

On distingue 3 lments logiques principaux :

Une Unit Arithmtique et Logique (U.A.L.) Un Accumulateur.

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

L'Unit Arithmtique et Logique

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:

accumulateur contenu initial perdu! accumulateur registre mmoire

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).

Cette nouvelle valeur provient soit...


18

d'une lecture en mmoire indirectement selon les modes d'adressage utilils) d'un calcul (addition, ...)

(directement

ou

19

Le Registre d'instructions

Sa tche Le registre d'instructions contient le premier octet de l'instruction en cours d'excution.

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

Les registres gnraux

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.

Qu'est-ce qu'une interruption ?


Disons pour l'instant, que c'est une requte prsente la logique de contrle par des lments extrieurs (priphriques).

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

Bus des Adresses

31

Bus des Donnes

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

Bus des Adresses

D0 D7

24

31

Bus des Donnes

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.

les adresses sont valides sur le front montant de Q.

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

cette ligne est valide sur le front montant de Q.

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

Broches complmentaires du bus de contrle :


MRDY (Memory ready) : Cette broche de commande permet d'allonger la dure de Eout pour utiliser des mmoires temps d'accs long. Active sur un niveau bas. l'allongement est un multiple de un quart de cycle et sa valeur maximale est de 10 cycles.

DMA/BREQ (Direct Memory Acces/Bus Request).

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

Broches spcifiques au 6809 E


Entres d'horloge : EIN et QIN Ce sont deux broches dans lesquelles on applique des signaux identiques Eout et Qout du 6809. Ces signaux doivent aussi tre fournis l'ensemble du systme (signaux de synchronisation).

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.

On ne doit pas activer TSC quand BUSY est actif.

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

PRESENTATION DES DIFFERENTS REGISTRES INTERNE AU 6809

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

Exemple de sauvegarde de tous les registres avec S :

$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

DP Xh SSSS - 12 Xl Yh Yl Uh Ul PCh PCl SSSS -1 SSSS $FFFF

38

Le jeu d'instructions du 6809


Une instruction peut tre simple : 1 octet ou complexe : 4 octets La plupart des instructions permettent un traitement un dplacement... des donnes... se trouvant... en mmoire ou dans un registre. L'ensemble des instructions de base, compris par le Registre d'Instruction, est constitu de quelques 86 instructions. En tenant compte des variantes (modes d'adressage) il atteint 1464 instructions.
1 2

Code opration Donne immdiate ou adresse directe/relative

Octet1 Octet2

Code opration

Donne immdiate ou Octet3 adresse directe/relative

Octet1 Octet2

Code opration Adresse sur 2 octets ou dplacement sur 2 octets

Octet1

Code opration

Octet2 Octet3

Adresse sur 2 octets ou dplacement sur 2 octets

{ {

Octet1 Octet2 Octet3 Octet4

Les divers modes de codage en mmoire des instructions et modes d'adressage.


39

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 :

tinstruction = n . Tcycle avec 2 n 11.


Mode de fonctionnement d'une instruction Excuter une instruction c'est en faite raliser le cycle

extraction-excution
40

Extraction : lecture de la donne en mmoire, t=1.TE


avec TE priode de l'horloge E Il y a autant d'extractions que d'octets (code opratoire et code oprande) constituant l'instruction. Si m octets alors t= m.TE

fois extrait. Un octet donc t=1.TE.

Excution : traduction et interprtation de l'octet (code opratoire) une

l'interprtation se fait selon le processus suivant :

Registre d'Instructions

Dcodeur d'Instructions

logique de contrle mission de signaux vers les circuits R/W Registres Mmoires Priphriques Registre d'Adresses

Compteur A.L.U. d'Instructions intrieur

extrieur

Une priode TE supplmentaire concrtement l'opration demande! Bilan :

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 :

b7 PC U/S X Y DP B empilement dpilement

b0 A CCR

43

Les modes d'adressage du 6809

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)

Les modes d'adressage sont :

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 ou implicite

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).

Exemples : ABX, ASL, ASR, CLR, INC

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

TFR X,Y (transfert de X dans Y).

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

Adr Adr+1 Adr+2 Adr+3 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

Adr Adr+1 Adr+2

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 Adr+1 Adr+2 Adr+3

adr
7 0

Adr+3 37 1997

LDY $1997 Charge le registre Y avec le contenu de ladresse 1995.

52

CCR E F H I N Z V C D X Y S U PC
15

A B

10 BE 19 97

Adr Adr+1 Adr+2 Adr+3 Adr+4

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+1 Adr+2 Adr+3 Adr+4

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

Adr Adr+1 Adr+2 Adr+3 Adr+4

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

Adressage index dpacement nul

Le registre pointeur contient ladresse effectivee (A.E.) de la donne. Un chargement pralable du registre est impratif.

Exemple : LDA O,X ou LDA ,X


CCR E F H I N Z V C D X Y S U PC
15

A B

37
7 0

A6 84

Adr Adr+1 Adr+2

1997

DP

adr
7 0

Adr+1

37

1997

Lgende de la valeur $84 soit 1 00 0 0100 du post-octet (ligne numro 6 du tableau).

57

Adressage index dplacement constant

Ladresse effective de la donne est la somme du dplacement (constante en complment deux) et du contenu du registre nomm pris comme base.

A.E. = [Registre nomm] + expression du dplacement.

Le contenu du registre nest pas modifi.

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 s'exprime sur 15 bits + un bit de signe.


58

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

Adressage index avec dplacement accumulateur.

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.

Cest le post-octet qui spcifie laccumulateur utilis (pas doctet suppmentaire).

Intret la valeur du dplacement est calcule par le programme en cours dexcution, en fonction des vnements.

60

Exemples :

LDA B,X

avec post-octet = $85 soit 1 00 0 0101.

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

Adr Adr+1 Adr+2

1960

+
adr
0

adr+2

00

1997

LDX D,Y

avec post-octet = $AB soit 1 01 0 1011.

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 Adr+1 Adr+2

2000 1000 adr


0

+
adr+2 20 00 1997 1998

61

62

Adressage index avec auto-incrmentation/dcrmentation

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

Adressage index relatif au compteur-programme (PC)

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

soit 1000 1100

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.

Lutilisation dune tiquette facilite l'emploi de ce mode.

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).

Code du post-octet : $8D soit 1 00 0 1101

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 = $1000 Adr+1 Adr+2 Adr+3 Adr+4

adr DP
7 0

adr+4 11 12 ETIQ = $2015

Dplacement = $2015 -($1000+4) soit 11 Adressage index indirect.

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 Adr+1 Adr+2 Adr+3 Adr+4

adr DP
7 0

adr+4 19 97 1960 1961

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]

4Adressage index incrmentation/dcrmentation. ADDA [ , U++]

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

Technique dadressage utilise avec les instructions de branchement conditionnel ou non.

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

Ralisation de l'Adresse Effective :` Adresse Effective = PC +2(4) + dplacement

(PC+2)- valeur dplacement (PC+2)+ valeur

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 = $1960 Adr+1 Adr+2 +35

adr

Adr+2

op

$1997

Valeur = $1997-($1960+2) soit $35

Adressage relatif long avec un dplacement positif.

?
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 = $1997 Adr+1 Adr+2 Adr+3 Adr+4 +1675

adr

Adr+4 op $3010

73

Valeur = $3010-($1997+4) soit $1675

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

Extraction (fetch) Horloge E

Excution

cycle machine dpot de l'adresse puis stockage du code dans le R.I. dcodage du code

ralisation de l'action demande

77

Simulations

Premier exemple : $0000 $0002 $0004 Deuxime exemple : $0000 $0003 $0006 $0009 $000C $000F $0012 Commentaire :

LDA ADDA NOP

#$10 #$29 12

86 8B

10 29

LDA ADDA STA LDA ADCA STA BRA

$0014 $0016 $0018 $0015 $0017 $0019 $FE

# 3 3 3 3 3 3 2

~ 5 5 5 5 5 5 3

PC H L 00 0C

registre interne intermdiaire registre des adresses

00

15

00 00

0A 0B

Bus des adresses


78

Apport du 6809 dans la famille des microprocesseurs 8 bits.

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

Sauvegarde du contexte dans la pile U Procdure

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

opratoire oprande _________________________________________ 5 7 i i+2 j j+2

88

Dfinition des diffrents champs

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

Les directives dassemblage

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)

ORG : Origine (initialisation du compteur programme) Syntaxe : ORG Expression

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

FDB FDB FDB FDB EQU

'5,$5 10,$10 FIN 0 4

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

FCC FCC FCC FCC

/FIN/ 'LUNDI' #MARDI# 252

$2000

46 49 4E 4C 55 4E 44

49 4D 41 52 44 49 35

END : fin d'assemblage Syntaxe : END

Rle : Cette directive marque la limite du programme source. Les lignes situes aprs cette directive sont ignores par l'assembleur.

95

PAGE : Saut de page Syntaxe : PAGE

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.

OPT : Option d'assemblage Syntaxe : OPT ABS

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

Plan adopt pour l'criture d'un programme

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

Les principales commandes du systmes EUROMAK

Environnement :

Assembleur

KDOS "@" Moniteur "MBUG09" Editeur "?"

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

CAT quivalent CAT : 0 CAT : 1

[lecture des fichiers du disque 1] [lecture des fichiers du disque 2]

102

Appel de lEditeur : EDITE


Exemples de commande : BUILD fichier.ASM:1 LOAD fichier.ASM: 1 [si le fichier nexiste pas encore] [si le fichier existe dj]

Q quivalent S(ave) : sauvegarde du programme lendroit prcis par la commande BUILD. Q (une deuxime fois) sortie de lditeur. Retour KDOS.

Appel de lassembleur : RASM


Exemple de commande : RASM fichier.ASM:1;L,CRE Si pas derreur, cration du fichier.LO.

Chargement du fichier assembl


LOAD fichier.LO:1

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.

Exemple d'un programme non structur.

104

test A test C bloc test B

test D proc B proc A

module 2 entres

105

test A

Transformation
proc C

test B proc B proc A

test C bloc proc C proc A

test D proc B proc A

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

PROC_A end end.

107

Stucture conditionnelle de base Organigramme de la stucture "Si alors sinon" [if then, else]
dpart

test ? S1 S2

fin

end if

Organigramme de la stucture de boucle

tant que c(condition), faire S (instruction) [do while]


dpart

C est test avant l'excution de S.

C est-il vrai? oui S

non

fin

Consquence : S peut trs bien ne jamais tre excute.

Une variante :

excuter S, jusqu C

[do until]

108

dpart

Ici, le test de la condition est ralis la fin de la boucle.

C est-il vrai? non fin

oui

Consquence : La boucle est excute au moins une fois.

Structure du case of :
dpart

I=0 I=1 I=2 I=n S0 S1 S2 Sn non oui

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.

Ces entres sont actives sont un niveau "bas".

Rle du Registre de Code Condition

a- Fonction du flag I
+ Masque concernant l'interruption IRQ.

Tableau Etat du flag I I=1 I=0 IRQ Inhibe Autorise

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.

Mthode de changement de l'tat des flags I et F.

!
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

ANDCC #$BF ORCC #$40

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".

La sauvegarde du contexte est totale.

On en dnombre trois, qui sont : SWI SWI2 SWI3 (SoftWare Interrupt) (SoftWare Interrupt n2) (SoftWare Interrupt n3)

Les interruptions de synchronisation


Pour finir, le microprocesseur peut se mettre en attente d'vnements extrieurs afin de synchroniser son volution sur l'apparition de ces derniers. Il y a une "pr-sauvegarde" complte du contexte. Pour cela, on trouve les instructions suivantes : CWAI SYNC (attente d'interruption). (attente de synchronisation).

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

IRQ ANDCC #$EF

Programme d'interruption (second niveau)


I=1 et E=1

t1

t2

ti

BRA * END

RTI

RTI

SP t2

Deuxime IRQ empilement de 12 octets

Premire IRQ empilement de 12 octets

{ {

CCR

CCR

SP t1

SP t0

Zone mmoire RAM gre par la pile

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

Interruption concerne NMI, FIRQ et IRQ NMI, FIRQ et IRQ

Fonction Attente d'interruption Synchronisation externe

Sauvegarde Totale E=1 Aucune

Dpilement

CWAI

SYNC

RTI

Total si E=1 Partiel si E=0

119

Traitement des interruptions

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

Mthodologie de gestion des priphriques dentres-sorties


Les transferts E/S peuvent seffectuer selon diffrents modes. Deux grands modes apparaissent : le mode programm et le mode interruptible. Le mode programm Les transferts seffectuent linitiative du microprocesseur.. Cest lui (c.a.d. le programme) qui dcide du moment des actions. Ces transferts peuvent tre nanmoins inconditionnels ou non.

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 :

1- On utilise les diffrentes entres dIT du microprocesseur si cela est possible.

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.

du PC d'interruption spcifique.

chargement

avec

le

contenu

de

vecteur

Schma :

INT1 INT2 Microprocesseur

Vecteur INT1 Vecteur INT2


"

INTi INTn

Vecteur INTi
"

Vecteur INTn champ mmoire

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


1 IRQ Interface

INT


IACK IRQ Interrupt ACKnowledge (quivalent BA=0 et BS=1)


Interface

indicateur d'tat

Entre du programme d'interruption

Programme d'interruption 1 Programme d'interruption 2 Programme d'interruption i Vecteur d'interruption de l'IT

{
126

Gestion des priorits


Cas 3

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

Premire illustration matrielle :

IRQ7 IRQ6 IRQ5 IRQ4 IRQ3 IRQ2 IRQ1 IRQ0

& Registre des demandes d' interruption Encodeur de priorit


b7 b6 b5 b4 b3 b2 b1=0 b0=0


&


Registre de masques d'interruption

Commande de sortie du vecteur 8

Registre de sortie

d0 d7 IRQ IACK R/W


Commentaires :

Logique de contrle

RS1 RS0 CS

Buffer

Registre d'entre capable de stocker huit demandes d'IT.

2 Registre interne de masque d'IT (initialis par le microprocesseur). 3 3 4


Ensemble de ET pour bloquer ou non les demandes d'IT partir des informations du registre de masques. Codeur de priorit qui fournit le codage de la demande la plus prioritaire parmi celles

actives. Registre de sortie qui fournit l'octet constituant une partie de l'adresse du vecteur.
et

microprocesseur).

L'autre partie tant dfinie par ailleurs (b5, b6

b7 tant initialiss par le

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

Lignes d'interruption en provenance des interfaces

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

Bus des adresses


Dc. i : fixe la capacit de la mmoire

Bus des donnes

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

Autre structure (oriente plutt INTEL)

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

Octet poids fort

Octet poids faible Registre de donnes 8

Interface demandeur Bus de donnes


8

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

vers INT du microprocesseur 1 INTi-1 IEIi-1


(entre ACK)

1 IEIi &

INTi

1 IEOi+1
(sortie ACK)

& IEOi-1 &

& IEOi IEIi+1 &

&

bi-1 Interface i-1


Equations :

bi Interface i
IEOi = IEIi . IEIi . bi INTi = INTi-1 + IEIi . bi

bi+1 Interface i+1

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

Interface passif Interface actif (intelligent)

simple spcialis universel spcialis

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

b6 Mme fonctionnement que b7 dans le cas o CX2 est en entre

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

Etude de linterface srie asynchrone A.C.I.A. 6850


I- Gnralits A.C.I.A. : Asynchronous communication interface adapter. Adaptateur pour la communication asynchrone. Appartient la famille des U.A.R.T. Ce circuit programmable permet la communication asynchrone selon la procdure START-STOP. srie

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)

bit de start (toujours bas) horloge

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 (TTCR232), les 1489 et (RS232TTC), 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

rception mission tat contrle

CTS DCD RTS

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

Lmission et la rception peuvent fonctionner simultanment (full-duplex) et avec des vitesses diffrentes. Ce circuit comprend quatre registres internes :
1 registre de transmission 1 registre de rception. 1 registre de contrle 1 registre d'tat

contrle

signaux de gestion d'un modem

la rception.

144

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

Exemples d'utilisation : a- Modem command par un ACIA


accus de rception pour la demande de transmission

CTS ACIA DCD MODEM

RTS

demande d'envoi

b- Liaison Acia - Acia


CTS ACIA DCD=0 RTS CTS DCD=0 RTS ACIA

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.

Tableau rcapitulatif (avec A0=RS) : R/W 0 0 1 1 RS 0 1 0 1 Observation CR TDR SR RDR

adr adr+1 adr adr+1 Illustrations :

0 1

RS R/W SR

1 1

RS R/W RDR

Accs SR

Accs RDR

151

Prsentation du registre de contrle


CR0 et CR1 : Dterminent le rapport de division sur les signaux dentre Rxclk et Txclk. La combinaison (11) gnre un reset logiciel (Master reset)) indispensable avant toute programmation du CR. Le Master reset : initialisation locale (propre l'ACIA) Consquences : Remise 0 du SR except les bits lis aux conditions externes : Initialise le TDR et RDR (contenu nul) Aucune modification nanmoins des autres bits du CR. CR2, CR3 et CR4 : Choix du format de loctet transmettre o recevoir conformment au tableau ci-joint. Remarques : On a la possibilit dinsrer un bit de parit. Si l'on a choisi une parit paire, le nombre total de bits au niveau haut, y compris le bit de parit, doit tre pair. Si l'on a choisi une parit dite impaire, le nombre total de bits au niveau haut, y compris le bit d'imparit, doit tre impair. Une erreur de parit est signale si au cours de la transmission un parasite fait apparatre ou disparatre un bit au niveau haut. Une erreur de format est signal si le bit de stop nexiste pas.
152

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

Etude des bits du registre d'tat.


SR0 La lecture du bit b0 indique si le registre de Rception RDR est plein (SR0 = 1) Remise 0 par :
Une lecture du RDR Un Master Reset Une entre DCD haut (plus de porteuse

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

Gestion des interruptions


En transmission : Si CR5 = 1 et CR6 = 0, la ligne IRQ est active au niveau bas ds que le TDR est dclar vide par le passage au niveau 1 de TDRE. Le programme de traitement de cette interruption a videmment comme but dcrire le caractre suivant dans le TDR, ce qui entrane en plus la remise zro de TDRE donc le retour ltat de repos de la ligne IRQ ainsi que la remise zro du bit SR7 du registre dtat. Ce fonctionnement est maintenu tant que lACIA nest pas sous contrle dun Master Reset et tant que la ligne CTS est maintenue au niveau bas par le modem. Rappelons que lorsque le modem ne veut plus transmettre de caractre, il met CTS au niveau haut ce qui force TDRE au niveau bas et inhibe le processus ci-dessus. En rception : Si CR7 vaut 1, la ligne IRQ est activ au niveau bas chaque fois que le RDR est plein (RDRF=1), le programme dinterruption est charg de lire le caractre reu, ce qui en outre remet RDRF zro ainsi que la ligne dinterruption au repos. Cette opration est dclenche galement si une perte de la porteuse est signale (DCD=1) ou si le bit OVRN (SR5) passe au niveau haut. Les flags (PE) et (FE) ne dclenchent pas dinterruption et cest la charge du programme dinterruption lui-mme de contrler que le mot reu ne comporte pas derreur en testant les deux bits SR4 et SR6.

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

Entre DCD barre

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.

Entre DCD barre

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

lecture de remet SR7 0 le bit SR2 revient 0 lorsque la ligne

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

n'est pas prise en compte avant le front descendant du signal de lecture.

165

ETUDE DU PIC 6828

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.

Tableau des adresses gnres : Par ordre de dcroissance du niveau de priorit

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

Vous aimerez peut-être aussi