Les interruptions matérielles dans le système processeur 68000 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BTS informatique industrielle | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
David Saint-Mellion | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Les demandes interruptions par les composants périphériquesCes interruptions sont produites par un périphériques à l'occasion d'un événement. Elles sont accueillies au niveau du processeur sur les 3 bornes "IPL". Codage des niveaux de demande d'interruption
Masquage des demandes d'IT
Exemple :
Traitement vectorisé des interruptions matérielles
|
Lorsque le processeur a lancé la requête pour obtenir le N° de vecteur, il attend que le périphérique concerné valide l'information /DTACK. Lorsque /DTACK=0, le processeur échantillonne la données "N° de vecteur". |
![]() |
Le principe est similaire aux autres traitements d'interruption (voir Processeur 68000, gestion de la mémoire et Interruptions ).
. Le traitement diffère sur 3 points.
Si niveau de la demande est <ou = niveau masque (SR)
alors,
La demande est rejetée. Le processeur poursuit l'opération courante.
sinon,
Le processeur :
- Sauve la valeur du SR dans un registre interne.
- Supprime le mode trace (bit T du SR mis à 0) et passe en superviseur (bit S du SR mis à 1).
- Recopie le niveau de la demande dans le masque AIT de SR.
- Sauve le contexte dans la pile et demande le numéro de vecteur.
- Va dans la table des vecteurs à l'adresse = N° vecteu x 4 se procurer l'adresse de la première. instruction à exécuter du programme associé à l'interruption.
- Exécute ce programme jusqu'à rencontrer l'instruction RTE.
- Restitue le contexte antérieur. Il préleve, dans la pile superviseur, d'abord un objet de 16 bits qu'il affecte au SR puis un objet de 32 bits qu'il affecte au PC
- Exécute l'instruction pointée par le PC.
Soit un système processeur qui exécute une instruction "Instruction 1". Le compteur programme (PC) pointe sur l'instruction suivante qui se situe à l'adresse 31820h. Le registre d'état SR a pour valeur 0000h. Le pointeur de pile Utilisateur (US) pointe l'adresse 1006. Le pointeur de pile Superviseur (SSP) pointe l'adresse 2008h. Une demande d'interruption de niveau 3 (IPL2=1, IPL1=IPL0=0) apparaît lorsque l'on exécute "Instruction 1". Le programme associé à cette interruption se situe à l'adresse 24000h et le N° de vecteur est 41h.
Lorsque le processeur exécute "Instruction1", le PC pointe sur l'instruction suivante en 31820. Le processeur est dans l'état Utilisateur, donc A7 =USP=1006. Le niveau du masque IT vaut 0. Le niveau de la demande IT (3) est supérieur à celui du masque dont l'IT est prise en compte. | ![]() |
A l'apparition de l'interruption, le processeur sauve le SR dans un registre interne. Il passe en superviseur , recopie le niveau de la demande dans le masque IT et le pointeur pile devient donc A7=SSP=2008. | ![]() |
Il lance une requête à son environnement pour obtenir le N° de
vecteur. A cette fin, Il recopie le niveau de la demande sur les lignes A3, A2, A1 (011)
et place A23 à A4 en état haute impédance. Il met les lignes code fonction FC2, FC1,
FC0 à "1" (État IT), active /AS (0) et valide /LDS (0). Il est à cet instant
en mesure de lire le N° de vecteur sur le bus bas D7-D0. Le Processeur attend que
/DTACK=0.
Lorsque /DTACK=0, le processeur échantillonne la donnée et met un terme au transfert. |
![]() |
Il place dans la pile superviseur le PC et la valeur du SR contenue dans un registre interne du processeur. Le pointeur de pile superviseur est décrémenté de 6. | ![]() |
Le N° de vecteur est 41h. L' adresse du programme traitant l'interruption de niveau 3 se trouve à l'adresse 104h. Le processeur prélève, à cette adresse, un objet de 32 bits qu'il place dans le compteur programme. | |
Le processeur exécute le programme interruption à partir de l'adresse 240000h. Lorsqu'il rencontre l'instruction RTE, il restitue le contexte. |
![]() |
Le processeur effectue la reprise du programme interrompu dont l'instruction se situe à l'adresse 31820h. | ![]() |
Deux blocs fonctionnels apparaissent. L'un gère les priorités. L'autre gère la demande de N° de vecteur aux composants périphériques.
Ce bloc reçoit, en entrée, les demandes des composants portées par le lignes IRQn. Il produit, en sortie, les informations IPLn.
Les demandes des composants périphériques sont encodées avec une gestion des priorités. Si plusieurs demandes d'interruption, apparaissent simultanément, c'est celle du niveau le plus élevé qui est codée sur les lignes IPLn.
Une solution programmée (PAL, GAL) | Les composants standards, encodeurs de priorité, comme : 74xx147 ou 74xx148 |
|
|
Ce bloc fonctionnel est chargé d'activer la borne IAKC du composant dont la demande d'IT est prise en compte par le processeur.
Le bloc réalise une fonction décodage. Il reçoit ,en entrée, les informations A3, A2, A1, FC2, FC1, FC0, /AS et /LDS. Il produit en sortie les informations de demande de N° vecteur aux composants périphériques "IACKi". Il a, au maximum, 7 sorties.Le bloc décode la valeur du niveau, porté par les 3 lignes adresses A3 à A1. Cette fonction est validée si le processeur est en état IT : FC2=FC1=FC0=1, si les adresses sont valides /AS=0 et si /LDS=0.
Solution programmée (PAL, GAl): |
Solution autour du composant standard :décodeur binaire décimal du type 74xx138. |
Exemple d'équation pour /IACK1 IACK1=A3+A2+/A1+AS+LDS+/FC2+/FC1+/FC0 |
|
Le processeur calcule le N° de vecteur à partir du niveau de la demande
d'interruption.
Le processeur 68000 réserve 7 vecteurs : 25 à 31 pour ce traitement ( voir table des vecteurs du 68000 ).
Cette méthode peut être utilisée pour les composants périphériques qui ne sont pas prévus pour une intégration dans un environnement 68000 comme, par exemple, les convertisseurs analogiques numériques.
Le processeur calcule le N° de vecteur lorsque sa borne /VPA est activée
("0") pendant le cycle d'obtention du N° de vecteur. Au niveau de l'architecture une différence apparaît. L'information /IACKn, correspondant au niveau de la demande d'interruption, est connectée sur la borne /VPA du 68000. |
![]() |
Remarque : L'accès au programme est plus rapide car il ya l'économise d'un cycle bus. C'est la solution retenue dans l'environnement VME pour gérer les erreurs système (niveau 7 NMI).