Question:
Codage de compression de l'indicatif d'appel FT8 / maidenhead
jemussi
2020-03-06 21:11:22 UTC
view on stackexchange narkive permalink

Je me suis lancé le défi d'écrire un script Matlab comme preuve de concept pour envoyer un appel FT8 CQ (pas nécessairement pour les transmissions en direct encore, mais je peux étendre le projet). Jusqu'à présent, j'ai:

  • CRC 14 bits généré et ajouté aux bits de message précalculés (à partir de l'utilitaire ft8code.exe dans WSJT-X)
  • Généré et ajouté 83 bits Bits de parité LDPC pour donner des symboles de canal de 174 bits
  • Implémentation de la synthèse de tonalité et de la modulation de porteuse audio dans Matlab pour 8 symboles de canal FSK

Ce qui me manque, c'est que je Je voudrais générer moi-même les bits de message dans Matlab à partir du localisateur d'indicatif / de grille. Je comprends que l'indicatif est converti en champ 2 * 28 = 56 bits, le localisateur est converti en un champ de 15 bits, et il y a 6 bits de type de message donnant 77 bits.

Ma question est donc

  • Comment puis-je convertir l'indicatif en valeur binaire 56 bits et le localisateur en 15 bits?
  • Utilise-t-il une table ASCII? Il utilise vraisemblablement un jeu de caractères d'espacement 0-9, A-Z.
  • Quel type de compression est utilisé pour serrer le localisateur de 4 caractères en 15 bits, etc.? Je connais les 6 derniers bits pour les messages CQ car ils ne changent pas, c'est donc une pièce du puzzle.
Un répondre:
hobbs - KC2G
2020-03-07 02:22:50 UTC
view on stackexchange narkive permalink

Vous pouvez trouver le code dans packjt77.f90. Le codage des indicatifs (pour les indicatifs "standard" qui ne nécessitent pas de hachage) est dans la fonction pack28 . Un bref résumé:

  1. Ajustez quelques préfixes étranges qui ne suivent pas la disposition habituelle des lettres et des chiffres. Le Swaziland 3DA0 * sera codé comme s'il s'agissait de 3D0 * à la place, et la Guinée 3XA1A sera codé comme s'il était QA1A à la place. Cet ajustement est inversé dans le décodeur, ce qui est possible car il correspond aux parties inutilisées de l'espace de l'indicatif.
  2. "Alignez" l'indicatif dans un champ de 6 caractères en identifiant le dernier (ou le seul) chiffre, et le plaçant en troisième position. S'il y a moins de deux caractères avant le chiffre, ou moins de trois caractères après le chiffre, complétez avec des espaces. S'il y a plus de deux caractères avant, ou plus de trois caractères après, il s'agit d'un indicatif "non standard" et doit être codé par hachage. Exemple: mon indicatif KC2G devient "KC2G" , N2XYZ devient "N2XYZ" et 4U1ITU reste "4U1ITU" .
  3. Mappez le premier caractère à sa position (indexée à zéro) dans la liste
    "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" (37 possibilités), le second à sa position dans la liste "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" (36), le troisième à sa position dans la liste "0123456789" (10), et le quatrième à sixième à leurs positions dans la liste
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ" (27). Exemple: "K1AB" devient (0, 20, 1, 2, 3, 0)
  4. Lisez ceci comme une variable-base- ( 37, 36, 10, 27, 27, 27) entier, par exemple
    (((0 * 36 + 20) * 10 + 1) * 27 + 2) * 27 + 3) * 27 + 0 = 3957822, ou équivalent
    36 * 10 * 27 * 27 * 27 * 0 + 10 * 27 * 27 * 27 * 20 + 27 * 27 * 27 * 1 + 27 * 27 * 2 + 27 * 3 + 0 = 3957822.
  5. Ajoutez 6257896. Les 2 063 592 premiers codes sont utilisés par les appels CQ / QRZ, et les 4 194 304 suivants sont utilisés par les indicatifs hachés 22 bits; les indicatifs réguliers commencent après cela. 3957822 + 6257896 = 10215718.
  6. Encode le nombre en tant que binaire 28 bits, gros boutiste; 10215719 = 0000100110111110000100100110.

Pour les carrés de la grille, l'encodage est similaire sauf qu'il n'y a pas d'alignement nécessaire, et c'est un entier de base (18,18,10,10), donc FN20 devient (5 , 13, 2, 0), qui devient l'entier 5 * 18 * 10 * 10 + 13 * 10 * 10 + 2 * 10 + 0 = 10320. Il est ensuite compressé en 15 bits. Notez que le message "RR73" est en fait codé comme une paire d'indicatifs plus la grille RR73 (qui est valide, mais dans un bit inhabité de l'océan Arctique au nord de la Sibérie), et que les rapports de réception sont codés comme les valeurs supérieures à RR99 (32480) .

Merci beaucoup pour cette réponse complète. Il m'a beaucoup aidé et contient tout ce dont j'ai besoin pour continuer mon projet.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 4.0 sous laquelle il est distribué.
Loading...