exponenta event banner

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Формат пакета базовой скорости

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

Расширенный формат пакетов скорости передачи данных

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

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

commSupportPackageCheck('BLUETOOTH');

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

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

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

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

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

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

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

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

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

Для настройки параметров 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.Mode
        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 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;    
    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.

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

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

Практический приемник 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 Radio можно найти в документе Общие проблемы и исправления (пакет поддержки Communications Toolbox для аналоговых устройств ADALM-Pluto Radio).

Приложение

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

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

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

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