Professional Documents
Culture Documents
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.
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
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.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
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.
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
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
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.
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
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.
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
=O implica RECIVE
Data Enable
12 Comparación de las Familias de Microprocesadores
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.
2.3. EL Z80
Este micro posee una entrada de reloj FI para conectar un reloj externo.
2.3.3. C I C L O S DE M ÁQUINA .
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.
Datos
RD
WR
Z80
MREQ
IORQ
M1
Trabajo con Memorias Lentas 17
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
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
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.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.
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)
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.
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
IRQ MEMORIA
PIC
DIR
DIR
6809
DATO DATO
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.
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
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?.
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.
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
NMI
Z80
INT
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.
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
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
INT
Periférico
DATOS Nº de Vector
7 bit
Z80 MEMORIA
Reg. I Dir de inicio DATO
MODO 2
Nota:
Cuando el micro toma una INT deshabilita automáticamente a esta entrada, es decir, la enmascara.
Cuando entra:
IFF1 IFF2
Reset 0 0
NMI 0 IFF1
RETN IFF2 •
INT 0 0
RETI • •
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.
• 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
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.
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.
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.
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
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
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.
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.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.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
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
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
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.
Datos
Interface Periférico
Control
Datos
Interface Periférico
Control
48 Comparación de las Familias de Microprocesadores
Control 1
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:
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
Posee tres puertos A, B y C, que según sea el modo de trabajo tendrán distintas funciones.
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
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
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.
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.
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
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.
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.
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.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.
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.
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