exponenta event banner

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

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

Для получения передаваемого сигнала Bluetooth BR/EDR см. пример приемника Bluetooth BR/EDR и выполните любую из следующих настроек:

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

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

Чтобы настроить хост-компьютер для работы с пакетом поддержки ADALM-PLUTO Radio, см. раздел Настройка аппаратного обеспечения Guided Host-Radio (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):

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

Расширенная скорость передачи данных (EDR) - дополнительный режим, использует модуляцию фазовой манипуляции (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, ПУСТОЙ УКАЗАТЕЛЬ, ОПРОС, FHS, HV1, HV2, HV3, DV, EV3, EV4, EV5, 2-EV3, 2-EV5, 3-EV3, 3-EV5, 1 немецкая марка, DH1, 3 немецких марки, DH3, 5 немецких марок, DH5, AUX1, 2-DH1, 2-DH3, 2-DH5, 3-DH1, 3-DH3, 3-DH5}.

  • ПОТОК: 1-битное управление потоком.

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

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

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

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

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

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

Трейлер: Для пакетов EDR все биты трейлера должны быть нулевым шаблоном из двух символов, {00,00} для pi/4-DQPSK и {000000} для 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

Для конфигурирования генератора сигнала 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);

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);

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

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

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

  • ADALM-PLUTO: использует sdrtx (Communications Toolbox Support Package for Analog Devices 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     = length(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 isempty(which('plutoradio.internal.getRootDir'))
        error(message('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 ME
        release(sigSink);
        rethrow(ME);
    end
end

% Release the signal sink
release(sigSink);

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

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

Этот пример можно использовать для передачи пакетов EDR путем изменения режима передачи. В примере функция helperBluetoothPacketDuration.m helper используется для возврата длительности пакета Bluetooth.

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

Поиск неисправностей

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

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

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

Связанные темы