14 votos

UART receptor de velocidad de reloj

Estaba tratando de entender UART fundamentos.Se entiende que

  • Es un protocolo de comunicación asincrónica y por lo tanto el TX y RX relojes son independientes el uno del otro
  • La recepción de datos está garantizada por el uso de bit de inicio y uno o más bits de parada.Además, el receptor debe ser consciente de la velocidad de datos a fin de generar un adecuado reloj a la unidad de la SIPO registro utilizado para la recepción.

Las preguntas aquí son

Se menciona que normalmente un reloj de 16X, la tasa de bits que se utiliza para recuperar los datos. Entonces, ¿cómo es la conversión de bps para la frecuencia del reloj es posible? Por favor me proporcione algunas referencias para el estudio de la sincronización mecanismo que se emplea en UART receptor.

19voto

lillq Puntos 4161

El transmisor y el receptor relojes son independientes el uno del otro, en la forma en que son generadas de forma independiente, sino que debe ser bien adaptado para garantizar la transmisión correcta.

El bit de inicio, que es bajo, y el bit de parada, la cual es alta, la garantía de que entre dos bytes siempre hay una de alta-baja de la transición, el receptor puede sincronizar, pero después de que en su propio: no hay más tiempo que las señales se pueden utilizar para contar los sucesivos bits aparte. Lo único que tiene es su propio reloj. Así que lo más sencillo de hacer es a partir de que el bit de inicio de muestreo cada bit en la mitad de su tiempo. Por ejemplo, a 9600 bps de un tiempo de bit es de 104 µs, es muestra de que el bit de inicio en \$T_0\$ + 52 µs, el primer bit de datos en \$T_0\$ + 52 µs + 104 µs, el segundo bit de datos en \$T_0\$ + 52 µs + 2 \$\times\$ 104 µs, y así sucesivamente. \$T_0\$ es el flanco de bajada del bit de inicio. Mientras que el muestreo de la bit de inicio no es realmente necesario (usted sabe que es bajo) es útil para determinar que el inicio de borde no era un pico.

enter image description here

Para un 52 µs tiempo necesita el doble de la velocidad de 9600 bps, la frecuencia de reloj, o 19200 Hz. Pero esto es sólo un básico de detección del método. Más avanzado (lectura: más precisos) los métodos de tomar varias muestras en una fila, para evitar golpear a ese pico. Entonces usted puede realmente necesitar un 16 \$\times\$ 9600 Hz reloj para obtener 16 pasos por bits, de los cuales usted puede usar, digamos, 5 o así, en lo que debería ser el centro de un poco. Y el uso de un sistema de votación para ver si debe ser leído como alto o bajo.

Si recuerdo correctamente el 68HC11 tomó un par de muestras al inicio, en medio y al final de un poco, la primera y la última presumiblemente a sincronizar si no hay un cambio de nivel (que no está garantizado).

El reloj de muestreo no se deriva de la tasa de bits, que es la otra manera alrededor. Para 9600 bps tendrá que ajustar el reloj de muestreo para 153 600 Hz, que se derivan a través de un prescaler de la frecuencia de reloj del microcontrolador. Entonces el bit de reloj se deriva de que, por otra división por 16.

inigualable relojes
Esto es lo que va a pasar si el receptor del reloj no está sincronizado con el transmisor:

enter image description here

El receptor del reloj es de 6.25 % más lento, y se puede ver que el muestreo para cada bit será más y más tarde. Un típico UART de transmisión consta de 10 bits: 1 bit de start, una capacidad de carga de 8 bits de datos y 1 bit de parada. Entonces, si usted muestra en el medio de un bit puede permitirse el lujo de ser la mitad de un poco apagado en el último bit, el bit de parada. La mitad un poco en diez bits es de 5 %, por lo que con nuestra 6.25 % desviación vamos a ejecutar en problemas. Que se muestra claramente en la foto: ya en el tercer bit de datos estamos de muestreo cerca del borde.

11voto

RelaXNow Puntos 1164

Vamos a retroceder un poco y hablar sobre el bajo nivel de protocolo de señalización utilizado por UARTs. TX y RX son líneas de datos, no de los relojes. Los relojes están sólo dentro de cada UART, que es por qué tiene que haber un acuerdo en la delantera sobre lo que la velocidad en baudios.

Cuando no la transmisión de la línea queda en estado de reposo. Para transmitir un byte (por ejemplo, otros datos anchos son posibles), el transmisor envía primero el bit de inicio. El receptor utiliza el tiempo de la vanguardia del bit de inicio y la conocida tasa de baudios para descodificar, a continuación, el resto de los caracteres. Supongamos por simplicidad que el 100 kbaudios está siendo utilizado. Eso significa que cada tiempo de bit es de 10 µs tiempo. Esto incluye el bit de inicio, bits de datos y el bit de parada(s). Por lo tanto, la mitad de la primera bits de datos será a las 15 µs después de que el borde de ataque del bit de inicio, el segundo a los 25 µs, etc.

Mientras el receptor y transmisor de los relojes que aparecen en el mismo, esto podría continuar para siempre. Sin embargo, de que nunca va a ser exactamente el mismo, por lo que no puede durar siempre. Para permitir la re-sincronización del receptor de reloj para el transmisor del reloj, los datos de carácter extremos, la línea se deja inactivo por un momento, luego se repite el proceso. Los errores de temporización se acumulan comenzando en el borde de ataque del bit de inicio, por lo que el máximo desplazamiento en el último bit. Una vez que el carácter es más, el receptor se restablece la espera para el siguiente bit de start y el proceso se repite.

Con 8 bits de datos, el peor de los casos para el momento se muestreo el último bit. Que es de 8,5 poco los tiempos de la referencia de temporización, que es el borde de ataque del bit de inicio. Si el receptor está apagado por 1/2 poco o más a continuación, se muestra el último bit durante una de bits diferentes. Claramente lo que es malo. Esto ocurre a una frecuencia de reloj de desajuste de 1/2 bits en 8 1/2 bits, o 5.9%. Esa es la garantía de error de coincidencia. Para la confiabilidad, usted querrá asegurarse de que el receptor coincide con el transmisor dentro de la mitad de los que, 2.9%. Que representa un 1/4 de tiempo de bit de error en el último bit.

Sin embargo, no es tan simple. En el escenario descrito anteriormente, el receptor esencialmente inicia un cronómetro en la vanguardia del bit de inicio. Que en teoría podrían ser hecho en la electrónica analógica, pero que iba a ser complicado y caro y no es fácilmente integrable en chips digitales. En su lugar, la mayoría de digital UART implementaciones tienen un reloj interno que funciona a 16x de la esperada en la tasa de bits. El "cronómetro", a continuación, los recuentos de estos 16x ciclos. Eso significa que hay un adicional de posible error de 1/16 poco agrega a todos los bits de muestreo veces, que es como otro .7% reloj desajuste en el último bit.

Esperemos que esto deja en claro lo que el bit de parada es, cómo bit de temporización funciona, y lo que el 16x reloj es todo acerca de. Sobre todo me ha saltado bits de parada, pero tal vez usted puede ver por sí mismo ahora, ¿por qué al menos un bit de parada es obligatoria. Básicamente, los bits de parada son el mínimo forzada de la línea de tiempo de inactividad entre los personajes. Este es el tiempo durante el cual el receptor ha finalizado la recepción de un carácter y está listo para el siguiente borde de un bit de inicio. Si no hay ningún bit de parada, luego de que el último bit de datos podría ser la misma polaridad, el bit de inicio y el receptor no tendría borde para iniciar su cronómetro.

Hace tiempo que este protocolo fue decodificado por levas, palancas y ruedas giratorias. Dos bits de parada se utiliza a menudo para permitir que el mecanismo para restablecer. Hoy en día, todo se hace en lógica digital y 1 bit de parada se utiliza bastante universal. A menudo se ve el bajo nivel de protocolo escrito de la taquigrafía como el 8-N-1, es decir 8 bits de datos, sin paridad bits (olvidarse de estos, que rara vez se utiliza hoy en día), y 1 bit de parada. El bit de inicio es implícita ya que no hay opción.

Usando 8-N-1, una de 8 bits byte de datos de la realidad, toma de 10 bits de veces para enviar. Esta es una razón por la que hay una distinción entre la "tasa de bits" y "velocidad". Velocidad en baudios se refiere a la persona de bits de señalización veces, incluyendo el inicio y bits de parada. En 100 kbaudios, cada bit que se transmite de toma de 10 µs, incluyendo el inicio y bits de parada. El conjunto de caracteres, por lo que tarda 100 µs, pero sólo 8 bits de datos reales son transferidos. La velocidad de transmisión es de 100 k, pero la transferencia de datos de tasa de bits desde el punto de vista de los niveles superiores es de sólo 80 kBits/s.

5voto

Chad Johnson Puntos 248

La tasa de bits de transmisión es la velocidad de reloj dividido por (como usted dice, normalmente) 16 también tiene algunos de los bits de datos para la elaboración de bits (inicio, la paridad, la parada) así que para un 16000Hz reloj que recibe 1000 bits por segundo, pero después de un mínimo de encuadre bits se insertan sólo 800 bits de datos o de 100 bytes por segundo.

Para recibir el receptor se cuenta desde el medio del bit de inicio 16 de relojes y las muestras de la línea que llama a lo que se ve "primer bit de datos". repite este recuento y de la muestra de las veces suficientes como para leer todo símbolo, luego se ajusta la presencia de la bit de parada y comienza la espera para el siguiente bit de inicio.

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X