Fully digital SSB generator(2)

1.試作した完全ディジタルSSBジェネレータ

ソフトウェアは前の記事で示したように,AF PSNの処理の後に極座標変換処理を行い,その絶対値を振幅,また位相の微分値とキャリア周波数の和を周波数として,DDSを制御するコードを追加した.

2.スペクトルの確認
キャリア周波数:7.1MHz
モード:LSB
帯域:300Hz – 2800Hz
入力:1kHzの正弦波

逆サイドバンド,キャリア漏れは全く確認できない.
帯域内の盛り上がりはおそらくノイズと思われる.上の写真のような作りのため当然かと.
基板をおこせば改善できそう.

動作の様子

Fully digital SSB generator(1)

1.はじめに
PSNでSSBを発生させる場合,AF PSN をディジタル化することで無調整で実用的なレベルのAFのIQ信号が簡単に得られる.
とはいえ,キャリア漏れとかサイドバンドサプレッションに関しては,結局その後のRF直交ミキサの性能や調整状態に依存してしまう(AF信号が理想的であっても).特にキャリア漏れについては周波数が大きく変わると再調整の必要があり広帯域にわたって調整なしで使うのは難しい.ということで,AF PSNだけでなくSSBジェネレータ全体をディジタル化したい.

2.AF PSN について
AF PSNの実現方法としては,入力(実信号 Ai )をヒルベルト変換しそれを虚数部 Aq とするのが一般的( Ai + jAq ).
時間領域で考えれば,ヒルベルト変換は広帯域にわたって同一振幅で正確に90度位相シフトすることが重要で,その点に着目して設計や調整を行う.

一方,周波数領域で考えれば,AF PSNは負(または正)の周波数成分をカットするフィルタである(AF PSNの記事).
これはヒルベルト変換を周波数領域で説明しただけのことなので,ヒルベルト変換でもフィルタでも変わりはない.実現手法が違うため具現化したときにそれに起因した差が生じているだけである.

周波数領域では次のように考えることができる.
実信号の正の周波数成分と負の成分は複素共役の関係にあるので,もとの実信号は単に Ai ではなく,正の成分 (Ai + jAq)/2 と負の成分 (Ai – jAq )/2 の和で,Ai=(Ai + jAq)/2 + (Ai – jAq)/2 となっているので,実信号の負の周波数成分をカットすることで自ずと Ai + jAq (の1/2)となる.

そもそも,実信号 Ai を正の周波数成分と負の成分に分離したときに,その虚数部 Aq を表すものがヒルベルト変換なわけで,「ヒルベルト変換操作で生成した Aq を虚数部として付加する」というのはエミュレーションであって,考え方としては本質的でないような気はする.

AF PSNがフィルタとみなせるならば,それにバンドパス特性を併せ持たせて,例えば,正の 300Hz から 3kHz を通過させる特性にすれば,BPFを別に設ける必要がない.

3.PSN式SSBジェネレータ(従来方式)
AF PSN で得られた信号(Ai + jAq)を周波数シフトすればSSBが得られる.具体的には目的周波数を ωc とすれば複素正弦波 exp(jωc t)=cos(ωc t) + jsin(ωc t)を掛ければよい.
複素SSB信号=(Ai + jAq) * ( cos(ωc t) + jsin(ωc t) )
最終的に必要なのは実信号(実部)なので,
SSB信号=Ai*cos(ωc t) – Aq*sin(ωc t)
これが直交ミキサを使う方法の原理で下図のような構成となる.

4.完全ディジタル化
Ai + jAq を 極座標形式に変換する.

これを目的周波数 ωc にシフトするために複素正弦波 exp(jωc t) を掛けると次式のように複素SSB信号が得られる.

最終的に必要なのは実信号(実部)なので,

この式からわかるように周波数 ωc のSSB信号を得るには,周波数 ωc のキャリア信号に対して,振幅をm(t)で,周波数をω(t)で同時に変調すればよい.
これは振幅変調機能のあるDDSを使えば簡単に実現できるので,ディジタルAF PSNとDDSを組み合わせれば,完全ディジタルSSBジェネレータが実現できる(下図).

当然,振幅あるいは周波数それぞれ単独で変調を掛けることもできるので,SSBだけでなくAMもFMも簡単に発生させることができるし,DDSの本来の機能によって任意の周波数のキャリアを生成できるので,オールバンドオールモードのジェネレータが完全ディジタルで作れることになる.

とりあえず,AD9951を使って実験してみたところ,動作は問題ない様子.

SDR using dsPIC for SSB MODE

FM,AMモードはまだ納得できる状態ではないが,SSBに関しては問題なさそうなので,ファームウェア(ソースコード)などを公開した.

Source code,  Circuit diagram

IIR, FIR フィルタの特性を変えるためのツールも置いてある.

dsPICの内部処理は以下のとおり.

SSB_demod.jpg

原理的にはこれまで通り,複素係数フィルタで正(または負)の周波数成分をカットするフィルタ式.
コードを書いていて思ったのだが実際の処理内容はPSNと酷似している.なので,複素係数フィルタをAF PSN とみなしてもよいと思う.
hilbert 変換自体が負の周波数をカットするハイパスフィルタだし,一方,複素係数フィルタの虚数部は hilbert 変換器と同じものになっていることを考えれば.本質的に PSN方式 もフィルタ方式も同じということだろう(もちろん実現手法の違いはある).