Bluetooth низкая энергетическая генерация формы волны и визуализация

Этот пример показывает, как Библиотекой 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 с помощью следующей функции:

Выбранная библиография

  1. Объем 6 из спецификации ядра Bluetooth, системный пакет ядра версии 5.0 [низкий энергетический контроллер объем].