FT8は、FEC (Forward Error Correction)、日本語で前方誤り訂正符号を使っています。FECとは送るデータに冗長性をもたせ、データをすべて正確に受信されない場合でも、元のデータを復元できる手法です。簡単な例として、PHONEやCWでコールサインを複数回送るというのもFECの一種です。1回目でラスト・レターが聞き取れなくても、2回目で聞き取れる、ということはよくあります。RS-232Cで用いられる(奇数/偶数)パリティも、このFECに近い手法ですが、たとえば8ビットデータ1ビットパリティの場合、9ビットのうち1ビットが間違って受信されたとき、そのデータが壊れているということが検出できます。しかし、どの1ビットが間違っていたかについては不明なため、元の正しいデータを復元することはできません。FECとは、ざっくり言うと、このパリティビットをたくさん付加して、(元データ+パリティビット全体の)データの一部が正しく受信できない場合、他のビットから復元しようとするものです。
FT8の基本メッセージ長は相手のコールサイン28ビット、自分のコールサイン28ビット、グリッドロケータ15ビット、その他6ビットの合計77ビットです。これに14ビットのCRC(Cyclic Redundancy Check)を加えます。CRCとは、奇数/偶数パリティのように、誤りを検出する手法で、元データから14ビットのCRCデータを計算し、元データにつなげます。WSJT-Xのソースコード(crc14.cpp)を見ると、多項式係数が0x2757となっているので、x^14+x^13+x^10+x^9+x^8+x^6+x^4+x^2+x+1の多項式を使っているようです。77ビットの元データから14ビットのCRCを作りますから、同じCRCを持つ別の元データが複数あるわけですが、なるべく同じCRCにならないように工夫します。思い切りざっくり言うと、元データの77ビットのうち、1ビットだけ異なる2つのデータがあったとして、その2つのデータから全然違うCRCが生成されるようにします。
次に、パリティビットを作って付加しますが、パリティを作るにはいろいろな方法があります。FT8ではLDPC(Low Density Parity-check Code)- 低密度パリティ検査と呼ばれる手法を用います。LDPCが考案されたのは、1960年と古く、エラーフロアが低く、コーディング効率が良いということで、注目されましたが、エンコード・デコードの計算量が多く、当時の遅いコンピュータでは扱いきれないものでした。しかし、1990年代後半になり、マイコンの計算能力の向上と並列に演算できるという性質から、その特長が見直され、現在では衛星テレビ、イーサネット、WiFiなど色々な分野で使われています。FT8では、元データ77ビット+CRC14ビット+パリティ83ビットの合計174ビットをひとつのメッセージとして送ります。実際に空に送信されるデータは、同期を取るための7x7のコスタス行列を、最初、中間、最後の3箇所挿入しています。コスタス行列については後日取り上げたいと思います。
2020年2月11日火曜日
登録:
コメントの投稿 (Atom)
WSJT-X 2.7.0-rc3 公開
WSJT-X 2.7.0-rc3 リリースノート 2024年1月1日 WSJT-X 2.7.0-rc3では、いくつかの新しい機能、たくさんの強化改善、バグの修正を行いました。 「Hamlib更新」機能追加。Windows版では、WSJT-Xから直接Hamlibを更新することがで...
-
みなさんがFT8をワッチしているときに、ときどき<>で囲まれたコールサインや<...>という表示が出てくることにお気づきかと思います。今日は、FT8がコールサインをどのようにエンコードして送受信しているかについて説明しながら、それら<>の意味を考えてみたい...
-
先日、PCに載っているマイクロプロセッサがAVX対応かどうか確認するツールとしてCPU-Zを紹介しましたが、別のツールもご紹介します。本家インテルが出しているツール、その名も「 Intel Processor Identification Utility 」です。Exeファイル...
-
WSJT-X 2.6.1 2023年1月16日 WSJT-X 2.6.1は、おもにQ65に関係するバグ修正版です。2.6.0からの変更点は以下の通りです。 Q65モードにおいて、送受信時間を選択するスピナーの表示を修正。 デコードメッセージのフォントを正確に表示するよう修正。 ...
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。