最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

隣接チャネル電力比 (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 の信号のスナップショットに分割し、データ行列 dataBeforeAmplifierdataAfterAmplifier の列に保存します。

WCDMA の仕様では、3.84 MHz のサンプリング周波数を使用してすべての測定値を取得する必要があると定めています。

comm.ACPR System object の作成と測定値の設定

  1. 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);
    
  2. 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     
  3. "メイン チャネル" 中心周波数と測定帯域幅を指定します。

    MainChannelFrequency プロパティを使用してメイン チャネルの中心周波数を指定します。次に MainMeasurementBandwidth プロパティを使用してメイン チャネル測定帯域幅を指定します。

    使用中のベースバンド データのメイン チャネルの中心周波数は 0 Hz です。WCDMA 標準では、3.84 MHz 測定帯域幅を使用してメイン チャネルの電力を取得することを定めています。次のコマンドを入力して、これらの測定帯域幅を指定します。

    hACPR.MainChannelFrequency = 0;
    hACPR.MainMeasurementBandwidth = 3.84e6;
    

  4. "隣接チャネル" オフセットと測定帯域幅を指定します。

    WCDMA 標準では、メイン チャネルの中心周波数から 5、-5、10、-10 MHz 離れた 4 つの隣接チャネルの ACPR 制限値を指定します。いずれの場合も、3.84 MHz 帯域幅を使用して隣接チャネル電力を取得します。AdjacentChannelOffset プロパティと AdjacentMeasurementBandwidth プロパティを使用して、隣接チャネル オフセットと測定帯域幅を指定します。

    hACPR.AdjacentChannelOffset = [-10 -5 5 10]*1e6;
    hACPR.AdjacentMeasurementBandwidth = 3.84e6;
    

    すべての隣接チャネルの測定帯域幅が等しい場合は、スカラー値を指定します。測定帯域幅が異なる場合は、オフセット ベクトルに等しい長さで測定帯域幅のベクトルを指定します。

  5. MATLAB コマンド ラインで以下を入力して、MainChannelPowerOutputPort プロパティと AdjacentChannelPowerOutputPort プロパティを true に設定します。

    hACPR.MainChannelPowerOutputPort = true
    hACPR.AdjacentChannelPowerOutputPort = true
  6. comm.ACPR System object を作成して増幅器出力を測定します。

    hACPRoutput = clone(hACPR);

ACPR 測定値の取得

ACPR の測定値は、comm.ACPRstep メソッドを呼び出して取得します。また、メイン チャネルと隣接チャネルの電力測定値も取得できます。PowerUnits プロパティで測定単位を指定します。プロパティ値の既定値は dBm (100 万ミリワット (mW) を基準とした電力比) になります。

  1. 増幅器入力の ACPR 測定値を取得します。

    [ACPR mainChannelPower adjChannelPower] = ...,
    step(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
  2. 増幅器出力の ACPR 測定値を取得します。

    [ACPR mainChannelPower adjChannelPower] = ...,
    step(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 タップ フィルターで取得したデータが含まれています。

  1. フィルターを作成 (Signal Processing Toolbox™ ソフトウェアの rcosdesign を使用) し、MATLAB コマンド ラインで次のように入力して測定値を取得します。

    % Scale for 0 dB passband gain
    measFilt = rcosdesign(0.22,16,8)/sqrt(8); 
  2. 前の手順で作成したフィルターを ACPR オブジェクトの測定フィルターとして設定します。

    release(hACPR);
    hACPR.MeasurementFilterSource = 'Property';
    hACPR.MeasurementFilter = measFilt;
    
  3. comm.ACPR System object を複製して、同じフィルターを増幅器出力に実装します。

    hACPRoutput = clone(hACPR)

  4. 増幅器入力の ACPR 電力測定値を取得します。

    ACPR = step(hACPR,txSignalBeforeAmplifier)
    

    comm.ACPR System object によって、次の測定値データが生成されます。

    ACPR =
      -71.4648  -55.5514  -55.9476  -71.3909
  5. 増幅器出力の ACPR 電力測定値を取得します。

    ACPRoutput = step(hACPRoutput,txSignalAfterAmplifier)
    

    comm.ACPR System object によって、次の測定値データが生成されます。

    ACPR =
       -42.2364  -27.2242  -27.0748  -42.5810

パワー スペクトル推定器の制御

既定の設定では、ACPR オブジェクトは Welch パワー スペクトル推定器とハミング ウィンドウおよびゼロ パーセント オーバーラップを使用して電力を測定します。オブジェクトは対象の測定帯域幅のパワー スペクトル密度推定に積分の四角形近似を使用します。SpectralEstimatorOption を「ユーザー定義」に指定すると、複数のプロパティが使用可能になるため、スペクトル推定値の解像度、分散、ダイナミック レンジを制御できるようになります。

  1. MATLAB コマンド ラインで以下を入力して、SegmentLength、OverlapPercentage および WindowOption プロパティを有効にします。

    release(hACPRoutput)
    hACPRoutput.SpectralEstimation = 'Specify window parameters'

    このように変更すると、スペクトル推定値をカスタマイズして電力測定値を取得できます。たとえば、スペクトル推定器のセグメント長を 1024 に設定してオーバーラップ率を 50% に増やすと、結果の分散値の増加が少なくなります。また、既定のハミング ウィンドウよりもサイド ローブ減衰が大きいウィンドウを選択することもできます。

  2. 'Chebyshev' ウィンドウと 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;
    
  3. step メソッドを呼び出して増幅器出力の ACPR の電力測定値を取得します。

    ACPRoutput = step(hACPRoutput,txSignalAfterAmplifier)
    

    ACPR オブジェクトによって、次の測定データが生成されます。

    ACPR =
      -44.9399  -30.7136  -30.7670  -44.4450

最大ホールド オプションを使用した電力の測定

通信規格の中には、ACPR 値の計算に最大ホールド スペクトル電力測定を指定することを定めているものがあります。この計算では、現在のパワー スペクトル密度のベクトル推定値を以前の最大ホールド累計パワー スペクトル密度のベクトル推定値と比較します。最大ホールド測定値を取得する場合、オブジェクトは現在の入力データを使用して、パワー スペクトル密度のベクトル推定値を取得します。以前の最大ホールド累計パワー スペクトル密度のベクトルは、以前の step メソッドを呼び出すことによって得られます。オブジェクトは各周波数ビンの最大値を使用して、平均電力測定値を計算します。リセット メソッドを呼び出すことによって、最大ホールド スペクトルがクリアされます。

  1. MATLAB コマンド ラインで次のコマンドを入力して、25 の増幅器出力データ スナップショットの最大ホールド スペクトルを累計し、ACPR 測定値を取得します。

    for idx = 1:24
        step(hACPRoutput,dataAfterAmplifier(:,idx));
    end
    ACPRoutput = step(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')