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

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

Bluetooth BR/EDR PHY

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

Режим Bluetooth 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 BR/EDR и стеке протоколов см. в разделе Стек протоколов Bluetooth. Для получения дополнительной информации о структурах пакета Bluetooth BR/EDR, смотрите Bluetooth Packet Structure.

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

Цель использования 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. Декодируйте сигнал Bluetooth BR/EDR, чтобы получить выходные биты.

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

  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';

Сконфигурируйте Bluetooth PHY

Используйте объект helperBluetoothPHY helper, чтобы смоделировать передачу и прием сигнала 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 от WLAN Toolbox™, выберите эту опцию.

  • «BasebandFile»: Добавить сигнал WLAN из файла baseband (.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;
канал. EbNo = 22; % Ratio of energy per bit (Eb) to the spectral noise density (No) in dB
канал. СЭР =-20; % Signal to interference ratio in dB
if ~ strcmpi ( wlanInterferenceSource,'None')
    % Generate the WLAN waveform
    wlan Waveform = helper Bluetooth Generate WLANW aveform (wlan Interference Source, wlan BBF ilename);
    % Add the WLAN interference to Bluetooth channel
    addWLANWaveform (канал, wlanWaveform);
end

Область Setup

Инициализируйте параметры, чтобы выполнить сквозную симуляцию 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 сигналов Bluetooth BR/EDR меньше при AFH по сравнению с основной скачкообразной перестройкой частоты.

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

Приложение

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

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

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

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

  1. Bluetooth Special Interest Group (SIG). Спецификация ядра Bluetooth версии 5.2.https ://www.bluetooth.com.

Похожие темы