Download circuitos de reloj y generación del bus de control

Document related concepts
no text concepts found
Transcript
CIRCUITOS DE RELOJ Y GENERACIÓN DEL BUS DE CONTROL
INTRODUCCIÓN:
En los temas anteriores se estudio la estructura y el principio de funcionamiento de los
sistemas de microcómputo. En estos se definieron los elementos fundamentales que los
componen CPU, Memoria, enlace a periféricos, los buses de datos, direcciones y control.
A continuación se analizarán conceptos nuevos necesarios de tener en cuenta para diseñar un
sistema, es decir cuales son realmente las señales eléctricas que determinaran cuando (circuito
de reloj) y en que sentido (bus de control) se deben realizar las transferencias, ya es sabido
que el bus de direcciones determinará quien es el que transfiere y por el bus de datos se
encontrará el dato a transferir.
Una vez conocidas las señales del reloj y del bus de control se tendrán todos los elementos
para poder realizar el hardware necesario para la construcción de un sistema de microcomputo
en particular para el up 8080.
CIRCUITOS DE RELOJ (CLOCK)
Un sistema de microcomputo es un circuito digital de tipo fundamentalmente secuencial, dado
que las actividades del microcomputador son cíclicas. El procesador busca una instrucción,
ejecuta las operaciones que la instrucción le indica; busca la próxima instrucción, ejecuta las
operaciones indicadas por ella, etc. Esta secuencia ordenada de sucesos requiere para su
funcionamiento un oscilador central, denominado reloj o clock, que marque los instantes
precisos en que tiene lugar cada una de las operaciones del sistema, indicadas por la unidad de
control. Es conveniente resaltar este último concepto: La unidad de control determina que
debe hacerse, mientras que la unidad de reloj y sincronismo indica cuando, dos funciones
bien definidas pero que comúnmente se confunden, esta confusión se debe en que en muchos
procesadores, ambas informaciones (que hacer y cuando) están presentes en una misma señal,
el 8080 se caracteriza porque vienen por distintas líneas, una indica la operación y otra el
momento adecuado y ambas para cada una de las distintas operaciones (ciclos de máquina) se
funden en una única señal de control y sincronismo. Otros microprocesadores trabajan de otra
forma aunque en el caso de motorola 6800 y 6802 el sincronismo lo da una señal de reloj.
CLOCK MONOFÁSICO Y MULTIFÁSICO
La velocidad de operación de un sistema digital tiene un límite máximo impuesto por la
tecnología utilizada (típicamente 1 o 2 MHz. para sistemas MOS canal N) y un límite mínimo
impuesto por la necesidad de mantener estable los contenidos de los registros internos del
microprocesador, en el caso de que estos sean dinámicos (existen microprocesadores como el
SC/MP de National y el Z80 de Zilog en los cuales la frecuencia mínima no está limitada,
debido a que sus registros son estáticos.
De lo expuesto se puede deducir que aún trabajando a máxima velocidad, solamente el
sistema podrá realizar una micro operación por cada pulso de reloj; si se desea aumentar la
velocidad de procesamiento del sistema para una misma tecnología, debe recurrirse a clock
multifásico el cual consiste en que el generador de reloj deberá tener tantas líneas de salida
como fases tenga el sistema. Cada fase indicará al elemento del sistema que está conectado, el
instante en que se debe realizar la operación especificada por la lógica de control, la velocidad
de operación, para la misma tecnología, aumenta en forma directamente proporcional al
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
1
número de fases del reloj. Hay que hacer notar que las frecuencias de las distintas fases debe
ser la misma.
Para clarificar el concepto analicemos como trabaja un sistema con un clock monofásico y
uno bifásico.
Φ1
Clock Monofásico
Φ1
Φ2
Clock bifásico
Supongamos el proceso de grabar un dato en memoria
1- Si se tiene un clok monofásico, con el primer flanco positivo de Φ1 la CPU pondrá el dato
a ser grabado en el bus de datos y con el siguiente flanco positivo de Φ1 la memoria
capturará el dato, se deberá esperar un nuevo flanco activo de Φ1 para comenzar una
nueva operación.
2- En el caso de bifásico la CPU trabaja con los flancos de Φ1 y la memoria con los de Φ2,
luego con la subida de Φ1, al igual que en el caso anterior, la CPU coloca el dato en el bus
de dato y en el de Φ2 la memoria captura el dato, por lo tanto con el nuevo flanco de Φ1 la
CPU puede hacer una nueva operación.
Como se observa el tiempo empleado en realizar las operaciones, se ha reducido a la mitad.
Es de hacer notar que el ejemplo descripto es una ejemplificación muy elemental de un
proceso de escritura en memoria, al final del capítulo se estudiará en forma detallada los
distintos ciclos, entre ellos el de escritura en el que intervienen las señales de control que en
este ejemplo no se han considerado.
Se observa en el ejemplo el aumento de la velocidad de procesamiento dado que el reloj es
bifásico. El aumento de la velocidad de procesamiento con el número de fases del reloj tiene
un límite el cual es fijado por los tiempos de propagación y de establecimiento de los registros
internos. También debe tenerse en cuenta que los resultados de una operación realizada por
una fase pueden ser usados por la operación gobernada por la fase siguiente.
El caso de sistemas multifásicos, es evidente que los pulsos de clock de cada fase no deben
superponerse.
En general en los microprocesadores se utilizan clock bifásicos salvo en algunos mas simples
tipo SC/MP que usan clock monofásico.
El generador de clock varía en complejidad de acuerdo a la cantidad de fases, así como a la
estabilidad requerida. En algunos casos el circuito de generación de las señales de reloj está
incluido en el integrado del microprocesador (por ejemplo el up 8085, 6802, SC/MP). En
estos solo existe un par de terminales que permiten colocar un cristal o un circuito RC para
definir la frecuencia de clock requerida. En otros procesadores el sistema de generación de las
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
2
señales de clock es externo al chip del microprocesador, estos complican la implementación,
sobre todo cuando se debe generar un reloj bifásico como en el caso del 8080.
GENERACIÓN DE LAS SEÑALES DE RELOJ DEL UP 8080
Se estudiarán a continuación la generación de las señales de clock del up 8080. En la
descripción del microprocesador 8080 se observó que disponía de las entradas Φ1 y Φ2 por
medio de las cuales el generador de reloj deberá mandar a la CPU ambas fases del reloj, dada
la característica bifásica en este procesador.
En la figura A se muestran las características temporales que deben cumplir ambas fases.
FIGURA A
Además de los requerimientos temporales de las señales Φ1 y Φ2 existen requerimientos
eléctricos dado que la alimentación del 8080 necesita de las siguientes tensiones +5v, +12v y 5v. Los niveles de las señales de reloj que ingresan a la CPU no son compatibles con TTL, la
variación de tensión requerida es de 0,6 a 11 Volt con tiempos de crecimiento y bajada de 50
nanosegundos.
el circuito de generación puede ser construido mediante componentes digitales
convencionales, o con un CI específico de la familia del 8080, el 8224.
En el caso de realizar con componentes convencionales como muestra la figura B , el circuito
de reloj consiste de un oscilador de 20 MHz controlado por cristal, la salida de éste se aplica a
un contador binario sincrónico y preseteable, el cual es inicializado en tres y está realimentado
por la 74h00 para contar hasta once, lo cual hace que divida por nueve; de las cuatro salidas
del contador son decodificadas para obtener las líneas Φ1 (TTL) y Φ2 (TTL) cuya relación
temporal se muestra en la figura A. Como las tensiones de entrada Φ1 y Φ2 del 8080 no son
compatibles con TTL es necesario utilizar un adaptador por ejemplo el MH0026, las salidas
Φ1 y Φ2 negadas se acoplan mediante un capacitor al exitador, a la salida del exitador se
colocan resistencias de bajo valor para eliminar transitorios en la forma de onda.
El generador de clock también puede ser utilizado para generar otras señales las que el usuario
necesitará en algunos casos por ejemplo cuando utilice memoria dinámica, o cuando se
implementa un sistema de microcomputo bastante complejo. Funciones tales como la
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
3
inicialización (reset) en el encendido, sincronización de pedidos externos (HOLD, READY,
DMAREQ, etc) podrían añadirse facilmente al circuito generador de reloj.
Por ejemplo, la señal de 20 MHz. del oscilador podría ser utilizada para crear una base de
tiempo externa para implementar un temporizador o bien para generar los pulsos de un canal
de comunicación serie con el exterior. El diagrama del generador de clock muestra, además,
como se genera una señal adelantada en el tiempo Φ1 A (TTL) que es
útil para sincronizar pedidos externos, esta señal es útil para generar un pulso de habilitación
(strobe) que es la señal necesaria para almacenar la información de condición o estado
(status) que está disponible sobre el bus de datos al comienzo de cada ciclo de máquina (señal
STSTB negada); para esto basta con realizar la operación NAND entre Φ1 A y la señal SYNC
la cual es salida del 8080. En el estudio del bus de control se analizará la utilización de estas
señales auxiliares.
FIGURA B
También como se mencionó antes, para esta función puede utilizarse un circuito
integrado de la familia del procesador el 8224, este elemento mostrado en la figura C contiene
un generador de clock y excitador para el 8080; el generador contiene un oscilador controlado
por cristal, un contador divisor por nueve, dos excitadores modificadores de nivel y varias
funciones lógicas auxiliares.
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
4
FIGURA C CI 8224 Generador de CLK
La selección de la frecuencia del cristal externo depende principalmente de la velocidad con
la que se desee que opere el microprocesador; el oscilador trabaja a una frecuencia nueve
veces mas rápida que la del 8080. Por ejemplo, si el periodo del 8080 es de 500 ns (tcy), la
frecuencia del cristal deberá ser de 18 MHz.
En la figura C se muestra el diagrama del conexionado de los pines del 8224 y el esquema en
bloques del mismo. La función de las diferentes entradas y salidas de este chip son las
siguientes:
Señales de entrada:
XTAL1 y XTAL2: conexiones para cristal externo
TANK: Se utiliza cuando el cristal empleado es con resonancia en un armónico (sobre
tono), en este caso se debe conectar una red LC para proveer una ganancia
adicional.
SYNC: Entrada de sincronismo, generada por la CPU 8080 que se activa al comienzo
de
cada ciclo de máquina.
RESIN: Entrada de inicialización (Reset), para conectar a un pulsador externo o a una red RC
para inicializar el encendido, para lo cual tiene un Schmitt Trigger.
RDYIN: Señal procedente de un dispositivo de memoria o periférico, que indican que los
datos están disponibles (usado por dispositivos lentos)
SEÑALES DE SALIDA
OSC: Salida del oscilador para crear una base de tiempo externa
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
5
Φ1 y Φ2: Fases del reloj para el 8080
Φ2 (TTL): Fase de reloj 2 con niveles TTL para ser usada por la memoria y periféricos.
STSTB: Señal usada para capturar la palabra de estado
RESET: Indica al procesador una operación de puesta en cero.
READY: Indica a la CPU si los datos de los dispositivos de memoria o periféricos estan en el
bus de datos.
BUS DE CONTROL
Si recordamos el capitulo anterior sobre arquitectura de un sistema de microcomputo, en el
diagrama en bloques queda establecido la existencia de tres barras o Buses: el de direcciones,
el de datos y el de control; los primeros se utilizan para realizar las transferencias de datos
desde y hacia el microprocesador, el último es el que da la información de que tipo de
operación se está realizando como por ejemplo: lectura de memoria, salida a periférico, etc.
Algunas líneas de control son pines físicos del chip, otras se obtienen del bus de datos en un
determinado instante de tiempo. Las señales que son pines son:
WR: Señal de salida, activa en bajo, el dato presente en el bus de dato está estable para
escribir en memoria o puerta de salida.
SYNC: Señal de salida activa en alto, indica el comienzo de un nuevo ciclo de máquina y la
información de la palabra de estado es puesta sobre el bus de datos.
INTE: Señal de salida, indica el estado de las interrupciones, si están habilitadas o no.
HOLDA: Señal de salida, su nivel indica si la CPU se halla o no en el estado hold.
WAIT: Señal de salida, cuando está en alto, indica que la CPU está en el modo WAIT.
DBIN: Señal de salida, cuando está en alto indica al circuito externo que el bus de datos está
en el modo de entrada.
A continuación se analizará como obtener las señales del bus de control para el sistema 8080.
CICLOS DEL PROCESADOR 8080
Las actividades del microprocesador son cíclicas, como ya se indicó. El procesador busca una
instrucción, ejecuta las micro instrucciones específicas que el código de operación le indica,
busca la próxima instrucción, ejecuta, etc.
Existen distintos conceptos en cuanto a los ciclos que vamos a definir:
- Ciclo de instrucción: es el periodo entre el instante en que el procesador comienza la
búsqueda de la primera palabra de una instrucción y el momento en que se termina por
completo la ejecución de la misma.
- Ciclo de máquina: es el tiempo en que se realiza una actividad bien definida de la cpu
como por ejemplo lectura de memoria, salida a periférico, etc.
- Ciclo de reloj o estado: es el periodo del reloj Φ1 del procesador y durante el se realiza la
actividad mas sencilla posible. Por ello a este se le llama microciclo y durante el mismo
se ejecutará una microinstrucción.
Las instrucciones del 8080 están formadas por 1,2,3,4 o 5 ciclos de máquina para su búsqueda
y ejecución. Cada ciclo de máquina requiere de 3 a 5 estados, donde cada estado tiene una
duración de 1 periodo de reloj como ya se mencionó anteriormente. En general una
instrucción precisa de 4 a 18 estados.
De lo expuesto se puede afirmar de que el tiempo necesario para la ejecución de una
instrucción es directamente proporcional a las veces que la cpu debe acceder a memoria.
Algunas operaciones no requieren de otro acceso aparte del de acceder al código de
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
6
operación, en tanto que otras precisan varios ciclos de máquina adicionales para escribir o leer
datos en o desde la memoria o algún dispositivo de entrada/salida.
Existen 3 excepciones en cuanto a considerar la duración de un estado igual a un periodo de
reloj. Estas son : el estado de espera (wait), el estado de paro (HLDA) y el estado de
alto(HLTA) cuya funciones serán definidas mas adelante.
CICLOS DE MAQUINA
En un sistema de microcomputo intervienen un conjunto de elementos: CPU, memoria,
periféricos. Teniendo en cuenta que la CPU es la que define el ciclo de máquina a realizar de
acuerdo a la instrucción que se está ejecutando, es necesario para el funcionamiento del
sistema que este pueda ser identificado por los periféricos.
El número de ciclos de máquina que necesita un ciclo de instrucción, se puede determinar por
el número de veces que el procesador hace referencia a memoria o a un dispositivo de E/S.
La única excepción es la instrucción DAD (suma de registros pares) la cual requiere de dos
ciclos de máquina adicional en su ejecución.
Teniendo en cuenta la arquitectura del microprocesador 8080, la cual es similar a la mayoría
de los de su tipo, solo puede enviar una sola dirección por ciclo de máquina, por lo tanto si la
identificación y ejecución de una instrucción se necesita hacer dos accesos a memoria
entonces para ejecutar esta instrucción será necesario dos ciclos de máquina. Si una
instrucción necesita de cinco accesos a memoria, el ciclo de instrucción contendrá cinco
ciclos de máquina.
Todo ciclo de instrucción realiza, como mínimo, un acceso a memoria, el cual corresponde a
la búsqueda e identificación del código de operación correspondiente a la instrucción . Este
ciclo de máquina es el primero de cualquier instrucción independiente del tipo de instrucción
considerada. En algunas instrucciones este es el único ciclo de máquina que posee el ciclo de
instrucción, por ejemplo, en todas aquellas instrucción que solo utilizan los registros de uso
general de la CPU tal como en la instrucción de suma simple de registros (ADD r), esta es
una instrucción de un solo byte, en la que uno de los 6 registros de 8 bits de la CPU se suma
el contenido del acumulador, guardándose el resultado en este último. Como toda la
información necesaria para la ejecución de esta instrucción esta contenida en el código de
operación, por lo tanto necesita de un solo acceso a memoria. El ciclo de instrucción consta,
por la tanto, de un solo ciclo de máquina, que a su vez consta de cuatro estados o ciclos de
reloj: tres para extraer la instrucción de la memoria, mas un estado adicional para realizar la
suma.
Con respecto a lo anteriormente descripto llama la atención que no se ha contemplado la
microinstrucción de guardar el resultado en el acumulador. Si tenemos en cuenta la figura I
en la que se detallan los ciclos de máquina y los estados necesarios para la ejecución de cada
una de las instrucciones del microprocesador 8080, se observa que el almacenamiento del
resultado en el acumulador se realiza en el segundo estado del próximo ciclo de máquina,
pero este ciclo de máquina pertenece al ciclo de la instrucción siguiente. En otras palabras la
instrucción ADD R se termina de ejecutar en el primer ciclo de máquina de la instrucción
siguiente, de esta manera se agiliza la ejecución. Este proceso descripto es utilizado en todas
las instrucciones aritméticas, lógicas y de rotación.
Supongamos ahora que la suma debe realizarse entre el contenido del acumulador y el de una
posición de memoria determinada (ADD M). El principio de funcionamiento es el mismo que
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
7
se indicó en el ejemplo anterior, pero en este caso se precisa de otro ciclo de máquina, en el
cual se debe buscar en memoria el dato operando.
La secuencias que se desarrollan para la ejecución de esta instrucción son las siguientes: en
primer lugar, el procesador accede a la memoria, enviando la dirección contenida en el
contador de programa, con el objeto de obtener el código de operación de la instrucción . Es
el ciclo de búsqueda e identificación de la instrucción . Una vez que los 8 bits del código se
encuentran en CPU y la instrucción ha sido identificada, operación que consta de tres estados,
como en el caso anterior, el procesador debe enviar por el bus de direcciones una nueva
dirección de memoria, la contenida en el par HL, el dato obtenido de este nuevo acceso a
memoria es guardado en un registro temporal de CPU, habiéndose utilizado en este ciclo de
máquina tres nuevos estados (periodos de reloj). En el séptimo y último estado de la
instrucción, se realiza la suma entre el contenido del acumulador y el registro temporal. Se
puede deducir que esta instrucción precisa de dos ciclos de máquina (dos accesos a memoria)
y siete estados para su ejecución. La ejecución se completa como en el caso anterior
guardando el resultado en el acumulador en el segundo estado del primer ciclo de máquina de
la instrucción siguiente, producciéndose el solapamiento de operaciones explicado en
párrafos anteriores.
Otra instrucción característica es la de guardar el contenido del registro par HL en memoria,
en dos lugares consecutivos cuya dirección viene en los dos bytes de memoria siguientes al
del byte del código de operación, esta instrucción requiere de cinco ciclos de máquina para su
realización. La secuencia de operaciones, que tiene lugar en la ejecución de esta instrucción,
es la siguiente:
1- Un ciclo de búsqueda, que consta de cuatro estados. Durante los tres prrimeros, el
procesador busca e identifica la instrucción, accediendo al lugar de memoria indicado en
el contador de programa (PC) el cual se incrementa en uno. En el cuarto estado, se realiza
la decodificación interna de la instrucción .
2- Un ciclo de lectura de memoria, que consta de tres estados. Durante este, el byte definido
por el contador de programa (segundo byte de la instrucción y parte baja de la dirección
de almacenamiento), se extrae de memoria y se deposita en el registro interno Z de CPU.
El contador de programa se incrementa de nuevo en una unidad.
3- Un nuevo ciclo de lectura de memoria, similar al anterior y donde el tercer byte de la
instrucción (parte alta de la dirección) es cargado en el registro W, en este el PC también
es actualizado.
4- Ciclo de escritura en memoria, de tres estados, en que el contenido del registro L se
transfiere a la posición de memoria definida por los registros WZ. El último estado de este
ciclo se utiliza para incrementar el par registro WZ, con el objeto de indicar la próxima
dirección de memoria para almacenar el contenido del registro H.
5- Nuevo ciclo de escritura en memoria, que consta de tres estados, en el que el contenido
del registro H se transfiere a la nueva dirección de memoria, definida por el par WZ.
En resumen, la instrucción SHLD contiene cinco ciclos de máquina y necesita de 16 estados
para su ejecución.
El resto de las instrucción del 8080 están comprendidos entre los extremos caracterizados por
las instrucciones ADD R y SHLD. Por ejemplo las instrucciones de entrada (IN) y salida
(OUT) necesitan tres ciclos de máquina: uno de búsqueda de código de operación de la
instrucción , otro de lectura en memoria para obtener la dirección (código) del periférico al
que se debe acceder, y uno de entrada o salida a periférico, para realizar la transferencia de
datos indicada en la instrucción .
TIPOS DE CICLOS DE MÁQUINA
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
8
En los ejemplos enunciados anteriormente se puede determinar que existen distintos tipos de
ciclos de máquina: búsqueda, lectura, escritura, etc. Teniendo en cuenta que ningún ciclo de
instrucción estará constituidos por mas de cinco ciclos de máquina,es evidente que debe
existir una cierta variedad de ciclos de máquina que permitan que se ejecuten las instrucciones
del procesador 8080.
Los ciclos de máquina característicos del up 8080 son diez, los cuales serán descriptos a
continuación:
-
Búsqueda (Fetch): Este ciclo de máquina puede consistir e cuatro o cinco estados, con la
excepción de estado de WAIT, HLDA y HLTA, los cuales contienen un número entero de
estados mayor que tres. Durante este ciclo la CPU obtiene de memoria el código de
operación de la instrucción, por eso el nombre de ciclo búsqueda. La dirección de
memoria de la cual obtiene el código es el contenido en el contador de programa (PC),
este código de operación es transferido al registro de instrucción del 8080, donde luego
en el decodificador de instrucciones será decodificado resultando una serie de acciones
que el procesador deberá realizar para ejecutar la instrucción . Durante este ciclo el PC es
incrementado en uno para obtener la dirección del próximo byte. En algunas instrucciones
solo es necesario este ciclo para su ejecución, en estos casos durante este ciclo de máquina
también se realizan transferencias entre registros de CPU y operaciones aritméticas o
lógicas simples.
-
Lectura de memoria (Memory read): Este ciclo de máquina consiste de tres estados.
Durante este ciclo el byte de memoria almacenado en la dirección que estará presente en
el bus de direcciones, es transferido a alguno de los registros de CPU.
-
Escritura en memoria (Memory write): Este ciclo de máquina consiste de tres o cuatro
estados, durante los cuales el contenido de algún registro es transferido al lugar de
memoria direccionado.
-
Salida a periférico (Output): Este ciclo de máquina consiste de tres estados, durante los
cuales el código del dispositivo deberá estar presente sobre el bus de direcciones y el
contenido del acumulador estará disponible sobre los ocho bit del bus de datos.
-
Entrada de periférico (Input): Durante los tres estados de este ciclo la CPU deberá
realizar lo siguiente: colocar el código del periférico en el bus de direcciones, luego
deberá capturar el dato presente en el bus de datos para ser transferido al acumulador.
Escritura en pila (Stack write): Durante los tres estados de este ciclo de máquina, un dato
de 8 bits de CPU será transferido al lugar de memoria direccionado por el puntero de pila
(SP). El puntero es previamente decrementado en una unidad.
-
-
Lectura de pila (Stack read): Este ciclo de máquina consiste en tres estados, en estos el
contenido del lugar de memoria direccionado por SP es trasnferido a alguno de los
registros de la CPU. Luego el SP es incrementado en uno.
-
Alto (Halt): Este ciclo de máquina contiene tres o mas estados. El número adicional de
estados deberá ser un número entero. El microprocesador se mantendrá en un estado de
espera (wait) hasta que la entrada READY del 8080 tome un valor lógico cero. La señal
de control de salida del 8080, WAIT, tomará el valor lógico 1, de esta manera la CPU
indica que se encuentra en un estado de espera (WAIT).
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
9
-
Interrupción (Interrupt): Este ciclo de máquina contiene 5 estados, utiliza el ciclo de
búsqueda sin incrementar el PC. El estado del PC antes de la Interrupción deberá ser
salvado en la pila con lo que le permitirá continuar con el programa interrumpido luego de
atender la interrupción.
-
Alto-Interrupción (Halt-Interrupt): Este ciclo de máquina es una composición de los dos
anteriores. Se produce una interrupción mientras se está en un estado de alto.
IDENTIFICACIÓN DEL CICLO DE MÁQUINA
Teniendo en cuenta las características particulares de cada ciclo de máquina enunciados,
podemos deducir que para el buen funcionamiento del sistema de microcómputo es necesario
identificar el ciclo de máquina que se está ejecutando. De esta manera se podrá asegurar una
buena comunicación entre CPU y los demás dispositivos del sistema.
El microprocesador 8080 tiene una característica muy particular que es la siguiente: en el
primer estado de cada ciclo de máquina entrega la información de estado STATUS sobre el
bus de datos, esta información deberá ser capturada para mantenerla durante todo el ciclo de
máquina presente, de esta manera se puede utilizar para generar las señales necesarias para
comandar los distintos dispositivos periféricos.
La captura de la información se puede realizar en un circuito integrado de la familia, el 8212,
o cualquier latch de 8 bits, por ejemplo 74LS373 como se muestra en la figura D.
Las Señales SYNC y Φ1 (TTL) determinan el instante en que se debe tomar la información
de estado del bus de datos, en otras palabras son las señales que sincronizan al latch como se
observa en la figura D.
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
10
FIGURA D
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
11
FIGURA E
Los ocho bits de estado, también llamado bus de control básico, que se presentan sobre el bus
de datos al comienzo de cada ciclo de máquina se describen a continuación con sus
respectivos símbolos.
SÍMBOLO
BIT DEL
BUS DE
DATOS
INTA
D0
DESCRIPCIÓN
Señal de reconocimiento de interrupción. Se activa en cuando el
8080 realiza un ciclo de máquina de reconocimiento de una
interrupción. Esta señal junto con la DBIN (pin 17 del 8080), se
utilizan para introducir una instrucción, generalmente una de
restablecimiento o reinicio (RST n), en el bus de datos.
Este bit de estado tomará su valor activo 0 cuando la CPU realice
un ciclo de escritura en memoria o una operación de salida (out).
W0
D1
STACK
D2
Indica que la dirección presente en el bus de direcciones
corresponde a la del contenido del puntero de pila SP (stack
pointer).
HLTA
D3
Señal de reconocimiento de una instrucción de alto (HLT).
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
12
OUT
D4
Un 1 lógico en este bit de estado, indica que el bus de direcciones
contiene la dirección de un dispositivo de salida, y que el bus de
datos contendrá el dato que debe enviarse al periférico, cuando la
línea WR (terminal 18 del 8080) este activada.
M1
D5
Indica que la CPU está en el ciclo de búsqueda (Fetch), el primer
byte de una instrucción .
INP
D6
Un nivel alto en esta línea, indica que el bus de direcciones
contiene la dirección de un dispositivo de entrada, y el dato a
ingresar deberá ser puesto en el bus de datos por el periférico,
para que cuando la señal DBIN este en su valor activo, sea leído
por la CPU.
MEMR
D7
Un nivel alto en esta línea, indica que el bus de direcciones
contiene la dirección de un lugar de memoria y el dato contenido
en esta deberá ser puesto en el bus de datos para que cuando la
señal DBIN este en su valor activo, sea leídos por la CPU
EL estado de las señales del bus básico de control para los ciclo de máquina característicos
descriptos anteriormente, pueden observarse en la figura F.
FIGURA F
A partir de este bus básico de control se generan las señales de control que deberán tenerse en
cuenta para la generación de los pulsos selectores de memoria y dispositivos periféricos como
se muestra en las figuras G y H.
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
13
FIGURA G
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
14
FIGURA H
Diagrama de tiempo correspondiente a una instrucción de entrada de datos
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
15
Diagrama de tiempo correspondiente a una instrucción de salida de datos
TRANSICIÓN DE ESTADOS EN EL 8080
Cada uno de los ciclos de máquina de un ciclo de instrucción consta de tres a cinco estados
activos. A estos estados se los define como T1, T2, T3, T4, T5 o Tw. El número de estados,
como se sabe, depende de la instrucción que está siendo ejecutada y en particular del ciclo de
máquina presente. La figura I muestra el diagrama de transición de estado, en él se observa
como el 8080 pasa de un estado a otro en un ciclo de máquina. Asimismo se observa como
son muestreadas las líneas READY, HOLD y INTR y la modificación producida en la
secuencia si alguna condición activa aparece en estas líneas. En principio se estudiará el
diagrama teniendo en cuenta la secuencia normal y la función READY. Las funciones de alto
e interrupción se verán posteriormente.
La unidad central de proceso del 8080 no indica directamente su estado interno, transmitiendo
una salida de control de estado durante cada uno de estos. En cambio proporciona una salida
de control directa (INTE, HLDA, DBIN, WR y WAIT) que utiliza la lógica exterior.
La señal SYNC identifica el primer estado (T1) de un ciclo de máquina. Esta señal se activa
un tiempo (tpc) después de la subida de Φ2, la señal se mantiene hasta un nuevo flanco
positivo de la señal de reloj, produciéndose el mismo retardo que en la subida.
La información de estado (bus de control básico) es puesta en el bus de datos durante el
intervalo comprendido entre los pulsos de Φ2.
Con el flanco de subida de Φ2 en el estado T1, el procesador coloca una dirección en el bus de
direcciones A0 - A15, estas estarán estables luego e un ciclo de retardo (tda), y estarán
presentes hasta el primer pulso de Φ2 luego del estado de T3, lo cual le da al procesador
suficiente tiempo para realizar una lectura.
Una vez que el procesador ha enviado una dirección a la memoria, esta, tiene la posibilidad
de ejecutar una demanda de espera (WAIT), si el tiempo de acceso a la memoria así lo
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
16
requiere. Esta solicitud lo realiza el dispositivo colocando en 0 la línea READY, el 8080
analiza esta línea realizando un pulling de esta señal en el estado T2 cuando Φ2=1. De esta
manera el procesador entra en un estado de espera Tw, la permanencia en este estado es
identificada y esta determinada por la subida de READY la cual será analizada antes del
flanco negativo de Φ2, con el objeto de asegurar el paso al estado siguiente en el momento
correcto dado por el flanco positivo de Φ1. Por esto la duración de un período de espera será
siempre un múltiplo entero de estados Tw, y por lo tanto del periodo del reloj.
El procesador reconoce el pedido de espera colocando en 1 la señal WAIT, la cual está
sincronizada con el flanco de subida de Φ1, y tiene un cierto retardo (tdc) respecto a la entrada
del procesador en el estado Tw. Figura J.
En el estado siguiente T3, las operaciones dependen del ciclo de máquina que se esta
ejecutando. Si corresponde a un ciclo de búsqueda (Fetch), el procesador interpreta el dato
como una instrucción, si el ciclo corresponde a una lectura de memoria o lectura de memoria
pila, los datos del bus se toman como una palabra de datos, si lo que se está ejecutando es un
ciclo de escritura en memoria, el procesador el dato en el bus de datos y por último, si el ciclo
es de entrada/salida, el procesador puede recibir o transmitir datos desde/o a un dispositivo
periférico, según sea una instrucción de entrada o salida.
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
17
FIGURA I
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
18
FIGURA J
Durante la entrada de datos al procesador, el 8080 genera la señal DBIN, la cual debe ser
usada por los dispositivos externos para habilitar las transferencias hacia CPU. Esta señal será
activa en todos aquellos ciclos de máquina en que se deban ingresar datos a CPU los cuales
son: búsqueda, lectura de memoria, lectura de memoria pila, entrada de periféricos y
reconocimiento de interrupción. La señal DBIN se activa durante el estado T2 sincronizada
con el flanco de subida de Φ2, la señal vuelve al valor cero con el flanco positivo de Φ2
correspondiente a T3. Si algún estado de espera T2 aparece, la señal DBIN se mantendrá en
uno hasta que la CPU salga de este.
En el caso que el procesador deba sacar datos ya sea a memoria o a periféricos, con el flanco
de subida de Φ2 durante el estado T2 se elimina del bus de datos la información de control, y
se deposite en él el dato que debe ser transferido desde la CPU. Esta sustitución se realiza
teniendo en cuenta un cierto retardo respecto al flanco de Φ2, este retardo es llamado data
output delay (tdd). El dato en el bus de datos permanecerá estable durante el resto del ciclo
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
19
de máquina y será recién reemplazado por la información de estado del próximo ciclo de
máquina en el estado T1.
El 8080 genera la salida WR para sincronizar las transferencias de salida, esta señal estará
presente en los ciclos de máquina de escritura en memoria, escritura en memoria pila y salida
a periféricos. El flanco negativo de WR este referenciado al de subida de Φ1 producido en el
estado T2 teniendo en cuenta un breve retardo (tdc). La señal vuelve a 1 lógico con el flanco
positivo de Φ1 en el estado siguiente T3, este corresponde al primer estado del ciclo de
máquina siguiente. Si un estado de espera Tw aparece, la señal WR se mantendrá en cero.
Los estados T4 y T5 son opcionales y dependen del ciclo de instrucción, si estos no son
necesarios son eliminados.
Lo enunciado se puede resumir describiendo las distintas actividades o acciones, que se
producen en cada uno de los estados.
Estado T1:
Con el flanco positivo de Φ2 coloca en el bus de direcciones una dirección
de memoria o el código de un periférico.
La señal SYNC pasa a uno lógico un cierto tiempo después que Φ2 toma
el valor 1.
La CPU vuelca sobre el bus de datos los ocho bits de estado (INTA, WO,
STACK, HLTA, OUT, M, INP Y MEMR), en el mismo instante en que
se activa la señal SYNC.
Estado T2:
El 8080 en este estado analiza las líneas de entrada HOLD y READY asi
como la presencia de una instrucción de alto (HALT). Si la señal
READY esta en 1 lógico se pasará al estado T3, en caso contrario el
procesador entrará en un estado de espera, TN.
La salida SYNC del 8080 vuelve a su valor inactivo 0 lógico un cierto
tiempo, luego del flanco positivo de Φ2. Luego de la subida de Φ2,
teniendo en cuenta un cierto retardo, la palabra de estado que estaba
presente en el bus de datos es reemplazada por una instrucción o un dato
el cual puede ser puesto por CPU, memoria o periférico dependiendo del
ciclo de máquina presente.
El contenido del bus de direcciones se mantiene estable en este estado. La
señal DBIN del 8080 pasa a nivel 1 lógico con la subida de Φ2.
Estado Tw:
Este es un estado de espera opcional, la CPU ingresa en este estado si
detecta en el estado T2 la señal de entrada READY esta en cero o si una
instrucción de HALT ha sido ejecutada, en este último caso, la CPU
permanecerá en este estado hasta que una interrupción o un reset sea
aplicado.
La CPU indica la aceptación de este estado de espera, mediante la señal
WAIT, la cual es un terminal de salida del 8080. Esta señal de
reconocimiento toma el valor activo 1 con el flanco positivo de Φ1.
Un estado de espera puede ser de duración infinita, el procesador
permanecerá en este estado hasta que la señal READY vuelva al valor 1
lógico.
El contenido del bus de direcciones no cambia durante este estado.
Estado T3:
En este estado el dato presente en el bus de datos será transferido al
elemento destino, el cual puede ser un registro de CPU, memoria o
periférico, dependiendo del ciclo de máquina en cuestión.
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
20
En ciclos de máquina correspondiente a escritura en memoria o salida de
periféricos, la señal WR va a su estado activo, 0 lógico, con el primer
pulso de Φ1 luego del estado T2, esto puede ocurrir en cualquiera de los
estados Two T3, usualmente en esta último.
La salida del 8080 WR retorna a 1 lógico luego de la subida de Φ1 en el
primer estado del ciclo de máquina siguiente.
Estados T4, Estos dos estados son opcionales, que serán ocupados si las instrucción en
T5:
ejecución lo requiere, la CPU podrá eliminar uno o ambos estados.
Estos estados son solo utilizados por operaciones internas de CPU. El
contenido del bus de direcciones cambia con un cierto retardo respecto a
la subida Φ2.
En la figura K se describe cada una de las instrucciones del procesador 8080 con sus distintos
ciclos de máquina y los estados que cada uno utiliza, se indican además para cada estado las
microoperaciones que se realizan en cada uno de ellas.
Algunos de los elementos notables de la figura K están referenciados por números que a
continuación describiremos.
1- El primer ciclo de máquina de la instrucción corresponde a un ciclo de búsqueda, el
código de operación de la instrucción es leído de la memoria.
2- Si la entrada READY esta en 0 lógico, el procesador entra en un estado de espera tw
hasta que la señal vuelve a alto.
3- Los estados T4 y T5 están presentes, estos son requeridos por la instrucción , en estos
estados solo se realizan operaciones internas de CPU como por ejemplo la decodificación
de una instrucción. Una x indica que este estado es utilizad.
4- Solo aplicable a los registros pares B y D
5- Estos estados son eliminados
6- Sub-ciclo de lectura de memoria; una instrucción o palabra de datos debe ser leído
7- Sub-ciclo escritura.
8- La señal READY no es analizada en el segundo y tercer sub-ciclo (M2 y M3). La señal de
HOLD si es aceptada durante M2 y M3. La señal SYNC no es generada en M2 y M3 ya que
la memoria no es accedida en estos y solo son utilizadas para sumar los registros pares.
9- El resultado de la instrucción aritmética lógica o de rotación no es transferido a su
destino, el acumulador (A) hasta el estado T2 del siguiente ciclo de instrucción , esta
superposición de operaciones permite un procesamiento mas rápido.
10- Las operaciones de la instrucción de ajuste decimal del acumulador
11- Indica el primer sub-ciclo del siguiente ciclo de instrucción.
12- Si se cumple la condición, el contenido del registro interno Wz es sacado por el bus de
direcciones y cargado en el contador de programa PC.
13- Si la condición no se cumple, se eliminan los ciclos de máquina M4 y M5, el procesador
pasa al ciclo de instrucción siguiente.
14- Idem 13 lo único que se elimina M2 y M3
15- Sub-ciclo de lectura de memoria de pila.
16- Sub-ciclo de escritura en memoria de pila.
17- Los valores de código de operación dependen de la condición según la siguiente tabla.
Condición
CCC
Cero NZ
Z=0
000
Z
Z=1
001
Carry NC
Cy=0
010
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
21
C
Cy=1
011
Paridad PO P=0 (impar)
100
PE
P=1 (par)
101
P
S=0
110
M
S=1
111
18- Sub-ciclo de entrada/salida, el código de la puerta seleccionada es dudplicado sobre las
líneas de direcciones A0-7 y A8-15
19- Sub-ciclo de salida.
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
22
Figura K
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
23
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
24
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
25
MICROPROCESADORES I Y ELECTRONICA DIGITAL III
GENERACION DEL BUS DE CONTROL
Ing. Carlos G. Gil, Ing. Gustavo Ensinck
26