PDF de programación - Unidad 5 Entrada / Salida

Imágen de pdf Unidad 5 Entrada / Salida

Unidad 5 Entrada / Salidagráfica de visualizaciones

Actualizado el 14 de Enero del 2019 (Publicado el 1 de Enero del 2019)
1.478 visualizaciones desde el 1 de Enero del 2019
517,8 KB
42 paginas
Creado hace 10a (29/11/2013)
(5)

Unidad 5

Entrada / Salida

SISTEMAS BASADOS EN MICROPROCESADORES

Grado en Ingeniería Informática

EPS - UAM

(5)

Índice

5. Entrada / Salida.

Técnicas de programación de entradas y salidas (E/S).
Sondeo.
Interrupción.

5.1.
5.2.
5.3.
5.4. DMA.
5.5. Gestión y programación de las interrupciones en el

80x86: el controlador programable de interrupciones
8259A.

(5)

5.1. Técnicas de programación de E/S (I)

Un sistema basado en microprocesador debe transferir
datos desde (entrada) y hacia (salida) dispositivos externos.
Tres formas de realizar la transferencia:

Sondeo (encuesta, polling)

La CPU es responsable de enviar y recibir datos, y de la
sincronización con el periférico (esperar la llegada de datos o
esperar la petición de envío de datos).

Interrupción

La CPU es responsable de enviar y recibir datos.
La sincronización se realiza mediante interrupciones hardware
que recibe la CPU.

DMA (Direct Memory Access)

La CPU configura un controlador de DMA que se encarga de
enviar y recibir datos.
La sincronización la realiza el propio controlador de DMA
mediante interrupciones hardware.
Utilizado para transferencia de bloques.

(5)

5.1. Técnicas de programación de E/S (II)

Cada periférico es accedido por la CPU a través de un
puerto de E/S (controlador) que actúa de interfaz.
La CPU suele acceder a los puertos leyendo y escribiendo
registros internos (cada registro tiene una dirección de E/S):

Registros de entrada: Datos del periférico hacia la CPU.
Registros de salida: Datos de la CPU hacia el periférico.
Registros de estado: Estado actual del periférico.

C
P
U

S
O
T
A
D
S
U
B



L
O
R
T
N
O
C
S
U
B



Puerto E/S
Reg. Entrada
0011..110

Reg. Salida
111001..1

Reg. Estado

1

1

I

P
E
R
F
É
R
C
O

I

S
E
N
O
C
C
E
R
D
S
U
B

I

I



(5)

5.2. Sondeo (I)

La CPU ha de enviar y recibir datos, y sincronizarse con el
periférico.
Sincronización mediante espera activa: un bucle consulta
continuamente el registro de estado (muy ineficiente).
Protocolo de “apretón de manos” (handshaking) mediante
dos líneas de control: NUEVO DATO E y NUEVO DATO S .

I

I

S
E
N
O
C
C
E
R
D
S
U
B



S
O
T
A
D
S
U
B



L
O
R
T
N
O
C
S
U
B



Reg. Entrada
0011..110

Reg. Salida
111001..1

Reg. Estado

NUEVO DATO E

1

1

NUEVO DATO S

I

P
E
R
F
É
R
C
O

I

(5)

5.2. Sondeo (II)

Protocolo básico de escritura de datos hacia el periférico:

CPU escribe dato en registro de salida.
CPU activa señal NUEVO DATO S en registro de estado.
CPU espera activación de señal NUEVO DATO E en registro de
estado (espera activa).
Periférico recibe dato del puerto y activa señal NUEVO DATO E
(Acnowledge, ACK).

I

S
E
N
O
C
C
E
R
D
S
U
B

I



S
O
T
A
D
S
U
B



L
O
R
T
N
O
C
S
U
B



Reg. Entrada
0011..110

Reg. Salida
111001..1

Reg. Estado

NUEVO DATO E

1

1

NUEVO DATO S

I

P
E
R
F
É
R
C
O

I

(5)

5.2. Sondeo (III)

Protocolo básico de lectura de datos desde el periférico:

CPU espera activación de señal NUEVO DATO E en registro de
estado (espera activa).
Periférico envía dato al puerto y activa señal NUEVO DATO E.
CPU lee dato desde registro de entrada.
CPU activa señal NUEVO DATO S en registro de estado.

I

I

S
E
N
O
C
C
E
R
D
S
U
B



S
O
T
A
D
S
U
B



L
O
R
T
N
O
C
S
U
B



Reg. Entrada
0011..110

Reg. Salida
111001..1

Reg. Estado

NUEVO DATO E

1

1

NUEVO DATO S

I

P
E
R
F
É
R
C
O

I

(5)

5.2. Sondeo (IV)

Ejemplo: Lectura de datos
desde puerto de E/S,
almacenándolos en
buffer de memoria y con
envío de byte de control.
Puerto de E/S:

52h ⇒ @Reg.Entrada
53h ⇒ @Reg.Salida
54h ⇒ @Reg.Estado

datos SEGMENT

buffer 200 DUP (0)

datos ENDS
codigo SEGMENT

.........
mov ax, datos
mov ds, ax
mov si, 0

esperar: in al, 54h ; Espera activa

test al, 00000001b
jz esperar
in al, 52h ; Lectura de dato
mov buffer[ si ], al
inc si
cmp si, 200
jne esperar
mov al, 0FFh
out 53h, al ; Byte de control

(5)

5.3. Interrupción

La CPU es interrumpida cuando periférico manda dato
(entrada) o cuando manda petición de recepción de
dato (salida).
La CPU ejecuta una rutina de servicio que lee dato o
envía dato a través de los registros del puerto.

I

I

S
E
N
O
C
C
E
R
D
S
U
B



L
O
R
T
N
O
C
S
U
B



S
O
T
A
D
S
U
B



PIC

Reg. Entrada
0011..110

Reg. Salida
111001..1

Reg. Estado

1

Reg. Interrupciones

1

NUEVO
DATO S

NUEVO
DATO E

I

P
E
R
F
É
R
C
O

I

C
P
U

INT
INTA

(5)

5.4. DMA (I)

La CPU programa el controlador de DMA para que
transfiera un bloque de datos desde memoria al puerto
de E/S (salida) o desde el puerto a memoria (entrada).

Memoria RAM

I

I

S
E
N
O
C
C
E
R
D
S
U
B



D
M
A

DACK
DREQ

S
O
T
A
D
S
U
B



L
O
R
T
N
O
C
S
U
B



Reg. Entrada
0011..110

Reg. Salida
111001..1

Reg. Estado

1

Reg. Interrupciones

1

NUEVO
DATO S

NUEVO
DATO E

I

P
E
R
F
É
R
C
O

I

(5)

5.4. DMA (II)

El controlador de DMA interrumpe a la CPU cuando se
ha transferido un bloque completo.
La CPU ejecuta una rutina de servicio que accede al
bloque (entrada) o genera un nuevo bloque (salida) y
reprograma el controlador de DMA.

I

I

S
E
N
O
C
C
E
R
D
S
U
B



L
O
R
T
N
O
C
S
U
B



S
O
T
A
D
S
U
B



PIC

D
M
A

INT

C
P
U

INT
INTA

(5)

5.5. Gestión y programación de las

interrupciones en el 80x86 (I)

Las interrupciones hardware enmascarables son
gestionadas mediante el controlador de interrupciones
programable (PIC) 8259.
Un PIC tiene 8 entradas de interrupción y una salida.
Pueden gestionarse múltiples interrupciones
enmascarables dependiendo del número de 8259
instalados (1 en PC/XT, 2 en PC/AT y superiores).
La CPU recibe una única petición de interrupción por
parte del PIC principal (maestro).
Cada interrupción puede ser enmascarada de forma
independiente a través del 8259.
Se pueden establecer distintos esquemas de prioridad
sobre las interrupciones enmascarables.

(5)

5.5. Gestión y programación de las

interrupciones en el 80x86 (II)

Direcciones PIC-0 : 20h, 21h (PC/XT, PC/AT y posteriores)
Direcciones PIC-1 : A0h, A1h (PC/AT y posteriores)
Interrupciones: PIC-0 ⇒ 08h (IR0) , ... , 0Fh (IR7)
PIC-1 ⇒ 70h (IR0) , ... , 7Fh (IR7)
Bus de Datos (8 bits)

PIC-0
Maestro

IR0

IR2

INT

#INTA

A LA CPU

DE LA CPU

+Vcc

#SP/#EN

IR7

TIMER
TECLADO

PIC-1
Esclavo

IR0

RTC

INT

#INTA

#SP/#EN

COP

IR5

IR7

GND

CONECTOR
DE EXPANSIÓN
(Bus ISA)

7
Q
R

I

3
Q
R

I

5
Q
R

6
4
Q
Q
R
R
PC/XT

I

I

I

5
1
Q
R

I

4
2
1
1
1
1
Q
Q
Q
R
R
R
PC/AT

I

I

I

0
1
Q
R

I

(5)

5.5. Gestión y programación de las

interrupciones en el 80x86 (III)

Petición de interrupción a través del PIC maestro:
1. Puerto de E/S activa petición de interrupción de

maestro.

Bus de Datos (8 bits)

PIC-0
Maestro

IR0

IR2

INT

#INTA

A LA CPU

DE LA CPU

+Vcc

#SP/#EN

IR7

TIMER
TECLADO

PIC-1
Esclavo

IR0

RTC

INT

#INTA

#SP/#EN

COP

IR5

IR7

GND

(5)

5.5. Gestión y programación de las

interrupciones en el 80x86 (IV)

Petición de interrupción a través del PIC maestro:
1. Puerto de E/S activa petición de interrupción de

maestro.

2. Si interrupción tiene prioridad suficiente, PIC maestro

activa petición de interrupción de CPU (señal INT).

Bus de Datos (8 bits)

PIC-0
Maestro

IR0

IR2

INT

#INTA

A LA CPU

DE LA CPU

+Vcc

#SP/#EN

IR7

TIMER
TECLADO

PIC-1
Esclavo

IR0

RTC

INT

#INTA

#SP/#EN

COP

IR5

IR7

GND

(5)

5.5. Gestión y programación de las

interrupciones en el 80x86 (V)

Petición de interrupción a través del PIC maestro:
1. Puerto de E/S activa petición de interrupción de

maestro.

2. Si interrupción tiene prioridad suficiente, PIC maestro

activa petición de interrupción de CPU (señal INT).

3. Si CPU acepta interrupción, activa señal de aceptación

(señal #INTA) dos veces seguidas.

Bus de Datos (8 bits)

PIC-0
Maestro

IR0

IR2

INT

#INTA

A LA CPU

DE LA CPU

+Vcc

#SP/#EN

IR7

TIMER
TECLADO

PIC-1
Esclavo

IR0

RTC

INT

#INTA

#SP/#EN

COP

IR5

IR7

GND

(5)

5.5. Gestión y programación de las

interrupciones en el 80x86 (VI)

Petición de interrupción a través del PIC maestro:
4. En la segunda aceptación, PIC maestro escribe número

de interrupción en bus de datos.

09h (TECLADO)

PIC-0
Maestro

IR0

IR2

INT

#INTA

A LA CPU

DE LA CPU

+Vcc

#SP/#EN

IR7

TIMER
TECLADO

PIC-1
Esclavo

IR0

RTC

INT

#INTA

#SP/#EN

COP

IR5

IR7

GND

(5)

5.5. Gestión y programación de las

interrupciones en el 80x86 (VII)

Petición de interrupción a través del PIC maestro:
4. En la segunda aceptación, PIC maestro escribe número

de interrupción en bus de datos.

5. CPU obtiene vector de interrupción y ejecuta rutina de

servicio (RSI).

09h (TECLADO)

PIC-0
Maestro

IR0

IR2

INT

#INTA

A LA CPU

DE LA CPU

+Vcc

#SP/#EN

IR7

TIMER
TECLADO

PIC-1
Esclavo

IR0

RTC

INT

#INTA

#SP/#EN

COP

IR5

IR7

GND

(5)

5.5. Gestión y programación de las

interrupciones en el 80x86 (VIII)

Petición de interrupción a través del PIC maestro:
4. En la segunda aceptación, PIC maestro escribe número

de interrupción en bus de datos.

5. CPU obtiene vector de interrupción y ejecuta rutina de

servicio (RSI).

6. Antes de acabar, RSI envía comando de fin de

interrupción (End Of Interrupt, EOI) a PIC maestro.

7. PIC maestro da por concluida la petición.

09h (TECLADO)
09h (TECLADO)

EOI

PIC-0
Maestro

IR0

IR2

INT

#INTA

A LA CPU

DE LA CPU

+Vcc

#SP/#EN

IR7

TIMER
TECLADO

PIC-1
Esclavo

IR0

RTC

INT

#INTA

#SP/#EN

COP

IR5

IR7

GND

(5)

5.5. Gestión y programación de las

interrupciones en el 80x86 (IX)

Petición de interrupción a través del PIC esclavo:
1. Puerto de E/S activa petición de interrupción de

esclavo.

Bus de Datos (8 bits)

PIC-0
Maestro

IR0

IR2

INT

#INTA

A LA CPU

DE LA CPU

+Vcc

#SP/#EN

IR7

TIMER
TECLADO

PIC-1
Esclavo

IR0

RTC

INT

#INTA

#SP/#EN

COP

IR5

IR7

GND

(5)

5.5. Gestión y programación de las

interrupciones en el 80x86 (X)

Petición de interrupción a través del PIC esclavo:
1. Puerto de E/S activa petición de interrupción de

esclavo.

2. Si interrupción tiene prioridad suficiente, PIC
  • Links de descarga
http://lwp-l.com/pdf14748

Comentarios de: Unidad 5 Entrada / Salida (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad