Retrocedamos un poco y hablemos sobre el protocolo de señalización de bajo nivel utilizado por los UART. TX y RX son líneas de datos, no relojes. Los relojes solo están dentro de cada UART, por lo que tiene que haber un acuerdo por adelantado sobre cuál es la velocidad en baudios.
Cuando no se transmite, la línea se deja en estado inactivo. Para transmitir un byte (por ejemplo, son posibles otros anchos de datos), el transmisor envía primero el bit de inicio . El receptor utiliza el tiempo del borde anterior del bit de inicio y la velocidad de transmisión conocida para decodificar el resto del carácter. Digamos por simplicidad que se están utilizando 100 kBaud. Eso significa que cada bit de tiempo es 10 µs de largo. Esto incluye el bit de inicio, los bits de datos y los bits de parada. Por lo tanto, la mitad del primer bit de datos estará a 15 µs después del borde inicial del bit de inicio, el segundo a 25 µs, etc.
Mientras los relojes del receptor y del transmisor sean los mismos, esto podría continuar para siempre. Sin embargo, nunca serán exactamente iguales por lo que no puede durar para siempre. Para permitir que se vuelva a sincronizar el reloj del receptor con el reloj del transmisor, el carácter de los datos finaliza, la línea permanece inactiva durante un bit y luego se repite el proceso. Los errores de tiempo se acumulan comenzando en el borde anterior del bit de inicio, por lo que la deriva máxima se encuentra en el último bit. Una vez que se termina ese carácter, el receptor se reinicia esperando el siguiente bit de inicio y el proceso se repite.
Con 8 bits de datos, el peor caso para la temporización es muestrear el último bit. Eso es 8,5 bits de tiempo de la referencia de tiempo, que es el borde delantero del bit de inicio. Si el receptor está apagado por 1/2 bit o más, muestreará el último bit durante un bit diferente. Claramente eso es malo. Esto sucede en una falta de coincidencia de frecuencia de reloj de 1/2 bit en 8 1/2 bits, o 5.9%. Esa es la garantía de fallar el desajuste. Para mayor confiabilidad, usualmente desea asegurarse de que el receptor coincida con el transmisor dentro de la mitad de eso, o 2.9%. Eso representa un error de tiempo de 1/4 bit en el último bit.
Sin embargo, no es tan simple. En el escenario descrito anteriormente, el receptor esencialmente inicia un cronómetro en el borde anterior del bit de inicio. En teoría, esto podría hacerse en electrónica analógica, pero sería complicado y costoso y no sería fácilmente integrable en chips digitales. En cambio, la mayoría de las implementaciones de UART digitales tienen un reloj interno que funciona a 16 veces la velocidad de bits esperada. El "cronómetro" cuenta estos ciclos 16x. Eso significa que hay un posible error adicional de 1/16 bit agregado a todos los tiempos de muestreo de bits, que es como otra diferencia de reloj del .7% en el último bit.
Esperemos que esto aclare qué es el bit de parada, cómo funciona la temporización de bits y de qué se trata el reloj 16x. En su mayoría me salté los bits de parada, pero tal vez pueda ver por sí mismo por qué se requiere al menos un bit de parada. Básicamente, los bits de parada son el tiempo mínimo de inactividad de línea entre caracteres. Este es el tiempo durante el cual el receptor ha terminado de recibir un carácter y está listo para el siguiente borde de avance de un bit de inicio. Si no hubiera un bit de parada, entonces el último bit de datos podría ser de la misma polaridad que el bit de inicio y el receptor no tendría borde para iniciar su cronómetro.
Hace mucho tiempo este protocolo fue decodificado por levas, palancas y ruedas giratorias. Se usaron dos bits de parada para permitir que el mecanismo se reinicie. Hoy en día, todo se hace en lógica digital y 1 bit de parada se usa de manera bastante universal. A menudo se ve la taquigrafía escrita del protocolo de bajo nivel como 8-N-1, que significa 8 bits de datos, no hay bits de paridad (olvídese de estos, rara vez se utilizan en la actualidad) y 1 bit de parada. El bit de inicio está implícito ya que no hay opción allí.
Usando 8-N-1, un byte de datos de 8 bits en realidad toma 10 bits para enviar. Esta es una razón por la que hay una distinción entre "velocidad de bits" y "velocidad de transmisión". La velocidad de transmisión se refiere a los tiempos de señalización de bits individuales, incluidos los bits de inicio y parada. A 100 kBaud, cada bit que se transmite toma 10 µs, incluidos los bits de inicio y parada. Por lo tanto, todo el personaje toma 100 µs, pero solo se transfieren 8 bits de datos reales. La velocidad en baudios es de 100 k, pero la tasa de bits de transferencia de datos desde el punto de vista de niveles más altos es de solo 80 kBits / s.