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 (Пакет Поддержки Communications Toolbox для Аналоговых устройств Радио ADALM-Pluto), функционируют, чтобы создать comm.SDRTxPluto (Пакет Поддержки Communications Toolbox для Аналоговых устройств Радио ADALM-Pluto) Системный объект, чтобы передать живой сигнал от оборудования 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 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 при помощи ADALM-PLUTO или путем записи форм волны в основополосный файл. Спектр и spectogram сгенерированного Bluetooth формы волны BR/EDR визуализируются при помощи спектра анализатор.

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

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

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