CICLOS DE MAQUINA by DT2I1P

VIEWS: 78 PAGES: 9

									CICLOS DE MAQUINA
                  Cuando un microprocesador ejecuta una instrucción, éste
           realiza una serie de operaciones o tareas básicas llamadas
           ciclos de máquina. Estas tareas que involucran          a las
           componentes internas del CPU, algunas veces a la memoria o a
           los puertos de entrada y salida, son coordinadas con las
           señales de interfase generadas en la unidad de control en una
           secuencia ordenada.


      El Z80 realiza siete diferentes ciclos de máquina, a saber:

         1. Búsqueda del código de operación de la instrucción (ciclo M1)
         2. Ciclo de escritura o lectura de datos en y de la memoria.
         3. Ciclos de lectura o escritura en puertos de E/S
         4. Ciclo de petición /concesión de buses.
         5. Ciclo de petición /concesión de interrupciones enmascarables.
         6. Ciclo de petición/ concesión de interrupciones no enmascarables.
         7. Salida de una instrucción HALT.


      Cada ciclo de máquina se realiza en sincronía con el reloj maestro,
      cuya entrada es la CLK, de la terminal 6 del Z80.
      El periodo de esta señal de reloj “T”, es la referencia básica de la
      duración de un ciclo de máquina. El número de ciclos T que se toma
      un ciclo de máquina para realizar la tarea varía en función de su
      complejidad.
      Mientras más complicado sea el ciclo de máquina, este se tomará
      más ciclos T en realizarlo.
      Si suponemos que el mico trabaja con un reloj de 4MHz, cada ciclo
      T durará 250 nanosegundos.
       Esto es : Un ciclo de búsqueda M1 está compuesto de 4 ciclos T( este
ciclo es más largo porque es necesario la decodificación de instrucciones)
un ciclo de lectura a la memoria tiene 3 ciclos T.


RESUMIENDO :
      Las instrucciones se hacen de ciclos de máquinas, los cuales son
compuestos por ciclos T. Cada 1er byte de una instrucción es un byte de
un código de operación, tal que el Z-80 siempre realiza al menos un ciclo
M 1 en la ejecución de cualquier instrucción . Ciclos de máquina hay
varios pero un ciclo T es único, es una transición lógica de 250ns en vez de
4Mhzdel cero lógico al 1 lógico a 0 lógico.




CICLO DE MAQUINA M1 O DE BUSQUEDA DE CODIGO DE OPERACIÓN




      En el ciclo M 1 el Z80 realiza lo siguiente:
    1- Lee de memoria de programa, el byte del código de operación.
    2- Decodifica la operación a ser realizada
    3- Implementa una porción o posiblemente toda la operación (para
       instrucciones de 1 byte)


    ¿Qué sucede en M1 ?


    Tan pronto como entra el CPU en el ciclo M1,
    a) La señal M1 cae para indicar que este ciclo es activado
    b) El contenido de contador de programa es pasado al bus de
       direcciones en preparación para la búsqueda del código de
       operación de la sig. instrucción.
    c) En la caída de T1 las señales MREQ y RD se hacen bajo,
       indicándole a la memoria que hay una dirección de memoria
       válida en el bus de direcciones.
    d) La memoria externa pasará ahora el contenido de la localidad
       específica al bus de datos un poco antes del borde de levantada de
       T3.
    e) En el borde de subida de T3 , el byte de código de operación que
       está en el bus de datos es pasado al CPU.
    f) Un poquito después RD sube su nivel junto con MREQ y M1.
    g) Los dos ciclos restantes de M 1 son usados para proporcionar
       Refresco a memoria dinámica externa.
    h) La señal RFSH se pone baja y MREQ de nuevo se hace bajo para
       indicar que se puede proceder al refresco de memoria.
    i) Durante los 2 últimos ciclos de M1 del CPU decodifica el código de
       operación de la instrucción.


    Ejemplo :


0100H     LDA                 Ciclo M1 (tomar opcode)

0101H     00                  Ciclo M2 (para leer el dato)
       Cuando la operación de leer es para el 1er byte de una instrucción,
la señal M1 es activada para indicar que el byte debe ser un código de
operación. Para instrucciones con dos bytes de códigos de operación, dos
ciclos M1 serán ejecutados para obtenerlos de la memoria.

CICLOS DE LECTURA DE DATOS EN LA MEMORIA




      Tomando el siguiente ejemplo : LD A,(HL) cargar al acumulador con
el contenido de la memoria direccionada por HL. El CPU ha decodificado la
instrucción e inicia un ciclo de lectura de memoria para obtener de la
memoria el operando de 8 bits.
      El bus de direcciones contiene el contenido de HL ; durante este
tiempo, la memoria externa pasa el operando al bus de datos. En el borde
de T3, el operando de la memoria es pasado al CPU, cargando el registro A.

CICLOS DE ESCRITURA DE DATOS EN LA MEMORIA
      El contenido del registro específico (en este caso el reg A) es pasado
al bus de datos después del borde de la caída de T1. Este dato se mantiene
en el bus de datos y en el borde de caída de T2 la señal WR se hace activa.
Con MREQ y WR activas, la memoria externa escribe el dato que está en el
bus de datos en el lugar de memoria especificado, usando las salidas del
bus de dirección A15-A0
      LD(HL),A
      CICLOS DE LECTURA Y ESCRITURA EN E/S
      Un ciclo de lectura y escritura de E/S ocurre durante una
instrucción de entrada y salida. Las instrucciones de entrada y salida son
de 3 o 4 ciclos de máquina de duración y de 10 a 20 ciclos T (2.5 a 5 s de
largo para un reloj de 4 MHz).
      Las instrucciones más sofisticadas de transferencia de bloques E/S
(INIR, INDR, OTIR, OTDR) para transferir 256 bytes, repite ciclos de
máquina hasta que todos los bytes hayan sido transferidos, resultando en
tiempos de instrucción total que son dependientes del número de bytes
que van a ser transferidos y de la velocidad de los dispositivos de E/S.
       La dirección del dispositivo E/S es colocado en las líneas de A7-A0
del bus de direcciones al inicio del ciclo de máquina y del IORQ es
habilitado después del borde de subida de T2. Si está teniendo lugar una
lectura, la señal RD es habilitada al mismo tiempo que IORQ. El
controlador de dispositivos externos reconoce una lectura por el IORQ y
RD y pasa el dato leído al bus de datos, donde en el borde de caída de T3
es alimentado al CPU.




     Si una escritura está teniendo lugar, la señal WR es habilitada al
mismo tiempo que IORQ. Antes del la escritura, el dato del CPU ha sido
puesto en el registro del CPU (durante T1). Este dato es disponible durante
lo que queda del ciclo de escritura y el controlador del dispositivo externo
de E/S lo pondrá en algún lugar en este periodo.
       Nótese que para ambos ciclos de entrada como de salida, la señal de
WAIT es internamente habilitada después de T2. Esto hace que el CPU
difiera el procesamiento de E/S hasta que la línea WAIT sea desactivada de
nuevo y efectivamente agrega un ciclo de reloj al tiempo de una entrada o
salida.
      Esta condición es implementada para dar al CPU tiempo adicional
para muestrear la línea externa de WAIT para responder a un dispositivo
E/S lento. Estados adicionales de WAIT pueden ser impuestos por el
controlador de dispositivo externo E/S. Tanto tiempo como el controlador
requiera para ejecutar la instrucción E/S. Estos deberán insertarse, para
un número de n CICLOS T, después que el CPU impuso el ciclo de espera.
      CICLO DE SOLICITUD DE BUSES/ACUSE DE RECIBO
       Cuando la señal BUSREQ es habilitada, el CPU detecta la señal
durante el borde de caída del último ciclo T de un ciclo de máquina. El
ciclo T es entonces completada y en el siguiente ciclo T el CPU responde a
la solicitud con la señal de salida BUSACK.




      Al mismo tiempo, el bus de direcciones, el bus de datos y otras
señales son puestas en tercer estado, estado de alta impedancia.
       Ahora cualquier cambio en las líneas de los buses no afectarán al
CPU ni el CPU afectará a las líneas. Cuando el controlador externo ha
completado la transferencia DMA (típicamente 1 byte) , éste desactivará
BUSRQ. Esta condición será detectada por el CPU en el siguiente borde de
subida de un ciclo T y esto hará que se deshabilite BUSAK en el siguiente
ciclo T .Después de esto el CPU continuará entonces procesando a partir
del punto en el cual se le dio el control al dispositivo que solicitó los buses.


      ESTADOS DE ESPERA DE MEMORIA o E/S
      En general, los estados WAIT pueden ser iniciados después de
cualquier solicitud de memoria o E/S. Cuando la memoria externa o E/S
reciben una señal de RD o WR y un IORQ o MREQ, pueden responder con
una entrada WAIT al CPU. El CPU detectará la condición WAIT y difiere su
procesamiento hasta que el controlador de la memoria o E/S haya tenido
tiempo para responder. La memoria externa debe ser capaz de responder
en un poco más de un ciclo T, o 250 nanosegs. Para un reloj de 4MHz
mientras que un E/S tiene aproximadamente 2 ciclos T o sea 500 nseg.
      CICLO DE SOLICITUD DE INTERRUPCIÓN /ACUSE DE RECIBO




       Si el flip flop de habilitar interrupción del CPU ha sido puesto en 1
para permitir interrupciones externas, y si no tiene lugar una acción de
solicitud de buses, el CPU es libre de reconocer interrupciones externas.
Un dispositivo de interrupción habilitando la señal INT. Durante el borde
de subida del último ciclo T del último ciclo de máquina de una
instrucción . El CPU “polls” el estado de la línea INT, y si es baja, inicia el
ciclo de interrupción. Durante T1 del ciclo de interrupción la señal M1 es
habilitada. Son proporcionados T2 y 2 estados de espera WAIT( generados
internamente) para dar tiempo suficiente al circuito externo de
interrupciones en cadena Daisy de responder al conocimiento de la
interrupción y colocar un vector de respuesta o interrupción en el bus de
datos.     La lógica externa de interrupción identifica la señal de
conocimiento del CPU por la combinación de M1 y IORQ. Después de
detectar estas 2 señales, el circuito externo de interrupción responde
colocando el dato apropiado en el bus de datos, el cual es pasado al CPU
durante el borde de subida de T3. Durante T2 las señales M1 y IORQ son
deshabilitadas y la acción de refresco es iniciada.Existen solamente dos
condiciones para las cuales la señal INT será ignorada.
      1-   La señal BUSRQ es activa (0 lógico)
      2-   El flip-flop de habilitación de interrupciones IFF1 no está en 1.
           Si IFF1 está en cero, las interrupciones enmascarables están
      bloqueadas.

								
To top