Bluetooth Прием Формы волны BR/EDR при помощи SDR

В этом примере показано, как получить и декодировать 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 Технические требования Радио BR/EDR

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 Мбит/с

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

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

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

Bluetooth Получатель BR/EDR

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

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

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

  3. Получите формы волны BR/EDR Bluetooth.

  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 Системный объект, чтобы получить живой сигнал от оборудования 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

Получите Формы волны BR/EDR Bluetooth

Получите выборки 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 Формы волны BR/EDR в Получателе

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

Bluetooth практический получатель

Bluetooth практический получатель выполняет эти функции:

  1. Удалите смещение DC 

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

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

  4. Оцените и откорректируйте смещение синхронизации 

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

  6. Демодулируйте форму волны BR/EDR 

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

  8. Выполните данные dewhitening 

  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
    _____________    __________    _______________________    _________________    _____________    ____________    _____________    ____________

    {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).

Приложение

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

Выбранная библиография

  1. Специальная группа (SIG) Bluetooth. "Базовый Системный пакет [Контроллер BR/EDR Объем]". Спецификация Ядра Bluetooth. Версия 5.1, Объем 2 <https://www.bluetooth.com/>

Для просмотра документации необходимо авторизоваться на сайте