CHAPITRE VI
LES INTERFACES D’ENTREES/SORTIES
Définitions
Une interface d’entrées/sorties est un circuit intégré permettant au microprocesseur de
communiquer avec l’environnement extérieur.
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.
Architecture et Microprocesseur
1
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é 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 :
o adressage cartographique : les adresses des
ports d’E/S appartiennent au même espace
mémoire que les circuits mémoire : les E/S
sont mappées en mémoire
Architecture et Microprocesseur
2
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 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.
o adressage
indépendant
:
le
microprocesseur considère deux espaces
distincts
:
l’espace d’adressage des
mémoires et l’espace d’adressage des
ports d’E/S.
Architecture et Microprocesseur
3
Conséquences :
• 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 instructions spécifiques ;
• 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.
Architecture et Microprocesseur
4
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 :
o si l’adresse du port d’E/S est sur un octet :
IN AL, adresse : lecture d’un port sur 8 bits ;
Ou bien
mov DX, adresse
IN AL,DX : lecture d’un port sur 8 bits.
o si l’adresse du port d’E/S est sur deux octets :
IN AX, adresse : lecture d’un port sur 16 bits ;
Ou bien
mov DX, adresse
IN AX,DX : lecture d’un port sur 16 bits.
où le registre DX contient l’adresse du port d’E/S à lire.
Architecture et Microprocesseur
5
Ecriture d’un port d’E/S :
o si l’adresse du port d’E/S est sur un octet :
OUT adresse,AL : écriture d’un port sur 8 bits ;
Ou bien
mov DX, adresse
OUT DX,AL : écriture d’un port sur 8 bits.
o si l’adresse du port d’E/S est sur deux octets :
OUT adresse,AX : écriture d’un port sur 16 bits ;
Ou bien
mov DX, adresse
OUT DX,AX : écriture d’un port sur 16 bits.
où le registre DX contient l’adresse du port d’E/S à écrire.
Architecture et Microprocesseur
6
Exemples :
• lecture d’un port d’E/S sur 8 bits à l’adresse 300H :
mov dx,300H
in al,dx
• écriture de la valeur 1234H dans le port d’E/S sur 16 bits à l’adresse 49H :
mov ax,1234H
out 49H,ax
Architecture et Microprocesseur
7
Interface parallèle 8255
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.
Publicité
Architecture et Microprocesseur
8
Schéma fonctionnel
Le 8255 contient 4 registres :
o 3 registres contenant les données présentes sur les ports A, B et C;
o 1 registre de commande pour la configuration des port A, B et C en entrées et/ou
en sorties.
Architecture et Microprocesseur
9
Accès aux registres du 8255 : les lignes d’adresses A0 et A1 définissent les adresses des
registres du 8255 :
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 :
o Le mode 0 est le plus simple : 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é.
Architecture et Microprocesseur
10
o Les modes 1 et 2 sont utilisés pour le dialogue avec des périphériques nécessitant
un asservissement.
Structure du registre de commande
Architecture et Microprocesseur
11
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.
Exemple : connexion du 8255 sur la partie faible du bus de données du 8086, avec
décodage d’adresses incomplet (les lignes d’adresses A3 - A15 ne sont pas toutes
utilisées) :
Architecture et Microprocesseur
12
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;
Exemple de programmation : soit le montage suivant :
On veut que la led s’allume lorsqu’on a la combinaison : K0 = 1 et K1 = 0 et K2 = 1.
Architecture et Microprocesseur
13
Timer 8253
Dans un PC, il existe une seule horloge de très haute fréquence, utilisée notamment
par la CPU, pour synchroniser ses activités avec ses circuits périphériques. Mais il existe
aussi des fonctions qui nécessitent des horloges de basse fréquence.
Le Timer 8253 PIT (Programmable Interval Timer) est conçu pour satisfaire ce besoin. Il
consiste à générer des basses fréquences à partir de CLK pour des applications diverses.
D7
D6
D5
D4
D3
D2
D1
D0
CLK0
OUT0
GATE0
GND
1
2
24
8253
12
13
VCC
WR
RD
CS
A1
A0
CLK2
OUT2
GATE2
CLK1
GATE1
OUT1
Circuit Timer 8253
8253
m
P
I/F
D7 .. D0
WR
RD
A0
A1
CS
CLK0
GATE0
OUT0
CLK2
GATE2
OUT2
CLK1
GATE1
OUT1
Architecture et Microprocesseur
14
o CLK (1,2,3) <= 2 MHz
o La forme du signal OUT (CLK / N) est programmée
o Le signal GATE est utilisé pour (Dés)Activer le compteur. État Haut (5V) pour activer
et vice-versa.
o Le bus données du 8253 (D0-D7) est connecté à celui du bus système. Il permet à la
CPU d’accéder les registres du 8253 pour les opérations R/W.
o Les signaux RD/WR sont connectés aux signaux de contrôle IOR/IOW du bus
système.
CS
A1
A0
Port
0
0
Publicité
0
0
1
0
0
1
1
x
0
1
0
1
x
Compteur 0
Compteur 1
Compteur 2
Registre de Contrôle
8253/54 n’est pas
sélectionné
Architecture et Microprocesseur
15
Initialisation du T8253
Les 3 compteurs doivent être programmés séparément.
o L’octet de contrôle est écrit dans le registre contrôle (pour, entre autres, indiquer
la forme de OUT).
o Le nombre N par qui la CLK est divisée pour générer la fréquence OUT, doit être
programmé, via D7-D0. Puisque le nombre maximum permis est FFFFh (16 bits), ce
nombre doit être envoyé en 2 temps, 1 octet à la fois.
D7
D6
. . . . . .
D1
D0
BCD
Mode
SC1
SC0
RL1
RL0
M2
M1
M0
BCD
0
1
Compteur Binaire (16-bits)
Compteur BCD (4 décades)
Registre de contrôle
M2 M1 M0 Mode
0
0
x
x
1
1
0
0
1
1
0
0
0
1
0
1
0
1
Mode 0
Mode 1
Mode 2
Mode 3
Mode 4
Mode 5
RL1
RL0 Mode
SC1
SC0
Mode
0
0
1
1
0
1
0
1
Lecture du compteur (compteur
d’avènement)
Lire/Charger LSB seulement
Lire/Charger MSB seulement
Lire/Charger LSB, ensuite MSB
0
0
1
1
0
1
0
1
Compteur 0 sélectionné
Compteur 1 sélectionné
Compteur 2 sélectionné
/ (non permis)
Architecture et Microprocesseur
16
Binaire: 0000 FFFFh CLK / [ 1 (0001h) à 65536 (FFFFh)]
D1
. . . . . .
D7
D6
D0
Publicité
SC1
SC0
RL1
RL0
M2
M1
M0
BCD
BCD: 0000 9999h CLK / [ 1 (0001h) à 10000 (9999h)]
Registre de contrôle
D7
Mode 0 Interruption au compte final
Mode 1 Programmable pulse (une seule fois)
Mode 2 Générateur de pulses périodiques
RL0
Mode 3 Générateur signal carré
Mode 4 Déclenchement Logiciel
Registre de contrôle
Mode 5 Déclenchement Hardware
SC1
SC0
RL1
D6
. . . . . .
D1
D0
M2
M1
M0
BCD
D7
Le nombre qui divise la CLK
D6
est sur 16-bits (0000FFFFh)
RL0 et RL1 sont utilisés pour
Indiquer la taille de ce nombre.
SC1
SC0
RL1
RL0
D0
D1
Il y’a 3 options possibles, lire
le MSB, ou LSB, ou bien
les deux (le LSB en premier lieu).
M0
M2
La 4eme option est la lecture du
contenu du compteur à n’importe quel
moment.
BCD
M1
D7
D6
SC1
SC0
Ces bits indiquent lequel
des 3 compteurs (0, 1, ou 2)
RL1
M1
est à initialiser par l’octet de
contrôle.
RL0
M2
D1
D0
M0
BCD
Architecture et Microprocesseur
17
Exemple 1 : En supposant que la puce 8253 est activée par le pin CS à partir des adresses A7-A2
100101.
Dans ce cas, les adresses des ports assignés au T8253 sont :
CS
100101
100101
100101
100101
A1A0
Port
Adresse du port (Hex)
00
01
10
11
Compteur 0
Compteur 1
Compteur 2
Registre de Contrôle
94
95
96
97
Si le registre de contrôle est programmée comme suit:
MOV
OUT
AL, 36H
97H, AL
La configuration du T8253/54 est comme suit:
36H = 00110110B
CS0,1= 00 Compteur 0 sélectionné
RL0,1= 11 LSB est suivi de MSB
M0,1,2= 110 Mode 3 sélectionné (signal carré)
BCD = 0 Compteur Binaire
Architecture et Microprocesseur
C’est quoi ce
Nombre diviseur?
Les 3 compteurs partagent
le registre de contrôle mais
chacun possède son registre
diviseur (dont l’adresse du
Publicité
port est celle du compteur
en question).
18
Exemple 2 : En utilisant les adresses des ports (de l’exemple 1)
Programmer le compteur 0, dont la fréquence est CLK0/4282
(en BCD) et la forme d’onde est un signal carrée (Mode 3).
MOV
OUT
MOV
HEX)
OUT
(82h)
MOV
OUT
(42h)
AL, 37H
; Compteur 0, mode 3, BCD 37H
97H, AL
; Envoi au registre contrôle
AX, 4282H
; Charger le nombre diviseur (H pour
94h, AL
; Envoi de l’octet LSB au port compteur 0
AL, AH
94h, AL
; Envoi de l’octet MSB au port compteur 0
Port
Adr. Port
Compteur 0
94h
Compteur 1
95h
Compteur 2
96h
Registre de
Contrôle
97h
Programmer le compteur 2, qui permet de générer un signal carré de fréquence fOUT2 = 360Hz,
sachant que fCLK2 = 1.8MHz.
fCLK2 / fOUT2 = 5000 = 1388H (HEX)
En Binaire
= 5000 (BCD)
Note: En BCD, il suffit de changer
MOV
MOV
AL, B6H
AL, B7H
par
MOV
OUT
MOV
HEX)
OUT
(88h)
MOV
OUT
(13h)
AL, B6H
; Compteur 2, mode 3, Binaire B6H
97H, AL
; Envoi au registre contrôle
AX, 1388H
; Charger le nombre diviseur (H pour
96h, AL
; Envoi de l’octet LSB au compteur 2
AL, AH
96h, AL
; Envoi de l’octet MSB au compteur 2
Architecture et Microprocesseur
19
Formes de OUT0,1,2
IBM PC a programmé le compteur 0 du Timer8253/54 en mode 3 (signal carré) avec le nombre maximum
65536 (donc son registre est chargé avec la valeur 0000H), pour obtenir une fréquence de 18.2Hz. Puisque le
nombre à charger est pair (65536) le rapport cyclique de OUT0 est de 50% .
1.193MHz TCLK0 = 838ns
CLK0 =
CLK1 =
CLK2
OUT0
18.2Hz Tout0 = 838ns x 65536
IBM PC a programmé le compteur 1 du Timer8253/54 en mode 2 (Générateur de pulses) avec le nombre 18
(donc son registre est chargé avec la valeur 12H), pour obtenir une fréquence de 66278Hz. OUT1 reste haut
pendant 17 périodes de CLK et s’annule pendant la dernière pulsation.
OUT1
66.278Hz Tout0 = 838ns x 18
IBM PC a programmé le compteur 2 du Timer8253/54 en mode 3 (signal carré) avec le nombre 1331 (donc
son registre est chargé avec la valeur 0533H), pour obtenir une fréquence de 896Hz. Puisque le nombre à
charger est impair (1331) le rapport cyclique de OUT0 n’est pas 50% (N+1)/2 pulses à l’état haut et (N-
1)/2 pulses à l’état bas.
OUT2
896Hz Tout0 = 838ns x 1331
Architecture et Microprocesseur
20
MODE 3 : Générateur d’un signal carré
Charger le compteur de N
A condition GATE = 1
OUT
Ou bien
Si N est
impair
N/2 x TCLK
N/2 x TCLK
(N+1)/2 x TCLK
(N-1)/2 x TCLK
Architecture et Microprocesseur
21