もずくのブログ

読書とゲームと所感

pythonによる単側波帯変調(SSB)の実装 | ソフトウェア無線

ラズパイで無線機を作ってみたいので信号処理のお勉強

SSBの概説

通常のAM変調された波形は搬送波と側波帯の分帯域を専有するがSSBならより狭い帯域幅で通信が可能 AM信号からキャリアー(搬送波)と側波帯(LSB、USBどちらか一方)を減算し信号とする。通信したい信号波は搬送波に含まれず、更にUSB、LSBは互いに対称なので片方の側波帯のみで通信が可能。 つまり通常のAM通信のおよそ1/2の帯域幅で通信が可能。

ソフトウェアSSB変調の流れ

  1. 送信したい信号f_0、搬送波f_sを用意(離散化済み)
  2. f_0に対しヒルベルト変換(後述)を行いこれをf_hとおく
  3. f_h \ast \exp(j2\pi f_s t)を計算しこれがSSBの信号波形となる※j複素数の意

ヒルベルト変換

正周波数成分の位相を\pi / 2遅らせ、負周波数成分の位相を\pi / 2進める処理。今回はscipyに用意されているメソッド(signal.hilbert())で処理した。

プログラム

Jupyter Notebookで可視化

説明

出力を離散フーリエ変換したグラフからわかるように搬送波周波数の2KHzを中心として信号が変調されている。更にUSB(上側の側波帯)のみ出力されている。グラフがへんな形しているけど実際はスパイク波形です。