Saltar al contenido

Velocidad de reloj del receptor UART

Mantén la atención ya que en esta noticia encontrarás la contestación que buscas.

Los relojes del transmisor y del receptor son independientes entre sí, en la forma en que se generan de forma independiente, pero deben combinarse bien para garantizar una transmisión adecuada.

El bit de inicio, que es bajo, y el bit de parada, que es alto, garantizan que entre dos bytes siempre hay una transición de alto a bajo en la que el receptor puede sincronizar, pero después de eso es por sí solo: no hay más tiempo pistas que puede utilizar para diferenciar los sucesivos bits. Todo lo que tiene es su propio reloj. Entonces, lo más simple que puede hacer es comenzar desde el bit de inicio, muestrear cada bit en la mitad de su tiempo. Por ejemplo, a 9600 bps, un tiempo de bit es 104 µs, luego muestrearía el bit de inicio en $ T_0 $ + 52 µs, el primer bit de datos en $ T_0 $ + 52 µs + 104 µs, el segundo dato bit en $ T_0 $ + 52 µs + 2 $ times $ 104 µs, y así sucesivamente. $ T_0 $ es el borde descendente del bit de inicio. Aunque muestrear el bit de inicio no es realmente necesario (usted saber es bajo) es útil asegurarse de que el borde de inicio no sea un pico.

ingrese la descripción de la imagen aquí

Para una sincronización de 52 µs, necesita el doble de la frecuencia de reloj de 9600 bps, o 19200 Hz. Pero este es solo un método de detección básico. Los métodos más avanzados (léase: más precisos) tomarán varias muestras seguidas, para evitar golpear solo ese pico. Entonces, es posible que necesite un reloj de 16 $ times $ 9600 Hz para obtener 16 tics por bit, de los cuales puede usar, digamos, 5 más o menos en lo que debería ser la mitad de un bit. Y el uso de un sistema de votación para ver si debe leerse como alto o bajo.

Si recuerdo correctamente, el 68HC11 tomó algunas muestras al principio, en el medio y al final de un poco, la primera y la última presumiblemente en resincronizar si habría un cambio de nivel (que no está garantizado).

El reloj de muestreo no se deriva de la tasa de bits, es al revés. Para 9600 bps, tendrá que configurar el reloj de muestreo en 153600 Hz, que obtendrá a través de un preescalador de la frecuencia de reloj del microcontrolador. Luego, el reloj de bits se deriva de eso mediante otra división por 16.

relojes incomparables

Esto es lo que sucederá si el reloj del receptor no está sincronizado con el del transmisor:

ingrese la descripción de la imagen aquí

El reloj del receptor es 6.25% lento, y puede ver que el muestreo para cada bit siguiente será cada vez más tarde. Una transmisión UART típica consta de 10 bits: 1 bit de inicio, una carga útil de 8 bits de datos y 1 bit de parada. Luego, si toma una muestra en el medio de un bit, puede permitirse el lujo de estar medio desviado en el último bit, el bit de parada. Medio bit en diez bits es 5%, por lo que con nuestra desviación del 6.25% tendremos problemas. Eso se muestra claramente en la imagen: ya en el tercer bit de datos estamos muestreando cerca del borde.

Retrocedamos un poco y hablemos del protocolo de señalización de bajo nivel que utilizan los UART. TX y RX son líneas de datos, no relojes. Los relojes están solo dentro de cada UART, por lo que debe haber un acuerdo desde el principio sobre cuál es la velocidad en baudios.

Cuando no está transmitiendo, 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 poco de inicio. El receptor usa el tiempo del borde anterior del bit de inicio y la velocidad en baudios conocida para luego decodificar el resto del carácter. Digamos por simplicidad que se están utilizando 100 kBaudios. Eso significa que cada bit tiene una duración de 10 µs. Esto incluye el bit de inicio, los bits de datos y los bits de parada. Por lo tanto, el medio del primer bit de datos estará a 15 µs después del borde anterior del bit de inicio, el segundo a 25 µs, etc.

Siempre que los relojes del receptor y del transmisor sean iguales, esto podría continuar para siempre. Sin embargo, nunca serán exactamente iguales, por lo que no puede durar para siempre. Para permitir la resincronización del reloj del receptor con el reloj del transmisor, el carácter de datos finaliza, la línea se deja inactiva por un momento, luego se repite el proceso. Los errores de temporización se acumulan comenzando en el borde delantero del bit de inicio, por lo que la deriva máxima está en el último bit. Una vez que 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 sincronización es muestrear el último bit. Eso es 8.5 tiempos de bit desde la referencia de temporización, que es el borde delantero del bit de inicio. Si el receptor está apagado en 1/2 bit o más, muestreará el último bit durante un bit diferente. Claramente eso es malo. Esto ocurre con un desajuste de frecuencia de reloj de 1/2 bit en 8 1/2 bits, o 5.9%. Esa es la falta de coincidencia garantizada. Para mayor confiabilidad, generalmente 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 de 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 de ataque del bit de inicio. En teoría, eso podría hacerse en electrónica analógica, pero sería complicado y costoso y no se integraría fácilmente en chips digitales. En cambio, la mayoría de las implementaciones de UART digitales tienen un reloj interno que funciona a 16 veces la tasa de bits esperada. A continuación, el “cronómetro” cuenta estos 16 ciclos. 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 falta de coincidencia de reloj del 0,7% en el último bit.

Con suerte, esto deja en claro qué es el bit de parada, cómo funciona la sincronización de bits y de qué se trata el reloj 16x. La mayoría de las veces me salté los bits de parada, pero tal vez ahora 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 entrada de un bit de inicio. Si no hubiera un bit de parada, entonces el último bit de datos podría tener la misma polaridad que el bit de inicio y el receptor no tendría ningún borde para iniciar su cronómetro.

Hace mucho tiempo, este protocolo fue decodificado por levas, palancas y ruedas giratorias. A menudo se usaban dos bits de parada para permitir que el mecanismo se reiniciara. Hoy en día, todo se hace en lógica digital y 1 bit de parada se usa de manera casi universal. A menudo se ve el protocolo de bajo nivel escrito en forma abreviada como 8-N-1, lo que significa 8 bits de datos, sin bits de paridad (olvídese de estos, rara vez se usan en la actualidad) y 1 bit de parada. El bit de inicio está implícito ya que no hay ninguna opción allí.

Con 8-N-1, un byte de datos de 8 bits en realidad tarda 10 bits en enviarse. Ésta es una de las razones por las que existe una distinción entre “tasa de bits” y “tasa de baudios”. La velocidad en baudios se refiere a los tiempos de señalización de bits individuales, incluidos los bits de inicio y parada. A 100 kBaudios, cada bit que se transmite tarda 10 µs, incluidos los bits de inicio y parada. Por tanto, el carácter completo tarda 100 µs, pero solo se transfieren 8 bits de datos reales. La velocidad en baudios es de 100 k, pero la velocidad de transferencia de datos desde el punto de vista de los niveles más altos es de solo 80 kBits / s.

La tasa de bits para la transmisión es la tasa de reloj dividida por (como usted dice, típicamente) 16. También tiene algunos bits que no son de datos para los bits de entramado (inicio, paridad, parada). Entonces, para un reloj de 16000Hz, obtienes 1000 bits por segundo, pero después de que se insertan bits mínimos de entramado, solo se insertan 800 bits de datos o 100 bytes por segundo.

Para recibir, el receptor cuenta desde la mitad de los relojes del bit de inicio 16 y muestrea las llamadas de línea lo que ve como “primer bit de datos”. repite este conteo y muestra suficientes veces para leer el símbolo completo, luego confirma la presencia del bit de parada y comienza a esperar el siguiente bit de inicio.

Siempre que el reloj del receptor esté cerca de la frecuencia del reloj del transmisor, el muestreo llegará a las partes correctas de la señal transmitida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *