bleIdealReceiver

Идеальный приемник для формы волны BLE PHY

Загрузите Необходимый: Чтобы использовать bleIdealReceiver, сначала загрузите Библиотеку Communications Toolbox™ для Протокола Bluetooth®. Для получения дополнительной информации смотрите, Получают и Управляют Дополнениями. В качестве альтернативы смотрите Библиотеку Communications Toolbox для Обмена файлами Протокола Bluetooth.

Описание

пример

[bits,accessAddr] = bleIdealReceiver(waveform) декодирует Bluetooth низкую энергию (BLE) waveform, сгенерированный bleWaveformGenerator , и возвращает полученные биты, bits, и информация об указателе, accesAddr.

пример

[bits,accessAddr] = bleIdealReceiver(waveform,Name,Value) также задает опции с помощью одного или нескольких аргументов пары "имя-значение". Например, 'Mode','LE2M' задает физический режим передачи слоя (PHY) желаемой формы волны BLE.

пример

[___,IQsamples] = bleIdealReceiver(___) также возвращает синфазное и квадратуру (IQ) выборки, IQsamples, соответствие постоянному тональному расширению (CTE).

Примеры

свернуть все

Создайте вектор-столбец входного сигнала длины 1000 содержащий случайные двоичные значения. Сгенерируйте форму волны передачи BLE от битов передачи при помощи bleWaveformGenerator функция.

txBits = randi([0 1],1000,1);
txWaveform = bleWaveformGenerator(txBits);

Передайте форму волны передачи через шумный канал и получите полученную форму волны.

snr = 30; % specified in dB
rxWaveform = awgn(txWaveform,snr);

Восстановите биты данных с полученной формы волны BLE с помощью bleIdealReceiver. Проверяйте на количество битовых ошибок в восстановленных битах. Возвращенное значение указывает, что форма волны BLE успешно декодировалась.

[rxBits,accessAddr] = bleIdealReceiver(rxWaveform);
numErr = biterr(txBits,rxBits)
numErr = 0

Задайте значения PHY генерация режима, индекса канала и выборок на символ (SPS).

phyMode = 'LE125K';
chanIndex = 2;
sps = 4;

Сгенерируйте биты передачи, содержащие случайные двоичные значения. Получите форму волны передачи BLE из битов передачи и заданных пар "имя-значение" с помощью bleWaveformGenerator функция.

txBits = randi([0 1],100,1);
txWaveform = bleWaveformGenerator(txBits,'Mode',phyMode,...
    'SamplesPerSymbol',sps,'ChannelIndex',chanIndex);

Восстановите биты данных, и затем сравните их с битами передачи. Восстановленные биты данных совпадают с битами передачи, указывая, что в декодируемой форме волны BLE нет никаких ошибок.

rxBits = bleIdealReceiver(txWaveform,'Mode',phyMode,...
    'SamplesPerSymbol',sps,'ChannelIndex',chanIndex);
isequal(txBits,rxBits)
ans = logical
   1

Задайте рекламный модуль данных о протоколе (PDU) канала без установления соединения для угла прибытия (AoA) CTE.

pduHex = '02049B0327';
pdu = de2bi(hex2dec(pduHex),40)';

Сгенерируйте и добавьте контроль циклическим избыточным кодом (CRC) к PDU.

crcGen = comm.CRCGenerator('z^24+z^10+z^9+z^6+z^4+z^3+z+1',...
    'InitialConditions',de2bi(hex2dec('555551'),'left-msb',24),...
    'DirectMethod',true);
pduCRC = crcGen(pdu);

Сгенерируйте форму волны передачи BLE с помощью заданных аргументов пары "имя-значение".

txWaveform = bleWaveformGenerator(pduCRC,'ChannelIndex',36,...
    'DFPacketType','ConnectionlessCTE');

Восстановите биты данных путем демодуляции, dewhitening, и выборку IQ на время паза 2 μs.

[bits,accAddr,iqSamples] = bleIdealReceiver(txWaveform,...
    'ChannelIndex',36,'DFPacketType','ConnectionlessCTE');

Входные параметры

свернуть все

Полученный сигнал временной области в виде сигнала с комплексным знаком с размером N s-1, где N s представляет количество полученных выборок. Значения N s зависят от 'Mode' и 'SamplesPerSymbol' (сверхзвуковые) пары "имя-значение", согласно ограничениям заданы в этой таблице. Например, если значение 'Mode' 'LE1M' и значение 'SamplesPerSymbol' 4 затем, значение N s должно быть больше или быть равно 160 и кратное 'SamplesPerSymbol'.

Значение 'Mode' Значение N sКратное
'LE1M'

≥40×sps

sps
'LE2M'

≥48×sps

sps
'LE500K'

≥376×sps

2×sps
'LE125K'

≥376×sps

8×sps

Типы данных: double | single

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: bleIdealReceiver(waveform,'Mode','LE2M','ChannelIndex',36)

Режим передачи PHY в виде разделенной запятой пары, состоящей из 'Mode' и 'LE1M', 'LE2M', 'LE500K', или 'LE125K'. Это значение указывает, что тип PHY раньше декодировал полученную форму волны BLE.

Типы данных: string | char

Индекс канала в виде разделенной запятой пары, состоящей из 'ChannelIndex' и целое число в области значений [0, 39]. Для каналов данных это значение должно быть в области значений [0, 36]. Это значение используется блоком данных-dewhitening.

Типы данных: single | double

Выборки на символ в виде разделенной запятой пары, состоящей из 'SamplesPerSymbol' и положительное целое число. Объект использует это значение для модуляции Гауссова манипулирования сдвига частоты (GFSK).

Типы данных: single | double

Тип пакета определения направления в виде разделенной запятой пары, состоящей из 'DFPacketType' и 'ConnectionlessCTE', 'ConnectionCTE', или 'Disabled'.

Типы данных: string | char

Переключатель и демонстрационная длительность паза в виде разделенной запятой пары, состоящей из 'SlotDuration' и 1 или 2. Это значение должно быть описано в микросекундах.

Типы данных: double

Данные белят состояние в виде 'On' или 'Off'. Установите это значение к 'On' для функции, чтобы выполнить dewhitening на демодулируемых битах (для 'LE1M' и 'LE2M' PHY) и декодируемые биты (для 'LE500K' и 'LE125K' PHY).

Типы данных: char | string

Выходные аргументы

свернуть все

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

Типы данных: int8

Информация об указателе, возвращенная как 32-битный вектор-столбец. Этот выход используется более высокими слоями для проверки пакета.

Типы данных: int8

Выборки IQ в виде вектор-столбца с комплексным знаком. Этот аргумент соответствует 8 μs значениям длительности паза и отчетного периода. Если значением аргумента 'DFPacketType' является 'ConnectionlessCTE' или 'ConnectionCTE', затем функция возвращает этот аргумент.

Типы данных: double

Ссылки

[1] Технологический Веб-сайт Bluetooth. “Технологический Веб-сайт Bluetooth | официальный сайт Технологии Bluetooth”. Полученный доступ 22 ноября 2019. https://www.bluetooth.com/.

[2] Специальная группа (SIG) Bluetooth. "Спецификация Ядра Bluetooth". Версия 5.1. https://www.bluetooth.com/.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2019b