Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

エンドツーエンドの IEEE 802.15.4 PHY シミュレーション

この例では、Communications Toolbox™ を使用して、波形を生成する方法、波形を復号化する方法、IEEE® 802.15.4™ 規格 [1] のさまざまな PHY 仕様の BER 曲線を計算する方法を説明します。

背景

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

IEEE 802.15.4 の物理レイヤー実装

元の IEEE 802.15.4 規格とその改訂版は、複数の PHY 層を規定しています。これらはさまざまな変調スキームを使用しさまざまなデータ転送速度をサポートします。これらの物理レイヤーは、特定の周波数帯域に関して、特定の国々をある程度想定して考案されました。この例では、元の IEEE 802.15.4 仕様 (2.4 GHz の OQPSK、868/915 MHz の BPSK)、IEEE 802.15.4b (868/915 MHz の OQPSK)、IEEE 802.15.4c (780 MHz の OQPSK)、および IEEE 802.15.4d (950 MHz の GFSK および BPSK) で提案されている物理レイヤーの波形を生成および復号化する関数を提供します。

これらの物理レイヤーは、プリアンブルやフレーム開始区切り記号 (SFD) などの PHY プロトコル データ ユニット (PPDU) の形式、MAC プロトコル データ ユニット (MPDU) の長さと内容を規定します。プリアンブルと SFD は、フレーム レベルの同期で使用します。次の説明で、項記号はチップ シーケンスの整数インデックスを示します (IEEE 802.15.4 規格による)。複素数などの変調シンボルではありません。

  • OQPSK PHY: すべての OQPSK PHY はすべての 4 PPDU ビットを 1 つのシンボルにマップします。2.4 GHz OQPSK PHY は、各シンボルを 32 チップ シーケンスに拡散させますが、他の OQPSK PHY は 16 チップ シーケンスに拡散させます。その後で、チップ シーケンスは OQPSK 変調され、ハーフ サイン パルス整形フィルター (780 MHz 帯域の標準のレイズド コサイン フィルター) に渡されます。詳細については、[1] の Clause 10 を参照してください。

  • BPSK PHY: BPSK PHY は PPDU ビットを差分符号化します。得られた各ビットは、15 ビット シーケンスに拡散されます。その後で、チップ シーケンスは BPSK 変調され、標準のレイズド コサイン フィルターに渡されます。詳細については、[1] の Clause 11 を参照してください。

  • GFSK PHY: GFSK PHY は、はじめに剰余 2 の加算と PN9 シーケンスを使用して PPDU ビットを白色化します。その後で、白色化されたビットは GFSK 復調されます。詳細については、[1] の Clause 15 を参照してください。

波形の生成、復号化、BER 曲線計算

このコードは、さまざまな周波数帯域で波形の生成関数および復号化関数を使用して対応する BER 曲線を比較する方法を示します。

EcNo = -25:2.5:17.5;                % Ec/No range of BER curves
spc = 4;                            % samples per chip
msgLen = 8*120;                     % length in bits
s = rng(54806);                     % Seed random number generator
message = randi([0 1],msgLen,1);    % transmitted message

% Preallocate vectors to store BER results:
[berOQPSK2450, berOQPSK780, berBPSK, ...
    berGFSK] = deal(zeros(1,length(EcNo)));

% Create OQPSK configuration objects:
cfgOQPSK2450 = lrwpanOQPSKConfig(Band=2450, ...
  PSDULength=msgLen/8, SamplesPerChip=spc);
cfgOQPSK780  = lrwpanOQPSKConfig(Band=780, ... % or '868 MHz'/'915 MHz'
  PSDULength=msgLen/8, SamplesPerChip=spc);

for idx = 1:length(EcNo) % loop over the EcNo range
    
    % O-QPSK PHY, 2450 MHz
    waveform = lrwpanWaveformGenerator( ...
        message, cfgOQPSK2450);
    K = 2;      % information bits per symbol
    SNR = EcNo(idx) - 10*log10(spc) + 10*log10(K);
    received = awgn(waveform, SNR);
    bits     = lrwpan.PHYDecoderOQPSKNoSync( ...
        received,spc,'2450 MHz');
    [~, berOQPSK2450(idx)] = biterr(message, bits);
    
    % O-QPSK PHY, 780MHz
    waveform = lrwpanWaveformGenerator( ...
        message, cfgOQPSK780); 
    SNR = EcNo(idx) - 10*log10(spc) + 10*log10(K);
    received = awgn(waveform, SNR);
    bits     = lrwpan.PHYDecoderOQPSKNoSync( ...
        received,spc,'780 MHz');
    [~, berOQPSK780(idx)] = biterr(message,bits);
    
    % BPSK PHY, 868/915/950 MHz
    waveform =  lrwpan.PHYGeneratorBPSK(message,spc);
    K = 1;      % information bits per symbol
    SNR = EcNo(idx) - 10*log10(spc) + 10*log10(K);
    received = awgn(waveform, SNR);
    bits     =  lrwpan.PHYDecoderBPSK(received,spc);
    [~, berBPSK(idx)] = biterr(message,bits);
    
    % GFSK PHY, 950 MHz
    waveform = lrwpan.PHYGeneratorGFSK(message,spc);
    K = 1;      % information bits per symbol
    SNR = EcNo(idx) - 10*log10(spc) + 10*log10(K);
    received = awgn(waveform, SNR);
    bits     =  lrwpan.PHYDecoderGFSK(received,spc);
    [~, berGFSK(idx)] = biterr(message, bits);
end

% plot BER curve
figure
semilogy(EcNo,berOQPSK2450,'-o',EcNo,berOQPSK780,'-*', ...
    EcNo,berBPSK,'-+',EcNo,berGFSK,'-v')
legend('OQPSK, 2450 MHz','OQPSK, 780 MHz', ...
    'BPSK, 868/915/950 MHz','GFSK, 950 MHz', ...
    'Location','southwest')
title('IEEE 802.15.4 PHY BER Curves')
xlabel('Chip Energy to Noise Spectral Density, Ec/No (dB)')
ylabel('BER')
axis([min(EcNo) max(EcNo) 10^-2 1])
grid on

Figure contains an axes object. The axes object with title IEEE 802.15.4 PHY BER Curves, xlabel Chip Energy to Noise Spectral Density, Ec/No (dB), ylabel BER contains 4 objects of type line. These objects represent OQPSK, 2450 MHz, OQPSK, 780 MHz, BPSK, 868/915/950 MHz, GFSK, 950 MHz.

その他の調査

この例では、以下の機能、およびドキュメンテーションにない以下のユーティリティを使用します。ドキュメンテーションにないユーティリティの API と機能は、将来変更される可能性があります。ユーティリティのソース コードを表示するには、関数editを使用します。

  • lrwpanOQPSKConfig, lrwpanWaveformGenerator、および lrwpan.PHYDecoderOQPSKNoSync: IEEE 802.15.4 OQPSK 波形の作成と復号化

  • lrwpan.PHYGeneratorBPSK および lrwpan.PHYDecoderBPSK: IEEE 802.15.4 BPSK 波形の作成と復号化

  • lrwpan.PHYGeneratorGFSK および lrwpan.PHYDecoderGFSK: IEEE 802.15.4 GFSK 波形の作成と復号化

参考文献

1 - "IEEE Standard for Local and Metropolitan Area Networks--Part 15.4: Low-Rate Wireless Personal Area Networks (LR-WPANs)," in IEEE Std 802.15.4-2011 (Revision of IEEE Std 802.15.4-2006) , vol., no., pp.1-314, 5 Sept. 2011, doi: 10.1109/IEEESTD.2011.6012487.

関連するトピック