Sie sind auf Seite 1von 12

Haute Ecole Rennequin SUALEM

Session 2004 - 2005

Logiciel de Contrôle
Résumé du cours
Examen le 31/05/2005
10h30 - AX

1
Haute Ecole Rennequin SUALEM
Session 2004 - 2005
Le 8259 : Contrôleur d’interruptions matérielles

Combien y a-t-il de bornes d’interruption dans un PC ?


3 bornes : RESET, NMI et INTR

Quelles interruptions sont masquables et comment ?


Seules les interruptions matérielles sur la borne INTR sont masquables par le flag I,
quand aux interruptions matérielles sur la borne NMI et les interruptions logicielles, elles
ne sont pas masquables.

Où sont connectés les contrôleurs d’interruptions ?


Le 8259/1 est connecté sur la borne INTR du µP et le 8259/2 est cascadé avec le 8259/1
sur la borne IRQ2 de celui-ci.

Comment trouver l’adresse de début du code d’une interruption ?


INT xxh, il suffit de multiplier par 4 le numéro de l’interruption (xxh x 4), ceci nous
donne le vecteur dans la table des vecteurs d’interruptions (adresse de début du code de
l’interruption : CS et IP).

Quelle est la taille de la table des vecteurs d’interruptions ?


Elle est située en RAM et va de 0h à 3FFh, donc elle a une taille de 1Kbits.

Combien d’interruptions matérielles sont disponibles ?


Si nous avons 1 seul 8259 → 8 interruptions matérielles
Si nous avons 2 8259 cascadés → 15 interruptions matérielles (16–1 car chaînage sur
IRQ2)

Quelles sont ces interruptions ?


IRQ 0 (INT 08h) → Horloge
IRQ 1 (INT 09h) → Clavier
IRQ 2 ───────────────────────── IRQ 8 (INT 70h) CMOS
IRQ 3 (INT 0Bh) → COM 2 IRQ 9 (INT 71h) Remplace IRQ 2
IRQ 4 (INT 0Ch) → COM 1 IRQ A (INT 72h) Synchro verticale
IRQ 5 (INT 0Dh) → LPT 2 IRQ B (INT 73h) -
IRQ 6 (INT 0Eh) → Disquette IRQ C (INT 74h) Réseau
IRQ 7 (INT 0Fh) → LPT 1 IRQ D (INT 75h) Coprocesseur Math.
IRQ E (INT 76h) Disque Dur
IRQ F (INT 77h) –

Comment obtenir le vecteur d’interruption quand on a le numéro d’IRQ ?


Si IRQ 0 à 7 : (IRQ + 08h) = INT et INT * 4 = Adresse du vecteur
Si IRQ 8 à F : (IRQ + 70h) = INT et INT * 4 = Adresse du vecteur

Quel est le mécanisme de prise en compte d’une interruption par le 8259 ?


Le 8259 reçoit une demande d’interruption sur l’un de ses IRQ, si elle est autorisée, elle est
transmise par un flanc montant sur la borne INT du 8259 vers le µP. Si le µP accepte la demande,
envoi un premier cycle sur l’INTA du 8259 qui positionne le bit correspondant à l’interruption dans
l’ISR du 8259. Un deuxième cycle sur l’INTA invite le 8259 à mettre le numéro de l’interruption
sollicitée sur le bus d’adresse (il sera multiplié par 4…).

Rôle des registres IRR (Interrupt Request Register) et ISR (Interrupt Service Register)
Chaque bit de IRR est positionné ou non si une interruption est en attente ou pas.
Quand un bit de ISR est positionné c’est que cette interruption est en cours.
Les interruptions sont ordonnées de 0 à 7 par ordre de priorité (0 = Max et 7/15 = Min)

2
Haute Ecole Rennequin SUALEM
Session 2004 - 2005
Quel est le processus d’initialisation d’un 8259 :

1° - On met 0 sur A0 du 8259 (20h ou A0h)

2° - Configuration de l’ICW1 (20h pour le 1er 8259 et A0h pour le 2ème) :


- Bits 7,6 et 5 à 0
- Bit 4 à 1 pour marquer le début de la séquence d’initialisation
- Bit 3 à 1 pour déclencher les interruptions par niveau ou à 0 si par front
- Bit 2 à 0
- Bit 1 à 1 si le 8259 est seul ou à 0 si cascadé
- Bit 0 à 1 si avec ICW4 (obligé car 8086) sinon à 0

3° - Configuration de l’ICW2 (20h pour le 1er 8259 et A0h pour le 2ème) :


- L’ICW2 est là pour gérer le décalage du numéro de l’IRQ et de l’interruption associée
dans la table des vecteurs d’interruption.

Donc :
o pour le premier 8259 : ICW2 = 08h
o pour le deuxième 8259 : ICW2 = 70h

3° - On met 1 sur A0 du 8259 (21h ou A1h)

4° - Configuration de l’ICW3 (Seulement si cascadés) (21h ou A1h)


- ICW3 pour le maître : Bit correspondant à entrée à 1 pour esclave
- ICW3 pour l’esclave : Bits 0,1,2 pour le numéro d’esclave

5° - Configuration de l’ICW4 (Demandé dans ICW1 car 8086) (21h ou A1h)


- Bit 0 à 1 pour sélectionner le 8086
- Bit 1 à 1 pour des EOI auto sinon à 0 mais obligation de l’EOI logicielle 20h à 20h
- Bit 3 à 7 à 0

Quels sont les Registre de commandes du 8259 :


Après initialisation du 8259, peut accéder aux mots de commande OCW1-2-3

- OCW1 : IMR (Interrupt Mask Register), adresse : 21h/A1h

Chaque bit représente une interruption, 1 = masquée

- OCW2 : Registre de commande de EOI, adresse : 20h/A0h

Pour y accéder il faut les bit 3 et 4 à 0


C’est ici qu’il faut signaler une EOI en écrivant 20h, ce qui aura pour effet d’effacer le
bit correspondant dans l’ISR et donc de permettre toute interruption infériure ou égale.

- OCW3 : Permet de lire l’IRR (Interrupt Request Register) ou l’ISR (Interrupt Service
Register) en positionnant les bits correspondant puis en relisant OCW3

Pour y accéder il faut le bit 3 à 1 et le 4 à 0, toujours à l’adresse 20h/A0h

Quelle est la différence entre une interruption matérielle et logicielle ?


A la fin d’une interruption matérielle, nous devons signaler le End of Interruption en
écrivant 20h dans le OCW2 donc à l’adresse 20h pour le premier 8259 ou A0h pour le
second cascadé.

Qu’est ce que la rotation des priorités ?


Lorsqu’une interruption vient d’être servie, elle passe automatiquement en priorité la plus
basse entraînant avec elle les autres interruptions. Ceci est paramétrable dans le registre
de l’EOI (OCW2).

3
Haute Ecole Rennequin SUALEM
Session 2004 - 2005
L’interface CENTRONICS

Il s’agit d’une interface parallèle avec protocole asynchrone de type handshake. Ce Mode
est aussi connu sous le nom de SPP (Standard Parallel Port).

- Le STB indique par son flanc descendant que le générateur de données a


déposé celle-ci sur le bus.

- L’ACK, impulsion active au niveau bas, indique que la donnée a été lue, donc
que le récepteur est prêt à recevoir une autre donnée.

- Le BUSY, actif au niveau 1, indique que le récepteur est occupé en réponse au


STB ou à un problème.

Quelle est l’interruption logicielle qui contrôle l’imprimante ?

L’interruption 17h.

Le mode EPP utilise t’il un DMA ?

Non mais par contre l’ECP utilise le DMA 3.

4
Haute Ecole Rennequin SUALEM
Session 2004 - 2005
Le 8255 : Interface Parallèle Programmable

Le 8255 est configurable selon 3 modes :

- Mode 0 : E/S parallèle synchrone (PA, PB, PC)


- Mode 1 : E/S parallèle asynchrone à 2 fils (handshake) (PA, PB, 2 fils de PC
pour STB et ACK)
- Mode 2 : E/S parallèle asynchrone bidirectionnelle (PA)

Les adresses des ports :

- PA : 300h ou 1B0h ou 60h


- PB : 301h ou 1B1h ou 61h
- PC : 302h ou 1B2h ou 62h
- CW : 303h ou 1B3h ou 63h

Le mot de commande CW :

- Bit 7 toujours à 1
- Bit 6 et 5 : Mode du port A et C haut (00, 01, 11) (GROUPE A)
- Bit 4 : Direction du port A : 1 en entrée et 0 en sortie
- Bit 3 : Direction du port C haut
- Bit 2 : Mode du port B et C bas (0, 1) (GROUPE B)
- Bit 1 : Direction du port B
- Bit 0 : Direction du port C bas

Analyse du mode 1 en sortie :

Le port C sert de « Status Word », selon que l’on utilise le port A ou B en Mode 1.

- OUT sur PA ou PB
- OBF passe à 0 (PC7 si OUT PA et PC1 si OUT PB) signal qu’une donnée est ok
- On attend que le récepteur nous signale qu’il a terminé son opération avec la
donnée. Ceci est fait quand il fait redescendre son ACK ce qui fait remonter
notre OBF à 1. Nous pouvons faire un autre cycle.

Analyse du mode 1 en entrée :

Le port C sert de « Status Word », selon que l’on utilise le port A ou B en Mode 1.

- L’émetteur dépose la donnée sur le port d’entrée et fait descendre le STB (1


au repos)
- Ceci provoque la mémorisation de la donnée et la mise à 1 de l’IBF
- L’IBF sera remis à 0 quand le µP aura lu la donnée ce qui servira d’ACK à
l’émetteur pour entamer un autre cycle.

5
Haute Ecole Rennequin SUALEM
Session 2004 - 2005
Le 8253/8254 : Timer

De combien de compteurs est composé un 8253 ?

Nous trouvons 3 compteurs avec chacun 1 GATE, 1 CLK et 1 OUT

Les adresses des compteurs sont :


- CPT0 = 308h
- CPT1 = 309h
- CPT2 = 30Ah

Quel est le rôle de la GATE ?

Si on met la GATE à 0, elle bloque le compteur en question tandis qu’à 1, elle laisse faire
le compteur.

Combien de mode dispose un 8253 ?

Il possède 6 modes dont le mode le plus utilisé est le mode 3 dit de diviseur de
fréquence.

Mode 0 – DECOMPTEUR : le OUT est à 0 et passe à 1 au bout du décompte. Si le GATE


passe à 0, le processus est mis en pause.

Mode 1 – MONOSTABLE : Quand le GATE passe de 0 à 1, OUT est mis à 0 et passe à 1 au


bout du décompte.

Mode 3 – DIVISEUR DE FREQUENCE : Divise la fréquence d’entrée par la valeur dans le


compteur. Si le GATE passe à 0, le processus est mis en pause.

Description du Control Word d’un 8253 :

Le CW se situe à l’adresse 30Bh

- Bit 0 : Mode BCD = 1 et Mode binaire = 0


- Bit 1, 2 et 3 : Mode du compteur
- Bit 4 et 5 : Mode de chargement ou de lecture = 11 pour L puis H
- Bit 7 et 6 : Numéro du compteur (00, 01 ou 10)

Quelle est la séquence d’initialisation d’un 8253 en mode 3 ?

- Initialiser les CW des compteurs à utiliser à l’adresse du CW

- Charger la partie basse du compteur à l’adresse du CPT0


- Charger la partie haute du compteur à l’adresse du CPT0

- Charger la partie basse du compteur à l’adresse du CPT1


- Charger la partie haute du compteur à l’adresse du CPT1

- Charger la partie basse du compteur à l’adresse du CPT2


- Charger la partie haute du compteur à l’adresse du CPT2

Citer une application du mode 1 (monostable) du 8253.

Le mode 1 peut être utilisé comme WATCHDOG. Génération d’une impulsion sur le GATE

6
Haute Ecole Rennequin SUALEM
Session 2004 - 2005
pour réinitialiser le décompteur, si le compteur arrive à la fin la remontée du OUT
provoque un RESET.

Quelle est la méthode de relecture d’un compteur (8254) ?

Initialiser le CW :

- Bit 7, 6 : à 1 pour activer la lecture


- Bit 5 : à 0 pour activer la mémorisation du compte courant
- Bit 4 : à 0 pour activer la mémorisation de l’état
- Bit 3, 2 et 1 : à 1 pour mémoriser les données du compteur correspondant
- Bit 0 : à 0 (réservé)

On peut mémoriser plusieurs compteurs à la fois, la séquence de lecture se fait dans


l’ordre suivant :

Initialiser le CW

Mov DX,CPT0
In AL,DX Lecture du statut en premier si statut et compte sélectionné
Le statut comporte la config du compteur de 0 à 5

In AL,DX Lecture de la partie basse du compte


Mov AH,AL
In AL,DX Lecture de la partie haute du compte

Idem CPT1
Idem CPT2

7
Haute Ecole Rennequin SUALEM
Session 2004 - 2005
Le DMAC 8237 : Echange par DMA

Quel est le principe du DMA ?

C’est la possibilité pour un périphérique d’échanger des données directement avec la


mémoire sans passer par le µP, le DMAC remplace alors le µP.

µP

RAM
8237 I/O
DEC DRQ

DACK

Quelle est la différence fondamentale entre un périphérique classique et un autre géré


sous DMA ?
Les périphériques gérés par DMA n’ont pas d’adresse, celui concerné par l’échange de
donnée est sélectionné par la réponse DACK du 8237 sur son CS.

Par quoi est caractérisé l’échange par DMA ?


- Rapidité d’exécution car on n’exécute sans avoir à décoder d’instructionù=
- Simplicité d’utilisation (peu de programme)
- Faculté naturelle de travailler en arrière plan

Quel est le rôle du registre de page ?


Les adresses de base que le 8237 peut fournir sont sur 16 bits, alors que le PC utilise des
adresses sur 20 bits. Le registre de page est là pour compléter les adresse fournies par le
DMAC.
Exemple : on doit atteindre un buffer défini en B800:A5ED

B800
+ A5ED

C25ED La page = 0Ch


L’adresse de base = 25EDh

Adresses des registres de page:

Canal 0 et 1 : 83h
Canal 2 : 81h
Canal 3 : 82h

8
Haute Ecole Rennequin SUALEM
Session 2004 - 2005
Comment fonctionne un échange par DMA ?
Lecture d’un périphérique vers la mémoire :

- Le périphérique qui souhaite un échange provoque un DRQ sur sa broche


attribuée sur le 8237
- Si la demande n’est pas masquée au niveau du 8237, ce dernier la transmet
au µP par la mise à 1 du HLD
- Le µP autorise le transfert en activant HLDA à 1 et se déconnecte en mettant
ses 3 bus en haute impédance.
- Le 8237 génère l’adresse de la mémoire cible
- Le 8237 délivre son DACK à 0, ce qui active le CS du périphérique demandeur
- Le périphérique dépose sa donnée
- Le 8237 active les signaux IOR et MEMW pour achever le transfert.

Attention le DRQ doit être maintenu jusqu’à la réponse du DACK et redescendre avant la
remontée du DACK.

Quels sont les registres du 8237 ?

Registre de commandes (08h) :

- Bit 7 : DACK actif au niveau bas(0) ou haut (1)


- Bit 6 : DREQ actif au niveau bas(1) ou haut (0)
- Bit 5 : /
- Bit 4 : Priorité fixe (0) ou tournante (1)
- Bit 3 : /
- Bit 2 : /
- Bit 1 : /
- Bit 0 : Transfert MEM à MEM autorisé (1) ou inhibé (0)

Registre de masquage (0Ah):

- Bit 0, 1 et 2 : Numéro du canal à masquer.

Registre de modes (0Bh) :

- Bits 7 et 6 : Modes, unique (01)


- Bit 5 : 0
- Bit 4 : 0
- Bits 3 et 2 : lecture (10) ou écriture (01)
- Bit 1 et 0 : Numéro de la voie

Quelle est la séquence de paramétrage du DMA 3 pour la lecture de N données sur un


I/O ?

1- Interdire les interruptions


2- REGISTRE DE COMMANDE (8) : 00000000 (facultatif)

3- REGISTRE DE MASQUE (0Ah): Masquer le Canal 3 (00000111)

4- REGISTRE DE MODE (0Bh): 0100 + lecture (10)+ canal 3 (11)

5- Charger la partie basse de l’adresse cible 16 bits à l’adresse 6


6- Charger la partie haute de l’adresse cible 16 bits à l’adresse 6

9
Haute Ecole Rennequin SUALEM
Session 2004 - 2005
7- Charger la page à l’adresse du registre de page du canal 3 (82h)

8- Charger la partie basse du nombre de lecture à réaliser à l’adresse 7


9- Charger la partie haute du nombre de lecture à réaliser à l’adresse 7

10-REGISTRE DE MASQUE (0Bh): Enlever le masque sur canal 3 (00000011)


11- Autoriser les interruptions

Quel peut être le rôle de TC ?

Si l’on associe le Terminal Count avec un DACK, on pourrait décoder quel canal DMA
vient de finir son transfert et ainsi générer une interruption en connectant la sortie de la
porte ET avec une borne d’interruption du 8259.

10
Haute Ecole Rennequin SUALEM
Session 2004 - 2005
Le Joystick :

Sur quoi se base le calcul des positions du joystick ?

C’est une mesure de temps qui permet la lecture des déplacements.

Quelle est la procédure de lecture d’une position ?

- Ecrire n’importe quoi à l’adresse 201h (FIRE)


- Mémoriser le cpt0 par un out de 0 en 43h donc T1
- Lire partie basse sauvée en 40h
- Lire partie haute sauvée en 40h
- Mémoriser le tout dans BX
- Polling sur le bit du potentiomètre en 201h, tant qu’il est à 0
(X+ =bit 0, Y+ = bit 1, X- = bit 2 , Y- = bit 3)
- Mémoriser le cpt0 par un out de 0 en 43h donc T2
- Lire partie basse sauvée en 40h
- Lire partie haute sauvée en 40h
- Mémoriser le tout dans AX
- T = AX - BX
- Idem avec les autres axes (X-,X+,Y-,Y+)

11
Haute Ecole Rennequin SUALEM
Session 2004 - 2005
Questions supplémentaires possibles :

Combien d’I/O sont possibles dans un PC ?

Le décodage ne tient compte que de 10 fils d’adresses (A0 à A9) donc nous sommes
limités à 1024 I/O utilisables (de 00 à 3FFh)

Quelle commande est commune à chacun des I/O ?

Le Chip Select, commande tri-state.

12