Receptor-transmisor asíncrono universal


De Wikipedia, la enciclopedia libre
  (Redirigido desde 16450 UART )
Saltar a navegación Saltar a búsqueda
Diagrama de bloques para un UART

A asíncrono receptor-transmisor universal ( UART / JU ɑr t / ) es un hardware de ordenador dispositivo para la comunicación en serie asíncrono en el que el formato de datos y velocidades de transmisión son configurables. Envía bits de datos uno por uno, del menos significativo al más significativo, enmarcados por bits de inicio y parada para que el canal de comunicación maneje la sincronización precisa. Los niveles de señalización eléctrica son manejados por un circuito controlador externo al UART. Dos niveles de señal comunes son RS-232 , un sistema de 12 voltios , y RS-485 , un sistema de 5 voltios.

Fue uno de los primeros dispositivos de comunicación por computadora, utilizado para conectar teletipos para una consola de operador . También fue uno de los primeros sistemas de hardware para Internet .

Un UART es generalmente un circuito integrado (IC) individual (o parte de un ) que se utiliza para comunicaciones en serie a través de una computadora o un puerto en serie de un dispositivo periférico . Uno o más periféricos UART se integran comúnmente en chips de microcontroladores . Los UART especializados se utilizan para automóviles , tarjetas inteligentes y SIM . Los primeros teletipos utilizaron bucles de corriente .

Un dispositivo relacionado, el receptor-transmisor universal síncrono y asíncrono (USART) también admite el funcionamiento síncrono.

Transmisión y recepción de datos en serie

El receptor-transmisor asíncrono universal (UART) toma bytes de datos y transmite los bits individuales de forma secuencial. [1] En el destino, un segundo UART vuelve a ensamblar los bits en bytes completos. Cada UART contiene un registro de desplazamiento , que es el método fundamental de conversión entre formas en serie y paralelas. La transmisión en serie de información digital (bits) a través de un solo cable u otro medio es menos costosa que la transmisión en paralelo a través de múltiples cables.

Por lo general, el UART no genera ni recibe directamente las señales externas que se utilizan entre diferentes elementos del equipo. Se utilizan dispositivos de interfaz separados para convertir las señales de nivel lógico del UART hacia y desde los niveles de señalización externa, que pueden ser niveles de voltaje estandarizados, niveles de corriente u otras señales.

La comunicación puede ser simplex (en una sola dirección, sin que el dispositivo receptor envíe información al dispositivo transmisor), dúplex completo (ambos dispositivos envían y reciben al mismo tiempo) o semidúplex (los dispositivos se turnan para transmitir y recibir ).

Encuadre de datos

Diagrama que muestra la sincronización de UART

El estado inactivo, sin datos, es de alto voltaje o alimentado. Este es un legado histórico de la telegrafía, en el que la línea se mantiene alta para mostrar que la línea y el transmisor no están dañados. Cada carácter se enmarca como un bit de inicio lógico bajo, bits de datos, posiblemente un bit de paridad y uno o más bits de parada. En la mayoría de las aplicaciones, el bit de datos menos significativo (el de la izquierda en este diagrama) se transmite primero, pero hay excepciones (como el terminal de impresión IBM 2741 ).

El bit de inicio indica al receptor que viene un nuevo carácter. Los siguientes cinco a nueve bits, según el conjunto de códigos empleado, representan el carácter. Si se utiliza un bit de paridad, se colocará después de todos los bits de datos. El siguiente o dos bits están siempre en la condición de marca (lógica alta, es decir, '1') y se denominan bit (s) de parada. Indican al receptor que el personaje está completo. Dado que el bit de inicio es lógico bajo (0) y el bit de parada es lógico alto (1), siempre hay al menos dos cambios de señal garantizados entre caracteres.

Si la línea se mantiene en la condición lógica baja durante más de un tiempo de carácter, esta es una condición de interrupción que puede ser detectada por el UART.

Receptor

Todas las operaciones del hardware UART están controladas por una señal de reloj interno que se ejecuta a un múltiplo de la velocidad de datos, normalmente 8 o 16 veces la velocidad de bits. El receptor prueba el estado de la señal entrante en cada pulso de reloj, buscando el comienzo del bit de inicio. Si el bit de inicio aparente dura al menos la mitad del tiempo del bit, es válido y señala el inicio de un nuevo carácter. De lo contrario, se considera un pulso falso y se ignora. Después de esperar un poco más de tiempo, el estado de la línea se muestrea nuevamente y el nivel resultante se registra en un registro de desplazamiento. Una vez transcurrido el número requerido de períodos de bits para la longitud del carácter (de 5 a 8 bits, típicamente), el contenido del registro de desplazamiento se pone a disposición (en paralelo) para el sistema de recepción. La UART establecerá una bandera que indica que hay nuevos datos disponibles,y también puede generar un procesadorinterrumpir para solicitar que el procesador central transfiera los datos recibidos.

Los UART que se comunican no tienen un sistema de temporización compartido aparte de la señal de comunicación. Normalmente, los UART resincronizan sus relojes internos en cada cambio de la línea de datos que no se considera un pulso espurio. Al obtener información de sincronización de esta manera, reciben de manera confiable cuando el transmisor está enviando a una velocidad ligeramente diferente a la que debería. Los UART simplistas no hacen esto; en su lugar, se resincronizan solo en el borde descendente del bit de inicio y luego leen el centro de cada bit de datos esperado, y este sistema funciona si la velocidad de transmisión de datos es lo suficientemente precisa como para permitir que los bits de parada se muestreen de manera confiable.

Es una función estándar para un UART almacenar el carácter más reciente mientras recibe el siguiente. Este "almacenamiento en búfer doble" le da a una computadora receptora un tiempo completo de transmisión de caracteres para obtener un carácter recibido. Muchos UART tienen una pequeña memoria intermedia de primero en entrar , primero en salir ( FIFO ) entre el registro de desplazamiento del receptor y la interfaz del sistema host. Esto permite que el procesador host tenga aún más tiempo para manejar una interrupción de la UART y evita la pérdida de datos recibidos a altas velocidades.

Transmisor

El funcionamiento de la transmisión es más sencillo ya que la temporización no tiene que determinarse a partir del estado de la línea, ni está vinculada a intervalos de temporización fijos. Tan pronto como el sistema de envío deposita un carácter en el registro de desplazamiento (después de completar el carácter anterior), el UART genera un bit de inicio, desplaza el número requerido de bits de datos a la línea, genera y envía el bit de paridad (si se usa ) y envía los bits de parada. Dado que la operación de dúplex completo requiere que los caracteres se envíen y reciban al mismo tiempo, los UART utilizan dos registros de desplazamiento diferentes para los caracteres transmitidos y recibidos. Los UART de alto rendimiento podrían contener un búfer FIFO de transmisión (primero en entrar, primero en salir) para permitir que un controlador de CPU o DMA deposite varios caracteres en una ráfaga en el FIFO en lugar de tener que depositar un carácter a la vez en el registro de desplazamiento.Dado que la transmisión de uno o varios caracteres puede llevar mucho tiempo en relación con las velocidades de la CPU, un UART mantiene una bandera que muestra el estado de ocupado para que el sistema principal sepa si hay al menos un carácter en el búfer de transmisión o en el registro de desplazamiento; "Listo para el (los) siguiente (s) carácter (es)" también se puede señalar con una interrupción.

Solicitud

Los UART transmisores y receptores deben configurarse para la misma velocidad de bits, longitud de caracteres, paridad y bits de parada para un funcionamiento adecuado. El UART receptor puede detectar algunas configuraciones no coincidentes y establecer un bit de marca de "error de trama" para el sistema host; en casos excepcionales, el UART receptor producirá un flujo errático de caracteres mutilados y los transferirá al sistema anfitrión.

Los puertos seriales típicos que se usan con computadoras personales conectadas a módems usan ocho bits de datos, sin paridad y un bit de parada; para esta configuración, el número de caracteres ASCII por segundo es igual a la tasa de bits dividida por 10.

Algunas computadoras domésticas o sistemas integrados de muy bajo costo prescinden de un UART y usan la CPU para muestrear el estado de un puerto de entrada o manipular directamente un puerto de salida para la transmisión de datos. Si bien es muy intensivo en la CPU (ya que la sincronización de la CPU es fundamental), el chip UART se puede omitir, lo que ahorra dinero y espacio. La técnica se conoce como bit-banging .

Historia

Algunos de los primeros esquemas telegráficos utilizaban pulsos de longitud variable (como en el código Morse ) y mecanismos de relojería rotativos para transmitir caracteres alfabéticos. Los primeros dispositivos de comunicación en serie (con pulsos de longitud fija) fueron interruptores mecánicos giratorios ( conmutadores ). Varios códigos de caracteres que utilizan 5, 6, 7 u 8 bits de datos se volvieron comunes en los teleimpresores y más tarde como periféricos de computadora. El teletipo era un excelente dispositivo de E / S de uso general para una computadora pequeña.

Gordon Bell de diciembre diseñó el primer UART, ocupando una placa de circuito entero llamado una unidad de línea , para los PDP serie de ordenadores comienzan con el PDP-1 . [2] [3] Según Bell, la principal innovación del UART fue su uso de muestreo para convertir la señal en el dominio digital, lo que permite una sincronización más confiable que los circuitos anteriores que usaban dispositivos de sincronización analógica con potenciómetros ajustados manualmente . [4] Para reducir el costo de cableado, backplane y otros componentes, estas computadoras también fueron pioneras en el control de flujo utilizando caracteres XON y XOFF en lugar de cables de hardware.

DEC condensó el diseño de la unidad de línea en uno de los primeros UART de un solo chip para su propio uso. [2] Western Digital desarrolló esto en el primer UART de un solo chip ampliamente disponible, el WD1402A, alrededor de 1971. Este fue un ejemplo temprano de un circuito integrado de escala media . Otro chip popular fue el SCN2651 de la familia Signetics 2650 .

Un ejemplo de UART de principios de la década de 1980 fue el National Semiconductor 8250 utilizado en la tarjeta adaptadora de comunicaciones asíncronas de la PC IBM original . [5] En la década de 1990, se desarrollaron UART más nuevos con búferes en chip. Esto permitió una mayor velocidad de transmisión sin pérdida de datos y sin requerir una atención tan frecuente de la computadora. Por ejemplo, el popular National Semiconductor 16550 tiene un FIFO de 16 bytes y generó muchas variantes, incluidas las 16C550, 16C650, 16C750 y 16C850 .

Dependiendo del fabricante, se utilizan diferentes términos para identificar los dispositivos que realizan las funciones UART. Intel llamó a su dispositivo 8251 una "Interfaz de comunicación programable". MOS Technology 6551 se conocía con el nombre de "Adaptador de interfaz de comunicaciones asíncronas" (ACIA). El término "Interfaz de comunicaciones en serie" (SCI) se utilizó por primera vez en Motorola alrededor de 1975 para referirse a su dispositivo de interfaz en serie asíncrona de arranque y parada, que otros llamaban UART. Zilog fabricó varios controladores de comunicación en serie o SCC.

A partir de la década de 2000, la mayoría de las computadoras compatibles con IBM PC eliminaron sus puertos COM RS-232 externos y utilizaron puertos USB que pueden enviar datos más rápido. Para los usuarios que todavía necesitan puertos serie RS-232, ahora se utilizan comúnmente puentes externos USB a UART . Combinan los cables de hardware y un chip para realizar la conversión USB y UART. Cypress Semiconductor y FTDI son dos de los principales proveedores comerciales de estos chips. [6] Aunque los puertos RS-232 ya no están disponibles para los usuarios en el exterior de la mayoría de las computadoras, muchos procesadores y microprocesadores internostienen UART integrados en sus chips para brindarles a los diseñadores de hardware la capacidad de interactuar con otros chips o dispositivos que usan RS-232 o RS-485 para la comunicación.

Estructura

Un UART generalmente contiene los siguientes componentes:

  • un generador de reloj, generalmente un múltiplo de la tasa de bits para permitir el muestreo en medio de un período de bits
  • registros de desplazamiento de entrada y salida
  • control de transmisión / recepción
  • lógica de control de lectura / escritura
  • Medición de autobaudios (opcional)
  • búfer de transmisión / recepción (opcional)
  • búfer de bus de datos del sistema (opcional)
  • Memoria búfer de primero en entrar , primero en salir ( FIFO ) (opcional)
  • Señales que necesita un controlador DMA de terceros (opcional)
  • Controlador DMA de masterización de bus integrado (opcional)

Condiciones especiales del transceptor

Error de desbordamiento

Se produce un "error de saturación" cuando el receptor no puede procesar el carácter que acaba de llegar antes de que llegue el siguiente. Varios dispositivos tienen diferentes cantidades de espacio de búfer para contener los caracteres recibidos. La CPU o el controlador DMA deben dar servicio a la UART para eliminar caracteres del búfer de entrada. Si la CPU o el controlador DMA no dan servicio a la UART con la suficiente rapidez y el búfer se llena, se producirá un error de saturación y se perderán los caracteres entrantes.

Error de insuficiencia

Se produce un "error de insuficiencia de datos" cuando el transmisor UART ha completado el envío de un carácter y el búfer de transmisión está vacío. En los modos asíncronos, esto se trata como una indicación de que no quedan datos por transmitir, en lugar de un error, ya que se pueden agregar bits de parada adicionales. Esta indicación de error se encuentra comúnmente en los USART, ya que una insuficiencia de datos es más grave en los sistemas síncronos.

Error de encuadre

Un UART detectará un error de trama cuando no ve un bit de "parada" en el tiempo de bit de "parada" esperado. Como el bit de "inicio" se usa para identificar el comienzo de un carácter entrante, su temporización es una referencia para los bits restantes. Si la línea de datos no está en el estado esperado (alto) cuando se espera el bit de "parada" (de acuerdo con el número de datos y bits de paridad para los que se establece el UART), el UART señalará un error de trama. Una condición de "interrupción" en la línea también se indica como un error de trama.

Error de paridad

Se produce un error de paridad cuando la paridad del número de bits uno no coincide con la especificada por el bit de paridad. La verificación de paridad se utiliza a menudo para la detección de errores de transmisión. El uso de un bit de paridad es opcional, por lo que este error solo ocurrirá si se ha habilitado la verificación de paridad.

Condición de rotura

Una condición de interrupción ocurre cuando la entrada del receptor está en el nivel de "espacio" (lógica baja, es decir, '0') durante más tiempo que un período de tiempo, típicamente, por más de un tiempo de carácter. Esto no es necesariamente un error, pero el receptor lo ve como un carácter de todos los bits cero con un error de trama. El término "interrupción" deriva de la señalización de bucle de corriente , que era la señalización tradicional utilizada para teletipos . La condición de "espaciado" de una línea de bucle de corriente se indica porque no fluye corriente, y un período muy largo sin flujo de corriente a menudo es causado por una rotura u otra falla en la línea.

Algunos equipos transmitirán deliberadamente el nivel de "espacio" durante más tiempo que un personaje como señal de atención. Cuando las velocidades de señalización no coinciden, no se pueden enviar caracteres significativos, pero una señal larga de "interrupción" puede ser una forma útil de llamar la atención de un receptor no coincidente para hacer algo (como reiniciarse). Los sistemas informáticos pueden utilizar el nivel de "interrupción" larga como una solicitud para cambiar la velocidad de señalización, para admitir el acceso telefónico a múltiples velocidades de señalización. El protocolo DMX512 utiliza la condición de interrupción para señalar el inicio de un nuevo paquete.

Modelos UART

Un UART dual, o DUART , combina dos UART en un solo chip. De manera similar, un UART cuádruple o QUART combina cuatro UART en un solo paquete, como el NXP 28L194. Un UART u OCTART octal combina ocho UART en un paquete, como el Exar XR16L788 o el NXP SCC2698.

UART en módems

Los módems para computadoras personales que se conectan a una ranura de la placa base también deben incluir la función UART en la tarjeta. El chip UART 8250 original enviado con la computadora personal de IBM tenía un búfer de un carácter para el receptor y el transmisor cada uno, lo que significaba que el software de comunicaciones funcionaba mal a velocidades superiores a 9600 bit / s, especialmente si se opera en un sistema multitarea o si se manejan interrupciones. desde controladores de disco. Los módems de alta velocidad usaban UART que eran compatibles con el chip original pero que incluían búferes FIFO adicionales, lo que le daba al software tiempo adicional para responder a los datos entrantes.

Una mirada a los requisitos de rendimiento a altas velocidades de bits muestra por qué el FIFO de 16, 32, 64 o 128 bytes es una necesidad. La especificación de Microsoft para un sistema DOS requiere que las interrupciones no se deshabiliten durante más de 1 milisegundo a la vez. Algunas unidades de disco duro y controladores de video violan esta especificación. 9600 bit / s entregará un carácter aproximadamente cada milisegundo, por lo que un FIFO de 1 byte debería ser suficiente a esta velocidad en un sistema DOS que cumpla con el tiempo máximo de desactivación de interrupciones. Las tarifas superiores a esta pueden recibir un nuevo carácter antes de que se haya recuperado el antiguo y, por lo tanto, se perderá el antiguo. Esto se conoce como un error de saturación y da como resultado la pérdida de uno o más caracteres.

Un FIFO de 16 bytes permite recibir hasta 16 caracteres antes de que la computadora tenga que atender la interrupción. Esto aumenta la tasa de bits máxima que la computadora puede procesar de manera confiable de 9600 a 153,000 bit / s si tiene un tiempo muerto de interrupción de 1 milisegundo. Un FIFO de 32 bytes aumenta la velocidad máxima a más de 300.000 bit / s. Un segundo beneficio de tener un FIFO es que la computadora solo tiene que atender entre el 8 y el 12% de las interrupciones, lo que permite más tiempo de CPU para actualizar la pantalla o realizar otras tareas. Por lo tanto, las respuestas de la computadora también mejorarán.

Ver también

  • Autobaud
  • Baudios
  • Tasa de bits
  • Comparación de señalización síncrona y asíncrona
  • Frecuencias de oscilador de cristal
  • MIDI
  • Comunicación serial síncrona

Referencias

  1. ^ Adam Osborne, Introducción a los microordenadores Volumen 1: Conceptos básicos , Osborne-McGraw Hill Berkeley California EE. UU., 1980 ISBN  0-931988-34-9 pp. 116-126
  2. ^ a b C. Gordon Bell, J. Craig Mudge, John E. McNamara, Ingeniería informática: una vista DEC del diseño de sistemas de hardware , Digital Press, 12 de mayo de 2014, ISBN 1483221105 , p. 73 
  3. ^ Allison, David. "Curador, División de Sociedad y Tecnología de la Información, Museo Nacional de Historia Estadounidense, Institución Smithsonian" . Historias orales y en video de la Institución Smithsonian . Consultado el 14 de junio de 2015 .
  4. ^ Historia oral de Gordon Bell , 2005, consultado el 19 de agosto de 2015
  5. ^ Referencia técnica 6025008 (PDF) . Biblioteca de referencia de hardware de computadora personal. IBM. Agosto de 1981. págs. 2–123.
  6. ^ "Productos FTDI" . www.ftdichip.com . Consultado el 22 de marzo de 2018 .
  7. ^ Interfaz con un PDP-11/05: la UART , blinkenbone.com, consultado el 19 de agosto de 2015
  8. ^ "Especificación del producto Zilog Z8440 / 1/2/4, Z84C40 / 1/2/3/4. Controlador de entrada / salida en serie" (PDF) . 090529 zilog.com
  9. ^ "Descarga de documentos de Zilog" (PDF) . www.zilog.com . Consultado el 22 de marzo de 2018 .
  10. ^ "Preguntas frecuentes: los controladores 16550A UART y TurboCom 1994" . Consultado el 16 de enero de 2016 .
  11. ^ T'so, Theodore Y. (23 de enero de 1999). "Re: comunicación serial con el 16650" . El archivo de correo . Consultado el 2 de junio de 2013 .
  12. ^ bill.herrin.us - Manual de puerto serie mejorado de 8 puertos Hayes ESP , 2004-03-02

Otras lecturas

  • Puerto serie completo: puertos COM, puertos COM virtuales USB y puertos para sistemas integrados ; 2ª edición; Jan Axelson; Investigación de Lakeview; 380 páginas; 2007; ISBN 978-1-931-44806-2 . 
  • Puerto serie completo: programación y circuitos para enlaces y redes RS-232 y RS-485 ; 1ª edición; Jan Axelson; Investigación de Lakeview; 306 páginas; 1998; ISBN 978-0-965-08192-4 . 
  • Puerto serie y microcontroladores: principios, circuitos y códigos fuente ; 1ª edición; Grzegorz Niemirowski; CreateSpace; 414 páginas; 2013; ISBN 978-1-481-90897-9 . 
  • Programación en serie (Wikibook) .

enlaces externos

  • FreeBSD Serial and UART Tutorial , incluye definiciones de señales estándar, historial de circuitos integrados UART y distribución de pines para el conector DB25 de uso común.
  • Tutorial de UART para robótica , contiene muchos ejemplos prácticos.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Universal_asynchronous_receiver-transmitter&oldid=1040256325#UART_models "