В этом примере показано, как получить и декодировать Bluetooth формы волны BR/EDR при помощи Библиотеки Communications Toolbox™ для Протокола Bluetooth. Можно или получить формы волны BR/EDR Bluetooth при помощи радио ADALM-PLUTO или загрузить выборки IQ, соответствующие формам волны BR/EDR Bluetooth из основополосного файла (*.bb). Чтобы сгенерировать и передать формы волны BR/EDR Bluetooth, отошлите к Bluetooth Генерацию сигналов BR/EDR и Передачу с помощью SDR и реализуйте любую из этих настроек: Две платформы SDR соединились с тем же хостом - компьютером, который запускает два сеанса работы с MATLAB или две платформы SDR, соединенные с двумя хостами - компьютерами, который запускает два отдельных сеанса работы с MATLAB. Чтобы сконфигурировать ваш хост - компьютер, чтобы работать с Пакетом Поддержки для Радио ADALM-PLUTO, обратитесь к Ведомой Радио-Хостом Настройке оборудования (Пакет Поддержки Communications Toolbox для Аналоговых устройств Радио ADALM-Pluto).
Чтобы получить сигналы в режиме реального времени, вам нужны радио ADALM-PLUTO и соответствующее дополнение пакета поддержки:
Для полного списка коммуникационных тулбоксов, поддержанных платформами SDR, обратитесь к разделу Supported Hardware страницы открытия Программно определяемого радио (SDR).
Bluetooth является ближней технологией Беспроводной персональной сети области (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-битное управление потоками по транспорту асинхронного с установлением соединения логического (ACL)
ARQN: 1-битная индикация подтверждения
SEQN: 1-битный порядковый номер
HEC: 8-битная проверка на ошибки заголовка
Формат заголовка
Полезная нагрузка: Полезная нагрузка включает дополнительный заголовок полезной нагрузки, тело полезной нагрузки и дополнительный CRC.
Формат полезной нагрузки
Охрана: Для пакетов EDR защитное время позволяет радио BR/EDR Bluetooth готовиться к изменению в модуляции от GFSK до DPSK. Защитное время должно быть между 4,75 к 5,25 микросекундам.
Синхронизация: Для пакетов EDR последовательность синхронизации содержит один ссылочный символ и десять символов DPSK.
Трейлер: Для пакетов EDR биты трейлера должны быть всем нулевым шаблоном двух символов, {00,00} для pi/4-DQPSK и {000,000} для 8DPSK.
Формат пакета для режима BR показывают в этом рисунке.
Формат пакета базовой скорости
Формат пакета для режима EDR показывают в этом рисунке.
Расширенный формат пакета скорости передачи данных
Проверяйте, установлена ли Библиотека Communications Toolbox для пакета поддержки Протокола Bluetooth.
commSupportPackageCheck('BLUETOOTH');
В этом примере показано, как декодировать Bluetooth формы волны BR/EDR, или полученные при помощи ADLAM-PLUTO или путем чтения выборок IQ из основополосного файла.
Bluetooth Получатель BR/EDR
Общая структура примера получателя Bluetooth:
Инициализируйте параметры получателя.
Задайте источник сигнала.
Получите формы волны BR/EDR Bluetooth.
Процесс 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
Системный объект, чтобы получить живой сигнал от оборудования 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 = коммуникация. BasebandFileReader (bbFileName); sigSrcInfo = информация (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 (который ('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 или при помощи ADLAM-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 практический получатель выполняет эти функции:
Удалите смещение DC
Обнаружьте пакеты сигнала
Выполните согласованную фильтрацию
Оцените и откорректируйте смещение синхронизации
Оцените и откорректируйте смещение несущей частоты
Демодулируйте форму волны BR/EDR
Выполните декодирование прямого исправления ошибок (FEC)
Выполните данные dewhitening
Выполните проверку на ошибки заголовка (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 _____________ __________ _______________________ _________________ _____________ ____________ _____________ ____________ {24×1 double} {'FHS'} {3×1 double} {3×1 double} 18 {2×1 double} 0 {'Success'} {24×1 double} {'FHS'} {3×1 double} {3×1 double} 18 {2×1 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, или полученные при помощи ADLAM-PLUTO или путем чтения выборок IQ из основополосного файла. Визуализируйте спектр полученных форм волны Bluetooth при помощи спектра анализатор. Пакетный коэффициент ошибок вычисляется на основе декодируемой информации о пакете.
Можно использовать этот пример, чтобы получить пакеты EDR путем изменения режима передачи PHY. Чтобы сгенерировать формы волны Bluetooth в этом примере, отошлите к Bluetooth Генерацию сигналов BR/EDR и Передачу с помощью SDR.
Общие советы для поиска и устранения неисправностей оборудования SDR и Пакета Поддержки Communications Toolbox для Радио ADALM-PLUTO могут быть найдены в Типичных проблемах и Фиксируют (Пакет Поддержки Communications Toolbox для Аналоговых устройств Радио ADALM-Pluto).
Этот пример использует эту функцию помощника:
helperBluetoothPracticalReceiver.m: Практический получатель для физического уровня Bluetooth
Специальная группа (SIG) Bluetooth. "Базовый Системный пакет [Контроллер BR/EDR Объем]". Спецификация Ядра Bluetooth. Версия 5.1, Объем 2 <https://www.bluetooth.com/>