またしばらく更新が滞っていました。ハムフェアに行ったりはしましたが、無線のアクティビティは上がらずプリディストーションの実験もあまり進んでいませんでした。
色々やりたいことはあったのですが、GNURadioで実験しているだけでなく、実際に運用できるようなソフトウェアにするということにまずはトライすることにしました。1からSDRのソフトウェアを書くのはハードルが高過ぎるので、既存のものにDPDのコードを入れるということになります。
既存のソフトウェアといってもたくさんあるのですが、まずはHermes/ANANで動くものということで、その中でも最も一般的に使用されているHPSDR版のPowerSDRをターゲットに決めました。PowerSDRは今となってはそれなりに大きなプログラムで、コアの信号処理やハードのコントロールはCのライブラリで、それ以外の処理や画面の部分はC#で書かれています。最初はCのライブラリ(DttSP)に手を入れるのかなと思っていましたが、ソースコードを読んでいるとC#の部分で出来そうなことがわかりました。慣れないC#を読んだり書いたりして1週間くらいでキャリブレーションのルーチンが動き、今日、実際にDPDを有効にして送信する部分が出来ました。
画面はこんな感じです。スペクトラムのディスプレイの下、右の方の囲みの中にDCalというボタンとDPDというボタンがあるのが見えると思います。それぞれ、DPDキャリブレーション(プリディストーションのテーブルを作成する)用と送信時にDPDを有効にするボタンです。DCalっていう名前は略称としてどうかと思うのでそのうち差し替えます。他にも多分色々本質的な問題はあると思うのですが、とりあえず動いたということで。
2-tone @ 14MHz/80W pep without predistortion

2-tone @ 14MHz/80W pep with predistortion

色々やりたいことはあったのですが、GNURadioで実験しているだけでなく、実際に運用できるようなソフトウェアにするということにまずはトライすることにしました。1からSDRのソフトウェアを書くのはハードルが高過ぎるので、既存のものにDPDのコードを入れるということになります。
既存のソフトウェアといってもたくさんあるのですが、まずはHermes/ANANで動くものということで、その中でも最も一般的に使用されているHPSDR版のPowerSDRをターゲットに決めました。PowerSDRは今となってはそれなりに大きなプログラムで、コアの信号処理やハードのコントロールはCのライブラリで、それ以外の処理や画面の部分はC#で書かれています。最初はCのライブラリ(DttSP)に手を入れるのかなと思っていましたが、ソースコードを読んでいるとC#の部分で出来そうなことがわかりました。慣れないC#を読んだり書いたりして1週間くらいでキャリブレーションのルーチンが動き、今日、実際にDPDを有効にして送信する部分が出来ました。
画面はこんな感じです。スペクトラムのディスプレイの下、右の方の囲みの中にDCalというボタンとDPDというボタンがあるのが見えると思います。それぞれ、DPDキャリブレーション(プリディストーションのテーブルを作成する)用と送信時にDPDを有効にするボタンです。DCalっていう名前は略称としてどうかと思うのでそのうち差し替えます。他にも多分色々本質的な問題はあると思うのですが、とりあえず動いたということで。
2-tone @ 14MHz/80W pep without predistortion

2-tone @ 14MHz/80W pep with predistortion

処理帯域幅以上というのは、何が何の帯域幅以上なんですか? 処理帯域幅の方はサンプリング周波数(ベースバンドで処理している)のことでしょうか?
ただ、送信も出来るSDRのハードウェアで日本で気軽に入手出来るものってなかなか難しいんですよね。
実験できるのはANANの他にFlexRadio辺りでしょうか?FlexRadioで実験できると、結構ユーザーがいるように感じますが・・・。
普通の無線機の出力をPCサウンドカードに取り込んで、別途、マイク入力した信号にプリディストーション加工してから無線機に入力するような形なら、だれでも実験できますが、取り込み方が難しいですね。
今回のPowerSDR改そのものでは残念ながらHermesをベースとしたSDRでしか動作しません。特にHermesに依存している部分はないので、Flex5000でもFlex版のPowerSDRに同じような改造を施せば動くはずですが、今は手元に機械がないので確認が出来ません。
Flex3000や1500では多分単体ではfull-duplexで動作させられないと思います。他にもう一台SDR受信機を用意して…みたいな工夫が必要です。
Softrockのような送信機と受信機の組み合わせも多少改造すれば行けるはずです。
普通の無線機でやってみるのも面白そうですが、アナログ部分でALCやAGCのようなゲインを可変させる要素があるとダメですね。
単体full-duplex必須了解です。うーん、ハードル高くなっちゃいますね。やはりエンジニアリングサンプル価格の時に購入すべきでした・・・・
モニター用の受信機と送信機は周波数が安定であれば全く同じ周波数でなくてもいいのですが、同じクロックを基準としていて同一周波数の場合が一番処理が楽になります。
とは言え、やはり単体でfull duplexで動作するDDC/DUCベースのエキサイタやトランシーバが容易に入手出来るようになるといいですね。
IC7800のメインとサブ受信機の周波数は一致していると思ったら、実は0.4HzほどDDSでズレていたことがあって、AF段でのノイズキャンセル効果にフェーディングがかかって困ったことがあります。
なので、ズレるなら一緒に同じようにズレて、相対関係が保てることの方が重要なのではないかと思った次第です。