You are on page 1of 69

Comparación de

las Familias de
Microprocesadores
Marcelo Guarda
Gabriel Lombardi
Comparación
de las Familias
de Microprocesadores

Marcelo Guarda
Gabriel Lombardi

1998
Prefacio
En este trabajo se presenta un complemento al titulado “Familias de Microprocesadores”
realizado por Esteban Lopez, el cual ha sido utilizado (entre otros) como bibliografía y de
donde se han extraído ciertas figuras.
La base del mismo se centra en analizar cómo resuelve cada familia distintos temas, como
por ejemplo, manejo de memoria, interrupciones, cesión de bus, etc.
Para esto hemos realizado una comparación de las familias, con el objetivo de poder
describir cuáles son los métodos que cada una implementa para llegar a resolver estos temas,
cuáles son las normas a respetar en cada caso y cuáles son las grandes diferencias en la
concepción de cada microprocesador.
De esta forma se logra una presentación de los contenidos de la materia, en forma más
conceptual que en el trabajo anteriormente citado ya que se pone de manifiesto las
“coincidencias” entre las tres marcas analizadas y las “diferencias” de implementación de
acuerdo a los distintos criterios de diseño.
Como se aclaró anteriormente es necesario para una mejor interpretación de este texto que el
lector ya esté en contacto con las distintas familias de microprocesadores, debido a esto se
recomienda antes la lectura de manuales o la bibliografía ya citada.
Con la intención de seguir un determinado orden y unificación la presentación de este
trabajo se realiza en forma similar a la empleada en “ Familia de Microprocesadores”.
La organización del trabajo se divide en diez capítulos.
En el capitulo 1 se estudia ¿cómo cada microprocesador trabaja con las memorias?. En el
capitulo 2 se detallan los distintos ciclos de trabajo de cada microprocesador. En el capitulo
3 se estudia ¿cuáles son las características de cada microprocesador para trabajar con
memorias lentas?. En el capitulo 4 se detallan las características de los microprocesadores
para ceder los buses, y el trabajo con memorias dinámicas. En los capítulos 5,6 y 7 se trata el
tema de interrupciones y ¿cómo hace cada flia. para extender el número de interrupciones?.
En el capitulo 8 se tratan algunas instrucciones y pin-outs especiales. En los capítulos 9 y 10
se estudian las distintas interfaces de comunicación paralelo y serie de cada flia.

Marcelo Guarda , Gabriel Lombardi


La Memoria del Sistema 1

Capítulo 1: LA MEMORIA DEL SISTEMA

1. ORGANIZACIÓN Y CAPACIDAD DE DIRECCIONAMIENTO

1.1. EL 6809
Tiene un bus de direcciones de 16 bits lo que implica que puede direccionar hasta 64 Kbytes de memoria, y
dentro de ésta se encuentra la memoria ROM, la memoria RAM, los periféricos y los vectores de
interrupciones.

Memoria
de
programa

Datos

A0-A15 Pila

I/O

FFF0
Interrup
FFFF

Este micro no separa las I/O de la memoria, sino que pasan a ser parte de ésta, implicando que hay que tenerlas
en cuenta cuando se realiza el mapeo.

1.2. EL 8088
La memoria es dividida en dos zonas, la memoria propiamente dicha, direccionable por 20 bits ( l Mbyte de
manejo) y la I/O que la forman los dispositivos de entrada salida, direccionable a través de 16 bits, implica 64
Kbytes de lugares para I/O.

Memoria
FFFFF
Reset
FFFF0
Extra

Datos A0-A19

Código IO/M=0
Pila

003FF
Interrup
00000

Dispositivos de I/O

64Kbyte A0-A15

IO/M=1
2 Comparación de las Familias de Microprocesadores

La memoria a su vez está dividida en cuatro partes:


• Código: donde se encuentran los programas o sea las instrucciones.
• Pila: que será utilizada como pila del sistema.
• Datos: donde se encuentran la mayoría de los datos utilizados por el sistema.
• Extra: donde se encuentran datos extras del sistema y también lo utilizan algunas instrucciones para el
manejo de cadenas.
Luego veremos como acceder a éstos segmentos, cual es su capacidad de memoria y su ubicación.

1.3. EL Z80
Tenemos también la separación entre la memoria y los dispositivos I/O. Para el direccionamiento de memoria
utiliza 16 bits (64 Kbytes) y para el direccionamiento de los dispositivos de entrada salida I/O utiliza 8 bits que
implican 256 lugares.
Memoria
00 Reset
Interrup por
soft

38
Comienzo
INT A0-A16
Modo 1
66
MREQ=1
Comienzo
NMI

Dispositivos de I/O

256byte A0-A7
IORQ=1

2. INDICACIÓN DE ACCESO
Enunciadas las características generales de direccionamiento de memoria veamos como hace cada
microprocesador para trabajar con ellas.

2.1. EL 6809
Como es todo una sola memoria, para indicar a ésta, que está accediendo, ya sea para leer o escribir, utiliza la
línea R/W y el correspondiente chip será seleccionado por las líneas de direcciones, donde, como la memoria
está formada por varios chips de capacidades más chicas que el total, un grupo de los 16 bits de direcciones se
utilizará para seleccionar el dispositivo generando las líneas de CS (chip select) y otro grupo para llegar al lugar
de memoria deseado.

A0-A15 Memoria
R/W
La Memoria del Sistema 3

2.2. EL 8088
Indica por medio de la línea IO/M si se trata de direccionar a la memoria o a algún dispositivo I/O de entrada
salida.
Cuenta para indicar al dispositivo seleccionado si se va a realizar una escritura la línea WR y para indicar una
lectura la línea RD.

A19 ó A15(IO/M)
a A0
Memoria
IO/M e I/O
RD
WR

2.3. EL Z80
Para indicar el acceso a memoria cuenta con la línea MREQ y el acceso a entrada salida con la línea IORQ.
También, para indicar que operación se realiza cuenta con la línea RD para lectura y la línea WR para escritura.

A15 a A0 A7 a A0

WR WR
Memoria I/O
RD RD

MREQ IORQ

Ya sea en el 8088 como en el Z80, para direccionar cada uno de los chips que forman la memoria, se utilizan
las direcciones y de éstas se forman los CS al igual que en el 6809.

3. REGISTROS PARA ACCESOS A MEMORIA

3.1. EL 6809
Trabaja con un PC (contador de programa), el cual indica la dirección de la instrucción siguiente. Este puede,
junto con los registros generales A y B, los registros índices X e Y, de datos, y registro de página DP, según sea
el modo de direccionamiento, incrementar su valor para saltar a alguna dirección de memoria.

Registros
AyB
Registros
Indices
XeY
DP
Dato de
Memoria

Estos datos junto con el PC forman las direcciones efectivas en los movimientos, cuando se cambia el contenido
del PC.

Para el caso de ser necesario salvar los registros del sistema (llegada de interrupciones, salto a subrutinas, etc.)
guardamos en la Pila, desde el lugar de memoria donde indica el registro puntero de Pila del sistema S. Éste
queda apuntando al último lugar en la Pila cargado, y después de descargar se va decrementando.
4 Comparación de las Familias de Microprocesadores

También existe un puntero de Pila de usuario U, disponible para el usuario.

U Pila
PC Próxima De
Instrucción Usuario
Y
S Sistema

3.2. EN EL Z80
Nos encontramos con una forma similar, donde tenemos un PC que apunta a la dirección de la próxima
instrucción. Este registro también se utiliza junto con los de propósitos generales, e índices para formar
direcciones efectivas de memoria. El PC también se puede cambiar, cargándolo desde memoria o directamente.
También este micro utiliza los registros de propósitos generales, datos de memoria, los registros índices, etc,
para generar las direcciones efectivas en el cambio de contenido del PC.

Instrucciones Pila del


de programa sistema
PC SP

3.3. EN EL 8088
Aparece una gran diferencia en el concepto de las ubicaciones de memoria. Es que se toman los lugares como
direcciones relativas a una dirección dada, donde comienza cada segmento, y están indicadas por los registros de
segmentos.

Según la operación que estemos realizando trabajaremos con cada uno de éstos registros, como base del
segmento de memoria a utilizar y junto con los registros IP (apuntador de instrucción), SP (puntero de pila),
BP (puntero de base), SI (índice fuente), DI (índice de destino), y los de propósito general, armamos la dirección
efectiva de memoria.
La Memoria del Sistema 5

Tipo de referencia a memoria Registro de segmento usado Regla de seleccione de segmento


Instrucciones CS (Code) Automática con todas las instrucciones
Todos los pushes y pops a la pila. Referencias a
Pila SS (Stack) memoria relativas al BP excepto en referencias
de datos
Referencias a datos cuando: relativo a la pila,
Local Data DS (Data)
operación con cadenas
External (Global) Data ES (Extra) Uso con cadenas

Entonces una dirección de memoria estará formada siempre por una dirección de segmento más un
desplazamiento dado, donde vemos que como los registros internos del 8088 son de l6 bits, sólo podremos, con
el desplazamiento, movernos 64 k .
Estamos en condiciones de decir que cada segmento tiene como máximo 64 Kbytes, pero esto no significa que
desaprovechamos el mega direccionable, sino que como es posible cambiar el contenido de los registros de
segmento, podemos movernos con ellos hasta donde queramos, pudiendo solapar los segmentos si quisiéramos,
pero siempre con un desplazamiento máximo de 64 K desde la base de cada segmento.

Nota: Como los registros son de 16 bits, para completar los 20 bits de salida de dirección en los cuatro menos
significativos se agregan internamente todos ceros, o sea que sí, DS = 4033 H implica que la dirección
seleccionada es 40330H . Siempre es el registro de segmento multiplicado por 10 más el offset.
Esto parecería un desperdicio de 16 lugares de memoria por cada registro de segmento, pero no es así, porque
como definimos antes, podemos variar el contenido de cada segmento y llegar a cualquier lugar de memoria.

Importante:
Esta característica de direccionamiento, de un registro que apunte al comienzo del segmento más un
desplazamiento que según el modo de direccionamiento está dado por uno, dos o tres bytes, que pueden ser
registros, offset implícitos o contenidos de lugares de memoria, nos da la posibilidad de trabajar con tablas y
matrices.

Tablas:

TABLA 2

Elemento
TABLA 1
Tabla 1

Registro de
Segmento

Matrices:

FILA 3 M
a
t
Columna
FILA 2 r
Fila i
z
FILA1
1
Matriz
Registro de
Segmento
6 Comparación de las Familias de Microprocesadores
Ciclo de Bus 7

Capítulo 2: CICLOS DE BUS

1. DEFINICIONES
• Ciclo de clock: tiempo mínimo indivisible, por ser un dispositivo sincrónico. Es la señal del oscilador.
• Ciclo de máquina: Consta de un conjunto de ciclos de clock en donde se realiza una cierta actividad. Es
también indivisible(están presentes tiempos de restablecimiento y recuperación). Son ciclos de carga y
ejecución.
• Ciclo de instrucción: involucra varios ciclos de máquina y bajo ciertas condiciones son indivisibles, como
por ejemplo a las interrupciones.

2. COMPARACIÓN

2.1. EL 6809
Tiene dos entradas para trabajar con el reloj que son EXTAL y XTAL.
Tiene un clock interno que para ser utilizado debe conectarse un cristal entre éstas dos patas. El reloj divide la
frecuencia del cristal en cuatro para obtener las señales E y Q.
También se puede conectar un generador externo en la pata EXTAL y conectar XTAL a masa.
Las señales de reloj E y Q están en cuadratura, son usadas para sincronizar todo el sistema.
La idea de estar en cuadratura, es para poder trabajar con los flancos de ambas, esto hace como si tuviéramos un
reloj del cuádruple de frecuencia (pues todos los flancos son activos), pero trabajamos con una frecuencia de
alimentación más chica.
Esto solucionaba el problema de trabajar con frecuencias relativamente altas (para esos tiempos) dentro del chip.

2.1.1. I N D I C A C I O N E S DE LOS CICLOS DE BUS


Las señales de control con las cuales indica el 6809 al exterior su ciclo de bus son:
- R/W que indica lectura o escritura.
- BA y BS que juntas indican el estado del BUS.
Si BA = 1 indica que el bus está en alta impedancia (pero no significa que se puede utilizar), junto con BS se
decodifican según:

BA BS Estado del MPU


0 0 Normal (Running)
0 1 Reconocimiento de interrupción o reset
1 0 Reconocimiento de SYNC
1 1 Reconocimiento de Halt o concesión del bus (Bus Grant)

En éste último caso (BA=BS=1) coloca sus líneas de buses y control en alta impedancia para permitir que otros
dispositivos trabajen con los buses.
8 Comparación de las Familias de Microprocesadores

2.1.2. C ICLO DE LECTURA Y ESCRITURA

La línea R/W indica el sentido de transferencia de los datos, se la considera válida en el flanco positivo de Q
pero aparece un tiempo después del inicio del ciclo con la bajada de E.
Se utiliza para indicar a la memoria si tiene que habilitar sus salidas o sus entradas.
Muchas veces sus flancos sirven para latchear los datos en la memoria, junto con E.
Las líneas de direcciones, BA y BS son también válidas un tiempo después de que E bajó y podemos decir que
son ciertas durante la subida de Q.
Las líneas de dato dependen de sí es lectura o escritura
Durante una lectura en éstas líneas debe estar válido el dato un tiempo 17 antes de que E baje (tiempo de set
up), ya que con éste flanco el micro guarda en su interior el dato leído. El dato debe permanecer un tiempo 18
luego de la bajada de E para poder ser latcheado (tiempo de mantenimiento).
Durante la escritura por parte del micro el dato a escribir aparece un tiempo 20 luego de que Q subió, o sea un
tiempo después de que las direcciones y R/W son estables, y permanece un tiempo 21 estable para que la
memoria lo pueda latchear luego del fin del ciclo con la bajada de E.

R/W

Dir
6809

Datos

BA BS

Una característica importante de éste micro es que carece de una señal que valide el acceso a memoria y cuando
el bus se pone en alta impedancia por diversas características habría que anular los posibles accesos falsos.
Se propone en muchos casos construir una línea VMA ( valid memory address) de tal forma que trabaje con los
chips select para habilitar los accesos.

Nota: un caso especial de activación de esta línea es cuando se produce un pasaje del control de las direcciones
del PC al DMAC (controlador de acseso directo a memoria) con un HALT o DMA/BREQ, en donde existe
un tiempo en el que el bus está en alta impedancia y deja que el DMAC tome el control, En este momento se
puede realizar un acceso falso a memoria, para evitar esto es que se propone realizar la línea VMA.(ver en
gráfica de DMA/BREQ la señal se llama DMAVMA y se construye externamente).
Ciclo de Bus 9

2.2. EL 8088
Posee una entrada de clock donde debe conectarse una señal de reloj externa ya que no tiene generador interno,
con un ciclo de trabajo del 33 %.
Esto se realiza con el circuito integrado generador de reloj 8284.

Una característica importante es que el bus de direcciones y datos se encuentran multiplexados en el tiempo ya
que utilizan las mismas patas, (desde AD19 a AD16 y desde AD 7 a AD0), de A8 a A15 son sólo de dirección.
Para poder demultiplexar ésta información el micro nos tiene que dar información de cuando son direcciones y
cuando datos.
En este micro tenemos que un ciclo de bus está compuesto por cuatro ciclos de clock (como mínimo) que se
llaman T1, T2, T3 y T4.
Las direcciones se emiten en T1 y la transferencia de datos ocurre entre T3 y T4. El T2 se utiliza para cambiar el
sentido del bus durante las operaciones de lectura.
Durante:
Tl : Se envían direcciones y señales de control de bus.
T2: Se proporcionan las señales de lectura o escritura.
T3: Se produce para dar tiempo a las memorias para acceder a los datos.
T4 : Se desactivan todas las señales de control para prepararse para el siguiente ciclo de bus.

2.2.1. S EÑALES DEL CONTROL DEL BUS :


Para indicar que en el bus multiplexado se encuentran direcciones y no datos, cuenta con la salida ALE que
cuando está en 1 indica que en el bus multiplexado en ese momento hay direcciones.
Esta señal se utiliza en el sistema externo al micro para que unos registros transparentes, en los cuales entra el
dato y está presente en la salida sin retardo ( 74 LS 373 ), latcheen las direcciones. La bajada de ALE latchea.
10 Comparación de las Familias de Microprocesadores

También consta con una señal que indica que el micro recibe o transmite datos, y es la DT/R, es utilizada para
habilitar el sentido en los registros bidireccionales de datos (74LS245), que se colocan para trabajar con gran
cantidad de componentes cargados en el bus. Estos registros manejan corrientes mayores que las que el micro
puede manejar.
Para habilitar a éstos registros bidireccionales o dejar su salida en alta impedancia se utiliza la línea DEN que se
pone activa durante cada acceso a memoria o ciclos de interrupción.

Para indicar que efectuamos una lectura está la línea RD y para escritura la línea WR.
Durante T1 en las líneas AD19 a AD16 hay direcciones y luego estas líneas pasan a ser S6 a S3 donde S6 está
siempre en 0, S5 indica la condición de la bandera de interrupción IF , S4 y S3 indican el segmento que se está
accediendo.
S4 S3 Segmento
0 0 Extra
0 1 Pila
1 0 Código ó ninguno
1 1 Datos

A19-A16

A15-A8

A7-A0
8088
ALE

DEN

DT/R

SSO
Ciclo de Bus 11

2.2.2. CICLOS DE LECTURA Y ESCRITURA

2.2.2.1. Ciclo de Lectura


Comienza en T1 con la aparición de la señal de ALE, cuyo flanco negativo se usa para latchear las direcciones,
que son válidas en el bus de direcciones/datos (AD0-AD7) en este momento.
Las líneas de direcciones A8-A15 no necesitan ser latcheadas ya que permanecen válidas en todo el ciclo de
bus.
Desde T1 a T4 la señal IO/M indica si es una operación a memoria o a un I/O.
En T2 las direcciones se sacan del bus de direcciones/datos y el bus se pone en alta impedancia (AD0-AD7).
La señal de control de lectura (RD) aparece en T2 y causa que el dispositivo direccionado habilite su bus de
datos.
Un tiempo después, debe estar disponible el dato válido sobre el bus.
Cuando el 8088 retorna la señal RD a un nivel alto, el dispositivo direccionado pondrá en alta impedancia su
salida de datos.
Si usamos un buffer en el bus, las señales DT/R y DEN están disponibles para ello.
Para medir el tiempo de acceso a la memoria, vemos en el diagrama que hay una línea desde el final de T3 hasta
el bus de datos ya que es allí donde el 8088 muestrea los datos. El tiempo de acceso a la memoria comienza
cuando aparece la dirección en el bus de direcciones de la memoria (esto es un tiempo TCLAV después del
inicio de T1) y dura hasta el final de T3 (en realidad hasta un tiempo de setup TDVCL antes del final de T3 que
necesita el 8088), por lo tanto el tiempo de acceso de la memoria debe ser como mínimo: 3 ciclos de clock –
TCLAV – TDVCL.

=O implica RECIVE

Data Enable
12 Comparación de las Familias de Microprocesadores

2.2.2.2. Ciclo de Escritura


También empieza con la aparición de la señal de ALE y la emisión de las direcciones. La señal IO/M también se
suministra para indicar si es a memoria o a I/O.
En T2, inmediatamente después de la emisión de las direcciones, el 8088 emite el dato a escribir en la locación
direccionada.
Este dato permanece válido al menos hasta la mitad de T4.
Durante T2, T3 y Tw, el 8088 envía la señal de control de escritura (WR) que se pone en estado activo en el
comienzo de T2. Los datos se escriben en la memoria en el flanco positivo de WR.
La señal de RD en la lectura está un poco más retrasada que la de WR en la escritura para dar tiempo a que el
bus quede en alta impedancia.

2.2.3. C ONEXIÓN DE MEMORIA O PERIFÉRICO AL BUS M ULTIPLEXADO


Puede hacerse a nivel de Bus local (Bus de direcciones y de datos multiplexado tomado directamente en las
patas del micro) o a nivel de Bus de Sistema (demultiplexado tomado luego de los registros).
En el primer caso, el circuito conectado, no debe perturbar la dirección colocada en T1. Para evitarlo debemos
asegurarnos que las salidas de la memoria estén en Alta impedancia durante este ciclo, si no, existirá un
conflicto en el bus.
Ciclo de Bus 13

Para evitar esto las salidas de datos de la memoria deben ser controladas por la señal de lectura, además de la
decodificación de la dirección.
Esto requiere que la memoria posea una entrada OE que si está inactiva deja el bus de datos en alta impedancia.

Si no se dispone de OE en la memoria pueden implementarse otra clase de circuitos pero tienen el inconveniente
que se reduce el tiempo disponible para la decodificación antes de recibir el dato.

La conexión de la memoria al sistema buffereado es mucho más sencilla. Pero también pueden producirse
conflictos si las memorias no tienen OE.
En el caso de la escritura, entre el momento en que el circuito es activado por CS hasta el instante en que la
señal de WR está activa, las salidas de la memoria están conectadas al bus sobre el cual ya circula el dato a
escribir produciéndose un conflicto.

Nota:
Es importante ver que la señal RD sale después de que las direcciones están presentes, ya que se puede dar, que
cuando las direcciones están presentes y habilitemos la salida de los dispositivos de memoria generemos un conflicto en
las líneas AD7a AD0, ya que están presente datos y direcciones.
Para evitar esto la salida de datos debe estar controlada por la línea RD, o sea si disponemos de una entrada OE en la
memoria esta estará gobernada por RD.
Si no tenemos OE en la memoria puede implementarse otra clase de circuitos, pero tienen el inconveniente que se
reduce el tiempo disponible para la decodificación antes de recibir el dato.

En el micro existe también una salida SSO que, junto con IO/M y DT/R indican el estado de la máquina.

IO/M DT/R SSO Función


1 0 0 Reconocimiento de interrupción
1 0 1 Leer puerto I/O
1 1 0 Escribir puerto I/O
1 1 1 Halt, detener
0 0 0 Acceder a código (instrucciones)
0 0 1 Leer memoria
0 1 0 Escribir memoria
0 1 1 Pasivo
14 Comparación de las Familias de Microprocesadores

2.3. EL Z80
Este micro posee una entrada de reloj FI para conectar un reloj externo.

2.3.1. C ICLOS DE TRABAJO .


El Z80 temporiza de manera distinta según el tipo de ciclo de máquina que éste ejecutando.
Cada ciclo de máquina se divide en ciclos T de clock.
Tenemos los ciclos de máquina siguiente:
• Búsqueda de la instrucción
• Lectura o escritura de memoria
• Lectura o escritura de I/O
• Petición / Reconocimiento del bus
• Petición / Reconocimiento de interrupciones
• Petición / Reconocimiento de NMI
• Salida desde una instrucción HALT
Cada ciclo de máquina (ciclos M) dura de 3 a 6 ciclos de clock (ciclos T).

2.3.2. S E Ñ A L E S DE C ONTROL DEL BUS.


Antes de ver cada ciclo veamos cuales son las señales que el Z80 produce para trabajar con los buses.
La línea M1 es una salida e indica al exterior que el micro está realizando un ciclo de búsqueda de código de
operación, también como veremos sirve para reconocimiento de interrupciones.
Cuenta con la línea RD para indicar un ciclo de lectura y la línea WR para escritura.

2.3.3. C I C L O S DE M ÁQUINA .

2.3.3.1. Ciclo de búsqueda del código de operación.


Este ciclo se utiliza para cargar las instrucciones.
El PC se coloca en el bus durante los dos primeros ciclos de reloj. Medio ciclo después se activará la señal
MREQ. Indicando que accedemos a un dispositivo de memoria.
Como las direcciones ya estaban estabilizadas el flanco negativo de MREQ puede usarse directamente como CS
o CE para la memoria. También en éste momento se activa la señal RD indicando que la memoria debe estar
activa para leer el dato.
El micro leerá el dato en el flanco positivo de T3 y en éste flanco también se ponen inactivas las líneas RD y
MREQ (luego veremos los otros tiempos T3 y T4).
Ciclo de Bus 15

2.3.3.2. Ciclo de lectura o escritura a memoria.

Se colocan las direcciones y luego se activan RD y MREQ en una lectura.


En una escritura se activan las líneas WR y MREQ cuando el dato es estable en el bus.
En la lectura el dato se samplea en el flanco negativo de T3.
16 Comparación de las Familias de Microprocesadores

2.3.3.3. Ciclo de I/O

En estos ciclos de máquina se inserta un tiempo de clock más, que como veremos será para trabajar con más
tiempo con los periféricos de I/O ya que pueden ser más lentos que las memorias.
Se colocan las direcciones y la diferencia es que se activa la línea IORQ y no MREQ ya que realizamos un
acceso a un dispositivo I/O.
Las otras señales RD o WR hacen lo mismo que antes.
El resto de los ciclos se verán luego.

Nota: Como en Zilog la lectura o escritura se activan por flancos de RD o WR implica que no hace falta ir con
la señal de reloj a los distintos dispositivos. En cambio en Motorola hay que ir con el reloj a todos los
dispositivos.

2.3.4. E L ESTADO DEL BUS SE RECONOCE SEGÚN :


• MREQ=0, M1=1, y RD=0 => Lectura de memoria
• MREQ=0 y WR=0 => Escritura de memoria
• IORQ=0 y RD=0 => Lectura de I/O
• IORQ=0 y WR=0 => Escritura de I/O
• MREQ=0, RD=0, y M1=0 => Búsqueda de instrucción.
• BUSAK=0 => Reconocimiento de pedido de Bus
• IORQ=0 y M1=0 => Reconocimiento de interrupción
Dir

Datos

RD
WR
Z80
MREQ

IORQ

M1
Trabajo con Memorias Lentas 17

Capítulo 3: TRABAJO DE CADA MICRO CON MEMORIAS


LENTAS

1. EN EL 6809
Para trabajar con memorias lentas existe una entrada que es el pin MRDY (memory ready) que produce que la
señal E del reloj permanezca un tiempo múltiplo de un cuarto de ciclo de bus y como máximo 16 useg más en
alto y por ende Q en bajo, esto hace que se disponga de éste tiempo para esperar que la memoria lenta coloque
los datos para luego grabarlos con el flanco negativo de E.

Cuando no es válido el acceso a memoria el micro anula automáticamente el efecto de MRDY activo, de ésta
forma retoma su velocidad normal.
También puede ser utilizado cuando se cedió el bus a otros dispositivos, ya que controla las señales de reloj
(HALT y DMA/BREQ).

2. EL 8088
Para trabajar con memorias lentas posee una entrada llamada READY que produce un estado de espera, que es
un ciclo de reloj.
Esta señal se muestrea al finalizar el ciclo T2 y si está activa agrega un ciclo de espera TW antes de T4, o sea
entre T3 y T4. Luego se vuelve a muestrear en la mitad de TW y si persiste la señal activa READY se produce
otro TW y si no pasa a T4.

Esta entrada puede estar gobernada por el generador de reloj 8284 A, donde existen otras especificaciones de
tiempo y la entrada pasa a ser RDY del generador.
18 Comparación de las Familias de Microprocesadores

La forma de trabajar con READY son las siguientes:


Para insertar un estado de espera debe estar en 0 al final de T2. Para evitar la inserción de otro estado de espera
debe subir después de la transición positiva de T3.Esta forma se llama normalmente listo.

Otra forma de operación es la normalmente no listo donde READY se encuentra normalmente en 0 y se sube
para evitar tiempos de esperas antes del muestreo en el medio de T3.

3. EN EL Z80
El trabajo con memorias lentas está un poco más desarrollado, pues, en los ciclos de I/O ya se coloca un
tiempo adicional para los periféricos de I/O que son más lentos que las memorias.
También se hace esto en un ciclo de reconocimiento de interrupción (como se verá, el micro lee un periférico) y
agrega dos tiempos TW.
En cada ciclo es posible colocar tiempos de espera TW, activando la entrada WAIT.

En el Ciclo de Búsqueda:
Trabajo con Memorias Lentas 19

En el Ciclo de Lectura y Escritura


20 Comparación de las Familias de Microprocesadores
Cesión de Bus (Refresco de DRAM) 21

Capítulo 4: CESION DE BUS ( REFRESCO DE DRAM).

Muchas veces el micro cede el bus a otros dispositivos, como puede ser otros micros o por ejemplo un
controlador de DMA, un coprocesador, etc.

1. CESIÓN DEL BUS AL DMAC

1.1. EN EL 6809
Existen dos líneas de entrada para tal fin:
La línea HALT , que cuando está activa luego del final de una ejecución de una instrucción, hace que las líneas
de datos, direcciones y R/W del micro se pongan en alta impedancia (estado indicado al exterior por BA = BS =
1, señal de reconocimiento de HALT) cediendo los buses.
Mientras HALT siga activo el micro se mantiene inactivo sin perder los datos de los registros internos. Las
señales E y Q funcionan normalmente.

Como método para realizar refrescos de memoria dinámicas con DMAC, es bueno ya que puede quedar el
tiempo necesario en esta posición, su único inconveniente es que el micro prioriza la instrucción en curso.

HALT
DMA/BREQ

6809

BA
BS

1.2. EL 8088
Posee una entrada de características similar a la anterior del 6809 y se llama HOLD y posee una salida de
reconocimiento HLDA.
Coloca los buses de direcciones, datos y control en alta impedancia.
La diferencia es que para que el micro tome el pedido y active la señal HLDA, debe terminar de ejecutar las
instrucciones que tiene en la cola de espera o hasta que se necesite el bus en alguna.
No corta el ciclo de maquina, pero sí el de instrucción.
22 Comparación de las Familias de Microprocesadores

Luego de que HOLD se desactive las líneas seguirán en alta impedancia hasta que se precise el BUS.

Como se muestrea en la mitad de la instrucción es prioritaria a las interrupciones que se muestrean al final.

HOLD

8088

HLDA

1.3. EN EL Z80
Nos encontramos también con una pata destinada a este propósito de solicitud del bus y se llama BUSRQ y
una señal de reconocimiento la señal BUSAK que indica a los dispositivos solicitantes que los buses y las
señales de control entran en alta impedancia.
Esta solicitud se muestrea en el flanco positivo del último clock de cualquier ciclo de máquina. El tiempo
máximo de espera para su atención es un ciclo de máquina.
Cesión de Bus (Refresco de DRAM) 23

BUSRQ
BUSAK

Z80

RFSH

2. REFRESCO DE DRAM

2.1. EN EL 6809
Siguiendo con este tipo de entradas en el 6809 existe una especial que se llama DMA/BREQ y que es la que
normalmente se utiliza para refresco de DRAM.
Esta entrada da otro método para ceder los buses.
Cuando se activa esta señal la instrucción se corta al finalizar el ciclo de bus actual (es la diferencia con el
HALT).
Luego de la solicitud y atención el dispositivo solicitante tendrá l4 ciclos de bus antes de que el micro lo
reutilice para autorefresco, característica necesaria dado que se trata de un micro dinámico y necesita refrescar
sus registros internos no así el 8088 y el Z80 que son estáticos.
El autorefresco requiere un ciclo de bus con un ciclo muerto anterior y posterior al ciclo de refresco, para
guardar el estado de BA y BS y para cambiar el control del bus, y el otro ciclo para descargar el estado de BA y
BS para devolver el control del bus.
24 Comparación de las Familias de Microprocesadores

Nota: En el 6809 también se propone un método llamado bus multiplexing, donde se concede el control al
DMAC y al micro un 50% a cada uno. No es muy eficiente y requiere circuitería externa.

2.2. CARACTERÍSTICAS DEL Z80:


Aquí es el momento de resaltar una de las características más importantes del Z80, y es que está diseñado para
un manejo de memorias dinámicas y su refresco. Está construido con especial interés en manejo de memorias.
El Z80 tiene un registro interno, el R ( MEMORY REFRESH ) de siete bits.
Este registro guarda una dirección y cada vez que el micro lee una instrucción (ciclo de búsqueda o ciclo de
atención de interrupción) su contenido se utiliza para direccionar una dirección de DRAM y realizar un refresco
en ella.
No se utiliza la señal RD durante el refresco para no generar accesos falsos.
Luego de refrescar este registro se incrementa para poder hacerlo en la próxima dirección.

Refresco en el Ciclo de Búsqueda

La línea RFSH de salida del micro indica que en los 7 bits menos significativos del bus de direcciones hay una
dirección de refresco, para acceder a la memoria dinámica y se refresque la fila dada por esta dirección. (ver
circuito página 77 del manual)

Refresco en el Ciclo de Reconocimiento de Interrupción

Este método de refresco es totalmente transparente al programador y no retrasa al micro.


Interrupciones 25

Capítulo 5: INTERRUPCIONES

1. CONCEPTOS GENERALES:

Interrupción: es un pedido al micro para que deje de ejecutar lo que está haciendo y atienda a algo que es más
importante.

Clasificación:
No enmascarable: no pueden inhibirse, se atienden sí o sí, Son activas por flanco. Deben ser activas por flanco
porque como no pueden inhibirse, si fueran activas por nivel, estarían entrando continuamente en su rutina de
atención.

Enmascarable: Pueden inhibirse por medio de una máscara que se encuentra en todos los micros en un registro
llamado CC en el 6809, FLAG en el 8088 y Flag F en el Z80. Pueden ser activas por nivel.
Estas interrupciones le ahorran el trabajo al micro de ir testeando cada periférico y gobiernan la relación micro-
periféricos.
A éstas interrupciones no se las desatiende sino que se las hace esperar, ya que el nivel permanece solicitando la
interrupción hasta que la rutina de atención sea ejecutada.
En la rutina o aceptación de interrupción se resuelve el problema y si corresponde el periférico desactiva el
pedido.

Interrupciones de software: se usan en casos especiales, no son señales externas sino que son instrucciones,
señales internas (como en el caso del 8088) o consecuencias de eventos internos al micro.

2. CONCEPTOS DE CADA FAMILIA

2.1. MOTOROLA 6809


El 6809 tiene tres entradas de pedido de interrupción que son NMI, FIRQ y IRQ.

NMI

FIRQ

IRQ
6809

Cuando el micro recibe un pedido de interrupción lo atiende al finalizar la instrucción en curso. (Se muestrean
en la bajada de Q antes que termine el ciclo de bus del último ciclo de instrucción)
Según sea el tipo de interrupción, el micro al atenderla guardará una cierta cantidad de registros en la pila para
recuperarlos luego de que realizó la rutina de atención.
Tiene dos tipos de atención, rápida y lenta, bajo el concepto de la cantidad de registros que almacena en la pila
antes de atenderla.
• Rápida es la FIRQ, en donde el micro guarda el PC y el CC en la pila y luego salta a la rutina de atención,
donde debemos tener en cuenta si se utilizan los registros no salvados, salvarlos dentro de la rutina.
• Lentas son NMI e IRQ, donde se guardan en la pila los registros PC, S, Y, X, DP, A, B y CC. Luego de
guardar esto, el micro internamente pasa a cargar en el PC el contenido de unas direcciones fijas llamadas
vectores de interrupción. En estos contenidos esta la dirección de origen de la rutina de atención de la
interrupción, según sea su tipo.
26 Comparación de las Familias de Microprocesadores

Estos vectores son fijos y siempre el micro salta a éstos lugares.


Esta es una rigidez en el sistema de atención de interrupciones de este micro.

2.1.1. E XTENSIÓN DE SOLICITUD DE INTERRUPCIONES .


Para poder tener más interrupciones y no tener que encuestar que dispositivo pidió la interrupción, se ideó un
PIC (controlador de interrupciones) el cual fundamentalmente realiza la siguiente operación: El PIC
básicamente lo que hace es engañar al micro y cuando este coloca FFF8 y FFF9 (debido a IRQ) en el bus de
direcciones para cargar su contenido en el PC, cambia ésta dirección y selecciona otro lugar de memoria según
fue la interrupción. Entonces el micro carga una dirección distinta de comienzo de atención de la interrupción
en el PC.
Solicitudes

IRQ MEMORIA
PIC
DIR
DIR

6809

DATO DATO

Cuando no hay interrupciones la dirección pasa derecho, es como si el PIC no existiera.

Nota: En esta familia, cuando entra la interrupción se guarda el CC y se enmascara la interrupción que entró
y también la de menor prioridad.

2.1.2. INTERRUPCIONES POR SOFT :


En éste micro existen tres:
• SW: es una instrucción, no mira las banderas I y F del registro CC y salta a atender la interrupción
guardando el contenido de todos los registros, enmascara las banderas I y F, de tal forma que deshabilita las
entradas FIRQ e IRQ.
• SW2 y SW3: No preguntan ni enmascaran a nadie, son como saltos de categoría ya que ellos mismos
guardan todos los registros, pueden actuar durante una interrupción.
Es difícil hablar de prioridades ya que a estas instrucciones las coloca el programador.

Nota: Para retornar de una interrupción al final de la rutina de atención se coloca el comando RTI que es una
instrucción que devuelve el control al programa anterior a la interrupción, hace recargar a los registros que salvó
la interrupción, para esto se fija en el bit E del CC que indica si fue una interrupción rápida o lenta.
Interrupciones 27

2.2. INTEL 8088

Todos los micros de INTEL tienen dos entradas de interrupción, una activa por flanco NMI y otra INTR por
nivel.

NMI

8088

INTR

También cuenta con varias interrupciones por soft que son instrucciones, existen interrupciones internas
automáticas debidas al procesamiento de datos, por ejemplo error al dividir, código inválido, etc.

Cuando entra una interrupción los pasos que realiza el micro son:
• Termina la instrucción en curso.
• Pregunta si hay trampa (es el bit TF del FLAG y cuando está activo al final de una instrucción, realiza una
interrupción, sirve para debug).
• ¿NMI?
• ¿Overflow del coprocesador.?
• ¿INTR?
• ¿Instrucción INT?.

Si ocurrió alguna de éstas condiciones el micro:


• Guarda el contenido de registro de bandera FLAG, en la pila.
• Desactiva las banderas de interrupción IF y TF (trace), deshabilitando a INTR y a la trampa o trace.
• Guarda el contenido del CS en la pila
• Salva el contenido de IP en la pila
• Carga el nuevo contenido de CS e IP.

Vemos que el micro no salva los otros registros. Esto es importante a tener en cuenta cuando ingresamos a la
atención de la interrupción ya que debemos salvar los registros que utilizamos para volver con ellos como
estaban antes del salto.

2.2.1. T A B L A DE V ECTORES :
La tabla de vectores en INTEL está ubicada en las direcciones desde 00000H hasta 003FFH (1 Kbyte), donde
hay 256 tipos de vectores de 4 bytes cada uno, dos para CS y dos para IP.
Existe una zona de vectores a los cuales, según el caso, el micro acude siempre y otra zona donde el usuario le
dice al micro a que vector ir a buscar una dirección para atender una determinda interrupción.
Esta característica hace que el manejo de interrupciones sea de gran potencia y que también su PIC sea muy
versátil y menos rígido que el PIC de Motorola.
Los vectores se dividen en 256 tipos, los 32 primeros son guardados por INTEL para el sistema, aunque hay
muchos que no se usan, se guardan para futuros micros, y los 224 restantes son para el usuario.
Entre los vectores del sistema encontramos el tipo 2 que es el vector al cual acude el micro cuando recibe una
interrupción por su terminal NMI.
Entre otros están los vectores de interrupción por soft, ejemplo tipo 5 instrucción BOUND y las interrupciones
automáticas, ejemplo tipo 0 error al dividir, tipo 1 paso a paso (trampa), tipo 6 código inválido, etc.
Es de notar que muchas de éstas interrupciones vuelven al mismo lugar desde donde saltaron ejecutando
nuevamente la instrucción que hizo que se derivara a esta interrupción, con el fin de poder corregir el error.
Ésto en cuanto a los vectores que el micro acude siempre; pero una característica importante sucede cuando
entra un pedido de interrupción por la línea INTR, en este caso el micro indicará y solicitará al exterior que en
su bus de datos coloque el tipo de vector en el cual quiere que el micro lea la dirección de inicio de la rutina de
atención (comúnmente se usan de 20H a FFH)
28 Comparación de las Familias de Microprocesadores

Como se verá esto hacá que el dispositivo que pida interrupción coloque en el bus de datos su vector de
atención. Esto le da a las interrupciones una gran versatilidad.

Nota: cuando el micro lee el número de vector luego de que entro INTR, lo hace de un dispositivo de I/O
implica IO/M = 1.
El periférico coloca el tipo de vector, y el micro internamente lo multiplica por 4 para calcular la dirección de
éste y de allí cargar su contenido que es la dirección de comienzo de la rutina de atención.

2.2.2. P ARA AUMENTAR LA ENTRADA DE SOLICITUD DE INTERRUPCIONES


Se coloca un PIC el cual tiene un esquema de prioridades dados por el programador.
Básicamente lo que hace el PIC es controlar el sistema de prioridades cuando entra una solicitud, y pedir al
micro una interrupción, cuando el micro envía la señal de reconocimiento el PIC coloca en el bus de datos el
número de vector donde el micro debe buscar la dirección de comienzo de la rutina.

Nota: Cuando el micro acepta un INTR, luego deshabilita dicha entrada. Para que el sistema de prioridades del
PIC funcione hay que habilitarla nuevamente durante la rutina de atención de cada interrupción.

Solicitudes

INTR PIC
INTA Nº de
vector MEMORIA
DATOS
Dir de inicio DATOS
8088
DIR
DIR Nº de vector

2.3. ZILOG Z80


El micro posee dos entradas de pedido de interrupción, NMI e INT, una no enmascarable activa por flanco y
otra enmascarable activa por nivel.

NMI

Z80
INT

Este micro tiene 3 Modos de atender las interrupciones enmascarables.


Los distintos Modos se diferencian en la forma de buscar la dirección de inicio de la rutina de atención de la
interrupción. El Modo se setea por soft.
Para la atención de la interrupción, este micro cuenta con la particularidad de que están los registros de uso
general por duplicado, entonces al aceptar una interrupción, el micro solo guarda el PC y los registros los puedo
Interrupciones 29

cargar en los registros auxiliares durante la rutina de atención. Esto hace que la interrupción sea atendida
rápidamente, y no tener que esperar el tiempo para salvar varios registros en la pila.
El hecho de no salvar el estado de la máquina tiene inconvenientes cuando vienen más de 2 interrupciones
anidadas.

2.3.1. L A S D IRECCIONES ( NO VECTORES )


El micro cuenta con una zona de memoria desde 00H a 38H, reservada para interrupciones por Soft, o como
veremos para el modo 0.
Una interrupción por soft es RST $XX donde XX está entre estos lugares de memoria, y en este lugar se halla la
rutina de atención o una instrucción salto a una rutina.
Notar que no son vectores sino que en ellos ya comienza la rutina de atención.

Cuando el micro recibe una NMI, que se reconoce al final de la instrucción en curso, guarda el PC en la pila y
salta a la dirección de memoria 0066H, la atiende haciendo una instrucción RST $0066H. En este lugar
comienza la rutina de atención.
En esta atención el micro inhibe la entrada de INT con el bit de habilitación IFF.
El micro posee el bit de habilitación IFF1 y el bit de IFF2 (almacena temporalmente el bit IFF1,como veremos).

Nota: notar que el concepto de atención es el de pasar a ejecutar una instrucción RST $XX, y el de devolución o
retorno es el de ejecutar una instrucción RETN para no enmascarables y RETI para enmascarable. Utiliza los
códigos de operación de estas instrucciones para generar los controles, o los mismos dispositivos externos
detectaran estos códigos dándose por enterados del fin de la atención.

La atención de las interrupciones enmascarables, se realiza según cada Modo, donde sé setean con las
instrucciones IM0, IM1, IM2, por defecto queda en Modo 0.

2.3.2. L O S M ODOS

2.3.2.1. Modo 0:
Cuando estamos en este modo, y se produce una interrupción, el periférico que la solicitó toma la señal del
micro diciéndole que la aceptó, coloca en el bus de datos una instrucción (código de operación, normalmente
una instrucción de salto) y luego el micro que la recibe la ejecuta. Se suele utilizar RST $XX, con XX entre 00H
y 38H donde esto no es un vector sino que es el lugar de comienzo de la rutina, y que lógicamente hallaremos
una instrucción de salto a la rutina propiamente dicha si es que existe un gran número de rutinas distinta según
sea la interrupción solicitante. (Esta forma de trabajo es igual a la del 8085 de Intel).
En este modo una instrucción dura dos ciclos de reloj más que lo normal debido a los dos TW agregados
automáticamente.Luego veremos para que se agregan.

INT Periférico
MEMORIA

DATO Instrucción

Z80
Comienzo
DIR de la
Rutina
MODO 0

2.3.2.2. Modo 1:
En este modo el micro salta a un lugar de memoria fijo que es 0038H (no es un vector, sino que es una dirección
de inicio de la rutina) donde estará ubicada la rutina de servicio o un salto a dicha rutina si es larga ya que en
0066H se encuentra la rutina de NMI, que es fija también. (Este caso se asemeja al 6809).
30 Comparación de las Familias de Microprocesadores

INT MEMORIA

DIR Busca Instrucción 0038 H

Z80

MODO 1

2.3.2.3. Modo 2:
Cuando atiende la interrupción, y entrega las señales de reconocimiento, el micro lee el bus de datos donde el
periférico solicitante debe colocar la parte baja de una dirección. La parte alta se completa con el contenido del
registro I (Interrup Page Address Register).
Esta dirección se carga en el PC y el contenido de esta es la dirección de inicio de la rutina de atención. (actúa
como vector)
Con esta característica tengo facilidad para ubicar las rutinas de atención de todos las INT, modificando solo I.
Pero tiene la dificultad de que si el periférico no es de la familia no se pude utilizar este modo.

Vector:
8 bits Registro I 7 bits desde el 0
periférico

Es una forma similar al 8088.

INT
Periférico

DATOS Nº de Vector
7 bit
Z80 MEMORIA
Reg. I Dir de inicio DATO

DIR Dir. de vector DIR

MODO 2
Nota:
Cuando el micro toma una INT deshabilita automáticamente a esta entrada, es decir, la enmascara.

2.3.3. S EÑAL DE FIN DE ATENCIÓN :


El periférico sigue paso a paso la rutina de atención y cuando encuentra una instrucción RETI o RETN da por
finalizada su atención.
Cuando el micro toma una instrucción RETx, aparece en el bus de datos su código de operación (ED 4D)
durante dos ciclos consecutivos, junto con otras señales adicionales para no confundir el código con algún dato,
el periférico se da cuenta del fin y produce una señal interna que avisa a sí mismo del fin de la atención,
desencadenando esto en unas señales para trabajar como veremos con anidamiento de las interrupciones. (Esto
es debido a la estructura que utiliza para las prioridades).

2.3.4. L AS MASCARAS IFF1 Y IFF2


IFF1=0 la entrada INT esta inhibida
IFF2 es un espejo de IFF1. Si seteo una, automáticamente se setea la otra en el mismo valor.
Interrupciones 31

Cuando entra:

IFF1 IFF2

Reset 0 0

NMI 0 IFF1

RETN IFF2 •

INT 0 0

RETI • •

2.3.5. E RROR POR NO SALVAR LA CONDICIÓN DE LA BANDERA IFF EN UNA INT.


Vemos en esta tabla que al retornar de INT puede que no recupere el estado real de las mascaras antes de saltar.
Al regresar de RETI las INT pueden quedar deshabilitadas si no las modifico en la rutina. Esto hace que si
existe una instrucción de habilitación (EI) seguida de una instrucción HALT (el micro realiza NOP hasta la
llegada de una NMI o INT) y se produce una interrupción entre medio de ellas y vuelvo con las interrupciones
deshabilitadas, no salgo nunca del estado HALT.
Para solucionar esto se debe colocar una habilitación de las interrupciones antes de RETI en la rutina.

2.3.6. E STRUCTURA DE PRIORIDADES


Por las características de los periféricos de esta flia. no se necesita un PIC, ya que la prioridad queda definida
por su ubicación física, es decir se implementa por Hard.
Esta estructura se llama Daisy-Chain.
Los periféricos cuentan con una entrada de habilitación de interrupciones IEI y una salida para indicar que esta
siendo atendido IEO.

El funcionamiento es el siguiente:
El de mayor prioridad tiene su terminal IEI=+Vcc=1, o sea que esta siempre habilitado y el que le sigue está
gobernado por su pata IEO y así sucesivamente.
Cuando el periférico quiere solicitar una interrupción se activa en su interior una señal interna que llamamos
HELP=0, luego verifica el estado de su entrada IEI, y si está en uno, implica que el periférico está habilitado
para solicitar interrupción al Z80, entonces coloca su salida IEO=0. Esto hace que inhabilite al periférico que le
sigue en prioridad, colocándole su entrada IEI=0 y solicita una interrupción por la línea INT.
Si HELP=0, o sea que existe un pedido, pero IEI=0, el periférico espera que IEI=1.
Cuando el periférico solicita y recibe la confirmación que se aceptó el pedido debe colocar en el bus de datos la
parte baja del vector.
Cuando hay muchos periféricos tiene el problema de grandes tiempos de propagación.
Tiene tiempos calculados para máximo 4 periféricos y para agregar mas hay que colocar circuitos adicionales,
como uno que agregue mas tiempo a la lectura (ciclos TW), o circuitos de anticipación a la determinación de
prioridades.
32 Comparación de las Familias de Microprocesadores

El HELP interno luego de estar en cero y haber solicitado la interrupción se pone en uno cuando aparece la
instrucción RETI, (su código de operación hace que HELP=1).
Si se corta una interrupción por otra, el RETI hace cambiar al HELP solamente del periférico que se está
atendiendo.

Para realizar el anidamiento de interrupciones existen dos formas:

• Si una vez que entra una interrupción INT en la rutina de atención habilito las interrupciones implica que
una interrupción de mayor prioridad según Daisy-Chain puede entrar.
• Si no habilito al entrar en la rutina; la estructura solo decide quien entra ante una solicitud múltiple, pero
luego no corta la atención de quien entró.
Nota: La mejora en la atención rápida de la interrupción se ve afectada por los tiempos que nos toman los
pasajes de los registros a los auxiliares, y también su recuperación en la rutina.
También se los puede pasar a la pila.
Señales de Reconocimiento de Interrupciones 33

Capítulo 6: SEÑALES DE RECONOCIMIENTO DE


INTERRUPCIONES, CARGA DE VECTORES, ETC.

1. EL 6809
Recibe la señal de solicitud de interrupción y cuando la atiende realiza lo siguiente:
. Termina de ejecutar la instrucción en curso
. Coloca el SP en el bus de direcciones y la línea R/W en cero para indicar escritura, en este momento
comienza a guardar los registro en la pila.
. Luego de guardar los registros se levanta la línea R/W y el micro carga automáticamente en el PC el
contenido del vector de interrupción correspondiente.
. El PC indica la nueva dirección de ejecución donde está el comienzo de la rutina de atención.

Durante el momento en el que el micro lee el vector de interrupción (dos ciclos de bus), se colocan las
salidas BA=0 y BS=1 indicando el reconocimiento de interrupción.
34 Comparación de las Familias de Microprocesadores

2. EN EL 8088
Para indicar reconocimiento de interrupción existe la línea INTA, que actúa de la siguiente manera:
Luego de que el micro acepta la solicitud de interrupción INTR, después de haber finalizado la instrucción en
curso, comienza un nuevo ciclo en donde RD y WR permanecen inactivas, la señal ALE aparece como siempre
pero no me interesa.
Lo importante es que la señal INTA se activa entre T2 y T4 del primer ciclo de canal, indicando al dispositivo
solicitante la aceptación de la INTR y diciéndole que en el próximo ciclo de canal deberá colocar el número de
vector a donde buscar la dirección de comienzo de la rutina de atención.
En el segundo ciclo de canal durante el reconocimiento vuelve a aparecer INTA, pero esta vez será utilizada
como línea para habilitar la lectura, con el flanco positivo de INTA el micro guarda el número de vector
colocado por el periférico que solicitó la interrupción.

La señal LOCK es interna del micro y le indica que no tome pedido de HOLD durante su activación, que es
exactamente hasta que el micro pueda leer el periférico.

NMI (va al vector tipo 2). No hay ciclo INTA, hay un ciclo de lectura a la posición 2x4=8 de memoria.
Dura menos que el ciclo INTR.

2.1. SECUENCIA DE ATENCIÓN DE INTERRUPCIONES:


Durante la trasferencia del control, del PC viejo al nuevo, luego de los dos ciclos de INTA el micro guarda en la
pila la FLAG, el CS y el IP.
La actividad del bus durante este tiempo depende del tipo de interrupción.
Una INTR se compone de:
Dos ciclos de reconocimiento
Lectura del nuevo IP
Lectura del nuevo CS desde la tabla de vectores
Guarda la FLAG y el CS en la pila
Carga el código de operación de la primera instrucción de la rutina
Guarda el viejo IP.

Después de salvar el viejo IP, la BIU (Bus Int. Unit) retoma la operación normal de cargar las instrucciones
siguientes.
El número de ciclos de CLOCK desde la última instrucción antes de aceptar la interrupción hasta que se
comienza la rutina de atención son 61 ciclos de CLOCK. (12,2 uSeg con un reloj de 5 MHz)
Para las interrupciones por software, el ciclo es el mismo salvo que no se realiza el reconocimiento. Tenemos 51
ciclos para INTxx, 52 ciclos para INT3 y 53 para INT0.

3. EN EL Z80
Existe una forma para reconocer el pedido de interrupción para la línea NMI y otro para la línea INT ya que
ambos tienen ciclos de bus distintos.

Ciclo de reconocimiento de INT:


Luego de que el micro acepta el pedido de interrupción, comienza el ciclo de
reconocimiento donde se trabaja con la señal M1 (que indica ciclos de búsqueda) y junto con ésta aparece la
Señales de Reconocimiento de Interrupciones 35

señal IORQ. De esta manera cuando M1 y IORQ aparecen juntas indican reconocimiento de interrupción. Esto
indica al periférico que solicitó interrupción que debe colocar la instrucción o la parte baja de la dirección del
vector, según el modo de trabajo.
Este ciclo ya tiene automáticamente dos ciclos de espera para dar tiempo a la
conexión Daisy-Chain que verifique la estructura de prioridades (está pensado para 4 dispositivos). También se
pueden agregar tiempos adicionales de espera Tw.
En este ciclo de reconocimiento también se hace refresco.

Ciclo de reconocimiento de NMI:


Se samplea igual que la INT pero tiene más prioridad. La respuesta del Z80 es similar a un ciclo de lectura a
memoria normal con la única diferencia de que el contenido del bus de dato se ignora mientras el Z80 guarda
automáticamente el PC en la pila y salta a la dirección 0066 donde debe estar ubicado el comienzo de la rutina
de atención.
36 Comparación de las Familias de Microprocesadores

Nota:
• Notar que en el 6809 para reconocer quien pidió interrupción podemos decodificar las líneas del bus de
direcciones en el momento en que BA=0 y BS=1 (están presentes las líneas de los vectores). Si vemos A4
A3 A2 A1 podemos conocer quien solicitó el pedido. En los otros microprocesadores es más fácil porque
cada periférico coloca un vector de identificación distinto.
• El tiempo que tarda el Z80 en el modo 2 en entrar en la rutina de atención es 19 ciclos de reloj aprox. 4,75
uSeg.
Manejo externo de Prioridades en las Interrupciones 37

Capítulo 7: MANEJO EXTERNO DE PRIORIDADES EN LAS


INTERRUPCIONES

1. EL PIC DE MOTOROLA (6828)


Se intercala en el bus de direcciones para cambiarla cuando el microprocesador recibe una IRQ y va a buscar su
vector.
El PIC está diseñado para su uso con el microprocesador 6800, por lo tanto para usarlo con el 6809 hay que
hacer algunas modificaciones en el circuito exterior.
Las características importantes de este PIC son:
.Tiene ocho entradas de solicitud de interrupción y una salida
de solicitud hacia el microprocesador. Si se necesitan más de ocho entradas de interrupción se pueden conectar
más PICs en cascada.
.Tiene un registro de máscara en el cual se carga un número
entre 0 y 7. De esta manera todas las entradas de número menor que éste quedarán inhabilitadas. Cuando entra
una solicitud de interrupción se chequea este registro, y teniendo en cuenta que interrupción está siendo
atendida, se atiende o no el pedido.
Es importante notar que este PIC produce un retardo al cambiar la dirección, y si se está trabajando con
memorias lentas, necesitamos alargar el tiempo de lectura. Para esto se utiliza la señal STRECH, que sale del
PIC y se conecta al microprocesador en MRDY.(al 6809 hay que hacerle una adaptación también en esta línea).

Debe tenerse en cuenta a la hora de realizar las señales de selección de chip, que sólo se debe acceder a él
cuando las direcciones coinciden con el vector de IRQ (FFF8 y FFF9), de tal forma que el PIC la cambie y
coloque en lugar de ellas una de las ocho que tiene según la entrada que pidió interrupción.
El PIC solo maneja cuatro bits de las direcciones A4A3A2A1, ya que A0 cambia y esto se necesita para acceder a
los dos bytes del vector.
Como está pensado para el 6800, las nuevas direcciones se solapan con las del 6809 y hay que hacer algunas
modificaciones en el circuito.
38 Comparación de las Familias de Microprocesadores

Comparándolo con los de las otras familias no es un PIC muy versátil en el manejo de prioridades.

2. EN EL 8088 DE INTEL
Debido a su consulta al exterior por un número de vector cuando ha entrado una interrupción, hace que el
sistema sea menos rígido a las interrupciones.

En esta familia también existe un controlador de interrupciones (PIC 8259) que tiene las siguientes
características generales:
.Agrega ocho interrupciones con vectores y prioridades codificadas.
Manejo externo de Prioridades en las Interrupciones 39

.Permite, mediante el funcionamiento en cascada, el agregado de hasta 64


interrupciones.
.Es totalmente programable por software, lo que permite una gran versatilidad y una
estructura de prioridades variable.
Este periférico envía la señal INTR al microprocesador y recibe la señal INTA en sus dos pulsos. El primer
pulso se usa para saber que la interrupción que solicitó ha sido atendida, y el segundo pulso provoca que el PIC
coloque el tipo de vector en el bus de datos y el microprocesador busque en dicho vector la dirección de inicio
de la rutina de atención correspondiente.

El diagrama en bloques lo podemos separar en dos partes.


La parte que maneja la entrada de interrupciones, que está formada por los siguientes registros:

• IRR (registro de solicitud de interrupción): almacena las solicitudes.


• ISR (registro de interrupción en servicio): almacena que interrupción está siendo atendida.
• IMR (registro de máscaras): contiene las máscaras
• PR (resolvedor de prioridades): resuelve, según los datos de los registros anteriores, las prioridades.

La secuencia es:
Entra INTRx
IRR activa su bit
PR resuelve en función de la interrupción en curso y prioridades, y si es prioritaria se pide
interrupción al microprocesador.
Junto con INTA se entrega el número de vector.
ISR coloca el bit correspondiente en 1 y se borra el bit del IRR.
Cuando llega EOI se borra el bit del ISR.

La parte de control que está formada por los siguientes bloques:


.R/W: controla la programación del PIC y la lectura de su estado desde el microprocesador.
.Cascade Buffer Comparator: controla la operación en cascada del PIC.
.Bloque de control de las interrupciones, que recibe información de la parte de manejo de
interrupciones.

El PIC tiene además varias entradas de control para realizar las operaciones con sus registros internos. Éstas
son: CS, RD, WR y A0.
40 Comparación de las Familias de Microprocesadores

2.1. VECTORES DE INTERRUPCIÓN


Cada entrada IR tiene asociado un vector de interrupción individual.
Para poner el byte del vector de interrupción en el bus de datos se usa el segundo pulso de INTA.
La programación del vector para cada IR se hace en la inicialización del PIC.
Solo los 5 bits más significativos del vector son definidos por el usuario (son los mismos para todas las IR), los
3 bits restantes ya están asignados y corresponden al número de IR. Por lo tanto los vectores quedan en forma
consecutiva.

2.2. END OF INTERRUPT (EOI)


Una vez que se completó la rutina de atención, el PIC necesita ser notificado para poder actualizar su IRS.
Existen 3 formas de EOI:
Ø Non-Specific EOI command
Ø Specific EOI command
Ø Automatic EOI Mode

2.2.1. N ON -S PECIFIC EOI C OMMAND


Un non-specific EOI command enviado desde el 8088 le hace saber al PIC que la rutina de atención terminó sin
especificar cuál es el nivel de interrupción. El PIC determina automáticamente el nivel y resetea el bit
correspondiente del ISR.
Para tomar ventaja de este modo, se debe usar cuando el PIC está en un modo en que las prioridades están
determinadas y la que está siendo atendida es siempre la de mayor prioridad. No se debe usar non-specific EOI
command cuando la rutina de atención cambia las prioridades ni tampoco con el special mask mode.

2.2.2. S PECIFIC EOI C OMMAND


Un specific EOI command enviado desde el 8088 le hace saber al PIC que la rutina de atención terminó y
además de cuál interrupción se trata, especificando exactamente el bit del ISR que tiene que ser reseteado. Esto
se hace especificando uno de los niveles de IR del PIC.
Es necesario en el caso de que las prioridades fueran cambiadas durante una rutina de atención.

2.2.3. A UTOMATIC EOI M O D E


Cuando el PIC está en automatic EOI mode, el 8088 no necesita notificar al PIC que se completó la rutina de
atención.
En este modo el PIC resetea el bit correspondiente del ISR en el flanco positivo del segundo pulso de INTA, y
por lo tanto el ISR no está indicando cuál es la rutina en servicio.
Hay que tener cuidado si estamos en el Fully Nested Mode, ya que puede entrar una interrupción sin tener en
cuenta su nivel.
También puede suceder un “Over Nesting” que es cuando una interrupción interrumpe su propia rutina de
atención. Esto se podría solucionar deshabilitando las interrupciones del 8088 durante la rutina de atención.

2.3. MANEJO DE PRIORIDADES


Hay varios tipos que son programables por el usuario.
Ø Fully nested mode
Ø Automatic rotation-equal priority
Ø Specific rotation-specific priority
Ø Special mask mode
Manejo externo de Prioridades en las Interrupciones 41

2.3.1. F ULLY N E S T E D M ODE


Soporta estructura de interrupciones multinivel, en la cual el orden de prioridad de las entradas IR se hace de
alto a bajo.
Es el modo por defecto, y después de la inicialización queda la IR0 con mayor prioridad y la IR7 con la menor.
Estos niveles de prioridad pueden ser cambiados por el usuario.
Cuando una interrupción se reconoce, el pedido de mayor prioridad se determina por el Interrupt Request
Register (IRR). El vector de interrupción correspondiente se pone en el bus de datos. Además, se setea el bit
correspondiente en el In-Service Register (ISR) para indicar que la interrupción está siendo atendida. Este bit
permanece seteado hasta que aparece un comando EOI en la rutina de atención.
Mientras un bit del ISR está seteado, todo pedido futuro de la misma o menor prioridad son inhibidos y no
generan interrupción al 8088. En cambio un pedido con mayor prioridad sí puede generarle una interrupción al
micro.
Para que el 8088 la atienda, cuando se entró en la rutina de atención de la que tenía menos prioridad tendríamos
que haber borrado la bandera de inhibición. La segunda interrupción no será reconocida por el 8088 hasta que se
habiliten las interrupciones y el pedido en la IR de la segunda debe permanecer en alto hasta que sea reconocida.

2.3.2. A UTOMATIC R OTATION – E QUAL P RIORITY


Se utiliza cuando los dispositivos que interrumpen son de igual prioridad.
Una vez que se atiende un periférico, todos los otros periféricos que tienen la misma prioridad deben tener la
chance de ser atendidos antes de que el primer periférico sea atendido nuevamente. Esto se hace asignándole la
menor prioridad al periférico después de ser atendido.
Hay dos métodos:
Ø Rotate on non-specific EOI command
Ø Rotate in automatic EOI mode

2.3.2.1. Rotate on non-specific EOI command


En este caso, cuando el 8088 envía un non-specific EOI command, se resetea el bit que tiene la mayor prioridad
en el ISR como se hace normalmente en el non-specific EOI command. Esto sería al final de la rutina de
atención. Después se le asigna la menor prioridad al correspondiente nivel de IR. Las prioridades de las otras IR
rotan para formar el fully nested mode basado en la nueva asignación de prioridades.

2.3.2.2. Rotate in automatic EOI mode


La diferencia con el anterior es que la rotación se hace después del segundo pulso de INTA.
Esto sería al principio de la rutina de atención.

2.3.3. S PECIFIC R O T A T I O N -S PECIFIC P RIORITY


Se usa cuando la prioridad de interrupción de un periférico específico debe ser alterada.
La diferencia con la rotación automática es que en Specific Rotation el usuario selecciona cuales dispositivos
tendrán mayor o menor prioridad. Esto se puede hacer en la rutina de atención.
Hay dos comandos de specific rotation:
Ø Set priority command
Ø Rotate on specific EOI command

2.3.3.1. Set Priority Command


Permite asignar a una IR la menor prioridad, el resto de las prioridades se conformará según el fully nested
mode basado en ella. Las prioridades son resueltas después de un pedido de interrupción o de un reconocimiento
de interrupción.
42 Comparación de las Familias de Microprocesadores

2.3.3.2. Rotate on Specific EOI Command


Es una combinación de set priority command y specific EOI command.
Como con el set priority command, se le asigna la menor prioridad a una IR específica, y como con specific EOI
command, se reseteará un bit específico del ISR; haciendo ambas tareas en un solo comando.

2.4. INTERRUPT MASKING


El IMR (Interrupt Mask Register) es un registro de 8-bits que permite enmascarar cada IR individualmente, los
bits 0-7 corresponden directamente a IR0-IR7. Cada IR puede habilitarse borrando su correspondiente bit en el
IMR.
Mientras una interrupción está enmascarada (bit del IMR seteado), un pedido de interrupción en alguna entrada
IR sigue guardándose en el IRR (Interrupt Request Register), ya que el IMR actúa sobre la salida del IRR. Por lo
tanto si sacamos la mascara y el bit del IRR todavía está seteado se generará la interrupción. No afecta a las
prioridades del fully nested.

2.4.1. S PECIAL M A S K M O D E
Habilita todas las interrupciones excepto la que está en servicio. Si hay más de una en servicio, se habilitan sólo
las que no están en servicio. Una vez que se setea, se mantiene su efecto hasta que se lo resetea. Rompe la
estructura de prioridades del fully nested.
No se puede utilizar el non-specific EOI command, ya que un non-specific EOI command no puede borrar el bit
del ISR de una interrupción enmascarada. Se puede usar un non-specific EOI command si se apaga el special
mask mode antes.

2.5. MODOS DE ACTIVACIÓN:


Dentro de la programación del PIC encontramos que es posible setear las entradas de solicitud de interrupción
de forma que sean activas por flanco, de esta manera no sería necesario desactivar la línea que solicitó
interrupción. También pueden setearse de forma que sean activas por nivel, pero en este caso habría que
desactivar la solicitud en la rutina de atención, para que ésta no siga interrumpiendo.

2.6. ESTADO DE LAS INTERRUPCIONES:


Colocando las líneas de control específicas, se pueden leer los registros IRR, ISR e IMR del PIC. Esto nos
serviría para llevar a cabo un control dentro de la rutina de atención o si estamos en el modo de trabajo
”Polling” para saber el estado de las interrupciones.
Modo “Polling”: Es un modo que agrega el PIC y se utiliza cuando el microprocesador reconoce quien pidió
interrupción por medio de una encuesta. En este modo, el microprocesador lee el PIC y éste automáticamente se
da cuenta del reconocimiento de la interrupción.
Este modo se suele utilizar cuando tenemos más de 64 interrupciones.

2.7. CONEXIÓN EN CASCADA:


Es posible conectar a un PIC denominado “maestro” y ocho PICs llamados “esclavos”. Al inicializar cada PIC
se le debe informar si está trabajando como maestro o como esclavo.
Cuando se produce el reconocimiento, en el primer pulso de INTA el maestro pide el número de vector al
esclavo, en el segundo pulso el esclavo pone su número de vector. Todo esto a través de las líneas del bloque de
control de cascada.
Manejo externo de Prioridades en las Interrupciones 43

En el maestro se programan las prioridades de cada esclavo.


También es posible utilizar una estructura mixta.

2.7.1. S PECIAL F ULLY N E S T E D M O D E


En el caso de que se esté atendiendo una interrupción de un esclavo y llegue un pedido de interrupción de mayor
prioridad, pero al mismo esclavo, ésta no podría ser atendida porque el bit del ISR del master está seteado.
Para solucionar esto se usa el Special Fully Nested Mode, el cual se programa solamente en el master durante la
inicialización.
En este modo el master ignorará solo los pedidos de interrupción de menor prioridad que el bit seteado del ISR y
responderá a todos los pedidos de igual o mayor prioridad. Y de esta forma si el esclavo recibe un pedido de
mayor prioridad que uno en servicio, será reconocido.
El software debe determinar si hay alguna otra interrupción de este esclavo en servicio antes de poner un EOI
para el master. Esto se hace reseteando el bit apropiado del ISR del esclavo con un EOI y luego leer su ISR. Si
el ISR contiene todos ceros, no hay ninguna interrupción de otro esclavo en servicio y se puede enviar un EOI al
master.

2.8. LA PROGRAMACIÓN:
El PIC consta de dos partes de programación, la inicialización y las variantes durante el programa. Para esto
cuenta con 4 comandos de inicialización y 3 de operación.
Durante la inicialización debemos informarle:
+ Si está en cascada o no
+ Cómo detectará los pedidos de interrupción
+ Cuáles son los números de tipos de vector
+ Si es maestro en qué entrada tiene un esclavo, y si es esclavo el número de esclavo
+ Con qué microprocesador trabajará
+ Si el nivel de prioridades será automático o no
+ Si trabajará con buffer o sea que hay que controlar los registros de buffer (para esto hay una salida
SP/EN que cumple varias funciones)
+ Setear los niveles de prioridades

Si es esclavo o maestro se comunica por la pata SP/EN


En las palabras de operación que pueden llegar en cualquier momento del programa podemos:
+ Enmascarar o no las interrupciones
+ Si no está en modo automático, se le informará el orden de prioridades con que trabajará
+ Trabajar en el modo Polling
+ Setear el special mask mode

Importante:
Cuando el microprocesador toma una interrupción enmascara el bit IF, implica que no aceptará otro pedido.
Cuando trabajamos con el PIC debemos habilitar las interrupciones cuando entramos en la rutina de atención
para que las prioridades del PIC sean efectivas.

Nota 1: Luego de haber visto este modo de manejo de interrupciones, que son seteables por software, estamos
en condiciones de decir que esto es lo que hace que este PIC sea muy versátil y potente en el manejo de
prioridades, sobre todo porque no permanecen fijas sino que es posible variar el orden de prioridades durante la
rutina de atención.

Nota 2: En el Z80 no tenemos PIC ya que como se vio existe la estructura Daisy-Chain.
44 Comparación de las Familias de Microprocesadores
Instrucciones y Pin-Outs Especiales 45

Capítulo 8: INSTRUCCIONES Y PIN-OUTS ESPECIALES

1. EN EL 6809
Nos encontramos con dos instrucciones especiales, aparte de los SWI de interrupción, que son las instrucciones
CWAI y SYNC.
CWAI es una instrucción que prepara al microprocesador para recibir una interrupción. Esta instrucción guarda
el estado completo de la máquina y espera a que ingrese una interrupción, también coloca el bit E del CC en 1.
Esto hace ganar tiempo ante una solicitud de interrupción ya que al entrar solo carga el PC con el contenido del
vector.
La instrucción CWAI va acompañada de un argumento CWAI #$ XX que hace una operación AND entre el
CC y XX, de esta forma podemos habilitar o deshabilitar las interrupciones deseadas.

2. EN EL 8088
Nos encontramos con una instrucción HLT (HALT) que coloca al microprocesador en estado de espera de una
interrupción o un Reset. Cuando el microprocesador entra en estado de HALT envía la señal ALE pero retrasada
un ciclo, de tal forma que los registros puedan latchear el estado de HALT para mostrarlo al exterior.
El estado de HALT se muestra con IO/M=DT/R=SSO=1

IO/M
DT/R
8088

SSO

3. EN EL Z80
Existe una instrucción HALT que, cuando llega, el microprocesador comienza a ejecutar NOP’s hasta que entre
una interrupción NMI o INT.
Las interrupciones son sampleadas en el flanco positivo de T4 y se atiende la interrupción en el próximo flanco
positivo de CLOCK, donde comienza el ciclo de reconocimiento de la interrupción. Para indicar este estado el
microprocesador cuenta con una salida HALT.
El propósito de ejecutar instrucciones NOP’s durante el estado de HALT es seguir refrescando la memoria.

HALT

Z80
46 Comparación de las Familias de Microprocesadores

4. VOLVIENDO AL 6809
Este también cuenta con una instrucción SYNC que sirve para sincronizar al microprocesador con eventos del
exterior. Cuando se ejecuta, el microprocesador pasa a estado de SYNC colocando los buses de datos,
direcciones y control en Hi-Z, esperando que entre una solicitud de interrupción (NMI, FIRQ o IRQ).
Cuando esto se produce, el microprocesador abandona el estado de SYNC y pasa a atender a la interrupción si
es que estaba habilitada o sigue con la ejecución del programa si estaba deshabilitada.

5. EN EL 8088
También hay una instrucción similar a la anterior que es WAIT. Trabaja junto con la entrada TEST de la
siguiente forma:
. Cuando TEST está en cero, o sea activa, y se decodifica una instrucción WAIT, no se hace
nada y pasa a la siguiente instrucción.
. Si TEST es uno y se decodifica WAIT, el microprocesador no hace nada hasta que TEST baje.
Es una forma de sincronizar las señales externas con el microprocesador.
Si mientras el microprocesador está en estado WAIT entra un HOLD, los buses pasan a Hi-Z. Si entra una
interrupción se la atiende y luego vuelve a WAIT.
Interfaces de Comunicación Paralelo 47

Capítulo 9: INTERFACES DE COMUNICACIÓN PARALELO

1. INTRODUCCIÓN:
Son dispositivos que se utilizan para realizar la comunicación entre el micro y los periféricos, reconociendo las
señales de uno y otro lado, estableciendo una relación entre ambos, es decir operando de interprete.
Sus registros internos se asocian al mapa de memoria ya sea de I/O para el 8088 y el Z80 y al mapa de memoria
para el 6809.
Sirven para adaptar dispositivos de distintas velocidades de trabajo.
Además se adapta al sistema cuando la comunicación no es permanente.
Poseen buses: de alta velocidad que son para la comunicación con el micro y de baja velocidad (velocidad
adaptable) para comunicarse con los periféricos.
Interfaces paralelo: son aquellas que entregan y reciben datos en grupos de bits (bytes) o en grupos de bytes.
En general se componen de dos lados, el lado del micro que cuenta con un bus bidireccional de datos, líneas de
selección, líneas de control, líneas de pedido de interrupción, y el lado del periférico con líneas de control de
comunicación y los respectivos puertos de entrada salida de datos.

2. MODOS DE COMUNICACIÓN INTERFACE-PERIFÉRICO:

2.1. MODO PULSADO:

2.1.1. L A INTERFACE CONTROLA :


El periférico envía datos y espera hasta que la interface informe al micro. El micro lee el dato y la interface
manda una señal de aceptación al periférico.
Si el micro envía datos a la interface, también manda una señal de validación al periférico para que reconozcan
el dato.
Se usa cuando el periférico es “rápido” (la interface tiene el control porque es la que tarda en resolver la
transferencia).

Datos
Interface Periférico
Control

2.1.2. E L PERIFÉRICO CONTROLA :


El periférico envía datos y las señales de validación de los datos. Cuando el periférico lee el dato, envía una
señal de aceptación a la interface.
Se emplea en casos de periféricos “lentos”.

Datos
Interface Periférico
Control
48 Comparación de las Familias de Microprocesadores

2.2. MODO HAND-SHAKE


Se emplean dos líneas de control para el dialogo.
Una se utiliza para indicar que el dato es válido y la otra para indicar que el dato fue aceptado.

Control 1

Interface Datos Periférico

Control 2

3. CARACTERÍSTICAS GENERALES:
Estudiaremos las principales características de estas interfaces en las tres familias, la PIA ( Peripheral Interface
Adapter) 6821 de Motorola, el PPI (Programable Peripheral Interface) 8255 de Intel y el PIO (Paralel I/O) de
Zilog.
Internamente podemos pensarlos compuestos por un grupo de registros de control y datos para el micro, un
grupo de registros de control y datos internos, y un grupo de comunicación con el periférico.

• El funcionamiento básico de estas interfaces es similar en todos, y comúnmente cuentan con dos puertos, los
cuales son seteados de distintas formas según sean cargados unos registros internos de control, que
podríamos llamar registros de control de transferencia.
De acuerdo a como sean seteados los puertos de salida quedarán seteadas las líneas de control entre el periférico
y la interface.
• Existen distintos modos de seteo que hacen trabajar a los puertos como entrada, salida, con comunicación
simple con el periférico, con comunicación Hand-Shake, como puerto bidireccional y otros.
Estos registros que controlan la transferencia de datos son seteados por soft.
• Existe también un control sobre los pedidos de interrupciones, registros de control que contiene máscaras.
• Suelen tener la característica de que un puerto puede manejar corrientes suficientes como para excitar las
bases de transistores Darlington.
• Tienen, para control desde el micro, las líneas chip select, escritura, lectura y de direcciones, para
seleccionar al mismo e indicarle la operación a realizar y el registro con el cual trabajaremos.
Interfaces de Comunicación Paralelo 49

4. COMPARACIÓN:

4.1. LA PIA 6821

Esta interface tiene dos puertos, A y B.


Por sus características eléctricas, el puerto A esta pensado como entrada y el puerto B como salida, aunque no
hay restricción a otro tipo de uso salvo los manejos de corrientes y el error que puede aparecer cuando el puerto
A esta seteado como salida y se lo lee desde el micro; como se lee directamente sobre los terminales de salida, si
están muy cargados puede que el micro lea mal.
Según se seteen por medio de los registros de dirección de datos (DDR A ó B) cada pin de cada puerto podrá ser
entrada o salida, siendo esta una característica especial de la PIA, que es tener la posibilidad de setear el sentido
de transferencia directamente sobre cada pin.
Para setear el modo de funcionamiento cuenta con el registro de control (CRA y CRB), en el cual manejaremos
las líneas de control/comunicación con el periférico, y según sea la función de éstas será el modo de
comunicación.
También en este registro de control es posible habilitar las solicitudes de interrupción al micro.
Las líneas de control/comunicación con el periférico son CA1, CA2 en el puerto A y CB1, CB2 en el puerto B.
Las líneas CA1 y CB1 son siempre entradas que solicitan interrupción al micro, siempre que estén habilitados
sus bits de habilitación en el registro de control.
Las líneas CA2 y CB2 pueden setearse para trabajar en distintos modos, uno de entrada común (igual que CA1 y
CB1, y en donde solicita interrupción) y cuatro modos de salida.
Existen dos modos en donde el nivel de la salida es fijo en cero o en uno y es manejado directamente por un bit
del registro de control.
También hay un MODO PULSADO que varía en cada puerto:
En el puerto A el modo es pulsado con restauración de lectura por parte del micro, y se utiliza cuando el micro
lee y el periférico es rápido. Esta línea informa al periférico que el micro ya leyó el dato que había en el puerto.
50 Comparación de las Familias de Microprocesadores

En el puerto B el modo pulsado es para indicar al periférico que el micro ya colocó un dato para que lo lea.

El último modo es el H A N D -S HAKE , donde el periférico activa la línea CA1 para indicar que tiene un dato
para mandar y esto hace pedir una interrupción, causa que CA2 suba indicando al periférico que envíe el dato.
Luego el micro lee el dato en el registro de datos y la línea CA2 vuelve a bajo indicando que puede mandar otro
dato.
Interfaces de Comunicación Paralelo 51

En el puerto B la indicación de CB2 en el modo Hand- Shake es otra, aquí el periférico solicita datos por la línea
CB1 y el micro envía datos, o sea que la línea CB2 indica al periférico que ya tiene datos en la PIA para leer.
52 Comparación de las Familias de Microprocesadores

4.2. EL PPI DE INTEL:

Posee tres puertos A, B y C, que según sea el modo de trabajo tendrán distintas funciones.

4.2.1. T IENE TRES MODOS DE TRABAJO , 0, 1 Y 2.


En el modo 0 cada uno de los puertos puede ser programado como entrada o como salida. Tenemos dos puertos
de 8 bits A y B, como C esta partido tenemos dos puertos de 4bits, siendo posible setearlos según cualquiera de
las 16 combinaciones.
En este modo no hay señales de control/comunicación con el periférico.
Para setear el funcionamiento del PPI existen dos comandos de control, donde seleccionamos con uno el modo
de trabajo y con el otro se trabajará sobre el puerto C que variará según el modo.

En el modo 1 los puertos A y B usan las líneas del puerto C como líneas de control/comunicación con el
periférico.
Interfaces de Comunicación Paralelo 53

Los puertos pueden ser utilizados como entrada o salida.


Cuando son utilizados como entrada cuentan con las señales STB e IBF para realizar la comunicación Hand-
Shake (estas líneas son del puerto C).
Cuando STB (Strobe Input) baja, se cargan datos desde el periférico, y si esta habilitado el pedido de
interrupción el PPI la pide al 8088 por una línea para tal fin que se encuentra en el puerto C y que se conecta a la
línea INT del micro. Hay una para cada canal. La habilitación se realiza por medio del bit INTE A ó B, que es
un bit del puerto C seteado por soft y que trabaja como bit de habilitación (aunque se encuentre en el puerto C).
La línea IBF(Input Buffer Full F/F) se pone en alto para indicar que en el dato se latcheó y pasa a cero cuando el
micro lo leyó, también es un pin del puerto C.

En los puertos como salida, las líneas de control/comunicación con el periférico son OBF y ACK.
La línea OBF(Output Buffer Full F/F) indica que el micro escribió un dato. Cuando el periférico recibe esta
señal informa con la línea ACK (Acknowledge Input) que leyó los datos. Luego de ésto la línea OBF se
desactiva y se vuelve a activar el pedido de interrupción INTR, según estén habilitadas o no los bits para tal fin
del puerto C.

El modo 2 de trabajo, es solo para el puerto A y este pasa a ser un puerto Bidireccional, con un grupo de señales
de control/comunicación con el periférico que son utilizadas algunas para salida y otras para entrada.
OBF: es una salida que indica que el micro escribió un dato.
54 Comparación de las Familias de Microprocesadores

ACK: el periférico leyó el dato.


STB: el periférico tiene un dato para mandar.
IBF: el dato fue latcheado en el PPI.
Cuenta también con dos bit del puerto C para habilitar o no el pedido de interrupción en cada caso.
El puerto A se coloca en alta impedancia mientras no hay datos para leer o escribir.

Nota: En los modos 1 y 2 puede leerse el puerto C para verificar el estado de la comunicación.
Los puertos B y C entregan corrientes capaces de menejar la base de transistores Darlington.

4.3. EL PIO DE ZILOG


Interfaces de Comunicación Paralelo 55

Tiene dos puertos programables y cuatro modos de funcionamiento, tres de ellos son los vistos hasta ahora y el
cuarto es uno nuevo que trabaja individualmente por cada bit.
En el esquema general aparece un bloque (Internal Control Logic) que es el encargado de controlar el bus
interno, ya que este trabaja con una sincronización interna que necesita una señal de reloj externa.
Hay un bloque de control de interrupciones con las correspondientes líneas para la conexión daisy-chain.
Cada puerto consta de seis registros: un registro de entrada, un registro de salida, dos registros de control (uno
que selecciona el modo de trabajo y uno de control de mascara de interrupciones que se utiliza en el modo 3
junto con una mascara), I/O select register (que se utiliza solo en el modo 3) y un registro de control para
control/comunicación con el periférico.

4.3.1. M ODOS DE F UNCIONAMIENTO

Modo 0: El Z80 puede escribir un dato en el registro de salida del PIO en cualquier momento. Este dato es
puesto en el bus del puerto correspondiente. El Z80 también puede leer el contenido del registro de salida.
Cuando el Z80 escribe un dato causa que la línea ready (A RDY o B RDY) de Hand-Shake se ponga en alto
notificando al periférico que el dato está disponible y permanece en alto hasta recibir un pulso del periférico en
la línea de Strobe (patas A STB o B STB). El flanco positivo del pulso genera una interrupción y causa que la
línea Ready vuelva a 0 (inactiva).
Un ciclo de salida siempre empieza con una instrucción de salida del Z80.
El PIO genera una señal WR*, donde WR*=RD . CE . C/D . IORQ, que se usa para latchear el dato en el
registro de salida del puerto direccionado.
El flanco positivo de WR* causa que en el siguiente flanco negativo de clock suba la señal de Ready (activa)
indicando al periférico que el dato está disponible.

La señal de Ready vuelve a su estado inactivo (0) cuando se recibe un flanco positivo de la señal de Strobe
indicando que el periférico ya tomó el dato.
56 Comparación de las Familias de Microprocesadores

El flanco positivo de Strobe genera automáticamente un pedido de interrupción si está habilitado el flip-flop y el
dispositivo es el de “mayor prioridad”.

Modo 1: Selecciona al puerto como entrada. Para empezar una operación hand-shake el Z80 debe leer el puerto.
Esto activa la línea Ready para indicarle al periférico que el registro de entrada está vacío. El periférico pone el
dato en el registro de entrada del PIO usando un pulso en la línea de Strobe. Nuevamente, el flanco positivo de
este pulso causa un pedido de interrupción y desactiva la señal de Ready.
El periférico inicia este ciclo usando la línea de Strobe, donde un nivel bajo de la misma carga el dato en el
registro de entrada del puerto y su flanco positivo produce un pedido de interrupción.
El próximo flanco negativo de clock pondrá en 0 la línea Ready (inactivo) indicando que el registro de entrada
está lleno.
El Z80 lee el registro y con el flanco positivo de RD hace que la línea Ready se ponga en 1 en el próximo flanco
negativo del clock, indicando que un nuevo dato puede ser escrito.

Modo 2: es el modo bidireccional, el cual usa las cuatro líneas de handshake (todas). Solamente el puerto A
puede ser usado en este modo. El modo 2 usa las dos líneas de handshake del puerto A para control de salida y
las dos del puerto B para control de entrada. La única diferencia entre el modo 0 y la parte de salida del modo 2
es que en el modo 2 los datos que están en el registro de salida del puerto A no se colocan en el bus de datos del
puerto A hasta que se active A STB (0).
Es similar a los modos anteriores con puerto A como salida y puerto B como entrada. La diferencia es que el
dato de salida se pone en el bus sólo cuando la señal de strobe de A está en bajo. Para evitar un conflicto de bus
se usa la señal B STB para que el periférico ponga el dato en el bus del puerto.

Modo 3: En este modo el PIO controla sus líneas de entrada para ver si se produce un conjunto de bits
especificado. Si se produce, entonces el PIO genera automáticamente un pedido de interrupción al Z80. La
especificación del conjunto de bits se realiza mediante el Registro de Máscara y el Registro de Control de
Máscara. El Registro de Máscara especifica cual es el subconjunto de pines de entrada que deben ser
Interfaces de Comunicación Paralelo 57

monitoreados y cuales ignorados. El Registro de Control de Máscara especifica el estado activo del pin y si se
usa la función AND u OR. El I/O select register programa cuales son salidas y cuales entradas. Durante este
modo las señales de handshake no se usan. Cuando el Z80 lee el puerto, el PIO le da un dato mezclado entre el
Registro de Salida y el de Entrada, según esté configurado el pin.
Cuando se lee el PIO, el dato que llega al Z80 está compuesto por datos del registro de salida de la líneas
programadas como salida y de datos del registro de entrada de las líneas programadas como entradas.
La información que lee el micro del contenido del registro de entrada es la que hay inmediatamente antes del
flanco negativo de RD.
Se generará una interrupción si están habilitadas y el dato en el puerto satisface la ecuación lógica defina por los
registros Mask (8 bits) y Mask Control (2 bits). Y no se generará otra hasta que se produzca un cambio en el
estado de la ecuación.
Si el resultado de la ecuación fue verdadero antes o durante M1, el pedido de interrupción se hace después del
flanco positivo de M1.

4.3.2. I N T E R R U P C I O N E S
Adentro del PIO el puerto A tiene mayor prioridad que el puerto B.
En los modos 0, 1 y 2 se puede generar una interrupción siempre que una nueva transferencia de datos sea
pedida por el periférico.
En el modo 3, se puede generar una interrupción cuando el estado del periférico iguale al valor programado.
Cada puerto tiene un vector de interrupción independiente que siempre termina en 0.
Trabaja con el modo 2 de interrupciones del Z80 y soporta daisy-chain (incluyendo decodificación de RETI).
Mientras M1=0 no se generará otro pedido de interrupción.

El PIO esta diseñado para trabajar con el Modo 2 de interrupciones del Z80, y cada puerto tiene un vector de
interrupciones el cual se carga escribiendo una palabra de control en cada puerto.

Conclusión:
• Todos poseen características similares de transmisión.
• No se estudió aquí pero para grabar los registros que harán funcionar a cada uno, son necesarias distintas
combinaciones de las líneas de control desde el micro que están compuestas por líneas de direcciones,
lectura, escritura de señalización a que tipo de memoria accedemos, de reconocimiento de interrupción, etc.
• En cada uno hay distintos formas de llegar a los registros de trabajo, pero en lo que coinciden es que todos
son seteables en su funcionamiento, por software.
Interfaces de Comunicación Serie 59

Capítulo 10: INTERFACES DE COMUNICACIÓN SERIE

1. INTRODUCCIÓN
Internamente las podemos pensar como formadas por una parte que recibe datos en serie, otra que transmite
datos en serie, otra para comunicación con el modem y otra parte que recibe y transmite datos en paralelo para
la comunicación con el microprocesador.
También tienen un bloque de control que recibe señales desde el microprocesador como selección, escritura,
lectura e indicación de registros internos; también envían y reciben señales de control hacia y desde el modem.
También solicitan interrupciones al microprocesador.

El Funcionamiento básico de estas interfaces es similar en todas las familias.


Cuentan con una parte de recepción y otra de transmisión independientes.

1.1. RECEPCIÓN:
Un registro de desplazamiento que recibe los datos en serie y los pasa a un registro de recepción que el
microprocesador puede leer.
Todos verifican paridad, enmarque (falta de bit de parada) y overrun (viene otro dato y no se leyó el anterior).
Estos errores pueden o no pedir interrupción al microprocesador si se lo setea en un registro de control. Aunque
no pidan interrupción estas condiciones se pueden conocer leyendo un registro de estados.
Tiene un reloj independiente al del transmisor.

1.2. TRANSMISIÓN:
El microprocesador recibe el dato a transmitir en un registro de transmisión, luego el dato pasa a un registro de
desplazamiento por el que es sacado en serie. Puede solicitar interrupción cuando el registro de salida se vacía.

Tanto para la transmisión como para la recepción se setean: el tipo de dato (longitud, paridad, bits de parada,
etc.) y la relación de división del reloj.

1.3. LAS LÍNEAS DE CONTROL CON EL MODEM SON:


CTS (clear to send) listo para transmitir: información que envía el modem para decir si puede o no transmitir.
RTS (request to send) pedido de transmisión: la interface envía esta señal al modem para informarle que tiene
datos para transmitir.
DCD (data carrier detect) detección de portadora: información que el modem envía para decir que perdió la
portadora.
Todas pueden pedir interrupción y además son indicadas en un registro de estados.
60 Comparación de las Familias de Microprocesadores

La sincronización se hace en todos igual.


Para reducir la posibilidad de error, se muestrea varias veces el bit de arranque para determinar si el bit de
arranque es válido. Luego de haberse demostrado la validez del bit de arranque, cada uno de los bits siguientes
se muestrea con un pulso corto que coincida aproximadamente con la mitad del bit.
Este muestreo se logra agregando una señal de reloj externa de frecuencias de 1, 16 ó 64 veces la velocidad de
transferencia según el modo.

2. MOTOROLA (ACIA 6850)

Cuenta con:
• Un registro de transmisión en donde el microprocesador escribe el dato a transmitir (TDR) y otro en donde
el microprocesador lee el dato recibido (RDR).
• Un registro de control (CR) donde el microprocesador escribe la palabra de control para setear:
+ Divisor del reloj
Interfaces de Comunicación Serie 61

+ Forma de la palabra
+ Habilitar o deshabilitar interrupción de transmisión por línea RTS, transmisión de señal BREAK
+ Habilitación de interrupción de recepción debido a:
# registro de recepción lleno
# overrun
# falta de portadora
• Registro de estado SR donde el microprocesador lee:
+ Registro de recepción lleno o vacío
+ Registro de transmisión lleno o vacío
+ Falta de portadora (DCD)
+ Libre para transmitir (CTS)
+ Error de enmarque
+ Overrun
+ Paridad
+ Pedido de interrupción por parte de la ACIA

2.1. PEDIDOS DE INTERRUPCIÓN (IRQ)


La salida de interrupción permanece en bajo todo el tiempo que permanece la causa que la produce, siempre que
estén habilitadas. El bit IRQ del SR se pone en 1, indicando que ésta salida está en estado activo (0).
El pedido de interrupción se puede dar por la parte transmisora o la receptora.

2.1.1. P A R T E T RANSMISORA
La parte transmisora produce una interrupción cuando el TDR está vacío (TDRE =1 en el SR) y dicha
interrupción está habilitada (CR5 =1 y CR6 =0 en el CR).
El TDRE indica el estado actual del TDR excepto cuando está inhibido por CTS=1 o la ACIA está en condición
de Reset.
La interrupción se borra escribiendo un dato en el TDR.
La interrupción se enmascara por medio de CR5 y CR6 o por una perdida de CTS, la cual inhibe el bit TDRE.

2.1.2. P A R T E R E C E P T O R A
La parte receptora produce una interrupción cuando está habilitada (CR7 =1) y cuando el RDR está lleno
(RDRF = 1) o ocurra un Overrun (Superposición) (SR5=1), o cuando Data-Carrier-Detect (DCD=1).
Una interrupción generada por el RDRF status bit puede borrarse leyendo o reseteando la ACIA.
Una interrupción causada por un Overrun o una pérdida de DCD se borra leyendo el SR después que ocurre la
condición de error y luego leyendo el RDR o reseteando la ACIA.
La interrupción de recepción se enmascara haciendo CR5=0 y CR6=0 ó CR5=0 y CR6=1 ó CR5=1 y CR6=1.

3. INTEL: (UART 8250)


62 Comparación de las Familias de Microprocesadores

Las funciones en general son iguales a las de Motorola. Posee más registros que permiten
separar las funciones.

• Registro de control de líneas (LCR): sirve para setear la forma de la palabra a transmitir o recibir, permite
forzar el bit de paridad a 0 o a 1. Permite enviar la señal break. Sirve también para seleccionar otros
registros.
• Registro de estado de líneas (LSR):
+ Registro de recepción lleno
+ overrun
+ paridad
+ Enmarque
+ Estado de Bl cuando la entrada serie permanece mucho en 0 )
+ Registro de transmisión vacío
+ Registro de desplazamiento de salida vacío

Posee la característica de tener un registro sólo para indicar los estados de las interrupciones (IIR, Interrupt
Identification Register) y otro sólo para habilitarlas o deshabilitarlas independientemente cada una de ellas (IER,
Interrupt Enable Register).
Los estados de las interrupciones indicados y sus prioridades son:
+ Receiver line status (error enmarque, paridad, etc.)
+ Registro de entrada lleno
+ Registro de salida vacío
+ Modem status (CTS, DCD, etc.)
• Registro de control de modem (MCR): se usa para forzar las salidas de control de modem a los valores
necesarios. Posee un bit para realizar el testeo de la UART.
• Registro de estado del modem (MSR): permite a la CPU tener información del estado actual de las líneas de
control del modem y sobre algún cambio de estado.

Posee más salidas para comunicación con el modem.


DSR: Data Set Ready. indica que el modem está listo para la comunicación con la UART.
RI: Ring Indicator: indica que el modem recibió una señal telefónica de ringing.
DTR: Data Terminal Ready: informa al modem que la UART está lista para transmitir.
Output 1 y Output 2: salidas dejadas para el usuario
Chip select out (CSOUT): indica que la UART ha sido seleccionada, sirve para habilitar los buffers de datos de
la UART.
Driver Disable (DDIS): sirve para controlar la dirección de los datos entre la CPU y la UART.

4. ZILOG: SIO

Posee una característica especial distinta a las dos anteriores y es que puede funcionar en forma asincrónica,
como hemos visto hasta ahora y además en forma sincrónica.
Tiene dos canales serie independientes con control de modem separados.
Tiene dos líneas para solicitar tiempos de espera adicionales que se suelen conectar al microprocesador o al
controlador de DMA. Indican que todavía no está listo para la transferencia de datos. Se suelen utilizar en las
transferencias de bloques.
Tiene para la recepción un buffer de 3 registros como memoria FIFO para datos y otra para los estados
correspondientes a esos datos.
En el canal B tiene una opción para que cada interrupción haga cambiar el vector de interrupción.
Interfaces de Comunicación Serie 63
64 Comparación de las Familias de Microprocesadores
Indice 65

INDICE
CAPÍTULO 1: LA MEMORIA DEL SISTEMA ............................................................................................................ 1
1. ORGANIZACIÓN Y CAPACIDAD DE DIRECCIONAMIENTO ............................................................................................. 1
1.1. El 6809.............................................................................................................................................................. 1
1.2. En el 8088 ......................................................................................................................................................... 1
1.3. En el Z80 ........................................................................................................................................................... 2
2. INDICACIÓN DE ACCESO ............................................................................................................................................ 2
2.1. El 6809.............................................................................................................................................................. 2
2.2. El 8088.............................................................................................................................................................. 3
El Z80 ...................................................................................................................................................................... 3
3. REGISTROS PARA ACCESOS A MEMORIA ..................................................................................................................... 3
3.1. El 6809.............................................................................................................................................................. 3
3.2. En el Z80 ........................................................................................................................................................... 4
3.3. En el 8088 ........................................................................................................................................................ 4
CAPÍTULO 2: CICLOS DE BUS.................................................................................................................................... 7
1. DEFINICIONES............................................................................................................................................................ 7
2. COMPARACIÓN .......................................................................................................................................................... 7
2.1. El 6809.............................................................................................................................................................. 7
2.2. El 8088.............................................................................................................................................................. 9
2.3. El Z80.............................................................................................................................................................. 14
CAPÍTULO 3: TRABAJO DE CADA MICRO CON MEMORIAS LENTAS ............................................................ 17
1. EN EL 6809 ............................................................................................................................................................. 17
2. EL 8088 .................................................................................................................................................................. 17
3. EN EL Z80 ............................................................................................................................................................... 18
CAPÍTULO 4: CESION DE BUS ( REFRESCO DE DRAM)...................................................................................... 21
1. CESIÓN DEL BUS AL CDMA..................................................................................................................................... 21
1.1. En El 6809....................................................................................................................................................... 21
1.2. El 8088............................................................................................................................................................ 21
1.3. En el Z80 ......................................................................................................................................................... 22
2. REFRESCO DE DRAM .............................................................................................................................................. 23
2.1. En el 6809 ....................................................................................................................................................... 23
2.2. Características del Z80:................................................................................................................................... 24
CAPÍTULO 5: INTERRUPCIONES............................................................................................................................. 25
1. CONCEPTOS GENERALES:......................................................................................................................................... 25
2. CONCEPTOS DE CADA FAMILIA ................................................................................................................................ 25
2.1. Motorola 6809 ................................................................................................................................................. 25
2.2. INTEL 8088 ..................................................................................................................................................... 26
2.3. Zilog Z80 ......................................................................................................................................................... 28
CAPÍTULO 6: SEÑALES DE RECONOCIMIENTO DE INTERRUPCIONES, CARGA DE VECTORES, ETC... 33
1. EL 6809 .................................................................................................................................................................. 33
2. EN EL 8088.............................................................................................................................................................. 34
2.1. Secuencia de atención de interrupciones: ......................................................................................................... 34
3. EN EL Z80 ............................................................................................................................................................... 34
CAPÍTULO 7: MANEJO EXTERNO DE PRIORIDADES EN LAS INTERRUPCIONES ....................................... 37
1. EL PIC DE MOTOROLA (6828).................................................................................................................................. 37
2. EN EL 8088 DE INTEL .............................................................................................................................................. 38
2.1. Vectores de Interrupción .................................................................................................................................. 40
2.2. End Of Interrupt (EOI)..................................................................................................................................... 40
2.3. Manejo de Prioridades..................................................................................................................................... 40
2.4. Interrupt Masking ............................................................................................................................................ 42
2.5. Modos de activación: ....................................................................................................................................... 42
2.6. Estado de las interrupciones: ........................................................................................................................... 42
2.7. Conexión en cascada: ...................................................................................................................................... 42
2.8. La programación:............................................................................................................................................ 43
CAPÍTULO 8: INSTRUCCIONES Y PIN-OUTS ESPECIALES ................................................................................ 45
1. EN EL 6809.............................................................................................................................................................. 45
2. EN EL 8088.............................................................................................................................................................. 45
66 Comparación de las Familias de Microprocesadores

3. EN EL Z80 ............................................................................................................................................................... 45
4. VOLVIENDO AL 6809............................................................................................................................................... 46
5. EN EL 8088.............................................................................................................................................................. 46
CAPÍTULO 9: INTERFACES DE COMUNICACIÓN PARALELO.......................................................................... 47
1. INTRODUCCIÓN:....................................................................................................................................................... 47
2. MODOS DE COMUNICACIÓN INTERFACE-PERIFÉRICO: ................................................................................................ 47
2.1. Modo Pulsado: ................................................................................................................................................ 47
2.2. Modo Hand-Shake ........................................................................................................................................... 47
3. CARACTERÍSTICAS GENERALES: ............................................................................................................................... 48
4. COMPARACIÓN: ....................................................................................................................................................... 49
4.1. La PIA 6821..................................................................................................................................................... 49
4.2. El PPI de Intel: ................................................................................................................................................ 52
4.3. El PIO de Zilog................................................................................................................................................ 54
CAPÍTULO 10: INTERFACES - COMUNICACIÓN SERIE...................................................................................... 59
1. INTRODUCCIÓN ........................................................................................................................................................ 59
1.1. Recepción:....................................................................................................................................................... 59
1.2. Transmisión:.................................................................................................................................................... 59
1.3. Las líneas de control con el modem son:........................................................................................................... 59
2. MOTOROLA (ACIA 6850) ........................................................................................................................................ 60
2.1. Pedidos de Interrupción (IRQ) ......................................................................................................................... 61
3. INTEL: (UART 8250)............................................................................................................................................... 62
4. ZILOG: SIO ............................................................................................................................................................. 63

You might also like