exponenta event banner

Генерация и визуализация низкоэнергетических волн Bluetooth

В этом примере показано, как библиотека Communications Toolbox™ Library для протокола Bluetooth ® может использоваться для генерации сигналов для различных режимов физического уровня (PHY) низкой энергии Bluetooth (BLE) [1].

Фон

Bluetooth special interest group (SIG) представила BLE для маломощной связи малого радиуса действия. Устройства BLE работают в глобальном нелицензионном промышленном, научном и медицинском (ISM) диапазоне частот от 2,4 ГГц до 2,485 ГГц. BLE задает интервал между каналами 2 МГц, что приводит к 40 радиочастотным каналам, как показано на рисунке ниже. Стандарт BLE [1] определяет канальный уровень, который включает в себя уровни PHY и MAC. BLE находит приложения для передачи таких файлов, как изображения и MP3, между мобильными телефонами, домашней автоматикой и тенденцией Интернета вещей.

Стандарт 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. Максимальный размер сообщения - 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

Избранная библиография

  1. Том 6 спецификации ядра Bluetooth, версия 5.0 Пакет основной системы [Low Energy Controller Volume].