Сквозной Bluetooth Симуляции BR/EDR PHY с Нарушениями РФ и Коррекции

Этот пример показывает сквозную симуляцию, чтобы измерить частоту ошибок по битам (BER) и пакетный коэффициент ошибок (PER) для различного Bluetooth физический уровень BR/EDR (PHY) пакетные типы при помощи Библиотеки Communications Toolbox™ для Протокола Bluetooth®. Эти пакеты PHY искажены путем добавления нарушений радио-фронтенда (RF) и аддитивного белого Гауссова шума (AWGN). Искаженный Bluetooth формы волны BR/EDR обрабатывается в практическом получателе, чтобы получить значения PER и BER. Полученные результаты симуляции показывают графики BER и PER как функция отношения плотности энергии к шуму (Eb/No).

Bluetooth Технические требования Радио BR/EDR

Bluetooth является ближней технологией Беспроводной персональной сети области (WPAN), действующей в глобально нелицензированной промышленной, научной, и медицинской полосе (ISM) в частотном диапазоне от 2,4 ГГц до 2,485 ГГц. В технологии Bluetooth данные разделены на пакеты. Каждый пакет передается на одном из 79 обозначенных каналов Bluetooth. Пропускная способность каждого канала составляет 1 МГц. Bluetooth реализует схему скачкообразно перемещающего частоту спектра распространения (FHSS) переключить поставщика услуг между несколькими каналами частоты при помощи псевдослучайной последовательности, известной передатчику и получателю.

Стандарт Bluetooth задает эти режимы PHY:

Режим Basic rate (BR) - Mandatory, модуляция Гауссова манипулирования сдвига частоты (GFSK) использования со скоростью передачи данных 1 Мбит/с.

Режим Enhanced data rate (EDR) - Optional, модуляция манипулирования сдвига фазы (PSK) использования с этими двумя вариантами:

  • EDR2M: Использование pi/4-DQPSK со скоростью передачи данных 2 Мбит/с

  • EDR3M: Использование 8-DPSK со скоростью передачи данных 3 Мбит/с

Эта сквозная симуляция BR/EDR PHY Bluetooth определяет BER и производительность PER одного пакета Bluetooth, который имеет нарушения РФ и AWGN. Каждый пакет сгенерирован по циклу вектора, равного длине отношения плотности энергии к шуму (Eb/No) использование bluetoothWaveformGenerator функция путем конфигурирования bluetoothWaveformConfig объект.

Чтобы накопить статистику коэффициента ошибок, сгенерированная форма волны изменена с нарушениями РФ и AWGN перед прохождением через получатель.

Эти нарушения РФ используются, чтобы исказить пакет:

  • DC возмещен

  • Несущая частота возмещена

  • Статическая синхронизация возмещена

  • Синхронизация дрейфа

Белый Гауссов шум добавляется к сгенерированному Bluetooth формы волны BR/EDR. Искаженные и шумные формы волны обрабатываются через практический получатель Bluetooth, выполняющий эти операции:

  • Удалите смещение DC

  • Обнаружьте пакеты сигнала

  • Выполните согласованную фильтрацию

  • Оцените и откорректируйте смещение синхронизации

  • Оцените и откорректируйте смещение несущей частоты

  • Демодулируйте форму волны BR/EDR

  • Выполните декодирование прямого исправления ошибок (FEC)

  • Выполните данные dewhitening

  • Выполните проверку на ошибки заголовка (HEC) и контроль циклическим избыточным кодом (CRC)

  • Выходные параметры декодировали биты и декодировали пакетную статистику на основе декодируемого ниже обратитесь к части (LAP), HEC и CRC

Эта блок-схема иллюстрирует шаги обработки для каждого пакета BR/EDR PHY Bluetooth.

Чтобы определить BER и PER, сравните восстановленные выходные биты с битами передаваемых данных.

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

Проверяйте, установлена ли 'Библиотека Communications Toolbox для пакета поддержки' Протокола Bluetooth.

commSupportPackageCheck('BLUETOOTH');

Инициализируйте параметры симуляции

% Eb/No in dB
EbNo = 2:2:14;                     
% Maximum number of bit errors simulated at each Eb/No point
maxNumErrs = 100;                 
% Maximum number of bits accumulated at each Eb/No point
maxNumBits = 1e6;                  
% Maximum number of packets considered at each Eb/No point 
maxNumPkts = 1000;                  

В этом примере значения для maxNumErrs, maxNumBits, и maxNumPkts выбраны для короткого времени симуляции.

Сконфигурируйте Bluetooth Форма волны BR/EDR

Форма волны BR/EDR Bluetooth сконфигурирована при помощи bluetoothWaveformConfig объект. Сконфигурируйте свойства bluetoothWaveformConfig возразите согласно своим требованиям. В этом примере сконфигурирован режим PHY передачи, пакетного типа Bluetooth и количества выборок на символ.

phyMode = 'BR';      % PHY transmission mode
bluetoothPacket = 'FHS';            % Type of Bluetooth packet, this value can be: {'ID',
                                     % 'NULL','POLL','FHS','HV1','HV2','HV3','DV','EV3',
                                     % 'EV4','EV5','AUX1','DM3','DM1','DH1','DM5','DH3',
                                     % 'DH5','2-DH1','2-DH3','2-DH5','2-DH1','2-DH3',
                                     %  '2-DH5','2-EV3','2-EV5','3-EV3','3-EV5'}
SPS = 8;                             % Samples per symbol, must be greater than 1

Сконфигурируйте нарушения РФ

Установите частоту, время и параметры смещения DC искажать форму волны BR/EDR Bluetooth.

frequencyOffset = 6000;% In Hz
timingOffset = 0.5;    % In samples, less than 1 microsecond
timingDrift = 2;        % In parts per million
dcOffset = 2;            % Percentage w.r.t maximum amplitude value
symbolRate = 1e6;                               % Symbol Rate

% Create timing offset object
timingDelayObj = dsp. VariableFractionalDelay;

% Create frequency offset object
frequencyDelay = коммуникация. PhaseFrequencyOffset ('SampleRate', symbolRate*sps);

Процесс Точки Eb/No

Для каждой точки Eb/No пакеты сгенерированы и обработаны через эти шаги:

  • Сгенерируйте случайные биты

  • Сгенерируйте Bluetooth форма волны BR/EDR

  • Передайте сгенерированную форму волны через канал AWGN

  • Добавьте смещение частоты

  • Добавьте смещение синхронизации

  • Добавьте смещение DC

  • Передайте искаженную форму волны через практический получатель

  • Вычислите BER и PER

ber = zeros(1,length(EbNo));       % BER results
per = zeros(1,length(EbNo));       % PER results
bitsPerByte = 8;                   % Number of bits per byte
% Set code rate based on packet
if any(strcmp(bluetoothPacket,{'FHS','DM1','DM3','DM5','HV2','DV','EV4'}))
    codeRate = 2/3;
elseif strcmp(bluetoothPacket,'HV1')
    codeRate = 1/3;
else
    codeRate = 1;        
end
% Set number of bits per symbol based on the PHY transmission mode
bitsPerSymbol = 1+ (strcmp(phyMode,'EDR2M'))*1 +(strcmp(phyMode,'EDR3M'))*2;

% Get SNR from EbNo values
snr = EbNo + 10*log10(codeRate) + 10*log10(bitsPerSymbol) - 10*log10(sps);
% Create a Bluetooth BR/EDR waveform configuration object
txCfg = bluetoothWaveformConfig('Mode',phyMode,'PacketType',bluetoothPacket,...
                                'SamplesPerSymbol',sps);
if strcmp(bluetoothPacket,'DM1')
    txCfg.PayloadLength = 17; % Maximum length of DM1 packets in bytes
end
dataLen = getPayloadLength(txCfg);  % Length of the payload
% Get PHY properties
rxCfg = getPhyConfigProperties(txCfg);  

for iSnr = 1:length(snr)
        rng default
        % Initialize error computation parameters
        errorCalc = comm.ErrorRate;
        berVec = zeros(3,1); 
        pktCount = 0;  % Counter for number of detected Bluetooth packets
        loopCount = 0; % Counter for number of packets at each SNR value
        pktErr = 0;
         while((berVec(2) < maxNumErrs) && (berVec(3) < maxNumBits) && (loopCount < maxNumPkts))
            txBits = randi([0 1],dataLen*bitsPerByte,1); % Data bits generation
            txWaveform = bluetoothWaveformGenerator(txBits,txCfg);   
            
            % Add Frequency Offset
            frequencyDelay.FrequencyOffset = frequencyOffset;
            transWaveformCFO = frequencyDelay(txWaveform);
            
            % Add Timing Delay
            timingDriftRate = (timingDrift*1e-6)/(length(txWaveform)*sps);% Timing drift rate
            timingDriftVal = timingDriftRate*(0:1:(length(txWaveform)-1))';% Timing drift
            timingDelay = (timingOffset*sps)+timingDriftVal;   % Static timing offset and timing drift
            transWaveformTimingCFO = timingDelayObj(transWaveformCFO,timingDelay);
            
            % Add DC Offset
            dcValue = (dcOffset/100)*max(transWaveformTimingCFO);
            txImpairedWaveform = transWaveformTimingCFO + dcValue;  
            
             % Add AWGN
            txNoisyWaveform = awgn(txImpairedWaveform,snr(iSnr),'measured');
        
            % Receiver Module
            [rxBits,decodedInfo,pktStatus]...
                                = helperBluetoothPracticalReceiver(txNoisyWaveform,rxCfg);
            numOfSignals = length(pktStatus);
            pktCount = pktCount+numOfSignals;
            loopCount = loopCount+1;
            
            % BER and PER Calculations
            L1 = length(txBits);
            L2 = length(rxBits);
            L = min(L1,L2);
            if(~isempty(L))
               berVec = errorCalc(txBits(1:L),rxBits(1:L));
            end
            pktErr = pktErr+sum(~pktStatus);
         end
         % Average of BER and PER
         per(iSnr) = pktErr/pktCount;
         ber(iSnr) = berVec(1);
         if ((ber(iSnr) == 0) && (per(iSnr) == 1))
             ber(iSnr) = 0.5; % If packet error rate is 1, consider average BER of 0.5
         end
         if ~any(strcmp(bluetoothPacket,{'ID','NULL','POLL'}))
             disp(['Mode ' phyMode ', '...
                 'Simulated for Eb/No = ', num2str(EbNo(iSnr)), ' dB' ', '...
                 'obtained BER:',num2str(ber(iSnr)),' obtained PER: ',...
                    num2str(per(iSnr))]);
         else
             disp(['Mode ' phyMode ', '...
                 'Simulated for Eb/No = ', num2str(EbNo(iSnr)), ' dB' ', '...
                 'obtained PER: ',num2str(per(iSnr))]);
         end
end
Mode BR, Simulated for Eb/No = 2 dB, obtained BER:0.23611 obtained PER: 0.875
Mode BR, Simulated for Eb/No = 4 dB, obtained BER:0.084028 obtained PER: 0.89474
Mode BR, Simulated for Eb/No = 6 dB, obtained BER:0.063492 obtained PER: 0.86667
Mode BR, Simulated for Eb/No = 8 dB, obtained BER:0.025 obtained PER: 0.77419
Mode BR, Simulated for Eb/No = 10 dB, obtained BER:0.0083333 obtained PER: 0.38824
Mode BR, Simulated for Eb/No = 12 dB, obtained BER:0.0019597 obtained PER: 0.13699
Mode BR, Simulated for Eb/No = 14 dB, obtained BER:0.00025304 obtained PER: 0.022267

Результаты симуляции

Этот раздел представляет BER и результаты PER относительно области значений входа Eb/No для продуманного режима PHY.

figure,
if any(strcmp(bluetoothPacket,{'ID','NULL','POLL'}))
    numOfPlots = 1; % Plot only PER 
else
    numOfPlots = 2; % Plot both BER and PER
    subplot(numOfPlots,1,1),semilogy(EbNo,ber.','-r*');
    xlabel('Eb/No (dB)');
    ylabel('BER');
    legend(phyMode);
    title('BER of Bluetooth with RF impairments');
    hold on;
    grid on;
end
subplot(numOfPlots,1,numOfPlots),semilogy(EbNo,per.','-k*');
xlabel('Eb/No (dB)');
ylabel('PER');
legend(phyMode);
title('PER of Bluetooth with RF impairments');
hold on;
grid on;

Приложение

Пример использует эту функцию помощника:

  • helperBluetoothPracticalReceiver.m: Обнаруживает, синхронизирует и декодирует полученный Bluetooth форма волны BR/EDR.

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

Выбранная библиография

  • Специальная группа (SIG) Bluetooth. "Базовый Системный пакет [Контроллер BR/EDR Объем]". Спецификация Ядра Bluetooth. Версия 5.1, Объем 2. www.bluetooth.com /

Для просмотра документации необходимо авторизоваться на сайте