Библиотека Communications Toolbox™ для функций Протокола Bluetooth® позволяет вам добавить нарушения радиочастоты (RF) в Bluetooth низкую энергию (BLE) или форму волны базовой скорости / улучшенной скорости передачи данных (BR/EDR) Bluetooth.
Задайте длину данных. Создайте вектор столбца сообщения из заданной длины данных, содержащей случайные двоичные значения.
dataLength = 2056; % In bits
message = randi([0 1],dataLength,1);
symbolRate = 1e6;
Задайте значения режима (PHY) физического уровня, индекса канала, выборок на символ и указателя.
phyMode = 'LE125K'; chanIdx = 2; SPS = 4; accAdd = [1 1 1 1 0 1 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 ... 0 1 0 1 1 0 0].';
Сгенерируйте форму волны BLE.
txWaveform = bleWaveformGenerator(message,'Mode',phyMode,'SamplesPerSymbol',sps,'ChannelIndex',chanIdx,'AccessAddress',accAdd);
Инициализируйте нарушения RF для заданного режима PHY и выборок на символ при помощи функции helperBLEImpairmentsInit. Функция помощника возвращает структуру со смещением частоты фазы и переменными дробными полями задержки.
initRFImp = helperBLEImpairmentsInit(phyMode,sps)
initRFImp = struct with fields:
pfo: [1x1 comm.PhaseFrequencyOffset]
varDelay: [1x1 dsp.VariableFractionalDelay]
Задайте значения смещения частоты и смещения фазы.
initRFImp.pfo.FrequencyOffset = 150; % In Hz initRFImp.pfo.PhaseOffset = -1; % In degrees
Задайте значения статического смещения синхронизации, синхронизировав дрейф, переменное смещение синхронизации и смещение DC.
staticTimingOff = 0.15*sps; timingDrift = 10; % In ppm initRFImp.vdelay = (staticTimingOff:timingDrift:staticTimingOff + timingDrift * (длина (txWaveform) - 1))'; initRFImp.dc = 620;
Добавьте нарушения RF в сгенерированную форму волны BLE при помощи функции helperBLEImpairmentsAddition.
txImpairedWaveform = helperBLEImpairmentsAddition(txWaveform,initRFImp);
Создайте dsp.SpectrumAnalyzer
по умолчанию Системный объект. Затем установите частоту дискретизации спектра частоты. Визуализируйте сгенерированную и форму волны BLE, которой повреждают, в спектре анализатор.
scope = dsp.SpectrumAnalyzer; scope.SampleRate = sps*symbolRate; scope.NumInputPorts = 2; scope.Title = 'Spectrum of Generated and Impaired BLE Waveform'; scope.ShowLegend = true; scope.ChannelNames = {'Generated BLE Waveform','Impaired BLE Waveform'}; scope(txWaveform,txImpairedWaveform);
Визуализируйте сгенерированную и форму волны BLE, которой повреждают, во временном интервале при помощи timescope
объект.
timeScope = timescope('SampleRate',symbolRate*sps,'TimeSpanSource','Auto','ShowLegend',true); timeScope.Title = 'Generated and Impaired BLE Waveform in Time-Domain'; timeScope.ChannelNames = {'Generated BLE Waveform','Impaired BLE Waveform'}; timeScope(real(txWaveform),real(txImpairedWaveform));
[1] Технологический Веб-сайт Bluetooth. “Технологический Веб-сайт Bluetooth | официальный сайт Технологии Bluetooth”. Полученный доступ 27 сентября 2020. https://www.bluetooth.com/.
[2] Специальная группа (SIG) Bluetooth. "Спецификация Ядра Bluetooth". Версия 5.2. https://www.bluetooth.com/.