またしばらく更新が滞っていました。ハムフェアに行ったりはしましたが、無線のアクティビティは上がらずプリディストーションの実験もあまり進んでいませんでした。
色々やりたいことはあったのですが、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
![](https://blogimg.goo.ne.jp/user_image/37/d7/858608510c12cf368fd1f41fb843f67b.png)
2-tone @ 14MHz/80W pep with predistortion
![](https://blogimg.goo.ne.jp/user_image/29/0b/94e739a0fb01c7e8dd5e2cb082761fe2.png)
色々やりたいことはあったのですが、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
![](https://blogimg.goo.ne.jp/user_image/37/d7/858608510c12cf368fd1f41fb843f67b.png)
2-tone @ 14MHz/80W pep with predistortion
![](https://blogimg.goo.ne.jp/user_image/29/0b/94e739a0fb01c7e8dd5e2cb082761fe2.png)