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

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

Чтобы получить переданный Bluetooth форма волны BR/EDR, обратитесь к примеру Получателя BR/EDR Bluetooth и реализуйте любую из этих настроек:

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

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

Чтобы сконфигурировать ваш хост - компьютер, чтобы работать с Пакетом Поддержки для Радио ADALM-PLUTO, отошлите Ведомую Радио-Хостом Настройку оборудования (Пакет Поддержки Communications Toolbox для Аналоговых устройств Радио ADALM-Pluto).

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

Чтобы передать сигналы в режиме реального времени, вам нужны радио ADALM-PLUTO и соответствующий пакет поддержки:

Для полного списка Communications Toolbox поддерживаемые платформы SDR обратитесь к разделу Supported Hardware страницы открытия Программно определяемого радио (SDR).

Bluetooth Технические требования Радио BR/EDR

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

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

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

Режим Enhanced data rate (EDR) - Optional, модуляция манипулирования сдвига фазы (PSK) использования с этими двумя вариантами:

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

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

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

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

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

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

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

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

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

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

  • Ввод: 4-битный код типа, который задает пакетный тип, используемый в передаче. Это может быть одним из {ID, NULL, ОПРОСИТЬ, 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-DH5}.

  • Поток: 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 и Визуализация

Чтобы сконфигурировать генератор формы волны 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

Чтобы сгенерировать формы волны BR/EDR Bluetooth, используйте 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);

release(pfo);

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

Задайте приемник сигнала как 'Файл' или 'ADALM-PLUTO'.

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

  • ADALM-PLUTO: использует sdrtx Системный объект, чтобы передать живой сигнал от оборудования 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 = коммуникация. 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 (который ('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 ME
        выпустите (sigSink);
        повторно выдайте (ME);
    end
end

% Release the signal sink
выпустите (sigSink);

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

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

Можно использовать этот пример, чтобы передать пакеты EDR путем изменения режима передачи. Чтобы декодировать форму волны BR/EDR Bluetooth, сгенерированную в этом примере, обратитесь к примеру Получателя BR/EDR Bluetooth.

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

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

Приложение

Пример использует эту функцию помощника:

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

  1. Специальная группа (SIG) Bluetooth. "Базовый Системный пакет [Контроллер BR/EDR Объем]". Спецификация Ядра Bluetooth. Версия 5.1, Объем 2. www.bluetooth.com

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