В этом примере показано, как захватывать и декодировать сигналы 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 - технология беспроводной персональной сети (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 Мбит/с
Форматы пакетов радиоинтерфейса для режимов 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, или захваченные при помощи ADALM-PLUTO, или путем чтения выборок IQ из файла основной полосы частот.
Приемник BR/EDR Bluetooth
Общая структура примера приемника Bluetooth:
Инициализируйте параметры приемника.
Укажите источник сигнала.
Захват сигналов Bluetooth BR/EDR.
Обработка сигналов 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
Захват выборок 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);
Для декодирования заголовка пакета, информации заголовка полезной нагрузки и бит необработанных сообщений приемник обрабатывает выборки основной полосы частот, принятые от источника сигнала. Этот рисунок показывает обработку приемника.
Практический приемник Bluetooth
Практический приемник Bluetooth выполняет следующие функции:
Удаление смещения постоянного тока
Обнаружите пакеты сигнала
Выполните согласованную фильтрацию
Оцените и исправьте смещение времени
Оцените и исправьте смещение частоты несущей
Демодулируйте сигнал BR/EDR
Выполните декодирование с прямой коррекцией ошибок (FEC)
Выполните отключение данных
Выполните проверку ошибок заголовка (HEC) и циклическую проверку избыточности (CRC)
Выводит декодированные биты и декодированную статистику пакетов на основе декодированной нижней части адреса (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).
Этот пример использует эту вспомогательную функцию:
helperBluetoothPracticalReceiver.m: Практический приемник для физического слоя Bluetooth
Bluetooth Special Interest Group (SIG). «Основной системный пакет [том контроллера BR/EDR]». Спецификация ядра Bluetooth. Версия 5.1, Том 2 < https ://www.bluetooth.com/>