exponenta event banner

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

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

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

Спецификации тестирования RF-PHY Bluetooth [1], определенные Группой специальных интересов Bluetooth (SIG), включают тесты RF-PHY для передатчика и приемника. Цели этих тестов RF-PHY заключаются в следующем:

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

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

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

Испытания передатчика RF-PHY

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

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

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

  • Создание пакетов DH или EV с использованием псевдослучайных последовательностей этих длин.

  • Передача битов полезной нагрузки через bluetoothWaveformGenerator функция для генерации тестовых сигналов Bluetooth EDR.

  • Добавление смещения и дрейфа несущей частоты.

  • Добавить дополнительный белый гауссов шум (AWGN).

  • Оцените начальный сдвиг частоты, используя часть основной скорости (BR) сигнала.

  • Скомпенсировать EDR часть с помощью оцененного начального сдвига частоты.

  • Выполните фильтрацию квадратного корня по косинусу с использованием фильтра, коэффициенты которого формируются на основе спецификаций теста RF-PHY Bluetooth [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

Создание параметров теста

Используйте предыдущие сконфигурированные параметры для генерации параметров теста. Чтобы получить все параметры теста, используйте функцию helperEDRModulationStartConfig.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

Используйте вспомогательную функцию helperEDRModulationStartVerdict.m для проверки того, находятся ли измерения в заданных пределах, и отображения вердикта.

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.

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

Приложение

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

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

1 - Bluetooth Special Interest Group (SIG). «Спецификация тестирования Bluetooth RF-PHY», версия 1.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/

Связанные темы