¿Uno o dos bits de parada UART?

15

Los UART a menudo le permiten elegir entre 1, 1.5 y 2 bits de parada. Con 1 bit de parada, la eficiencia de la carga útil es del 80% (8/10), con 2 bits de parada que caen al 72.7% (8/11). Entonces, ¿cuál es la ventaja del segundo bit de parada?

    
pregunta Federico Russo

6 respuestas

19

Los bits de parada adicionales pueden ser una forma útil de agregar un poco más de tiempo de procesamiento de recepción, especialmente a altas velocidades en baudios y / o usando UART suave, donde se requiere tiempo para procesar el byte recibido.

Cuando la velocidad es baja y su UART solo ofrece relaciones de división en potencias de 2, agregar un stopbit adicional puede ser una opción para proporcionar una reducción de velocidad menos drástica que la siguiente tasa de baudios más baja.

Creo que esta es una de las razones por las que el estándar DMX512 especifica 2 bits de parada.

Otra situación en la que pueden ser útiles es si tiene dispositivos que envían un flujo de datos sin almacenamiento en búfer ni paquetización: las pequeñas diferencias en las velocidades de reloj entre los nodos y la granularidad de muestreo finita pueden causar errores a medida que los datos se reciben y retransmiten por un número. de nodos en una cadena, pero si los datos se envían con 2 bits de parada y los receptores se configuran en un solo bit de parada, agrega un margen suficiente para acomodar estos errores y deja al menos un período válido de bit de parada para los nodos en la cadena para recibir de manera confiable.

También me he encontrado con una situación en la que un tramo de cable muy largo causó cierta asimetría en los tiempos de subida y bajada, lo que resultó en una longitud de stopbit inadecuada: el envío de 2 stop y el receptor solo requieren una solución.

    
respondido por el mikeselectricstuff
6

En días pasados, las impresoras eran (casi) construcciones totalmente mecánicas. Las tasas de baudios estaban algo estandarizadas incluso en ese momento, por lo que agregar un bit de parada adicional le daría a la impresora más tiempo para imprimir el personaje. Los aspectos del tiempo eran más visibles en aquel entonces. Para mi primera impresora, un enlace ruidoso, tuve que insertar una pausa de dos caracteres después de enviar un Retorno de carro.

    
respondido por el Wouter van Ooijen
4

Es poco probable que dos bits de parada sean mucho más útiles que uno en un sistema que tiene una proporción significativa de tiempo de parada y que funciona en un entorno de bajo ruido (BER bajo) como el interno al equipo o en una interfaz periférica con Unos pocos metros de cable y / o sin una etapa módem-módem.

2 bits de parada le dan mayor tiempo de sincronización, más tiempo para procesar entre Caracteres y, probablemente, dependiendo del hardware y los algoritmos, mejores posibilidades de obtener o recuperar la sincronización durante un flujo de datos continuo. El tiempo entre caracteres es mucho menos valioso en los sistemas modernos que cuando las velocidades de reloj eran bajas y el rendimiento del procesador más bajo.

Si tiene un flujo de datos esencialmente continuo, si no está sincronizado, cualquier bit alto se verá como un bit de parada. Cualquier transición alta baja se verá como un límite de byte. Si su receptor comienza en un límite de 10 y no es un verdadero límite de inicio, entonces solo se descubrirá el 50% del tiempo) (es decir, si se encuentra que el "bit de parada" final es realmente un bit de datos bajo y usted también ha saltado el límite de parada / inicio genuino en el camino. En promedio, tiene una perspectiva de 1/4 de que un límite de byte es 1/0 y se ve falsamente como un par de parada / inicio. Lo anterior sugiere que si elige una parada falsa iniciar el par, entonces es probable que tenga un 50% de probabilidades de que elija otro en el siguiente intento.

Si usa 2 bits de parada (11), entonces una secuencia válida de inicio de parada es 110, que tiene 1/8 de posibilidades de ocurrir en el tráfico de datos aleatorios. La mezcla de los bits de inicio y parada genuinos en el flujo no sincronizado cambia ligeramente los sats, pero parece relativamente poco probable que si obtienes una secuencia falsa de 110 pasos / paradas en un ciclo, hagas el siguiente intento antes de tropezar con los 110 reales. secuencia que sigue a continuación.

Como se nota, 1 bit de parada produce 8/10 = 80% de rendimiento máximo y 2 bit de parada producen 8/11 = 72% de eficiencia. La diferencia en el rendimiento en el límite total es 80% / 72% = ~ 11% más. esta es una ganancia útil en circunstancias extremas pero no es vasta y si el circuito está inactivo más del 10% del tiempo, tiene un valor mínimo. Si su circuito es ruidoso y propenso a la pérdida de sincronización ocasional, entonces el bit de parada adicional puede ayudar mucho. PERO si le importa mucho el rendimiento, a menudo puede aumentar la velocidad de transmisión (no siempre) o cambiar a una operación totalmente sincrónica.

    
respondido por el Russell McMahon
3

Para amplificar el punto de mikeselectricstuff sobre el tiempo de recepción con "UARTs blandos", una aplicación de recepción que siempre sabrá cuándo aceptar datos y lo hace sobre una base de sondeo a menudo puede manejar velocidades de transmisión más rápidas de lo que sería práctico con un soft accionado por interrupciones. UART. Sin embargo, tales aplicaciones solo pueden procesar datos entrantes durante el tiempo entre el inicio del bit de parada de un byte y el bit de inicio del siguiente byte; El tiempo requerido para procesar cada byte termina siendo el factor limitante para la velocidad de las comunicaciones. El procesamiento de datos a 115,200-N-8-2 no es mucho más exigente que procesarlos a 57,600-N-8-1, pero es un 80% más rápido.

A veces uno puede llevar las cosas aún más lejos al usar formatos de datos aparentemente menos eficientes. Por ejemplo, uno puede enviar cada byte en dos partes, una con siete bits y una con uno (todos los MSB de la parte de un bit están todos configurados). Si uno hace eso, incluso con un solo bit de parada, habrá ocho tiempos de bit de marcado entre el final de un par de bytes y el comienzo del siguiente, lo que le permitirá a uno empujar la velocidad de bits cuatro veces más alta que la que Podría hacer con solo dos bits de parada (y ocho veces más alto que lo que uno podría hacer con uno). A pesar de tener que enviar el doble de bytes, el aumento de cuatro veces en la velocidad de datos sería una gran victoria. Además, aunque cada par de bytes transmitido podría usarse para enviar ocho bits de datos, la codificación solo usaría 130 de los 256 valores posibles de bytes, dejando 126 valores disponibles para señalización u otros propósitos.

    
respondido por el supercat
2

Había una vez monstruos electromecánicos llamados teletipos. La mayoría funcionaba con motores de CA sincronizados con la frecuencia de la línea de alimentación. Por lo tanto, siempre existía la posibilidad de que dos máquinas en comunicación no estuvieran sincronizadas con la misma red eléctrica o incluso que funcionaran con corriente alterna utilizando diferentes frecuencias para esa materia.

Por lo tanto, para permitir que una máquina más lenta se recupere y no se desvíe de la sincronización, se enviaron dos bits de parada.

Para otros fines, como permitir que el carro de impresión regrese al comienzo de una nueva línea, se enviaron un CR, LF más dos borrones (todos los orificios en una cinta de 8 niveles).

Era habitual que los circuitos funcionaran a velocidades de 110 baudios y más lentas solamente.

    
respondido por el Jacques Orsali
1

La lentitud de los dispositivos mecánicos receptores fue la razón detrás de la adición de los bits de parada adicionales, sin embargo, los dispositivos actuales son lo suficientemente rápidos y funcionan a velocidades de transmisión aún mayores sin la necesidad de un bit de parada adicional

    
respondido por el ArunMKumar

Lea otras preguntas en las etiquetas