Bluetooth EDR RF-PHY Тесты передатчика на точность модуляции и стабильность несущей частоты

Этот пример показывает, как выполнить тесты передатчика физического слоя (RF) с улучшенной скоростью передачи данных (EDR) Bluetooth ® (PHY), характерные для точности модуляции и стабильности несущей частоты, используя библиотеку Communications Toolbox™ для протокола Bluetooth. Тестовые измерения вычисляют начальное смещение частоты, среднеквадратичный вектор дифференциальной ошибки (RMS) величины (DEVM) и пиковые значения DEVM. Этот пример также проверяет, находятся ли эти значения тестовых измерений в пределах, заданных спецификациями тестирования Bluetooth RF-PHY [1].

Цели тестов Bluetooth RF-PHY

Спецификации теста Bluetooth RF-PHY [1], определенные Bluetooth Special Interest Group (SIG), включают тесты RF-PHY для передатчика и приемника. Цели этих тестов RF-PHY состоят в том, чтобы:

  • Обеспечьте совместимость между всеми устройствами Bluetooth.

  • Обеспечьте базовый уровень производительности системы для всех продуктов Bluetooth.

Каждый тест имеет определенную процедуру тестирования и ожидаемый результат, который должен быть достигнут тестируемой реализацией (IUT).

Тесты передатчика RF-PHY

Основная цель тестовых измерений датчика состоит в том, чтобы убедиться, что характеристики датчика находятся в пределах, заданных спецификациями тестирования Bluetooth RF-PHY [1]. Этот пример включает тесты передатчика, имеющие отношение к точности модуляции EDR и устойчивости несущей частоты. Эта таблица показывает различные тесты передатчика RF-PHY, выполненные в этом примере.

Процедура тестирования передатчика RF-PHY

Этот блок суммирует процедуру тестирования для тестов передатчика, имеющих отношение к точности модуляции EDR и устойчивости несущей сигналов EDR Bluetooth.

  • Сгенерируйте 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, тип пакета, начальное смещение частоты, максимальный дрейф частоты и выборки на символ, установите phyMode, packetType, initialFreqOffset, maxFreqDrift, и 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 helper. Чтобы добавить смещение частоты и тепловой шум, создайте и сконфигурируйте comm.PhaseFrequencyOffset и comm.ThermalNoise Системные объекты, соответственно.

[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 helper, чтобы проверить, находятся ли измерения в заданных пределах, и отобразить вердикт.

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

Figure contains an axes. The axes with title Payload Symbol DEVM contains an object of type line.

       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

Figure contains an axes. The axes with title Block RMS DEVM contains an object of type line.

       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);

Figure Constellation Diagram contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes with title Received EDR Constellation contains 2 objects of type line. This object represents Channel 1.

Этот пример демонстрирует тестовые измерения передатчика Bluetooth EDR, характерные для точности модуляции и устойчивости несущей частоты. Результаты симуляции проверяют, что эти вычисленные значения тестовых измерений находятся в пределах, заданных спецификациями тестирования Bluetooth RF-PHY [1].

Приложение

В примере используются следующие помощники:

Избранная библиография

1 - Bluetooth Special Interest Group (SIG). «Bluetooth RF-PHY Test Спецификации», v1.2/2.0/2.0, EDR/2.1/2.1, EDR/3.0/3.0, HS (), RF.TS/3.0.H.1, раздел 4.5. 2009. https://www.bluetooth.com/

2 - Bluetooth Special Interest Group (SIG). «Основной системный пакет [том контроллера BR/EDR]». Спецификация ядра Bluetooth. Версия 5.2, том 2. https://www.bluetooth.com/

Похожие темы