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

В этом примере показано, как библиотека 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);

Приложение

Функция, используемая в этом примере, является:

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

  1. Том 6 спецификации ядра Bluetooth версии 5.0 Core System Package [Low Energy Controller Volume].

Для просмотра документации необходимо авторизоваться на сайте