Académique Documents
Professionnel Documents
Culture Documents
2003-2005
Entrada/Salida
Leccin
Leccin
Leccin
Leccin
Leccin
Tema 2
Tema 3
2004
2005
1.1
1.2
1.3
1.4
1.5
Introduccin
E/S programada
Interrupciones
Acceso directo a memoria (DMA)
Ejemplos de programas de E/S
Memoria
Buses
ECII
1.1
Entrada/Salida
2004
2005
ECII
1.2
Leccin
Leccin
Leccin
Leccin
1.2
1.3
1.4
1.5
E/S programada
Interrupciones
Acceso directo a memoria (DMA)
Ejemplos de programas de E/S
2004
2005
ECII
1.3
Objetivo:
Realizar la conexin del procesador con una gran
variedad de dispositivos perifricos, teniendo en cuenta
que las caractersticas de los dispositivos de E/S suelen
diferir notablemente de las del procesador; en especial:
la velocidad de transmisin de los perifricos
normalm. es menor que la velocidad a la que opera el proces.
es muy variable (pocos bytes/s hasta >100 MB/s)
la longitud de palabra
los cdigos para representar los datos
Interfaces de E/S
2004
2005
ECII
1.4
2004
2005
ECII
1.5
2004
2005
ECII
1.6
Tcnicas de direccionamiento
Direccionamiento por seleccin lineal: consiste en asignar un
bit del bus de direcciones a cada puerto.
Direccionamiento por decodificacin: consiste en decodificar
los bits de direccin para seleccionar un puerto de una
interfaz.
1. Decodificacin centralizada: un decodificador selecciona
cada puerto de E/S.
2004
2005
ECII
1.7
2004
2005
ECII
1.8
2004
2005
ECII
1.9
2. Multiplexor / demultiplexor
Multiplexor:
Multiplexor:
para
para las
las seales
seales
de
de entrada
entrada
Demultiplexor:
Demultiplexor:
para
para las
las seales
seales
de
de salida
salida
Las
Las lneas
lneas de
de datos
datos yy
control
control se
se encaminan
encaminan
de
de forma
forma individual
individual aa
cada
cada perifrico
perifrico
Expansin difcil
Mucha circuitera
Habr que considerar
las seales que son necesarias para realizar la comunicacin,
con sus respectivos cronogramas y mtodos de sincronizacin.
las diferentes tcnicas de E/S, con sus ventajas e
inconvenientes.
2004
2005
ECII
1.10
3) Sincronizacin:
2004
2005
ECII
1.11
Temporizacin sncrona
Escritura
- La CPU sita los datos en el bus de datos y al mismo tiempo
genera una seal WR# = 0.
WR#
WR# establece
establece el
el perodo
perodo
durante
durante el
el cual
cual la
la CPU
CPU tiene
tiene
datos
datos vlidos
vlidos en
en sus
sus lneas
lneas
de
de salida
salida (t1
(t1 ++ t2
t2 ++ t3)
t3)
El
El flanco
flanco de
de subida
subida de
de WR#
WR# activa
activa la
la carga
carga
del
del bfer
bfer del
del controlador
controlador del
del perifrico
perifrico
Este
Este flanco
flanco de
de carga
carga debe
debe estar
estar dentro
dentro de
de
t1
t1 ++ t2
t2 ++ t3
t3
2004
2005
ECII
1.12
Lectura
- La CPU suministra una seal de lectura RD# = 0. A partir de
entonces el controlador del perifrico dispone de cierto
tiempo para suministrar el dato al bus de datos.
2.
2. Transcurrido
Transcurrido cierto
cierto tiempo
tiempo (para
(para
que
que los
los datos
datos estn
estn estables
estables en
en el
el
bus),
bus), la
la CPU
CPU lee
lee esos
esos datos
datos
1.
1. Cierto
Cierto tiempo
tiempo despus
despus de
de que
que la
la
CPU
CPU ponga
ponga RD#
RD# aa 0,
0, el
el controlador
controlador
abre
abre el
el buffer
buffer triestado
triestado al
al bus
bus
3.
3. Y
Y ms
ms tarde,
tarde, la
la
subida
subida de
de RD#
RD#
cierra
cierra el
el buffer
buffer
triestado
triestado del
del
controlador
controlador del
del bus
bus
2004
2005
ECII
1.13
En la temporizacin sncrona...
La CPU establece la temporizacin, que debe ser seguida por
el controlador del perifrico.
Si ste no es capaz de leer el bus, o de poner el dato, en el
tiempo establecido la transferencia fracasa.
- Podra haberse direccionado un dispositivo lento,
inexistente o apagado.
- En lectura la CPU almacenar un dato incorrecto.
- En escritura la CPU no sabr si ha escrito con xito.
2004
2005
ECII
1.14
Lectura
Hasta
Hasta que
que no
no se
se
produce
produce el
el flanco
flanco
de
de subida
subida de
de ACK,
ACK,
no
no se
se cierra
cierra la
la
transferencia,
transferencia,
subiendo
subiendo la
la CPU
CPU la
la
seal
seal WR#
WR# oo RD#
RD#
2004
2005
ECII
1.15
2004
2005
ECII
1.16
4) Conversin de datos:
2004
2005
ECII
1.17
2004
2005
ECII
1.18
2004
2005
ECII
1.19
2004
2005
ECII
1.20
2004
2005
ECII
1.21
Ejemplo:
los procesadores de 8 bits empleaban una direccin de 8 bits para
cada puerto de E/S 256 puertos: IN n de puerto, OUT n de
puerto
y disponan de un bus de direcciones de 16 bits 64 K puertos
Ventajas:
Diseo ms limpio de la decodificacin de las direcciones de
memoria.
Facilita la proteccin de E/S (por ejemplo, haciendo que las
instrucciones IN, OUT,... sean privilegiadas).
Los programas son relativamente ms rpidos por la decodificacin
ms sencilla y el menor tamao de las instrucciones de E/S.
Desventajas:
Mayor complejidad en el diseo del procesador:
Hay que decodificar y ejecutar las instrucciones IN, OUT...
Hay que generar la seal IO/M# y se necesita una patilla ms
del procesador para ella.
2004
2005
ECII
1.22
2004
2005
ECII
1.23
Ventajas:
Menor complejidad en el diseo del procesador.
Desventajas:
Cada registro interno de una interfaz ocupa una direccin de
memoria que no puede utilizarse para memoria.
Las instrucciones de acceso a memoria suelen ser ms largas que las
especficas de E/S.
Por ej., en los microprocesadores de 8 bits: 3 bytes frente a 2.
Puede disminuir la velocidad de procesamiento.
Aumentan los requisitos de memoria.
E/S independiente
2004
2005
ECII
1.24
E/S independiente
E/S mapeada en memoria
2004
2005
ECII
1.25
Tcnicas de E/S
2004
2005
ECII
1.26
Tcnicas de E/S
2004
2005
ECII
1.27
Tcnicas de transferencia
E/S programada
sin
consulta
de
estado
con
consulta
de
estado
E/S controlada
por
interrupciones
por
parada de
CPU
por robo
de ciclo
Tcnicas de E/S
2004
2005
ECII
1.28
2004
2005
Tcnicas de E/S
ECII
1.29
La CPU lee y
comprueba el
estado de los
dispositivos de E/S
(en el caso de
consulta de
estado).
El dispositivo de E/S
enva una peticin de
interrupcin a la CPU.
sta transfiere el
control a una rutina de
servicio P.
E/S controlada
por
interrupciones
La menor
Baja
Moderada
Lenta
Rpida
La ms rpida
Moderada
Moderada
Alta
Entrada/Salida
2004
2005
ECII
1.30
Concepto
Sin o con consulta de estado
Ejemplo de programa
Ejemplo de circuito de interfaz paralela: 8255
2004
2005
ECII
1.31
2004
2005
ECII
1.32
SALIDA:
1. El procesador ejecuta una instruccin de carga de una palabra de
memoria a un registro.
2. El procesador ejecuta una instruccin de salida que transfiere el
dato desde el procesador a un puerto de salida.
ENTRADA:
1. El procesador ejecuta una instruccin de entrada.
2. El procesador ejecuta una instruccin de almacenamiento.
2004
2005
ECII
1.33
Si
Si hay
hay que
que
atender
atender aa
varios
varios
perifricos
perifricos aa
la
la vez,
vez, se
se
organiza
organiza la
la
transferencia
transferencia
segn
segn
prioridades
prioridades
establecidas
establecidas
por
por software
software
2004
2005
ECII
1.34
2004
2005
ECII
1.35
Datos a leer
Estado del dispositivo (bit ms significativo = 1
poll
lds
IOBuf
ldx
...
lda
bpl
Count
lda
psh
dex
bne
next
...
a Status
next
a Data
a
poll
2004
2005
ECII
1.36
2004
2005
ECII
1.37
2004
2005
ECII
1.38
Esquema general
Permite gestionar 3 puertos de E/S de 8 bits.
Bfer
Bfer triestado
triestado de
de 88 bits
bits
bidireccional,
bidireccional, usado
usado
como
como interfaz
interfaz entre
entre el
el
8255
8255 yy el
el bus
bus de
de datos
datos
Los
Los 33 puertos
puertos de
de
88 bits
bits pueden
pueden
configurarse
configurarse por
por
software
software para
para
realizar
realizar varias
varias
funciones.
funciones.
Cada
Cada uno
uno tiene
tiene
caractersticas
caractersticas
especiales.
especiales.
El
El puerto
puerto C
C puede
puede
convertirse
convertirse en
en
dos
dos puertos
puertos de
de
control
control de
de 44 bits
bits
Gestiona
Gestiona todas
todas las
las transferencias
transferencias de
de
datos
datos yy palabras
palabras de
de control
control yy estado
estado
2004
2005
ECII
1.39
PA0,
PA0, PA7:
PA7: Puerto
Puerto A
A
de
de Entrada/Salida
Entrada/Salida
A0,
A0, A1:
A1: Seleccionan
Seleccionan el
el puerto
puerto del
del
que
que se
se va
va aa leer
leer oo escribir
escribir
PC0,
PC0, PC7:
PC7: Puerto
Puerto C
C
de
de Entrada/Salida
Entrada/Salida
PB0,
PB0, PB7:
PB7: Puerto
Puerto B
B
de
de Entrada/Salida
Entrada/Salida
2004
2005
ECII
1.40
RD#
RD# (Read):
(Read): =0
=0 habilita
habilita al
al
8255
8255 para
para que
que enve
enve la
la
informacin
informacin de
de datos
datos oo
de
de estado
estado aa la
la CPU
CPU aa
travs
travs del
del bus
bus de
de datos
datos
CS#
CS# (Chip
(Chip Select):
Select): =0
=0
habilita
habilita la
la comunicacin
comunicacin
entre
entre el
el 8255
8255 yy el
el
procesador
procesador
WR#
WR# (Write):
(Write): =0
=0
permite
permite que
que la
la CPU
CPU
escriba
escriba datos
datos oo
palabras
palabras de
de control
control
en
en el
el 8255
8255
RESET:
RESET: =1
=1 borra
borra el
el
registro
registro de
de control
control
yy pone
pone los
los puertos
puertos
en
en modo
modo de
de
entrada
entrada
D0-D7:
D0-D7: conexin
conexin al
al
bus
bus de
de datos
datos
2004
2005
ECII
1.41
Puerto
Puerto A:
A: puede
puede
definirse
definirse como
como entrada
entrada
oo salida
salida de
de 88 bits
bits en
en
los
los modos
modos 0,
0, 11 yy 2.
2.
En
En el
el modo
modo 22 funciona
funciona
de
de forma
forma bidireccional.
bidireccional.
Puerto
Puerto C:
C: se
se divide
divide en
en dos
dos
puertos
puertos de
de 44 bits
bits que
que pueden
pueden
definirse
definirse como
como entrada
entrada oo
salida
salida en
en el
el modo
modo 0.
0.
Para
Para los
los modos
modos 11 yy 22 se
se
divide
divide en
en dos
dos puertos
puertos de
de
control
control de
de 44 bits
bits para
para servicio
servicio
de
de los
los puertos
puertos A
A oo B.
B.
Puerto
Puerto B:
B: puede
puede
definirse
definirse como
como
entrada
entrada oo salida
salida
de
de 88 bits
bits en
en los
los
modos
modos 00 yy 1.
1.
2004
2005
ECII
1.42
2004
2005
ECII
1.43
2004
2005
ECII
1.44
MODO 0
Segn la aplicacin deseada, cada puerto deber declararse como
entrada o como salida, escribiendo la oportuna palabra de control.
Ejemplo:
2004
2005
ECII
1.45
2004
2005
ECII
1.46
2004
2005
ECII
1.47
2004
2005
ECII
1.48
2004
2005
ECII
1.49
MODO 1
Es posible impedir o autorizar al 8255 interrumpir al procesador,
poniendo a 0 1 ciertas seales INTE (Interrupt Enable):
2004
2005
ECII
1.50
MODO 1 en entrada
1. Cuando el perifrico tiene un dato para
transmitir a la CPU, enva la seal
STB#, que indica dato preparado, al
8255.
2. El 8255 sube a 1 la seal IBF (dato
recibido), y memoriza los datos de
entrada (en modo 0 no se memorizan).
3. El flanco de subida de STB# pone a 1 la
seal de peticin de interrupcin INTR,
si est habilitada. Puede tener lugar
una interrupcin si adems la lnea est
conectada a la CPU.
4. La seal de lectura generada por la
CPU hace bajar las seales INTR e IBF.
Se podra usar modo programado, no
conectando INTR o desactivndola, y
leyendo y comprobando los bits IBF
hasta que estuvieran a 1, para despus
leer del puerto A o B.
2004
2005
ECII
1.51
MODO 1 en entrada
2004
2005
ECII
1.52
MODO 1 en salida
1. La escritura (WR#=0) de un dato en el
puerto A o B hace que se active la seal
OBF# para comunicar al perifrico que
la CPU ha puesto un dato en el 8255
listo para ser enviado a dicho perifrico.
2. Tras un tiempo ms o menos largo que
depende del perifrico, ste activa la
seal ACK# indicando dato aceptado.
3. Cuando el perifrico pone de nuevo
ACK# a 1, el 8255 activa la lnea INTR si
est habilitada. Puede tener lugar una
interrupcin si adems la lnea est
conectada a la CPU.
4. La siguiente seal de escritura generada
por la CPU hace bajar la seal INTR.
Se podra usar modo programado para
comprobar cuando el perifrico ha ledo
el dato leyendo y comprobando los bits
OBF# hasta que estuvieran a 1, para
despus escribir en el puerto A o B.
2004
2005
ECII
1.53
MODO 1 en salida
2004
2005
ECII
1.54
2004
2005
ECII
1.55
2004
2005
ECII
1.56
MODO 2
Cualquier
Cualquier
secuencia
secuencia en
en la
la
que
que WR#
WR# ocurra
ocurra
antes
antes que
que ACK#
ACK#
yy STB#
STB# ocurra
ocurra
antes
antes que
que RD#
RD#
es
es permisible.
permisible.
2004
2005
ECII
1.57
2004
2005
ECII
1.58
Combinacin de modos
El 8255 puede tener un puerto programado en un modo y
otro en otro modo.
Ejemplos:
Interfaz de teclado y
display:
2004
2005
ECII
1.59
2004
2005
Interfaz de disquetera:
ECII
1.60
2004
2005
ECII
1.61
Si
Si BUSY
BUSY == 11
la
la impresora
impresora
est
est ocupada
ocupada
Un
Un pulso
pulso negativo
negativo
en
en DATASTROBE#
DATASTROBE#
carga
carga el
el dato
dato del
del
puerto
puerto A
A en
en la
la
impresora.
impresora.
2004
2005
ECII
1.62
2004
2005
ECII
1.63
IN
ANI
JNZ
LDA
PPIC
80
BUCLE
1200
OUT
MVI
OUT
MVI
OUT
PPIA
A, 00
PPICTRL
A, 01
PPICTRL
;
;
;
;
;
;
;
;
;
;
Entrada/Salida
2004
2005
ECII
1.64
Concepto
Causas de las interrupciones
Tipos de interrupciones
Determinacin de la direccin de una ISR
Identificacin de la fuente de interrupcin
Sistemas de prioridad en las interrupciones
Secuencia de eventos
Ejemplo de circuito controlador de int.: 8259
Interrupciones en el PC
Concepto de interrupcin
Interrupciones:
2004
2005
ECII
1.65
excepto
excepto en
en el
el caso
caso de
de las
las
interrupciones
interrupciones software
software
Concepto de interrupcin
2004
2005
ECII
1.66
Ejemplo:
Interrupcin provocada por un controlador de DMA,
...cuando termina la transmisin de un bloque de datos,
...para poner en conocimiento de los programas que tratan la E/S
...que ha terminado y se encuentra disponible para poder realizar
otra operacin.
Concepto de interrupcin
2004
2005
ECII
1.67
Tratamiento de la interrupcin
Ejecucin del programa de gestin de la interrupcin.
2004
2005
ECII
1.68
2004
2005
ECII
1.69
Errores de programa
Situaciones de error introducidas por el programador
Ejemplos:
Error de desbordamiento (overflow)
Divisin por cero
- En ambos casos la interrupcin cancel la ejecucin del
programa o transfiere el control a una subrutina del usuario
Violacin de la proteccin de memoria
- El programa de usuario intenta acceder a una direccin en
una parte protegida de la memoria interrupcin que
cancela la ejecucin y genera mensaje de error
Ejecucin de cdigos de operacin no vlidos
2004
2005
ECII
1.70
Entrada / salida
Para poder hacer uso de la CPU mientras un perifrico no est listo
para realizar la transferencia (E/S por interrupciones)
...o durante el tiempo que el perifrico realiza la transferencia
(DMA)
...es necesario que la interfaz del perifrico o el controlador de
DMA puedan interrumpir a la CPU.
Tipos de interrupciones
2004
2005
ECII
1.71
Interrupciones externas
Se inician a peticin de dispositivos externos.
ENMASCARABLES:
Se pueden habilitar o inhibir usando instrucciones del tipo EI
(Enable Interrupt) y DI (Disable Interrupt).
Ejemplo: interrupciones de E/S
NO ENMASCARABLES:
Tienen mayor prioridad que las enmascarables.
Ejemplo: para gestionar fallos del hardware externo a la CPU y
condiciones de tiempo real.
Tipos de interrupciones
2004
2005
ECII
1.72
Interrupciones software
Las instrucciones de interrupcin software se emplean para realizar
llamadas al SO.
Son instrucciones ms cortas que las de llamada a subrutina y no se
necesita que el programa llamante conozca la direccin del SO en
memoria.
2004
2005
ECII
1.73
Interrupciones vectorizadas:
Este trmino se refiere a todos los esquemas en los cuales el
dispositivo que solicita una interrupcin suministra de algn modo
la direccin de la rutina de servicio.
Cmo?
2004
2005
ECII
1.74
Interrupciones vectorizadas:
Direccionamiento absoluto
La interfaz suministra la direccin completa de su ISR
Direccionamiento relativo
La interfaz slo enva parte de la direccin, que deber ser
completada por la CPU
- aadiendo ms bits
- sumando una cantidad
Se reduce el nmero de bits que necesita transmitir la interfaz,
con lo que se simplifica su diseo
Se limita el nmero de dispositivos que la CPU puede identificar
automticamente.
Envo de una instruccin de bifurcacin completa
en lugar de una simple direccin.
2004
2005
ECII
1.75
Interrupciones vectorizadas:
Con los mtodos anteriores, la ISR para un dispositivo determinado
siempre debe comenzar en la misma localizacin
Para conseguir mayor flexibilidad:
el programador puede almacenar en esta localizacin una
instruccin de salto a la rutina adecuada
Esto lo puede realizar de forma automtica el mecanismo de
gestin de interrupciones
2004
2005
ECII
1.76
ECII
Identificacin de la fuente de interrupcin 1.77
Antonio Caas, Dpto. ATC. UGR. 2003-2005
2004
2005
ECII
Identificacin de la fuente de interrupcin 1.78
Antonio Caas, Dpto. ATC. UGR. 2003-2005
2004
2005
Soluciones:
Una o mltiples lneas de interrupcin con un dispositivo en
cada lnea
Cada fuente de interrupcin generar una seal de interrupcin en
la lnea apropiada.
La identificacin del dispositivo es trivial y la direccin de comienzo
de la ISR puede ser fija o vectorizada.
ECII
Identificacin de la fuente de interrupcin 1.79
Antonio Caas, Dpto. ATC. UGR. 2003-2005
2004
2005
2004
2005
ECII
1.80
Interrupciones anidadas
Se puede producir una interrupcin antes de haber atendido
completamente la anterior
Debe terminarse de atender la interrupcin que ya ha terminado su
tratamiento, o se ha de aceptar y atender inmediatamente la nueva
solicitud?
Inhibicin de interrupciones
Mecanismos de prioridad para permitir que cada programa defina los tipos
de interrupciones que puede tolerar
2004
2005
ECII
1.81
puede
puede ser
ser un
un
circuito
circuito
externo
externo aa la
la
CPU
CPU llamado
llamado
controlador
controlador de
de
interrupciones
interrupciones
2004
2005
ECII
1.82
2004
2005
ECII
1.83
(POLLING I)
2004
2005
ECII
1.84
(POLLING II)
2004
2005
ECII
1.85
(DAISY-CHAIN I)
2004
2005
ECII
1.86
(DAISY-CHAIN II)
3.
3. El
El flanco
flanco de
de subida
subida de
de INTA#
INTA# permite
permite que
que el
el dispositivo
dispositivo
seleccionado
seleccionado cargue
cargue un
un 11 en
en su
su biestable
biestable de
de concesin
concesin
de
de servicio
servicio BICON,
BICON, yy que
que se
se pase
pase aa la
la fase
fase de
de servicio
servicio
1.
1. Mientras
Mientras INTA#
INTA# vale
vale
1,
1, los
los biestables
biestables de
de
peticin
peticin BIPET
BIPET dejan
dejan
pasar
pasar las
las peticiones
peticiones
internas
internas PETPER
PETPER de
de
sus
sus respectivos
respectivos
perifricos
perifricos
2004
2005
ECII
1.87
Durante
Durante el
el pulso
pulso
INTA#
INTA# == 0,
0, las
las
seales
seales PRI#
PRI#
forman
forman una
una cadena
cadena
de
de ceros,
ceros, que
que se
se
interrumpe
interrumpe por
por el
el
primer
primer dispositivo
dispositivo
que
que tenga
tenga BIPET
BIPET aa 11
2.
2. Cuando
Cuando llega
llega un
un pulso
pulso de
de concesin
concesin
INTA#
INTA# == 0,
0, se
se congelan
congelan los
los biestables
biestables
BIPET,
BIPET, de
de forma
forma que
que la
la situacin
situacin de
de
solicitud
solicitud de
de los
los perifricos
perifricos no
no pueda
pueda variar
variar
(DAISY-CHAIN III)
2004
2005
ECII
1.88
2004
2005
ECII
1.89
2004
2005
ECII
1.90
2004
2005
ECII
1.91
2004
2005
ECII
1.92
2004
2005
ECII
1.93
2004
2005
ECII
1.94
2004
2005
ECII
1.95
2004
2005
ECII
1.96
ISR
CPU:
CPU: informa
informa al
al dispositivo
dispositivo de
de que
que su
su
solicitud
solicitud ha
ha sido
sido reconocida
reconocida
CPU:
CPU: desactiva
desactiva las
las interrupciones
interrupciones durante
durante
la
la primera
primera instruccin
instruccin oo durante
durante toda
toda la
la
ISR
ISR
Dispositivo:
Dispositivo: en
en respuesta,
respuesta, desactiva
desactiva la
la
seal
seal de
de solicitud
solicitud de
de interrupcin
interrupcin
Inhabilitar
Inhabilitar // habilitar
habilitar interrupciones?
interrupciones?
CPU:
CPU: interrumpe
interrumpe el
el programa
programa que
que se
se
estaba
estaba ejecutando
ejecutando en
en ese
ese momento
momento
Pila
Pila
PC
PC
PC
PC
Pila
Pila
Se
Se reanuda
reanuda la
la ejecucin
ejecucin del
del programa
programa
interrumpido
interrumpido
Guardar
Guardar en
en la
la pila
pila todos
todos los
los registros
registros que
que
se
se modifiquen
modifiquen
Cuerpo
Cuerpo principal
principal de
de la
la ISR
ISR (por
(por ej.
ej. E/S)
E/S)
Restaurar
Restaurar todos
todos los
los registros
registros previamente
previamente
guardados
guardados
Habilitar
Habilitar interrupciones
interrupciones si
si previamente
previamente se
se
haban
haban inhabilitado
inhabilitado
Retorno
Retorno de
de la
la ISR
ISR
Ejemplo de ISR
2004
2005
ECII
1.97
psw
data
9
psw
;
;
;
;
;
;
El
El sistema
sistema de
de interrupciones
interrupciones del
del 8080
8080 no
no es
es
habilitado
habilitado por
por EI
EI hasta
hasta despus
despus de
de ejecutada
ejecutada la
la
instruccin
instruccin que
que sigue
sigue aa EI
EI (RET
(RET en
en este
este caso).
caso).
Esto
Esto asegura
asegura que
que la
la ISR
ISR se
se completa
completa antes
antes de
de
que
que la
la CPU
CPU entre
entre en
en otro
otro ciclo
ciclo de
de interrupcin.
interrupcin.
2004
2005
Caractersticas generales
Permite manejar 8 lneas de interrupciones
vectorizadas con prioridad.
Compatible con las familias 8085 y 8086.
Prioridades alterables por software.
Permite enmascaramiento individual de cada lnea.
Es posible conectar 9 controladores para manejar
hasta 64 niveles de interrupcin.
ECII
1.98
2004
2005
ECII
1.99
Bfer
Bfer triestado
triestado bidirecbidireccional
cional de
de 88 bits,
bits, aa travs
travs
del
del cual
cual se
se transfieren
transfieren
rdenes
rdenes de
de control
control ee
informacin
informacin de
de estado
estado
IRR
IRR (Interrupt
(Interrupt
Request
Request Register):
Register):
niveles
niveles de
de
interrupcin
interrupcin que
que
estn
estn solicitando
solicitando
servicio
servicio
Almacena
Almacena yy compara
compara la
la
identificacin
identificacin de
de todos
todos
los
los 8259
8259 conectados
conectados en
en
cascada
cascada
Determina
Determina las
las prioridades
prioridades de
de
los
los bits
bits aa 11 en
en el
el IRR.
IRR. El
El que
que
tenga
tenga mayor
mayor prioridad
prioridad se
se
selecciona
selecciona yy se
se lleva
lleva al
al bit
bit
correspondiente
correspondiente del
del ISR
ISR cuando
cuando
la
la CPU
CPU acepta
acepta la
la interrupcin
interrupcin
ISR
ISR (In-Service
(In-Service
Register):
Register): niveles
niveles de
de
interrupcin
interrupcin que
que
estn
estn siendo
siendo
servidos
servidos actualmente
actualmente
IMR
IMR (Interrupt
(Interrupt Mask
Mask
Register):
Register): inhabilita
inhabilita
algunos
algunos niveles
niveles de
de
interrupcin
interrupcin aa la
la
salida
salida de
de IRR
IRR
ECII
1.100
2004
2005
A0:
A0: junto
junto con
con RD#
RD# yy WR#
WR#
selecciona
selecciona el
el registro
registro aa
leer/escribir
leer/escribir
INTA#
INTA# (Interrupt
(Interrupt
Acknowledge):
Acknowledge): De
De la
la
CPU
CPU al
al 8259.
8259. En
En forma
forma de
de
pulsos
pulsos causa
causa que
que el
el 8259
8259
ponga
ponga informacin
informacin de
de
vectorizacin
vectorizacin en
en el
el bus
bus
de
de datos
datos
IR0,
IR0, IR7:
IR7: Peticiones
Peticiones de
de
interrupcin
interrupcin desde
desde los
los
perifricos
perifricos
INT:
INT: Del
Del 8259
8259 aa la
la CPU
CPU
para
para realizar
realizar una
una peticin
peticin
de
de interrupcin
interrupcin
SP#/EN#
SP#/EN# (Slave
(Slave Progress
Progress
// Enable
Enable Buffer)
Buffer)
ECII
1.101
2004
2005
El
El maestro
maestro controla
controla aa los
los esclavos
esclavos aa travs
travs de
de las
las 33
lneas
lneas de
de cascada,
cascada, que
que actan
actan como
como Chip
Chip Selects
Selects para
para
los
los esclavos
esclavos durante
durante los
los pulsos
pulsos INTA#
INTA# (excepto
(excepto el
el 1)
1)
Las
Las salidas
salidas INT
INT de
de los
los esclavos
esclavos se
se conectan
conectan aa las
las entradas
entradas IR
IR del
del maestro.
maestro.
Cuando
Cuando una
una lnea
lnea IRi
IRi se
se activa
activa yy despus
despus es
es reconocida,
reconocida, el
el maestro
maestro
permite
permite que
que el
el esclavo
esclavo ponga
ponga en
en el
el bus
bus de
de datos
datos el
el vector
vector de
de interrupcin
interrupcin
ECII
1.102
2004
2005
ECII
1.103
2004
2005
ECII
1.104
2004
2005
ECII
1.105
2004
2005
8086
8080, 8085
ECII
1.106
2004
2005
ECII
1.107
2004
2005
ICW3:
ICW3: Establece
Establece cmo
cmo estn
estn conectados
conectados
8259
8259 esclavos
esclavos aa un
un 8259
8259 maestro
maestro
ICW4:
ICW4: Establece
Establece modos
modos de
de funcionamiento
funcionamiento
ECII
1.108
2004
2005
ECII
1.109
2004
2005
ECII
1.110
2004
2005
IRi
IRi debe
debe quitarse
quitarse antes
antes de
de EOI
EOI para
para evitar
evitar
que
que ocurra
ocurra una
una segunda
segunda interrupcin
interrupcin
IRi
IRi puede
puede seguir
seguir en
en alto
alto sin
sin generar
generar
nuevas
nuevas interrupciones
interrupciones
ECII
1.111
2004
2005
ICW3
Usada slo cuando hay ms de un 8259 (cascada)
El formato de ICW3 es distinto si se enva al maestro o al esclavo:
MAESTRO (SP#/EN# = 1, o BUF=1&M/S=1 en ICW4)
Se pone un 1 en cada
bit i tal que IRi est
conectado a un 8259
esclavo.
ESCLAVO (SP#/EN# = 0, o BUF=1&M/S=0 en ICW4)
Los bits 2-0 identificarn
en adelante a ese
esclavo.
Cada vez que se produzca
el primer INTA#, el
esclavo los comparar con
C2-C0 y si son iguales
enviar el vector en los
siguientes pulsos.
ECII
1.112
2004
2005
ECII
1.113
2004
2005
ECII
1.114
2004
2005
ECII
1.115
2004
2005
ECII
1.116
2004
2005
ECII
1.117
2004
2005
OCW2
Los bits R, SL y EOI controlan varios modos de rotacin de prioridad
y de fin de interrupcin.
Los bits L2, L1, L0 determinan el nivel de interrupcin sobre el que
se acta cuando SL = 1.
ECII
1.118
2004
2005
ECII
1.119
2004
2005
Despus
Despus de
de rotar
rotar
(IR4
(IR4 ha
ha sido
sido servida)
servida)
ECII
1.120
2004
2005
ECII
1.121
2004
2005
ECII
1.122
2004
2005
ECII
1.123
2004
2005
Interrupciones en el PC
Interrupciones vectorizadas:
Existen 256 interrupciones posibles (0 a 255 = 0xFF),
vectorizadas.
Tabla de vectores de interrupcin:
primeros 1024 bytes de memoria (0 a 0x3FF).
ECII
1.124
2004
2005
Interrupciones en el PC
ECII
1.125
2004
2005
Interrupciones vectorizadas:
Slo unas pocas se generan por hardware (interna o
externamente).
si IF (Interrupt Flag) = 1, detienen temporalmente la ejecucin del
programa
si IF = 0, el procesador ignora las int. que llegan por la patilla INTR
IF se puede borrar con CLI / disable() y activar con STI /
enable()
Hay una interrupcin no enmascarable especial que se reconoce
siempre, independientemente de IF, cuando se activa la patilla NMI
(Non Maskable Interrupt)
Interrupciones en el PC
ECII
1.126
2004
2005
Interrupciones vectorizadas:
Cuando se produce una interrupcin, el procesador:
almacena el estado actual de la mquina introduciendo en la pila el
registro de flags, el registro CS y el registro IP
pone IF a 0 para evitar nuevas interrupciones
multiplica por 4 el nmero de interrupcin (que le llega por el bus
de datos) para obtener la direccin de un vector de interrupcin
asigna a IP y CS el vector de interrupcin
se salta a la rutina que haya en esa direccin, que finalizar al
ejecutar IRET
Interrupciones en el PC
ECII
1.127
2004
2005
AT
AT
ECII
1.128
2004
2005
Interrupciones en el PC
ICW1
ICW2
ICW3
ICW4
0x20
0x21
0x21
0x21
OCW1 - IMR
OCW2
AT
AT
OCW3
Leer IMR
0x21
0x20
0x20
0x21
ICW1
ICW2
ICW3
ICW4
0xA0
0xA1
0xA1
0xA1
OCW1 - IMR
OCW2
OCW3
Leer IMR
0xA1
0xA0
0xA0
0xA1
ECII
1.129
2004
2005
Interrupciones en el PC
8259
maestro
IRQ0
IRQ1
IRQ2
8259
esclavo
IRQ8
IRQ9
IRQ10
IRQ11
IRQ12
IRQ13
IRQ14
IRQ15
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
PC
AT y post.
temporizador
teclado
Bus
PC
reloj tiempo
real
Bus ISA/PCI
(tarjeta
sonido)
Bus ISA/PCI
Bus ISA/PCI
(ej. tarjeta
video, NIC)
Bus ISA/PCI
Ratn PS/2
Procesador
matemtico
IDE1
IDE2
COM1
COM2
COM2
COM1
Disco
Normalmente
duro
LPT2 o
tarjeta de
sonido ISA
Disquetera
LPT1
Vector
0x08
0x09
0x0A
0x70
0x71
0x72
0x73
0x74
0x75
0x76
0x77
0x0B
0x0C
0x0D
0x0E
0x0F
Interrupciones en el PC
ECII
1.130
2004
2005
Ejemplo de ISR:
;rutina de interrupcin
ISR
proc far
sti
; Si queremos que entren las...
; ...interrupciones prioritarias
push ax
; guardar AX
push bx
; guardar otros regs. cambiados
.
.
.
pop
bx
; recuperar otros regs. cambiados
mov
al,20h
; EOI
out
20h,al
; OCW2
Se
Se enva
enva al
al 8259
8259 maestro
maestro la
la
orden
pop
ax
; recuperar AX
orden de
de fin
fin de
de interrupcin
interrupcin
antes
antes del
del IRET
IRET
iret
(slo
(slo para
para interrupciones
interrupciones
ISR
endp
provenientes
provenientes del
del 8259)
8259)
Interrupciones en el PC
Pasos en la ejecucin de una interrupcin:
SP SP 2
pila FLAGS
IF, TF 0
SP SP 2
pila CS
CS M[n int.
SP SP 2
pila IP
IP M[n int.
(Ejecucin de ISR)
IP pila
SP SP + 2
CS pila
SP SP + 2
FLAGS pila
SP SP + 2
Ejemplo
Ejemplo 1:
1: cmo
cmo afecta
afecta aa la
la
pila
pila la
la ejecucin
ejecucin de
de INT
INT 1Ah
1Ah
* 4 + 2]
* 4]
ECII
1.131
2004
2005
Interrupciones en el PC
Pasos en la ejecucin de una interrupcin:
Ejemplo
Ejemplo 2:
2: ejecucin
ejecucin de
de INT
INT 4Ah
4Ah
ECII
1.132
2004
2005
Interrupciones en el PC
Pasos en la ejecucin de una interrupcin:
Ejemplo
Ejemplo 3:
3: camino
camino seguido
seguido por
por INT
INT 21h
21h
ECII
1.133
2004
2005
Interrupciones en el PC
Modificacin de una
interrupcin:
Funcin 35h de INT 21h
(getvect()) devuelve
el valor actual de un
vector
Funcin 25h de INT 21h
(setvect()) cambia el
valor de un vector
Ejemplo:
Ejemplo: modificacin
modificacin de
de la
la
int.
int. 16h
16h para
para que
que se
se ejecute
ejecute
despus
despus de
de nuestro
nuestro cdigo
cdigo
ECII
1.134
2004
2005
Entrada/Salida
Leccin 1.1
Leccin 1.2
Leccin 1.3
Leccin 1.4
Introduccin
E/S programada
Interrupciones
Acceso directo a memoria (DMA)
1.4.1 Concepto
1.4.2 Controlador de DMA (DMAC)
1.4.3 Seales de control
1.4.4 Secuencia de eventos
1.4.5 Mtodos de control de DMA
1.4.6 Ejemplo de DMAC: 8237
ECII
1.135
2004
2005
Concepto de DMA
ECII
1.136
2004
2005
ECII
1.137
2004
2005
Controlador de DMA
El DMA utiliza un controlador de DMA (DMAC).
Posicin
Posicin de
de
memoria
memoria aa usar
usar
como
como fuente
fuente oo
destino
destino del
del prximo
prximo
dato
dato aa transferir
transferir
Especifica
Especifica el
el n
n de
de palabras
palabras
que
que quedan
quedan por
por transferir
transferir
Si
Si existe,
existe, almacena
almacena
datos
datos en
en ruta
ruta entre
entre
memoria
memoria yy E/S
E/S
Controlador de DMA
ECII
1.138
2004
2005
El
El registro
registro de
de
prioridades
prioridades especifica
especifica la
la
prioridad
prioridad de
de cada
cada canal
canal
para
para acceder
acceder al
al bus
bus
Es
Es habitual
habitual que
que existan
existan
registros
registros de
de rdenes
rdenes oo
control
control (CR
(CRii)) que
que
especifican
especifican el
el modo
modo de
de
control
control (bloques,
(bloques, robo
robo
de
de ciclo,
ciclo, etc.)
etc.) usado
usado por
por
cada
cada canal.
canal.
Seales de control
ECII
1.139
2004
2005
Seales de control
RS:
RS: seleccin
seleccin del
del registro
registro aa leer
leer // escribir
escribir
ECII
1.140
2004
2005
Secuencia de eventos
ECII
1.141
2004
2005
Secuencia de eventos
ECII
1.142
2004
2005
ECII
1.143
2004
2005
ECII
1.144
2004
2005
ECII
1.145
2004
2005
ECII
1.146
2004
2005
Memoria multipuerto
Existen memorias multipuerto con varios mdulos y varios registros
de direccin y de memoria que pueden operar simultneamente
conectados a varios buses, siempre que no direccionen un mismo
bloque de memoria.
Se puede conectar a un puerto el procesador y a los dems puertos
varios controladores de perifricos:
ECII
1.147
2004
2005
ECII
1.148
2004
2005
ECII
1.149
2004
2005
Ciclo activo:
ECII
1.150
2004
2005
Tipos de transferencia:
Lectura:
De memoria a perifrico.
Se activan MEMR# e IOW#.
Escritura:
De perifrico a memoria.
Se activan IOR# y MEMW#.
Memoria a memoria:
Se copian bytes desde un rea de memoria, indicada por el registro
de direcciones del canal 0, a otra rea de memoria apuntada por el
registro de direcciones del canal 1.
ECII
1.151
2004
2005
Modos de transferencia:
Transferencia simple:
Se transfiere un byte y se devuelve el control a la CPU.
El contador se decrementa y si pasa de 0000 a FFFF se activa EOP.
La lnea DREQi debe mantenerse activa hasta que el 8237 responda
con DACKi.
Transferencia en bloques:
Se transfieren tantos bytes, de forma consecutiva, como indique el
contador.
Cuando el contador pasa de 0000 a FFFF se genera EOP.
La lnea DREQi debe mantenerse activa hasta que el 8237 respnda
con DACKi.
ECII
1.152
2004
2005
Modo cascada:
El canal correspondiente no acta como un canal de transferencia
propiamente dicho, sino que da paso a un segundo 8237, que es el
que la realiza.
Cada canal puede activar otro 8237 (un 8237 puede activar a 4).
Los otros 8237 podran controlar a otros 8237 en cascada.
ECII
1.153
2004
2005
Otras opciones:
Autoincremento / autodecremento:
La transferencia puede seguir un curso ascendente (desde la
direccin de memoria inicial a otras superiores) o descendente.
Autoinicio:
Cuando finaliza la transferencia de un bloque, se reponen los
valores originales de direccin y contador, y se comienza de nuevo
automticamente.
Prioridad fija:
El canal 0 es el de mayor privilegio, el 4 el menos prioritario.
Prioridad rotatoria:
Cuando un canal termina una transferencia, pasa a tener el mnimo
nivel de privilegio, y el siguiente canal, el mximo nivel.
ECII
1.154
2004
2005
ECII
1.155
2004
2005
ECII
1.156
2004
2005
ECII
1.157
2004
2005
ECII
1.158
2004
2005
ECII
1.159
2004
2005
ECII
1.160
2004
2005
Libre
Libre
Libre
Libre
AT
AT
Disquetera
Disquetera
PC/XT
PC/XT
Libre
Libre
Refresco
Refresco DRAM
DRAM
Libre
Libre
Libre
Libre
Libre
Libre
Disquetera
Disquetera
Libre
Libre
HD
HD
ECII
1.161
2004
2005
Registro
Registro de
de pgina
pgina
PC/XT
(16 blq. de 64 KB)
AT 8 bits
(256 blq. de 64 KB)
AT 16 bits
(128 blq. de 128 KB)
Transf. de palabras
en direcciones pares
Registro
Registro de
de direccin
direccin del
del 8237
8237
A19
A19A18
A18A17
A17A16
A16A15
A15A14
A14A13
A13A12
A12A11
A11A10
A10 A9
A9 A8
A8 A7
A7 A6
A6 A5
A5 A4
A4 A3
A3 A2
A2 A1
A1 A0
A0
D3 D2 D1 D0
A23
A23A22
A22A21
A21A20
A20A19
A19A18
A18A17
A17A16
A16A15
A15A14
A14A13
A13A12
A12A11
A11A10
A10 A9
A9 A8
A8 A7
A7 A6
A6 A5
A5 A4
A4 A3
A3 A2
A2 A1
A1 A0
A0
D7 D6 D5 D4 D3 D2 D1 D0
A23
A23A22
A22A21
A21A20
A20A19
A19A18
A18A17
A17A16
A16A15
A15A14
A14A13
A13A12
A12A11
A11A10
A10 A9
A9 A8
A8 A7
A7 A6
A6 A5
A5 A4
A4 A3
A3 A2
A2 A1
A1 00
D7 D6 D5 D4 D3 D2 D1
ECII
1.162
2004
2005
Registro direccin
Registro contador
Registro rdenes
Registro mscara (set/reset 1 bit)
Registro modo
Borrar flip-flop byte-pointer
Canal * 2
Canal * 2 + 1
0x08
0x0A
0x0B
0x0C
Canal DMA
1
2
3
5
6
7
Entrada/Salida
Leccin 1.1
Leccin 1.2
Leccin 1.3
Leccin 1.4
Leccin 1.5
ECII
1.163
2004
2005
Introduccin
E/S programada
Interrupciones
Acceso directo a memoria (DMA)
Ejemplos de programas de E/S
1.5.1 Ej. de transfer. de E/S usando las tres tcnicas
ECII
1.164
2004
2005
Objetivo:
Enviar un bloque a la impresora (200 caracteres,
almacenado a partir de la direccin 3000h)
Configuracin para E/S programada y por interrupciones:
Status
Status Register:
Register:
SR
impresora
impresora lista
lista
SR77 == 11
para
para aceptar
aceptar caracteres
caracteres
SR
generacin
generacin de
de
SR00 == 11
interrupciones
interrupciones habilitada
habilitada
Cuando
Cuando la
la impresora
impresora
est
est lista
lista para
para recibir
recibir un
un
carcter,
carcter, pone
pone RDY
RDY == 11
Buffer
Buffer Register:
Register: contiene
contiene el
el
carcter
carcter que
que se
se enva
enva
Parallel Output Controller (interfaz)
Carcter
Carcter de
de 88 bits
bits enviado
enviado aa
la
la impresora
impresora
Transfer
Transfer Request:
Request: la
la interfaz
interfaz
genera
genera un
un pulso
pulso para
para que
que la
la
impresora
impresora lea
lea el
el dato
dato
ECII
1.165
2004
2005
#200
PRBLQ
E/S programada
;
;
;
ECII
1.166
2004
2005
E/S programada
; Imprimir bloque
PRBLQ LDAA 0,X
; RegA <- M[RegIX+0]
JSR
PRCHR
INX
; RegX++ (apuntar a sig. carct.)
DECB
; RegB- (actualizar contador)
BNE
PRBLQ
; Si RegB!=0 => enviar otro car.
RTS
; Imprimir el carcter almacenado en RegA
PRCHR TST
PSR
; N (bit de signo) <- SR7
BPL
PRCHR
; Si N = 0 => esperar
STAA PBR
; BR <- A, impresora pone SR7 a 0
RTS
PSR
PSR yy PBR
PBR son
son etiquetas
etiquetas para
para los
los puertos
puertos SR
SR yy BR,
BR,
mapeados
mapeados en
en memoria
memoria
ECII
1.167
2004
2005
BA
BC
STX
LDAA
STAA
LDAA
STAA
BA
#200
BC
#$01
PSR
RMB
RMB
2
1
ECII
1.168
2004
2005
ORG
FDB
$FFF8
ISR
; Sondear impresora
; Si SR7 = 1 => saltar a Terminal
; Si SR7 = 0 => saltar a PRINT
; Sondear otros dispositivos,
; comenzando por el terminal
Cuando
Cuando tiene
tiene lugar
lugar una
una interrupcin,
interrupcin, el
el 6800
6800
toma
toma la
la direccin
direccin de
de la
la ISR
ISR de
de M[FFF8h]
M[FFF8h]
BA
0,X
PBR
BA
BC
RETURN
PSR
ECII
1.169
2004
2005
;
;
;
;
;
;
;
Peticin
Peticin de
de DMA:
DMA: cuando
cuando se
se activa
activa
TRQ#,
TRQ#, el
el DMAC
DMAC pide
pide el
el bus
bus (BR=1)
(BR=1)
yy el
el 6800
6800 se
se lo
lo concede
concede (BG=1).
(BG=1).
El
El DMAC
DMAC lee
lee el
el carcter
carcter de
de
memoria
memoria (1er
(1er ciclo
ciclo del
del bus)
bus) yy lo
lo
escribe
escribe en
en BR
BR (2
(2 ciclo
ciclo del
del bus)
bus)
Direccin
Direccin destino
destino
Direccin
Direccin fuente
fuente
Contador
Contador de
de bytes
bytes
Registro
Registro buffer
buffer (recibe
(recibe el
el
byte
byte ledo
ledo por
por el
el DMAC)
DMAC)
ECII
1.170
2004
2005
Registro
Registro de
de estado
estado
ECII
1.171
2004
2005
ECII
1.172
2004
2005