ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

802.15.4 (ZigBee) システムの EVM 測定

この例では、COMM.EVMCOMM.EVM オブジェクトを使用して、シミュレートされた IEEE 802.15.4 [ 1 ] 送信側のエラー ベクトル振幅 (EVM) を測定する方法を示します。ZigBee 仕様は IEEE 802.15.4 に基づきます。

エラー ベクトル振幅 (EVM)

エラー ベクトル振幅 (EVM) は、エラーのない変調信号である基準波形と実際に送信された波形の差の測定値です。EVM は、送信機の変調精度を定量化するときに使用します。[ 1 ] は、802.15.4 送信機が RMS EVM 値が 35% より悪くならないことを規定しています。

システム パラメーター

868 MHz 帯域対応の 802.15.4 システムは、チップ変調に使用するバイナリ位相シフト キーイング (BPSK) とデータ シンボル エンコードに使用する差分エンコードがある直接シーケンス拡散スペクトル (DSSS) を利用します。

dataRate = 20e3;   % Bit rate in Hz
M = 2;             % Modulation order (BPSK)
chipValues = [1;1;1;1;0;1;0;1;1;0;0;1;0;0;0];
                   % Chip values for bit 0.
                   % Chip values for 1 is the opposite.

[ 1 ] の 6.7.3 節では、1000 以上の I および Q のベースバンド出力サンプルで測定を実行することを指定しています。フィルター遅延を考慮して、送信シンボルのシミュレーションではビットを 1 つ多く含めます。送信信号を 4 個オーバーサンプリングすることにします。送信機とテスト ハードウェアにおける信号劣化を考慮して SNR が 60 dB であると仮定しています。

numSymbols = 1000;          % Number of symbols required for one EVM value
numFrames = 100;            % Number of frames
nSamps = 4;                 % Number of samples that represents a symbol
filtSpan = 8;               % Filter span in symbols
gain = length(chipValues);  % Spreading gain (number of chips per symbol)
chipRate = gain*dataRate;   % Chip rate
sampleRate = nSamps*chipRate;    % Final sampling rate
numBits = ceil((numSymbols)/gain)+1;
                            % Number of bits required for one EVM value
SNR = 60;                   % Simulated signal-to-noise ratio in dB

初期化

0 ~ +1 および 1 ~ -1 の簡単なマッピングを行うと、BPSK 変調されたシンボルを取得できます。チップ値もマッピングした場合、ビット チップ変換前に変調し、行列演算を使用して効率的な MATLAB コードを作成できます。ZigBee 仕様では、ロールオフ係数 1 の二乗余弦パルス整形をもつパルス整形フィルターとして定義することもできます。

% Map chip values
chipValues = 1 - 2*chipValues;

% Design a raised cosine filter with rolloff factor 1
hTxFilter = comm.RaisedCosineTransmitFilter('RolloffFactor', 1, ...
  'OutputSamplesPerSymbol', nSamps, ...
  'FilterSpanInSymbols', filtSpan);
hRxFilter = comm.RaisedCosineReceiveFilter('RolloffFactor', 1, ...
  'InputSamplesPerSymbol', nSamps, ...
  'FilterSpanInSymbols', filtSpan, ...
  'DecimationFactor', nSamps);

EVM の測定

Communications System Toolbox™ には、RMS EVM、最大 EVM、および X 番目のパーセンタイル EVM 値を計算する COMM.EVM があります。[ 1 ] の 6.7.3 節では EVM の計算方法が定義され、測定された I および Q サンプルの平均誤差はシンボルの強度で正規化されます。BPSK システムの場合、両方のコンスタレーション シンボルの強度は同じです。これにより、'ピーク コンスタレーション電力' 正規化オプションを使用できます。他の通信システム規格で使用できるその他の正規化オプションには、平均コンスタレーション電力と平均基準信号強度があります。

hEVM = comm.EVM('Normalization', 'Peak constellation power')
hEVM = 

  System: comm.EVM 

  Properties:
               Normalization: 'Peak constellation power'
      PeakConstellationPower: 1                         
        MaximumEVMOutputPort: false                     
    XPercentileEVMOutputPort: false                     
                                                        

シミュレーション

最初に乱数データ ビットを生成し、DifferentialEncoderDifferentialEncoder System object を使用してこれらのビットを差分エンコードし、BPSK を使用して変調します。変調されたシンボルを、マップされたチップ値で行列乗算を行うことで拡散します。拡散されたシンボルはパルス整形フィルターを介して渡されます。EVM オブジェクトでは、受信シンボル rd および基準シンボル c は同期されており、かつ同じレートでしサンプリングされると想定されています。受信信号 r をダウンサンプリングし、基準信号 c と同期させます。

[ 1 ] では、1 回の RMS EVM 計算で 1000 個のシンボルを使用する必要があります。十分な平均を取るために、1000 個のシンボルを 100 フレーム シミュレートしてこれらの 100 RMS EVM 測定値の最大値を測定結果として使用します。シミュレートした送信機は前の「エラー ベクトル振幅」の節に示される基準を満たしています。

% Tx and Rx filter delays are identical and equal to half the filter span.
% Total delay is equal to the sum of two filter delays, which is the filter
% span of one filter.
refSigDelay = hTxFilter.FilterSpanInSymbols;

% Simulated number of symbols in a frame
simNumSymbols = numBits*gain;

% Initialize peak RMS EVM
peakRMSEVM = -inf;

% Create a comm.DifferentialEncoder object to differentially encode data
hdiffenc = comm.DifferentialEncoder;

% Create an comm.AWGNChannel System object and set its NoiseMethod property
% to 'Signal to noise ratio (SNR)'
hChan = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (SNR)',...
  'SNR', SNR);

% Loop over bursts
for p=1:numFrames
    % Generate random data
    b = randi([0 M-1], numBits, 1);
    % Differentially encode
    d = step(hdiffenc, b);
    % Modulate
    x = 1-2*d;
    % Convert symbols to chips (spread)
    c = reshape(chipValues*x', simNumSymbols, 1);
    % Pulse shape
    cUp = step(hTxFilter, c);
    % Calculate and set the 'SignalPower' property of the channel object
    hChan.SignalPower = sum(cUp.^2)/length(cUp);
    % Add noise
    r = step(hChan, cUp);
    % Downsample received signal.  Account for the filter delay.
    rd = step(hRxFilter, r);
    % Measure using the EVM System object
    rmsEVM = step(hEVM, ...
      complex(rd(refSigDelay+(1:numSymbols))), ...
      complex(c(1:numSymbols)));
    % Update peak RMS EVM calculation
    if (peakRMSEVM < rmsEVM)
        peakRMSEVM = rmsEVM;
    end
end

% Display results
fprintf(' Worst case RMS EVM (%%): %1.2f\n', peakRMSEVM)
 Worst case RMS EVM (%): 0.19

コメント

ZigBee 送信機が指定された EVM 値に準拠するかどうかを、COMM.EVM を利用してテストする方法を示しました。加法性ホワイト ガウス ノイズのみを発生する大まかなモデルを使用し、測定された EVM が指定された標準値を 35% 下回ることを示しました。

参考文献

  1. IEEE Standard 802.15.4, Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications for Low-Rate Wireless Personal Area Networks, 2003.

この情報は役に立ちましたか?