В этом примере показано, как измерить Bluetooth® низкая энергия (BLE) физический уровень радиочастоты (RF-PHY), передатчик тестирует характерный для характеристик модуляции, смещения несущей частоты и дрейфа, пользующегося Библиотекой Communications Toolbox™ для Протокола Bluetooth. Этот пример также проверяет, являются ли тестовые измерения в заданных пределах согласно Тестовым Техническим требованиям RF-PHY Bluetooth [1]
Тестовые Технические требования RF-PHY Bluetooth [1] заданный Специальной группой (SIG) Bluetooth включают тесты RF-PHY и для передатчика и для получателя. Цели этих тестов RF-PHY состоят в том, чтобы гарантировать функциональную совместимость между всеми устройствами BLE и проверять, что базовый уровень производительности системы гарантируется для всех продуктов BLE. Каждый тест имеет заданную процедуру тестирования и ожидаемый результат, которому должна встретить реализация под тестом (IUT).
Основная цель тестовых измерений передатчика состоит в том, чтобы гарантировать, что характеристики передатчика в заданных пределах, как задано в тестовых технических требованиях [1]. Этот пример покрывает тесты передатчика, относящиеся к характеристикам модуляции, смещению несущей частоты и дрейфу. Идентификаторы теста и тестовые цели продуманных тестов следующие:
Эта блок-схема обобщает процедуру тестирования для тестов передатчика, относящихся к характеристикам модуляции, смещению несущей частоты и дрейфу, как задано в [1].
Сгенерируйте тестовые пакеты и передайте их через bleWaveformGenerator
чтобы сгенерировать BLE тестируют формы волны. Тестовые формы волны, требуемые для различных тестовых идентификаторов:
Выполните фильтрацию, как задано в Тестовых Технических требованиях RF-PHY Bluetooth [1].
Добавьте смещение несущей частоты и дрейфуйте для тестов: RF-PHY/TRM/BV-06-C, RF-PHY/TRM/BV-12-C, RF-PHY/TRM/BV-14-C.
FM демодулирует и измеряет тестовые характеристики (отклонение частоты или дрейф частоты).
Получите тестовый вердикт и отобразите результаты.
% Check if the 'Communications Toolbox Library for the Bluetooth Protocol' % support package is installed or not. commSupportPackageCheck('BLUETOOTH');
Инициализируйте переменные, такие как тестовый ID передатчика, количество выборок на символ, длину полезной нагрузки и максимальный дрейф несущей частоты.
txTestID = "RF-PHY/TRM/BV-09-C"; % Select one from these test cases: % RF-PHY/TRM/BV-09-C,RF-PHY/TRM/BV-11-C, % RF-PHY/TRM/BV-13-C,RF-PHY/TRM/BV-06-C, % RF-PHY/TRM/BV-12-C,RF-PHY/TRM/BV-14-C payloadLen = 240; % Payload length in bytes, must be in the range [37,255] SPS = 32; % Number of samples per symbol, minimum of 32 samples per % symbol as per the test specifications % Frequency offset and drift for the tests: RF-PHY/TRM/BV-06-C, % RF-PHY/TRM/BV-12-C, RF-PHY/TRM/BV-14-C. maxFreqDrift = 5000; % In Hz, must be in the range [-50e3,50e3] initFreqOffset = 12000; % In Hz, must be in the range [-100e3,100e3] % The function, <matlab:edit(helperBLEModulationTestConfig.m') % helperBLEModulationTestConfig.m>, can be configured to generate test % parameters and to design a channel filter based on test case ID and samples % per symbol. [filtDesign, testParams] = helperBLEModulationTestConfig (txTestID, SPS);
На основе тестовых параметров сгенерируйте тестовые формы волны BLE с помощью функции помощника helperBLETestWaveform. После этого выполните фильтрацию на сгенерированных тестовых формах волны.
testWfmLen = (testParams.nonPDULen+testParams.codingFactor*payloadLen*testParams.bitsPerByte)*sps; [testWfm,filtTestWfm] = deal(zeros(testParams.numOfTestSeqs,testWfmLen)); for wfmIdx = 1:testParams.numOfTestSeqs % Generate BLE test waveforms testWfm(wfmIdx,:) = helperBLETestWaveform(testParams.testSeqIds(wfmIdx),... payloadLen,sps,testParams.phyMode); % Perform filtering on the test waveforms filtTestWfm(wfmIdx,:) = conv(testWfm(wfmIdx,:),... filtDesign.Coefficients.','same'); end
Добавьте смещение частоты и дрейф частоты только для тестов смещения и дрейфа несущей частоты: RF-PHY/TRM/BV-06-C, RF-PHY/TRM/BV-12-C, RF-PHY/TRM/BV-14-C.
if any(strcmp(txTestID,{'RF-PHY/TRM/BV-06-C','RF-PHY/TRM/BV-12-C','RF-PHY/TRM/BV-14-C'})) driftRate = maxFreqDrift/length(filtTestWfm);% Drift rate freqOffset = driftRate*(0:1:(length(filtTestWfm)-1))';% Frequency drift freqOffset = freqOffset+initFreqOffset;% Frequency offset and frequency drift pfo = comm.PhaseFrequencyOffset('FrequencyOffset',freqOffset,'SampleRate',testParams.sampleRate); wfmFreqOffset = pfo(filtTestWfm.'); else wfmFreqOffset = filtTestWfm; end
Функция, helperBLEModulationTestMeasurements.m, выполняет демодуляцию FM и вычисляет или отклонение частоты, или дрейф частоты и начальное смещение частоты на основе обеспеченного ID теста.
[waveformDiffFreq,fOut1,fOut2] = helperBLEModulationTestMeasurements(wfmFreqOffset,txTestID,testParams);
Функция, helperBLEModulationTestVerdict.m, проверяет, являются ли измерения в заданных пределах или нет, и отображает вердикт по командному окну.
helperBLEModulationTestVerdict(waveformDiffFreq,txTestID,testParams,fOut1,fOut2)
Test sequence: 00001111 Measured average frequency deviation = 250 KHz Expected average frequency deviation = 247.5 kHz to 252.5 kHz Result: Pass Test sequence: 10101010 Measured average frequency deviation = 244.0016 kHz Expected average frequency deviation > 185 kHz Result: Pass Ratio of deviations between two test sequences = 0.97601 Expected Ratio > 0.8 Result: Pass
Этот пример продемонстрировал тестовые измерения передатчика BLE, характерные для характеристик модуляции, смещения несущей частоты и дрейфа согласно Тестовым Техническим требованиям RF-PHY Bluetooth [1].
Помощники, используемые в этом примере:
helperBLETestWaveform.m: Генерирует тестовую пакетную форму волны BLE
helperBLEModulationTestConfig.m: Конфигурирует тестовые параметры передатчика BLE
helperBLEModulationTestMeasurements.m: отклонение частоты Мер, смещение несущей частоты и дрейф
helperBLEModulationTestVerdict.m: Подтверждает измерения, и отобразите результаты
Разделите 4.4 из тестовой спецификации RF-PHY Bluetooth, версии: РФ-PHY.TS.5.1.0.
Объем 6 из спецификации ядра Bluetooth, системный пакет ядра версии 5.0 [низкий энергетический контроллер объем].