El UART
El controlador Universal Asynchronous Receiver / Transmitter (UART) es el componente clave del subsistema de comunicaciones en serie de una computadora. El UART toma bytes de datos y transmite los bits individuales de forma secuencial. En el destino, un segundo UART vuelve a ensamblar los bits en bytes completos.
La transmisión en serie se usa comúnmente con módems y para la comunicación no en red entre computadoras, terminales y otros dispositivos.
Hay dos formas principales de transmisión en serie: Sincrónica y Asincrónica. Según los modos admitidos por el hardware,
Algunos acrónimos comunes son:
Receptor / transmisor asíncrono universal UART
Receptor / transmisor universal síncrono-asíncrono USART
Transmisión en serie sincrónica
La transmisión en serie síncrona requiere que el emisor y el receptor compartan un reloj entre ellos, o que el emisor proporcione una luz estroboscópica u otra señal de temporización para que el receptor sepa cuándo “leer” el siguiente bit de datos. En la mayoría de las formas de comunicación síncrona en serie, si no hay datos disponibles para transmitir en un instante dado, se debe enviar un carácter de relleno para que los datos siempre se transmitan. La comunicación sincrónica suele ser más eficiente porque solo se transmiten bits de datos entre el emisor y el receptor, y la comunicación sincrónica puede ser más costosa si se requieren cables y circuitos adicionales para compartir una señal de reloj entre el emisor y el receptor.
Una forma de transmisión síncrona se usa con impresoras y dispositivos de disco fijo en que los datos se envían en un conjunto de cables mientras que un reloj o luz estroboscópica se envía en un cable diferente. Las impresoras y los dispositivos de disco fijo no suelen ser dispositivos seriales porque la mayoría de los estándares de interfaz de disco fijo envían una palabra completa de datos para cada reloj o señal estroboscópica utilizando un cable separado para cada bit de la palabra. En la industria de la PC, estos se conocen como dispositivos paralelos.
El hardware de comunicaciones en serie estándar en la PC no admite operaciones sincrónicas. Este modo se describe aquí solo con fines de comparación.
Transmisión asíncrona en serie
La transmisión asincrónica permite que los datos se transmitan sin que el emisor tenga que enviar una señal de reloj al receptor. En cambio, el emisor y el receptor deben acordar los parámetros de tiempo de antemano y se agregan bits especiales a cada palabra que se utilizan para sincronizar las unidades de envío y recepción.
Cuando se le da una palabra al UART para transmisiones asincrónicas, se agrega un bit llamado “Bit de inicio” al comienzo de cada palabra que se va a transmitir. El bit de inicio se utiliza para alertar al receptor de que se está enviando una palabra de datos y para forzar la sincronización del reloj en el receptor con el reloj en el transmisor. Estos dos relojes deben ser lo suficientemente precisos para no tener la deriva de frecuencia en más del 10% durante la transmisión de los bits restantes en la palabra. (Este requisito se estableció en los días de las teleimpresoras mecánicas y se cumple fácilmente con equipos electrónicos modernos).
Después del bit de inicio, se envían los bits individuales de la palabra de datos, y se envía primero el bit menos significativo (LSB). Cada bit en la transmisión se transmite durante exactamente la misma cantidad de tiempo que todos los demás bits, y el receptor “mira” el cable aproximadamente a la mitad del período asignado a cada bit para determinar si el bit es un 1
o un 0
. Por ejemplo, si tarda dos segundos en enviar cada bit, el receptor examinará la señal para determinar si es 1
o 0
después de que haya pasado un segundo, luego esperará dos segundos y luego examinará el valor del siguiente bit , y así.
El remitente no sabe cuándo el receptor ha “mirado” el valor del bit. El remitente solo sabe cuándo el reloj dice que comience a transmitir el siguiente bit de la palabra.
Cuando se ha enviado la palabra de datos completa, el transmisor puede agregar un bit de paridad que genera el transmisor. El receptor puede usar el bit de paridad para realizar una simple verificación de errores. Luego, al menos un bit de parada es enviado por el transmisor.
Cuando el receptor ha recibido todos los bits en la palabra de datos, puede verificar los bits de paridad (tanto el emisor como el receptor deben acordar si se utilizará un bit de paridad), y luego el receptor busca un bit de parada. Si el bit de detención no aparece cuando se supone que debe hacerlo, el UART considera que la palabra completa está confusa e informará un error de trama al procesador host cuando se lea la palabra de datos. La causa habitual de un error de trama es que los relojes del emisor y el receptor no funcionaban a la misma velocidad, o que la señal se interrumpió.
Independientemente de si los datos se recibieron correctamente o no, el UART descarta automáticamente los bits de inicio, paridad y parada. Si el emisor y el receptor están configurados de manera idéntica, estos bits no se pasan al host.
Si otra palabra está lista para la transmisión, el bit de inicio para la nueva palabra se puede enviar tan pronto como se haya enviado el bit de parada para la palabra anterior.
Debido a que los datos asincrónicos se “auto sincronizan”, si no hay datos para transmitir, la línea de transmisión puede estar inactiva.