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

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

Цели Bluetooth тесты RF-PHY

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

  • Обеспечьте функциональную совместимость между всеми bluetooth-устройствами.

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

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

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

Главная цель тестовых измерений передатчика состоит в том, чтобы гарантировать, что характеристики передатчика в пределах, заданных Тестовыми Техническими требованиями RF-PHY Bluetooth [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

Сгенерируйте тестовые параметры

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

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

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

Приложение

Пример использует этих помощников:

Выбранная библиография

  1. Специальная группа (SIG) Bluetooth. “Bluetooth Тестовая Спецификация RF-PHY”, 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. Специальная группа (SIG) Bluetooth. "Базовый Системный пакет [диспетчер BR/EDR Вольюм]". Спецификация Ядра Bluetooth. Версия 5.2, Вольюм 2. https://www.bluetooth.com/.