Vous êtes sur la page 1sur 58

Architectures des Ordinateurs 2

Dr. Fouzi Mekhaldi


(mekhaldi.fouzi@gmail.com
fmekhaldi@usthb.dz )
https://dpt-info.u-strasbg.fr/~mekhaldi

1
PLAN Global

• Chapitre 0 : Rappels importants


• Chapitre 1 : Les Interruptions
• Chapitre 2 : Les interfaces d’entrées et de sorties
• Chapitre 3 : Gestion des Demandes d’Interruptions
Matérielles : Cas du Contrôleur Programmable
d’Interruptions (PIC 8259 A)
• Chapitre 4 : L’interface de communication série
• Chapitre 5 : Le temporisateur
• Chapitre 6 : L’organisation externe du 8086

2
CHAPITRE III

Le contrôleur programmable
d’interruption (PIC ou 8259)
Le contrôleur programmable d’interruption

• Le microprocesseur 8086 ne dispose que


de deux lignes de demandes
d’interruptions matérielles (NMI et INTR).
• Pour pouvoir connecter plusieurs
périphériques utilisant des interruptions,
on peut utiliser le 8259 dont le rôle est de :
 recevoir des demandes d’interruptions des
périphériques ;
 résoudre les priorités des interruptions ;
 générer le signal INTR pour le 8086 ;
 émettre le numéro de l’interruption sur le bus de
données.
• Un 8259 peut gérer jusqu’a 8 demandes
d’interruptions matérielles.
4
Le contrôleur programmable d’interruption
1) Schéma fonctionnel

Une entrée A0 => ceCe boîtier


boîtier aura
aura deux
donc d'adresses
combien :
d'adresses (Ports d’E/S)?
une adresse pour A0=0 et une adresse pour A0=1.
5
• CAS0-CAS2 : Pour cascader les PICs et servent
comme moyen de communication ;

• SP / EN : (SP=Slave Program/EN=Enable Buffer) :


Est une broche à double fonction :
1) Si SP / EN programmée en entrée :
1: PIC maître
0 : PIC esclave

Dans ce cas, on branche SP/EN à la masse (0) ou à 5 volts (1)


 2) Si SP / EN programmée en sortie, cela pour commander
des transmetteurs de type 8286

6
Le contrôleur programmable d’interruption

• Une source d’IT est connectée à chacune des 8 entrées


IR0 à IR7. Selon sa priorité, et s’il n’y a pas d’autres
interruptions en cours, le PIC décide s’il peut transmettre
l’interruption au CPU.
• Si oui, il affirme la ligne INT, qui est connectée à l’entrée
INTR du CPU. Si le CPU est prêt à accepter l’interruption, il
répond au PIC via la ligne INTA.
• Le PIC répond à son tour en envoyant le numéro d’IT sur
les lignes D0 à D7. Ce numéro est un index dans la table
des vecteurs d’interruption.
• Le CPU est maintenant prêt à appeler le sous-programme
de traitement d’IT approprié (routine d’INT).
• Quand le sous-programme de traitement d’IT se termine, il
en avertit le PIC pour qu’il puisse permettre à d’autres
interruptions d ’atteindre le CPU.
7
Le contrôleur programmable d’interruption

• 2) Registres internes
 IRR (Interrupt Request Register) : Mémorise les demandes d’IT

 IMR (Interrupt Mask Register) : Masque une ou plusieurs demandes

 ISR (Interrupt Service Register) : Marque les interruptions en service

 Resolveur de priorité (Priority Resolver) : Choisi parmi les


demandes d’interruption mémorisées dans IRR et non masquées
celle qui possède la plus haute priorité.

8
Organisation interne du 8259

INTA INT
Data
D0-D7 Buffer
Control logic

RD IR0
WR Read/Write
logic IR1
A0 In Interrupt IR2
Service Request IR3
Priority Register
CS Register IR4
Resolver
IR5
ISR IRR IR6
CAS0 IR7
Cascading
CAS1
logic
CAS2

SP/EN Interrupt Mask Register


IMR

Remarque: Le µp envoie toujours deux signaux consécutifs sur la ligne INTA


9
Le contrôleur d’interruptions programmable

3) Architecture

Le PIC maître occupe les adresses 20h et 21h, tandis que


Le PIC esclave occupe les adresses A0h et A1h.
10
Le contrôleur d’interruptions programmable

3) Architecture

Le PIC maître occupe les adresses 0x20 et 0x21, tandis que


Le PIC esclave occupe les adresses 0xA0 et 0xA1.
11
Le contrôleur d’interruptions programmable

12
Le contrôleur d’interruptions programmable

4) Programmation du PIC

• La programmation du PIC comprend SEPT mots de commandes


• Il y a deux types de commandes : les commandes d’initialisation
(ICW: Initialization Command Words) et les commandes
opérationnelles (OCW: Operation Command Words).

 4 mots d’initialisations (ICW1, ICW2, ICW3 et ICW4) :


Permettent d’initialiser le fonctionnement du PIC.
 3 mots d’opérations (OCW1, OCW2 et OCW3) :
Permettent de contrôler certaines fonctionnalités du PIC.

Remarque : Les mots d’initialisation doivent précéder tout usage du


PIC par contre les mots d’opération peuvent intervenir à tout moment
une fois le PIC initialisé.

13
La séquence d’initialisation

14
La séquence d’initialisation

1/ ICW1
Permet d’indiquer le mode de fonctionnement du PIC, le
mode de détection d’IT et la nécessité ou non de ICW4

Dans ce cas ICW3 est nécessaire

Niveau: level-triggered; Front: edge-triggered


15
La séquence d’initialisation : ICW1

• Q1: Specify the value of ICW1 needed to configure an


8259A as follows: ICW4 needed, single-device
interface, and edge-triggered inputs.

ICW1 = 00010011 = 13H

• Q2: What value should be written into ICW1 in order


to configure the 8259A such that ICW4 is needed in
the initialization sequence, the system is going to use
multiple 8259As, and its inputs are to be level
sensitive?

ICW1 = 00011001 = 19H

16
La séquence d’initialisation

2/ ICW2
Attribue à chaque broche IRQi un numéro d’interruption.
Ce mot précise le numéro de l’IRQ, le 8259 assigne des
numéros consécutifs pour les sept autres broches.

• T3...T7 : Correspondent aux 5 derniers bits des numéros


d’interruption. Les 3 bits de poids faible sont ajoutés
automatiquement suivant le numéro de la broche qui a
provoquée l’interruption.
• Pour le maitre, les vecteurs d'interruption vont de INT08h à INT0Fh
(pointent les adresses de VIT : 00020h à 0003Fh).
• Pour l'esclave, les vecteurs d'interruption vont de INT70h à INT77h
(pointent les adresses de VIT : 001C0h à 001DFh).
17
La séquence d’initialisation : ICW2

18
La séquence d’initialisation : ICW2

• Q3: Specify the value of ICW2 if the type numbers


produced by the 8259A are to be in the range of 70h
through 77h.

ICW2 = 01110000 = 70h

• Q4: Assume that the starting address of the interrupt


vector for IRQ2 input is [0000h:0028h]. Calculate the
value to set the ICW2 register of 8259.
The starting address of interrupt vector for IRQ2 is [0000h:0028h]

 28h / 4 = 0Ah
 0Ah - 2 (from IRQ2) = 08h

 ICW2 = 08h
19
La séquence d’initialisation

3/ ICW3
Permet l’identification des PICs esclaves. Il est interprété par le
8259 de deux façons différentes suivant qu'il s'agit d'un maitre
ou d'un esclave.
ICW3 pour le maître

ICW3 pour l’esclave

ID0, ID1 et ID2 : Code d’identification de l’esclave. Il s’agit d’une


valeur qui correspond à la broche IRQi du maître à lequel l’esclave
est connecté.
20
La séquence d’initialisation
4/ ICW4 : registre fin d'interruption
Gestion des priorités???

Par défaut le 8259 gère les priorités dan


mode "fully nested" avec IRQ0 le plus
prioritaire et IRQ7 le moins prioritaire

Normale

21
La séquence d’initialisation
• Mode Emboitable Partiel
PIC SLAVE
ISR IRR
PIC MASTER IRQ0
0 0
ISR IRR
0 0
0 0
0 0
0 0
0 0
0 0 IRQ4
0 1
0 0
0 0
0 0
INTR 0 0
0 0
0 0 IRQ7
0 0
0 0

INTA
22
La séquence d’initialisation
• Mode Emboitable Partiel
PIC SLAVE
ISR IRR
PIC MASTER IRQ0
0 0
ISR IRR
0 0
0 0
0 0
0 0
0 0
0 1 IRQ4
0 1
0 0
0 0
0 0
INTR 0 0
0 0
0 0 IRQ7
0 0
0 0

INTA
23
La séquence d’initialisation
• Mode Emboitable Partiel
PIC SLAVE
ISR IRR
PIC MASTER IRQ0
0 0
ISR IRR
0 0
0 0
0 0
0 0
0 0
0 1 IRQ4
0 1
0 0
0 0
0 0
INTR 0 0
0 0
0 0 IRQ7
0 0
0 0

INTA
24
La séquence d’initialisation
• Mode Emboitable Partiel
PIC SLAVE
ISR IRR
PIC MASTER IRQ0
0 0
ISR IRR
0 0
0 0
0 0
0 0
0 0
1 0 IRQ4
1 0
0 0
0 0
0 0
INTR 0 0
0 0
0 0 IRQ7
0 0
0 0

INTA Envoi du N° d’int de IRQ4


sur le bus de données
25
La séquence d’initialisation
• Mode Emboitable Partiel
PIC SLAVE
ISR IRR
PIC MASTER IRQ0
0 0
ISR IRR
0 0
Demande prioritaire
0 0 IRQ2
0 1
0 0
0 0
1 0 IRQ4
1 0
0 0
0 0
0 0
INTR 0 0
0 0
0 0 IRQ7
0 0
0 0

INTA
26
La séquence d’initialisation
• Mode Emboitable Partiel
PIC SLAVE
ISR IRR
PIC MASTER IRQ0
0 0
ISR IRR
0 0
Demande prioritaire
0 0 IRQ2
0 1
0 0
0 0
1 1 IRQ4
Pas d’envoi 1 0
de demande
0 0
0 0
0 0
INTR 0 0
0 0
0 0 IRQ7
0 0
0 0

INTA
27
La séquence d’initialisation
• Mode Emboitable Complet
PIC SLAVE
ISR IRR
PIC MASTER IRQ0
0 0
ISR IRR
0 0
Demande prioritaire
0 0 IRQ2
0 1
0 0
0 0
1 1 IRQ4
1 0
0 0
0 0
0 0
INTR 0 0
0 0
0 0 IRQ7
0 0
0 0

INTA
28
La séquence d’initialisation
• Mode Emboitable Complet
PIC SLAVE
ISR IRR
PIC MASTER IRQ0
0 0
ISR IRR
0 0
0 0 IRQ2
1 0
0 0
0 0
1 0 IRQ4
1 0
0 0
0 0
0 0
INTR 0 0
0 0
0 0 IRQ7
0 0
0 0 La gestion des priorités Plusiseurs int du PIC
est laissée au PIC Slave Slave en cours
INTA d’exécution
29
La séquence d’initialisation : ICW4
• Q5 : Specify the value of ICW4 such that the 8259A is
configured for use in an 8086 system, with normal
EOI, buffered-mode master, and special fully nested-
mode enabled.

ICW4 = 00011101 = 1DH

30
Exercice
• Write a program that initializes an 8259A with the
initialization command words derived from questions
1, 3 and 5. Assume that the ICW1 register of 8259A
resides at address 20H in the I/O space.
CLI ;Disable interrupts
MOV DX, 20H
MOV AL, 13H ;ICW1 loaded Address of ICW1: 20H
ICW1 <-- 13h
OUT DX, AL Address of ICW2-4: 21H
MOV DX, 21H ICW2 <-- 70H
ICW4 <-- 1DH
MOV AL, 70H ;ICW2 loaded
OUT DX, AL
MOV AL, 1DH ;ICW4 loaded
OUT DX, AL ;Initialization completes
STI ;Enable interrupts
31
Initialisation du 8259 : résumé

LES DEUX 8259A (MAÎTRE ET ESCLAVE) DU PC SONT


INITIALISÉS PAR LE BIOS. IL N'Y A RIEN À
MODIFIER SAUF À VOULOIR PERTURBER
SÉRIEUSEMENT LE FONCTIONNEMENT DU PC !!

NOUS ALLONS DONC SIMPLEMENT ET


RAPIDEMENT REGARDER
L'INITIALISATION EFFECTUÉE PAR LE
BIOS.

32
Initialisation ICW1

BIT 0 : 1 CAR C'EST DANS ICW4 QUE L'ON SPÉCIFIE 8085(par


défaut) ou 80X86.

BIT 1 : 0 CAR IL Y A DEUX 8259A DANS UN PC.

BIT 2 : X CAR NE CONCERNE QUE L'INTERFACE AVEC UN 8085.

BIT 3 : 0 MODE EDGE.

BITS 5,6,7 : X CAR NE CONCERNENT QUE L'INTERFACE AVEC


UN 8085.
Initialisation ICW2

EN MODE 80X86 ICW2 SERT À FIXER LE NUMERO


D'INTERRUPTION POUR L'ENTRÉE IRQ0. CE NUMERO EST
OBLIGATOIREMENT UN MULTIPLE DE 8.

LE BIOS DONNE À ICW2 :


LA VALEUR 08H POUR LE 8259A MAÎTRE.
LA VALEUR 70H POUR LE 8259A ESCLAVE.

CELA SIGNIFIE QUE POUR LE 8259 MAÎTRE L'ENTRÉE


IRQ0 CORRESPOND À L'INTERRUPTION 8, L'ENTRÉE
IRQ1 L'INT 9, L'ENTRÉE IRQ2 L'INT 0Ah … ET L'ENTRÉE
IRQ7 L'INT 0Fh.

34
Initialisation ICW3

ICW3 EST OBLIGATOIRE CAR IL Y A PLUSIEURS 8259A.

POUR LE 8259A MAITRE : ICW3 = 00000100


AFIN QUE LE MAÎTRE SACHE QU'IL A UN ESCLAVE SUR
SON ENTRÉE IR2.

POUR LE 8259A ESCLAVE : ICW3 = XXXXX010


AFIN QUE L'ESCLAVE SACHE QUE SA SORTIE INT EST
RELIÉE À L'ENTRÉE IR2 DU MAITRE.

35
Initialisation ICW3

BIT 0 : 1 CAR ON UTILISE LE MODE 80X86.

BIT 1 : 0 CAR ON N'UTILISE PAS L'AUTOMATIQUE EOI.

BITS 2 ET 3 : DÉPENDENT DE LA CONCEPTION DE LA


CARTE MÈRE.

BIT 4 : 0 CAR ON UTILISE LE MODE FULLY NESTED.


Les mots d’opération

1/ OCW1 : registre masque des interruptions (R/W)


Permet d’établir le masque d’interruption du registre
IMR.

0 : Enable Interrupt from IRQi


Mi
1 : Disable Interrupt from IRQi

Un bit fixé à 1 correspond à interdire l'interruption portant le


même numéro d'ordre ; un 0 correspond à l'autoriser.

Dans tous les cas, les demandes sont inscrites dans l’IRR.
37
Les mots d’opération : OCW1
Q6: What is the OCW1 code if interrupt inputs IRQ0 to
IRQ3 are to be disabled and IRQ4 to IRQ7 enabled?
OCW1 = 00001111

Q7: Enable COM1 (IRQ 4) interrupts of the master in


the PC (IMR port@ = 21h).

in al, 21h ; Read existing bits


and al, 0efh ; Turn on IRQ 4 (COM1)
out 21h, al ; Write result back to PIC

Pour résumer:

Autoriser ==> AND ; Interdire ==> OR


38
Les mots d’opération : OCW2
1/ OCW2 :
Indique l’ordre de priorité et le mode de fin d’interruption.

L0…L2 (Level): Précisent le niveau (ou simplement le N° de la broche) de la


demande d’interruption visée par l’opération d’OCW2.

EOI (End Of Interrupt): Définit le mode de fin d’interruption.

SL (Select Level): Autorise L0, L1 et L2 à fonctionner.

R (Rotate): Commande les rotations de priorité.

39
Les mots d’opération : OCW2
• Par défaut le 8259 gère les priorités dans le mode
"fully nested" avec IRQ0 le plus prioritaire et IRQ7 le
moins prioritaire.
• Le BIOS du PC ne modifie pas ce mode qui est le
mode par défaut.
• Le 8259 offre la possibilité de modifier l'ordre des
priorités.
• Le 8259 offre également la possibilité de travailler
avec des priorités tournantes. Cela signifie que
lorsqu'une demande d‘INT vient d'être servie elle se
retrouve automatiquement avec la priorité la plus
faible.

40
Les mots d’opération : OCW2

41
Le Priority Resolver
On suppose que l'on utilise le mode par défaut (IRQ0 le plus prioritaire).
Supposons que l'entrée IRQ2 est activée (IRR bit
ISR PRIORITY RESOLVER
IRR 2 mis à 1).

0 0 0 0 Le 8259 active l'entrée INTR du μp

1 0 0 1 Si cette entrée est démasquée le μp envoi les 2


signaux INTA.
2 01 10 2
Le 8259 sait que maintenant le μp exécute le
3 0 0 3 programme d‘INT 2 : le Priority Resolver met à 1
4 0 0 4 le bit 2 du registre ISR.

5 0 0 5
6 0 0 6
7 0 0 7
Tant que le bit 2 de ISR est à 1
INTR
le Priority Resolver ne s'intéressera qu'aux
demandes d'interruption de priorité strictement
INTA supérieure.

42
Le Priority Resolver (suite)
On suppose que l'on utilise le mode par défaut (IRQ0 le plus prioritaire).

PRIORITY
ISR RESOLVER IRR
0 0 0 0
Supposons maintenant que l'entrée IRQ5 est
1 0 0 1 activée (IRR bit 5 mis à 1).
2 1 0 2
3 0 0 3
4 0 0 4 Tant que le bit 2 du registre ISR sera à 1 le Priority
Resolver n'interrompera le μp que pour des
5 0 10 5 demandes d'interruption de priorité strictement
supérieure (IRR0 et IRR1).
6 0 0 6
7 0 0 7

43
Le Priority Resolver (suite et fin)
On suppose que l'on utilise le mode par défaut (IRQ0 le plus prioritaire).

Supposons maintenant que l'entrée IRQ0 est


PRIORITY activée (IRR bit 0 mis à 1).
ISR RESOLVER IRR
0 10 01 0 Le 8259 active l'entrée INTR du μp

1 0 0 1
Si cette entrée est démasquée le μp envoi les 2
INTA.
2 1 0 2 Le 8259 sait que maintenant le μp exécute le
3 0 0 3 programme d‘INT 0 : le Priority Resolver met à 1
le bit 0 du registre ISR.
4 0 0 4
5 0 1 5
6 0 0 6
7 0 0 7
Tant que ce bit 0 du registre ISR sera à 1 le 8259 ne
INTR pourra plus interrompre le μp.

INTA

44
EOI (End Of Interrupt)
• Chaque fois que le μp accepte une demande
d'interruption le 8259 met à 1 le bit correspondant
dans le registre ISR.
• Tant qu'un, ou plusieurs bits du registre ISR sont à 1,
le 8259 ne peut interrompre le μp que pour des
demandes d'interruption de priorité strictement
supérieure.
• Question : comment remettre à 0 un bit du registre
ISR ?

mov al, 20h ; 20H = 001 00 000b donc EOI not SL


out 20h, al ;Pour fin d’IT au niveau du maître
; Port 0A0h pour l’esclave. 45
Effet d'un EOI non spécifique
Supposons que le registre ISR a la valeur ci-contre.

ISR Supposons que le 8259 travaille dans le mode par défaut : IRQ0 le plus
prioritaire et IRQ7 le moins prioritaire.
0 0
1 0
2 01 Lorsque le 8259 reçoit un EOI non spécifique il remet à 0 le bit 2 du registre ISR.

3 0
4 1 mov al, 20h
5 0 out 20h, al
6 1 Ceci fonctionne parfaitement tant que l'on ne modifie pas l'ordre des priorités …
7 0 Sinon, il faut utiliser un EOI spécifique.

46
Effet d'un EOI spécifique
Supposons que le registre ISR a la valeur ci-contre.
ISR
0 0
1 0
2 1 Lorsque le 8259 reçoit un EOI spécifique

3 "fin de l'interruption 4"


0
il remet à 0 le bit 4 du registre ISR.
4 01
5 0
6 1
mov al, 01100100b
?? = 64H
7 0
out 20h, al

47
Les mots d’opération : OCW2

48
Modification de l'ordre des priorités

• Cette commande permet de modifier l'ordre des


priorités avec la règle suivante : PRIORITÉ 0 :
LA PLUS FORTE
Par exemple, si on veut que IRQ3 soit le plus
IR0 0
prioritaire, cela implique que IRQ2 sera le moins
IR1 1
prioritaire. IR2 2

Donc, R SL EOI = 1 1 0 IR3 3


IR4 4
Et L2 L1 L0 = 2 (N° de l’IRQ de faible priorité) IR5 5
OCW2 = 11000010b = 0C2h IR6 6
IR7 7

49
Gestion des priorités tournantes
• Il est possible d'envoyer un "Rotate on EOI".

• Dans ce cas, l'interruption qui se termine se retrouve


automatiquement avec la priorité la plus faible.

• Le code d'un "Rotate on non specific EOI" est :


10100XXX (A0h, …)

50
Les mots d’opération
1/ OCW3 :
permet la lecture des registre IRR et ISR, et permet
aussi l’établissement du mode polling et du mode
spécial de masquage.

RR (Read Register Command): il autorise la lecture des registres IRR ou


ISR lorsqu’il est mis à 1. Le choix du registre à lire dépend de la valeur du
bit RIS.

RIS (Read In Service): Ce bit est utilisé pour choisir le registre ISR ou IRR.

51
Les mots d’opération : OCW3
• Read the in-service register in PIC #1 (at I/O address
20h) ?
mov al, 0bh ; 00001011b
out 20h, al
in al, 20h
• Read the interrupt request register in PIC #1 (at I/O
address 20h) ?

mov al, 0ah ; 00001010b


out 20h, al
in al, 20h

52
Les mots d’opération : OCW3

mov al, 00001100b


P (Poll command): Permet la priseout en 20h, al
charge
in al, 20h des
interruptions par scrutation. Danstestce al,
mode,
80h c’est le
jz Pas_de_demande_INT
microprocesseur qui a l’initiative de
anddéclencher les
al, 00000111b
interruptions. A la demande du µp... (OCW3 avec P=1),
le PIC envoi sur le bus de données le mot suivant :

W2…W0: représentent le code binaire de la demande


d’interruption de plus haute priorité.
53
Les mots d’opération : OCW3

54
Les mots d’opération : OCW3
ESMM (Enable Special Mask Mode): Autorise s’il est à
1 l’effet du bit SMM.

SMM (Special Mask Mode): Permet de résoudre le


problème d’occupations abusives du microprocesseur
par une routine d’interruption particulière.
Le SMM sert à autoriser les interruptions de tout
niveau différent de celui de l’interruption en service à
intervenir.

55
Les mots d’opération

56
Ports d’E/S du 8259 sur un PC
• Le 8259 maitre (IRQ0 à IRQ7) occupe deux adresses d'entrées-sorties :
• 0020H pour les registres : OCW2, OCW3 (IRR,ISR), ICW1
• 0021H pour les registres : OCW1, ICW2, ICW3, ICW4

• Le 8259 esclave (IRQ8 à IRQ15) occupe deux adresses d'entrées-sorties :


• 00A0H pour les registres : OCW2, OCW3 (IRR,ISR), ICW1
• 00A1H pour les registres : OCW1, ICW2, ICW3, ICW4
Adresse Read/Write Fonction
Write Initialization Command Word 1 (ICW1)
Write Operation Command Word 2 (OCW2)
20h/A0h
Write Operation Command Word 3 (OCW3)
Read Interrupt Request Register (IRR)
Read In-Service Register (ISR)
Write Initialization Command Word 2 (ICW2)

21h/A1h Write Initialization Command Word 3 (ICW3)


Write Initialization Command Word 4 (ICW4)
Read/Write Interrupt Mask Register (IMR)
57
Exemples
• Sending an non-specific end of interrupt command
mov al, 20h
out 20h, al ;Port 0A0h if IRQ 8-15.
• Read the in-service register in PIC #1 (at I/O address
20h)
mov al, 0bh
out 20h, al
in al, 20h
• Read the interrupt request register in PIC #1 (at I/O
address 20h)

mov al, 0ah


out 20h, al
in al, 20h

58

Vous aimerez peut-être aussi