В этом примере показано, как смоделировать полнодуплексную коммуникацию в пикосети Bluetooth ®, имеющей помехи WLAN и поддерживающей функциональность адаптивного скачкообразного изменения частоты (AFH), с помощью библиотеки Communications Toolbox™ для протокола Bluetooth. Узлы Bluetooth, работающие с физическим слоем базовой скорости (BR), взаимодействуют друг с другом одновременно путем передачи пакетов данных (по логическому транспорту, ориентированному на асинхронное соединение (ACL)) и голосовых пакетов (по логическому транспорту, ориентированному на синхронное соединение (SCO)) в виде случайных бит. Поддерживаемые пакеты данных и голосовые пакеты:
Типы пакета данных: 1 немецкая марка, DH1, 3 немецких марки, DH3, 5 немецких марок, и DH5
Типы голосовых пакетов: HV1, HV2 и HV3
Этот пример включает AFH путем классификации каналов как хороших или плохих на основе частоты ошибок пакета (PER) каждого канала. Можно добавить свой собственный алгоритм классификации, чтобы проанализировать результаты симуляции. На результаты симуляции показан график частоты ошибок пакета (PER) для каждого узла Bluetooth. Спектральная плотность степени сигналов Bluetooth с интерференцией WLAN визуализируется с помощью анализатора спектра.
Технология Bluetooth работает в промышленных научных и медицинских полосах с частотой 2,4 ГГц и разделяет ее с другими беспроводными технологиями, такими как ZigBee и WLAN. Спецификация ядра Bluetooth [1], определенная Специальной процентной группой (SIG), задает два режима PHY: обязательный BR и опциональный повышенный уровень передачи данных (EDR). Радио Bluetooth BR/EDR реализует метод 1600 скачков частоты/с с расширением спектра (FHSS). Радио переходит псевдослучайным способом на 79 назначенных каналах Bluetooth. Каждый канал Bluetooth имеет полосу пропускания 1 МГц. Каждый канал центрирован на (2402 + k) МГц, где k = 0, 1,... 78. Метод модуляции полезной нагрузки для режима BR и EDR является Гауссовой манипуляцией со сдвигом частоты (GFSK) и дифференциальной фазы манипуляцией со сдвигом (DPSK), соответственно. Скорость передачи данных составляет 1 MSymbols/s. Радио Bluetooth BR/EDR использует схему дуплекса с разделением по времени (TDD), в которой передача данных происходит в одном направлении за один раз. Коробка передач чередуется в двух направлениях, один за другим.
Радиоприемники Bluetooth и WLAN часто работают в одном и том же физическом сценарии и в одном и том же устройстве. Поэтому передачи Bluetooth и WLAN могут мешать друг другу, что влияет на эффективность и надежность обеих сетей. Чтобы уменьшить это вмешательство, целевая группа [2] IEEE 802.15.2 рекомендует использовать метод AFH. Чтобы изучить AFH и сосуществование Bluetooth с WLAN, см. «Сосуществование Bluetooth-WLAN».
Дополнительные сведения о радио Bluetooth BR/EDR и стеке протоколов см. в разделе Стек протоколов Bluetooth. Для получения дополнительной информации о структурах пакета Bluetooth BR/EDR, смотрите Bluetooth Packet Structure.
Система Bluetooth поддерживает соединения «точка-точка» или «точка-много точек», называемые пикосетями. Каждая пикосеть состоит из узла в роли Master, с другими узлами в роли Slave. Master и Slave обмениваются данными через несколько логических переносов. Эти логические транспорты:
SCO: Основные и ведомые пакеты SCO обмена с регулярными интервалами в зарезервированных пазах. Узлы Bluetooth используют логический транспорт SCO для обмена периодическими данными, такими как потоковая передача звука. Этот логический транспорт не поддерживает повторные передачи.
Расширенное синхронное соединение-ориентированное (eSCO): Узлы Bluetooth используют eSCO для обмена периодическими данными, такими как потоковая передача звука. Этот логический транспорт поддерживает повторные передачи.
ACL: Узлы Bluetooth используют ACL для обмена асинхронными данными, такими как протокол передачи файлов (FTP). В течение каждого интервала опроса Мастер по крайней мере один раз опрашивает логический транспорт ACL ведомого сервера.
Active slave broadcast (ASB): Узлы Bluetooth используют логический транспорт ASB для отправки сообщений от ведущего ко всем рабам в пиконете. Этот логический транспорт поддерживает однонаправленный трафик без подтверждений.
CSB: Главный узел использует логический транспорт CSB для отправки широковещательных данных профиля нескольким подчиненным устройствам. Этот логический транспорт поддерживает однонаправленный трафик без подтверждений.
Этот пример поддерживает логические транспорты ACL и SCO между ведущим и ведомым устройствами путем рассмотрения данных как случайных бит 0 и 1 с. Этот рисунок показывает связь между ведущим и тремя подчиненными в пикосети через логические транспорты ACL и SCO.
Bluetooth использует зарезервированные временные пазы для связи между узлами. Длительность каждого паза составляет 625 микросекунд. Главный узел инициирует передачу в четных пазах и расширяет передачу до нечетных пазов при передаче пакета с мультипазами. Ведомый узел инициирует передачу в нечетных пазах и расширяет передачу на четные пазы при передаче пакета с мультипазами.
% Check if the 'Communications Toolbox Library for the Bluetooth Protocol' % support package is installed commSupportPackageCheck('BLUETOOTH');
В этом разделе показано, как сконфигурировать параметры симуляции для пикосети Bluetooth, беспроводного канала и интерференции WLAN.
The NumSlaves
параметр задает количество рабов в пиконете Bluetooth. The LinkTraffic
параметр задает тип трафика через логические транспорты Bluetooth между мастером и соответствующим ведомым сервером. Эта таблица отображает LinkTraffic
к различным логическим транспортам.
Если Мастер общается с несколькими подчиненными, LinkTraffic
должен быть вектором.
The SequenceType
параметр задает тип алгоритма скачкообразного изменения частоты, который использует узел Bluetooth. Когда вы задаете SequenceType
на 'Connection adaptive'
каналы Bluetooth классифицируются как хорошие или плохие периодически на основе PER каждого канала Bluetooth. Чтобы классифицировать каналы Bluetooth, можно использовать функцию объекта classifyChannels.
% Set the simulation time in microseconds simulationTime = 3*1e6; % Enable or disable the visualization in the example enableVisualization = true; simulationParameters = struct; % Configure the number of Slaves in the piconet simulationParameters.NumSlaves = 1; % Specify the positions of Bluetooth nodes in the form of n-by-3 array. % where n represents the number of nodes in the piconet. Each row specifies % the cartesian coordinates of a nodes starting from Master and followed by % Slaves. simulationParameters. NodePositions = [10 0 0; 20 0 0]; % Configure the logical links between the Master and Slaves % Each element represents the logical link between the Master and the % respective Slave. If the Master is connected to multiple Slaves, this % value must be a row vector. simulationParameters. LinkTraffic = 1; % Configure the frequency hopping sequence as 'Connection basic' or % 'Connection adaptive' simulationParameters. SequenceType = 'Connection adaptive'; % To enable an ACL logical transport, set linkTraffic to 1 or 3. Specify % the ACL packet type as 'DM1', 'DH1', 'DM3', 'DH3', 'DM5', or 'DH5'. simulationParameters. ACLPacketType = 'DM1'; % To enable a SCO logical transport, set linkTraffic to 2 or 3. Specify the % SCO packet type as 'HV1', 'HV2', or 'HV3' for the respective Slave that % has SCO link traffic. Here, 1 represents the Slave number, and 'HV3' % represents the corresponding SCO packet type used by Slave 1. simulationParameters. SCOPacketType = {1, 'HV3'};
Настройте беспроводной канал с помощью объекта helperBluetoothChannel helper. Можно задать EbNo
значение для канала AWGN. Чтобы сгенерировать помехи сигнала WLAN, используйте функцию helperBluetoothGenerateWLANWaveform helper. Укажите источники интерференции WLAN при помощи WLANInterference
параметр. Используйте одну из этих опций, чтобы задать источник пересечения WLAN.
'Generated'
: Чтобы добавить сигнал WLAN Toolbox™, выберите эту опцию. Выполните шаги, показанные в дальнейшем исследовании, чтобы добавить сигнал от WLAN Toolbox™.
'BasebandFile'
: Добавление сигнала WLAN из файла основной полосы частот (.bb
), выберите эту опцию. Имя файла можно задать с помощью WLANBBFilename
входной параметр. Если вы не задаете .bb
файл, в примере используется значение по умолчанию .bb
файл, 'WLANNonHTDSSS.bb'
, для добавления сигнала WLAN.
The 'None'
опция подразумевает, что сигнал WLAN не добавляется. AWGN присутствует на протяжении всей симуляции.
% Configure wireless channel parameters simulationParameters.EbNo = 22; % Ratio of energy per bit (Eb) to spectral noise density (No) in dB % Configure the WLAN interference % Specify the WLAN interference as 'Generated', 'BasebandFile', or 'None'. % To use the 'wlanBBFilename' option, set wlanInterference to % 'BasebandFile'. simulationParameters.WLANInterference = 'BasebandFile'; simulationParameters. WLANBBFilename = 'WLANNonHTDSSS.bb'; % Signal to interference ratio in dB simulationParameters. СЭР = [-15 - 16];
Классифицируйте каналы Bluetooth как хорошие или плохие при помощи объекта helperBluetoothChannelClassification только тогда, когда SequenceType
является 'Connection adaptive'
. Пример классифицирует каналы Bluetooth с помощью этих параметров.
PERThreshold
: PER порог
ClassificationInterval
: Периодичность (в пазах) классификации канала
RxStatusCount
: Максимальное количество полученных пакетов, поддерживаемых для каждого канала
MinRxCountToClassify
: Минимальное количество принятых пакетов для каждого канала, чтобы классифицировать канал как хороший или плохой
PreferredMinimumGoodChannels
: Предпочтительное количество хороших каналов, необходимых для связи между Хозяином и Рабами
Можно добавить собственный алгоритм классификации, настроив метод classifyChannels объекта helperBluetoothChannelClassification.
simulationParameters.PERThreshold = 50; % Packet error rate simulationParameters. ClassificationInterval = 3000; % In slots simulationParameters. RxStatusCount = 10; % Maximum Rx packets status simulationParameters. MinRxCountToClassify = 4; % Minimum packets received simulationParameters. PreferredMinimumGoodChannels = 20; % Preferred number of good channels
Укажите общее количество узлов Bluetooth в пиконете. Установите роль узлов как Master или Slave. Чтобы создать пикосеть Bluetooth из настроенных параметров, используйте функцию helperBluetoothCreatePiconet helper.
% Reset the random number generator rng('default'); % Specify Tx power, in dBm simulationParameters.TxPower = 20; % Specify the Bluetooth node receiver range (in meters) simulationParameters.ReceiverRange = 40; % Set the total number of nodes in the piconet (one Master and multiple % Slaves) numNodes = simulationParameters.NumSlaves + 1; % Create a Bluetooth piconet btNodes = helperBluetoothCreatePiconet(simulationParameters);
Чтобы визуализировать формы волны Bluetooth, создайте dsp.SpectrumAnalyzer
System™ объект.
% View the Bluetooth waveforms using the spectrum analyzer spectrumAnalyzer = dsp.SpectrumAnalyzer(... 'Name','Bluetooth Full Duplex Communication', ... 'ViewType','Spectrum and spectrogram', ... 'TimeResolutionSource','Property', ... 'TimeResolution',0.0005, ... 'SampleRate',btNodes{1}.PHY.SamplesPerSymbol*1e6, ... 'TimeSpanSource','Property', ... 'TimeSpan',0.05, ... 'FrequencyResolutionMethod','WindowLength', ... 'WindowLength',512, ... 'AxesLayout','Horizontal', ... 'FrequencyOffset',2441*1e6, ... 'ColorLimits',[-20 15]);
Симулируйте пикосеть Bluetooth с помощью настроенных параметров. Визуализируйте график PER каждого узла Bluetooth в пиконете. Визуализируйте степень спектральную плотность сигналов Bluetooth с помощью dsp.SpectrumAnalyzer
Системный объект. Можно также вычислить статистику слоя основной полосы частот (общее количество переданных пакетов, общее количество полученных пакетов и общее количество отброшенных пакетов) и статистику классификации каналов на каждом узле Bluetooth. Когда тип последовательности установлен в 'Connection adaptive'
, t
узел Bluetooth обновляет статистику классификации каналов.
% Current simulation time in microseconds curTime = 0; % Elapsed time in microseconds elapsedTime = 0; % Next invoke times of all of the nodes in microseconds nextInvokeTimes = zeros(1, numNodes); if enableVisualization % Plot the PER perFigure = figure("Name","PER of Each Bluetooth Node",'Tag','BluetoothPERPlot'); perAxes = axes(perFigure); % Add annotations to the figure ylim(perAxes, [0 1]); xlabel(perAxes, 'Simulation Time (in Microseconds)'); ylabel(perAxes, 'PER'); title(perAxes, 'PER of Each Bluetooth Node'); % Plot the PER line for each Bluetooth node [perPlots, legendStr] = deal(cell(1, numNodes)); for plotIdx = 1:numNodes hold on perPlots{plotIdx} = plot(perAxes, curTime, 0); if plotIdx == 1 legendStr{1} = ['\color[rgb]{' num2str(perPlots{plotIdx}.Color) '} Master']; else legendStr{plotIdx} = ['\color[rgb]{' num2str(perPlots{plotIdx}.Color) '} Slave-' num2str(plotIdx-1)]; end end % Add a legend to the figure legend(perAxes, legendStr,'Location','northeastoutside','Box','on'); if ~strcmpi(simulationParameters.WLANInterference, 'None') % Generate the WLAN waveform for visualization wlanWaveform = helperBluetoothGenerateWLANWaveform(... simulationParameters.WLANInterference, simulationParameters.WLANBBFilename); end end % Run the simulation while(curTime < simulationTime) % Simulate the Bluetooth nodes for nodeIdx = 1:numNodes % Push the data into the node pushData(btNodes{nodeIdx}, ... simulationParameters.ACLPacketType, simulationParameters.SCOPacketType); % Run the Bluetooth node instance nextInvokeTimes(nodeIdx) = runNode(btNodes{nodeIdx}, elapsedTime); if enableVisualization if ~isempty(findobj('Tag', 'BluetoothPERPlot')) % Update and plot the PER perPlots{nodeIdx}.XData = [perPlots{nodeIdx}.XData curTime]; if isempty(btNodes{nodeIdx}.PHY.PER) per = 0; else per = btNodes{nodeIdx}.PHY.PER; end perPlots{nodeIdx}.YData = [perPlots{nodeIdx}.YData per]; end end end % Update the current simulation time curTime = curTime + elapsedTime; % Distribute any transmitted packets from each node into the receiving % buffers of the other nodes [isPacketDistributed, txBuffer] = helperBluetoothDistributePackets(btNodes); % Update visualization if enableVisualization for txIdx = 1:numel(txBuffer) channelWaveform = txBuffer{txIdx}.Waveform(1:txBuffer{txIdx}.NumSamples); if ~strcmpi(simulationParameters.WLANInterference, 'None') % Add WLAN interference to the channel waveform channelWaveform = channelWaveform + wlanWaveform(1:txBuffer{txIdx}.NumSamples); end % Plot the Bluetooth waveform spectrumAnalyzer(channelWaveform); end end % If packets are distributed to the receiver nodes, run the nodes to % check the packet reception buffer. if isPacketDistributed elapsedTime = 0; % Advance the simulation time to the next event at a node else elapsedTime = min(nextInvokeTimes(nextInvokeTimes ~= -1)); end end
ans = 1x79 logical array
0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
release(spectrumAnalyzer);
Предыдущий график анализатора спектра показывает спектр волны Bluetooth, искаженной с интерференцией WLAN (в частотный диапазон) и прошедшей через канал AWGN. График правой стороны показывает перекрытие пакетов Bluetooth с мешающим сигналом WLAN.
График «PER каждого узла Bluetooth» показывает PER каждого узла в пиконете Bluetooth относительно времени симуляции.
Чтобы просмотреть статистику слоя основной полосы для каждого узла Bluetooth, смотрите statisticsAtEachNode
переменная. Чтобы просмотреть статистику классификации каналов для каждой пары Master-Slave, смотрите classificationStats
переменная. Статистика классификации каналов действительна при sequenceType
установлено в 'Connection adaptive'
. Получите статистику классификации слоя основной полосы частот и канала для каждого узла Bluetooth в пиконете.
% Get the baseband layer and channel classification statistics of each Bluetooth node in the piconet
[statisticsAtEachNode, classificationStats] = helperBluetoothFullDuplexStatistics(btNodes)
statisticsAtEachNode=2×19 table
TotalRxPackets TotalTxPackets TxACLPackets TxACLOneSlotPackets TxACLThreeSlotPackets TxACLFiveSlotPackets RetransmittedACLPackets RxSlotsWithNoPacket TxSCOPackets RxACLPackets RxACLOneSlotPackets RxACLThreeSlotPackets RxACLFiveSlotPackets RxSCOPackets TotalRxFailedPackets ACKedACLPackets ACKedSCOPackets DroppedPackets DroppedLMPMessages
______________ ______________ ____________ ___________________ _____________________ ____________________ _______________________ ___________________ ____________ ____________ ___________________ _____________________ ____________________ ____________ ____________________ _______________ _______________ ______________ __________________
Master 1435 2401 {7x2 double} {7x2 double} {7x2 double} {7x2 double} {7x2 double} 965 {7x2 double} {7x2 double} {7x2 double} {7x2 double} {7x2 double} {7x2 double} 157 {7x2 double} {7x2 double} 254 0
Slave1 2379 1444 {7x2 double} {7x2 double} {7x2 double} {7x2 double} {7x2 double} 0 {7x2 double} {7x2 double} {7x2 double} {7x2 double} {7x2 double} {7x2 double} 384 {7x2 double} {7x2 double} 551 0
classificationStats=1×3 table
LTAddress ClassificationCount ChannelMap
_________ ___________________ _____________
1 1 {1x79 double}
Этот пример позволяет вам сконфигурировать и моделировать полнодуплексные данные и голосовую связь в пикосети Bluetooth с интерференцией WLAN. Пример использует AFH, чтобы уменьшить помехи WLAN путем классификации каналов как хороших или плохих на основе значения PER. Эффективность полнодуплексной связи анализируется путем визуализации влияния интерференции WLAN на каждый узел Bluetooth.
Чтобы добавить сигнал WLAN с помощью функций WLAN Toolbox™, установите значение wlanInterference на 'Generated'. Используйте этот код для добавления сигнала WLAN.
Добавьте сигнал WLAN, сгенерированный с помощью функций WLAN Toolbox™ в качестве статической интерференции сигнала к Bluetooth. Чтобы включить это, установите wlanInterference
значение как 'Generated', добавьте пользовательский код генерации сигнала в функцию. Используйте этот пример фрагмента кода в генерации сигнала WLAN с помощью функций WLAN Toolbox™.
% % WLAN waveform to interfere with Bluetooth waveforms can be % % modified by using the features of the WLAN Toolbox(TM). % psduLength = 1000; % % % Create configuration object for WLAN waveform (802.11b) % cfgNHT = wlanNonHTConfig('Modulation','DSSS', ... % 'PSDULength', psduLength); % % % Create random PSDU % psdu = randi([0 1], cfgNHT.PSDULength*8, 1); % % % Generate WLAN waveform % wlanWaveform = wlanWaveformGenerator(psdu, cfgNHT);
Вы можете добавить свой пользовательский код генерации сигнала в функцию helperBluetoothGenerateWLANWaveform. Можно также записать соответствующие маски спектра WLAN сигнала и зарегистрироваться в WLANSpectrum
свойство helperBluetoothChannel как указателя на функцию.
В примере используется этот объект:
bluetoothFrequencyHop
: Выбирает индекс канала BR/EDR Bluetooth для скачкообразного изменения частоты
В примере используются следующие помощники:
helperBluetoothFullDuplexNode: настраивает и имитирует узел Bluetooth
helperBluetoothBaseband: Настраивает и симулирует слой полосы частот Bluetooth
helperBluetoothLogicalTransports: настраивает логические транспорты между узлами Bluetooth
helperBluetoothSlotTimer: управляет часами Bluetooth и синхронизацией пазов
helperBluetoothPHY: настраивает и имитирует слой Bluetooth PHY
helperBluetoothChannel: настраивает и имитирует беспроводной канал Bluetooth
helperBluetoothGenerateWLANWaveform: Генерирует сигнал WLAN, который будет добавлен как помеха для сигналов Bluetooth
helperBluetoothWLANDSSSpectrumMask: вычисляет степень помех смежного канала с помощью маски спектра WLAN 802.11b (DSSS)
helperBluetoothCreatePiconet: Создает пикосеть Bluetooth с помощью узлов Bluetooth
helperBluetoothFullDuplexStatistics: Возвращает статистику каждого узла Bluetooth в пиконете Bluetooth
helperBluetoothQueue: создайте объект для функциональности очереди Bluetooth
Bluetooth Special Interest Group (SIG). Bluetooth Core Спецификации. Версия 5.2. https://www.bluetooth.com.
Стандартные 802.15.2™ IEEE ®. «Сосуществование беспроводных персональных вычислительных сетей с другими беспроводными устройствами, работающими в нелицензированных полосах». IEEE Рекомендуемая практика в области информационных технологий - Телекоммуникации и обмен информацией между системами - Местные и столичные сети - Конкретные требования; Компьютерное общество IEEE.