この技術の説明をここで簡単に繰り返すと「PAに歪みがあるならば、それと逆方向にあらかじめ歪ませたものをPAに入力することによって歪みをキャンセルする」ということになります。
アマチュア無線の世界でもその可能性について何度か言及されてはいましたが、実際に行なっている例はなかなか出て来ませんでした。私自身もずっとその実験をしようと思いながら、果たせずにいました。
ところが最近、OpenHPSDRプロジェクト関連の情報を調べていたら、実装して試しているという人たち(NR0V, Pratt氏ら)がいることを知りました。そのような刺激を受けたこともあって、ここのところ少しずつ始めていて、以下はその報告です。
実験にはDUC/DDC方式のSDRトランシーバANAN-100(OpenHPSDR Hermesと三菱 RD100HHF1プッシュプルが終段のPAで構成され最大出力100W)を用いています。ANAN-100自体については改めて紹介したいと思いますが、今回の実験のために内部の接続を一部変更しています。
また、実験にはGNURadioのツールを利用し、Hermesを制御するブロックの部分はN5EG, McDermott氏の実装によります。
DPDでまず必要なことは、対象とするPA(パワーアンプ)の特性を知ることです。具体的には、入力の振幅に対するゲインの変化(AM-AM)特性と位相の変化(AM-PM)です。理想的な直線増幅器では、これらは一定であるはずですが、実際のアンプでは振幅によって変化が起こります。ゲインの変化についてはみなさんも通常経験されているとおもいます。
今回実際に測定したPAの特性の例を示します。PAの特性と書きましたが、実際にはDACからファイナルまでのアンプ、受信用のADCまでを含めた総合特性になります。周波数は3.5MHzです。入力データの振幅(電圧)は最大値を1として100分割して0.01ステップで与えています。グラフは横軸が入力の振幅の相対値で対数を取ってdB表示にしています。右端、最大入力の時に出力100Wが得られます。縦軸はそれぞれゲインと位相の変化です。
AM-AM characteristics of the ANAN-100's PA @3.5MHz(Max Pout=100W)
AM-PM characteristics of the ANAN-100's PA @3.5MHz(Max Pout=100W)
DPDには色々な方式があるようですが、私が試しているのは単純なルックアップテーブル(LUT, LookUp Table)を用いる方法です。
あらかじめ調べた特性を元に、振幅に対するゲイン、位相のずれの情報をテーブルに保持しておきます。送信時には入力される信号のデータ(サンプル)の振幅をインデクスとしてテーブルを引き、得られた情報を元にサンプルの振幅と位相を補正し、補正されたデータを用いて送信します。
果たしてその結果はどうなるのか。今のところ得られている2トーンテストの結果を示します。変調信号は700Hzと3.2kHzと広くとっていますが、単純に見やすさのためで適当な値です。
グラフは順に30W(プリディストーション無し、有り)、100W(プリディストーション無し、有り)です。最初に掲載していたグラフが14MHzのデータだったことに気付いたので3.5MHzのデータに差し替えました。14MHzの方が効果は大きかったようです。後のエントリで再掲したいと思います。
IMD @ 3.5MHz/30W pep without predistortion
">
IMD @ 3.5MHz/30W pep with predistortion
IMD @ 3.5MHz/100W pep without predistortion
IMD @ 3.5MHz/100W pep with predistortion
これを見ると3次、5次等の低次の歪は10~20dB下がっています。逆に高次の歪は増えているようです。また、左右非対称になっている部分も見受けられます。14MHz、21MHzにおいても実験を行いましたが同様の結果が得られました。
最初の実験としては、期待の持てる結果だと感じています。まずはもう少し色々データを取り、その次に実際のSSBの送信に使えるようにpredistorterをソフトウェアに組み込みたいと考えています。
今回の報告も詳細は端折っていますが、追々補足エントリを書ければと思います。
と、ここまでは内心「思ったよりうまく行ったなあ」と思っていたのですが…多分続く