Les Interfaces d'Entrées/Sorties

Programmation, Microprocesseurs · course

Browse all programmation documents

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.

Advertisement

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

Advertisement

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

Advertisement

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 (0000FFFFh)

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

Advertisement

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