理乃美

ソフトとハードと論理の覚え書き

GNURadioでAM変調

2021-01-24 11:02:20 | RF

Jetson nano上でGNURadio 3.7を使って実験した記録。今回は、AM変調。

GNURadioでのAM変調はとてもシンプル。最大振幅でも過変調にならないようオーディオ信号を半分にしてキャリア成分に相当する定数 0.5 を加え、複素信号に変換するだけ。アナログ回路だと、トロ活に「DBMでAM変調できることはあまり知られていませんが...」(*1)と紹介されている方法に相当する。

Flow graphは次のとおり。なお、44.1KHzサンプリングのオーディオ信号をPlutoSDR Sinkに渡す2.205MHzサンプリングに Rational Resamplerで変換しなければならないが、Complexの変換よりFloatでの変換の方が処理が軽いだろうと考えてここに置いている。

アナログ回路の場合、DSB信号を作ってそこにキャリアを加える方法もある。キャリアが0Hzだから、DSBを作ったあとに定数を足しこむ順番になる。Flow graphにすると次のとおり。

アナログ回路だと両手法でだいぶ実装が異なるが、GRC上で実現する分にはブロックの順序が入れ替わった程度の違いでしかない。

AM 送受信の全体のflow graphはこのとおり。上半分はAM変調波を作ってPlutoSDR Sinkに流し込める複素信号を作る部分。下半分はPlutoSDR Sourceからの複素信号からAMの復調をする部分で、左下で正弦波をかけている部分はTx Rxでのチューニングのずれを模擬している。

AMの復調は、複素信号の絶対値を取ったあとキャリアによる直流成分をローカットフィルタで取り除く方法にした。こうやって、flow graphのロジックが正しいこと、実時間で動作可能なことを確かめてからPlutoを使った実験にうつった。図の最下部のログに aU とうのがいくつか並んでいる。これが、オーディオ信号の出力に対して処理が追い付かずにアンダーランが起きた記録。それぞれのブロックの初期化やらなにやらで処理が渋滞するのだろうか、フローをスタートさせた直後が少しアンダーランが発生するのは致し方ないようだ。

 

1)  山村英穂, 改訂新版 定本 トロイダル・コア活用百科, p285, 2006 CQ出版株式会社, ISBN4-7898-3067-5

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

GNURadioでSSB変調 - フィルター方式

2021-01-24 00:10:37 | RF

Jetson nanoでGNU Radio 3.7 を用いて実験した記録。今回は、フィルタを使ったLSBの生成実験。

アナログ回路では、DBMでDSBを生成したあとXtalフィルタでUSB/LSBだけを通して取り出す、というのが定番。これをGRCで行う。

ただ、アナログ回路のSSBジェネレータだと、例えば搬送波9MHzのDSBを作り9MHzで通過帯域幅 3KHzのXtalフィルタに通すが、それをそのままGNURadioのフィルタで実現しようとしたってできない。その代わり、数値計算なら低い周波数でもOKなので、搬送波 0 HzのDSBを作り複素係数のバンドパスフィルタを通して -3KHz~-100HzのLSBを取り出す、といった芸当ができる。

Hilber フィルタモジュールを使ってSSBを生成したときの、サンプルレートを下げたメリットの経験も反映して作り直したflow graphがこちら。二つあるバンドパスフィルタの2つ目が黄色なのは、バイパスする設定になっているため。

44.1KHzサンプリングの疑似音声ファイルを100-2.7KHzのバンドパスフィルタに通したものをソースに、フィルタでLSBを取り出した結果のFFTはこちら。

実用的には十分と思うが、さらにバンドパスフィルタを2段重ねにするとこうなる。

なお、実験した全体のflow graphは以下のとおり。上側は LSBを生成してPluto Sinkへ流し込める複素信号を生成する部分。下側はPluto Sourceからの複素信号からダイレクトコンバージョンでオーディオ信号を得る受信部で、左下の正弦波をかけている部分は送信側と受信側の周波数がすこしずれることを模擬している。

 

疑似音声信号は、CQ出版社のサイトからRFワールド誌 No42の記事関連ファイルとしてダウンロードできるtest_signal.wav ファイルを使用。(https://www.rf-world.jp/bn/RFW42/RFW42P.shtml)

 

 

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする