FT8通信协议-工作原理

哈Ha

大概每个对无线电通信和业余无线电至少有点兴趣的人都听说过FT8数字通信协议这种类型的连接出现在2017年,从那时起,它的受欢迎程度一直在增长。


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

对于那些对它的工作原理以及为什么需要它感兴趣的人,请继续学习。

故事


对于那些远离业余无线电通信的人,请简要了解其历史背景。

大约100年前出现了第一个自制的,后来购买的业余无线电台。他们唯一可以接收和发送的信号是简单的音调,而发送使用的是莫尔斯电码。当然,以前有必要学习如何通过耳朵来学习连续波,这种方式不仅在业余爱好者中而且在专业人士中都需要很长时间,因此海军无线电运营商的职业似乎只在60年代就被取消了。当然,在接收弱弱信号以抵抗以太噪声方面确实存在某种浪漫,这就是一个来自Kostroma地区的简单乡村火腿无线电运营商在1928年如何设法从受困的飞艇Umberto Nobile接收SOS信号的方法

下一步是语音通信-使用麦克风进行单频带调制的语音传输使无线电通信更加方便。仍然使用此方法。

最终,在90年代左右,数字通信开始在业余无线电运营商中流行。在这种情况下,信号(通常是RTTY或PSK)形成计算机,操作员使用一种文本聊天方式与通讯员进行通信。



必须说,技术上相似的协议非常简单,并且用户从键盘键入的字符几乎无需任何复杂处理即可发送到广播。奇怪的是,它有其优势-操作员本人必须找到合适的频率,用耳朵评估信号质量,在屏幕上查看解码的字符,键入答案等。

但是数字处理的可能性增加了,最后,我们的评论英雄出现了-通信标准FT8。FT8名称翻译为Franke和Taylor,8-FSK调制。史蒂芬·弗兰克(Steven Franke)教授,天体物理学家和诺贝尔奖获得者约瑟夫·泰勒(Joseph Taylor)创建了一个真正有趣且高效的数据传输协议。

FT8的功能:

  • 消息长度为15 s,消息在固定的时隙中传输,便于解码。
  • 消息长度为77位+ 12位CRC。
  • 纠错FEC LDPC(174.87)。
  • 调频8-FSK,音调之间的距离为6.25Hz。
  • 带宽50Hz 在这样的窄带下,多个站可以同时操作和解码。
  • 解码阈值-20dB。
  • 自动工作,自动发送回复等可选功能。

通常,作者在创建几乎完全自动化的通信协议方面做得很好,一方面可以更有效地传输信息,另一方面可以消灭萌芽中的“业余无线电精神”。不再有以太的噪音和衰落的浪漫,从海洋的另一侧接收到微弱的对应信号,只有一台PC屏幕,其余的由算法和数学完成。

支持FT8的WSJT-X程序的屏幕快照如下所示:


来源:3fs.net.au/ft8-digital-amateur-radio就

我个人而言,我并不真正理解几乎完全自动的无线电通信的乐趣,但是由于FT8很流行,所以有人必要。让我们更详细地了解它是如何工作的。

位编码


考虑一个实际的例子-传输短语“ CQ RA1ABC KO50”。这里的CQ是公认的呼叫代码(此处有更多详细信息),RA1ABC是业余无线电呼叫符号,KO50是所谓的网格定位器,它确定业余无线电广播的区域。

在第一步中,常见的缩写被短代码代替,例如,CQ收到2h代码。业余无线电呼号具有严格定义的字母和数字格式,还可以使您以更紧凑的形式记录它们。

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;
}

在这里用索引替换字符的想法很重要,这对于较小的字典大小有效。结果,呼号“ RA1ABC”将被写为0BF1C2C1h-我们用了4个字节而不是6个字节。

类似地,“ KO50”网格定位器被写为2个字节的4BFAh号。所有这些都是必要的,因为最大消息长度为77位;因此,这是必需的。当然,可以传输任意文本,甚至可以传输遥测,但要受到这些限制。选择77位消息长度是在传输时间(大约13秒,不是那么快)和信息容量之间的折衷方案-可以使消息变长,但随后发送时间变长。

结果,我们所有的“ CQ RA1ABC KO50”消息都将转换为数据块00 00 00 26 28 9F D4 92 FE88。还向其中添加了14位CRC。

下一步是将91位消息转换为长度为174位的所谓LDPC(低密度奇偶校验)码-它增加了用于纠正接收期间错误的冗余。在此步骤中,消息将转换为00 00 00 26 28 9F D4 92 FE 8A CA 0C F3 D1 34 33 88 D0 C2 9C 3D CC。

频率编码


这里的一切都很简单。在这一步中,我们将把消息转换成一系列不同频率的音调。如您所知,我们可以有8个音调(调制类型为FSK-8),转换后,我们得到以下格式的序列:31406520 00000001 15353274 61112745 36563140 65201575 76054515 70523040 61407642 3140652,其中每个数字是0到7

之间的音调编号。音调之间的频率间隔为6.25Hz,一个音调的持续时间为0.16 s,具有上述序列,您可以在自主信标的情况下轻松生成WAV文件或直接控制频率合成器。

我们的消息的生成信号的频谱如下所示:



当然,一次聆听比查看频谱要好得多,a,Habr不允许附加wav文件,但是我们无法在YouTube上找到带有FT8声音演示的正常视频。现代无线电爱好者不再需要收听广播;计算机会为他们完成广播可以在此处找到无线电过程的示例:


结论


如您所见,数学上FT8是一个非常有趣的协议。WSJT-X源代码的原件是用Fortran编写的,但我仍然无法用它们解决。可以在github.com/kgoba/ft8_lib上查看C ++编码器的单独版本,以上代码段均摘自其中。那些想要的人也可以简单地下载WSJT-X版本,它是免费的,您可以在没有发射器的情况下尝试它,而只需一个声卡。您甚至可以使用http://websdr.ewi.utwente.nl:8901调谐到FT8频率,并通过虚拟音频电缆重定向声音,因此您可以在没有收发器且没有r / l呼号的情况下观看正在运行的程序。

至于FT8在业余无线电圈子中的流行……嗯,就我个人而言,这还不是很清楚,我认为在这种类型的交流中已经没有浪漫了,它更接近于工业协议,而不是爱好和创造力。但是大多数人似乎有不同的意见,这些意见在本文开头的图表中显示。数以百万计的业余无线电爱好者不会错吗?嗯,FT8本身在技术上当然很有趣,在这里,也许研究协议的过程比它的使用有趣得多。虽然,至少尝试一次该程序当然也很有趣。

所有成功的实验。

All Articles