Main Content

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

この例では、シミュレートされた IEEE® 802.15.4 [ 1 ] 送信機のエラー ベクトル振幅 (EVM) を、comm.EVMSystem object™ を使用して測定する方法を示します。EVM 測定では、エラーのない変調基準波形と劣化波形の差を測定することにより、送信機の変調精度を定量化します。IEEE 802.15.4 では、ZigBee® 無線パーソナル エリア ネットワークに使用するためのプロトコルを規定しています。IEEE® 802.15.4 [ 1 ] の Section 6.7.3.1 では、次のように規定されています。"...IEEE 802.15.4 送信機は、1000 チップ測定した場合の EVM 値が 35% 未満である必要があります。エラーベクトル測定は、基準受信機システム経由で復元した後にベースバンド I/Q チップで行う必要があります。基準受信機は、測定の際、キャリア ロック、シンボル タイミング再生、および振幅調整を実行する必要があります。..."。ここでは、シミュレーションで適用される劣化が加法性ホワイト ガウス ノイズ (AWGN) のみであるため、キャリア ロック、シンボル タイミング再生、および振幅調整を受信機で処理する必要はありません。

システム パラメーターの定義

868 MHz 帯域対応の 802.15.4 システムのシステム パラメーター、チップ変調用の 2 位相偏移変調 (BPSK) があるダイレクト シーケンス スペクトル拡散 (DSSS)、およびデータ シンボル符号化用の差分符号化を定義します。

BPSK bit-to-chip マッピングは、14 チップ シーケンスで各入力ビットを拡散します。値が 0 の入力ビットは chipValues パラメーターで表現され、値が 1 の入力ビットは (1-chipValues) で表現されます。送信信号にオーバーサンプル レート 4 を使用し、フィルター スパンに 8 つのシンボルを使用します。送信機とテスト ハードウェアにおける信号劣化をシミュレートするために、60 dB の SNR を使用します。

dataRate = 20e3;   % Bit rate in Hz
M = 2;             % Modulation order (BPSK)
chipValues = ...   % Chip values for 0-valued input bits
[1;1;1;1;0;1;0;1;1;0;0;1;0;0;0];

numSymbols = 1000; % Number of symbols required to measure EVM
numFrames = 100;   % Number of frames
nSamps = 4;        % Oversample rate
filtSpan = 8;      % Filter span in symbols
SNR = 60;          % Simulated signal-to-noise ratio in dB

1 つの EVM 測定値を取得するために必要な拡散ゲイン、チップ レート、最終サンプル レート、およびビット数を計算します。フィルター遅延を加味するために、送信シンボルのシミュレーションではビットを 1 つ多く含めます。

gain = length(chipValues);     % Spreading gain (chips per symbol)
chipRate = gain*dataRate;      % Chip rate
sampleRate = nSamps*chipRate;  % Final sampling rate
numBits = ...                  % Bits for one EVM measurement
    ceil((numSymbols)/gain)+1;

初期化

0 ~ +1 および 1 ~ -1 の簡単なマッピングを使用して、BPSK 変調されたシンボルを取得します。行列演算の使用を有効にして効率的な MATLAB® コードを記述するには、bit-to-chip 変換前に変調を適用できるようにチップ値をマッピングします。ZigBee 用に規定されたパルス整形フィルターを適用するには、ロールオフ係数が 1 のルート レイズド コサイン フィルターのペアを定義します。

chipValues = 1 - 2*chipValues; % Map chip values
rctFilt = comm.RaisedCosineTransmitFilter( ...
    RolloffFactor=1, ...
    OutputSamplesPerSymbol=nSamps, ...
    FilterSpanInSymbols=filtSpan);
rcrFilt = comm.RaisedCosineReceiveFilter( ...
    RolloffFactor=1, ...
    InputSamplesPerSymbol=nSamps, ...
    FilterSpanInSymbols=filtSpan, ...
    DecimationFactor=nSamps);

EVM 測定の構成

IEEE® 802.15.4 の 6.7.3 節で定義されている EVM の計算方法では、測定された I サンプルと Q サンプルの平均誤差をシンボルの強度で正規化します。BPSK システムの場合、両方のコンスタレーション シンボルの強度は同じであるため、ピーク コンスタレーション電力の正規化を使用するように EVM 測定オブジェクトを構成します。EVM の計算方法および正規化オプションの詳細については、comm.EVMSystem object のリファレンス ページを参照してください。

evm = comm.EVM(Normalization='Peak constellation power');

送受信のシミュレーション

ランダム データ ビットを生成し、comm.DifferentialEncoder System object を使用してこれらのビットを差分符号化し、BPSK 変調を適用します。マップされたチップ値で行列乗算を行って、変調されたシンボルを拡散します。拡散シンボルはパルス整形フィルター経由で渡します。

EVM オブジェクトでは、受信シンボルおよび基準シンボルは同期されており、かつ同じレートでサンプリングされると想定されています。受信信号はダウンサンプリングされ、基準信号と同期されなければなりません。

十分な平均化を確保するために、各フレームに 1000 個のシンボルを含む 100 個のフレームをシミュレートします。最大 EVM 測定値を保存し、EVM 35% の要件を満たしているかチェックします。

送信フィルターと受信フィルターは同一であり、各々の遅延はフィルター スパンの半分に等しいため、合計遅延は 1 つのフィルターのスパンと等しくなります。

refSigDelay = rctFilt.FilterSpanInSymbols;
diffenc = comm.DifferentialEncoder;

simNumSymbols = numBits*gain; % Number of symbols in a frame
peakRMSEVM = -inf;            % Initialize peak RMS EVM value

for- ループを使用して、伝送フレームを処理します。送信側では、ランダム データを生成し、差動符号化を適用し、BPSK 変調を適用し、チップを拡散し、パルス整形を適用し、送信信号にノイズを付加します。受信側では、信号をダウンサンプリングしてフィルター処理し、信号遅延を加味し、EVM を測定し、ピーク EVM を更新して、測定された最大値を保存します。データのすべてのフレームを処理した後、最大 EVM 値を表示します。

for p=1:numFrames
    % Transmit side
    b = randi([0 M-1],numBits,1);
    d = diffenc(b);
    x = 1-2*d;                                  % Modulate
    c = reshape(chipValues*x',simNumSymbols,1); % Spread data
    cUp = rctFilt(c); 
    r = awgn(cUp,SNR,"measured");
    % Receive side
    rd = rcrFilt(r);                            % Downsample and filter
    rmsEVM = evm( ...
        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

その他の調査

関数iqimbal2coefを使用して、IQ 不平衡などの劣化要因を送信信号に追加できます。他の例と詳細については、変調精度の測定およびRF 劣化要因の可視化のトピックを参照してください。

参考文献

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

関連するトピック