Bluetooth BR/EDR Генерации сигналов и передача с использованием SDR

В этом примере показано, как сгенерировать и передать сигналы Bluetooth ® BR/EDR с помощью библиотеки Communications Toolbox™ для протокола Bluetooth. Можно передавать сигналы Bluetooth BR/EDR с помощью радио ADALM-PLUTO или записать в файл основной полосы частот (* .bb ).

Для приема переданного сигнала Bluetooth BR/EDR, смотрите пример Bluetooth BR/EDR Receiver и реализуйте любую из следующих настроек:

  • Две платформы SDR, подключенные к одному хосту-компьютеру, который запускает два сеансов работы с MATLAB.

  • Две платформы SDR, соединенные с двух хостов-компьютеров, которые выполняют два отдельных Сеансов работы с MATLAB.

Для настройки хоста-компьютера для работы с пакетом поддержки ADALM-PLUTO Radio обратитесь к разделу Guided Host-Radio Оборудования Setup (Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio).

Необходимое оборудование

Для передачи сигналов в режиме реального времени необходимо радио ADALM-PLUTO и соответствующий пакет поддержки:

Полный список платформ SDR, поддерживаемых Communications Toolbox, см. в разделе «Поддерживаемые аппаратные средства» страницы обнаружения Программно определяемого радио (SDR).

Спецификации Bluetooth BR/EDR-радио

Bluetooth [1] - технология беспроводной персональной сети (WPAN) малой дальности, работающая в глобально нелицензированном промышленном, научном и медицинском диапазоне (ISM) в частотной области значений от 2,4 ГГц до 2,485 ГГц. В технологии Bluetooth данные делятся на пакеты. Каждый пакет передается по одному из 79 назначенных каналов Bluetooth. Каждый канал имеет полосу пропускания 1 МГц. Поскольку существуют различные типы беспроводных сетей, работающих в одной и той же нелицензированной полосе частот, возможно, чтобы две различные сети мешали друг другу. Чтобы уменьшить помехи, Bluetooth реализует схему расширенного спектра с скачкообразным изменением частоты (FHSS), чтобы переключить несущую между несколькими частотными каналами с помощью псевдослучайной последовательности, известной как передатчику, так и приемнику.

Стандарт Bluetooth задает следующие режимы физического слоя (PHY):

Basic rate (BR) - Обязательный режим, использует Гауссов частотный сдвиг манипуляцию (GFSK) модуляцию со скоростью передачи данных 1 Мбит/с.

Улучшенная скорость передачи данных (EDR) - опционный режим, использует фазу сдвига keing (PSK) модуляцию с этими двумя вариантами:

  • EDR2M: Использует pi/4-DQPSK со скоростью передачи данных 2 Мбит/с.

  • EDR3M: Использует 8-DPSK со скоростью передачи данных 3 Мбит/с.

Форматы пакетов

Форматы пакетов радиоинтерфейса для режимов PHY включают следующие поля:

Код доступа: Каждый пакет начинается с кода доступа. Если следует заголовок пакета, то код доступа имеет длину 72 бита, в противном случае код доступа имеет длину 68 бит. Код доступа состоит из следующих полей:

  • Преамбула: Преамбула представляет собой фиксированный нуль - один шаблон из четырех символов.

  • Sync Word: Слово синхронизации представляет собой 64-битное кодовое слово, полученное из 24-битной нижней адресной части (LAP) адреса устройства Bluetooth.

  • Трейлер: Трейлер является фиксированным нулем один шаблон из четырех символов.

Заголовок пакета: Заголовок включает информацию управления ссылкой и состоит из следующих полей:

  • LT_ADDR: 3-разрядный логический транспортный адрес.

  • TYPE: 4-битный код типа, который задает тип пакета, используемый для передачи. Это может быть один из {ID, NULL, POLL, FHS, HV1 HV2, HV3, DV, EV3, EV4, EV5, 2-EV3, 2-EV5, 3-EV3, 3-EV5, DM1, DH1, DM3, DH3, DM5, DH5, AUX1, 2-DH1, 2-DH3,, 2-DH5, 3-DH1, 3-DH3, 3, 3-DH5}.

  • FLOW: 1-битное управление потоком.

  • ARQN: 1-разрядная индикация подтверждения.

  • SEQN: 1-битный порядковый номер.

  • HEC: 8-битная проверка ошибок заголовка.

Полезный груз: Полезный груз включает дополнительный заголовок полезного груза, тело полезного груза и дополнительный CRC.

Защита: Для пакетов EDR время защиты позволяет радио Bluetooth подготовиться к изменению модуляции с GFSK на DPSK. Время защиты должно быть от 4,75 до 5,25 микросекунд.

Синхронизация: Для пакетов EDR, последовательность синхронизации содержит один опорный символ и десять символов DPSK.

Трейлер: Для пакетов EDR все биты трейлера должны быть нулевым шаблоном из двух символов, {00,00} для pi/4-DQPSK и {000 000} для 8DPSK.

Этот рисунок показывает формат пакета для режима BR

Этот рисунок показывает формат пакета для режима EDR

Bluetooth BR/EDR Генерации сигналов и передача

В этом примере показано, как сгенерировать сигналы Bluetooth BR/EDR согласно спецификации Bluetooth. Спектр и спектрограмма сгенерированных сигналов Bluetooth BR/EDR визуализируются с помощью спектрального анализатора. Можно передать сгенерированные формы волны с помощью радио ADALM-PLUTO или путем записи их в файл основной полосы частот (* .bb).

Проверка на установку пакета поддержки

% Check if the 'Communications Toolbox Library for the Bluetooth Protocol'
% support package is installed.
commSupportPackageCheck('BLUETOOTH');

Bluetooth BR/EDR Baseband Генерации сигналов и визуализация

Чтобы сконфигурировать генератор формы сигнала Bluetooth для базовой передачи скорости, используйте bluetoothWaveformConfig объект.

cfg = bluetoothWaveformConfig;
cfg.Mode = 'BR'; % Mode of transmission as one of BR, EDR2M and EDR3M
cfg. PacketType = 'FHS';     % Packet type
cfg. SamplesPerSymbol = 60; % Samples per symbol
cfg. WhitenInitialization = [0; 0; 0; 0; 0; 1; 1]; % Whiten initialization

Чтобы сгенерировать сигналы Bluetooth BR/EDR, используйте bluetoothWaveformGenerator функция. Использование getPayloadLength для определения необходимой длины полезной нагрузки для данного строения. Затем используйте длину полезной нагрузки, чтобы создать случайную полезную нагрузку для передачи.

payloadLength = getPayloadLength(cfg); % Payload length in bytes
octetLength = 8;
dataBits = randi([0 1],payloadLength*octetLength,1); % Generate random payload bits
txWaveform = bluetoothWaveformGenerator(dataBits,cfg); % Create Bluetooth waveform

Можно сконфигурировать функцию helperBluetoothPacketDuration.m, чтобы вывести длительность пакета Bluetooth, соответствующую сгенерированным символам Bluetooth.

packetDuration = helperBluetoothPacketDuration(cfg.PacketType,cfg.Mode,payloadLength);

The comm.PhaseFrequencyOffset Системный объект используется для выполнения сдвига частоты для сигналов Bluetooth BR/EDR на основе номера канала. В этом примере форма волны визуализируется с помощью dsp.SpectrumAnalyzer Системный объект, который выбирает случайное число канала из области значений от 0 до 60, поскольку частота дискретизации, используемая в этом примере, составляет 60 МГц.

symbolRate = 1e6; % Symbol rate
sampleRate = symbolRate * cfg.SamplesPerSymbol;
numChannels = 10; % Number of channels

% Create and configure frequency offset System object
pfo = comm.PhaseFrequencyOffset('SampleRate',sampleRate);
% Create and configure spectrum analyzer System object
scope = dsp.SpectrumAnalyzer('ViewType','Spectrum and spectrogram',...
                'TimeResolutionSource','Property','TimeResolution',1e-5,...
                'SampleRate',sampleRate,'TimeSpanSource','Property',...
                'TimeSpan',2e-3,'FrequencyResolutionMethod','WindowLength',...
                'WindowLength',512,'AxesLayout','Horizontal','YLimits',[-40 25]);
% Loop over the number of channels to visaulize the frequency shift
for packetIdx = 1:numChannels
    channelNum = randsrc(1,1,0:60); % Generate random channel number
    freqIndex = channelNum - 39; % To visualize as a two sided spectrum
    pfo.FrequencyOffset = freqIndex*symbolRate; % Frequency shift
    hoppedWaveform = pfo(txWaveform(1:packetDuration*cfg.SamplesPerSymbol));
    scope.Title = ['Spectrum of Bluetooth ',cfg.Mode,...
                   ' Waveform for Channel Number = ', num2str(channelNum)];
    scope(hoppedWaveform);
end
% Release the System objects
release(scope);

Figure Spectrum Analyzer contains 2 axes and other objects of type uiflowcontainer, uimenu, uitoolbar. Axes 1 with title Spectrum of Bluetooth BR Waveform for Channel Number = 57 contains an object of type line. This object represents Channel 1. Axes 2 with title Spectrum of Bluetooth BR Waveform for Channel Number = 57 contains an object of type image.

release(pfo);

Обработка передатчика

Укажите приемник сигнала как 'File' или 'ADALM-PLUTO'.

  • Файл: Использует comm.BasebandFileWriter Системный объект для записи файла основной полосы частот.

  • ADALM-PLUTO: использует sdrtx(Пакет поддержки Communications Toolbox для аналоговых устройств ADALM-Pluto Radio) для создания comm.SDRTxPluto (Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio) Объект системы должен передать прямой сигнал от оборудования SDR.

% Initialize the parameters required for signal sink
txCenterFrequency = 2445000000;  % In Hz, varies between 2.402e9 to 2.480e9 with 1e6 spacing
txFrameLength = длина (txWaveform);
txNumberOfFrames = 1e4;
bbFileName = 'bluetoothBRCaptures.bb';

% The default signal sink is 'File'
signalSink = 'File';

if strcmp (signalSink,'File')
    sigSink = comm.BasebandFileWriter ('CenterFrequency', txCenterFrequency,...
        'Filename', bbFileName,...
        'SampleRate', sampleRate);
    sigSink (txWaveform );% Writing to a baseband file 'bluetoothBRCaptures.bb'
else % For 'ADALM-PLUTO'
    % Check if the pluto Hardware Support Package (HSP) is installed
    if пустой (который ('plutoradio.internal.getRootDir'))
        ошибка (сообщение ('comm_demos:common:NoSupportPackage', ...
                      'Communications Toolbox Support Package for ADALM-PLUTO Radio',...
                      ['<a href="https://www.mathworks.com/hardware-support/' ...
                      'adalm-pluto-radio.html">ADALM-PLUTO Radio Support From Communications Toolbox</a>']));
    end
    connectedRadios = findPlutoRadio; % Discover ADALM-PLUTO radio(s) connected to your computer
    radioID = connectedRadios (1) .RadioID;
    sigSink = sdrtx ('Pluto',...
        'RadioID', radioID,...
        'CenterFrequency', txCenterFrequency,...
        'Gain',              0,...
        'SamplesPerFrame', txFrameLength,...
        'BasebandSampleRate', sampleRate);
    % The transfer of baseband data to the SDR hardware is enclosed in a
    % try/catch block. This implies that if an error occurs during the
    % transmission, the hardware resources used by the SDR System
    % object are released.
    currentFrame = 1;
    try
        while currentFrame < = txNumberOfFrames
            % Data transmission
            sigSink (txWaveform);
            % Update the counter
            currentFrame = currentFrame + 1;
        end
    catch Я
        релиз (sigSink);
        переметнуть (МЕ);
    end
end

% Release the signal sink
релиз (sigSink);

В этом примере можно сгенерировать и передать сигналы Bluetooth BR/EDR при помощи ADALM-PLUTO или путем записи сигналов в файл основной полосы частот. Спектр и спектрограмма сгенерированных сигналов Bluetooth BR/EDR визуализируется с помощью спектрального анализатора.

Дальнейшие исследования

Можно использовать этот пример для передачи пакетов EDR путем изменения режима передачи. Пример использует функцию helperBluetoothPacketDuration.m helper, чтобы вернуть длительность пакета Bluetooth.

Для декодирования сигнала Bluetooth BR/EDR, сгенерированного в этом примере, см. пример приемника Bluetooth BR/EDR.

Поиск и устранение проблем

Общие советы по устранению неполадок оборудования SDR и пакета поддержки Communications Toolbox для радио ADALM-PLUTO можно найти в разделе Общие проблемы и исправления (Пакет поддержки Communications Toolbox для аналоговых устройств ADALM-Pluto Radio).

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

  1. Bluetooth Special Interest Group (SIG). «Основной системный пакет [том контроллера BR/EDR]». Спецификация ядра Bluetooth. Версия 5.1, том 2. www.bluetooth.com

Похожие темы