Computer & RF Technology

CentSDRでスペクトラムに加えて波形も表示するようにしてみた

スペクトラムやウォーターフォールの表示は、最近の受信機では珍しくなくなりました。スペクトラムが表示できるなら、波形を表示することも可能なはずですが、あまり実例をみたことがありません。

そこでCentSDRでやってみたらできました。面白いです。ウォーターフォールの表示部分を切替操作で波形表示モードを選べるようにしています。スペクトラムと波形を同時に眺めることで信号処理の理解がより深まるのではないかと思います。

上は受信モードをLSBにして、SGから7.099MHz -80dBmの信号を入れ、7.100MHzを受信した様子です。90度位相のずれた正弦波が表示されているのがわかります。波形の横軸は1ms/divです。復調信号は1kHzなので、正弦波の周期がちゃんと1msになっています。スペクトラムでシングルトーンなので、当然ながら波形も正弦波なわけです。チューニングをずらすと波形も変わります。IQ信号なので、たとえば7.101MHzにすると、正と負の周波数で位相の関係が入れ替わるのがわかります。

ちなみにスペクトラムの縦軸は1ピクセル1dBで64ピクセル分、10dB/divにしてあります。狭いですが64dB分のレンジがあります。計算なので相対強度は正確です。

さて、実際のAM放送の信号処理過程を見てみます。制約としてコーデックチップのAD変換でDC成分を取り込むことができないため、AM放送の受信では周波数をずらしてサンプリングをおこなっています。もしぴったりに合わせてしまうと、キャリアが0Hz=DCになって成分が消えてしまい復調に不都合が生じるのです。そのため、AM放送の8kHz程度の帯域をカバーすることを想定して10kHzずらしてサンプリングを行ったあと、数値的に周波数シフト(回転演算)しています。この過程を、波形とスペクトラムでみてみます。

まず576kHz NHK第一を受信した様子です。スペクトラムで赤いマーカーがチューンした周波数で、中心からかなり右にずれています。

波形は、周波数が高めの信号を含むので、塗りつぶされたような感じになっています。このへんはデジタルオシロと同じです。

試しにすこし周波数をずらしてキャリアの周波数を下げてみると、ちゃんと波になっているのがわかります。IQの位相がずれているのもわかります。

さて、サンプリングされた信号を、信号処理により10kHz下げるとこのようになります。

キャリアが中央に位置、すなわちDCとなります。波形でみると、大きくゆっくりと波打ちます。DCとはいえ1Hz程度の周波数ずれがあるので、その成分が波形のゆらぎとして見えているわけです。

次は、LPFに通します。fc=8kHz Biquadのチェビシェフ6次IIR LPFです。0Hzを中心として両方の外側の成分を削ぎ落とすのですが、スペクトラムだとその様子が一目でわかります。波形も、ギザついていたのが滑らかになっています。

最後にオーディオ信号です。振幅を計算しているだけです。実信号なので、スペクトラムの0Hzは中央ではなく左側です。波形も片側だけです。

このように並べて表示することで、波形とスペクトラムの対応関係、そして各段の信号を観察できることで、信号処理の過程が感覚的にわかるようになるのではないでしょうか。

最後に動画です。

リアルタイムで復調した音を聴きながら、波形とスペクトラムを眺められるのが実に面白いと思います。それがこんな簡単なハードウェア構成+ソフトウェアで実現できています。

波形表示では、ウォーターフォールに比べて表示更新レートが下がっています。半分程度の10FPS弱程度となり、ちょっと表示のダイナミックさが減ってしまっています。表示更新しなければならないピクセル数が増えるので仕方ないところです。(ウォーターフォールでは1ライン分の更新で済むが、波形は全部更新することが必要。88倍に増加)

あとCentSDRには、受信機らしい機能としてレベル表示を加えたいところです。これまでいわゆるSメータをさぼって作らないままでしたが、どうせならdBmで表示できるようにしたいところです。構成が広帯域(=周波数非依存)なので、少しの校正処理でフラットレスポンスが得られるのではないかと考えています。

Load more