В этом примере показано, как Библиотекой Communications Toolbox™ для Протокола Bluetooth можно пользоваться, чтобы сгенерировать формы волны для различных режимов физического уровня Bluetooth низкой энергии (BLE) (PHY) [1].
Специальная группа (SIG) Bluetooth ввела BLE для коммуникаций малой дальности малой мощности. Устройства BLE управляют в глобально нелицензированной промышленной, научной и медицинской полосе (ISM) в частотном диапазоне от 2,4 ГГц до 2,485 ГГц. BLE задает интервал канала 2 МГц, который приводит к 40 каналам RF как показано на рисунке ниже. Стандарт BLE [1] задает слой Link, который включает оба слоя PHY и MAC. BLE находит применение в передаче файлов, такое как изображения и MP3 между мобильными телефонами, домашней автоматизацией и трендом Интернета вещей (IoT).
Стандарт Bluetooth [1] задает следующие режимы физического уровня:
LE1M - Незакодированный PHY со скоростью передачи данных 1 Мбит/с
LE2M - Незакодированный PHY со скоростью передачи данных 2 Мбит/с
LE500K - Закодированный PHY со скоростью передачи данных 500 Кбит/с
LE125K - Закодированный PHY со скоростью передачи данных 125 Кбит/с
Воздушные форматы пакета интерфейса для этих режимов включают следующие поля:
Преамбула: преамбула зависит, на котором используется режим PHY. Режим LE1M использует 8-битную последовательность альтернативных нулей и единиц, '01010101'. LE2M использует 16-битную последовательность альтернативных нулей и единиц, '0101...'. Режимы LE500K и LE125K используют 80-битную последовательность нулей и единиц, полученных путем повторения '00111100' десять раз.
Указатель: Задает адрес связи, совместно использованный двумя устройствами BLE с помощью 32-битной последовательности.
Кодирование Индикатора: 2-битная последовательность, используемая для дифференциации двух закодированных режимов (LE125K, LE500K).
Полезная нагрузка: биты Входного сигнала и включая PDU и включая CRC. Максимальный размер сообщения составляет 2 080 битов.
Поля завершения: Два 3-битных нулевых вектора, используемые в Прямом кодировании Исправления ошибок. Поля завершения присутствуют для закодированных режимов (LE500K и LE125K) только.
Формат пакета для незакодированного PHY (LE1M и LE2M) режимы показан на рисунке ниже:
Формат пакета для закодированного PHY (LE500K и LE125K) режимы показан на рисунке ниже:
В этом примере показано, как сгенерировать формы волны BLE для всех режимов физического уровня согласно спецификации [1] Bluetooth. Сгенерированные формы волны BLE визуализируются и во временном интервале и в частотном диапазоне, использующем осциллограф времени и спектр анализатор соответственно.
% Check if the 'Communications Toolbox Library for the Bluetooth Protocol' % support package is installed or not. commSupportPackageCheck('BLUETOOTH');
% Specify the input parameters for generating BLE waveform numPackets = 10; % Number of packets to generate sps = 16; % Samples per symbol messageLen = 2000; % Length of message in bits phyMode = 'LE1M'; % Select one mode from the set {'LE1M','LE2M','LE500K','LE125K'}; channelBW = 2e6; % Channel spacing (Hz) as per standard % Define symbol rate based on the PHY mode if any(strcmp(phyMode,{'LE1M','LE500K','LE125K'})) symbolRate = 1e6; else symbolRate = 2e6; end
% Create a spectrum analyzer object specAn = dsp.SpectrumAnalyzer('SpectrumType','Power density'); specAn.SampleRate = symbolRate*sps; % Create a time scope object timeScope = timescope('SampleRate', symbolRate*sps,'TimeSpanSource','Auto',... 'ShowLegend',true);
% Loop over the number of packets, generating a BLE waveform and plotting % the waveform spectrum rng default; for packetIdx = 1:numPackets message = randi([0 1],messageLen,1); % Message bits generation chanIndex = randi([0 39],1,1); % Channel index decimal value if(chanIndex >=37) % Default access address for periodic advertising channels accessAdd = [0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 0 0 ... 1 0 0 0 1 0 1 1 1 0 0 0 1]'; else % Random access address for data channels % Ideally, this access address value should meet the requirements % specified in Section 2.1.2 of volume 6 of the Bluetooth Core % Specification. accessAdd = [0 0 0 0 0 0 0 1 0 0 1 0 0 ... 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1]'; end waveform = bleWaveformGenerator(message,... 'Mode',phyMode,... 'SamplesPerSymbol',sps,... 'ChannelIndex',chanIndex,... 'AccessAddress',accessAdd); specAn.FrequencyOffset = channelBW*chanIndex; specAn.Title = ['Spectrum of ',phyMode,' Waveform for Channel Index = ', num2str(chanIndex)]; tic while toc < 0.5 % To hold the spectrum for 0.5 seconds specAn(waveform); end % Plot the generated waveform timeScope.Title = ['BLE ',phyMode,' Waveform for Channel Index = ', num2str(chanIndex)]; timeScope(waveform); end % Release objects release(specAn); release(timeScope);
Функция, использованная в этом примере:
bleWaveformGenerator
: Генерирует форму волны физического уровня BLE
Объем 6 из спецификации ядра Bluetooth, системный пакет ядра версии 5.0 [низкий энергетический контроллер объем].