Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

変調の精度と搬送周波数の安定性のための Bluetooth EDR RF-PHY 送信機テスト

この例では、Communications Toolbox™ Library for the Bluetooth Protocol を使用して、変調の精度と搬送周波数の安定性に固有の Bluetooth® 拡張データ レート (EDR) 無線周波数 (RF) 物理層 (PHY) 送信機テストを実行する方法を説明します。テストの測定では、初期周波数オフセット、平方根平均二乗 (RMS) 微分エラー ベクトル振幅 (DEVM)、およびピークの DEVM 値が計算されます。この例ではさらに、これらのテストでの測定値が Bluetooth RF-PHY テスト仕様 [1] で指定された制限の範囲内にあるかどうかを検証します。

Bluetooth RF-PHY テストの目的

Bluetooth Special Interest Group (SIG) によって定義された Bluetooth RF-PHY テスト仕様 [1] には、送信機と受信機に関する RF-PHY テストが含まれています。これらの RF-PHY テストの目的は、以下を行うことです。

  • すべての Bluetooth デバイス間の相互運用性を確保する。

  • すべての Bluetooth 製品について、基本的なレベルのシステム パフォーマンスを確保する。

各テスト ケースには固有のテスト手順と想定される結果があり、試験対象実装 (IUT) によってこれらを達成しなければなりません。

RF-PHY 送信機テスト

送信機テストでの測定の主な目的は、送信機の特性が Bluetooth RF-PHY テスト仕様 [1] で指定されている制限の範囲内にあることを確認することです。この例には、EDR 変調の精度と搬送周波数の安定性に関連する送信機テストが含まれています。次の表に、この例で実行するさまざまな RF-PHY 送信機テストを示します。

RF-PHY 送信機テストの手順

次のブロック線図は、Bluetooth EDR 波形の EDR 変調の精度と搬送周波数の安定性に関連する送信機テストの手順をまとめたものです。

  • これらの長さの疑似ランダム シーケンスを使用して DH パケットまたは EV パケットを生成します。

  • 関数bluetoothWaveformGeneratorを通じてペイロード ビットを渡して、Bluetooth EDR テスト波形を生成します。

  • 搬送周波数オフセットとドリフトを追加します。

  • 加法性ホワイト ガウス ノイズ (AWGN) を付加します。

  • 波形の基本レート (BR) 部分を使用して初期周波数オフセットを推定します。

  • 推定された初期周波数オフセットで EDR 部分を補正します。

  • Bluetooth RF-PHY テスト仕様 [1] に基づいて生成された係数のフィルターを使用してルート レイズド コサイン フィルター処理を行います。

  • EDR 部分をそれぞれ長さ 50 マイクロ秒のブロックに分割します。

  • それぞれのブロックについて、補正されたシーケンスを 1 マイクロ秒遅延させ、その遅延を実際の補正されたシーケンスで微分して、エラー シーケンスを取得します。

  • エラー シーケンスと補正されたシーケンスに基づいて RMS DEVM およびピーク DEVM を計算します。

  • テストの判定を取得し、結果を表示します。

サポート パッケージのインストールの確認

% Check if the 'Communications Toolbox Library for the Bluetooth Protocol'
% support package is installed or not.
commSupportPackageCheck('BLUETOOTH');

シミュレーション パラメーターの構成

PHY 伝送モード、パケット タイプ、初期周波数オフセット、最大周波数ドリフト、シンボルあたりのサンプル数を指定するには、それぞれ phyModepacketTypeinitialFreqOffsetmaxFreqDrift, および sps を設定します。

phyMode = 'EDR2M';                    % PHY transmission mode
packetType = 'DH1';                 % EDR packet type
initialFreqOffset = 40000; % Initial frequency offset (Hz)
maxFreqDrift = 0;      % Maximum frequency drift (Hz), must be in the range [-10e3, 10e3]
sps = 8;                                           % Samples per symbol

テスト パラメーターの生成

前に構成したパラメーターを使用してテスト パラメーターを生成します。すべてのテスト パラメーターを取得するには、補助関数 helperEDRModulationTestConfig.m を使用します。周波数オフセットと熱ノイズを付加するには、それぞれcomm.PhaseFrequencyOffset System object およびcomm.ThermalNoise System object を作成して構成します。

[edrTestParams,waveformConfig,filtCoeff] = helperEDRModulationTestConfig(phyMode,packetType,sps);

% Create frequency offset System object
frequencyDelay = comm.PhaseFrequencyOffset('SampleRate',edrTestParams.sampleRate);

% Create thermal noise System object
NF = 12; % Noise figure (dB)
thNoise = comm.ThermalNoise('NoiseMethod','Noise figure', ...
                            'SampleRate',edrTestParams.sampleRate, ...
                            'NoiseFigure',NF);

送信機テストのシミュレーション

前の RF-PHY 送信機テストの手順を使用して、送信機テストのシミュレーションを行います。

% Initialize variables 
symDEVM = zeros(1,edrTestParams.requiredBlocks*edrTestParams.blockLength);
[blockRMSDEVM,estimatedBlockFreqDrifts] = deal(zeros(1,edrTestParams.requiredBlocks));
estimatedInitFreqOff = zeros(1,edrTestParams.NumPackets);
blockCount = 0;

% Generate 200 blocks of data as specified in Bluetooth RF-PHY Test Specifications
for packetCount = 1:edrTestParams.NumPackets
    
    % Generate random bits
    payload = edrTestParams.pnSeq();
    
    % Generate Bluetooth EDR waveform
    txWaveform = bluetoothWaveformGenerator(payload,waveformConfig);
    
    % Generate ideal EDR symbols from waveform
    packetDuration = helperBluetoothPacketDuration(packetType,phyMode,edrTestParams.numBytes);
    txWaveform1 = txWaveform(1:(packetDuration+edrTestParams.span)*sps);
    idealTxEDRWaveform = txWaveform1((edrTestParams.startIndex)*sps+1:end);
    
    % Perform matched filtering
    rxFilt = upfirdn(idealTxEDRWaveform,filtCoeff,1,sps);
    
    % Remove delay and normalize filtered signal
    idealEDRSymbols = rxFilt(edrTestParams.span+1:end,1)/sqrt(sps);
    
    % Add frequency offset    
    driftRate = maxFreqDrift/((packetDuration+edrTestParams.span)*sps); % Drift rate
    freqDrift = driftRate*(0:1:((packetDuration+edrTestParams.span)*sps-1))';% Frequency drift for the packet
    frequencyDelay.FrequencyOffset = freqDrift + initialFreqOffset; % Frequency offset, includes initial frequency offset and drift
    transWaveformCFO = frequencyDelay(txWaveform(1:(packetDuration+edrTestParams.span)*sps));
    
    % Add thermal noise
    noisyWaveform = thNoise(transWaveformCFO);
            
    % Compute initial frequency offset specified in Bluetooth RF-PHY Test Specifications
    estimatedInitFreqOff(packetCount) = helperEstimateInitialFreqOffset(noisyWaveform,sps);
    
    % Compensate initial frequency offset in the received waveform
    pfOffset = comm.PhaseFrequencyOffset('SampleRate',edrTestParams.sampleRate,'FrequencyOffset',-estimatedInitFreqOff(packetCount));
    freqTimeSyncRcv = pfOffset(noisyWaveform);

    % Remove access code, packet header, and guard time from packet
    rxEDRWaveform = freqTimeSyncRcv((edrTestParams.startIndex)*sps+1:end);
    
    % Perform matched filtering
    rxFilt = upfirdn(rxEDRWaveform,filtCoeff,1,sps);
    receivedEDRSymbols = rxFilt(edrTestParams.span+1:end,1)/sqrt(sps);
    
    % Compute DEVM values
    [rmsDEVM,rmsDEVMSymbol,samplingFreq] = ...
        helperEDRModulationTestMeasurements(receivedEDRSymbols,idealEDRSymbols,edrTestParams);
    
    % Accumulate measured values for 200 blocks as specified in Bluetooth RF-PHY Test Specifications 
    blockCount = blockCount + edrTestParams.numDEVMBlocks;
    symDEVM(((packetCount-1)*edrTestParams.numDEVMBlocks*edrTestParams.blockLength)+1:(packetCount)*edrTestParams.numDEVMBlocks ...
        *edrTestParams.blockLength) = rmsDEVMSymbol(1:edrTestParams.numDEVMBlocks*edrTestParams.blockLength);
    blockRMSDEVM(((packetCount-1)*edrTestParams.numDEVMBlocks)+1:((packetCount)*edrTestParams.numDEVMBlocks)) = ...
        rmsDEVM(1:edrTestParams.numDEVMBlocks);  
    estimatedBlockFreqDrifts(((packetCount-1)*edrTestParams.numDEVMBlocks)+1:((packetCount)*edrTestParams.numDEVMBlocks)) = ...
        samplingFreq(1:edrTestParams.numDEVMBlocks); 
end

補助関数 helperEDRModulationTestVerdict.m を使用して、測定値が指定された制限の範囲内にあるかどうかを検証し、判定を表示します。

helperEDRModulationTestVerdict(phyMode, ...
    edrTestParams,estimatedInitFreqOff,symDEVM,blockRMSDEVM,estimatedBlockFreqDrifts)
Modulation Accuracy Test Results: 

       Expected peak DEVM for all pi/4-DQPSK symbols is less than or equal to 0.35
       Result: Pass
       Percentage of pi/4-DQPSK symbols with DEVM less than or equal to 0.3 is 100
       Expected percentage of pi/4-DQPSK symbols with DEVM less than or equal to 0.3 is 99 % 
       Result: Pass

       Expected RMS DEVM for all pi/4-DQPSK blocks is less than or equal to 0.2
       Result: Pass
Carrier Frequency Stability Test Results: 
       Expected initial frequency offset range: [-75 kHz, 75 kHz]
       Do estimated initial frequency offsets for all the packets fall under expected values?
       Result: Yes
       Expected sampling frequencies range: [-10 kHz, 10 kHz]
       Do estimated sampling frequencies for all the blocks fall under expected values?
       Result: Yes
% Plot the constellation diagram
if strcmp(phyMode,'EDR2M')
    refSymbols = dpskmod(0:edrTestParams.M-1,edrTestParams.M,pi/4,'gray'); % Perform pi/4-DQPSK modulation
else
    refSymbols = dpskmod(0:edrTestParams.M-1,edrTestParams.M,0,'gray'); % Perform 8-DPSK modulation
end
constDiag = comm.ConstellationDiagram('ReferenceConstellation',refSymbols, ...
    'Title','Received EDR Constellation');
constDiag(receivedEDRSymbols);
release(constDiag);

この例では、変調の精度と搬送周波数の安定性に固有の Bluetooth EDR 送信機テストでの測定について説明します。シミュレーション結果により、計算されたこれらのテストの測定値が Bluetooth RF-PHY テスト仕様 [1] で指定された制限の範囲内にあることが検証されます。

付録

この例で使用している補助関数は次のとおりです。

参考文献

  1. Bluetooth Special Interest Group (SIG). “Bluetooth RF-PHY Test Specification”, v1.2/2.0/2.0, EDR/2.1/2.1, EDR/3.0/3.0, HS (), RF.TS/3.0.H.1, Section 4.5. 2009. https://www.bluetooth.com/

  2. Bluetooth Special Interest Group (SIG). "Core System Package [BR/EDR Controller Volume]". Bluetooth Core Specification. Version 5.2, Volume 2. https://www.bluetooth.com/