В этом примере показано, как смоделировать полнодуплексную коммуникацию в Bluetooth® piconet имеющий интерференцию WLAN и поддерживающий функциональность адаптивного скачкообразного движения частоты (AFH), пользующуюся Библиотекой Communications Toolbox™ для Протокола Bluetooth. Узлы Bluetooth, действующие с физическим уровнем базовой скорости (BR) (PHY), связываются друг с другом одновременно путем передачи пакетов данных (по асинхронному с установлением соединения (ACL) логический транспорт) и речевых пакетов (по синхронному с установлением соединения (SCO) логический транспорт) как случайные биты. Поддерживаемые данные и речевые пакеты:
Пакетные типы данных: DM1, DH1, DM3, DH3, DM5 и DH5
Речевые пакетные типы: HV1, HV2 и HV3
Этот пример включает AFH путем классификации каналов как хорошие или плохие на основе пакетного коэффициента ошибок (PER) каждого канала. Можно добавить собственный алгоритм классификации, чтобы анализировать результаты симуляции. Результаты симуляции показывают график пакетного коэффициента ошибок (PER) для каждого узла Bluetooth. Спектральная плотность мощности форм волны Bluetooth с интерференцией WLAN визуализируется с помощью спектра анализатор.
Технология Bluetooth действует в промышленной, научной, и медицинской полосе (ISM) на 2,4 ГГц и совместно использует ее с другими беспроводными технологиями как ZigBee и WLAN. Спецификация [1] Ядра Bluetooth, заданная Специальной группой (SIG), задает два режима PHY: обязательный BR и дополнительная расширенная скорость передачи данных (EDR). Радио BR/EDR Bluetooth реализует 1 600 методов частоты, скачкообразно перемещающей спектр распространения (FHSS) транзитных участков/с. Радио скачкообразно двигается псевдослучайным способом на 79 обозначенных каналах Bluetooth. Каждый канал Bluetooth имеет полосу пропускания 1 МГц. Каждый канал сосредоточен в (2402 + k) МГц, где k = 0, 1... 78. Метод модуляции на полезной нагрузке для режима BR и EDR является Гауссовым shift-keying частоты (GFSK) и дифференциальным shift-keying фазы (DPSK), соответственно. Скорость в бодах является 1 MSymbols/s. Радио BR/EDR Bluetooth использует схему дуплекса с разделением времени (TDD), в которой передача данных происходит в одном направлении одновременно. Передача чередуется в двух направлениях, один за другим.
Bluetooth и радио WLAN часто действуют в том же физическом сценарии и в том же устройстве. Поэтому Bluetooth и передачи WLAN могут вмешаться друг в друга, таким образом влияя на эффективность и надежность обоих сети. Чтобы смягчить эту интерференцию, Исследовательская группа IEEE 802.15.2 [2] рекомендует использовать метод AFH. Чтобы изучить AFH и сосуществование Bluetooth с WLAN, смотрите Сосуществование Bluetooth-WLAN.
Для получения дополнительной информации о радио BR/EDR Bluetooth и стеке протокола, смотрите Стек Протокола Bluetooth. Для получения дополнительной информации о Bluetooth пакетные структуры BR/EDR, смотрите Пакетную Структуру Bluetooth.
Система Bluetooth поддерживает "точка-точка" или связи точки-к-многоточечному, названные как piconets. Каждый piconet состоит из узла в роли Ведущего устройства с другими узлами в Ведомой роли. Ведущее устройство и Ведомое устройство обмениваются данными по нескольким логическим транспортам. Эти логические транспорты:
SCO: Ведущее устройство и Ведомое устройство обмениваются пакетами SCO равномерно в зарезервированных пазах. Узлы Bluetooth используют логический транспорт SCO, чтобы обмениваться периодическими данными, такими как потоковая передача аудио. Этот логический транспорт не поддерживает повторные передачи.
Расширенный синхронный с установлением соединения (eSCO): узлы Bluetooth используют eSCO, чтобы обмениваться периодическими данными, такими как потоковая передача аудио. Этот логический транспорт поддерживает повторные передачи.
ACL: узлы Bluetooth используют ACL, чтобы обмениваться асинхронными данными, такими как протокол передачи файлов (FTP). Во время каждого интервала опроса Ведущее устройство опрашивает ACL логический транспорт Ведомого устройства, по крайней мере, однажды.
Активная ведомая широковещательная передача (ASB): узлы Bluetooth используют ASB логический транспорт, чтобы отправить сообщения от Ведущего устройства ко всем Ведомым устройствам в piconet. Этот логический транспорт поддерживает однонаправленный трафик без подтверждений.
Ведомая широковещательная передача без установления соединения (CSB): Главный узел использует логический транспорт CSB, чтобы отправить широковещательные данные о профиле в несколько Ведомых устройств. Этот логический транспорт поддерживает однонаправленный трафик без подтверждений.
Этот пример поддерживает ACL и логические транспорты SCO между Ведущим устройством и Ведомыми устройствами путем рассмотрения данных как случайные биты 0s и 1 с. Этот рисунок показывает связь между Ведущим устройством и тремя Ведомыми устройствами в piconet по ACL и логическим транспортам SCO.
Bluetooth использует зарезервированные временные интервалы для связи между узлами. Длительность каждого паза составляет 625 микросекунд. Главный узел инициирует передачу в даже пазах и расширяет передачу к нечетным пазам при передаче пакета мультипаза. Ведомый узел инициирует передачу в нечетных пазах и расширяет передачу к даже пазам при передаче пакета мультипаза.
% Check if the 'Communications Toolbox Library for the Bluetooth Protocol' % support package is installed commSupportPackageCheck('BLUETOOTH');
Этот раздел показывает, как сконфигурировать параметры симуляции для Bluetooth piconet, беспроводного канала и интерференции WLAN.
NumSlaves
параметр задает количество Ведомых устройств в Bluetooth piconet. LinkTraffic
параметр задает тип трафика по Bluetooth логические транспорты между Ведущим устройством и соответствующим Ведомым устройством. Эта таблица сопоставляет LinkTraffic
к различным логическим транспортам.
Если Ведущее устройство связывается с несколькими Ведомыми устройствами, LinkTraffic
должен быть вектор.
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 объекта помощника. Можно установить EbNo
значение для канала AWGN. Чтобы сгенерировать WLAN сигнализируют об интерференции, используют helperBluetoothGenerateWLANWaveform функцию помощника. Задайте источники интерференции WLAN при помощи WLANInterference
параметр. Используйте одну из этих опций, чтобы задать источник интерференции WLAN.
'Generated'
: Чтобы добавить сигнал WLAN Toolbox™, выберите эту опцию. Выполните шаги, которые, как показывают в дальнейшем исследовании, добавили сигнал из WLAN Toolbox™.
'BasebandFile'
: Чтобы добавить WLAN сигнализируют из основополосного файла (.bb
), выберите эту опцию. Можно задать имя файла с помощью WLANBBFilename
входной параметр. Если вы не задаете .bb
файл, пример использует .bb
по умолчанию файл,
'WLANNonHTDSSS.bb'
, добавить сигнал WLAN.
'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.SIR = [-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 в piconet. Установите роль узлов как Ведущее устройство или Ведомое устройство. Чтобы создать Bluetooth piconet из сконфигурированных параметров, используйте helperBluetoothCreatePiconet функцию помощника.
% 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 piconet использование сконфигурированных параметров. Визуализируйте график PER каждого узла Bluetooth в piconet. Визуализируйте спектральную плотность мощности форм волны 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 piconet относительно времени симуляции.
Чтобы видеть основополосную статистику слоя для каждого узла Bluetooth, смотрите statisticsAtEachNode
переменная. Чтобы видеть статистику классификации каналов для каждой пары "Главный-подчиненный", смотрите classificationStats
переменная. Статистические данные классификации каналов допустимы когда sequenceType
установлен в 'Connection adaptive'
. Получите основополосный слой и статистику классификации каналов каждого узла Bluetooth в piconet.
% 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 {[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 ... ]}
Этот пример позволяет вам сконфигурировать и симулировать полнодуплексные данные и голосовое сообщение в Bluetooth piconet с интерференцией WLAN. Пример использует AFH, чтобы смягчить интерференцию WLAN путем классификации каналов как хорошие или плохие на основе значения PER. Эффективность полнодуплексной коммуникации анализируется путем визуализации удара интерференции WLAN на каждом узле Bluetooth.
Чтобы добавить сигнал WLAN использование функций WLAN Toolbox™, установите значение wlanInterference к 'Сгенерированному'. Используйте этот код, чтобы добавить сигнал WLAN.
Добавьте, что сигнал WLAN сгенерировал использование функций WLAN Toolbox™ как статическая интерференция сигнала к Bluetooth. Чтобы включить это, установите wlanInterference
значение как 'Сгенерированное', добавляет ваш пользовательский код генерации сигнала в функции. Используйте этот отрывок примера кода в функциях использующего генерации сигнала 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
: Выбирает индекс канала Bluetooth BR/EDR для скачкообразного движения частоты
Пример использует этих помощников:
helperBluetoothFullDuplexNode: Конфигурирует и симулирует узел Bluetooth
helperBluetoothBaseband: Конфигурирует и симулирует основополосный слой Bluetooth
helperBluetoothLogicalTransports: Конфигурирует логические транспорты между узлами Bluetooth
helperBluetoothSlotTimer: Управляет часами Bluetooth и синхронизацией пазов
helperBluetoothPHY: Конфигурирует и симулирует слой Bluetooth PHY
helperBluetoothChannel: Конфигурирует и симулирует беспроводной канал Bluetooth
helperBluetoothGenerateWLANWaveform: Генерирует форму волны WLAN, которая будет добавлена как интерференция к формам волны Bluetooth
helperBluetoothWLANDSSSSpectrumMask: Вычисляет смежную степень интерференции канала с помощью WLAN 802.11b (DSSS) маски спектра
helperBluetoothCreatePiconet: Создает Bluetooth piconet использование узлов Bluetooth
helperBluetoothFullDuplexStatistics: Возвращает статистику каждого узла Bluetooth в Bluetooth piconet
helperBluetoothQueue: Создайте объект для функциональности очереди Bluetooth
Специальная группа (SIG) Bluetooth. "Спецификация Ядра Bluetooth". Версия 5.2. https://www.bluetooth.com.
IEEE® Standard 802.15.2™. "Сосуществование Беспроводных Персональных Сетей области с Другими Беспроводными устройствами, Действующими в Нелицензированных Диапазонах частот". Методические рекомендации IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретные требования; Общество эпохи компьютеризации IEEE.