Una pregunta de comunicación de luz visible sobre una secuencia de preámbulo

Tengo una pregunta sobre el preámbulo y el preámbulo.

Estoy implementando una comunicación de luz visible simple usando arduino. He utilizado un esquema de codificación de Manchester. Si bien entendí que se requiere un preámbulo para tener una sincronización a nivel de palabra/paquete, ya que la codificación Manchester es útil solo a nivel de bit y no a nivel de palabra o paquete, no estoy seguro de qué propiedades debería tener el preámbulo .

En este punto he intentado enviar un mensaje simple como "Hello World" usando un preámbulo de 10101010. Lo envié sin entender mucho la secuencia adecuada para usar como preámbulo. Envié dos preámbulos como ese, un "interruptor de preámbulo" y un byte de inicio de cuadro antes de la transmisión de datos reales, finalizando todo el cuadro con ETX (fin de cuadro)

Justo antes de enviar el STX (inicio del cuadro), para el interruptor de preámbulo seleccioné 00101010 con solo el último bit diferente.

¿Podría alguien explicarme la elección de un preámbulo adecuado y también si es necesario un interruptor de preámbulo de este tipo porque ya hay un byte de inicio de cuadro (0x02 en mi caso) antes de que se transmitan los datos reales?

Gracias.

Editó los dos bits adicionales en el preámbulo para convertirlo en un byte.

Respuestas (2)

El preámbulo se utiliza para la sincronización a nivel de bytes en la capa Ethernet, que es básicamente un protocolo orientado a bytes, a diferencia de HDLC , un protocolo orientado a bits, funciona en tramas/paquetes que tienen un tamaño de byte.

En todos los protocolos desarrollados, la sincronización de los bits, bytes y paquetes sigue siendo un tema a tratar y se han desarrollado varios algoritmos para generar una sobrecarga eficiente. En los protocolos orientados a bits, se utilizan banderas que se representan como una secuencia de bits 01111110 que ayuda a identificar el inicio de la trama, cuando esta secuencia se identificó en la carga útil, fue reemplazada por el receptor. Para obtener más información, consulte Relleno de bits .

En el caso de protocolos de relleno de bytes en los que se utiliza el preámbulo de Ethernet para sincronizar los bytes, puede surgir el mismo problema para el relleno de bytes, donde los datos pueden aparecer como el patrón de preámbulo dentro de la carga útil, para evitar esto, se utilizan varios tipos de algoritmos como se indica , y los bytes ESC especiales se rellenan en el medio cuando se produce una bandera o un ESC adicional en los datos.

Teniendo en cuenta su caso, depende del tipo de compatibilidad que desee su sistema. Puede diseñar un preámbulo variable, pero la idea principal será limitar su aparición, es decir, usar un patrón menos probable que reduzca las veces que su receptor encontrará datos iguales a los de su preámbulo. .

Es puramente una llamada dependiente del sistema, puede simplificar su diseño, si sus datos están limitados al contexto alfabético y numérico, entonces cualquier carácter especial en ASCII extendido puede usarse como preámbulo, pero si involucra tipos de datos y formatos complejos, entonces por supuesto usted necesitará generar un código de preámbulo sabiamente, también se sugiere ir de acuerdo con los estándares IEEE.

NEC creó un protocolo de transmisión de infrarrojos para sus controles remotos de TV. Aquí está su formato de paquete:

  • una ráfaga de pulsos adelantados de 9 ms (16 veces la longitud de la ráfaga de pulsos utilizada para un bit de datos lógicos)
  • un espacio de 4,5 ms
  • la dirección de 8 bits para el dispositivo receptor
  • el inverso lógico de 8 bits de la dirección
  • el comando de 8 bits
  • el inverso lógico de 8 bits del comando
  • una ráfaga de pulso final de 562,5 µs para indicar el final de la transmisión del mensaje.ingrese la descripción de la imagen aquí

Es difícil decir qué necesita exactamente sin comprender todos los factores en su sistema. Espero que esto ayude.