Sincronismo de Canales Los protocolos de transferencia de información en canales de microprocesadores, se pueden clasificar en tres grupos: 1. Sincrónicos: transferencias sincronizadas, una transferencia por período de reloj. 2. Asincrónicos: transferencias sin reloj de sincronismo. 3. Semisincrónicos: transferencias sincronizadas, una transferencia por uno o mßs períodos de reloj. Un microprocesador posee un canal de datos, uno de direcciones y uno de control. Este último es el encargado de manejar el sincronismo. Para ello dispone de líneas a tal efecto, llamadas de sincronismo o de "handshake". La función de estas líneas es la de indicar el comienzo y el fin de una transferencia de datos o de información. La complejidad de estas líneas depende del tipo de máquina. 1. Canales Sincrónicos Los canales sincrónicos son los más fáciles de implementar ya que la única línea de control es un reloj. El flanco ascendente del reloj indica el comienzo de la transferencia y el descendente el fin de la misma. En este tipo de canales, las transferencias son controladas por el reloj maestro. La principal ventaja de estos es que además de ser los más simples de los tres protocolos, también conducen a las transacciones más rápidas, siempre y cuando la respuesta de los dispositivos sean suficientemente rápidas para operar a la velocidad impuesta por el reloj. Un ejemplo de un microprocesador con estas características de transferencia es el 6800, tal como se muestra en la Fig. C1. Figura C1 2. Canales Asincrónicos El problema más importante de los buses sincrónicos se presenta cuando el procesador debe manejar dispositivos de distintas velocidades de operación, ya que el procesador debería funcionar a la velocidad del dispositivo más lento (en algunos procesadores como el 6800, es posible "estirar" un poco el ancho del pulso del reloj). Lo ideal sería contar con transacciones rápidas para los dispositivos rápidos y lentas para los dispositivos lentos o distantes en el bus. Las señales de control, tal como se muestra en la Fig. C2, se denominan MASTER y SLAVE. Este protocolo requiere un cambio nivel (flanco) para alternar entre las señales de control. Esto garantiza que la información en el canal de datos y direcciones se transmita sin conflictos y sin pérdida o duplicación en el bus. Un ejemplo de este tipo de canal es el del microprocesador LSI-11 de Digital. Figura C2 La principal desventaja de este tipo de canal es el retardo de propagación, que limitan el ancho de banda del canal. 3. Canal Semisincrónico Una solución alternativa intermedia entre velocidad de operación y compatibilidad entre dispositivos de distintas velocidades sería el canal semisincrónico. En este se distinguen dos señales de control: una es el reloj o una señal proporcional al reloj del microprocesador (señales RD o WR), que son enviadas por el master y la otra es la señal WAIT que es enviada por el slave, la cual controla la velocidad de transferencia "estirando" los accesos a los dispositivos. La se±al WAIT se la denomina también XACK ("transfer acknowledge"). El slave direccionado debe proveer al maestro con una señal de reconocimiento en respuesta a un control de la transferencia (comando read o write). Esta línea la emite el slave para indicarle al master que la operación del comando de lectura o escritura fue completada y que la información sobre el canal de datos fue aceptada. Por lo tanto, la línea XACK le permite a la CPU completar el ciclo corriente de canal. Si la línea XACK no es retornada a la CPU, ésta entra en un estado "WAIT" hasta que la misma sea devuelta. En estos sistemas, para evitar los tiempos indefinidos de estados "WAIT", debido a un error de direccionamiento, se debe preveer funciones de "time-out" para finalizar el ciclo de canal, después de un determinado período de tiempo. En el caso en el cual los dispositivos sean lo suficientemente rápidos, el canal se comporta como sincrónico; en cambio si el slave no puede responder en el tiempo de acceso de la CPU, debe generar un tiempo de espera, comportándose en este caso como asincrónico. Un ejemplo de un microprocesador con estas características de transferencia es el 8085, tal como se muestra en la Fig. C3. Figura C3 La ventaja de estos tipos de canales es que pueden tener la velocidad de los sincrónicos y la versatilidad de los asincrónicos. Sin embargo la desventaja sería la máxima longitud del canal, ya que la señal wait debe ser establecida en un período de tiempo fijo. Proceso de Sincronismo Cuando se desea transferir información de un dispositivo a otro (microprocesador memoria o entrada/salida), se deben considerar una serie de operaciones: - Presentar dirección de memoria. - Proceso de sincronismo. - Transferencia de información. En el proceso de sincronismo actúan ciertas líneas del canal de control del microprocesador. Por proceso de sincronismo se entiende el hecho de determinar el momento (tiempo) exacto cuando se produce la transferencia de información y de establecer la dirección de la transferencia de la información (lectura o escritura). Por lo tanto es necesario diferenciar 3 estados: - Lectura. - Escritura. - No acceso al canal (canal ocioso). Esto nos indica que es por lo menos necesario contar con 2 líneas del canal de control para poder diferenciar dichos estados. Existen históricamente 2 escuelas bién diferenciadas para la implementación: La primera sigue las técnicas de los microprocesadores de Intel (8080/8085), que consiste en emplear dos líneas de sincronismo mutuamente excluídas: señal /WR y señal /RD, las cuales indican el instante (temporizado) y la operación de escritura o de lectura respectivamente. La segunda sigue las técnicas de los microprocesadores de Motorola (6800), que consiste en emplear una línea lógica de lectura-escritura (R/W), que indica la dirección de los datos y otra de sincronismo (φ2), indicando el instante de la transferencia. En la figura C4 a,b y en la C5 a,b se muestra la conexión entre los microprocesadores 8085 y 6800 con memorias con /OE y sin /OE respectivamente. Figura C4 a Figura C4 b Figura C5 a Figura C5 b Muy amenudo surgen problemas de sincronización cuando se desean conectar dispositivos periféricos diseñados para un tipo de microprocesador, a otro microprocesador. Por ejemplo si se desea conectar un dispositivo compatible con el microprocesador 6800 a un microrpocesador 8085, surgen problemas en los ciclos de escritura. La línea /WR del mp tiene la polaridad correcta con respecto a la línea R/W del dispositivo, sin embargo como la primera define además el sincronismo de escritura, no podría conectarse directamente a la segunda, debido a que estos dispositivos necesitan un tiempo de establecimiento ("set-up") de la línea R/W antes de la aparición de los datos, Fig. C6. Figura C6 Para lograr la conexión deseada (comparar la Fig. C3 con la Fig. C6), sería necesario generar la línea E como la función lógica Nand de las líneas /RD y /WR y además generar un estado tWAIT desactivando la línea READY del mp 8085.