exponenta event banner

Сквозное моделирование PHY Bluetooth BR/EDR с помехами WLAN и адаптивной скачкообразной перестройкой частоты

В этом примере представлено сквозное моделирование для демонстрации того, как адаптивная скачкообразная перестройка частоты (AFH) изменяет последовательность скачкообразной перестройки частоты на физическом уровне базовой скорости (BR) Bluetooth ® и повышенной скорости передачи данных (EDR), и минимизирует влияние помех WLAN с использованием библиотеки Communications Toolbox™ Library для протокола Bluetooth ®. В отличие от базовой скачкообразной перестройки частоты, AFH исключает каналы Bluetooth, которые являются источниками помех. Путем исключения этих каналов из списка доступных каналов AFH переназначает передачу и прием пакетов по каналам с относительно меньшими помехами. Результаты моделирования в примере показывают, что значения частоты ошибок пакетов (PER) и частоты ошибок битов (BER) моделирования PHY Bluetooth с помехами WLAN меньше при AFH по сравнению со скачкообразной перестройкой базовой частоты. Кроме того, в примере показан выбранный индекс канала на интервал для скачкообразной перестройки базовой частоты и AFH. Спектральная плотность мощности сигналов Bluetooth BR/EDR с интерференцией WLAN визуализируется с помощью анализатора спектра.

Bluetooth BR/EDR PHY

Стандарт Bluetooth определяет два режима PHY: BR и EDR. Библиотека Communications Toolbox™ Library для пакета поддержки протокола Bluetooth позволяет моделировать каналы связи Bluetooth BR/EDR, как указано в спецификации ядра Bluetooth [1].

Режим Bluetooth BR является обязательным, в то время как режим EDR является необязательным. Радиоблок BR/EDR Bluetooth реализует технологию 1600 скачкообразных скачкообразных изменений частоты с расширенным спектром (FHSS). Радиостанция перескакивает псевдослучайным образом по 79 назначенным каналам Bluetooth. Каждый канал Bluetooth имеет пропускную способность 1 МГц. Каждый канал центрируется на частоте (2402 + k) МГц, где k = 0, 1,..., 78. Методика модуляции полезных нагрузок режимов BR и EDR заключается в гауссовой частотной манипуляции (GFSK) и дифференциальной фазовой манипуляции (DPSK) соответственно. Скорость передачи составляет 1 МСимболь/с. Радиоблок BR/EDR Bluetooth использует дуплекс с временным разделением каналов (TDD), в котором передача данных происходит в одном направлении одновременно. Трансмиссия чередуется в двух направлениях, один за другим.

Дополнительные сведения о радио Bluetooth BR/EDR и стеке протоколов см. в разделе Стек протоколов Bluetooth. Дополнительные сведения о структурах пакетов Bluetooth BR/EDR см. в разделе Структура пакетов Bluetooth.

Адаптивная скачкообразная перестройка частоты

Целью использования FHSS в Bluetooth является обеспечение разнесения, которое позволяет минимизировать BER, даже если мешающие сети или физическая среда делают некоторые каналы непригодными для использования. Способы скачкообразной перестройки частоты могут либо реализовывать фиксированную последовательность скачкообразных переходов канала, например, со скачкообразной перестройкой основной частоты, либо динамически адаптировать свою последовательность скачкообразной перестройки с AFH к изменяющимся условиям помех.

До возможности AFH устройства Bluetooth реализовали базовую схему скачкообразной перестройки частоты. В этом подходе Bluetooth-радио перескакивает псевдослучайным способом со скоростью 1600 скачков/с. Когда другое беспроводное устройство, работающее в том же диапазоне 2,4 ГГц, попадает в среду, схема скачкообразной перестройки базовой частоты приводит к случайным столкновениям. Например, Bluetooth и WLAN - это две такие сети, которые работают в диапазоне частот 2,4 ГГц. Радио Bluetooth и WLAN часто работают в одном и том же физическом сценарии и на одном и том же устройстве. В этих случаях передачи Bluetooth и WLAN могут создавать помехи друг другу. Эти помехи влияют на производительность и надежность обеих сетей. На этом рисунке показан сценарий, в котором передачи пакетов Bluetooth и WLAN мешают друг другу.

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

Эта процедура переопределения включает в себя уменьшение количества каналов, используемых Bluetooth. Спецификации ядра Bluetooth [1] требуют не менее 20 каналов для передач Bluetooth.

Проверка установки пакета поддержки

% Check if the 'Communications Toolbox Library for the Bluetooth Protocol'
% support package is installed.
commSupportPackageCheck('BLUETOOTH');

Цепь передатчиков и приемников Bluetooth BR/EDR

Этот пример демонстрирует сквозную обработку формы сигнала Bluetooth BR/EDR с использованием механизма скачкообразной перестройки частоты, определенного в спецификации ядра Bluetooth [1]. Генерируемый сигнал Bluetooth BR/EDR модулируется по частоте и затем искажается помехами WLAN. На этой блок-схеме показана цепь передатчика и приемника Bluetooth.

Цепь датчиков

  1. Выберите индекс канала для передачи.

  2. Генерировать случайные входные биты.

  3. Создание сигнала Bluetooth BR/EDR.

  4. Применение сдвига частоты на основе выбранного индекса канала.

Цепочка приемников

  1. Выберите индекс канала для приема.

  2. Применение сдвига частоты на основе выбранного индекса канала.

  3. Декодирование сигнала BR/EDR Bluetooth для получения выходных битов.

Беспроводной канал

  1. Добавление помех WLAN (IEEE 802.11b) в форму сигнала Bluetooth BR/EDR.

  2. Добавьте AWGN в форму сигнала Bluetooth BR/EDR.

Результаты

В примере показаны эти результаты для скачкообразной перестройки основной частоты и AFH.

  • PER и BER для моделирования, выполняемого в канале аддитивного белого гауссова шума (AWGN) для заданного битового отношения энергии к плотности шума (Eb/No).

  • Спектр принятого сигнала и спектрограмма канала

  • График, отображающий выбранный индекс канала на интервал передачи или приема

Настройка параметров моделирования

Настройте требуемый тип пакета Bluetooth, длину полезной нагрузки, режим PHY и время моделирования.

simulationTime = 2*1e6; % Simulation time in microseconds
packetType     = 'DM1'; % Specify baseband packet type
mode           = 'BR'; % Specify PHY mode ('BR', 'EDR2M', 'EDR3M')
payloadLength  = 10; % Length of baseband packet in bytes

Конфигурирование скачкообразной перестройки частоты

Используйте bluetoothFrequencyHop объект для выбора индекса канала для передачи и приема сигналов Bluetooth BR/EDR.

% Bluetooth frequency hopping
frequencyHop = bluetoothFrequencyHop;
frequencyHop.SequenceType = 'Connection Adaptive';

Настройка PHY Bluetooth

Используйте вспомогательный объект helperBluetoothPHY для моделирования передачи и приема сигнала Bluetooth BR/EDR.

% Configure Bluetooth PHY transmission
phyTx = helperBluetoothPHY;
phyTx.Mode = mode;

% Configure Bluetooth PHY reception
phyRx = helperBluetoothPHY;
phyRx.Mode = mode;

Настройка канала и помех WLAN:

Используйте объект helperBluetoothChannel для настройки беспроводного канала. Можно установить EbNo значение для канала AWGN. Для генерации формы сигнала WLAN, создающего помехи, используйте функцию helperBluetoothGenerateWLANWaveform. Укажите источники помех WLAN с помощью wlanInterferenceSource параметр. Сигнал WLAN присутствует в диапазоне от -10 до 10 МГц во время моделирования. Одна из этих опций используется для указания источника помех WLAN.

  • «Сгенерировано»: чтобы добавить сигнал WLAN из Toolbox™ WLAN, выберите этот параметр.

  • «BasebandFile»: Добавление сигнала WLAN из файла основной полосы (.bb), выберите этот параметр и укажите имя файла основной полосы в WLANBBFilename собственность. Если не указать .bb файл, в примере используется значение по умолчанию .bb файл, WLANNonHTDSSS.bb, для добавления сигнала WLAN.

  • «Нет»: сигнал WLAN не добавляется.

AWGN присутствует на протяжении всего моделирования.

% Specify as one of 'Generated' | 'BasebandFile' | 'None'
wlanInterferenceSource = 'BasebandFile';
wlanBBFilename = 'WLANNonHTDSSS.bb'; % Default baseband file
% Configure wireless channel
channel = helperBluetoothChannel;
channel.EbNo = 22; % Ratio of energy per bit (Eb) to the spectral noise density (No) in dB
channel.SIR = -20; % Signal to interference ratio in dB
if ~strcmpi(wlanInterferenceSource, 'None')
    % Generate the WLAN waveform
    wlanWaveform = helperBluetoothGenerateWLANWaveform(wlanInterferenceSource, wlanBBFilename);
    % Add the WLAN interference to Bluetooth channel
    addWLANWaveform(channel, wlanWaveform);
end

Настройка моделирования

Инициализируйте параметры для выполнения сквозного моделирования Bluetooth BR/EDR.

slotTime = 625; % Bluetooth slot duration in microseconds
% Simulation time in terms of slots
numSlots = floor(simulationTime/slotTime);
% Slot duration, including transmission and reception
slotValue = phyTx.slotsRequired(packetType)*2;
% Number of Master transmission slots
numMasterTxSlots = floor(numSlots/slotValue);
% Total number of Bluetooth physical channels
numBtChannels = 79;
% errorsBasic and errorsAdaptive store relevant bit and packet error
% information per channel. Each row stores the channel index, bit errors,
% packet errors, total bits, and BER per channel. errorsBasic and
% errorsAdaptive arrays store these values for basic frequency hopping
% and AFH, respectively.
[errorsBasic, errorsAdaptive] = deal(zeros(numBtChannels,5));
% Initialize first column with channel numbers
[errorsBasic(:,1), errorsAdaptive(:,1)] = deal(0:78);
% Initialize variables for calculating PER and BER
[berBasic, berAdaptive, bitErrors] = deal(0);
badChannels = zeros(1,0);
totalTransmittedPackets = numMasterTxSlots;
% Number of bits per octet
octetLength = 8;
% Sample rate and input clock used in PHY processing
samplePerSymbol = 88;
symbolRate = 1e6;
sampleRate = symbolRate*samplePerSymbol;
inputClock = 0;
% Store hop index
hopIndex = zeros(1, numMasterTxSlots);
% Index to hop index vector
hopIdx = 1;
% Baseband packet structure
basebandData = struct(...
    'LTAddr',1,             ... % Logical transport address
    'PacketType',packetType,... % Packet type
    'Payload',zeros(1,phyTx.MaxPayloadSize), ... % Payload
    'PayloadLength',0,  ... % Payload length
    'LLID',[0; 0],      ... % Logical link identifier
    'SEQN',0,           ... % Sequence number
    'ARQN',1,           ... % Acknowledgment flag
    'IsValid',false);   ... % Flag to identify the status of
    % cyclic redundancy check (CRC) and
% header error control (HEC)

% Bluetooth signal structure
bluetoothSignal = struct(...
    'PacketType',packetType, ... % Packet type
    'Waveform',[],           ... % Waveform
    'NumSamples',[],         ... % Number of samples
    'SampleRate',sampleRate, ... % Sample rate
    'SamplesPerSymbol',samplePerSymbol,      ... % Samples per symbol
    'Payload',zeros(1,phyTx.MaxPayloadSize), ... % Payload
    'PayloadLength',0, ... % Payload length
    'SourceID',0,      ... % Source identifier
    'Bandwidth',1,     ... % Bandwidth
    'NodePosition',[0 0 0], ... % Node position
    'CenterFrequency',centerFrequency(phyTx), ... % Center frequency
    'StartTime',0, ... % Waveform start time
    'EndTime',0,   ... % Waveform end time
    'Duration',0); ... % Waveform duration

% Clock ticks(one slot is 2 clock ticks)
clockTicks = slotValue*2;

Для визуализации форм сигнала Bluetooth BR/EDR создайте dsp.SpectrumAnalyzer object™ системы.

% Spectrum analyzer for basic frequency hopping
spectrumAnalyzerBasic = dsp.SpectrumAnalyzer(...
    'Name','Bluetooth Basic Frequency Hopping', ...
    'ViewType','Spectrum and spectrogram', ...
    'TimeResolutionSource','Property', ...
    'TimeResolution',0.0005, ...
    'SampleRate',sampleRate, ...
    'TimeSpanSource','Property', ...
    'TimeSpan', 0.05, ...
    'FrequencyResolutionMethod', 'WindowLength', ...
    'WindowLength', 512, ...
    'AxesLayout', 'Horizontal', ...
    'FrequencyOffset',2441*1e6, ...
    'ColorLimits',[-20 15]);

% Spectrum analyzer for AFH
spectrumAnalyzerAdaptive = dsp.SpectrumAnalyzer(...
    'Name','Bluetooth Adaptive Frequency Hopping', ...
    'ViewType','Spectrum and spectrogram', ...
    'TimeResolutionSource','Property', ...
    'TimeResolution',0.0005, ...
    'SampleRate',sampleRate, ...
    'TimeSpanSource','Property', ...
    'TimeSpan',0.05, ...
    'FrequencyResolutionMethod','WindowLength', ...
    'WindowLength',512, ...
    'AxesLayout','Horizontal', ...
    'FrequencyOffset',2441*1e6, ...
    'ColorLimits',[-20 15]);

Моделирования

Цепь передатчика и приемника Bluetooth моделируется с использованием скачкообразной перестройки базовой частоты и AFH. Используя результаты базовой скачкообразной перестройки частоты для каждого канала PER и BER, выведите список используемых каналов. Список используемых каналов подается на вход моделирования с помощью AFH.

Скачкообразная перестройка базовой частоты

Моделирование выполняется для всего указанного количества основных слотов передачи. Моделирует цепь передатчика, цепь приемника и канал для каждого слота. В конце моделирования в примере вычисляются PER и BER для всех форм сигнала Bluetooth BR/EDR.

sprev = rng('default'); % Set random number generator seed
for slotIdx = 0:slotValue:numSlots-slotValue
    % Update clock
    inputClock = inputClock + clockTicks;

    % Frequency hopping
    [channelIndex,~] = nextHop(frequencyHop,inputClock);
    % PHY transmission
    stateTx = 1; % Transmission state
    TxBits = randi([0 1],payloadLength*octetLength,1);
    basebandData.Payload = TxBits;
    basebandData.PayloadLength = payloadLength;
    % Generate whiten initialization vector from clock
    clockBinary = comm.internal.utilities.de2biBase2RightMSB(inputClock,28);
    whitenInitialization = [clockBinary(2:7)'; 1];
    % Update the PHY with request from the baseband layer
    updatePHY(phyTx,stateTx,channelIndex,whitenInitialization,basebandData);
    % Initialize and pass elapsed time as zero
    elapsedTime = 0;
    [nextTxTime,btWaveform] = run(phyTx,elapsedTime); % Run PHY transmission
    run(phyTx, nextTxTime); % Update next invoked time

    % Channel
    bluetoothSignal.Waveform = btWaveform;
    bluetoothSignal.NumSamples = numel(btWaveform);
    bluetoothSignal.CenterFrequency = centerFrequency(phyTx);
    channel.ChannelIndex = channelIndex;
    bluetoothSignal = run(channel,bluetoothSignal,mode);
    distortedWaveform = bluetoothSignal.Waveform;

    % PHY reception
    stateRx = 2; % Reception state
    % Update the PHY with request from the baseband layer
    updatePHY(phyRx,stateRx,channelIndex,whitenInitialization);
    [nextRxTime,~] = run(phyRx,elapsedTime,bluetoothSignal);
    bluetoothSignal.NumSamples = 0;
    run(phyRx,nextRxTime,bluetoothSignal); % Run PHY reception
    chIdx = channelIndex + 1;

    % Calculate error rate upon successful decoding the packet
    if phyRx.Decoded
        rxBitsLength = phyRx.DecodedBasebandData.PayloadLength*octetLength;
        RxBits = phyRx.DecodedBasebandData.Payload(1:rxBitsLength);
        % BER calculation
        txSymLength = length(TxBits);
        rxSymLength = length(RxBits);
        minSymLength = min(txSymLength,rxSymLength);
        if minSymLength > 0
            bitErrors = sum(xor(TxBits(1:minSymLength),RxBits(1:minSymLength)));
            totalBits = minSymLength;
            % Bit errors found in channel
            errorsBasic(chIdx,2) = errorsBasic(chIdx,2) + bitErrors;
            % Total bits transmitted in channel
            errorsBasic(chIdx,4) = errorsBasic(chIdx,4) + totalBits;
        end
        if ~phyRx.DecodedBasebandData.IsValid || bitErrors
            % Packet errors found in channel
            errorsBasic(chIdx,3) = errorsBasic(chIdx,3) + 1;
        end
    else
        % Packet errors found in channel
        errorsBasic(chIdx,3) = errorsBasic(chIdx,3) + 1;
    end
    hopIndex(hopIdx) = channelIndex;
    hopIdx = hopIdx + 1;

    % Plot spectrum
    spectrumAnalyzerBasic(btWaveform + wlanWaveform(1:numel(btWaveform)));
    pause(0.01);
end

Figure Bluetooth Basic Frequency Hopping contains 2 axes and other objects of type uiflowcontainer, uimenu, uitoolbar. Axes 1 contains an object of type line. This object represents Channel 1. Axes 2 contains an object of type image.

На предыдущем рисунке график слева показывает спектр сигнала Bluetooth BR/EDR, искаженного помехами WLAN в частотной области и прошедшего через канал AWGN. График справа показывает, что сигнал WLAN присутствует от -10 до 10 МГц. Результаты показывают, что пакеты Bluetooth с мешающим сигналом WLAN перекрываются.

% Plot selected channel index per slot
figBasic = figure('Name','Basic frequency hopping');
axisBasic = axes(figBasic);
xlabel(axisBasic,'Slot');
ylabel(axisBasic,'Channel Index');
ylim(axisBasic,[0 numBtChannels+3]);
title(axisBasic,'Bluetooth Basic Frequency Hopping');
hold on;
plot(axisBasic,0:slotValue:numSlots-slotValue,hopIndex,'-o');

Figure Basic frequency hopping contains an axes. The axes with title Bluetooth Basic Frequency Hopping contains an object of type line.

Этот график отображает выбранный индекс канала на интервал передачи или приема с использованием скачкообразной перестройки базовой частоты. В этом случае все каналы являются используемыми каналами.

Классификация каналов

Каналы с большим количеством ошибок пакетов помечаются как плохие каналы. Вычислите PER и BER на основе битовых и пакетных ошибок, полученных в результате вышеописанного моделирования.

% Select 25 channels with highest packet errors as bad channels
[~,indexes] = sort(errorsBasic(:,3),'descend');
badChannelIdx = min(nnz(errorsBasic(:,3)),25);
if badChannelIdx ~= 0
    badChannels = indexes(1:badChannelIdx) - 1;
end
usedChannels = setdiff(0:numBtChannels-1,badChannels);

% BER per channel calculation
errorsBasic(:,5) = errorsBasic(:,2)./errorsBasic(:,4);
errorsBasic(:,5) = fillmissing(errorsBasic(:,5),'constant',0);
ber = nonzeros(errorsBasic(:,5));
if ~isempty(ber)
    berBasic = mean(ber);
end

% PER calculation
packetErrorsBasic = sum(errorsBasic(:,3));
perBasic = packetErrorsBasic/totalTransmittedPackets;

% Reset
hopIdx = 1;
[inputClock,bitErrors] = deal(0);
fprintf('PER of Bluetooth BR/EDR waveforms using basic frequency hopping: %.4f\n',perBasic);
PER of Bluetooth BR/EDR waveforms using basic frequency hopping: 0.2787
fprintf('BER of Bluetooth BR/EDR waveforms using basic frequency hopping: %.4f\n',berBasic);
BER of Bluetooth BR/EDR waveforms using basic frequency hopping: 0.0550

Адаптивная скачкообразная перестройка частоты

Задайте значение типа последовательности как 'Connection adaptive' и укажите классифицируемые используемые каналы.

frequencyHop.SequenceType = 'Connection adaptive';
frequencyHop.UsedChannels = usedChannels;

Выполните моделирование с помощью AFH и вычислите PER и BER.

%rng('default'); % Set random number generator seed
for slotIdx = 0:slotValue:numSlots-slotValue
    % Update clock
    inputClock = inputClock + clockTicks;

    % Frequency hopping
    [channelIndex,~] = nextHop(frequencyHop,inputClock);

    % PHY transmission
    stateTx = 1; % Transmission state
    TxBits = randi([0 1],payloadLength*octetLength,1);
    basebandData.Payload = TxBits;
    basebandData.PayloadLength = payloadLength;
    % Generate whiten initialization vector from clock
    clockBinary = comm.internal.utilities.de2biBase2RightMSB(inputClock,28);
    whitenInitialization = [clockBinary(2:7)'; 1];
    % Update the PHY with request from the baseband layer
    updatePHY(phyTx,stateTx,channelIndex,whitenInitialization,basebandData);
    % Initialize and pass elapsed time as zero
    elapsedTime = 0;
    [nextTxTime,btWaveform] = run(phyTx,elapsedTime); % Run PHY transmission
    run(phyTx,nextTxTime); % Update next invoked time

    % Channel
    bluetoothSignal.Waveform = btWaveform;
    bluetoothSignal.NumSamples = numel(btWaveform);
    bluetoothSignal.CenterFrequency = centerFrequency(phyTx);
    channel.ChannelIndex = channelIndex;
    bluetoothSignal = run(channel,bluetoothSignal,mode);
    distortedWaveform = bluetoothSignal.Waveform;

    % PHY reception
    stateRx = 2; % Reception state
    % Update the PHY with request from the baseband layer
    updatePHY(phyRx,stateRx,channelIndex,whitenInitialization);
    [nextRxTime,~] = run(phyRx,elapsedTime,bluetoothSignal);
    bluetoothSignal.NumSamples = 0;
    run(phyRx,nextRxTime,bluetoothSignal); % Run PHY reception
    chIdx = channelIndex + 1;
    
    % Calculate error rate upon successful decoding the packet
    if phyRx.Decoded
        rxBitsLength = phyRx.DecodedBasebandData.PayloadLength*octetLength;
        RxBits = phyRx.DecodedBasebandData.Payload(1:rxBitsLength);
        % BER calculation
        txSymLength = length(TxBits);
        rxSymLength = length(RxBits);
        minSymLength = min(txSymLength,rxSymLength);
        if minSymLength > 0
            bitErrors = sum(xor(TxBits(1:minSymLength),RxBits(1:minSymLength)));
            totalBits = minSymLength;
            % Bit errors found in channel
            errorsAdaptive(chIdx,2) = errorsAdaptive(chIdx,2) + bitErrors;
            % Total bits transmitted in channel
            errorsAdaptive(chIdx,4) = errorsAdaptive(chIdx,4) + totalBits;
        end

        if ~phyRx.DecodedBasebandData.IsValid || bitErrors
            % Packet errors found in channel
            errorsAdaptive(chIdx, 3) = errorsAdaptive(chIdx, 3) + 1;
        end
    else
        % Packet errors found in channel
        errorsAdaptive(chIdx, 3) = errorsAdaptive(chIdx, 3) + 1;
    end
    hopIndex(hopIdx) = channelIndex;
    hopIdx = hopIdx + 1;

    % Plot spectrum
    spectrumAnalyzerAdaptive(btWaveform + wlanWaveform(1:numel(btWaveform)));
    pause(0.01);
end

Figure Bluetooth Adaptive Frequency Hopping contains 2 axes and other objects of type uiflowcontainer, uimenu, uitoolbar. Axes 1 contains an object of type line. This object represents Channel 1. Axes 2 contains an object of type image.

На предыдущем графике можно наблюдать, что передача пакетов Bluetooth не перекрывается с сигналом WLAN. AFH исключает каналы, являющиеся источниками помех WLAN, и переназначает передачу пакетов Bluetooth по каналам с относительно меньшими помехами.

% Plot selected channel index per slot
figAdaptive = figure('Name','Adaptive Frequency Hopping');
axisAdaptive = axes(figAdaptive);
xlabel(axisAdaptive,'Slot');
ylabel(axisAdaptive,'Channel Index');
title(axisAdaptive,'Bluetooth Adaptive Frequency Hopping');
ylim(axisAdaptive,[0 numBtChannels+3]);
hold on;
plot(axisAdaptive,0:slotValue:numSlots-slotValue,hopIndex,'-o');

Figure Adaptive Frequency Hopping contains an axes. The axes with title Bluetooth Adaptive Frequency Hopping contains an object of type line.

На этом графике отображается выбранный индекс канала для каждого интервала передачи или приема с использованием AFH. Для минимизации ошибок пакетов и битов в беспроводном канале AFH выбирает только используемые каналы для передачи или приема сигналов Bluetooth BR/EDR.

Вычислите PER и BER сигналов Bluetooth BR/EDR с помощью AFH.

% BER per channel calculation
errorsAdaptive(:,5) = errorsAdaptive(:,2)./errorsAdaptive(:,4);
errorsAdaptive(:,5) = fillmissing(errorsAdaptive(:,5),'constant',0);
ber = nonzeros(errorsAdaptive(:,5));
if ~isempty(ber)
    berAdaptive = mean(ber);
end

% PER calculation
packetErrorsAdaptive = sum(errorsAdaptive(:,3));
perAdaptive = packetErrorsAdaptive/totalTransmittedPackets;
fprintf('PER of Bluetooth BR/EDR waveforms using adaptive frequency hopping: %.4f\n',perAdaptive);
PER of Bluetooth BR/EDR waveforms using adaptive frequency hopping: 0.0625
fprintf('BER of Bluetooth BR/EDR waveforms using adaptive frequency hopping: %.4f\n',berAdaptive);
BER of Bluetooth BR/EDR waveforms using adaptive frequency hopping: 0.0020
% Restore previous setting of random number generation
rng(sprev);

Значения PER и BER сигналов BR/EDR Bluetooth меньше при AFH по сравнению со скачкообразной перестройкой базовой частоты.

В этом примере моделируется сквозная цепь передатчик-приемник для изучения того, как AFH уменьшает помехи между сигналами Bluetooth BR/EDR и WLAN. Результаты моделирования подтверждают, что PER и BER сигналов Bluetooth BR/EDR с помехами WLAN меньше при AFH по сравнению со скачкообразной перестройкой базовой частоты.

Приложение

В примере используется эта функция.

  • bluetoothFrequencyHopИндекс канала BR/EDR Bluetooth для скачкообразной перестройки частоты

В примере используются следующие помощники:

Избранная библиография

  1. Группа специальных интересов Bluetooth (SIG). «Спецификация ядра Bluetooth» Версия 5.2.https ://www.bluetooth.com.

Связанные темы