Прием сигнала Bluetooth BR/EDR при помощи SDR

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

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

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

Конфигурирование хоста-компьютера для работы с пакетом поддержки ADALM-PLUTO Radio смотрите в Руководствуясь Hardware Setup хоста-радио (Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio).

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

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

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

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

Bluetooth - технология беспроводной персональной сети (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 Мбит/с

Форматы пакетов Bluetooth BR/EDR

Форматы пакетов радиоинтерфейса для режимов 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. Это поле определяет количество пазов, которые занимает текущий пакет.

  • FLOW: 1-битное управление потоком на асинхронном логическом (ACL) транспорте, ориентированном на соединение

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

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

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

Формат заголовка

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

Формат полезной нагрузки

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

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

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

Формат пакета для режима BR показан на этом рисунке.

Базовый формат пакета скорости

Формат пакета для режима EDR показан на этом рисунке.

Улучшенный формат пакета скорости передачи данных

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

Проверьте, установлена ли библиотека Communications Toolbox для пакета поддержки Bluetooth Protocol.

commSupportPackageCheck('BLUETOOTH');

Декодируйте сигнал Bluetooth BR/EDR

Этот пример показывает, как декодировать сигналы Bluetooth BR/EDR, или захваченные при помощи ADALM-PLUTO, или путем чтения выборок IQ из файла основной полосы частот.

Приемник BR/EDR Bluetooth

Общая структура примера приемника Bluetooth:

  1. Инициализируйте параметры приемника.

  2. Укажите источник сигнала.

  3. Захват сигналов Bluetooth BR/EDR.

  4. Обработка сигналов BR/EDR Bluetooth в приемнике.

Инициализация параметров приемника

Чтобы сконфигурировать параметры Bluetooth BR/EDR, используйте bluetoothPhyConfig объект.

cfg = bluetoothPhyConfig;
cfg.Mode = 'BR'; % Mode of transmission as one of BR, EDR2M and EDR3M
cfg. WhitenInitialization = [0; 0; 0; 0; 0; 1; 1]; % Whiten initialization

Задайте источник сигнала

Укажите источник сигнала как файл или ADALM-PLUTO.

  • Файл: Использует comm.BasebandFileReader для чтения файла, который содержит ранее захваченный беспроводной сигнал.

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

Если вы назначаете ADALM-PLUTO в качестве источника сигнала, то в примере компьютер просматривается по радио ADALM-PLUTO по адресу радиосвязи 'usb: 0' и использует его в качестве источника сигнала.

% The default signal source is 'File'
signalSource = 'File';

bbSymbolRate = 1e6; % 1 MSps
if strcmp (signalSource,'File')
    switch cfg. Способ
        case 'BR'
            bbFileName = 'bluetoothCapturesBR.bb';
        case 'EDR2M'
            bbFileName = 'bluetoothCapturesEDR2M.bb';
        case 'EDR3M'
            bbFileName = 'bluetoothCapturesEDR3M.bb';
    end
    sigSrc = comm.BasebandFileReader (bbFileName);
    sigSrcInfo = info (sigSrc);
    bbSampleRate = sigSrc.SampleRate;
    sigSrc. SamplesPerFrame = sigSrcInfo. NumSamplesInData;
    cfg. SamplesPerSymbol = bbSampleRate/bbSymbolRate;

else

    % 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;
    rxCenterFrequency = 2445000000;  % In Hz, choose between 2.402e9 to 2.480e9 with 1e6 spacing
    bbSampleRate = bbSymbolRate * cfg. SamplesPerSymbol;
    sigSrc = sdrrx ('Pluto',...
        'RadioID', radioID,...
        'CenterFrequency', rxCenterFrequency,...
        'BasebandSampleRate'bbSampleRate,...
        'SamplesPerFrame', 1e7,...
        'GainSource',         'Manual',...
        'Gain',                25,...
        'OutputDataType',     'double');
end

Захват сигналов Bluetooth BR/EDR

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

% The transmitted waveforms are captured as a burst
dataCaptures = sigSrc();

% Setup spectrum viewer
spectrumScope = dsp.SpectrumAnalyzer( ...
    'SampleRate',       bbSampleRate,...
    'SpectrumType',     'Power density', ...
    'SpectralAverages', 10, ...
    'YLimits',          [-130 -30], ...
    'Title',            'Received Baseband Bluetooth Signal Spectrum', ...
    'YLabel',           'Power spectral density');

% Show power spectral density of the received waveform
spectrumScope(dataCaptures);

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes with title Received Baseband Bluetooth Signal Spectrum contains an object of type line. This object represents Channel 1.

Обработка сигналов BR/EDR Bluetooth в приемнике

Для декодирования заголовка пакета, информации заголовка полезной нагрузки и бит необработанных сообщений приемник обрабатывает выборки основной полосы частот, принятые от источника сигнала. Этот рисунок показывает обработку приемника.

Практический приемник Bluetooth

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

  1. Удаление смещения постоянного тока 

  2. Обнаружите пакеты сигнала  

  3. Выполните согласованную фильтрацию 

  4. Оцените и исправьте смещение времени 

  5. Оцените и исправьте смещение частоты несущей 

  6. Демодулируйте сигнал BR/EDR 

  7. Выполните декодирование с прямой коррекцией ошибок (FEC) 

  8. Выполните отключение данных 

  9. Выполните проверку ошибок заголовка (HEC) и циклическую проверку избыточности (CRC) 

  10. Выводит декодированные биты и декодированную статистику пакетов на основе декодированной нижней части адреса (LAP), HEC и CRC 

% Bluetooth practical receiver
[decBits,decodedInfo,pktStatus] = helperBluetoothPracticalReceiver(dataCaptures,cfg);

% Get the number of detected packets
pktCount = length(pktStatus);
disp(['Number of Bluetooth packets detected: ' num2str(pktCount)])
Number of Bluetooth packets detected: 2
% Get the decoded packet statistics
displayFlag = true; % set true, to display the decoded packet statistics  
if(displayFlag & & (pktCount ~ = 0))
    decodedInfoPrint = decodedInfo;
    for ii = 1:pktCount
        if(pktStatus (ii))
            decodedInfoPrint (ii) .PacketStatus  ='Success';
        else
            decodedInfoPrint (ii) .PacketStatus  ='Fail';
        end
    end
    packetInfo = struct2table (decodedInfoPrint,'AsArray',1);
    fprintf ('Decoded Bluetooth packet(s) information: \n \n')
    disp (packetInfo);
end
Decoded Bluetooth packet(s) information: 
 
         LAP         PacketType    LogicalTransportAddress    HeaderControlBits    PayloadLength        LLID        FlowIndicator    PacketStatus
    _____________    __________    _______________________    _________________    _____________    ____________    _____________    ____________

    {24x1 double}     {'FHS'}           {3x1 double}            {3x1 double}            18          {2x1 double}          0          {'Success'} 
    {24x1 double}     {'FHS'}           {3x1 double}            {3x1 double}            18          {2x1 double}          0          {'Success'} 
% Get the packet error rate performance metrics
if(pktCount)
    pktErrCount = sum(~pktStatus);
    pktErrRate = pktErrCount/pktCount;
    disp(['Simulated Mode: ' cfg.Mode ', '...
        'Packet error rate: ',num2str(pktErrRate)])
end
Simulated Mode: BR, Packet error rate: 0
% Release the signal source
release(sigSrc);

Этот пример позволяет вам декодировать сигналы Bluetooth BR/EDR либо захваченные с помощью ADALM-PLUTO, либо путем чтения выборок IQ из файла основной полосы частот. Визуализируйте спектр полученных сигналов Bluetooth с помощью спектрального анализатора. Вероятность ошибки пакета вычисляется на основе декодированной информации о пакете.

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

Можно использовать этот пример для приема пакетов EDR путем изменения режима передачи PHY. Для генерации сигналов Bluetooth в этом примере обратитесь к разделу Генерация и передача сигналов Bluetooth BR/EDR с использованием SDR.

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

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

Приложение

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

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

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

Похожие темы