Está en la página 1de 7

Buses y Perifricos.

99/00 BUS 8086

BUS 8086
A continuacin veremos el bus del 8086 como ejemplo de un bus local. Cualquier dispositivo que se vaya a comunicar con el 8086 debe adaptarse a este bus y cumplir sus requerimientos. El 8086 realiza una transaccin de bus en cuatro periodos de reloj - ciclo de bus- e impone unos criterios temporales sobre las seales que emite y las seales que espera recibir. Los dispositivos que se conecten a este bus han de tener en cuenta estos criterios de respuesta al procesador para que se realice una adecuada comunicacin. En este sentido es un bus sncrono. Si el dispositivo no es capaz de responder en el tiempo esperado por el procesador, tiene a su disposicin una seal, READY, para sealarle que debe esperar, entonces el procesador alarga su ciclo de bus uno o mas periodos de reloj. El 8086 trabaja en dos modos: mnimo y mximo (seal MN/MX#). Referidos a si comparte el bus con otros controladores (coprocesadores) o no. En el modo mnimo es el nico maestro del bus y gobierna directamente a los dispositivos conectados. En el modo mximo pueden existir otros coprocesadores en el sistema. En ese modo el procesador necesita un controlador de bus para ayudarle en la emisin de seales.

Caractersticas. Tipo de bus.


Bus local. Comunica a los dispositivos directamente con el procesador. Por lo tanto los dispositivos conectados a l deben ser tan rpidos como el propio procesador para cumplir sus requerimientos sin obligarle a introducir retardos en sus transacciones. En principio comunicara al procesador con su sistema de memoria y una interfaz al bus del sistema, tambin tiene lgica para aceptar un controlador de DMA y un controlador de interrupciones.

Tipos de lneas.
Las lneas de datos y parte de las lneas de direccin estn multiplexadas. Tambin parte de las lneas de direccin comparten otra funcionalidad (indicar el estado del sistema). Los dos modos de funcionamiento del procesador comparten un conjunto de lneas y divergen en otro conjunto de ellas. Estas ltimas estn multiplexadas para los dos modos. (En un modo tienen una funcionalidad y en otro modo otra).

Temporizacin
Es un bus sncrono ya que los dispositivos deben cumplir unos requerimientos de tiempo dictados por el procesador.

Mtodo de arbitraje.
En ambos modos el procesador es tambin rbitro en el bus. En el modo mnimo un controlador de DMA puede solicitarle el bus mediante la lnea HOLD y el procesador se lo ceder. En el modo mximo existen dos lneas de solicitud/cesin del bus, RQ#/GT#0-1, ordenadas, mediante la cuales el procesador decide a cual de dos solicitantes le cede el bus. En ambos casos el procesador slo cede el bus al final de un ciclo de bus. En el modo mximo el controlador de DMA no solicita directamente la cesin del bus al procesador. En cambio, hay que crear una lgica basada en el estado del procesador (S0,S1,S2, LOCK), que decida si cederle el bus al controlador o no cuando este lo solicita. Esta lgica puede utilizar las entradas RQ#/GT# o, como es el caso del PC, una independiente.

Buses y Perifricos. 99/00 BUS 8086

Tipos de transacciones
Genera tres tipos de transacciones bsicas, lectura, escritura, y reconocimiento de interrupcin. La combinacin de las seales RD#, WR#, IO#/M indica cundo se trata de una lectura, cundo una escritura y en qu casos es a memoria y en cuales a un dispositivo de entrada/salida. La seal INTA# indica un reconocimiento de interrupcin. Una cuarta situacin se produce cuando el procesador ejecuta una instruccin HALT, destinada a detener la ejecucin. Por ltimo, en el modo mximo, las seales de estado distinguen un tercer tipo acceso a memoria que es la lectura de instruccin, que genera en el controlador de bus la misma seal que una lectura de datos.

Lneas del procesador Comunes en ambos modos.


AD[0:15]: Lneas multiplexadas de datos y direcciones A[16:19]/S[3:6]: Lneas multiplexadas de direcciones y estado. La lneas de estado mantienen informacin sobre la transaccin durante la fase de datos. S4,S3: A qu segmento se est accediendo 00: Extra 01:Stack 10:Cdigo o ningn acceso 11: Datos S5: Estado de las interrupciones: habilitadas, inhabilitadas. S6:0 ALE: (Address latch enable)En el modo mnimo. Indica si la informacin en el bus de datos son datos o direcciones. La pone a nivel alto poco antes de enviar las direcciones y cambia su estado antes de retirarlas del bus. Esta seal sirve para activar un latch que cargue las direcciones para mantenerlas activas durante la transaccin. BHE#:(Bus High Enable) Se activa cuando el bus de direcciones contiene la direccin de acceso para cargar/escribir el byte ms significativo del bus de datos. (La lnea A0 identifica lo mismo par el byte menos significativo.) Para entender esto hay que advertir que el procesador puede invocar un acceso a memoria de 16 bits (lectura o escritura) pero que en el sistema de memoria esto se traduce tcnicamente en dos accesos, uno al byte inferior y otro al byte superior. En accesos a palabra alineados estos se puede efectuar simultneamente, pero en accesos a palabra no alineados el procesador debe realizar la transaccin en dos fases. NMI:(Nonmaskable interrupt): Interrupcin no enmascarable. Se activa por flanco de subida. INTR: (Interrupt Request): Peticin de interrupcin. CLOCK: Reloj

Buses y Perifricos. 99/00 BUS 8086 RESET: Obliga al procesador a detener toda actividad y reiniciar su estado. Tras su ocurrencia los registros del procesador quedan de la siguiente manera: CS:FFFFH DS:0000H SS:0000H ES:0000H IP:0000H Flags: 0 TEST: Seal de entrada procedente del coprocesador 8087. Mantiene al procesador detenido en la instruccin WAIT.

Modo mximo.
Estas lneas solo existen en modo mximo. En el modo mximo, algunas de las seales de control del bus son generadas por el controlador del bus (8288) y otras lneas aportan nuevas funciones disponibles slo en este modo. QS0-1: (Queue status): Son de salida y proporcionan informacin sobre el estado de la cola de instrucciones del procesador.

S#0-2: Seales de estado destinadas al controlador del bus. Indican el tipo de transaccin a realizar. S0#,S1#,S0# 000: Reconocimiento de interrupcin 001: Lectura de E/S 010:Escritura a E/S 011: Halt 100:Acceso a instruccin 101:Lectura de memoria 110:Escritura a memoria 111: Pasivo LOCK#: Impide que otro dispositivo acceda al bus mientras la seal est activa. Un prefijo en una instruccin activar esta seal. RQ#/GT#0-1:Permiten a otro maestro solicitar y obtener el bus

Buses y Perifricos. 99/00 BUS 8086

Lneas en modo mnimo:


Permiten al procesador controlar directamente las seales del bus: INTA# (Interrupt acknowledge) Reconocimiento de interrupcin ALE: (Address latch enable) Se activa indicando que hay direcciones vlidas en el bus de datos/direcciones. DEN#: (Data enable) Indica el cambio del bus de direcciones/datos fase de datos. DT/R#:(Data transmit/receive): Seala la direccin en que se movern los datos en el bus de datos (servir para activar los buffers bidireccionales) IO#/M: (Input/output or memory transaction) Indica si la transaccin es a memoria o a Entrada/Salida. WR#: (Write) Su activacin indica que el dato en el bus se va a escribir en destino. HLDA: (Hold acknowledge) Es una respuesta ante una peticin HOLD, generalmente destinada a un controlador DMA. HOLD: Solicitud de control del bus por parte de un controlador DMA.

Como complemento a las seales del 8086, es interesante ver el controlador 8288, imprescindible en modo mximo:

Seales de entrada:
S#0-2:(Seales de estado) Indican el comando que desea realizar el 8086. CLK: Proviene del mismo generador de reloj que alimenta al 8086 y permite sincronizar las seales entre ambos dispositivos. AEN#:(Addres enable) Provoca que el 8288 genere las seales de transaccin. Esta seal inhabilitada aisla al procesador del bus en casos de cesin del bus al controlador DMA por ejemplo. CEN: (Command enable)Se usa para habilitar las seales de transaccin y la DEN. IOB: (Input/output bus mode) Indica con qu bus trabaja el controlador, input/output bus o system bus.

Seales de salida:
MRDC#: (Comando de lectura de memoria). Activa el dispositivo para obtener un dato MWTC#: (Comando de escritura en memoria) AMWC#: (Comando de escritura avanzada) Indican al dispositivo que grabe el dato que est en el bus. AMWC se activa ligeramente antes para proporcionar tiempo extra a los dispositivos ms lentos. IORC#: (Comando de lectura de entrada/salida) Indica al dispositivo que deposite el dato en el bus. IOWC#: (Comando de escritura en entrada/salida)

Buses y Perifricos. 99/00 BUS 8086 AIOWC#: (Comando de escritura avanzada). Indican al dispositivo que grabe el dato que est en el bus. AIOWC se activa ligeramente antes para proporcionar tiempo extra a los dispositivos ms lentos. INTA#: (Interrupt acknowledge) Informa al dispositivo que gener la interrupcin que el procesador espera que deposite el vector de interrupcin en el bus. DT/R#: (Data transmit/receive) Usada para controlar la direccin de los datos en un latch bidireccional. A nivel bajo los datos fluyen hacia la CPU y a nivel alto proceden de ella. DEN: (Data enable). Indica que los datos estn activos en el bus. MCE/PDEN: (Master cascade enable/peripheral data enable) Usado en conjuncin con el controlador de interrupciones en configuracin de maestro de bus. ALE: (Address latch enable) Se utiliza para disparar los latches que almacenan la direccin antes de que el bus pase a transportar datos.

Ciclos de lectura y escritura.


Como comentamos antes, el procesador impone unos criterios de tiempo a los que deben adaptarse los dispositivos que se conectan al bus. Tambin impone que algunas seales estn sincronizadas con el reloj del procesador, lo que obligar a algunos dispositivos no regidosp or una seal de reloj a utilizar sincronizadores intermedios. (stos reciben una seal de entrada y esperan al siguiente flanco del reloj para activar la salida. Cuando la entrada deja de estar activa, igualmente esperan al siguiente flanco del reloj para desactivarla).

Lectura. Restricciones de tiempo que impone el procesador.


Un ciclo de bus tiene cuatro perodos de reloj del procesador. Durante el primer perodo se disponen las direcciones, y se activan las seales para almacenarlas en los latches etc. En el segundo perodo se activan las seales de control de los dispositivos (escritura o lectura etc.) y se produce el cambio de bus direcciones/datos. En el tercer perodo ya se disponen de los datos o por el contrario se detecta una activacin de READY y hay que esperar introduciendo ciclos de espera. El cuarto perodo es el de desactivacin de las seales, limpieza del bus de datos etc. El perodo del reloj comienza con un flanco de bajada. Cuando en algunas medidas se habla del tiempo transcurrido desde el flanco de bajada del reloj, se est refiriendo al comienzo del perodo pertinente dentro del ciclo de bus.

TAVDV: Tiempo transcurrido desde que el procesador activa las direcciones y el momento en que espera obtener los datos. De cara al dispositivo este tiempo puede distribuirse entre retardos a travs de los latches y buffers hasta alcanzar el dispositivo de memoria, tiempo de acceso a los datos dentro del dispositivo y retardo de los datos a travs de buffers hasta alcanzar el procesador. Este conjunto de retardos debe estar restringido al periodo previsto por el procesador, en caso contrario la transaccin podra resultar errnea. El dispositivo puede introducir perodos de espera que alargaran indefinidamente esta restriccin (utilizando la seal READY) TCLAV: Este es el tiempo en el cual estarn disponibles las direcciones en el bus desde el flanco de bajada del reloj en el primer ciclo de los cuatro que dura una transaccin. 5

Buses y Perifricos. 99/00 BUS 8086 TDVCL: Tiempo que requiere el procesador que los datos ledos estn disponibles en el bus antes de que se produzca el siguiente flanco de bajada del reloj. TCLCL: Periodo de reloj. Proporciona un periodo mnimo que debe respetarse. TRLDV: Tiempo que debe transcurrir desde que se activa la seal de lectura MEMR o IOR hasta que se disponen de los datos en el bus. TCLML: Tiempo que tardar el procesador en activar las lneas de lectura desde el comienzo del ciclo.

Escritura. Restricciones de tiempo que impone el procesador.


TDVWH: Tiempo que deben permanecer estables los datos desde que se activa la seal de escritura. Setup time. TWHDX: Tiempo que deben mantenerse los datos en el bus despus de desactivada la seal de escritura. Hold time. TCLMH: Tiempo transcurrido desde el comienzo del periodo hasta que se desactiva la seal de escritura. TCHDX: El tiempo que transcurre desde que, ledos ya los datos, t4, se produce un flanco de subida del reloj y desaparecen los datos del bus. TCLCH: Duracin de la fase inactiva del reloj.

Esquemas adjuntos. Notas Temporizacin del acceso lectura y escritura, Modo mnimo: ALE: Notar cmo esta seal baja en el instante en que las lneas de direccin estn ms estables. Es el momento de cargarlas en un latch (del cual la seal ALE har de disparador) que las mantendr disponibles durante toda la transaccin. Observar que en el segundo perodo del ciclo, el procesador deja de emitir las direcciones, por lo que debern estar salvadas adecuadamente. M/IO#: Esta seal contribuye a la seleccin del dispositivo de destino. Por ello se activa al comienzo del ciclo y no se desactiva hasta el final. RD#: La seal de lectura se utiliza como disparador de lectura. De ah que no se active hasta el segundo perodo, cuando el dispositivo ha sido seleccionado y las direcciones ya llevan cierto tiempo estimulando al dispositivo. DT/R, DEN: Estas seales gobiernan buffers y latches. Observar las diferencias en relacin con el timming de escritura. Temporizacin del acceso lectura y escritura. Modo mximo. El conjunto de seales de control que vemos es el que comunica al procesador con el controlador del bus. La carencia de informacin en los esquemas de modo mximo se debe a que toda la informacin est en las lneas de estado. No se ver las lneas que genera el controlador del bus hacia el dispositivo. No obstante observar que en la lectura el procesador sigue gobernando la seal RD#

Buses y Perifricos. 99/00 BUS 8086 Generacin de un perodo de espera. WAIT STATE. Observar la relacin entre la entrada generada por el dispositivo, RDY, y la que realmente llega al procesador, ya sincronizada con el flanco de subida del reloj, READY. Los perodos de espera se introducen entre el T3 y el T4, y durarn todo el tiempo que la seal READY se mantenga activa.

Cesin del bus. HOLD STATE (Modo Mnimo) La seal HOLD es muestreada por el procesador en una transicin de subida del reloj. HOLD no necesita entrar sincronizadamente con el reloj. Se exige que en el momento del muestreo ya la seal se mantenga estable. Si el procesador est en un periodo inactivo Ti o al final de un ciclo de bus, T4, generar en el siguiente flanco de subida la seal HLDA indicando la cesin del bus. Esta seal se mantendr mientras se detecte activa la seal HOLD.

Cesin del bus. (Modo Mximo) En modo mximo existen dos lneas bidireccionales para solicitar el bus. El procesador muestrea estas seales en flanco de subida. Detectada la activacin de una de estas lneas el procesador espera a finalizar el actual ciclo de bus y cede el bus activando la misma lnea en un flanco de bajada de reloj (comienzo del siguiente perodo de reloj) durante un perodo. A partir de entonces el bus queda cedido. El procesador no generar ms ciclos de bus hasta que este no le sea devuelto por el dispositivo mediante una nueva activacin de la misma lnea. En el caso de que dos dispositivo generasen la solicitud, aquel que la solicit por RQ#/GT#0 es el que obtiene el bus.

Bibliografa: The 8086 IBM PC and Compatible Computers (VolII) Design and Interfacing of the IBM PC, PS, and compatibles. Second Edition Muhammad Ali Mazidi, Janice Gillispie Mazidi Prentice Hall, 1993