隣接チャネル電力比 (ACPR)
隣接チャネル電力比 (ACPR) 計算 (別名を隣接チャネル漏洩電力比 (ACLR)) には、変調やアナログ フロント エンドなど、通信システム コンポーネントの "スペクトル再成長" という特徴があります。スペクトル再成長は増幅器の非線形性が原因で発生します。ACPR 計算によって、所定のシステムの隣接チャネルに干渉が起きている可能性を判断します。
IS-95、CDMA、WCDMA、802.11、および Bluetooth など、多くの伝送規格には、ACPR 測定の定義が含まれています。ほとんどの標準規格は、ACPR 測定をメイン チャネルおよびすべての隣接チャネルの平均電力比として定義しています。測定値を得るときに使用するオフセット周波数と測定帯域幅 (BW) は、使用する業界標準によって異なります。たとえば、CDMA 増幅器の測定値には 885 kHz と 1.98 MHz の 2 つのオフセット (搬送周波数による) が含まれ、測定 BW は 30 KHz になります。
詳細は、comm.ACPR
ヘルプ ページを参照してください。
ACPR 測定値の取得
Communications Toolbox™ には comm.ACPR
System object™ が含まれています。このチュートリアルでは、3GPP™ TS 125.104 標準に従い、WCDMA 通信信号を使用して ACPR 測定値を取得します。
この例では、非線形増幅器の入力と出力でベースバンドの WCDMA サンプル信号を使用します。WCDMASignal.mat ファイルには、チュートリアルで使用するサンプル データが入っています。このファイルは 7e3 サンプルのデータをそれぞれ 25 の信号のスナップショットに分割し、データ行列 dataBeforeAmplifier
と dataAfterAmplifier
の列に保存します。
WCDMA の仕様では、3.84 MHz のサンプリング周波数を使用してすべての測定値を取得する必要があると定めています。
comm.ACPR System object の作成と測定値の設定
MATLAB® コマンド ラインで次のコマンドを入力して、サンプルレートを定義し、WCDMA ファイルを読み込んでデータを取得します。
% System sampling frequency, 3.84 MHz chip rate, 8 samples per chip SampleRate = 3.84e6*8; load WCDMASignal.mat % Use the first signal snapshot txSignalBeforeAmplifier = dataBeforeAmplifier(:,1); txSignalAfterAmplifier = dataAfterAmplifier(:,1);
comm.ACPR System object を作成してサンプリング周波数を指定します。
hACPR = comm.ACPR('SampleRate',SampleRate)
System object が以下の情報を表示します。
NormalizedFrequency: false SampleRate: 30720000 MainChannelFrequency: 0 MainMeasurementBandwidth: 50000 AdjacentChannelOffset: [-100000 100000] AdjacentMeasurementBandwidth: 50000 MeasurementFilterSource: 'None' SpectralEstimation: 'Auto' FFTLength: 'Next power of 2' MaxHold: false PowerUnits: 'dBm' MainChannelPowerOutputPort: false AdjacentChannelPowerOutputPort: false
"メイン チャネル" 中心周波数と測定帯域幅を指定します。
MainChannelFrequency
プロパティを使用してメイン チャネルの中心周波数を指定します。次にMainMeasurementBandwidth
プロパティを使用してメイン チャネル測定帯域幅を指定します。使用中のベースバンド データのメイン チャネルの中心周波数は 0 Hz です。WCDMA 標準では、3.84 MHz 測定帯域幅を使用してメイン チャネルの電力を取得することを定めています。次のコマンドを入力して、これらの測定帯域幅を指定します。
hACPR.MainChannelFrequency = 0; hACPR.MainMeasurementBandwidth = 3.84e6;
"隣接チャネル" オフセットと測定帯域幅を指定します。
WCDMA 標準では、メイン チャネルの中心周波数から 5、-5、10、-10 MHz 離れた 4 つの隣接チャネルの ACPR 制限値を指定します。いずれの場合も、3.84 MHz 帯域幅を使用して隣接チャネル電力を取得します。
AdjacentChannelOffset
プロパティとAdjacentMeasurementBandwidth
プロパティを使用して、隣接チャネル オフセットと測定帯域幅を指定します。hACPR.AdjacentChannelOffset = [-10 -5 5 10]*1e6; hACPR.AdjacentMeasurementBandwidth = 3.84e6;
すべての隣接チャネルの測定帯域幅が等しい場合は、スカラー値を指定します。測定帯域幅が異なる場合は、オフセット ベクトルに等しい長さで測定帯域幅のベクトルを指定します。
MATLAB コマンド ラインで以下を入力して、
MainChannelPowerOutputPort
プロパティとAdjacentChannelPowerOutputPort
プロパティをtrue
に設定します。hACPR.MainChannelPowerOutputPort = true hACPR.AdjacentChannelPowerOutputPort = true
comm.ACPR
System object を作成して増幅器出力を測定します。hACPRoutput = clone(hACPR);
ACPR 測定値の取得
オブジェクトは ACPR 測定値を返します。また、メイン チャネルと隣接チャネルの電力測定値を返すこともできます。PowerUnits
プロパティで測定単位を指定します。プロパティ値の既定値は dBm (100 万ミリワット (mW) を基準とした電力比) になります。
増幅器入力の ACPR 測定値を取得します。
[ACPR mainChannelPower adjChannelPower] = hACPR(txSignalBeforeAmplifier);
comm.ACPR
System object によって、次の出力測定値データが生成されます。ACPR = -68.6668 -54.9002 -55.0653 -68.4604 mainChannelPower = 29.5190 adjChannelPower = -39.1477 -25.3812 -25.5463 -38.9414
増幅器出力の ACPR 測定値を取得します。
[ACPR mainChannelPower adjChannelPower] = hACPRoutput(txSignalAfterAmplifier)
comm.ACPR
System object によって、次の入力測定値データが生成されます。ACPR = -42.1625 -27.0912 -26.8785 -42.4915 mainChannelPower = 40.6725 adjChannelPower = -1.4899 13.5813 13.7941 -1.8190
増幅器出力で ACPR 値が増えることに注意してください。この増加は、増幅器の非線形性による歪みが反映されたものです。WCDMA 標準では、+/- 5 MHz オフセットの ACPR 値を -45 dB 未満、+/- 10 MHz オフセットの ACPR 値を -50 dB 未満とすることを定めています。この例では、増幅器入力の信号は仕様を満たしていますが、増幅器出力は仕様を満たしていないことになります。
測定フィルターの指定
WCDMA 標準では、ルート レイズド コサイン フィルターを使用して ACPR 測定値を取得することを定めています。また、ロールオフ係数 0.22 の一致するルート レイズド コサイン (RRC) フィルターを使用して、メイン チャネルの電力と隣接チャネルの電力の "両方" の測定も指示しています。測定フィルターの指定には、MeasurementFilter
プロパティを使用します。このプロパティ値の既定値は 1 のゲインを含むオールパス フィルターになります。
フィルターは FIR フィルターで、この応答の中心は 0 Hz にならなければなりません。ACPR オブジェクトは、指定されたメイン チャネル帯域と隣接チャネル帯域に自動的にフィルターをシフトし、適用します。(電力測定値は MainMeasurementBandwidth
プロパティと AdjacentMeasurementBandwidth
プロパティで指定された帯域範囲内となります。)
WCDMASignal.mat ファイルには、ロールオフ係数 0.22 の 96 タップ フィルターで取得したデータが含まれています。
フィルターを作成 (Signal Processing Toolbox™ ソフトウェアの
rcosdesign
を使用) し、MATLAB コマンド ラインで次のように入力して測定値を取得します。% Scale for 0 dB passband gain measFilt = rcosdesign(0.22,16,8)/sqrt(8);
前の手順で作成したフィルターを ACPR オブジェクトの測定フィルターとして設定します。
release(hACPR); hACPR.MeasurementFilterSource = 'Property'; hACPR.MeasurementFilter = measFilt;
comm.ACPR
System object を複製して、同じフィルターを増幅器出力に実装します。hACPRoutput = clone(hACPR)
増幅器入力の ACPR 電力測定値を取得します。
ACPR = hACPR(txSignalBeforeAmplifier)
comm.ACPR
System object によって、次の測定値データが生成されます。ACPR = -71.4648 -55.5514 -55.9476 -71.3909
増幅器出力の ACPR 電力測定値を取得します。
ACPRoutput = hACPRoutput(txSignalAfterAmplifier)
comm.ACPR
System object によって、次の測定値データが生成されます。ACPR = -42.2364 -27.2242 -27.0748 -42.5810
パワー スペクトル推定器の制御
既定の設定では、ACPR オブジェクトは Welch パワー スペクトル推定器とハミング ウィンドウおよびゼロ パーセント オーバーラップを使用して電力を測定します。オブジェクトは対象の測定帯域幅のパワー スペクトル密度推定に積分の四角形近似を使用します。SpectralEstimatorOption
を 'User defined'
に指定すると、複数のプロパティが使用可能になるため、スペクトル推定値の解像度、分散、ダイナミック レンジを制御できるようになります。
MATLAB コマンド ラインで以下を入力して、
SegmentLength
プロパティ、OverlapPercentage
プロパティ、およびWindowOption
プロパティを有効にします。release(hACPRoutput) hACPRoutput.SpectralEstimation = 'Specify window parameters'
このように変更すると、スペクトル推定値をカスタマイズして電力測定値を取得できます。たとえば、スペクトル推定器のセグメント長を 1024 に設定してオーバーラップ率を 50% に増やすと、結果の分散値の増加が少なくなります。また、既定のハミング ウィンドウよりもサイド ローブ減衰が大きいウィンドウを選択することもできます。
チェビシェフ ウィンドウと 200 dB のサイド ローブ減衰を使用して、スペクトル推定器を作成します。
hACPRoutput.SegmentLength = 1024; hACPRoutput.OverlapPercentage = 50; % Choosing a Chebyshev window enables a SidelobeAtten property % you can use to set the side lobe attenuation of the window. hACPRoutput.Window = 'Chebyshev'; hACPRoutput.SidelobeAttenuation = 200;
オブジェクトを実行して、増幅器出力の ACPR 電力測定値を取得します。
ACPRoutput = hACPRoutput(txSignalAfterAmplifier)
ACPR オブジェクトによって、次の測定データが生成されます。
ACPR = -44.9399 -30.7136 -30.7670 -44.4450
最大ホールド オプションを使用した電力の測定
通信規格の中には、ACPR 値の計算に最大ホールド スペクトル電力測定を指定することを定めているものがあります。この計算では、現在のパワー スペクトル密度のベクトル推定値を以前の最大ホールド累計パワー スペクトル密度のベクトル推定値と比較します。最大ホールド測定値を取得する場合、オブジェクトは現在の入力データを使用して、パワー スペクトル密度のベクトル推定値を取得します。以前の最大ホールド累計パワー スペクトル密度のベクトルは、以前のオブジェクトへの呼び出しによって得られます。オブジェクトは各周波数ビンの最大値を使用して、平均電力測定値を計算します。リセット メソッドを呼び出すことによって、最大ホールド スペクトルがクリアされます。
MATLAB コマンド ラインで次のコマンドを入力して、25 の増幅器出力データ スナップショットの最大ホールド スペクトルを累計し、ACPR 測定値を取得します。
for idx = 1:24 hACPRoutput(dataAfterAmplifier(:,idx)); end ACPRoutput = hACPRoutput(dataAfterAmplifier(:,25))
ACPR オブジェクトによって、次の出力データが生成されます。
ACPR = -43.1123 -26.6964 -27.0009 -42.4803
信号スペクトルのプロット
MATLAB ソフトウェアを使用して、非線形増幅器の入出力の WCDMA 信号のパワー スペクトル密度をプロットします。プロットを使用すると、増幅器の非線形に固有のスペクトル再成長効果を可視化できます。スペクトル再成長がどのように測定に反映されるかを確認してください (メモ: 次のコードは信号スペクトルを可視化するためのもので、ACPR 測定値の取得とは関係ありません)。
win = hamming(1024); [PSD1,F] = pwelch(txSignalBeforeAmplifier,win,50,1024,SampleRate,'centered'); [PSD2,F] = pwelch(txSignalAfterAmplifier,win,50,1024,SampleRate,'centered'); plot(F,10*log10(PSD1)) hold on grid on plot(F,10*log10(PSD2),'g') legend('Amplifier input', 'Amplifier output')