0% ont trouvé ce document utile (0 vote)
23 vues12 pages

MP Les Interfaces ES 8086 5

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 12

Chap.

V
Les interfaces d’entrees/sorties du
8086
Chap. V : Les interfaces d’entrees/sorties du 8086
I. Définition ................................................................................................................................................................... 2
II. Adressage des ports d’E/S ........................................................................................................................................ 2
2.1 Adressage cartographique : ................................................................................................................................... 2
2.2 Adressage indépendant : ........................................................................................................................................ 2
III. Gestion des ports d’E/S par le 8086 .................................................................................................................... 3
IV. L’interface parallèle 8255 (PPI : Programmable Peripheral Interface)............................................................ 3
4.1 Schéma fonctionnel ................................................................................................................................................. 4
4.2 Configuration du 8255 ............................................................................................................................................ 5
4.3 Structure du registre de commande ...................................................................................................................... 5
4.4 Connexion du 8255 sur les bus du 8086 ............................................................................................................... 5
4.5 Exemple de programmation................................................................................................................................... 6
V. L’interface sérielle 8250 ........................................................................................................................................... 7
5.1 Principe d’une interface série : .............................................................................................................................. 8
5.2 Schéma fonctionnel de l’UART 8250 ..................................................................................................................... 8
5.3 Les registres du 8250 ............................................................................................................................................. 8
VI. Le Timer 8254 (PIT PROGRAMMABLE INTERVAL TIMER) .............................................................................. 9
6.1 Schéma fonctionnel ................................................................................................................................................. 9
6.2 Adressage du 8254.................................................................................................................................................. 9
6.3 Structure du registre de commande .................................................................................................................... 10
VII. Les interruptions ................................................................................................................................................. 10
7.1 Prise en charge d’une interruption par le microprocesseur ............................................................................. 10
7.2 Adresses des sous-programmes d’interruptions ............................................................................................... 11
7.3 Les interruptions du 8086.................................................................................................................................... 11
VIII. Le contrôleur programmable d’interruptions 8259 ........................................................................................ 11
8.1 Connexion au microprocesseur 8086.................................................................................................................. 12
8.2 Multiplication des sources d’interruptions ......................................................................................................... 12
I. Définition
Une interface d’entrées/sorties est un circuit permettant au microprocesseur de communiquer avec l’environnement
extérieur (périphériques) : clavier, écran, imprimante, disques, processus industriel, ...
Les interfaces d’E/S sont connectées au microprocesseur à travers les bus d’adresses, de données et de commandes.
Les points d’accès aux interfaces sont appelés ports.

Figure 1 : Les entrées / sorties.

II. Adressage des ports d’E/S


Un circuit d’E/S possède des registres pour gérer les échanges avec les périphériques :
• Registres de configuration ;
• Registres de données.
A chaque registre est assignée une adresse : le microprocesseur accède à un port d’E/S en spécifiant l’adresse de l’un
de ses registres. Le microprocesseur peut voir les adresses des ports d’E/S de deux manières :

2.1 Adressage cartographique :


Les adresses des ports d’E/S appartiennent au même espace mémoire que les circuits mémoire (on dit que les E/S sont
mappées en mémoire). Ceci a pour conséquences :
– l’espace d’adressage des mémoires diminue ;
– l’adressage des ports d’E/S se fait avec une adresse de même longueur (même nombre de bits) que pour les cases
mémoires ;
– toutes les instructions employées avec des cases mémoires peuvent être appliquées aux ports d’E/S : les mêmes
instructions permettent de lire et écrire dans la mémoire et les ports d’E/S, tous les modes d’adressage étant valables
pour les E/S.

2.2 Adressage indépendant :


Le microprocesseur considère deux espaces distincts :
– l’espace d’adressage des mémoires ;
– l’espace d’adressage des ports d’E/S, c’est le cas du microprocesseur 8086.
Conséquences :
– contrairement à l’adressage cartographique, l’espace mémoire total adressable n’est pas diminué ;
– l’adressage des port d’E/S peut se faire avec une adresse plus courte (nombre de bits inférieur) que pour les circuits
mémoires ;
– les instructions utilisées pour l’accès à la mémoire ne sont plus utilisables pour l’accès aux ports d’E/S : ceux-ci
disposent d’instructions spécifiques ;

Université de BBA-Département d’Electronique Tarek Abed (2013/2014) 2


– une même adresse peut désigner soit une case mémoire, soit un port d’E/S : le microprocesseur doit donc fournir un
signal permettant de différencier l’adressage de la mémoire de l’adressage des ports d’E/S.
Remarque : l’adressage indépendant des ports d’E/S n’est possible que pour les microprocesseurs possédant un signal
permettant de différencier l’adressage de la mémoire de l’adressage des ports d’E/S ainsi que les instructions
spécifiques pour l’accès aux ports d’E/S. Par contre, l’adressage cartographique est possible pour tous les
microprocesseurs.

III. Gestion des ports d’E/S par le 8086


Le 8086 dispose d’un espace mémoire de 1 Mo (adresse d’une case mémoire sur 20 bits) et d’un espace d’E/S de 64 Ko
(adresse d’un port d’E/S sur 16 bits). Le signal permettant de différencier l’adressage de la mémoire de l’adressage des
ports d’E/S est la ligne M / IO :
• Pour un accès à la mémoire, M / IO = 1 ;
• Pour un accès aux ports d’E/S, M / IO = 0.
Ce signal est utilisé pour valider le décodage d’adresse dans les deux espaces :
Les instructions de lecture et d’écriture d’un port d’E/S sont respectivement les instructions IN et OUT. Elles placent la
ligne M / IO à 0 alors que l’instruction MOV place celle-ci à 1.
Lecture d’un port d’E/S : Ecriture d’un port d’E/S :
• Si l’adresse du port d’E/S est sur un octet : • Si l’adresse du port d’E/S est sur un octet :
IN AL, adresse : lecture d’une donnée sur 8 bits ; OUT adresse, AL : écriture d’une donnée sur 8 bits ;
IN AX, adresse : lecture d’une donnée sur 16 bits. OUT adresse, AX : écriture d’une donnée sur 16 bits.
• Si l’adresse du port d’E/S est sur deux octets : • Si l’adresse du port d’E/S est sur deux octets :
IN AL, DX : lecture d’une donnée sur 8 bits ; OUT DX, AL : écriture d’une donnée sur 8 bits ;
IN AX, DX : lecture d’une donnée sur 16 bits. OUT DX, AX : écriture d’une donnée sur 16 bits.

Le registre DX doit donc contenir l’adresse du port d’E/S à lire ou à écrire.


Exemples :
• Lecture d’un port d’E/S sur 8 bits à l’adresse 0300H :
mov DX, 0300h
in AL, DX
• Ecriture de la valeur 1234h dans le port d’E/S sur 16 bits à l’adresse 49h :
mov AX, 1234h
out 49h, AX

IV. L’interface parallèle 8255 (PPI : Programmable Peripheral Interface)


Le rôle d’une interface parallèle est de transférer des données du microprocesseur vers des périphériques et
inversement, tous les bits de données étant envoyés ou reçus simultanément. Le 8255 est une interface parallèle
programmable : elle peut être configurée en entrée et/ou en sortie par programme.

Université de BBA-Département d’Electronique Tarek Abed (2013/2014) 3


Figure 2 : Brochage du 8255

4.1 Schéma fonctionnel

Figure 3 : Schéma fonctionnel.


Le 8255 contient 4 registres :
• Trois registres contenant les données présentes sur les ports A, B et C ;
• Un registre de commande pour la configuration des ports A, B et C en entrées et/ou en sorties.
L’accès aux registres du 8255 se fait grâce aux lignes A0 et A1. Elles définissent les adresses des registres du 8255 :

Université de BBA-Département d’Electronique Tarek Abed (2013/2014) 4


Remarque : le registre de commande est accessible uniquement en écriture, la lecture de ce registre n’est pas autorisée.

4.2 Configuration du 8255


Les ports peuvent être configurés en entrées ou en sorties selon le contenu du registre de commande. De plus le 8255
peut fonctionner selon 3 modes : mode 0, mode 1 ou mode 2.
Dans le mode 0, les ports sont configurés en entrées/sorties de base. Les données écrites dans les registres
correspondants sont mémorisées sur les lignes de sorties ; l’état des lignes d’entrées est recopié dans les registres
correspondants et n’est pas mémorisé.
En mode 1, deux groupes A et B sont définis. Chaque groupe contient un port de 8 bits configuré en entrées ou en
sorties, ainsi que 4 bits pour le contrôle du port d’E/S et la communication avec le périphérique extérieur.
Le mode 2 permet de réaliser sur le port A (uniquement) un bus de données bidirectionnel de 8 bits, 5 bits sur le port
C sont utilisés pour le contrôle et l’état du bus de données.

4.3 Structure du registre de commande

Figure 4 : Registre de configuration.

4.4 Connexion du 8255 sur les bus du 8086


Le bus de données du 8255 est sur 8 bits alors que celui du microprocesseur 8086 est sur 16 bits. On peut donc
connecter le bus de données du 8255 sur les lignes de données de poids faible du 8086 (D0 - D7) ou sur celles de poids
fort (D8 - D15).
Une donnée est envoyée (ou reçue) par le microprocesseur 8086 :
• Sur la partie faible du bus de données lorsque l’adresse à écrire (ou à lire) est paire : validation par A0 ;
• Sur la partie haute lorsque l’adresse est impaire : validation par BHE .
Ainsi l’un de ces deux signaux A0 ou BHE doit être utilisé pour sélectionner le 8255 :

Figure 5 : Décodage d’adresse et connexion au microprocesseur.


Les adresses des registres du 8255 se trouvent donc, à des adresses paires (validation par A0), ou impaires (validation
par BHE).

Université de BBA-Département d’Electronique Tarek Abed (2013/2014) 5


Le décodeur d’adresses détermine l’adresse de base du 8255 ; les lignes A1 et A2 déterminent les adresses des registres
du 8255.
Détermination des adresses du 8255 : On suppose qu’on utilise l’adresse 300h comme adresse de base.

• A2 = 0 et A1 = 0 : adresse du port A = adresse de base + 0 = 300h ;


• A2 = 0 et A1 = 1 : adresse du port B = adresse de base + 2 = 302h ;
• A2 = 1 et A1 = 0 : adresse du port C = adresse de base + 4 = 304h ;
• A2 = 1 et A1 = 1 : adresse du registre de commande = adresse de base + 6 = 306H.

4.5 Exemple de programmation


Soit le montage suivant :

Figure 6 : Exemple d’application du 8255.


On veut que la led s’allume lorsqu’on a la combinaison : K0 = 1 et K1 = 0 et K2 = 1.
Programme :
portA equ 300H ; adresses des registres du 8255
portB equ 302H
portC equ 304H
controle equ 306H
mov dx, controle ; initialisation du port A en entrée
mov al, 90H ; et du port B en sortie (mode 0) :
out dx, al ; controle = 10010000B = 90H
boucle : mov dx, portA ; lecture du port A
in al, dx
and al, 00000111B ; masquage PA0, PA1 et PA2
cmp al, 00000101B ; test PA0 = 1, PA1 = 0 et PA2 = 1
jne faux ; non  aller au label ‘‘faux’’ ...
mov al, 00000001B ; oui  mettre PB0 à 1
jmp suite ; et continuer au label ‘‘suite’’
faux : mov al,00000000B ; ... mettre PB0 à 0
suite : mov dx,portB ; écriture du port B
out dx, al
jmp boucle ; retourner lire le port A

Université de BBA-Département d’Electronique Tarek Abed (2013/2014) 6


V. L’interface sérielle 8250

Figure 7 : Connexion d’une interface sérielle au microprocesseur.


Une interface série permet d’échanger des données entre le microprocesseur et un périphérique bit par bit.
Ceci a pour avantage la diminution du nombre de connexions (1 fil pour l’émission, 1 fil pour la réception), cependant
la vitesse de transmission est plus faible que pour une interface parallèle.
Il existe deux types de transmissions séries :
• asynchrone : chaque octet peut être émis ou reçu sans durée déterminée entre un octet et le suivant ;
• synchrone : les octets successifs sont transmis par blocs séparés par des octets de synchronisation.
La transmission asynchrone la plus utilisée est celle qui est définie par la norme RS232.
Exemple : transmission du caractère ’E’ (code ASCII 45H = 01000101B) sous forme série selon la norme RS232 :

Figure 8 : Transmission du caractère sur une liaison RS232.


• l’état 1 correspond à une tension négative comprise entre −9 et −15 V, l’état 0 à une tension positive comprise entre
+9 et +15 V. Au repos, la ligne est à l’état 1 (tension négative) ;
• le bit de start marque le début de la transmission du caractère ;
• les bits de données sont transmis l’un après l’autre en commençant par le bit de poids faible. Ils peuvent être au
nombre de 5, 6, 7 ou 8. Chaque bit est maintenu sur la ligne pendant une durée déterminée T. On définit donc la notion
de vitesse de transmission qui décrit le nombre de bits transmis par secondes. 4800, 9600 bits/s sont des vitesses
normalisées ;
• le bit de parité (facultatif) est un bit supplémentaire dont la valeur dépend du nombre de bits de données égaux à 1.
Il est utilisé pour la détection d’erreurs de transmission ;
• les bits de stop (1, 1.5 ou 2) marquent la fin de la transmission du caractère.

Université de BBA-Département d’Electronique Tarek Abed (2013/2014) 7


5.1 Principe d’une interface série :

Figure 9 : Principe d’une liaison sérielle.


Un circuit intégré d’interface série asynchrone s’appelle un UART : Universal Asynchronous Receiver Transmitter) ; une
interface série synchrone/asynchrone est un USART.

5.2 Schéma fonctionnel de l’UART 8250

Figure 10 : Schéma fonctionnel du 8250

5.3 Les registres du 8250


Le 8250 possède 11 registres. Il n’a que 3 bits d’adresses (A0, A1 et A2). Plusieurs registres doivent donc se partager la
même adresse. En fonction de l’état de DLAB (Divisor Latch Access Bit = bit de poids fort du registre LCR), on a accès
soit au registre d’émission/réception, soit au diviseur d’horloge, soit au masque d’interruptions.

DLAB A2 A1 A0 Register
0 0 0 0 RBR : Receiver Buffer Register, registre de réception (accessible
seulement en lecture)
0 0 0 0 THR : Transmitter Holding Register, registre d’émission (accessible
seulement en écriture)

Université de BBA-Département d’Electronique Tarek Abed (2013/2014) 8


1 0 0 0 DLL : Divisor Latch LSB, octet de poids faible du diviseur d’horloge
DLM : Divisor Latch MSB, octet de poids fort du diviseur d’horloge
1 0 0 1 IER : Interrupt Enable Register, registre d’autorisation des interruptions
IIR : Interrupt Identification Register, registre d’identification des
0 0 0 1 interruptions
LCR : Line Control Register, registre de contrôle de ligne
X 0 1 0
MCR : Modem Control Register, registre de contrôle modem
X 0 1 1
LSR : Line Status Register, registre d’état de la ligne
X 1 0 0 MSR : Modem Status Register, registre d’état du modem
SCR : Scratch Register, registre à usage général
X 1 0 1
X 1 1 0
X 1 1 1

VI. Le Timer 8254 (PIT PROGRAMMABLE INTERVAL TIMER)


Le circuit d’E/S 8254 est un timer (temporisateur) et compteur programmable qui permet de générer des délais de
temporisation précis. Il permet également de réaliser les fonctions suivantes :
• Horloges temps réel ;
• Compteurs d’événements ;
• Générateur d’impulsions ;
• Générateur de signaux carrés …
Il est formé de trois compteurs identiques qui peuvent recevoir une horloge d’entrée de 8 ou 10MHz de fréquence, et
qui peuvent être programmés de manière totalement indépendante.

6.1 Schéma fonctionnel


CLK 0
Gate 0
D0 – D7 Out 0

RD CLK 1
8253
8254 Gate 1
WR Out 1

A0
CLK 2
A1 Gate 2
Out 2

CS

Figure 11 : Schéma fonctionnel du 8254


• Clk : entrée d’horloge externe ; • Gate : entrée de contrôle du compteur ; • Out : sortie du compteur.

6.2 Adressage du 8254


CS A1 A0 Port
0 0 0 Compteur 0
0 0 1 Compteur 1
0 1 0 Compteur 2
0 1 1 Registre de commande
1 X X 8254 dévalidé

Université de BBA-Département d’Electronique Tarek Abed (2013/2014) 9


6.3 Structure du registre de commande

Figure 12 : Description du registre de commande du 8254.


SC (Select Counter) : M : Mode
Sélection du compteur :
SC1 SC0 Compteur M2 M1 M0 Mode Description
0 0 Compteur 0 0 0 0 Mode 0 Interruption après la fin de comptage
0 1 Compteur 1 0 0 1 Mode 1 Impulsion à durée programmable
1 0 Compteur 2 X 1 0 Mode 2 Générateur d’horloge (compteur diviseur par N)
1 1 Lecture d’un compteur X 1 1 Mode 3 Générateur de signal carré
1 0 0 Mode 4 Comptage synchronisé par programme
1 0 1 Mode 5 Comptage synchronisé par la ligne Gate.

RW (Read / Write) : Lecture / Ecriture. BCD


RW1 RW0 Fonction BCD Fonctionnement
0 0 Chargement de la valeur d’un compteur 0 Compteur binaire sur 16 bits
0 1 Lecture/Ecriture du LS Byte seulement 1 Compteur BCD à 4 décades
1 0 Lecture/Ecriture du MS Byte seulement
1 1 Lecture/Ecriture du LS Byte, puis du MS Byte.

VII. Les interruptions


Un microprocesseur peut recevoir des données provenant des périphériques selon deux méthodes possibles :
• La scrutation périodique (ou polling) : le microprocesseur doit périodiquement lire l’état des ports d’E/S. Cette
méthode a pour avantage la facilité de programmation, mais son inconvénient majeur est la perte de temps du
microprocesseur, surtout dans le cas où il y a de nombreux périphériques à interroger.
• Les interruptions : lorsqu’une donnée apparaît sur un périphérique, le circuit d’E/S le signale au microprocesseur pour
que celui-ci effectue la lecture de la donnée, c’est une demande d’interruption (IRQ : Interrupt Request). L’avantage de
cette méthode est de diminuer la perte du temps du microprocesseur, qui n’effectuera une lecture des ports d’E/S
seulement lorsqu’une donnée est disponible. Un clavier par exemple, génère une demande d’interruption lorsqu’une
touche est enfoncée.

7.1 Prise en charge d’une interruption par le microprocesseur


A la suite d’une demande d’interruption par un périphérique :
• Le microprocesseur termine l’exécution de l’instruction en cours ;
• Il range le contenu des principaux registres sur la pile de sauvegarde : pointeur d’instruction, flags, ...
• Il émet un accusé de réception de demande d’interruption (Interrupt Acknowledge) indiquant au circuit d’E/S que la
demande d’interruption est acceptée ;
Remarque : le microprocesseur peut refuser la demande d’interruption : celle-ci est alors masquée. Le masquage d’une
interruption se fait généralement en positionnant un flag dans le registre des indicateurs d’état. Il existe cependant des
interruptions non masquables qui sont toujours prises en compte par le microprocesseur.
• Il abandonne l’exécution du programme en cours et va exécuter le sous-programme de service de l’interruption
(Interrupt Service Routine : ISR) ;
• Après l’exécution de l’ISR, les registres sont restaurés à partir de la pile et le microprocesseur reprend l’exécution du
programme qu’il avait abandonné :
Université de BBA-Département d’Electronique Tarek Abed (2013/2014) 10
Figure 13 : Exécution de l’ISR.
Remarque :
• La dernière instruction d’un sous-programme de service d’interruption doit être l’instruction IRET : retour
d’interruption.
• Si plusieurs interruptions peuvent se produire en même temps, on doit leur affecter une priorité pour que le
microprocesseur sache dans quel ordre il doit servir chacune d’entre elle.

7.2 Adresses des sous-programmes d’interruptions


Lorsqu’une interruption survient, le microprocesseur a besoin de connaître l’adresse du sous-programme de service de
cette interruption. Pour cela, la source d’interruption place sur le bus de données un code numérique indiquant la
nature de l’interruption (numéro de l’interruption). Le microprocesseur utilise ce code pour rechercher dans une table
en mémoire centrale l’adresse du sous-programme d’interruption à exécuter. Chaque élément de cette table s’appelle
un vecteur d’interruption, On dit que les interruptions sont vectorisées.

7.3 Les interruptions du 8086


Le microprocesseur 8086 peut gérer jusqu’à 256 interruptions. Chaque interruption reçoit un numéro compris entre 0
et 255 appelé type de l’interruption. Trois sortes d’interruptions sont reconnues par le 8086 :
• Les interruptions matérielles produites par l’activation des lignes INTR et NMI du microprocesseur ;
• Les interruptions processeur générées par le microprocesseur en cas de dépassement, de division par zéro ou lors de
l’exécution pas à pas d’un programme ;
• Les interruptions logicielles produites par l’instruction INT n, où n est le type de l’interruption.
Les interruptions du 8086 sont vectorisées. La table des vecteurs d’interruptions doit obligatoirement commencer à
l’adresse physique 00000H dans la mémoire. Chaque vecteur d’interruption est constitué de 4 octets représentant une
adresse logique du type CS : IP.
L’adresse du vecteur d’interruption = 4 × numéro de l’interruption.
Exemple : interruption 20H, adresse du vecteur = 4 × 20H = 80H.
La table des vecteurs d’interruptions doit être est chargée au démarrage du système. Elle peut être modifiée en cours
de fonctionnement (détournement des vecteurs d’interruptions).

VIII. Le contrôleur programmable d’interruptions 8259


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 contrôleur programmable
d’interruptions 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 ;
• Emettre le numéro de l’interruption sur le bus de données.

Université de BBA-Département d’Electronique Tarek Abed (2013/2014) 11


Un 8259 peut gérer jusqu’à 8 demandes d’interruptions matérielles.

8.1 Connexion au microprocesseur 8086

Figure 14 : Schéma de connexion du 8259 au microprocesseur.


Remarque : si le nombre de demandes d’interruptions est supérieur à 8, on peut placer plusieurs 8259 en cascade :

8.2 Multiplication des sources d’interruptions

Figure 15 : Technique de multiplication des sources d’interruptions.

Université de BBA-Département d’Electronique Tarek Abed (2013/2014) 12

Vous aimerez peut-être aussi