Exponsor

CURSO TÉCNICO INSTALADOR DE ENERGÍA SOLAR TÉRMICA

Visita el siguiente enlace: http://enersolartermica.blogspot.com.es/ ¡No pierdas esta magnifica oportunidad de poder formarte en esta profesión con gran demanda de empleo! Ahora por oferta de lanzamiento y por tiempo limitado puedes adquirir este curso por solo 9,95€, cuando su valor de mercado es de 49€.

miércoles, 22 de abril de 2009

LAS COMUNICACIONES ASÍNCRONAS ( II )

Una derivación del método Manchester es el esquema Manchester diferencial (differential Manchester), en el cual si un "1" es representado por una transición, entonces el "0" es representado por dos transiciones, y viceversa. En el siguiente diagrama tenemos tres palabras binarias distintas, la palabra "000", la palabra "101" y la palabra "011", codificadas bajo el esquema "Manchester diferencial":



Otro esquema es el esquema de Regreso a Cero (Return to Zero ó RZ) en el cual cada vez que aparece un "1" se eleva la señal de un nivel de voltaje bajo a un nivel de voltaje alto, tras lo cual la señal es regresada a su nivel de voltaje bajo:



Existen también otros métodos tales como NRZ-M (Non Return to Zero Mark) en el cual la polaridad de la señal cambia cuando lo que va a ser enviado es "1" y en el cual no hay cambio alguno en la polaridad de la señal cuando lo que va a ser enviado es un "0"; y NRZ-S (Non Return to Zero Space) que trabaja igual que NRZ-M excepto que la polaridad de la señal cambia cuando lo que va a ser enviado es un "0", no habiendo cambio alguno cuando lo que va a ser enviado es un "1". A continuación se presentan los diagramas de tiempo mostrando la palabra binaria enviada "101100101" en los formatos NRZ-L, NRZ-M y NRZ-S:



Así pues, con la selección de un formato de codificación de los datos binarios como el código Manchester, es posible transmitir en forma simultánea una serie de datos binarios así como los pulsos de "reloj" que permitan establecer una sincronización entre el transmisor y el receptor.

La segunda respuesta al dilema de transmitir tanto los datos digitales como la señal sincronizadora radica en uno de los muchos trucos que hay en el costal del ingeniero electrónico. Consiste en "romper" la transmisión de la señal digital que será enviada, subdividiéndola en "paquetes" iguales formados cada uno de ellos una cantidad de algo así como ocho bits (un byte), y al enviar la señal digital -bit por bit- a lo largo de la línea injertamos entre cada "paquete" una serie de pulsos sincronizadores de alta precisión de la manera como se muestra en la siguiente figura:


Como puede verse en este diagrama de tiempos, al inicio de las comunicaciones el transmisor envía cuatro pulsos "sincronizadores" de reloj al receptor para permitirle al receptor poder sincronizar su propio reloj con el reloj del transmisor, los cuales son seguidos del primer dato byte que será enviado, la palabra 00110100, tras lo cual el receptor envía nuevamente otros cuatro pulsos "sincronizadores" para permitirle al receptor volver a sincronizar nuevamente su propio reloj con el reloj del transmisor para compensar por cualquier diferencia pequeña que se haya ido acumulando debido a la imposibilidad física de poder construír dos relojes distintos con calibraciones idénticas. Esencialmente, desde el lado del "transmisor", lo que se está haciendo es convertir la información paralela que está siendo enviada por el microprocesador a información serial que puede ser enviada bit-por-bit a través de un solo canal de intercomunicación:



con pulsos sincronizadores de alta precisión añadidos entre cada "paquete". Se sobreentiende que, del lado del "receptor", habrá electrónica lo suficientemente precisa como para poder extraer del torrente digital que le está llegando las señales de reloj con las cuales se irá "sincronizando" con el reloj del "transmisor" con el fin de poder ir reconstruyendo los datos digitales que le están llegando en "paquetes". Tanto el transmisor como el receptor cuentan con relojes de alta precisión ajustados a la misma frecuencia. Al llegar la señal digital al receptor, lo primero que hace es "sincronizar" su reloj de alta precisión usando para ello la serie de pulsos sincronizadores que está recibiendo al inicio del mensaje. Hecho esto, una vez sincronizados los relojes de ambos, se envía la señal digital en el sobreentendido de que los unos y los ceros estarán subdivididos en el tiempo de acuerdo a lo que marcan los relojes sincronizados. En virtud de que no se está enviando una "señal de reloj" de manera independiente sino que se está incorporando dentro de la misma señal, a este modo de comunicaciones se les conoce como comunicaciones asíncronas.

De hecho, cuando una computadora se está conectando a Internet a través de la línea telefónica o a través de cualquier otro medio, ya sea cable, señal satelital, o cualquier otra cosa que se llegue a inventar en el futuro, después de marcar la línea telefónica la computadora lo que hace es enviar una serie de pulsos preliminares con los cuales trata de que el servidor Web del otro lado se "sincronice" con su señal. Si el receptor no "entiende" el mensaje sincronizador, entonces va ajustando su propia velocidad de diálogo -su propio "reloj interno"- hacia arriba o hacia abajo según se requiera hasta que pueda empezar a sacar sentido alguno del mensaje que está recibiendo. Esta transacción se lleva a cabo a alta velocidad hasta que ambos llegan a un "acuerdo" y se fija una velocidad de transmisión común en ambas vías. Como ya se dijo, es necesario estar enviando los pulsos sincronizadores entre cada "paquete" de información debido a que dos relojes diferentes, por precisos que sean, eventualmente se comenzarán a desfasar, porque siempre uno de ellos será un poquito más lento o más rápido que el otro, aunque sea por una diezmillonésima de segundo, y cuando se están enviando muchos datos digitales a alta velocidad, cualquier desfase se puede acumular rápidamente arruinando la recepción de la señal.

Puesto que el primer gran problema a resolver cuando hicieron su aparición las computadoras de escritorio fue el tratar de intercambiar información a través de la línea telefónica, algo indispensable para la creación de Internet, para poder llevar a cabo las primeras comunicaciones asíncronas a través de los primeros modems se diseñó un circuito integrado que al igual que el microprocesador ha ido evolucionando con el paso del tiempo hasta convertirse por cuenta propia en algo tan complejo como los primeros microprocesadores: el UART (acrónimo del inglés Universal Asynchronous Receiver Transmitter, que significa "Receptor Transmisor Asíncrono Universal).

Con el UART, dos microcomputadoras situadas en puntos remotos que tengan necesidad de comunicarse entre sí lo harán bajo la siguiente configuración:





Como puede verse en el anterior diagrama, el proceso de intercomunicación entre dos microcomputadoras (que en su nivel más básico es en realidad un proceso de intercomunicación entre dos microprocesadores) requiere de dos UARTs, uno instalado cerca de cada máquina.Cuando compramos en la tienda una tarjeta de modem para darle capacidad de intercomunicación Internet por la línea telefónica a una computadora que aún no tiene dicha capacidad, en realidad lo que estamos comprando es un sofisticado UART montado en una tarjeta de circuito impreso, junto con el programa de software driver que le permite a la computadora reconocer al modem durante el proceso de instalación.

Así como los microprocesadores Intel 8086 y Motorola 6800 marcaron la pauta a seguir para los diseños de los microprocesadores utilizados en las computadoras actuales, del mismo modo también hubo dos "grandes abuelos" que han marcado la pauta de los estándares a seguir en comunicaciones seriales asíncronas: el UART 16450 (también conocido como el circuito integrado 8250) y el UART 16550, ambos circuitos integrados de 40 pins. A continuación se muestra la relación de pins para los dos:





El empaque mostrado en ambos diseños es el tipo de encapsulamiento conocido como DIP (Dual In-line Package). El UART 16550 también se puede obtener comercialmente en un empaque "cuadrado" de 44 pins (11 pins colocados a cada lado del cuadrado):



Es común ver instalado en casi todas las computadoras de antaño en muchas tarjetas de modem un UART que está implementando para su comunicación con el mundo exterior un protocolo de comunicaciones seriales conocido como el estándard RS-232:



En este último dibujo tenemos el diseño esencial de una computadora personal (PC) de escritorio cuyo componente central es, naturalmente, un microprocesador (µP) con sus memorias RAM y ROM. La línea roja gruesa que podemos apreciar en el dibujo es esencialmente el bus de datos por medio del cual se pueden sacar datos tanto de la memoria RAM como de la memoria ROM para ser canalizados hacia afuera a través del UART, bajo la coordinación externa de otro componente esencial para que la acción del UART se pueda sincronizar con las labores llevadas a cabo por el microprocesador: el Controlador Programable de Interrupciones (simbolizado en la literatura como PIC, acrónimo del inglés Programmable Interrupt Controller).

Un Controlador Programable de Interrupciones PIC es casi una necesidad cuando se están implementando no sólo comunicaciones seriales con el mundo exterior a través de un modem sino inclusive cuando la computadora simplemente está recibiendo información serial de componentes que le son periféricos a la misma tales como el teclado. Cuando oprimimos una tecla en el teclado, esencialmente le estamos enviando al microprocesador una señal de requisición de interrupción (denotada como IRQ, acrónimo de la expresión inglesa Interrupt Request) diciéndole "necesito que detengas momentáneamente lo que estás haciendo, porque te estoy enviando un dato que necesito que proceses de manera inmediata). Si hubiera un solo componente enviándole señales de interrupción al microprocesador, la tarea sería relativamente fácil y el mismo microprocesador podría atender estas peticiones sin perder mucho tiempo en procesarlas. Pero cuando hay varios componentes tales como un teclado, un módem, una impresora serial, etc., todos ellos enviándole señales de interrupción al microprocesador, el microprocesador por potente que sea puede terminar muy atareado atendiendo estas requisiciones, distrayéndose de sus labores principales de procesamiento de información. Es por ello que, con el fin de aligerar la carga de trabajo del microprocesador, se desarrolló el Controlador Programable de Interrupciones, el cual se encarga de darles su prioridad respectiva a cada una de las interrupciones que se están efectuando en el entorno del microprocesador. Como un ejemplo de un Controlador Programable de Interrupciones, podemos citar el circuito integrado 8259 diseñado y comercializado originalmente por Intel, cuya relación de pins es la siguiente:




Este componente también es un circuito integrado sofisticado por dentro, como podemos verlo en el diagrama esquemático de su lógica interna:



Esencialmente, el Controlador Programable de Interrupciones proporciona una interfaz entre el microprocesador y otros componentes periféricos que requieran la atención del microprocesador, entre ellos el UART. A continuación tenemos un bosquejo de cómo la señal de interrupción enviada por un UART 16550 es canalizada a través del Controlador Programable de Interrupciones 8259 hacia un microprocesador 80x86:





El lector atento se habrá dado cuenta de que el anterior esquema puede manejar hasta 16 requisiciones de interrupción, desde la IRQ0 hasta la IRQ15, provenientes de hasta 16 unidades periféricas, siendo que la relación de pins dada para el PIC 8259 únicamente tiene capacidad para poder manejar hasta ocho requisiciones de interrupción, desde la IRQ0 hasta la IRQ7 (desde el pin 18 hasta el pin 25 en el circuito integrado mostrado más arriba). Y se habrá preguntado ya, ¿de dónde viene esta capacidad extra para manejar requisiciónes de interrupción? La respuesta a esto es sencilla: por diseño, se pueden conectar dos PICs en una configuración Maestro-Esclavo que permite ampliar la capacidad en el manejo de señales de interrupción. A continuación se muestra la manera en la cual se debe llevar a cabo esta inteconexión entre dos PICs:





Ahora puede ver claramente el lector cuál es el verdadero propósito de los pins 12, 13 y 15 (CAS0, CAS1 y CAS2) en el dibujo de la relación de pins del PIC 8259. Son pins para inteconexión en cascada para aumentar la capacidad en el manejo de señales de requisición de interrupción.

A continuación se muestra un diseño más completo en donde se han interconectado en una tarjeta de circuito impreso dos PICs 8259 para aumentar la capacidad de procesamiento de requisiciones de interrupción (como de costumbre, las líneas D0-D7 representan las líneas del bus de datos, para el manejo paralelo de información de los ocho bits de un byte, mientras que las líneas A0-A15 representan las líneas del bus de domicilios):




LAS COMUNICACIONES ASÍNCRONAS ( I )

Sin lugar a dudas, la comunicación paralela en la cual se pueden enviar simultáneamente varios dígitos binarios (bits) a la vez a través de varios alambres independientes es la que ofrece la mayor rapidez posible. Esto es precisamente lo que se hace al interior de una microcomputadora, en donde a través de un bus formado por ocho o más líneas independientes podemos enviar información en forma paralela. Sin embargo, hay ocasiones en las que esto no se puede llevar a cabo. Frecuentemente queremos enviar hacia el exterior información digital pero no contamos con el lujo de varias líneas independientes que nos permitan enviar simultáneamente dígitos binarios diferentes que representen distintos valores. Un ejemplo de ello es la línea telefónica, en donde no contamos ni siquiera con un grupo de cuatro cables que nos permitan enviar a través de la línea telefónica cuatro bits a la vez. Otro ejemplo de ello es la comunicación satelital, en donde al enviar o recibir algo de un satélite lo logramos mediante una señal electromagnética de alta frecuencia. En tales casos, nos vemos forzados a llevar a cabo la comunicación en forma serial en donde en vez de enviar varios bits a la vez tenemos que enviar de uno en uno. En principio, esto requiere del envío simultáneo de una señal de reloj que le permita al receptor saber cómo distinguir entre un bit y el siguiente. A manera de ejemplo, considérese la siguiente señal digital de 16 bits:

0011010010101110

Suponiendo que la señal sea enviada siguiendo un orden de izquierda a derecha, entonces se enviará primero un "0", tras lo cual se enviará otro "0", tras lo cual se enviará un "1" y después el "1" que le sigue, seguido de un "0", y así sucesivamente. Desde el punto de vista de presencia y ausencia de voltajes en la línea para denotar los "unos" y los "ceros", conforme avanza el tiempo esta señal mostrará el siguiente aspecto:


Si en este diagrama de tiempos borramos los "unos" y los "ceros" que están puestos encima de la señal digital, de cualquier forma podemos recuperar la información escribiéndola de nuevo gracias a los pulsos sincronizados de la "señal de reloj". Obsérvese que el envío de una "señal de reloj" es un complemento indispensable en la transmisión serial de una señal digital. Sin esta señal de reloj, el receptor no tiene forma alguna de saber cuándo y en dónde empieza un "cero" y termina un "uno" o viceversa, como tampoco tiene forma alguna de saber cuál es la duración de cada intervalo de tiempo que subdivide a los "bits" que están siendo enviados. Aunque a primera vista pudiera creerse que la subdivisión del tiempo puede ser extraída por el receptor del intervalo de tiempo más corto detectado en una señal entre un "uno" y un "cero", esto no ofrece garantía alguna. En efecto, si enviamos las siguientes señales digitales de 16 bits, una tras otra:

1111111111111111

0000000000000000

1111111100000000

0000000011111111

y el receptor se basa únicamente en la duración del intervalo más corto, que correspondería a la secuencia "11111111", erróneamente podría concluír que se le ha enviado una señal compuesta de tan sólo 8 bits, la señal "11001001", cuando en realidad se le ha enviado una señal de 64 bits. El problema que tenemos para decodificar la señal basada en los tiempos de transmisión es el mismo que el que tenían los telegrafistas de antaño para comunicarse a través de sus primitivos aparatos mediante el "código Morse". (Generalmente, los telegrafistas trataban de mantener cierto "tiempo" razonable entre la transmisión de cada letra, un "tiempo razonable" que pudiera ser leído "razonablemente" por ambos, y aún así era necesario que el receptor después de haber recibido el mensaje telegráfico retransmitiera el mensaje al que lo envió para ver si no se había cometido error alguno. El problema que tenemos aquí es que en la transmisión de datos digitales estamos transmitiendo no el equivalente de una letra del alfabeto cada dos segundos, sino el equivalente de miles de bits de información a velocidad electrónica con la cual ningún humano se podría dar abasto.)

Queda pues fuera de toda discusión la necesidad de tener que enviar una "señal de reloj" junto con la señal digital para que el receptor pueda recuperar íntegramente el mensaje. El problema estriba en que en muchas ocasiones no tenemos ni siquiera el lujo de contar con un cable extra que nos permita enviar dicha "señal de reloj". El cable telefónico consta en esencia de tan sólo dos alambres, de tan sólo dos líneas, un cable es usado para enviar la señal de corriente eléctrica, y el otro cable es utilizado como "tierra eléctrica" para recibir la corriente de retorno. No existe un tercer cable a través del cual podamos enviar una señal de reloj.

¿Entonces cómo es posible que una computadora pueda enviar y recibir una señal de Internet a través de la línea telefónica?

Hay dos respuestas a este dilema.

La primera respuesta tiene que ver directamente con la selección del formato con el cual están codificados los datos binarios, lo cual requiere tratar un tema que habíamos dejado pendiente hasta ahora.

Empezaremos hablando acerca de algunos tipos de formatos usados para la codificación de datos digitales en preparación para su transmisión a través de un canal de comunicaciones. Un esquema que es la representación más sencilla de todas es el método No Regreso al Nivel Cero (Non Return to Zero Level ó NRZ-L) en el cual el "0" es representado como ningún voltaje (o mejor dicho, cero voltaje) y el "1" es representado por un nivel alto de voltaje. Esta es una representación a la que ya deberíamos de estar acostumbrados, puesto que es precisamente la representación con la cual hemos construído casi todos los diagramas de tiempo mostrados en este libro desde el principio, es el mismo formato que se ha estado utilizando en la construcción de todo los diagramas de tiempo relacionados con el comportamiento de los circuitos digitales combinatorios y secuenciales.

Otra variante es el método NRZ-I (Non Return to Zero Inverted) en la cual solo ocurre una transición cuando aparece un "1" (un "0" no produce ningún cambio). La ventaja de este método es que es más fácil para los circuitos eléctricos detectar un cambio de voltaje que estar midiendo niveles absolutos de voltajes. Este método es el utilizado en las comunicaciones que se llevan a cabo en los puertos USB de las computadoras caseras. La desventaja de este método es que no hay cambio alguno cuando hay una secuencia formada por puros "ceros" además de que no lleva consigo ninguna información que permita al receptor sincronizar su propio "reloj" con el "reloj" con que fue construído el dato recibido. Para superar esta deficiencia, en 1949 hizo su aparición el esquema de codificación Manchester, utilizado ampliamente en las redes de computadoras conectadas bajo la convención Ethernet, en el cual se utiliza una transición de un voltaje bajo a un voltaje alto a la mitad del bit para representar un "1" y una transición de un voltaje alto a un voltaje bajo a la mitad del bit para representar un "0". Para lograr una codificación Manchester, la señal NRZ-L es sometida junto con la señal de "reloj" a una operación de OR-EXCLUSIVO, lo cual transforma a una señal codificada como NRZ-L en una señal Manchester. La ventaja del método Manchester es que envía al mismo tiempo el dato y la información sincronizadora de los pulsos del reloj con los cuales se construyó la palabra binaria, ya que tiene una transición para cada ciclo sin importar que la palabra binaria esté formada por una larga secuencia de "unos" y "ceros". La enorme desventaja es que al recurrir a transiciones a la mitad de cada bit,el ancho de banda requerido para la transmisión de la señal se duplica, de modo tal que una señal codificada en formato NRZ-L que pueda ser enviada en un ancho de banda de 200 Megahertz requerirá un ancho de banda de 400 Megahertz para poder ser enviada. A continuación se muestran los tres esquemas NRZ-L, Manchester y NRZ-I: