В этом примере показано, как библиотека Communications Toolbox™ для протокола Bluetooth ® может использоваться для генерации осциллограмм для различных режимов физического слоя (PHY) Bluetooth Low Energy (BLE) [1].
Группа специальных интересов Bluetooth (SIG) представила 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 mode используется 8-битная последовательность альтернативных нулей и таковых, '01010101'. LE2M использует 16-битную последовательность альтернативных нулей и таковых, '0101...'. LE500K и способы LE125K используют 80 последовательностей битов нулей и таковых, полученных, повторяясь '00111100' десять раз.
Адрес доступа: Указывает адрес соединения, разделяемый между двумя устройствами BLE с помощью 32-разрядной последовательности.
Индикатор кодирования: 2-битная последовательность, используемая для дифференцирования двух кодированных режимов (LE125K, LE500K).
Полезная нагрузка: Входные биты сообщения, включая как PDU, так и CRC. Максимальный размер сообщения составляет 2080 бит.
Поля завершения: Два 3-битных нулевых векторов, используемых в кодировке коррекции. Поля завершения присутствуют только для закодированных режимов (LE500K и LE125K).
Формат пакета для незакодированных режимов PHY (LE1M и LE2M) показан на рисунке ниже:
Формат пакета для закодированных режимов PHY (LE500K и LE125K) показан на рисунке ниже:
В этом примере показано, как сгенерировать формы волны BLE для всех режимов физического слоя в соответствии со спецификацией Bluetooth [1]. Сгенерированные формы волны 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 Core System Package [Low Energy Controller Volume].