SLEDGE Test WAV Creation on Windows #22026年09月12日 22:34



【WAV作成改良点・総まとめ @ChatGPT】

① AX.25フレームを正しく作った

Destination : SLEDGE-0
Source      : TEST-0
Control     : 03
PID         : F0
Payload     : SLEDGE TEST 19200 G3RUH
FCS         : 50B5

② FCSを正しく付加した。

AX.25の CRC/FCS を計算し、B5 50 をフレーム末尾に付加した。

③ AX.25のbit stuffingを実装した。

5個連続する 1 の後に、0 を挿入。11111 → 111110
これをフレーム部分だけに適用し、0x7E のFlagには適用しないようにした。

④ AX.25のFlagを正しく配置した。

今回のテストでは、128 × 0x7E → AX.25 frame → 160 × 0x7E
という構造にした。そのため SoundModem.exe が十分な同期時間を取れた。

⑤ NRZIを正しく実装した。

つまり、AX.25 bit → NRZI として、

0 = transition
1 = no transition にした。

さらに、NRZI初期状態を 0 に修正した。

⑥ G3RUHスクランブラの位置を修正した。

最終的には、AX.25 → bit stuffing → NRZI → G3RUH scrambling → 波形

という順序にした。G3RUHの多項式は、1 + x^12 + x^17

⑦ 19,200 baud / 96 kHz を正しく対応した。

96 kHz ÷ 19.2 kHz = 5 samples / symbol

つまり、1 bit = 5 samples という非常にきれいな関係にした。

⑧ G3RUH波形を単純な矩形波にしなかった。

最終的には、Dire Wolf系の G3RUH直接波形生成方式を参考にして、
G3RUH → 位相制御 → 直接sin波形に変更した。Dire Wolfでは、
NRZI出力の初期値が 0 で、その後 0 = transition / 1 = no transition。
さらにG3RUHスクランブルは、そのNRZI出力に対して行われる。
これで Audacity でも、自然なGFSK音になった。

⑨ DC偏りを修正した。

fixed5c では波形に大きなDC偏りがあった。その後、fixed5d.wav では、
平均値 = +44 まで改善し、RMSは 約28,359 となった。

⑩ そして最終的に、

fixed5d.wav → Audacity → SoundModem FSK G3RUH 19200bd
 → SLEDGE TEST 19200 G3RUH 成功★
と、実際のデコード成功まで到達した。

【現在】

Python で正しい G3RUH WAV を生成 → SoundModem → AX.25 decode → 成功★
SLEDGE_AX25_GFSK_19200_test_fixed5b_float32.dat
SLEDGE_AX25_GFSK_19200_test_fixed5d.wav

【本来の目標】

AX.25 bits → GNU Radio → G3RUH modulation → WAV → SoundModem → AX.25 decode → 成功★

今後、GNU Radioで何か変更するたびに、
GNU Radioが作ったWAVを、同じSoundModemに入れて、fixed5d.wavと同じようにデコードできるか?
だけを判定基準にできる。