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

IEEE 802.15.4 OQPSK 信号の復元

この例では、Communications Toolbox™ Library for the ZigBee® Protocol を使用して、無線機から受信する可能性のある OQPSK 波形を復号化する実用的な IEEE® 802.15.4™ PHY 受信機を実装する方法を説明します。この実用的な受信機は、USRP® B200-mini 無線機と Communications Toolbox Support Package for USRP® radio を使用して、2.4 GHz 帯域でホーム オートメーションを有効にする市販の ZigBee 無線機から受信した規格準拠の波形を復号化しました。

背景

IEEE 802.15.4 規格は、低速無線パーソナル エリア ネットワーク (LR-WPAN) [1] の MAC 層と PHY 層を規定します。IEEE 802.15.4 の MAC 層と PHY 層は、ZigBee、 WirelessHart®、6LoWPAN、MiWi などの他の上位層のベースを提供します。このような規格は、ホーム オートメーションやセンサー ネットワーキングに使用例があり、モノのインターネット (IoT) の流行にも密接に関連しています。

受信機アーキテクチャ

全体に、受信機は以下の処理を実行します。

  • 整合フィルター処理

  • 大まかな周波数補正

  • 細かな周波数補正

  • Timing Recovery

  • プリアンブル検出

  • 位相不確定性の解決

  • 逆拡散

これらのステップの間に信号が可視化されて、信号の損失と補正を確認できます。

整合フィルター処理

load lrwpanPHYCaptures % load OQPSK signals captured in the 2.4 GHz band
spc = 12;  % 12 samples per chip; the frame was captured at 12 x chiprate = 12 MHz

整合フィルターは、信号の SNR を改善します。2.4 GHz OQPSK PHY はハーフ サイン パルスを使用するため、次の整合フィルター処理演算が必要です。

% Matched filter for captured OQPSK signal:
halfSinePulse = sin(0:pi/spc:(spc)*pi/spc);
decimationFactor = 3; % reduce spc to 4, for faster processing
matchedFilter = dsp.FIRDecimator(decimationFactor, halfSinePulse);
filteredOQPSK = matchedFilter(capturedFrame1); % matched filter output

周波数オフセット

周波数オフセットが存在する状態での信号の復号化は、どのような無線受信機にとっても困難です。30 kHz までの周波数オフセットは、市販の ZigBee 無線機から送信され、USRP® B200-mini 無線機を使用して取得された信号のものとして測定されました。

コンスタレーション ダイアグラムから受信信号の品質がわかりますが、はじめに、理想的な OQPSK 信号の軌跡は円を辿るということに気付くことが重要です。

% Plot constellation of ideal OQPSK signal
msgLen = 8*120;                     % length in bits
message = randi([0 1], msgLen, 1);  % transmitted message
idealOQPSK = lrwpan.PHYGeneratorOQPSK(message, spc, '2450 MHz');
constellation = comm.ConstellationDiagram('Name', 'Ideal OQPSK Signal', 'ShowTrajectory', true);
constellation.Position = [constellation.Position(1:2) 300 300];
constellation(idealOQPSK);

上のコンスタレーションにも、フレームの先頭に対応する半径が 1 つと、フレームの終端に対応する半径が 1 つ含まれています。同時に、周波数オフセットはコンスタレーションを円状に回転させ、コンスタレーションもリング状になります。このため、OQPSK 信号の同相成分を半分のシンボル分遅延させることで得られる QPSK に相当する信号のコンスタレーションを観察することの方が重要です。ハーフ サイン パルス フィルター処理を使用し、オーバーサンプリング係数が 1 より大きいときには、理想的な QPSK コンスタレーションは原点と 4 つの QPSK シンボル (赤色の十字) をつなげた 'X' の形の領域に似ています。

% Plot constellation of ideal QPSK-equivalent signal
idealQPSK = complex(real(idealOQPSK(1:end-spc/2)), imag(idealOQPSK(spc/2+1:end))); % align I and Q
release(constellation);
constellation.Name = 'Ideal QPSK-Equivalent Signal';
constellation.ReferenceConstellation = [1+1i 1-1i 1i-1 -1i-1];
constellation(idealQPSK);

ただし、キャプチャされたフレームのサンプルでは、周波数オフセットが原因でこの 'X' の形の領域の位置が変わります。

% Plot constellation of QPSK-equivalent (impaired) received signal
filteredQPSK = complex(real(filteredOQPSK(1:end-spc/(2*decimationFactor))), imag(filteredOQPSK(spc/(2*decimationFactor)+1:end))); % align I and Q
constellation = comm.ConstellationDiagram('XLimits', [-7.5 7.5], 'YLimits', [-7.5 7.5], ...
                                          'ReferenceConstellation', 5*qammod(0:3, 4), 'Name', 'Received QPSK-Equivalent Signal');
constellation.Position = [constellation.Position(1:2) 300 300];
constellation(filteredQPSK);

大まかな周波数補正

このような周波数オフセットは、はじめに OQPSK 信号を二乗し 2 つのスペクトル ピークを明らかにする FFT ベースの手法 [ 2 ] を使用して大まかに補正されます。大まかな周波数オフセットは、この 2 つのスペクトル ピーク周波数を平均化し半分にすることで求められます。

% Coarse frequency compensation of OQPSK signal
coarseFrequencyCompensator = comm.CoarseFrequencyCompensator('Modulation', 'OQPSK', ...
      'SampleRate', spc*1e6/decimationFactor, 'FrequencyResolution', 1e3);
[coarseCompensatedOQPSK, coarseFrequencyOffset] = coarseFrequencyCompensator(filteredOQPSK);
fprintf('Estimated frequency offset = %.3f kHz\n', coarseFrequencyOffset/1000);

% Plot QPSK-equivalent coarsely compensated signal
coarseCompensatedQPSK = complex(real(coarseCompensatedOQPSK(1:end-spc/(2*decimationFactor))), imag(coarseCompensatedOQPSK(spc/(2*decimationFactor)+1:end))); % align I and Q
release(constellation);
constellation.Name = 'Coarse frequency compensation (QPSK-Equivalent)';
constellation(coarseCompensatedQPSK);
Estimated frequency offset = 26.855 kHz

それでも、サンプルの中には、原点と QPSK シンボルをつないだ 'X' の形の領域 (赤色の十字) の外側に位置するものがあるため、細かな周波数補正も必要です。

Fine Frequency Compensation

細かな周波数補正では、[ 3 ] で説明されている OQPSK 搬送波再生アルゴリズムに従います。このアルゴリズムは、同相信号成分を半分のシンボル分遅延させている場合にも OQPSK 信号に適用されることがない、対応する QPSK とは動作が異なります。

% Fine frequency compensation of OQPSK signal
fineFrequencyCompensator = comm.CarrierSynchronizer('Modulation', 'OQPSK', 'SamplesPerSymbol', spc/decimationFactor);
fineCompensatedOQPSK = fineFrequencyCompensator(coarseCompensatedOQPSK);

% Plot QPSK-equivalent finely compensated signal
fineCompensatedQPSK = complex(real(fineCompensatedOQPSK(1:end-spc/(2*decimationFactor))), imag(fineCompensatedOQPSK(spc/(2*decimationFactor)+1:end))); % align I and Q
release(constellation);
constellation.Name = 'Fine frequency compensation (QPSK-Equivalent)';
constellation(fineCompensatedQPSK);

ここまででコンスタレーションは理想的な形に近づきましたが、まだタイミング再生が必要です。

Timing Recovery

信号同期は、[ 3 ] で説明されている OQPSK タイミング再生アルゴリズムに従って行われます。搬送波再生とは対照的に、OQPSK タイミング再生アルゴリズムは、OQPSK 信号の同相成分を半分のシンボル分遅延させることで得られる QPSK に相当する信号に対応する QPSK と等価です。

% Timing recovery of OQPSK signal, via its QPSK-equivalent version
symbolSynchronizer = comm.SymbolSynchronizer('Modulation', 'OQPSK', 'SamplesPerSymbol', spc/decimationFactor);
syncedQPSK = symbolSynchronizer(fineCompensatedOQPSK);

% Plot QPSK symbols (1 sample per chip)
release(constellation);
constellation.Name = 'Timing Recovery (QPSK-Equivalent)';
constellation(syncedQPSK);

Symbol Synchronizer にはシンボルごとにサンプルが 1 つ含まれていることに注意してください。この段階では、コンスタレーションは QPSK 信号に本当によく似ています。原点から徐々に遠ざかるいくつかのシンボルは、フレームの先頭と終端に対応しています。

プリアンブル検出、逆拡散、位相不確定性の解決:

信号が同期されると、次のステップはプリアンブル検出です。プリアンブル検出は信号が逆拡散されていると成功しやすくなります。細かな周波数補正の結果、/2 位相の不確実性が生じていることも注目に値します。真のコンスタレーションは 0、/2、、または /2 ラジアン分回転されている可能性があるということです。プリアンブル検出で 4 つすべての可能性のあるコンスタレーションの回転を考慮することで、この位相の不確定性が解決されます。次の関数は、同期済み OQPSK 信号を処理し、複合逆拡散、位相不確実性の解決、およびプリアンブル検出を実行して、MAC プロトコル データ ユニット (MPDU) を出力します。

MPDU = lrwpan.PHYDecoderOQPSKAfterSync(syncedQPSK);
Found preamble of OQPSK PHY.
Found start-of-frame delimiter (SFD) of OQPSK PHY.

その他の調査

ジェネレーター関数と復号化関数、および構成オブジェクトの詳細については、次の情報を参照してください。

参考文献

  1. IEEE 802.15.4-2011 - IEEE Standard for Local and metropolitan area networks--Part 15.4: Low-Rate Wireless Personal Area Networks (LR-WPANs)

  2. "Designing an OQPSK demodulator", Jonathan Olds.

  3. Rice, Michael.Digital Communications - A Discrete-Time Approach.1st ed.New York, NY: Prentice Hall, 2008.