Этот пример показывает, как Библиотекой Communications Toolbox™ для Протокола Bluetooth можно пользоваться, чтобы сгенерировать формы волны для различных режимов физического уровня Bluetooth низкой энергии (BLE) (PHY) [1].
Специальная группа (SIG) Bluetooth ввела BLE для коммуникаций малой дальности малой мощности. Устройства BLE управляют в глобально нелицензированной промышленной, научной и медицинской полосе (ISM) в частотном диапазоне от 2,4 ГГц до 2,485 ГГц. BLE задает интервал канала 2 МГц, который приводит к 40 каналам РФ как показано в фигуре ниже. Стандарт 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 визуализируются и во временном интервале и в частотном диапазоне, использующем осциллограф времени и спектр анализатор соответственно.
% Specify input parameters for waveform generation 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 % Create a spectrum analyzer object specAn = dsp.SpectrumAnalyzer('SpectrumType','Power density'); % Define symbol rate based on the PHY mode if any(strcmp(phyMode,{'LE1M','LE500K','LE125K'})) symbolRate = 1e6; else symbolRate = 2e6; end specAn.SampleRate = symbolRate*sps; % Create a time scope object timeScope = dsp.TimeScope('SampleRate', symbolRate*sps,'TimeSpanSource','Auto',... 'ShowLegend',true); rng default; % Loop over the number of packets, generating a BLE waveform and plotting % the waveform spectrum 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 the Bluetooth 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);
Можно далее исследовать, как сгенерировать формы волны BLE для различных режимов PHY с помощью следующей функции:
Объем 6 из спецификации ядра Bluetooth, системный пакет ядра версии 5.0 [низкий энергетический контроллер объем].