Protocolo de comunicación FT8: cómo funciona

Hola Habr

Probablemente todos los que estaban incluso un poco interesados ​​en las comunicaciones por radio y la radioafición, escucharon sobre el protocolo de comunicación digital FT8 . Este tipo de conexión apareció en 2017, y desde entonces su popularidad solo ha ido creciendo.


Fuente: www.qsl.net/w1dyj/FT8%20for%20web.pdf

Para aquellos que estén interesados ​​en cómo funciona esto y por qué es necesario, continúe debajo del corte.

Historia


Para aquellos que están lejos de las comunicaciones de radioaficionados, una breve reseña histórica.

Las primeras estaciones de radio amateur hechas en casa, y luego compradas, aparecieron hace unos 100 años. La única señal que podían recibir y transmitir era un tono simple, y la transmisión usaba el código Morse. Por supuesto, primero tenía que aprender a tomar CW de oído, por la forma en que esta habilidad fue solicitada durante mucho tiempo no solo entre los aficionados, sino también entre los profesionales, la profesión de operador de radio en la Marina aparentemente se canceló solo en los años 60. Por supuesto, hubo un cierto romance en la recepción de señales débiles contra el ruido del éter, así es como un simple operador de radioaficionados de la aldea de la región de Kostroma logró en 1928 recibir la señal SOS del angustiado equipo de aeronaves Umberto Nobile .

El siguiente paso fue la comunicación de voz: la transmisión de voz usando un micrófono en modulación de banda única hizo que la comunicación por radio fuera más conveniente. Este método todavía se usa.

Finalmente, alrededor de los años 90, las comunicaciones digitales comenzaron a ganar popularidad entre los operadores de radioaficionados. En este caso, la señal (generalmente RTTY o PSK) forma la computadora, el operador se comunica con el corresponsal mediante un tipo de chat de texto.



Hay que decir que los protocolos técnicamente similares son muy simples, y los caracteres escritos por el usuario desde el teclado fueron enviados a la transmisión casi sin ningún procesamiento complicado. Y curiosamente, esto tenía sus ventajas: el propio operador tenía que encontrar la frecuencia correcta, evaluar la calidad de la señal de oído, ver los caracteres decodificados en la pantalla, escribir la respuesta, etc.

Pero las posibilidades de procesamiento digital crecieron y, finalmente, apareció el héroe de nuestra revisión: el estándar de comunicación FT8. El nombre FT8 se traduce como Franke y Taylor, modulación 8-FSK. El profesor Steven Franke y el astrofísico y premio Nobel Joseph Taylor, han creado un protocolo realmente interesante y eficiente para la transferencia de datos.

Características de FT8:

  • La longitud del mensaje es de 15 s, los mensajes se transmiten en intervalos de tiempo fijos, lo que facilita la decodificación.
  • La longitud del mensaje es 77 bits + CRC de 12 bits.
  • Corrección de errores FEC LDPC (174.87).
  • Modulación de frecuencia 8-FSK, la distancia entre tonos 6.25Hz.
  • Ancho de banda 50Hz. Con una banda tan estrecha, múltiples estaciones pueden operar y decodificar simultáneamente.
  • Umbral de decodificación -20dB.
  • La capacidad opcional de trabajar automáticamente, enviar respuestas automáticamente, etc.

En general, los autores hicieron un buen trabajo al crear un protocolo de comunicación casi completamente automatizado que podría, por un lado, transmitir información de manera más eficiente, y por otro, matar el "espíritu de la radioafición" de raíz. No hay más romance sobre el ruido y el desvanecimiento del éter, recibiendo una señal correspondiente débil desde el otro lado del océano, solo hay una pantalla de PC, y el resto lo hacen los algoritmos y las matemáticas.

Una captura de pantalla del programa WSJT-X que admite FT8 se ve así:


Fuente: 3fs.net.au/ft8-digital-amateur-radio

Personalmente, no entiendo realmente el placer de las comunicaciones de radio casi completamente automáticas, pero como FT8 es popular, entonces es alguien necesario. Veamos con más detalle cómo funciona esto.

Codificación de bits


Considere un ejemplo práctico: la transmisión de la frase "CQ RA1ABC KO50". Aquí CQ es el código de llamada generalmente aceptado (más detalles aquí ), RA1ABC es el distintivo de llamada de radioaficionado, KO50 es el llamado localizador de cuadrícula , que determina la región desde la que transmite la radioafición.

En el primer paso, las abreviaturas comunes se reemplazan por códigos cortos, por ejemplo, CQ recibe un código de 2h. Los indicativos de radio de aficionados tienen un formato estrictamente definido de letras y números, que también le permite grabarlos en una forma más compacta.

const char A0[] = " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ+-./?";
const char A1[] = " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const char A2[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const char A3[] = "0123456789";

// Check for standard callsign
int i0, i1, i2, i3, i4, i5;
if ((i0 = char_index(A1, c6[0])) >= 0 && (i1 = char_index(A2, c6[1])) >= 0 &&
    (i2 = char_index(A3, c6[2])) >= 0 && (i3 = char_index(A4, c6[3])) >= 0 &&
    (i4 = char_index(A4, c6[4])) >= 0 && (i5 = char_index(A4, c6[5])) >= 0) {
        // This is a standard callsign
        int32_t n28 = i0;
        n28 = n28 * 36 + i1;
        n28 = n28 * 10 + i2;
        n28 = n28 * 27 + i3;
        n28 = n28 * 27 + i4;
        n28 = n28 * 27 + i5;
        printf("Pack28: n28=%d (%04xh)\n", n28, n28);
        return NTOKENS + MAX22 + n28;
}

La idea de reemplazar caracteres con índices es importante aquí, lo cual es efectivo con un tamaño de diccionario pequeño. Como resultado, el indicativo "RA1ABC" se escribirá como 0BF1C2C1h - gastamos 4 bytes en lugar de 6.

De manera similar, el localizador de cuadrícula "KO50" se escribe como un número 4BFAh de 2 bytes. Todo esto es necesario porque la longitud máxima del mensaje es de 77 bits; Por supuesto, se puede transmitir texto arbitrario e incluso telemetría, pero sujeto a estas limitaciones. La longitud del mensaje de 77 bits se eligió como un compromiso entre el tiempo de transmisión (aproximadamente 13 segundos, que no es tan rápido) y la capacidad de información: el mensaje podría alargarse, pero luego se enviaría más.

Como resultado, todo nuestro mensaje "CQ RA1ABC KO50" se convertirá en el bloque de datos 00 00 00 26 28 9F D4 92 FE 88. También se le agrega un CRC de 14 bits.

El siguiente paso es convertir el mensaje de 91 bits al llamado código LDPC (comprobación de paridad de baja densidad) con una longitud de 174 bits; agrega redundancia utilizada para corregir errores durante la recepción. En este paso, el mensaje se convierte a 00 00 00 26 28 9F D4 92 FE 8A CA 0C F3 D1 34 33 88 D0 C2 9C 3D CC.

Codificación de frecuencia


Todo aquí es bastante simple. En este paso, transformaremos el mensaje en una secuencia de tonos de diferentes frecuencias. Como saben, podemos tener 8 tonos (tipo de modulación FSK-8), después de la conversión obtenemos una secuencia de la forma 31406520 00000001 15353274 61112745 36563140 65201575 76054515 70523040 61407642 3140652 donde cada dígito es un número de tono de 0 a 7.

El espaciado de frecuencia entre tonos es 6.25Hz, la duración de un tono es de 0.16 s, con la secuencia que se muestra arriba, puede generar fácilmente un archivo WAV o controlar directamente el sintetizador de frecuencia en el caso de una baliza autónoma.

El espectro de la señal generada de nuestro mensaje se ve así:



Por supuesto, es mejor escuchar una vez que mirar el espectro, por desgracia, Habr no permite adjuntar un archivo wav, pero no pudimos encontrar un video normal en YouTube con una demostración del sonido FT8. Los radioaficionados modernos ya no necesitan escuchar la transmisión ; la computadora lo hace por ellos. Un ejemplo del proceso de radio se puede encontrar aquí:


Conclusión


Como puede ver, matemáticamente FT8 es un protocolo bastante interesante. Los originales del código fuente WSJT-X están escritos en Fortran, y todavía no podía resolverlo con ellos. Se puede ver una versión separada del codificador en C ++ en github.com/kgoba/ft8_lib , se extrajeron los fragmentos de código anteriores. Aquellos que lo deseen también pueden simplemente descargar la versión WSJT-X , es gratis, pueden probarlo sin un transmisor, solo una tarjeta de sonido. Incluso puede sintonizar las frecuencias FT8 usando http://websdr.ewi.utwente.nl:8901 y redirigir el sonido a través de un cable de audio virtual, para que pueda ver el programa en funcionamiento sin un transceptor y sin señal de llamada r / l.

En cuanto a la popularidad de FT8 en los círculos de radioaficionados ... Bueno, personalmente, esto no está del todo claro para mí, en mi opinión ya no hay romance en este tipo de comunicación, está más cerca del protocolo industrial que del hobby y la creatividad. Pero la mayoría parece tener una opinión diferente, que se muestra en el gráfico al comienzo del artículo. ¿Millones de fanáticos de la radioafición no pueden estar equivocados? Bueno, FT8 en sí mismo, por supuesto, es técnicamente interesante, y aquí, quizás, el proceso de estudiar el protocolo es mucho más interesante que su uso. Sin embargo, probar el programa al menos una vez también es interesante.

Todos los experimentos exitosos.

All Articles