デジタル・プリディストーションの微調整とトラブルシューティングのための完全ガイド

デジタル・プリディストーションの微調整とトラブルシューティングのための完全ガイド

著者の連絡先情報

Wangning Ge

Wangning Ge

概要

アナログ・デバイセズは、広帯域に対応するRFトランシーバーIC「ADRV9002」を提供しています。本稿では、同製品が備えるデジタル・プリディストーション(以下、DPD)機能について解説します。最初に、DPDが使用されるようになった背景について、システムの実験を行う際にユーザが遭遇するよくある問題を取り上げながら説明します。その上で、DPDの性能を解析するためのソフトウェア・ツールを利用してDPD用アルゴリズムのチューニングを実施する方法を紹介します。なお、本稿で紹介するデバッグ手法の一部は、一般的なDPDシステムにも適用可能です。

はじめに

DPDは、ワイヤレス通信システムで広く利用されているアルゴリズムです。その目的は、RF対応のパワー・アンプ(PA)に入力される広帯域の信号のスペクトル再生を抑えることで、PAの全体的な効率を改善することです1。一般に、PAでは、大電力の入力信号を処理する際に非線形性が生じます。その結果として、効率が低下するという問題があります。この非線形性と周波数干渉が生じるのは、隣接する帯域にスペクトル再生の影響が及ぶからです。図1に、DPDの効果を示す評価結果を示しました。これは、ADRV9002においてDPDを適用した場合と適用しない場合のスペクトル再生の様子を表しています。評価に際しては、TETRA(Terrestrial Trunked Radio) 1規格で定められた条件を適用しています。

図1. DPDの効果。ADRV9002において、DPDを適用した場合と適用しない場合の結果を示しています。この評価はTETRA 1の条件を適用して実施しました。

ADRV9002は、プログラムが可能で消費電力の観点から最適化されたDPDのアルゴリズムを内蔵しています。これをカスタマイズすることにより、PAの非線形性を補償し、ACPR(Adjacent Channel Power Ratio:隣接チャンネル漏洩電力比)を改善することができます。つまり、DPDは通信システムに対して望ましいメリットをもたらします。しかし、DPDの扱いに慣れていないユーザにとって、適切な設定を行うのは容易なことではありません。その理由は、DPDに関連する誤差を生み出し、性能を低下させるおそれのある要因が数多く存在するからです。ハードウェアを適切に設定した後、DPDの微調整を行うための適切なパラメータを特定し、最適なソリューションを完成させるまでの作業も容易ではありません。本稿の目的は、ADRV9002のDPD機能を使用する技術者を支援することです。それに向けて、まずはユーザがよく遭遇するいくつかの典型的な問題を示します。その上で、適切なパラメータを使用してDPDのモデルを微調整し、最適な性能を得るための一般的な手法を紹介します。ADRV9002は、ユーザによるDPDの解析を支援するMATLAB®ベースのツールに対応しています。それらのツールは、一般的な誤りの多くを修正し、DPDの動作についての洞察を得る上で役に立つはずです。本稿では、DPDの概念について理論の面から解説すると共に、現実に起きる問題の解決方法も紹介します。そうした有益な情報を提供することで、DPDに初めて触れるユーザを支援することを目指します。

ADRV9002のDPD機能を有効にした場合、最大信号帯域幅は20MHzになります。これは、受信帯域幅が100MHzに制限されるためです。一般に、DPDでは受振帯域幅を送信帯域幅の5倍に設定して動作させます。その理由は、3次と5次の相互変調信号を確認して補償できるようにしたいからです。ADRV9002は、PAの最大ピーク電力信号がP1dB(1dB圧縮ポイント)付近の圧縮領域に存在する状況に対応します。ここで、P1dBはPAの圧縮特性を表す指標です。P1dBを超えるポイントでPAの信号が圧縮されると、DPDが適切に機能することは保証されなくなります。但し、必ず問題が生じるとは限りません。P1dBのポイントを超える領域でDPDが機能していて、しかも非常に良好なACPRが得られるということはよくあります。とはいえ、そうした状況はケースバイケースで生じるものなので、何らかの解析を行わなければなりません。一般的には、過剰に圧縮が行われるとDPDの動作が不安定になり、最終的には破綻に至るおそれがあります。これについては、MATLABベースのツールを使用してPAの現在の圧縮状態を観測する方法も含めて後述します。

なお、DPDの詳細については、UG-1828(ADRV9001 System Development User Guide)の「Digital Predistortion」の章をご覧ください。

アーキテクチャ

DPDの機能の実行方法は、大きく2つに分けることができます。1つは、間接DPDと呼ばれるものです。この方法では、PAの前後で信号をキャプチャします。もう1つの方法は、直接DPDと呼ばれています。直接DPDでは、DPDの処理を実行するブロック(DPDブロック)の前とPAの後で信号をキャプチャします。両者にはそれぞれ長所と短所がありますが、ここでは詳細は割愛します。間接DPDでは、PAの前後の信号を確認することにより、その非線形性について把握します。その上で、DPDブロックの前段にそれとは逆の効果が得られるよう処理を加えます。一方、直接DPDでは、上記のとおりDPDブロックの前とPAの後の信号を確認します。その上でDPDブロックにプリディストーションを適用することにより、両者の間に生じる誤差を除去します。ADRV9002は、間接DPDを採用しています。そのため、以下では、間接DPDに伴う影響について詳しく解説します。MATLABベースのツールを使用する場合、キャプチャされたデータは間接DPDによって得られたものだということに注意してください。

図2は、ADRV9002のDPD処理に関連するブロックを示したものです。ご覧のように、入力信号u(n)はDPDブロックに引き渡されます。DPDブロックでは、この信号にプリディストーションが適用され、x(n)が生成されます。ここでは、この信号をTx(送信)キャプチャと呼ぶことにします。つまり、Txキャプチャは、送信信号にプリディストーションを適用した結果得られる信号です。Txキャプチャは、PAに引き渡されてy(n)として出力されます。つまり、アンテナから大気中に送出されることになります。ここでは、y(n)をRx(受信)キャプチャと呼ぶことにします。Rxキャプチャは、PAを通過した後の送信信号です。その後、y(n)はオブザベーション・レシーバーとして使用されるレシーバーのポートにフィードバックされます。DPDエンジンは、x(n)とy(n)の各キャプチャを入力とし、次のDPD処理に適用する係数を生成します。

図2. 間接DPDに関連するブロック

動作モード

ADRV9002は、TDD(Time Division Duplex)モードとFDD(Frequency Division Duplex)モードの両方においてDPDをサポートします。TDDモードの場合、DPDの処理は送信フレームごとに更新されます。これは、1つの送信フレームに対応する期間に、レシーバーがオブザベーション・パスとして機能するということを意味します。一方、FDDモードでは、トランスミッタとレシーバーが同時に動作します。したがって、専用のレシーバー・チャンネルが必要になります。ADRV9002は、2T2R(トランスミッタとレシーバーを2個ずつ搭載)の製品です。したがって、2T2R/1T1RのTDDモードと1T1RのFDDモードにおいてDPDを利用できます。

DPDモデル

続いては、DPDモデルについて詳しく説明していきます。

構造


ADRV9002の送信パスに実装されているDPDモデルは、以下に示す式で表されます。

Equation 1

各変数の意味は以下のとおりです。

u(n):DPDブロックへの入力信号
x(n):DPDブロックからの出力信号 
T:DPDモデルのタップの総数
ψt:タップtのルックアップ・テーブル(LUT)を実装するための多項式関数
lt:振幅遅延
kt:データ遅延
at,lt,i:DPDエンジンによって計算された係数
bt,lt,i:項の有効化/無効化を切り替えるためのスイッチ
i:多項式の項のインデックスおよび乗数

多項式の項の数はタップごとに設定できます。ADRV9002では、3つのメモリ項タップと1つのクロス項タップが、それぞれ0~7の次数で提供されています。


モデルの選択


ADRV9002では、デフォルトのモデルがオプションとして提供されています(図3)。それを選択すれば、一般的なケースのほとんどに対応できるはずです。また、各項を有効化/無効化することで、ユーザが独自のモデルを構築することも可能になっています。最初の3つのタップ(0~2)はメモリ項タップで、Tap 1は中央のタップです。一方、Tap 3はクロス項タップです。

図3. DPDモデルの多項式の設定

Tap3(クロス項タップ)では、0次の項を有効にしてはなりません。メモリ項タップと区別できるようにするためです。この点には注意してください。図3のLUT Size、Pre-LUT Scaleの意味は、それぞれ以下のとおりです。

  • LUT Size:LUTのサイズを設定します。ADRV9002の場合、256 または512 を設定することが可能です。512 を選んだ方が量子化ノイズのレベルが低くなるので、ACPR は良化します。一般に、LUT のサイズが大きいほど信号の分解能が高くなるからです。狭帯域のアプリケーションにおいては、512 をデフォルトのオプションとして使用することを推奨します。256というサイズは、狭帯域のアプリケーションと比べて高いノイズ性能は求められない広帯域のアプリケーションで使用するとよいでしょう。そうすれば、演算量と消費電力を削減することができます。
  • Pre-LUT Scale:プリLUTスケーラの設定を行うことで、コンパンダにフィットするよう入力データをスケーリングすることができます。コンパンダは、トランスミッタからの信号を受け取り、LUT の8 ビットのアドレスに収まるように圧縮します。入力信号のレベルに応じてPre-LUT Scale の値を調整することにより、LUT の利用効率を最適化することが可能です。Pre-LUT Scale の値は、(0, 4) の範囲、0.25 ステップで設定することができます。コンパンダの詳細については後述します。

コンフィギュレーション

図4. DPDを有効にするための基本的な設定

DPDの機能を実行するには、次のような設定を行う必要があります。それは、PAの外部ループバック・パスを有効にした上で、フィードバックする電力が所定の範囲内に収まるようにするというものです。ここで言う電力はピーク電力であり、平均電力ではないことに注意してください。電力が多すぎたり少なすぎたりすると、DPDの性能に影響が生じます。

加えて、外部パスで生じる遅延についての設定も行わなければなりません。その値は、External_Delay_Measurement.pyを使用することによって取得できます。このスクリプトは、ADRV9002の評価用ソフトウェアに含まれています。そのインストール・パスのIronPythonフォルダに保存されています。この遅延の設定が必要になるのは、高いサンプル・レートを使用するプロファイル(LTEの10MHzなど)の場合だけであることに注意してください。低いサンプル・レートのプロファイル(例えばTETRA 1の25kHz)に対しては、0を設定することができます。これについては、後ほどソフトウェア・ツールを使用してキャプチャ・データを観測し、外部の遅延の影響を確認することにします。.


その他の設定

図5. DPDに関するその他の設定

図5のように、サンプルの数も設定することができます。ただ、これについてはデフォルトの値を使用することが推奨されます。その値は4096であり、ほとんどの場合、これがDPD向けの最適な値になります。その他のパラメータの詳細は以下のとおりです。

  • Additional Power Scale:より高度なパラメータですが、ほとんどの場合はデフォルトの値である4 を使用することが推奨されます。このパラメータは、内部相関行列に関連するものです。アナログ・デバイセズが実験を行った結果、デフォルトの値を使うことで、テストに使用した既存の信号波形とPA に対して最高の性能が得られることを確認できています。ただ、入力信号の振幅が非常に小さい、あるいは非常に大きいといった、まれなケースに遭遇することもあるでしょう。その場合、この値を大きくしたり小さくしたりするという調整を試してみる価値はあります。その結果、相関行列に適切な条件となる値が適用され、より安定したソリューションが得られる可能性があります。
  • Rx/Tx Normalization:レシーバー/トランスミッタにおいては正規化を実施し、データが線形になる領域を使用できるよう設定する必要があります。図6 では、その線形の領域を赤色で示しています。この領域における電力(のデータ)は、まだ圧縮領域には達しておらず、ゲインを計算できるだけの十分な大きさを維持しています。領域が選択されたら、DPD機能はトランスミッタとレシーバーのゲインを見積もり、アルゴリズムによる処理を前に進めます。標準的なPA を使用する場合、このパラメータの値を-25dBFS ~ -15dBFS に設定すればほぼ対応できるはずです。但し、特殊なPA については、AM/AM 曲線の形状が全く異なる可能性があるので注意が必要です。その場合には適切な変更を加える必要があります(詳細は後述)。

図6. 標準的なAM/AM曲線。線形の領域を赤色で示しています。

ハードウェアの設定


図7に示したのは、DPDに関連するハードウェアの一般的な構成です。局部発振器(LO)の信号の高調波を防ぐためには、信号をPAに引き渡す前にローパス・フィルタを適用しなければなりません。内蔵LOの位相ノイズ性能がアプリケーションの要件を満たさない場合は、外付けのLOが必要になるケースがあります。その場合、外付けのLOとDEV_ CLKの同期をとらなければなりません。通常、このような対応が必要になるのは、狭帯域のアプリケーションにDPDを適用するケースです。その場合、近接する帯域のノイズの要件がより厳しくなるからです。一般に、PAが破損する可能性を防ぐためには、PAの上流に可変アッテネータを配置するべきです。先述したようにピーク電力を設定するためには、フィードバック信号を適切に減衰させる必要があります。

図7. DPDに関連するハードウェアの一般的なブロック図

ソフトウェアの設定

続いては、ソフトウェアの設定について詳しく説明します。

IronPython


ここでは、GUI(Graphical User Interface) を使ってIronPythonのコードを実行できるようにします。まずはIronPythonのライブラリをダウンロードしてください。

トランスミッタとレシーバーのキャプチャ・データを取得するためには、MATLABベースのツールと共に提供されているdpd_capture.pyを使用します。これは、図8に示したようにIronPythonのGUIウィンドウで実行することができます。DPDのサンプル・レートに関する情報も、キャプチャ・ファイルに含まれています。

図8. IronPythonのGUIウィンドウ

このスクリプトは、準備済みの状態またはキャリブレーション済みの状態で実行する必要があることに注意してください。


MATLABベースのツール


dpd_capture.pyでキャプチャしたデータの解析には、MATLABベースのツールを使用します。このツールを利用すれば、シグナル・インテグリティ、信号のアライメント(整合)、PAの圧縮レベルの確認をしたり、DPDの微調整を行ったりすることができます。

MATLABベースのツールを実行するには、MATLAB Runtimeが必要です。これを初めてインストールする際には、ダウンロードにやや時間がかかります。インストールが完了したら、IronPythonのスクリプトによってキャプチャしたデータを読み込み、各種のグラフを確認することができます(図9)。

図9. MATLABベースのDPDアナライザ

データの正規化に使用する上限/下限の閾値を設定し、「Reload」(リロード)をクリックして変化を確認することも可能です。

図9を見ると、左上にトランスミッタとレシーバーの正規化済みデータが時間領域でプロットされています。それを拡大表示すれば、トランスミッタとレシーバーが整合しているか否かを確認することが可能です。図9ではデータの実数部しか表示されていませんが、虚数部も簡単にプロットすることができます。通常、実数部と虚数部は、どちらも整合している状態か、どちらも整合していない状態になるはずです。

図9の左下には、トランスミッタとレシーバーのスペクトルが表示されています。青色がトランスミッタで、赤色がレシーバーです。ここでは間接DPDが適用されている点に注意してください。トランスミッタのデータは、プリディストーションを行った後のデータです。SSI(シリアル同期インターフェース)のポートを介してトランスミッタのデータパスで取得したデータではありません。

図9の中央には、2つのAM/AM曲線が表示されています。一方はリニア・スケール、もう一方はdBスケールの表示です。これらは、DPDの性能とPAの圧縮状態に関する重要な指標になります。

図9の右には、AM/PM曲線ならびにレシーバーとトランスミッタの位相差が表示されています。また、右上には上限/下限の閾値も示されています。

これらの値は、ADRV9002に対応する評価用ソフトウェアであるTES(Transceiver Evaluation Software)を使って設定した値と一致するはずです。

更に、データをキャプチャに利用できるAPI(Application Programming Interface)も提供されています。そのため、必要に応じて独自のプロットや解析モデルを作成することも可能です。MATLABベースのツールは、DPDについて解析するためのいくつかの一般的なチェック機能を備えています。そのためのAPIには、以下のようなものがあります。

adi_ADRV9002_dpd_CaptureData_Read:DPD のキャプチャ・データを読み込みます。キャリブレーション済みの状態または準備済みの状態で実行する必要があります。

adi_ADRV9002_DpdCfg_t の dpdSamplingRate_Hz:DPD のサンプル・レートを表す読み出し専用のパラメータです。

よくある問題

DPDは、様々な要因から影響を受ける可能性があります。そのため、以下に挙げるすべての潜在的な問題について、検討と調査を行わなければなりません。なお、問題について検討する際には、ハードウェアが正しく接続されていることを必ず確認してください。


トランスミッタのデータのオーバーロード


図10は、ADRV9002が内蔵する回路のブロック図です。DPD機能に関連する部分のみを示しています。このシステムでは、インターフェースから入力されるTxデータによってD/Aコンバータ(DAC)がオーバーロード(過負荷)になる可能性があります。DACがオーバーロードの状態になると、トランスミッタのRF信号はPAに引き渡される前に歪んでしまいます。したがって、オーバーロードが生じないようにすることが非常に重要です。

図10. DPDに関連するハードウェアのブロック図

トランスミッタのDACがオーバーロードしているかどうかは、GUIで簡単に確認できます。図11は、TETRA 1の25kHzの信号波形です。ご覧のように、ピーク値はフル・スケール(デジタル)には全く達していません。ADRV9002では、DACがオーバーロードする可能性を回避するために、フル・スケールから少なくとも数dBのマージンを確保することを推奨しています。但し、確保すべきマージンの値を定量的に把握するのは困難です。DPDでは、プリディストーションの適用によって信号のピークが増大します。それによってDACがオーバーロードする可能性があるからです。どれだけのマージンが必要なのかは、特定のPAに対してDPDがどのように反応するのかということに依存します。一般に、PAにおける圧縮が大きいほど、ピークの増大に対して大きなマージンを確保する必要があります。

図11. TETRA 1規格で定められた信号波形。時間領域のプロットです。

レシーバーのデータのオーバーロード


よくあるもう1つの問題が、レシーバーのデータのフィードバックに用いるA/Dコンバータ(ADC)がオーバーロードするというものです(図12)。これは、レシーバーのポートに返される信号が十分に減衰していない場合に発生します。その影響をデバッグ用のツールで観測すると、レシーバーのデータのクリッピングが見てとれるはずです。その結果、トランスミッタとレシーバーが適切に整合せず、DPDにおいてキャリブレーション・エラーが生じます。そうすると、DPDの性能は非常に低くなり、スペクトル全体でノイズが増加します。


レシーバーのデータのアンダーロード


レシーバーのオーバーロードと比べると、アンダーロードの問題は見落とされがちです。アンダーロードは、フィードバック信号の減衰量が適切に設定されていないことが原因で発生します。フィードバック・パスでの減衰量が大きすぎると、レシーバーのデータは小さくなりすぎてしまいます。ADRV9002の場合、デフォルトではピークの値として-18dBmが推奨されています。それにより、アナログ信号からデジタル・データに至るまで、DPD向けに良好な電力レベルが得られることがわかっています。ただ、この値は個々のニーズに応じて調整することも可能です。レシーバーにおいて、DPD向けのフィードバック経路に配置されたアッテネータは、レシーバーの通常のアッテネータと同じものではありません。そうではなく、ステップ・サイズがはるかに大きいことに注意してください。減衰量は、ユーザが設定するピーク電力のレベルに応じて調整されます。最小電力レベル(減衰量が0の場合)である-23dBmよりも電力レベルが低くなると、DPDの性能に影響が及びます。経験則になりますが、フィードバックする電力の量は必ず測定し、正しく設定を行わなければなりません。よくあるミスは、電力レベルを変更した状態を試す際、フィードバックする電力量を適切に設定するのを忘れてしまうというものです。そうすると、アンダーロードの問題が発生してしまいます。

図12. レシーバーのデータのオーバーロード

図13. 整合していないDPDのキャプチャ

TDDモードとFDDモード


TDDモードにおいて、DPDは自動ステート・マシンで実行する必要があります。TESを使って評価を実施する場合、TDDモードにおいてもマニュアル(手作業)でDPDを有効にすることは可能です。但し、DPDの性能は低くなります。なぜなら、DPD機能はフレーム・ベースでしか動作しないからです。TDDモードにおいてマニュアルでDPDを有効にする場合、フレームの長さは送受信のイネーブル信号のトグルによって決まります。言い換えると、再生、停止のそれぞれが1つのフレームになります。しかし、人間が手作業でトグルするのには時間がかかります。その間に、PAは温度の面で既に異なる状態にチューニングされていることになります。したがって、TDDモードでは、送信側のイネーブル信号を自動的に頻繁にトグルしなければ、DPDの状態を維持することは不可能です。一方、FDDモードではマニュアルで操作を行ってもDPDは正常に機能するはずです。

TETRA 1の信号波形を使用する場合、TDDに似たフレームのスキームに従うことになります(実際にはTDM-FDDです)。その場合も、TDDモードを選択してDPDの機能をマニュアルで確認するのは望ましい方法ではありません。DPDの性能はおそらく低下するはずです。適切な方法は、「Custom FDD」のプロファイルを使用してTETRA 1と同じサンプル・レートと帯域幅を選択することです。あるいは、TETRA 1のTDDフレームのタイミングを設定して自動的に機能するようにします。どちらの方法を選んだ場合でも、マニュアルで操作するよりもはるかに高い性能が得られます。


トランスミッタとレシーバーの不整合


ADRV9002は、トランスミッタとレシーバーのデータについて時間方向で整合させることを試みます。また、ユーザがキャプチャするデータは、互いに整合していることが期待されます。遅延の測定は、最初のキャリブレーションが実行される際に行われます。しかし、サンプル・レートの高いプロファイルについては、サブサンプル・アライメントをより高い精度で個別に実施する必要があります。

図14. トランスミッタ/レシーバーのデータの不整合。LTE10のデータを例にとっています。

DPDは、2つのエンティティ(トランスミッタとレシーバー)の誤差を入力として使用する適応型のアルゴリズムです。トランスミッタとレシーバーの誤差を取得するにあたっては、事前に2つの信号を適切に整合させておく必要があります。サンプル・レートの高いプロファイル(LTE10など)を使用する場合には、サンプリングの間隔が短いので、特にこの条件を満たすことが不可欠です(図14)。この問題に対処するためには、External_Delay_Measurement.pyというスクリプトを実行し、外部パスで生じる遅延を抽出します(図15)。得られた値は、「Board Configuration」→「Path Delay」に入力します。

図15. 外部パスで生じる遅延の測定。IronPythonを利用しています。

トランスミッタとレシーバーのデータが整合していない場合、AM/AM曲線に非常に大きなノイズが現れます。

パスで生じる遅延の値を設定すると、AM/AM曲線とAM/PM曲線のノイズは小さくなり、はるかにクリーンになります。また、位相の差もはるかに小さくなります(図16、図17)。

図16. 整合しているDPDのキャプチャ

図17. トランスミッタとレシーバーの整合がとれた状態。LTE10のデータを例にとっています。

PAのオーバーロード


PA製品は、どれだけの圧縮に対応できるかという仕様がそれぞれに異なります。通常、データシートにはP1dBのデータが記載されています。ただ、PA製品を選択する際には、実際にDPDに対する高精度な測定を行い、圧縮ポイントがP1dBにあることを確認すべきです。DPDに対応するソフトウェアを使用すれば、キャプチャしたデータに基づくAM/AM曲線を容易に表示することが可能です(図18)。そうすれば、圧縮ポイントがP1dBにどれだけ近いのかという確認を実施できます。

図18. PAがオーバーロードしている場合のデータ

信号がP1dBを超えている場合、DPDが不安定になります。更には破綻に至り、スペクトルが非常に高いレベルに跳ね上がって二度と低下しないおそれがあります。図19では、ピークにおいて圧縮レベルが1dBの領域を大きく超えています。また、曲線の形状も平らになり始めています。これは、PAが過剰に駆動されていることを示しています。出力電力を高めるために、入力がより強く駆動されているということです。このまま入力電力を高め続けると、DPDの性能は低下します。

図19. AM/AM曲線(dBスケールの拡大図)

モデルの選択とチューニングのための一般的な手法


間接DPDでは、PAの前後でデータをキャプチャします。そして、DPDエンジンは、PAの特性と逆の効果を加えようとします。LUTは、係数を使用してその効果を適用するために用いられます。一方、モデルは多項式に基づいたものになります。つまり、DPDはカーブ・フィッティングに似たものだと言えます。各項を使用することで、非線形性を補正するためのカーブ・フィットを行う処理だということです。ただ、カーブ・フィッティングでは1本の曲線に対する補正を行います。一方、DPDではメモリ効果も考慮しなければなりません。この点に違いがあります。ADRV9002は、DPD用のLUTをモデル化するために、3つのメモリ・タップと1つのクロス・タップを備えています。

図20は、ADRV9002で提供されている3つのメモリ・タップと1つのクロス・タップについて示したものです。一般的な手法は、カーブ・フィッティングの場合と同様のものになります。すなわち、何らかのベースラインから開始し、項を追加または削除していきます。一般に、中央のタップは必ず存在します(Tap1)。項を1つずつ追加したり削除したりすることで、DPDにどのような影響が及ぶのかを確認します。更に2つのメモリ・タップ(Tap0とTap2)を追加することで、メモリ効果の補償に対して影響を加えることができます。ADRV9002には2つのサイド・タップがありますが、それらのタップは同一、すなわち対称でなければならないことに注意してください。ここでも、項の追加と削除は1つずつ行う必要があります。最後に、クロス項を調整します。クロス項によって、数学的な観点からのカーブ・フィッティングは完了し、DPDの性能が改善されます。

図20. メモリ項とクロス項の関係

図21. 不適切なモデル項の設定

なお、項を空白のまま放置してはなりません。それは、DPDの望ましくない動作につながります。この点には注意してください。また、クロス項のタップについては0次の項を設定するべきではありません。その設定は、数学的な観点から見て不適切であるからです。

高度なチューニング

ここからは、やや高度なチューニング方法をいくつか紹介していきます。

コンパンダとプリLUTスケーラ


コンパンダについては、本稿の前半で簡単に触れました。ユーザ・ガイドを初めて読むときには、その概念について理解するのはやや難しいかもしれません。また、256と512のうちどちらを選択すべきなのかということも理解しづらいでしょう。ここでは、コンパンダについて改めて詳しく説明します。

コンパンダを使用する目的は、簡単に言えば入力データを圧縮してLUTにフィットさせることです。コンパンダは一般的には平方根の形を成しており、I/Qデータを入力として使用します。それらのデータをLUTに与える前に、√(i(n)2+q(n)2)という式を使用して信号の振幅を計算します。ただ、平方根の演算には時間がかかるので、それらの値もLUT(8ビットまたは9ビット)にマッピングしておく必要があります。そこで使用されるのがコンパンダです。図22に示したのは、理想的な平方根の曲線です。ここでは実装の詳細には触れませんが、コンパンダはこうした平方根の曲線に近似する処理を担います。

図22. 平方根の曲線。コンパンダは平方根の概算を実施します。

データをLUTにフィットさせる方法を理解すれば、よりインテリジェントにデータをチューニングすることができます。ADRV9002では、LUTのサイズとして8ビット(256)または9ビット(512)を選択することができます。8ビットではなく、9ビットのLUTを選択すれば、2倍の数のデータのアドレスに対応できます。つまり、データの分解能をより高めることが可能であり、量子化ノイズのレベルを改善できます。狭帯域のアプリケーションでは、ノイズが非常に重要な意味を持ちます。したがって、必ず512を選択するべきです。それに対し、広帯域のアプリケーションではノイズのレベルの重要度は下がります。したがって、256と512のうちどちらを使用しても構いません。なお、512を選択すると、消費電力が少し多くなり、演算速度は少し遅くなります。


ヒストグラムとCFR


Pre-LUT Scaleについても、本稿の前半で少し触れました。このパラメータは、LUTの入力データに増幅の処理を適用するために使用します。この増幅が必要になる理由は、DPDによってデータが適切に利用されないケースがあるからです。先述したように、PAでは圧縮の問題が生じることがありますが、その問題を引き起こすのは振幅の大きいサンプルです。そのため、すべてのサンプルを平等に扱うわけにはいかないのです。言い換えれば、振幅の大きいサンプルには特に注意を払わなければなりません。

図23、図24に、TETRA 1規格に対応する信号波形のヒストグラムを示しました。ご覧のように、中~大振幅の領域に値の多くが分布していることがわかります。これは、同規格では変調方式としてDQPSK(Differential Quadrature Phase-Shift Keying)を採用しているからです。このことから、信号の包絡線は一定になります。ピーク電力と平均電力にはそれほど大きな差はありません。これは、DPDにとって望ましいことです。先述したとおり、DPDの機能には大振幅のサンプルがより多く取り込まれ、PAの動作特性をより適切に評価することが可能になります。

図23. TETRA 1で規定された信号の振幅のヒストグラム

図24. TETRA 1で規定された信号の電力のヒストグラム

次は、LTE10の規格で定められた信号について見てみます。LTEは、膨大な数のサブキャリアを結合するために、変調方式としてOFDM(Orthogonal Frequency Division Multiplexing)を採用しています。

図25、図26に、LTE10の信号の振幅と電力のヒストグラムを示しました。TETRA 1とは明らかに異なり、ピーク値と平均値がかけ離れていることがわかります。

図25. LTE10で規定された信号の振幅のヒストグラム(CFRなし)

電力のヒストグラム(図26)のいちばん端の部分を拡大すると、確率は非常に低いものの、非常に高いピーク電力が発生していることがわかります。これは、DPDにとって都合の良いことではありません。その理由としては以下の2つが挙げられます。

図26. LTE10で規定された信号の電力のヒストグラム(CFRなし)

1つ目の理由は、低い確率で発生する大きなピーク(大振幅のサンプル)によって、PAの効率が非常に低くなるというものです。例えば、LTEの場合、PAPR(Peak to Average Power Ratio)は約11dBです。つまり、ピーク電力と平均電力には大きな差があります。したがって、PAの破損を防ぐためには、非常に大きなマージンを確保して入力レベルを抑えなければなりません。そうすると、PAは電力を増幅するためのゲインをほとんど活用できないことになります。

図27. 大振幅のサンプルの部分を拡大した結果

2つ目の理由は、大きなピークによってLUTの利用効率に無駄が生じるというものです。大きなピークにLUTの多くのリソースが割り当てられ、大部分のデータに割り当てられるリソースがほんのわずかになってしまうのです。その結果、DPDの性能は低下します。

CFR(Crest Factor Reduction)は、信号のピークを許容可能なレベルまで低減するための手法です。通常は、OFDMの信号に適用されます。ADRV9002は、CFRの機能は備えていません。したがって、同機能は外付けで実装する必要があります。この状況に対処するために、ADRV9002向けのTESには、CFRに対応するLTEの信号が含まれています。図28に示したのは、CFR_sample_rate_15p36M_bw_10M.csvによって得られるヒストグラムです。大電力の領域では、CFRによって信号のピークが一定のレベルに制限されていることが見てとれます(いちばん端で再び増加しています)。それによってPAPRは約6.7dBとなります。つまり、CFRを適用しない場合と比べて5dB近くの改善が得られているということです。ただ、CFRを適用すると、EVM(Error Vector Magnitude)が劣化します。つまり、データに悪影響が及ぶと言うこともできます。しかし、波形全体をそのまま処理する場合と比べて、大振幅のピークが発生する確率はかなり低くなります。したがって、そのメリットは非常に大きいと言えます。

図28. LTE10で規定された信号の振幅のヒストグラム(CFRあり)

図29. LTE10で規定された信号の電力のヒストグラム(CFRあり)

まとめ

DPDは、多くの人にとって扱いにくい複雑なアルゴリズムです。ハードウェアとソフトウェアの両方を適切に設定して最適な結果を得るには、かなりの労力と注意が必要になります。ADRV9002はDPD機能を内蔵しており、その複雑さを大幅に軽減しています。また、同ICには、DPD性能の解析作業を支援するソフトウェア・ツールも付属しています。