yoshimi.'s Diary

よしみ.が過去にやってきたことに掃き溜めです

FT8andFT4

 FT4とFT8は、アマチュア無線局間の迅速かつ正確な通信のために設計されたデジタルプロトコルであり、特に弱信号状態での通信に適しています。 最小限の2ステーションの接触で交換された情報は、通常、コールサイン、4文字のメイデンヘッドロケータ、信号レポート、および謝辞で構成されています。 特別なメッセージフォーマットは、いくつかの人気のあるラジオコンテストをサポートしており、少量ではあるが任意のテキストも伝えることができる。FT8は2017年7月にWSJT-X[1, 2]というソフトウェアパッケージのバージョン1.8で導入された。それはすぐに世界的な人気を得て、いくつかの指標によって、すぐに高周波数(HF)バンド上のすべてのハム無線活動の大部分を占めるようになりました[3]。FT4は、同様のプロトコルでありながら、特に無線コンテスト用に設計されたより高速なプロトコルで、2年後にWSJT-Xバージョン2.1で導入されました。

新しいプロトコルは、約20年前に WSJT-X とその親プログラムである WSJT で開拓された JT4, JT9, JT65, その他のデジタルモードの遺産を基に構築されている [4-11]。これらのモードは、標準的なコールサイン、グリッドロケータ、その他の基本情報を最小ビット数にロスレス圧縮した時間同期伝送と構造化されたメッセージを使用している。 強力な前方誤り訂正(FEC)は、各モードの不可欠な部分である。FT8 と FT4 は、このアプリケーションのために特別に設計され最適化された低密度パリティチェック (LDPC) ブロックコードを使用しています。通信理論の基本的な考え方は、メッセージ長、シグナリングレート、帯域幅、エラー制御符号化、変調タイプ、復号化の複雑さ、最小必要信号対雑音比(SNR)などのトレードオフを示唆しています。 WSJT-X の初期のデジタルモードである JT4, JT65, QRA64 は、VHF, UHF, マイクロ波帯での極端な微弱信号性能のために最適化されている。 これらのモードでは1分間の送受信シーケンスを使用しているため、一般的に双方向コンタクトでは4分以上の時間が必要となります。T/Rシーケンスをわずか15秒に短縮し、いくつかの重要な方法でLDPCデコーダを最適化し、(JT65との相対的な)約4dBの感度損失を許容することで、FT8は、DXingとHF、VHF、およびより低いUHF帯での一般的な使用のためのスイートスポットに到達したように思われます。FT4はさらに3.2dBの感度損失を許容するが、FT8の2倍の速度であり、高いQSOレートでのコンテストには潜在的に魅力的である。この論文では、FT4 と FT8 のプロトコルの完全なドキュメントを提供し、WSJT-X でどのように実装されているかを概説します。本論文では、FT4 と FT8 プロトコルの完全なドキュメントを提供し、WSJT-X でどのように実装されているかを概説しています。WSJT-Xは、Free Software Foundationの一般公衆利用ライセンス(GPLv3)のバージョン3でライセンスされたオープンソースプログラムです。自由に利用可能なソースコードを他の人が使用する際には、いくつかのガイドラインといくつかの制限事項があります。

 

2.構造化メッセージとソースの符号化
FT4 および FT8 伝送は、常に 77 ビットのユーザー情報を正確に伝える。 人間が読めるメッセージと基礎となる情報ビットの間のマッピングは、ソース・エンコーディングとして知られる目的のために設計された圧縮技術に依存する。 基本的な目的は、基本的なステーション間の連絡に必要な情報を伝達するために、77ビットの情報ペイロードに最大の効用を与えることである。 様々な目的のための効率的なメッセージ圧縮を容易にするために、8つの可能なメッセージタイプのうちの1つを指定するために3ビットを割り当てる。 残りの74ビットはユーザ情報のためのもので、メッセージタイプに応じてソース・エンコードの詳細を指定する。 タイプは、我々がi3と呼ぶ整数変数でタグ付けされており、74ビットより少ない情報ビットを必要とするタイプは、残りのビットを使用して、i3.n3としてタグ付けされたサブタイプを定義することができます。
表1は、現在定義されているすべてのメッセージタイプの概要を示しています。各タイプは、固定長のビットフィールドのシーケンスにマッピングされた、人間が読める定義されたフォーマットを持っており、それぞれがそのタイプに関連する特定の情報を伝える。 表1の連続する列は、各メッセージタイプについて、番号i3またはi3.n3、基本的な目的、メッセージの例、および1つ以上のビットフィールドタグのシーケンスを示している。タグ名の中の数字は、そのフィールドのビット数を示しており、n3(使用されている場合)とi3を含めたビット数の合計は常に77である。
表2は、各ビットフィールドタグによって伝えられる人間が読める情報の種類を示しています。 このタグには、コールサイン、メイデンヘッドロケータ、シグナルレポート、謝辞、様々な論理フラグ、および VHF コンテスト、ARRL RTTY ラウンドアップ、ARRL フィールドデイなどのいくつかの特別な運用活動のために許容される交換をエンコードするためのタグが含まれている。
標準的なアマチュアコールサインは28ビットで伝えることができるが、PJ4/K1ABCのような複合コールや、YW18FIFAのようなスペシャルイベントコールでは、その2倍以上の数を必要とする場合がある。 このような特殊呼に対応するために、メッセージタイプ4では、最大11文字の英数字を含む任意のコールサインを1つ使用することができます。そのようなメッセージ内の他のコールサインは、わずか12ビットのハッシュコードとして送信される。 このようなコールサインからハッシュコードへのマッピングは一意に定義されていますが、明らかに逆マッピングは一意ではありません。 WSJT-X受信ソフトウェアは、ハッシュコードを含むメッセージを見つけると、そのハッシュコードにマッピングされた最新のコールサインマッピングされている場合は "mycall")を角括弧で囲んで表示します:例えば、<PJ4/K1ABC>のように。 受信したハッシュに対応するコールサインがない場合、欠落している情報は<...>としてユーザに表示されます。 異なるメッセージタイプは、異なるハッシュコード長を使用することができます。 例えば、メッセージタイプ0.1は常に送信局のコールサインを10ビットのハッシュコードとして送信し、メッセージタイプ1は角括弧で囲まれたコールを22ビットのハッシュコードとして送信する。ハッシュコードの「衝突」はもちろん可能であるが、実際にはまれであると考えられる。 許可される値の範囲など、これらや他のソースエンコーディングアルゴリズムの低レベルな詳細は付録Aに記載されています。

3. 誤り検出と誤り訂正
14ビットの周期的冗長検査(CRC)が各77ビットの情報パケットに付加され、91ビットのメッセージプラスCRCワードが作成される。 CRCは、ソース・エンコードされたメッセージに対して計算され、77ビットから82ビットまでゼロ拡張されます。 CRCアルゴリズムは、多項式0x6757(16進数)とゼロの初期値を使用する(詳細については[13, 14]を参照)。さらに83 ビッ トが前方誤り訂正のために追加され、174 ビッ トのコードワードが作成される。順方向エラー訂正は、FT8 および FT4 用に特別に設計された(174, 91) LDPC コードを使用して実行されます。 コードは 2 つのマトリクスで定義されます。各 91 ビッ トのメッセージプラス CRC ワードに付加される 83 ビットのパリティ ビッ トを計算するために使用されるジェネレーター マトリクスと、指定された 174 ビッ ト シーケンスが有効なコードワードであるかどうかを判断するために使用できるパリティ マトリクスです。両方の行列のすべての値は 0 または 1 であり、関連する演算はモジュロ 2 二進法を使用します。ジェネレータ行列は 83 行 91 列です。これは、generator.datというファイルで定義されており、参考文献[14]にある他の多くの有用なファイルと一緒に含まれています。行列の i 行目にある 0 以外の値は、i 番目のパリティチェックビットを生成するために、91 個のメッセージプラス CRC ビットのうち、どのビットを modulo 2 で合計しなければならないかを指定します。 同様に、ファイル parity.dat[14]は、疎なパリティチェック行列を定義している。この行列の各行にある 1 の位置は、174 ビットのコードワードのどのビットの合計が (モジュロ 2) ゼロにならなければならないかを指定しています。 174ビットワードは、83個の和がすべてゼロである場合にのみ有効なコードワードである。
4. チャンネル記号と変調
FT8 メッセージは、8 トーン連続位相周波数シフトキーイング(CPFSK)を使用して送信されます。各送信トーンまたはチャネルシンボルは3ビットを伝送します。 174個のコードワードビットのシーケンスは、nが0から57までの範囲である174/3 = 58個のチャネルシンボルanのシーケンスにマッピングされています。 各シンボルの値は、0 から 7 の範囲のトーンインデックスに対応しています。3 つの連続したメッセージビットのグループは、表 3 の 1 列目と 2 列目で定義されたグレイコードを使用してチャネルシンボルにマッピングされる。 このマッピングにより、隣接するトーンに関連付けられたビット・トライアドが1つのビット位置でのみ異なることが保証され、それにより、ドップラー・スプレッドがトーン分離に匹敵するチャンネルでのデコード性能が向上します。FT4も同様であるが、4トーンのCPFSKを使用するため、各チャンネルシンボルは2つのメッセージビットしか伝えない。174個のコードワードビットのシーケンスは、174/2 = 87個のチャンネルシンボルan, n = 0, 1, 2, ... 86のシーケンスにマッピングされ、各シンボル値は0~3の範囲の整数のトーンインデックスとなります。連続するメッセージビットのペアは、表3の1列目と3列目で定義されるグレイコードに従ってチャネルシンボルにマッピングされる。FT8 と FT4 の波形には、Costas アレイと呼ばれるトーン・パターンが埋め込まれており、受信ソフトウェアが時間と周波数の両方で受信信号に適切に同期できるようになっています。 FT8 では、送信波形の先頭、中間、末尾に挿入された 7 つのトーン・シーケンス 3, 1, 4, 0, 6, 5, 2 を使用します。 同期シーケンスをSとし、情報シンボルの前半と後半を

FT4における同期化は、以下のように定義された4つの異なるCostasアレイを使用します。

FT4の送信には87個の情報伝達シンボルが含まれています。これらを29の3つのグループに分けます。

キーイング過渡現象を最小化するために、トーン・インデックス0の特別なランプ・シンボルRを追加し、各波形の開始時と終了時に振幅ゼロからゼロへの遅い遷移を確立します。105個のチャンネル・シンボルの完全なセットは、次のような値のシーケンスとして組み立てられます。

5. 生成された波形
どちらのプロトコルも連続位相周波数シフト・キーイングを使用しており、これは以下の形式の波形が生成されることを意味します。

ここで、Aは信号振幅、fcは搬送波周波数、tは時間、φ(t)は位相である。位相項は、瞬時周波数偏差の積分 fd(t)として書くことができます。

この方式では、φ(t)が連続的であることが保証されており、たとえfdの不連続なステップにまたがっても、φ(t)は連続的である。信号の振幅Aは、送信の開始と終了時に強制的な立ち上がり時間と立ち下がり時間がある場合を除いて一定です。 この一定振幅または一定包絡線の特徴は、信号の非線形増幅が相互変調生成物を生成しないことを保証します。
周波数偏差 fd(t) は、一連のパルスの加重和 p(t) として評価されます。

ここで、hは変調指数と呼ばれ、重みbnはチャネルシンボル値、p(t)は周波数偏差パルス形状、Tはシグナリング間隔である。 周波数偏差パルスは単位面積を持つように正規化されている。

したがって、シンボル bn で重み付けされたパルスは、パルスの持続時間にわたってキャリアの位相を 2πhbn ラジアン進ませることになる。 FT4 と FT8 以外の WSJT-X モードでは、p(t) は持続時間 T、ピーク振幅 1/T の矩形パルスである。 これらのモードでは、n 番目のパルスの瞬間的な周波数偏差は hbn/T である。
パルス振幅bnは、FT8では0~7、FT4では0~3の範囲の整数である。CPFSK信号の占有帯域幅とスペクトル形状は、変調指数h、シグナリング間隔T、および周波数偏差パルスp(t)の形状に依存する。これらのパラメータは、表4にまとめられており、比較のために、FT4とFT8に加えて、WSJT-Xでサポートされている他のいくつかのモードを含んでいる。JT4, JT9, JT65, MSK144 は、矩形の周波数偏差パルスを使用しているため、周波数偏差 fd は、bn がある信号区間から次の信号区間に変化したときに不連続にジャンプする。このようなジャンプは、CPFSK信号に比較的大きなスペクトル・サイドローブを生成する。FT4 および FT8 では、周波数偏差関数 fd(t) をガウスフィルタで平滑化することで、このサイドローブは最小化されます。 このようにして生成された波形は、ガウス周波数シフトキー(GFSK)信号と呼ばれています。
周波数偏差波形を直接平滑化するには、新しいメッセージが生成されるたびに数値的な畳み込みが必要になります。ガウス平滑化フィルタを孤立した矩形パルスに適用した方が計算効率が高く、一度だけ実行する必要があります。 その後、ガウス平滑化されたパルスを式(1)に従って重ね合わせて、GFSK周波数偏差波形を得ることができます。 このような波形は、まず矩形パルスでFSK波形を生成し、それをガウス平滑化関数で畳み込むことで得られる波形と同等である。
正規化条件(2)を満たすガウス平滑化パルスは、誤差関数 erf(x)の項で次のように書くことができる。

ここで、定数 k=π2 / ln 2 = 5.336...、B は平滑化フィルタの-3 dB 帯域幅である。誤差関数 erf(x) は次のように定義されます。

 ガウシアン平滑化フィルタは、ガウシアン形状のローパス周波数特性を持つフィルタです。 FT8 では、-3 dB の帯域幅を B = 2T-1、または BT = 2 に設定します。FT4では、BT = 1でより重く平滑化されたパルスを使用しています。 非常に大きなフィルタ帯域幅 1,BT の限界では、式(3)で定義されるパルス形状 p(t) は矩形になり、古い WSJT モードで標準 FSK を生成するために使用されていたパルスと同等になる。平滑化されたFT4,FT8パルスの持続時間は信号間隔Tよりも大きいため、連続したパルスが重なっている。このシンボル間干渉(ISI)は、サイドローブレベルを低減するために放射スペクトルを整形する目的で意図的に導入されています。 FT4とFT8で使用されているBTの値では、有意なISIはすぐに隣接するパルス間にのみ存在します。したがって、式(1)を用いてfd(t)を生成するためにパルスを合計する場合、時刻tでは、中心がtに最も近いパルスとその直前と直後のパルスからの寄与だけを含める必要がある。図2は、FT4の周波数偏差波形fd(t)の一部を示しています。シンボル境界の波形の角が丸くなっているのがわかります。GFSKを使用した場合のスペクトル・サイドローブの低減効果を説明するための例として、図3は、FT4信号のスペクトルと、スムージングなしの標準FSKを使用して生成された信号のスペクトルを示しています。サイドローブレベルの違いが顕著です。

FT4およびFT8信号のスペクトルはコンパクトであるため、数十個の信号が数kHzのスペクトル・スライスを占めることができ、信号間の干渉はほとんどありません。FT8 信号は、最初の同期シンボルの開始時に、遷移間隔 T/8(20ms)にわたって徐々にランプアップされます。ランプ関数は上昇した余弦であり、図4はFT8ランプ関数とFT8波形の先頭部分を示している。同じテーパーを逆に使用して、送信終了時に信号を徐々にランプダウンさせています。FT4 波形も同様にソフト・キー化されていますが、今回は先に説明した特殊なランプ・シンボル R の 48ms の持続時間全体に適用されるレイズド・コサイン・テーパを使用しています。

 

6. シンボルの検出と復号
セクション2から5、付録A、および参考文献[14]のリソースは、FT4およびFT8プロトコルに関連するソース符号化、誤り訂正符号化、および変調方式を定義している。 これらのプロトコルの適切な実装は、これらの定義に厳密に従うべきである。このセクションでは、WSJT-Xで使用されているFT4とFT8信号の検出と復号のためのいくつかの実装固有の方法について説明する。他のアプローチも可能であり、他のソフトウェア開発者が使用しているかもしれません。
WSJT-X は、可能な限り弱い信号をデコードするために、高度な検出とデコード技術を使用しています。 WSJT-X は、可能な限り弱い信号をデコードするために、高度な検出・復号化技術を用いています。 シングルシンボル検出は、急速にフェージングするチャネルではロバストな検出が可能であるが、ブロック長が長いと、遅いフェージング条件では感度が向上する。ここでは、FT8ではN=1、2、3シンボル、FT4ではN=1、2、4シンボルのブロック長を使用しています。
ブロック検出は、N個のシンボルにまたがる受信波形セグメントを、M個のN個の可能なシンボルシーケンスのそれぞれに対応する局部的に生成された波形と相関させることによって行われる。 ここで、Mは各モードで使用する変調波形(トーン)の数であり、FT8ではM=8、FT4ではM=4である。この技術が感度利得を得るためには、受信信号はブロック長にわたって位相が安定していなければならない。 しかし、このような検出は、シーケンス間の位相連続性が想定されていないため、非コヒーレントと言われている。 また、複素値相関の大きさのみを利用し、受信信号と局所的に発生する波形との位相差に依存しない検出が可能である。 ブロック検出器からの出力は、M N 個の正の実相関値の集合である。 これらは、N-シンボルシーケンスによって伝達されるN log2Mビットのそれぞれについてのソフト決定を導出するために使用されます。
波形相関値をソフト決定値に変換するには、ソフトデマッパーを使用します。特定のシンボルシーケンスに関連付けられた j 番目のビットである xj のソフトメトリック Lj は、次のように書くことができます。

ここで、1maxjiixC は、受信波形と xj = 1 を持つビット列に関連付けられた理想波形との間の MN/2 相関のセットからの最大の相関の大きさであり、2 番目の項は、xj = 0 に関連付けられた相関のセットの他の半分の相関からの最大の大きさである。正規化定数Kは、経験的に調整され、SNRとチャネル条件の範囲にわたって性能が最適化されます。 例えば、N = 3 つの連続した FT8 シンボルのシーケンスのブロック検出を考えてみましょう。 各シンボルは M = 8 のいずれかの値を持つ可能性があるため、83 = 512 の 3 シンボル波形があり、受信波形の各 3 シンボルブロックと相関する可能性があります。結果として得られる 512 個の相関値は、シーケンスによって伝達される 9 ビットのソフト決定を決定します。実際には、WSJT-Xは、高速フーリエ変換を使用して、最初に単記号(N = 1)検出に必要な8つの相関を計算します。シングルシンボルの複素数結果は、N = 2 に必要な 64 個の相関関係と N = 3 ブロック検出に必要な 512 個の相関関係を生成するために結合され、無駄な計算を避けることができます。

   ブロックサイズごとに174個のソフト決定のセットが得られる。これらは、N = 1のセットから始めて、デコーダに提出される。デコーダが、77ビットのメッセージが復号化されたCRCと一致する14ビットのCRCを生成するコードワードを返す場合、アルゴリズムは終了し、復号化されたメッセージは展開されてユーザに表示される。
我々のデコーダは、高速で反復的な信念伝播(BP)アルゴリズム[16]と、より高感度だが計算量の多い順序統計解読(OSD)アルゴリズム[16]を組み合わせたハイブリッドアプローチを使用している。実際には、ほとんどの受信信号はBPアルゴリズムを数回繰り返すだけで復号化されることがわかっている。 BPが妥当な回数の繰り返しで有効なコードワードを見つけられなかった場合、ソフト決定はOSDアルゴリズムに提出される。 OSDアルゴリズムは、特定の条件下で数dBの感度向上を実現することができる。OSDアルゴリズムの我々の実装は、参考文献[17]の前処理ルールを取り入れている。 これらのショートカットにより、OSDアプローチの計算効率が大幅に改善されることがわかった。
我々のデコーダは、QSO中に蓄積されるいわゆるa priori(AP)情報をオプションで利用することができる。 例えば、あなたがCQに応答するとき、あなたはすでに自分のコールサイン潜在的QSOパートナーのコールサイン、およびあなたの応答が成功した場合に受信すると予想されるメッセージのタイプを知っています。 したがって、復号化ソフトウェアは、次の受信メッセージに含まれる少なくとも62のメッセージビット(2つのコールサインと/Rフラグのそれぞれに29、Rインジケータに1、メッセージタイプに3)について何が期待されるかを「知っている」ことになります。 これらのビットが仮説として仮定されているため、デコーダのタスクは、メッセージの残りの15ビットを決定し、結果として得られる解が信頼性の高いものであることを保証することに削減される。 AP情報を使用することで、感度を数dB向上させることができますが、その代償として誤デコード率が多少高くなります。
表5は、シミュレーションから導き出されたFT4とFT8の測定されたデコードしきい値を示しており、ブロック検出とOSDによって提供される感度の向上についての洞察を提供している。 ここでもその他の場所でも、引用された感度しきい値は、デコード確率が0.5である2500 Hz帯域幅におけるS/N比である。各モードの表の最初の行の数字は、シングルシンボルN=1検出とBP復号化を行うベースラインの場合を示す。次の2行は、ブロック検出とブロック検出をハイブリッド(BPとOSD)復号化で追加したものである。列2は、非フェージング加法白色ガウスノイズ(AWGN)チャネルの結果を与え、列3および4は、それぞれ1Hzおよび10Hzの周波数スプレッドを有するチャネルの結果を与える。チャンネルモデルの詳細については、セクション8を参照してください。AWGNチャネルでは、ブロック検出によりFT4とFT8でそれぞれ1.6 dBと0.7 dB感度が向上していることがわかります。 ハイブリッドデコーディングを追加すると、さらに0.6dBと0.5dB向上します。全体として、ブロック検出とハイブリッドデコーダは、FT4とFT8でそれぞれベースラインの場合より2.2dBと1.2dBの感度向上を実現しています。中緯度の妨害チャネルでは、ブロック検出により1.3dBと0.5dBの感度向上が得られ、全体では2.5dBと2.1dBの向上が得られています。高緯度の妨害チャネルのドップラー拡散はFT8のトーン間隔を超えており、FT8はベースライン復号化スキームのみを使用しても、どのSNRでも50%の復号化確率を達成することができない。トーン・スペーシングが大きいFT4は、このチャネルではFT8よりも優れている。この急速に退色するチャネルのコヒーレンス時間は、マルチシンボル・ブロックの持続時間と同等かそれよりも小さいため、この場合、ブロック検出は大きな改善にはなりません(FT4の場合は0.1 dBしかありません)。
信号がデコードされた後、実際に送信された波形を再生成するために必要な情報が得られます。この再生された信号を参照して、伝搬チャネルの効果を記述する時間変化する複素利得関数を導出します。 実際に受信した音声信号を s(t) とし、複素参照信号を次のように定義します。

 

ここで、f0 は復号化された信号の推定音声周波数であり、A(t)とφ(t)は送信波形の振幅と位相である。 時間変動複素チャネル利得関数g(t)は、次のようにして得られる。

ここで、LPF[ ]はローパスフィルタ、*は複素共役を表す。ローパスフィルタのカットオフは、様々な伝搬条件の下で受信された実信号で最高の性能を発揮するように最適化されています。 推定されたチャネル利得関数を理想的な基準信号に適用して,チャネルに起因する振幅フェージングや位相変動を含む,受信信号の波形をほぼノイズのないバージョンに再構成します. 再構成された信号は、受信データから減算されます。

ここで、R[]はその引数の実部を取り、s'(t)は復号化された信号を減算した後のオーディオ波形である。 この減算処理は、減算された強い信号と同じ周波数スロットを占める弱い信号を発見することができる。弱い信号は、最初のパスでデコードされた信号がすべて減算された後、2回目のデコードパスでデコードされることがあります。
WSJT-X は、受信したパスバンド内に多くの信号が含まれている可能性のあるオーディオ波形を解析します。デコード・パスは、スペクトル分析を用いて、可能性の高いすべての信号(候補)を特定することから始まります。 (2) 3つのブロック長のそれぞれについてソフトデシジョンを決定し、BP単独またはBP+OSDを用いてデコードを試み、デコードが成功した場合は信号を減算します。最初のデコードパスで少なくとも1つの信号がデコードされ減算された場合、残りのオーディオ波形が再分析される。新たな候補が識別され、各候補に対してステップ1から3が実行される。 2回目のパスで少なくとも1つの新しい信号がデコードされ、減算された場合、3回目のパスでは、最初の2回のパスで見逃したデコードが得られることがあります。マルチパスデコードは非常に効果的であることが証明されています:このアプローチでは、多くの場合、同じまたはほぼ同じ周波数で2つまたは3つの信号をデコードすることができます。

7. メッセージの順序付け
K1JTとK9ANの間の基本的なQSOは、以下のメッセージで構成されているかもしれません。

ここで、Txn: ラベルは WSJT-X のユーザインタフェースのメッセージ入力フィールドを識別するためのラベルです。 このモデルでは、偶数番号のメッセージは K1JT が、奇数番号のメッセージ(右にずれたメッセージ)は K9AN が送信します。 すべてのメッセージは送信局のコールサインを持ち、CQ以外のすべてのメッセージは特定のQSOパートナーに明示的に指示されていることに注意してください。ほとんどのQSOは、示されているシーケンス、またはコンテキスト、伝搬、および干渉条件に応じて密接に関連するものに従います。 通常の使用法では、QSOパートナーからの応答をデコードできない場合は、前の送信の繰り返しを意味する。
従来、オペレータは、WSJT-X[1, 2, 19]とその前身であるWSJT[4-11]のユーザインタフェース(UI)上のボタンをクリックして、上記のようなシーケンスで次のメッセージの送信をトリガしていました。1 分間の T/R シーケンスを持つプロトコルでは、デコードから次の送信の開始までの間に約 10 秒の時間が残されているため、次の送信を決定して起動するための時間が十分にある。 しかし、FT8 と FT4 の短いシーケンスは、はるかに速い応答を必要とし、ソフトウェアに組み込まれた中程度の自動化を効果的に必要とします。
Auto Seq」というラベルの付いた UI チェックボックスがチェックされている場合、ソフトウェアはデコードされたメッ セージを解析して、「mycall」に向けられた標準的な QSO シーケンスの有効な応答を受信したかどうかを判断する。そうであれば、シーケンスの次のメッセージがキューに入れられて送信されます。この一連のイベントは、QSOが完了するか、ユーザのアクションによって放棄されるまで進行する。 いくつかのオプションの例外(FT8 DXpedition モードでの "Fox "操作、およびコンテスト操作)では、QSO の詳細を確認し、ロギングのためにそれらを提出するために、ユーザアクションも必要とされます。いずれにしても、WSJT-Xの設計上、すべてのQSOは人間のオペレータによって開始されなければなりません。 FT4 や FT8 のような完全にロボット的な操作は好ましくなく、WSJT-X ソフトウェアはそれを防止しています。
これらの中程度のレベルの自動化は、ソフトウェアのロジックをかなり多く含み、基本的には、有効なQSOを進行するための注意深いユーザの思考プロセスを複製することになります。 忙しいHF帯やVHF帯での典型的な運用では、1回の受信シーケンスで数十個の有効なFT4またはFT8メッセージがデコードされることがあります。 受信ソフトウェアは、これらのすべてを分析し、すでに進行中の QSO に対して予想されるシーケンスの中で有効な応答であるかどうかを判断し、適切な処置を取らなければならない。図 5 に WSJT-X の自動シーケンス動作の 6 つの主要な状態の概要を示します。 プログラムの起動時に、Halt Tx がクリックされると、論理ステートマシンは Calling 状態になります。標準的なQSOのそれ以降のステージは、Replying、Report、Roger_Report、Rogers、Signoffの各ステートを通過しながら、このセクションの冒頭で説明した送信メッセージと受信メッセージのシーケンスを進行します。
各メジャーステートは、指定されたタイプのメッセージを受信したときにどのようなアクションが取られるかを決定する独自の内部ロジックを持っています。呼び出し状態のこのロジックの理想化された省略された表現を図 6 に示します。ここと図5では、Unified Modeling Language [18]の表記法を使用しています。例えば、テキスト
メッセージ == Tx1] / Tx メッセージ = Tx2
状態遷移行に添付されている「trigger [guard condition] / action」の形式は、「trigger [guard condition] / action」であるため、これはトリガイベントなしで自動的に発生する遷移ですが、解析されたばかりのメッセージが標準のTx1フォーマットを持っている場合にのみ発生します。この場合、この遷移は、送信用にキューに入れられた次のメッセージを生成された Tx2 メッセージとして設定するという副作用があります。
ユーザインタフェースには、自動シーケンス動作の詳細を設定するためのオプションが用意されていますので、WSJT-X 2.1 User Guide[19]を参照してください。

8. パフォーマンス測定
 FT4 と FT8 を設計する際には、ITU [12] で推奨されているアプローチに基づいたチャネル シミュレーションを使用して、実世界の条件で達成できる性能を評価しました。 チャネル モデルでは、平均減衰が等しく、周波数スプレッドが等しい2つの独立したフェージング パスを想定しています。 チャネルは、その周波数広がりと差動パス遅延によって定義されます。 参考文献[12]では、低緯度、中緯度、高緯度の陸域での静かな条件、中程度に乱れた条件、および非常に乱れた条件での周波数広がりとパス遅延パラメータを規定しています。この論文で参照されている ITU チャネルは、FT4 および FT8 シンボル持続時間と比較して微分パス遅延が小さいため、このパラメータは性能にほとんど影響を与えない。モードのトーン間隔に対するチャネルの周波数の広がりの大きさは、性能低下の程度を決定する最も重要な要因である。図 7 は、WSJT-X バージョン 2.1 を使用して、非フェージング加法ホワイトノイズ (AWGN) 条件で、中緯度の乱れたチャンネルと高緯度の中程度の乱れたチャンネルでシミュレートされた FT4 と FT8 の波形をデコードして得られた FT4 と FT8 の性能を比較したものです。表6は、これらのチャンネルのチャンネル・パラメータとデコード閾値を、中緯度の静寂チャンネルと中緯度の中程度のチャンネルとともに示しています。 FT8 は、周波数の広がりが両方のモードのトーン・スペーシングよりも小さい AWGN および中緯度チャネルで FT4 よりも約 3 dB の感度の優位性を維持しています。高緯度チャネル上の周波数広がりは、FT8のトーン間隔よりも大きく、FT4のトーン間隔よりも小さいので、その場合にFT4が最も性能を発揮する理由が説明される。表6は、可能な最大量のAP情報が利用可能な場合に得られるデコードしきい値を含む。 最大のAP情報は、妨害の少ないチャンネルでは約2dBの追加感度を提供し、周波数の広がりが大きくなるにつれて改善度が増大する。最も妨害されたチャネルでは、FT4とFT8でそれぞれ約5 dBと10 dBの大きな改善が得られる。この傾向は、利用可能なAP情報が少ないシナリオでも同様です。図 8 は、AP 情報を使用することで QSO が進むにつれてどのように感度が向上するかを詳細に示しています。 図 8 は、QSO の進行に伴って AP 情報を使用することでどのように感度が向上するかを詳細に示しています。 APなし」とラベルされた曲線は、図7の「FT8 Mid disturbed」とラベルされた曲線と同じである。caller "とラベルされた曲線は、CQ、または "mycall "に向けられた他のメッセージへの応答に対する感度を示す。レポート」とラベル付けされた曲線は、QSOパートナーの既知のコールサインから発信された「マイコール」に向けられたメッセージに対する感度を示す。 この曲線は、QSO中のレポートまたはロジャーレポートメッセージに対する感度を示す。最後に、「RRR/RR73/73」とラベル付けされた曲線は、QSOの最後にQSOパートナーからのRRR、RR73、または73メッセージに対する感度を表す。図8は、AP情報として「mycall」のみを使用した場合の発呼者に対する感度のささやかな向上を示している。 このようなAP情報の利点は、発信者が送信間隔の開始から0.5秒後の公称開始時刻に送信を開始しなかった場合に、より顕著になる。 このような場合、WSJT-X は、送信の失敗した部分をスキップして、残りの部分を正しく同期されたメッセージの送信を開始します。 このような切り捨てられたメッセージを受信した者は、メッセージシンボルの一部しか収集しません。このような現象が発生する一般的なシナリオは、CQに対する「遅れた」応答である。 例えば、G4WJSがCQを呼び出すとする。 彼は、自分の呼に対する応答がG4WJSに宛てられていることを知っている。図9の「APなし」曲線は、AP情報を使用しないと、Tx間隔の開始から5秒以上後に送信を開始する発信者からの応答がデコードされないことを示している。AP mycall」と表示された曲線は、デコーダがG4WJSに向けられた応答を特別に探している場合の開始時間の関数としてのデコード確率を示している。 この場合、8秒まで遅れて開始された送信は正常にデコードされる可能性が高い。

9. まとめとソフトウェアライセンス
この論文と参考文献[14]にあるオンラインリソースは、FT4とFT8プロトコルの完全な説明を提供しています。オープンな共有の精神で、私たちのアイデアのいくつかを使用する可能性のある他のソフトウェア開発者を奨励するために、私たちは以下を配置します。
の記述をパブリックドメインで使用するには、以下の制限があります。
-他のソフトウェア実装者は、ソース符号化、誤り訂正符号化、および変調フォーマットのための我々のプロトコル定義に従う場合に限り、"FT4 "および "FT8 "という名前を使用することができます。
- ロボットや無人QSO は明示的に禁止しなければならない。
- FT8 DXpedition モードと同様の波形やメッセージ内容のマルチストリーミングは、WSJT-X 2.1 User Guide[19]に記載されているガイドラインの範囲内でのみ許可されます。
- 現在割り当てられていないメッセージ・タイプ(表1参照)は、将来の拡張のために予約されており、当社の許可なしに割り当ててはなりません。
-ロボティック、無人、不適合なマルチストリーミング操作を可能にするこれらのプロトコルの実装では、"FT4 "や "FT8 "という名前を使用してはならず、同期のために異なるCostas配列を使用するなど、何らかの方法で互換性のないものにしなければなりません。
参考文献[14]に含まれるコードを除いて、FT4、FT8、MSK144の実装のソースコードパブリックドメインではありません。むしろ、WSJT-Xのすべてのコードは著作権で保護されており、GNU General Public License (GPLv3)バージョン3の条件でライセンスされています。 簡単に言えば、GPLv3はエンドユーザがソフトウェアを実行、研究、修正する自由を保証しています。
わたしたちはFT4とFT8の独立したソフトウェア実装を歓迎しますが、(1)上記のすべての要件を守るか、(2)上記のパブリックドメインのリソースを超えてわたしたちのソースコードを使わないかのどちらかである限り、です。私たちは、WSJT-X とその前身である WSJT-X で開拓された技術革新の多くが、現在の開発者よりも長生きし、 アマチュア無線による微弱信号通信の技術を今後何年にもわたって発展させていくことを期待しています。

付録 A. ソースの符号化の詳細
本稿の第 2 節では、WSJT-X で開発された FT4, FT8, MSK144 プロトコルが、コールサイン、メイデンヘッドロケータ、シグナルレポート、その他の情報をいかに効率的に圧縮して伝送するかをまとめている。表 1 と表 2 は、基本的なソース・エンコーディングフレームワークの概要を示しており、各メッセージ・ペイロードは固定長のビット・フィールドのシーケンスで構成されています。 この付録では、人間が読めるメッセージ・フラグメントから固定サイズの77ビット・メッセージ・ペイロード内の関連フィールドへのマッピングを完全に定義するために必要な詳細が完成しています。FT4またはFT8プロトコルを実装したいと思うかもしれない他の人の便宜のために、定義のいくつかの重要なアルゴリズ ム的な部分は、単純で非常に短いFortranプログラムで提示されており、そのソースコードは公開ドメイン[14]に置かれている。
最初のステップとして、標準コールサインと4文字のメイデンヘッドロケータがそれぞれ28ビットと15ビットのフィールドにエンコードされる方法を定義します。WSJT-X 2.1 User Guide[19]で説明されているように、標準的なアマチュアコールサインは、1文字または2文字のプレフィックス(少なくとも1文字は文字でなければならない)と、10進数と3文字までのサフィックスで構成されています。これらの規則の中で、コールサインの数は373610272727=262,177,560になります。 (27と37という数字は、最初と最後の3つの位置に文字がないか、文字があるか、桁があるかもしれないからです)。228 = 268,435,456はより大きな数なので、28ビットで標準的なコールサインを一意に符号化できますが、他のタイプの情報を伝達するために6,257,896個の値を残すことができます。これらの余剰値のうちのいくつかは、DE、QRZ、CQなどの特別なメッセージ構成要素に割り当てられています(オプションで修飾子が付いています)。 さらなる222=4,194,304は、コールサインのための22ビットハッシュコードを伝えるために使用される。
同様に、180180=32,4000の4桁のメイデンヘッドグリッドロケータがある。この数は215=32,768よりも少ないので、グリッドロケータは15ビットで一意に表現できる。グリッドロケータに必要とされない368個の15ビット値のうちのいくつかは、-30〜+99dBの範囲内の+nnの形式の数値信号レポート、または空白、またはRRR、RR73、または73のいずれかの単語を伝達するために使用される。
特定の例として、ほぼすべての FT4 および FT8 QSO の必須部分であるメッセージタイプ 1 のビット割り当てを考えてみましょう。 これらの基本的なメッセージは、通常、2つの28ビットコールサイン、オプションの確認応答R、および4文字のロケータ、シグナルレポート、RRR、RR73、または73を含む。表1に示すように、このメッセージタイプは、タグc28,r1,c28,r1,R1,g15,i3を持つフィールドで構成されている。この場合、「R1」は通常0であるが、「1」は北米VHFコンテストで「ローバー」のステータスを示すための/Rコールサインの接尾辞を意味する。 R1 フィールドは、g15 によって伝達されるロケータまたは信号報告の前に、確認応答 R の不在(0)または存在(1)を伝達する。最終的な 77 ビットの情報ペイロードでは、ビットフィールドは、表 1 に示す左から右への順序で組み立てられ、n3(使用されている場合、現在はタイプ 0 でのみ使用されている)と i3 が続く。
次に、人間が読めるメッセージの断片を表2に示す名前のタグ付きビットフィールドにマッピングするアルゴリズムを簡潔に説明する。この目的のためには、参考文献[14]に記載されているパブリックドメインFortranプログラムが不可欠です。 開始するには、圧縮されたtarファイル
ft4_ft8_protocols.tgz を www.arrl.org/QEXfi les のウェブページからダウンロードして、適当なディレクトリに解凍し、Makefile の一番上にあるお使いの OS (Windows, Linux, macOS) の簡単な説明に従ってください。 これらのステップは、gen_crc14、free_text_to_f71、grid4_to_g15、grid6_to_g25、hashcodes、nonstd_to_c58、std_call_to_c28の7つのプログラムの実行ファイルをビルドします。
表 2 に示すタグ付きビットフィールドの簡潔な定義は、アルファベット順に以下の通りである。

c1: メッセージタイプ 4 でのみ使用される。値 1 は、CQ と非標準呼符(例えば CQ PJ4/K1ABC)で構成されるメッセージを示す。
c28:標準呼出符号、または特別なメッセージ語CQ、DE、QRZのいずれか、または22ビット呼出符号ハッシュコードを伝えるために使用される。CQ の後には、10 進数 3 桁または 1~4 文字の修飾子を付けることができます。CQ、DE、またはQRZを持つ可能性のある各メッセージフラグメントは、表7に示されているように、指定されたc28の整数値にマッピングされる。 呼符の値は、std_call_to_c28 プログラムで説明されているアルゴリズムを使用して計算され、ハッシュコードは hashcodes プログラムで計算される。
c58: nonstd_to_c58 プログラムで説明されているアルゴリズムを使用して、最大 11 文字までの非標準コールサインエンコードするために使用されます。
f71: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ+-./?の中から最大13文字を選択して、空白文字を加えた任意のフリーテキストを伝えます。エン コ ーデ ィ ン グ アルゴ リ ズ ムは、 プログラム free_text_to_f71 で図示しています。
g15:プログラムgrid4_to_g15のアルゴリズムを使用して、4文字のメイデンヘッドロケータ、シグナルレポート、RRR、RR73、73、または空白のメッセージワードをエンコードする。
g25: grid6_to_g25 プログラムのアルゴリズムを使用して、6 文字のメイデンヘッドロケータをエンコードします。
h10,h12,10,12,22 ビットのコールサインハッシュコード。
h22:ハッシュアルゴリズムはプログラムのハッシュコードで定義されています。
k3:ARRLフィールドデイクラスA〜F、0〜5の整数値としてエンコードされています。
n4: n4: メッセージタイプ0.3では、同時に送信される信号の最大数から1を引いた値。メッセージタイプ0.4では、同時に送信される信号の最大数から17を引く。
p1:呼符サフィックス/P.r1の有無(0)または存在(1)。r1:呼符接尾辞 /R の不在(0)または存在(1)。
r2: 値0は空白のメッセージワードを符号化し、値1~3はRRR, RR73, 73.r3を符号化する。値0~7は52, 53, ...59(メッセージタイプ0.3)と表示される信号レポートを符号化する。59(メッセージタイプ0.3)または529, 539, ... 599(タイプ3)と表示されます。
R1: グリッドまたはレポートの前の確認応答Rの有無(0)または存在(1)。
r5: 値 0 ~ 31 は信号のレポートを伝える -30, -28, ... +32 dB(偶数のみ)。
s11: シリアル番号、範囲0~2047。
s13: 値0~7999はシリアル番号を表し、値8001~8065は参考文献[14]に含まれているルックアップテーブル states_provinces.txtを使用して、米国の州とカナダの州の略語をエンコードします。
S7: 値0~83は、参考文献[14]に含まれるルックアップテーブルarrl_rac_sections.txtを使用して、ARRL/RACセクション名の略語をエンコードする。
t1: t1: TU の不在(0)または存在(1);タイプ 3 メッセージの開始時。
t71: t71: テレメトリ・データ、最大18桁の16進数または71ビット。18桁の場合、最初の桁は0~7の範囲でなければなりません。ここでは、FT4の場合のみ、CQメッセージを送信する際に長いゼロの文字列を送信するのを避けるために、組み立てられた77ビット・メッセージは、CRCおよびFECパリティ・ビットを計算する前に、以下の疑似ランダム・シーケンスでビットごとに排他的にORされることに注意してください。
01001010010111101000100110110100101100001000101001111001010101011011111000101
受信側ソフトウェアは、この排他的論理和手順を2回目に適用して、元の77ビットメッセージを復元する。