¿Cómo funciona realmente la transmisión asíncrona de datos?

0

Creo que entiendo la transmisión de datos sincronizada entre A y B. Ellos comparten una señal de reloj sincronizada que indica cuando el transmisor está enviando un bit y el receptor debe leer el valor.

Lo que no entiendo es la transmisión de datos asincronizada. Me doy cuenta de que hay bits de inicio y parada y posiblemente también un bit de paridad, pero ¿cómo sabe el receptor cuándo "tomar lecturas" de la señal entre los bits de inicio y de parada?

    
pregunta tommyd456

3 respuestas

7

Para las comunicaciones en serie asíncronas más comunes, el protocolo requiere los extremos de transmisión y recepción para acordar la velocidad de señalización de datos y el formato de los datos. El formato es un acuerdo entre extremos en cuanto al número de bits que se esperan del bit de inicio hasta el bit de parada. Sabiendo esto, el receptor solo tiene que sincronizarse en el borde inicial del pulso de inicio. El receptor también utilizará un reloj de muestreo que es un múltiplo de la frecuencia de señalización de datos acordada, como 16 veces más rápido. Luego, el receptor puede contar 8 relojes desde el borde del bit de inicio y llegar a la posición central del bit de inicio. A partir de ahí, las muestras que toma cada 16 relojes serán el valor del bit de datos para el número esperado de bits. Si el último no es el nivel esperado de un bit de parada, el receptor sabe que debe publicar un error.

Acabo de describir la versión más simple. Hay otros algoritmos de recepción que también verán cuándo se producen los cambios en los bordes de los datos dentro del intervalo de bit de inicio a fin y pueden cambiar su posición de centro de referencia del bit un reloj de cualquier manera en un intento de rastrear la distorsión de la señalización en cierto grado. Otro esquema utilizado es muestrear los datos tres veces alrededor de la posición del centro de bits y requerir que las tres muestras sean iguales. Si no todos son iguales, el receptor publica un error, ya que se da cuenta de que los datos están cambiando durante el tiempo central del bit, lo que indica una situación desincronizada.

    
respondido por el Michael Karas
2

El receptor sabe cuándo muestrear la señal por acuerdo mutuo en la tasa de bits (= velocidad en baudios, en este caso). El receptor comienza en el borde anterior del bit de inicio, espera 1.5 veces el bit, muestrea, espera un bit del tiempo, muestras, etc.

En realidad, los receptores a menudo sobreexploran: toman 3 (o incluso más) muestras y usan la mayoría de votos.

Este arreglo solo funciona cuando

  • el remitente y el receptor acuerdan un priorato en la velocidad de bits

  • el remitente y el receptor tienen relojes razonablemente precisos

  • el momento '0-tiempo-momento' se restablece periódicamente

Para el formato asíncrono común, el 'momento-0' se vuelve a estabilizar en cada bit de inicio, y la regla de oro es que los relojes deben tener una precisión del 1%.

Tenga en cuenta que con relojes suficientemente precisos en ambos lados se puede usar un híbrido entre comunicación síncrona y asíncrona: solo un cable transporta los datos y se acepta el ocasional 'bit slip'. Las centrales telefónicas se utilizan para comunicarse de esta manera, con un reloj maestro central que sincroniza los otros relojes.

    
respondido por el Wouter van Ooijen
1

Hay al menos tres formas básicas de transmisión asíncrona.

1) El UART, (receptor / transmisor asíncrono universal) donde los relojes de transmisión y recepción son asíncronos, pero ambos extremos concuerdan (por algún medio fuera del canal como las instrucciones de configuración de la velocidad en baudios) para usar aproximadamente la misma frecuencia.

El receptor detecta una condición de inicio (RXD baja), espera la mitad de un período de bit acordado y comienza a adquirir datos. Siempre que las velocidades en baudios se acuerden mejor que +/- 5%, este sistema puede funcionar durante periodos de 10 bits (inicio, 8 bits, paridad) antes de perder la sincronización, y debe volver a sincronizarse al inicio de cada nuevo símbolo. (carácter, byte).

El sobremuestreo es un refinamiento típico en este esquema.

2) Esquemas de temporización automática, donde una señal de reloj está enterrada en los propios datos. Un ejemplo de esto es " Código de Manchester " donde cada borde de reloj provoca una transición (cambio de nivel), cada '1' El bit de datos lo hace, cada bit '0' no lo hace. Estos incluso pueden funcionar en ausencia de una velocidad en baudios previamente acordada, siempre que se permita al receptor un poco de tiempo para "aprender" la velocidad de reloj a partir de los datos, y existe alguna convención para encuadrar (como los bordes del reloj que faltan en el preámbulos AES / EBU ).

Los códigos 8B-10B son otra familia de códigos de temporización automática, donde cada byte se convierte a un valor de 10 bits con algunas características específicas (como, aproximadamente el mismo número de 0 y 1 para el contenido mínimo de DC, no hay series de más de 5 9's o 1's en una fila) - garantizando que hay suficientes aristas para inferir la velocidad del reloj. IBM patentó una implementación en 1984, pero otra se usó en 1982 para la transmisión de video digital a través del enlace de fibra óptica (detalles incompletos en la pág. 6 aquí)

3) Handshaking, que requiere dos señales para el handshaking y las señales de datos.

Cada vez que el transmisor establece un bit, también cambia el estado de su señal de saludo (a menudo llamado "Req" o Solicitud). El receptor nota este cambio, acepta el bit de datos y responde con un cambio de estado en su "Ack" o señal de confirmación. Esto le da al transmisor permiso para enviar el siguiente bit.

En algunos aspectos, Req es similar a una línea de reloj: sin embargo, a diferencia de un reloj, no hay una frecuencia de reloj ni una frecuencia de señalización definidas, la transmisión es confiable incluso si el receptor está ocupado e ignora sus entradas por un tiempo.

    
respondido por el Brian Drummond

Lea otras preguntas en las etiquetas